]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/FLOW/Base/AliFlowAnalysisWithQCumulants.cxx
extra setters for using tprofile or TH2D (Ante)
[u/mrichter/AliRoot.git] / PWG / FLOW / Base / AliFlowAnalysisWithQCumulants.cxx
CommitLineData
489d5531 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 * *
ff70ca91 19 * author: Ante Bilandzic *
20 * (abilandzic@gmail.com) *
489d5531 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"
489d5531 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
50class TH1;
51class TH2;
52class TGraph;
53class TPave;
54class TLatex;
55class TMarker;
56class TRandom3;
57class TObjArray;
58class TList;
59class TCanvas;
60class TSystem;
61class TROOT;
62class AliFlowVector;
63class TVector;
64
489d5531 65//================================================================================================================
66
3a7af7bd 67using std::endl;
68using std::cout;
69using std::flush;
489d5531 70ClassImp(AliFlowAnalysisWithQCumulants)
71
72AliFlowAnalysisWithQCumulants::AliFlowAnalysisWithQCumulants():
73 // 0.) base:
74 fHistList(NULL),
75 // 1.) common:
53884472 76 fBookOnlyBasicCCH(kTRUE),
489d5531 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),
1268c371 98 fCommonConstants(NULL),
dd442cd2 99 fFillMultipleControlHistograms(kFALSE),
489d5531 100 fHarmonic(2),
101 fAnalysisLabel(NULL),
102 // 2a.) particle weights:
103 fWeightsList(NULL),
104 fUsePhiWeights(kFALSE),
105 fUsePtWeights(kFALSE),
106 fUseEtaWeights(kFALSE),
403e3389 107 fUseTrackWeights(kFALSE),
489d5531 108 fUseParticleWeights(NULL),
109 fPhiWeights(NULL),
110 fPtWeights(NULL),
111 fEtaWeights(NULL),
112 // 2b.) event weights:
113 fMultiplicityWeight(NULL),
df23c5ae 114 fMultiplicityIs(AliFlowCommonConstants::kRP),
489d5531 115 // 3.) integrated flow:
116 fIntFlowList(NULL),
117 fIntFlowProfiles(NULL),
118 fIntFlowResults(NULL),
3435cacb 119 fIntFlowAllCorrelationsVsM(NULL),
489d5531 120 fIntFlowFlags(NULL),
b92ea2b9 121 fApplyCorrectionForNUA(kFALSE),
2001bc3a 122 fApplyCorrectionForNUAVsM(kFALSE),
9da1a4f3 123 fnBinsMult(10000),
067e9bc8 124 fMinMult(0.),
125 fMaxMult(10000.),
b77b6434 126 fPropagateErrorAlsoFromNIT(kFALSE),
8ed4edc7 127 fCalculateCumulantsVsM(kFALSE),
3435cacb 128 fCalculateAllCorrelationsVsM(kFALSE),
0dd3b008 129 fMinimumBiasReferenceFlow(kTRUE),
e5834fcb 130 fForgetAboutCovariances(kFALSE),
131 fStorePhiDistributionForOneEvent(kFALSE),
d9e6d8bb 132 fExactNoRPs(0),
1db7eced 133 fUse2DHistograms(kFALSE),
134 fFillProfilesVsMUsingWeights(kTRUE),
135 fUseQvectorTerms(kFALSE),
489d5531 136 fReQ(NULL),
137 fImQ(NULL),
1268c371 138 fSpk(NULL),
489d5531 139 fIntFlowCorrelationsEBE(NULL),
140 fIntFlowEventWeightsForCorrelationsEBE(NULL),
141 fIntFlowCorrelationsAllEBE(NULL),
df23c5ae 142 fNumberOfRPsEBE(0.),
143 fNumberOfPOIsEBE(0.),
e5834fcb 144 fReferenceMultiplicityEBE(0.),
489d5531 145 fAvMultiplicity(NULL),
146 fIntFlowCorrelationsPro(NULL),
b40a910e 147 fIntFlowSquaredCorrelationsPro(NULL),
489d5531 148 fIntFlowCorrelationsAllPro(NULL),
149 fIntFlowExtraCorrelationsPro(NULL),
150 fIntFlowProductOfCorrelationsPro(NULL),
0328db2d 151 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
489d5531 152 fIntFlowCorrelationsHist(NULL),
153 fIntFlowCorrelationsAllHist(NULL),
154 fIntFlowCovariances(NULL),
155 fIntFlowSumOfProductOfEventWeights(NULL),
0328db2d 156 fIntFlowCovariancesNUA(NULL),
157 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
489d5531 158 fIntFlowQcumulants(NULL),
b92ea2b9 159 fIntFlowQcumulantsRebinnedInM(NULL),
160 fIntFlowQcumulantsErrorSquaredRatio(NULL),
489d5531 161 fIntFlow(NULL),
b3dacf6b 162 fIntFlowRebinnedInM(NULL),
2001bc3a 163 fIntFlowDetectorBias(NULL),
489d5531 164 // 4.) differential flow:
165 fDiffFlowList(NULL),
166 fDiffFlowProfiles(NULL),
167 fDiffFlowResults(NULL),
1268c371 168 fDiffFlow2D(NULL),
489d5531 169 fDiffFlowFlags(NULL),
1268c371 170 fCalculateDiffFlow(kTRUE),
171 fCalculate2DDiffFlow(kFALSE),
62e36168 172 fCalculateDiffFlowVsEta(kTRUE),
64e500e3 173 // 5.) other differential correlators:
174 fOtherDiffCorrelatorsList(NULL),
175 // 6.) distributions:
57340a27 176 fDistributionsList(NULL),
177 fDistributionsFlags(NULL),
489d5531 178 fStoreDistributions(kFALSE),
1db7eced 179 fnBinsForCorrelations(10000),
64e500e3 180 // 7.) various:
e5834fcb 181 fVariousList(NULL),
182 fPhiDistributionForOneEvent(NULL),
e1d101a6 183 // 8.) debugging and cross-checking:
489d5531 184 fNestedLoopsList(NULL),
185 fEvaluateIntFlowNestedLoops(kFALSE),
186 fEvaluateDiffFlowNestedLoops(kFALSE),
187 fMaxAllowedMultiplicity(10),
188 fEvaluateNestedLoops(NULL),
189 fIntFlowDirectCorrelations(NULL),
190 fIntFlowExtraDirectCorrelations(NULL),
191 fCrossCheckInPtBinNo(10),
3b552efe 192 fCrossCheckInEtaBinNo(20),
e1d101a6 193 fNoOfParticlesInBin(NULL),
194 fMixedHarmonicsNestedLoops(NULL),
195 // 9.) mixed harmonics:
196 fMixedHarmonicsList(NULL),
197 fMixedHarmonicsProfiles(NULL),
198 fMixedHarmonicsResults(NULL),
c10259fb 199 fMixedHarmonicsErrorPropagation(NULL),
e1d101a6 200 fMixedHarmonicsFlags(NULL),
201 fCalculateMixedHarmonics(kFALSE),
202 fCalculateMixedHarmonicsVsM(kFALSE),
203 f2pCorrelations(NULL),
204 f3pCorrelations(NULL),
205 f4pCorrelations(NULL),
206 f5pCorrelations(NULL),
207 f6pCorrelations(NULL),
208 f7pCorrelations(NULL),
209 f8pCorrelations(NULL),
210 f2pCumulants(NULL),
211 f3pCumulants(NULL),
212 f4pCumulants(NULL),
213 f5pCumulants(NULL),
214 f6pCumulants(NULL),
215 f7pCumulants(NULL),
c10259fb 216 f8pCumulants(NULL),
217 fMixedHarmonicProductOfEventWeights(NULL),
df23c5ae 218 fMixedHarmonicProductOfCorrelations(NULL),
219 // 10.) Control histograms:
220 fControlHistogramsList(NULL),
221 fControlHistogramsFlags(NULL),
222 fStoreControlHistograms(kFALSE),
223 fCorrelationNoRPsVsRefMult(NULL),
224 fCorrelationNoPOIsVsRefMult(NULL),
225 fCorrelationNoRPsVsNoPOIs(NULL)
489d5531 226 {
227 // constructor
228
229 // base list to hold all output objects:
230 fHistList = new TList();
231 fHistList->SetName("cobjQC");
232 fHistList->SetOwner(kTRUE);
233
234 // list to hold histograms with phi, pt and eta weights:
235 fWeightsList = new TList();
236
237 // multiplicity weight:
238 fMultiplicityWeight = new TString("combinations");
df23c5ae 239
489d5531 240 // analysis label;
241 fAnalysisLabel = new TString();
242
243 // initialize all arrays:
244 this->InitializeArraysForIntFlow();
245 this->InitializeArraysForDiffFlow();
246 this->InitializeArraysForDistributions();
e5834fcb 247 this->InitializeArraysForVarious();
489d5531 248 this->InitializeArraysForNestedLoops();
c10259fb 249 this->InitializeArraysForMixedHarmonics();
d9e6d8bb 250 this->InitializeArraysForControlHistograms();
489d5531 251
252 } // end of constructor
253
489d5531 254//================================================================================================================
255
489d5531 256AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
257{
258 // destructor
259
260 delete fHistList;
261
262} // end of AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
263
489d5531 264//================================================================================================================
265
489d5531 266void AliFlowAnalysisWithQCumulants::Init()
267{
3b552efe 268 // a) Cross check if the settings make sense before starting the QC adventure;
489d5531 269 // b) Access all common constants;
270 // c) Book all objects;
3b552efe 271 // d) Store flags for integrated and differential flow;
489d5531 272 // e) Store flags for distributions of corelations;
e1d101a6 273 // f) Store harmonic which will be estimated;
1db7eced 274 // g) Store flags for mixed harmonics;
275 // h) Store flags for control histograms.
3b552efe 276
489d5531 277 //save old value and prevent histograms from being added to directory
278 //to avoid name clashes in case multiple analaysis objects are used
279 //in an analysis
280 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
281 TH1::AddDirectory(kFALSE);
282
3b552efe 283 // a) Cross check if the settings make sense before starting the QC adventure;
489d5531 284 this->CrossCheckSettings();
1268c371 285 // b) Access all common constants and book a profile to hold them:
286 this->CommonConstants("Init");
489d5531 287 // c) Book all objects:
1268c371 288 this->BookAndFillWeightsHistograms();
489d5531 289 this->BookAndNestAllLists();
290 this->BookCommonHistograms();
291 this->BookEverythingForIntegratedFlow();
292 this->BookEverythingForDifferentialFlow();
1268c371 293 this->BookEverythingFor2DDifferentialFlow();
489d5531 294 this->BookEverythingForDistributions();
e5834fcb 295 this->BookEverythingForVarious();
489d5531 296 this->BookEverythingForNestedLoops();
e1d101a6 297 this->BookEverythingForMixedHarmonics();
df23c5ae 298 this->BookEverythingForControlHistograms();
e1d101a6 299
489d5531 300 // d) Store flags for integrated and differential flow:
301 this->StoreIntFlowFlags();
3b552efe 302 this->StoreDiffFlowFlags();
489d5531 303 // e) Store flags for distributions of corelations:
304 this->StoreFlagsForDistributions();
305 // f) Store harmonic which will be estimated:
306 this->StoreHarmonic();
e1d101a6 307 // g) Store flags for mixed harmonics:
308 this->StoreMixedHarmonicsFlags();
1db7eced 309 // h) Store flags for control histograms:
310 this->StoreControlHistogramsFlags();
311
489d5531 312 TH1::AddDirectory(oldHistAddStatus);
313} // end of void AliFlowAnalysisWithQCumulants::Init()
314
489d5531 315//================================================================================================================
316
489d5531 317void AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
318{
319 // Running over data only in this method.
320
b3dacf6b 321 // a) Check all pointers used in this method;
322 // b) Define local variables;
323 // c) Fill the common control histograms and call the method to fill fAvMultiplicity;
1268c371 324 // d) Loop over data and calculate e-b-e quantities Q_{n,k}, S_{p,k} and s_{p,k};
325 // e) Calculate the final expressions for S_{p,k} and s_{p,k} (important !!!!);
326 // f) Call the methods which calculate correlations for reference flow;
327 // g) Call the methods which calculate correlations for differential flow;
328 // h) Call the methods which calculate correlations for 2D differential flow;
64e500e3 329 // i) Call the methods which calculate other differential correlators;
330 // j) Distributions of correlations;
331 // k) Store phi distribution for one event to illustrate flow;
332 // l) Cross-check with nested loops correlators for reference flow;
333 // m) Cross-check with nested loops correlators for differential flow;
334 // n) Reset all event-by-event quantities (very important !!!!).
489d5531 335
b3dacf6b 336 // a) Check all pointers used in this method:
337 this->CheckPointersUsedInMake();
338
339 // b) Define local variables:
489d5531 340 Double_t dPhi = 0.; // azimuthal angle in the laboratory frame
341 Double_t dPt = 0.; // transverse momentum
342 Double_t dEta = 0.; // pseudorapidity
489d5531 343 Double_t wPhi = 1.; // phi weight
344 Double_t wPt = 1.; // pt weight
345 Double_t wEta = 1.; // eta weight
38a1e8b3 346 Double_t wTrack = 1.; // track weight
d9e6d8bb 347 Int_t nCounterNoRPs = 0; // needed only for shuffling
df23c5ae 348 fNumberOfRPsEBE = anEvent->GetNumberOfRPs(); // number of RPs (i.e. number of reference particles)
d9e6d8bb 349 if(fExactNoRPs > 0 && fNumberOfRPsEBE<fExactNoRPs){return;}
df23c5ae 350 fNumberOfPOIsEBE = anEvent->GetNumberOfPOIs(); // number of POIs (i.e. number of particles of interest)
e5834fcb 351 fReferenceMultiplicityEBE = anEvent->GetReferenceMultiplicity(); // reference multiplicity for current event
1268c371 352 Double_t ptEta[2] = {0.,0.}; // 0 = dPt, 1 = dEta
9f33751d 353
b3dacf6b 354 // c) Fill the common control histograms and call the method to fill fAvMultiplicity:
489d5531 355 this->FillCommonControlHistograms(anEvent);
df23c5ae 356 this->FillAverageMultiplicities(fNumberOfRPsEBE);
357 if(fStoreControlHistograms){this->FillControlHistograms(anEvent);}
489d5531 358
1268c371 359 // d) Loop over data and calculate e-b-e quantities Q_{n,k}, S_{p,k} and s_{p,k}:
df23c5ae 360 Int_t nPrim = anEvent->NumberOfTracks(); // nPrim = total number of primary tracks
489d5531 361 AliFlowTrackSimple *aftsTrack = NULL;
1268c371 362 Int_t n = fHarmonic; // shortcut for the harmonic
489d5531 363 for(Int_t i=0;i<nPrim;i++)
364 {
d9e6d8bb 365 if(fExactNoRPs > 0 && nCounterNoRPs>fExactNoRPs){continue;}
489d5531 366 aftsTrack=anEvent->GetTrack(i);
367 if(aftsTrack)
368 {
1268c371 369 if(!(aftsTrack->InRPSelection() || aftsTrack->InPOISelection())){continue;} // safety measure: consider only tracks which are RPs or POIs
489d5531 370 if(aftsTrack->InRPSelection()) // RP condition:
371 {
d9e6d8bb 372 nCounterNoRPs++;
489d5531 373 dPhi = aftsTrack->Phi();
374 dPt = aftsTrack->Pt();
375 dEta = aftsTrack->Eta();
376 if(fUsePhiWeights && fPhiWeights && fnBinsPhi) // determine phi weight for this particle:
377 {
378 wPhi = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*fnBinsPhi/TMath::TwoPi())));
379 }
380 if(fUsePtWeights && fPtWeights && fnBinsPt) // determine pt weight for this particle:
381 {
382 wPt = fPtWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/fPtBinWidth)));
383 }
384 if(fUseEtaWeights && fEtaWeights && fEtaBinWidth) // determine eta weight for this particle:
385 {
386 wEta = fEtaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/fEtaBinWidth)));
38a1e8b3 387 }
388 // Access track weight:
403e3389 389 if(fUseTrackWeights)
390 {
391 wTrack = aftsTrack->Weight();
392 }
e1d101a6 393 // Calculate Re[Q_{m*n,k}] and Im[Q_{m*n,k}] for this event (m = 1,2,...,12, k = 0,1,...,8):
394 for(Int_t m=0;m<12;m++) // to be improved - hardwired 6
489d5531 395 {
1268c371 396 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 397 {
38a1e8b3 398 (*fReQ)(m,k)+=pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
399 (*fImQ)(m,k)+=pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
489d5531 400 }
401 }
1268c371 402 // Calculate S_{p,k} for this event (Remark: final calculation of S_{p,k} follows after the loop over data bellow):
489d5531 403 for(Int_t p=0;p<8;p++)
404 {
405 for(Int_t k=0;k<9;k++)
406 {
38a1e8b3 407 (*fSpk)(p,k)+=pow(wPhi*wPt*wEta*wTrack,k);
489d5531 408 }
409 }
1268c371 410 // Differential flow:
411 if(fCalculateDiffFlow || fCalculate2DDiffFlow)
489d5531 412 {
1268c371 413 ptEta[0] = dPt;
414 ptEta[1] = dEta;
415 // Calculate r_{m*n,k} and s_{p,k} (r_{m,k} is 'p-vector' for RPs):
416 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 417 {
1268c371 418 for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
489d5531 419 {
1268c371 420 if(fCalculateDiffFlow)
421 {
62e36168 422 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
1268c371 423 {
38a1e8b3 424 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
425 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 426 if(m==0) // s_{p,k} does not depend on index m
427 {
38a1e8b3 428 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 429 } // end of if(m==0) // s_{p,k} does not depend on index m
430 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
431 } // end of if(fCalculateDiffFlow)
432 if(fCalculate2DDiffFlow)
433 {
38a1e8b3 434 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
435 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 436 if(m==0) // s_{p,k} does not depend on index m
437 {
38a1e8b3 438 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 439 } // end of if(m==0) // s_{p,k} does not depend on index m
440 } // end of if(fCalculate2DDiffFlow)
441 } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
442 } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
443 // Checking if RP particle is also POI particle:
444 if(aftsTrack->InPOISelection())
489d5531 445 {
1268c371 446 // Calculate q_{m*n,k} and s_{p,k} ('q-vector' and 's' for RPs && POIs):
447 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 448 {
1268c371 449 for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
489d5531 450 {
1268c371 451 if(fCalculateDiffFlow)
452 {
62e36168 453 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
1268c371 454 {
38a1e8b3 455 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
456 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 457 if(m==0) // s_{p,k} does not depend on index m
458 {
38a1e8b3 459 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 460 } // end of if(m==0) // s_{p,k} does not depend on index m
461 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
462 } // end of if(fCalculateDiffFlow)
463 if(fCalculate2DDiffFlow)
464 {
38a1e8b3 465 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
466 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 467 if(m==0) // s_{p,k} does not depend on index m
468 {
38a1e8b3 469 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 470 } // end of if(m==0) // s_{p,k} does not depend on index m
471 } // end of if(fCalculate2DDiffFlow)
472 } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
473 } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
474 } // end of if(aftsTrack->InPOISelection())
475 } // end of if(fCalculateDiffFlow || fCalculate2DDiffFlow)
489d5531 476 } // end of if(pTrack->InRPSelection())
489d5531 477 if(aftsTrack->InPOISelection())
478 {
479 dPhi = aftsTrack->Phi();
480 dPt = aftsTrack->Pt();
481 dEta = aftsTrack->Eta();
38a1e8b3 482 wPhi = 1.;
483 wPt = 1.;
484 wEta = 1.;
485 wTrack = 1.;
486 if(fUsePhiWeights && fPhiWeights && fnBinsPhi && aftsTrack->InRPSelection()) // determine phi weight for POI && RP particle:
487 {
488 wPhi = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*fnBinsPhi/TMath::TwoPi())));
489 }
490 if(fUsePtWeights && fPtWeights && fnBinsPt && aftsTrack->InRPSelection()) // determine pt weight for POI && RP particle:
491 {
492 wPt = fPtWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/fPtBinWidth)));
493 }
494 if(fUseEtaWeights && fEtaWeights && fEtaBinWidth && aftsTrack->InRPSelection()) // determine eta weight for POI && RP particle:
495 {
496 wEta = fEtaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/fEtaBinWidth)));
497 }
498 // Access track weight for POI && RP particle:
403e3389 499 if(aftsTrack->InRPSelection() && fUseTrackWeights)
38a1e8b3 500 {
501 wTrack = aftsTrack->Weight();
502 }
1268c371 503 ptEta[0] = dPt;
504 ptEta[1] = dEta;
505 // Calculate p_{m*n,k} ('p-vector' for POIs):
506 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 507 {
1268c371 508 for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
489d5531 509 {
1268c371 510 if(fCalculateDiffFlow)
511 {
62e36168 512 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
1268c371 513 {
38a1e8b3 514 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
515 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 516 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
517 } // end of if(fCalculateDiffFlow)
518 if(fCalculate2DDiffFlow)
519 {
38a1e8b3 520 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
521 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 522 } // end of if(fCalculate2DDiffFlow)
523 } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
524 } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
b77b6434 525 } // end of if(pTrack->InPOISelection())
489d5531 526 } else // to if(aftsTrack)
527 {
38a1e8b3 528 printf("\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
489d5531 529 }
530 } // end of for(Int_t i=0;i<nPrim;i++)
531
1268c371 532 // e) Calculate the final expressions for S_{p,k} and s_{p,k} (important !!!!):
489d5531 533 for(Int_t p=0;p<8;p++)
534 {
535 for(Int_t k=0;k<9;k++)
536 {
1268c371 537 (*fSpk)(p,k)=pow((*fSpk)(p,k),p+1);
538 // ... for the time being s_{p,k} dosn't need higher powers, so no need to finalize it here ...
539 } // end of for(Int_t k=0;k<9;k++)
540 } // end of for(Int_t p=0;p<8;p++)
489d5531 541
1268c371 542 // f) Call the methods which calculate correlations for reference flow:
489d5531 543 if(!fEvaluateIntFlowNestedLoops)
544 {
403e3389 545 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 546 {
df23c5ae 547 if(fNumberOfRPsEBE>1){this->CalculateIntFlowCorrelations();} // without using particle weights
403e3389 548 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 549 {
df23c5ae 550 if(fNumberOfRPsEBE>1){this->CalculateIntFlowCorrelationsUsingParticleWeights();} // with using particle weights
1268c371 551 }
552 // Whether or not using particle weights the following is calculated in the same way:
df23c5ae 553 if(fNumberOfRPsEBE>3){this->CalculateIntFlowProductOfCorrelations();}
554 if(fNumberOfRPsEBE>1){this->CalculateIntFlowSumOfEventWeights();}
555 if(fNumberOfRPsEBE>1){this->CalculateIntFlowSumOfProductOfEventWeights();}
1268c371 556 // Non-isotropic terms:
403e3389 557 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 558 {
df23c5ae 559 if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUASinTerms();}
560 if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUACosTerms();}
403e3389 561 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
b92ea2b9 562 {
df23c5ae 563 if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights();}
564 if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights();}
1268c371 565 }
566 // Whether or not using particle weights the following is calculated in the same way:
df23c5ae 567 if(fNumberOfRPsEBE>0){this->CalculateIntFlowProductOfCorrectionTermsForNUA();}
568 if(fNumberOfRPsEBE>0){this->CalculateIntFlowSumOfEventWeightsNUA();}
569 if(fNumberOfRPsEBE>0){this->CalculateIntFlowSumOfProductOfEventWeightsNUA();}
e1d101a6 570 // Mixed harmonics:
571 if(fCalculateMixedHarmonics){this->CalculateMixedHarmonics();}
489d5531 572 } // end of if(!fEvaluateIntFlowNestedLoops)
573
1268c371 574 // g) Call the methods which calculate correlations for differential flow:
575 if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
489d5531 576 {
403e3389 577 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 578 {
1268c371 579 // Without using particle weights:
489d5531 580 this->CalculateDiffFlowCorrelations("RP","Pt");
62e36168 581 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelations("RP","Eta");}
489d5531 582 this->CalculateDiffFlowCorrelations("POI","Pt");
62e36168 583 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelations("POI","Eta");}
1268c371 584 // Non-isotropic terms:
b92ea2b9 585 this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Pt");
62e36168 586 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Eta");}
b92ea2b9 587 this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Pt");
62e36168 588 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Eta");}
b92ea2b9 589 this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Pt");
62e36168 590 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Eta");}
b92ea2b9 591 this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Pt");
62e36168 592 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Eta");}
403e3389 593 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 594 {
1268c371 595 // With using particle weights:
489d5531 596 this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Pt");
62e36168 597 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Eta");}
489d5531 598 this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Pt");
62e36168 599 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Eta");}
1268c371 600 // Non-isotropic terms:
b92ea2b9 601 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Pt");
62e36168 602 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Eta");}
b92ea2b9 603 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Pt");
62e36168 604 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Eta");}
b92ea2b9 605 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Pt");
62e36168 606 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Eta");}
b92ea2b9 607 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Pt");
62e36168 608 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Eta");}
1268c371 609 }
610 // Whether or not using particle weights the following is calculated in the same way:
489d5531 611 this->CalculateDiffFlowProductOfCorrelations("RP","Pt");
62e36168 612 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowProductOfCorrelations("RP","Eta");}
489d5531 613 this->CalculateDiffFlowProductOfCorrelations("POI","Pt");
62e36168 614 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowProductOfCorrelations("POI","Eta");}
489d5531 615 this->CalculateDiffFlowSumOfEventWeights("RP","Pt");
62e36168 616 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfEventWeights("RP","Eta");}
489d5531 617 this->CalculateDiffFlowSumOfEventWeights("POI","Pt");
62e36168 618 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfEventWeights("POI","Eta");}
489d5531 619 this->CalculateDiffFlowSumOfProductOfEventWeights("RP","Pt");
62e36168 620 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfProductOfEventWeights("RP","Eta");}
489d5531 621 this->CalculateDiffFlowSumOfProductOfEventWeights("POI","Pt");
62e36168 622 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfProductOfEventWeights("POI","Eta");}
1268c371 623 } // end of if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
489d5531 624
1268c371 625 // h) Call the methods which calculate correlations for 2D differential flow:
626 if(!fEvaluateDiffFlowNestedLoops && fCalculate2DDiffFlow)
627 {
403e3389 628 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 629 {
1268c371 630 // Without using particle weights:
631 this->Calculate2DDiffFlowCorrelations("RP");
632 this->Calculate2DDiffFlowCorrelations("POI");
633 // Non-isotropic terms:
634 // ... to be ctd ...
403e3389 635 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 636 {
637 // With using particle weights:
638 // ... to be ctd ...
639 // Non-isotropic terms:
640 // ... to be ctd ...
641 }
642 // Whether or not using particle weights the following is calculated in the same way:
643 // ... to be ctd ...
644 } // end of if(!fEvaluateDiffFlowNestedLoops && fCalculate2DDiffFlow)
64e500e3 645
646 // i) Call the methods which calculate other differential correlators:
b84464d3 647 if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
64e500e3 648 {
403e3389 649 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
64e500e3 650 {
651 // Without using particle weights:
652 this->CalculateOtherDiffCorrelators("RP","Pt");
62e36168 653 if(fCalculateDiffFlowVsEta){this->CalculateOtherDiffCorrelators("RP","Eta");}
64e500e3 654 this->CalculateOtherDiffCorrelators("POI","Pt");
62e36168 655 if(fCalculateDiffFlowVsEta){this->CalculateOtherDiffCorrelators("POI","Eta");}
403e3389 656 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
64e500e3 657 {
658 // With using particle weights:
659 // ... to be ctd ...
660 }
661 // Whether or not using particle weights the following is calculated in the same way:
662 // ... to be ctd ...
663 } // end of if(!fEvaluateDiffFlowNestedLoops)
664
665 // j) Distributions of correlations:
e5834fcb 666 if(fStoreDistributions){this->StoreDistributionsOfCorrelations();}
667
64e500e3 668 // k) Store phi distribution for one event to illustrate flow:
e5834fcb 669 if(fStorePhiDistributionForOneEvent){this->StorePhiDistributionForOneEvent(anEvent);}
1268c371 670
64e500e3 671 // l) Cross-check with nested loops correlators for reference flow:
1268c371 672 if(fEvaluateIntFlowNestedLoops){this->EvaluateIntFlowNestedLoops(anEvent);}
673
64e500e3 674 // m) Cross-check with nested loops correlators for differential flow:
1268c371 675 if(fEvaluateDiffFlowNestedLoops){this->EvaluateDiffFlowNestedLoops(anEvent);}
489d5531 676
64e500e3 677 // n) Reset all event-by-event quantities (very important !!!!):
489d5531 678 this->ResetEventByEventQuantities();
679
680} // end of AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
681
e1d101a6 682//=======================================================================================================================
489d5531 683
489d5531 684void AliFlowAnalysisWithQCumulants::Finish()
685{
686 // Calculate the final results.
489d5531 687
b3dacf6b 688 // a) Check all pointers used in this method;
e1d101a6 689 // b) Access the constants;
b3dacf6b 690 // c) Access the flags;
b92ea2b9 691 // d) Calculate reference cumulants (not corrected for detector effects);
692 // e) Correct reference cumulants for detector effects;
693 // f) Calculate reference flow;
b77b6434 694 // g) Store results for reference flow in AliFlowCommonHistResults and print them on the screen;
b92ea2b9 695 // h) Calculate the final results for differential flow (without/with weights);
696 // i) Correct the results for differential flow (without/with weights) for effects of non-uniform acceptance (NUA);
697 // j) Calculate the final results for integrated flow (RP/POI) and store in AliFlowCommonHistResults;
698 // k) Store results for differential flow in AliFlowCommonHistResults;
699 // l) Print the final results for integrated flow (RP/POI) on the screen;
e1d101a6 700 // m) Cross-checking: Results from Q-vectors vs results from nested loops;
701 // i) Calculate cumulants for mixed harmonics.
702
b3dacf6b 703 // a) Check all pointers used in this method:
704 this->CheckPointersUsedInFinish();
705
e1d101a6 706 // b) Access the constants:
1268c371 707 this->CommonConstants("Finish");
489d5531 708
b3dacf6b 709 if(fCommonHists && fCommonHists->GetHarmonic()) // to be improved (moved somewhere else)
489d5531 710 {
b3dacf6b 711 fHarmonic = (Int_t)(fCommonHists->GetHarmonic())->GetBinContent(1);
489d5531 712 }
b3dacf6b 713
e1d101a6 714 // 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?)
b3dacf6b 715 fUsePhiWeights = (Bool_t)fUseParticleWeights->GetBinContent(1);
716 fUsePtWeights = (Bool_t)fUseParticleWeights->GetBinContent(2);
717 fUseEtaWeights = (Bool_t)fUseParticleWeights->GetBinContent(3);
403e3389 718 fUseTrackWeights = (Bool_t)fUseParticleWeights->GetBinContent(4);
b3dacf6b 719 fApplyCorrectionForNUA = (Bool_t)fIntFlowFlags->GetBinContent(3);
720 fPrintFinalResults[0] = (Bool_t)fIntFlowFlags->GetBinContent(4);
721 fPrintFinalResults[1] = (Bool_t)fIntFlowFlags->GetBinContent(5);
722 fPrintFinalResults[2] = (Bool_t)fIntFlowFlags->GetBinContent(6);
723 fPrintFinalResults[3] = (Bool_t)fIntFlowFlags->GetBinContent(7);
724 fApplyCorrectionForNUAVsM = (Bool_t)fIntFlowFlags->GetBinContent(8);
b77b6434 725 fPropagateErrorAlsoFromNIT = (Bool_t)fIntFlowFlags->GetBinContent(9);
0dd3b008 726 fCalculateCumulantsVsM = (Bool_t)fIntFlowFlags->GetBinContent(10);
727 fMinimumBiasReferenceFlow = (Bool_t)fIntFlowFlags->GetBinContent(11);
e5834fcb 728 fForgetAboutCovariances = (Bool_t)fIntFlowFlags->GetBinContent(12);
729 fStorePhiDistributionForOneEvent = (Bool_t)fIntFlowFlags->GetBinContent(13);
3435cacb 730 fFillMultipleControlHistograms = (Bool_t)fIntFlowFlags->GetBinContent(14);
731 fCalculateAllCorrelationsVsM = (Bool_t)fIntFlowFlags->GetBinContent(15);
1db7eced 732 fUse2DHistograms = (Bool_t)fIntFlowFlags->GetBinContent(18);
733 fFillProfilesVsMUsingWeights = (Bool_t)fIntFlowFlags->GetBinContent(19);
734 fUseQvectorTerms = (Bool_t)fIntFlowFlags->GetBinContent(20);
b3dacf6b 735 fEvaluateIntFlowNestedLoops = (Bool_t)fEvaluateNestedLoops->GetBinContent(1);
736 fEvaluateDiffFlowNestedLoops = (Bool_t)fEvaluateNestedLoops->GetBinContent(2);
489d5531 737 fCrossCheckInPtBinNo = (Int_t)fEvaluateNestedLoops->GetBinContent(3);
738 fCrossCheckInEtaBinNo = (Int_t)fEvaluateNestedLoops->GetBinContent(4);
e1d101a6 739 fCalculateMixedHarmonics = (Bool_t)fMixedHarmonicsFlags->GetBinContent(1);
740 //fHarmonic = (Int_t)fMixedHarmonicsFlags->GetBinContent(2); // TBI should I add inpdependent generic harmonic here?
741 fCalculateMixedHarmonicsVsM = (Bool_t)fMixedHarmonicsFlags->GetBinContent(3);
742
b92ea2b9 743 // d) Calculate reference cumulants (not corrected for detector effects):
489d5531 744 this->FinalizeCorrelationsIntFlow();
745 this->CalculateCovariancesIntFlow();
746 this->CalculateCumulantsIntFlow();
489d5531 747
b92ea2b9 748 // e) Correct reference cumulants for detector effects:
749 this->FinalizeCorrectionTermsForNUAIntFlow();
750 this->CalculateCovariancesNUAIntFlow();
751 this->CalculateQcumulantsCorrectedForNUAIntFlow();
752
753 // f) Calculate reference flow:
754 this->CalculateReferenceFlow();
489d5531 755
b77b6434 756 // g) Store results for reference flow in AliFlowCommonHistResults and print them on the screen:
489d5531 757 this->FillCommonHistResultsIntFlow();
b3dacf6b 758 if(fPrintFinalResults[0]){this->PrintFinalResultsForIntegratedFlow("RF");}
759 if(fPrintFinalResults[3] && fCalculateCumulantsVsM){this->PrintFinalResultsForIntegratedFlow("RF, rebinned in M");}
489d5531 760
1268c371 761 // h) Calculate the final results for differential flow (without/with weights):
762 if(fCalculateDiffFlow)
763 {
764 this->FinalizeReducedCorrelations("RP","Pt");
62e36168 765 if(fCalculateDiffFlowVsEta){this->FinalizeReducedCorrelations("RP","Eta");}
1268c371 766 this->FinalizeReducedCorrelations("POI","Pt");
62e36168 767 if(fCalculateDiffFlowVsEta){this->FinalizeReducedCorrelations("POI","Eta");}
1268c371 768 this->CalculateDiffFlowCovariances("RP","Pt");
62e36168 769 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCovariances("RP","Eta");}
1268c371 770 this->CalculateDiffFlowCovariances("POI","Pt");
62e36168 771 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCovariances("POI","Eta");}
1268c371 772 this->CalculateDiffFlowCumulants("RP","Pt");
62e36168 773 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulants("RP","Eta");}
1268c371 774 this->CalculateDiffFlowCumulants("POI","Pt");
62e36168 775 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulants("POI","Eta");}
1268c371 776 this->CalculateDiffFlow("RP","Pt");
62e36168 777 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlow("RP","Eta");}
1268c371 778 this->CalculateDiffFlow("POI","Pt");
62e36168 779 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlow("POI","Eta");}
1268c371 780 } // if(fCalculateDiffFlow)
781
782 // i) Correct the results for differential flow (without/with weights) for effects of non-uniform acceptance (NUA):
783 if(fCalculateDiffFlow)
489d5531 784 {
785 this->FinalizeCorrectionTermsForNUADiffFlow("RP","Pt");
62e36168 786 if(fCalculateDiffFlowVsEta){this->FinalizeCorrectionTermsForNUADiffFlow("RP","Eta");}
489d5531 787 this->FinalizeCorrectionTermsForNUADiffFlow("POI","Pt");
62e36168 788 if(fCalculateDiffFlowVsEta){this->FinalizeCorrectionTermsForNUADiffFlow("POI","Eta");}
489d5531 789 this->CalculateDiffFlowCumulantsCorrectedForNUA("RP","Pt");
62e36168 790 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulantsCorrectedForNUA("RP","Eta");}
489d5531 791 this->CalculateDiffFlowCumulantsCorrectedForNUA("POI","Pt");
62e36168 792 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulantsCorrectedForNUA("POI","Eta");}
1268c371 793 if(fApplyCorrectionForNUA)
794 {
795 this->CalculateDiffFlowCorrectedForNUA("RP","Pt");
62e36168 796 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectedForNUA("RP","Eta");}
1268c371 797 this->CalculateDiffFlowCorrectedForNUA("POI","Pt");
62e36168 798 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectedForNUA("POI","Eta");}
1268c371 799 }
800 } // end of if(fCalculateDiffFlow && fApplyCorrectionForNUA)
801
802 // i) Calcualate final results for 2D differential flow:
803 if(fCalculate2DDiffFlow)
804 {
805 this->Calculate2DDiffFlowCumulants("RP");
806 this->Calculate2DDiffFlowCumulants("POI");
807 this->Calculate2DDiffFlow("RP");
808 this->Calculate2DDiffFlow("POI");
809 } // end of if(fCalculate2DDiffFlow)
810
811 // j) Calculate the final results for integrated flow (RP/POI) and store in AliFlowCommonHistResults:
812 if(fCalculateDiffFlow)
813 {
814 this->CalculateFinalResultsForRPandPOIIntegratedFlow("RP");
815 this->CalculateFinalResultsForRPandPOIIntegratedFlow("POI");
3b552efe 816 }
489d5531 817
1268c371 818 // k) Store results for differential flow in AliFlowCommonHistResults:
819 if(fCalculateDiffFlow)
820 {
821 this->FillCommonHistResultsDiffFlow("RP");
822 this->FillCommonHistResultsDiffFlow("POI");
823 }
824
825 // l) Print the final results for integrated flow (RP/POI) on the screen:
826 if(fPrintFinalResults[1] && fCalculateDiffFlow){this->PrintFinalResultsForIntegratedFlow("RP");}
827 if(fPrintFinalResults[2] && fCalculateDiffFlow){this->PrintFinalResultsForIntegratedFlow("POI");}
828
829 // m) Cross-checking: Results from Q-vectors vs results from nested loops:
830 // m1) Reference flow:
489d5531 831 if(fEvaluateIntFlowNestedLoops)
832 {
833 this->CrossCheckIntFlowCorrelations();
834 this->CrossCheckIntFlowCorrectionTermsForNUA();
e1d101a6 835 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights){this->CrossCheckIntFlowExtraCorrelations();}
836 if(fCalculateMixedHarmonics){this->CrossCheckIntFlowCorrelations();}
489d5531 837 } // end of if(fEvaluateIntFlowNestedLoops)
1268c371 838 // m2) Differential flow:
839 if(fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
489d5531 840 {
b3dacf6b 841 // Correlations:
489d5531 842 this->PrintNumberOfParticlesInSelectedBin();
843 this->CrossCheckDiffFlowCorrelations("RP","Pt");
62e36168 844 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrelations("RP","Eta");}
489d5531 845 this->CrossCheckDiffFlowCorrelations("POI","Pt");
62e36168 846 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrelations("POI","Eta");}
b3dacf6b 847 // Correction terms for non-uniform acceptance:
489d5531 848 this->CrossCheckDiffFlowCorrectionTermsForNUA("RP","Pt");
62e36168 849 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrectionTermsForNUA("RP","Eta");}
489d5531 850 this->CrossCheckDiffFlowCorrectionTermsForNUA("POI","Pt");
62e36168 851 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrectionTermsForNUA("POI","Eta");}
64e500e3 852 // Other differential correlators:
853 this->CrossCheckOtherDiffCorrelators("RP","Pt");
62e36168 854 if(fCalculateDiffFlowVsEta){this->CrossCheckOtherDiffCorrelators("RP","Eta");}
64e500e3 855 this->CrossCheckOtherDiffCorrelators("POI","Pt");
62e36168 856 if(fCalculateDiffFlowVsEta){this->CrossCheckOtherDiffCorrelators("POI","Eta");}
489d5531 857 } // end of if(fEvaluateDiffFlowNestedLoops)
e1d101a6 858
859 // i) Calculate cumulants for mixed harmonics:
860 if(fCalculateMixedHarmonics){this->CalculateCumulantsMixedHarmonics();}
861
489d5531 862} // end of AliFlowAnalysisWithQCumulants::Finish()
863
e1d101a6 864//=======================================================================================================================
489d5531 865
1268c371 866void AliFlowAnalysisWithQCumulants::EvaluateIntFlowNestedLoops(AliFlowEventSimple* anEvent)
867{
e1d101a6 868 // Evaluate all correlators for reference flow with nested loops.
1268c371 869
df23c5ae 870 Int_t nPrim = anEvent->NumberOfTracks(); // number of primaries
1268c371 871 if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
872 {
873 // Without using particle weights:
403e3389 874 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 875 {
876 // Correlations:
877 this->CalculateIntFlowCorrelations(); // from Q-vectors
e1d101a6 878 this->EvaluateIntFlowCorrelationsWithNestedLoops(anEvent); // from nested loops (TBI: do I have to pass here anEvent or not?)
1268c371 879 // Correction for non-uniform acceptance:
880 this->CalculateIntFlowCorrectionsForNUASinTerms(); // from Q-vectors (sin terms)
881 this->CalculateIntFlowCorrectionsForNUACosTerms(); // from Q-vectors (cos terms)
882 this->EvaluateIntFlowCorrectionsForNUAWithNestedLoops(anEvent); // from nested loops (both sin and cos terms)
e1d101a6 883 // Mixed harmonics:
884 if(fCalculateMixedHarmonics)
885 {
886 this->CalculateMixedHarmonics(); // from Q-vectors
887 this->EvaluateMixedHarmonicsWithNestedLoops(anEvent); // from nested loops (TBI: do I have to pass here anEvent or not?)
888 } // end of if(fCalculateMixedHarmonics)
1268c371 889 }
890 // Using particle weights:
403e3389 891 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
1268c371 892 {
893 // Correlations
894 this->CalculateIntFlowCorrelationsUsingParticleWeights(); // from Q-vectors
895 this->EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent); // from nested loops (to be improved: do I have to pass here anEvent or not?)
896 // Correction for non-uniform acceptance:
897 this->CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights(); // from Q-vectors (sin terms)
898 this->CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights(); // from Q-vectors (cos terms)
899 this->EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(anEvent); // from nested loops (both sin and cos terms)
900 }
901 } else if(nPrim>fMaxAllowedMultiplicity) // to if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity)
902 {
903 cout<<endl;
904 cout<<"Skipping the event because multiplicity is "<<nPrim<<". Too high to evaluate nested loops!"<<endl;
905 } else
906 {
907 cout<<endl;
908 cout<<"Skipping the event because multiplicity is "<<nPrim<<"."<<endl;
909 }
910
911} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowNestedLoops(AliFlowEventSimple* anEvent)
912
e1d101a6 913//=======================================================================================================================
1268c371 914
915void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowNestedLoops(AliFlowEventSimple* anEvent)
916{
917 // Evalauted all correlators for differential flow with nested loops.
918
919 if(!fCalculateDiffFlow){return;}
920
df23c5ae 921 Int_t nPrim = anEvent->NumberOfTracks(); // number of primaries
1268c371 922 if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
923 {
924 // Without using particle weights:
403e3389 925 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 926 {
64e500e3 927 // 1.) Reduced correlations:
1268c371 928 // Q-vectors:
929 this->CalculateDiffFlowCorrelations("RP","Pt");
930 this->CalculateDiffFlowCorrelations("RP","Eta");
931 this->CalculateDiffFlowCorrelations("POI","Pt");
932 this->CalculateDiffFlowCorrelations("POI","Eta");
933 // Nested loops:
934 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"RP","Pt");
935 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"RP","Eta");
936 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"POI","Pt");
937 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"POI","Eta");
64e500e3 938 // 2.) Reduced corrections for non-uniform acceptance:
1268c371 939 // Q-vectors:
940 this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Pt");
941 this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Eta");
942 this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Pt");
943 this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Eta");
944 this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Pt");
945 this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Eta");
946 this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Pt");
947 this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Eta");
948 // Nested loops:
949 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"RP","Pt");
950 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"RP","Eta");
951 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"POI","Pt");
952 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"POI","Eta");
64e500e3 953 // 3.) Other differential correlators:
954 // Q-vectors:
955 this->CalculateOtherDiffCorrelators("RP","Pt");
956 this->CalculateOtherDiffCorrelators("RP","Eta");
957 this->CalculateOtherDiffCorrelators("POI","Pt");
958 this->CalculateOtherDiffCorrelators("POI","Eta");
959 // Nested loops:
960 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"RP","Pt");
961 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"RP","Eta");
962 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"POI","Pt");
963 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"POI","Eta");
403e3389 964 } // end of if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 965 // Using particle weights:
403e3389 966 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
1268c371 967 {
968 this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Pt");
969 this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Eta");
970 this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Pt");
971 this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Eta");
972 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Pt");
973 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Eta");
974 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Pt");
975 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Eta");
976 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Pt");
977 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Eta");
978 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Pt");
979 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Eta");
980 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"RP","Pt");
981 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"RP","Eta");
982 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"POI","Pt");
983 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"POI","Eta");
984 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"RP","Pt");
985 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"RP","Eta");
986 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"POI","Pt");
987 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"POI","Eta");
403e3389 988 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
1268c371 989 } // end of if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
990
991} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowNestedLoops(AliFlowEventSimple* anEvent)
992
e1d101a6 993//=======================================================================================================================
1268c371 994
489d5531 995void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTerms()
996{
b92ea2b9 997 // Calculate correction terms for non-uniform acceptance of the detector for reference flow (cos terms).
489d5531 998
999 // multiplicity:
1268c371 1000 Double_t dMult = (*fSpk)(0,0);
489d5531 1001
1002 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
1003 Double_t dReQ1n = (*fReQ)(0,0);
1004 Double_t dReQ2n = (*fReQ)(1,0);
1005 //Double_t dReQ3n = (*fReQ)(2,0);
1006 //Double_t dReQ4n = (*fReQ)(3,0);
1007 Double_t dImQ1n = (*fImQ)(0,0);
1008 Double_t dImQ2n = (*fImQ)(1,0);
1009 //Double_t dImQ3n = (*fImQ)(2,0);
1010 //Double_t dImQ4n = (*fImQ)(3,0);
3842bdcd 1011
1012 // Multiplicity bin of an event (relevant for all histos vs M):
1013 Double_t dMultiplicityBin = 0.;
df23c5ae 1014 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 1015 {
df23c5ae 1016 dMultiplicityBin = fNumberOfRPsEBE+0.5;
1017 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 1018 {
1019 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 1020 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1021 {
1022 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
1023 }
1024
489d5531 1025 // *************************************************************
1026 // **** corrections for non-uniform acceptance (cos terms): ****
1027 // *************************************************************
1028 //
1029 // Remark 1: corrections for non-uniform acceptance (cos terms) calculated with non-weighted Q-vectors
1030 // are stored in 1D profile fQCorrectionsCos.
1031 // Remark 2: binning of fIntFlowCorrectionTermsForNUAPro[1] is organized as follows:
1032 // --------------------------------------------------------------------------------------------------------------------
1033 // 1st bin: <<cos(n*(phi1))>> = cosP1n
1034 // 2nd bin: <<cos(n*(phi1+phi2))>> = cosP1nP1n
1035 // 3rd bin: <<cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1n
1036 // 4th bin: <<cos(n*(2phi1-phi2))>> = cosP2nM1n
1037 // --------------------------------------------------------------------------------------------------------------------
1038
1039 // 1-particle:
1040 Double_t cosP1n = 0.; // <<cos(n*(phi1))>>
1041
1042 if(dMult>0)
1043 {
1044 cosP1n = dReQ1n/dMult;
1045
1046 // average non-weighted 1-particle correction (cos terms) for non-uniform acceptance for single event:
1047 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(1,cosP1n);
0328db2d 1048 // event weights for NUA terms:
1049 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(1,dMult);
489d5531 1050
1051 // final average non-weighted 1-particle correction (cos terms) for non-uniform acceptance for all events:
1052 fIntFlowCorrectionTermsForNUAPro[1]->Fill(0.5,cosP1n,dMult);
3842bdcd 1053 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[1][0]->Fill(dMultiplicityBin,cosP1n,dMult);}
489d5531 1054 }
1055
1056 // 2-particle:
3b552efe 1057 Double_t cosP1nP1n = 0.; // <<cos(n*(phi1+phi2))>>
489d5531 1058 Double_t cosP2nM1n = 0.; // <<cos(n*(2phi1-phi2))>>
1059
1060 if(dMult>1)
1061 {
1062 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1063 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1064
1065 // average non-weighted 2-particle correction (cos terms) for non-uniform acceptance for single event:
3b552efe 1066 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(2,cosP1nP1n);
489d5531 1067 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(4,cosP2nM1n);
0328db2d 1068 // event weights for NUA terms:
1069 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(2,dMult*(dMult-1));
1070 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(4,dMult*(dMult-1));
1071
489d5531 1072 // final average non-weighted 2-particle correction (cos terms) for non-uniform acceptance for all events:
3b552efe 1073 fIntFlowCorrectionTermsForNUAPro[1]->Fill(1.5,cosP1nP1n,dMult*(dMult-1));
489d5531 1074 fIntFlowCorrectionTermsForNUAPro[1]->Fill(3.5,cosP2nM1n,dMult*(dMult-1));
b3dacf6b 1075 if(fCalculateCumulantsVsM)
1076 {
3842bdcd 1077 fIntFlowCorrectionTermsForNUAVsMPro[1][1]->Fill(dMultiplicityBin,cosP1nP1n,dMult*(dMult-1));
1078 fIntFlowCorrectionTermsForNUAVsMPro[1][3]->Fill(dMultiplicityBin,cosP2nM1n,dMult*(dMult-1));
b3dacf6b 1079 }
489d5531 1080 }
1081
1082 // 3-particle:
1083 Double_t cosP1nM1nM1n = 0.; // <<cos(n*(phi1-phi2-phi3))>>
1084
1085 if(dMult>2)
1086 {
1087 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1088 / (dMult*(dMult-1)*(dMult-2));
1089
1090 // average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for single event:
1091 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(3,cosP1nM1nM1n);
0328db2d 1092 // event weights for NUA terms:
1093 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(3,dMult*(dMult-1)*(dMult-2));
489d5531 1094
1095 // final average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for all events:
2001bc3a 1096 fIntFlowCorrectionTermsForNUAPro[1]->Fill(2.5,cosP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
3842bdcd 1097 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[1][2]->Fill(dMultiplicityBin,cosP1nM1nM1n,dMult*(dMult-1)*(dMult-2));}
489d5531 1098 }
1099
1100} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTerms()
1101
e1d101a6 1102//=======================================================================================================================
489d5531 1103
489d5531 1104void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTerms()
1105{
1106 // calculate corrections for non-uniform acceptance of the detector for no-name integrated flow (sin terms)
1107
1108 // multiplicity:
1268c371 1109 Double_t dMult = (*fSpk)(0,0);
489d5531 1110
1111 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
1112 Double_t dReQ1n = (*fReQ)(0,0);
1113 Double_t dReQ2n = (*fReQ)(1,0);
1114 //Double_t dReQ3n = (*fReQ)(2,0);
1115 //Double_t dReQ4n = (*fReQ)(3,0);
1116 Double_t dImQ1n = (*fImQ)(0,0);
1117 Double_t dImQ2n = (*fImQ)(1,0);
1118 //Double_t dImQ3n = (*fImQ)(2,0);
1119 //Double_t dImQ4n = (*fImQ)(3,0);
1120
3842bdcd 1121 // Multiplicity bin of an event (relevant for all histos vs M):
1122 Double_t dMultiplicityBin = 0.;
df23c5ae 1123 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 1124 {
df23c5ae 1125 dMultiplicityBin = fNumberOfRPsEBE+0.5;
1126 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 1127 {
1128 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 1129 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1130 {
1131 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
1132 }
3842bdcd 1133
489d5531 1134 // *************************************************************
1135 // **** corrections for non-uniform acceptance (sin terms): ****
1136 // *************************************************************
1137 //
1138 // Remark 1: corrections for non-uniform acceptance (sin terms) calculated with non-weighted Q-vectors
1139 // are stored in 1D profile fQCorrectionsSin.
1140 // Remark 2: binning of fIntFlowCorrectionTermsForNUAPro[0] is organized as follows:
1141 // --------------------------------------------------------------------------------------------------------------------
1142 // 1st bin: <<sin(n*(phi1))>> = sinP1n
1143 // 2nd bin: <<sin(n*(phi1+phi2))>> = sinP1nP1n
1144 // 3rd bin: <<sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1n
1145 // 4th bin: <<sin(n*(2phi1-phi2))>> = sinP2nM1n
1146 // --------------------------------------------------------------------------------------------------------------------
1147
1148 // 1-particle:
1149 Double_t sinP1n = 0.; // <sin(n*(phi1))>
1150
1151 if(dMult>0)
1152 {
1153 sinP1n = dImQ1n/dMult;
1154
1155 // average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for single event:
0328db2d 1156 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(1,sinP1n);
1157 // event weights for NUA terms:
1158 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(1,dMult);
489d5531 1159
1160 // final average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
1161 fIntFlowCorrectionTermsForNUAPro[0]->Fill(0.5,sinP1n,dMult);
3842bdcd 1162 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[0][0]->Fill(dMultiplicityBin,sinP1n,dMult);}
489d5531 1163 }
1164
1165 // 2-particle:
1166 Double_t sinP1nP1n = 0.; // <<sin(n*(phi1+phi2))>>
1167 Double_t sinP2nM1n = 0.; // <<sin(n*(2phi1-phi2))>>
1168 if(dMult>1)
1169 {
3b552efe 1170 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
489d5531 1171 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1172
1173 // average non-weighted 2-particle correction (sin terms) for non-uniform acceptance for single event:
1174 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(2,sinP1nP1n);
3b552efe 1175 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(4,sinP2nM1n);
0328db2d 1176 // event weights for NUA terms:
1177 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(2,dMult*(dMult-1));
1178 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(4,dMult*(dMult-1));
489d5531 1179
1180 // final average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
1181 fIntFlowCorrectionTermsForNUAPro[0]->Fill(1.5,sinP1nP1n,dMult*(dMult-1));
1182 fIntFlowCorrectionTermsForNUAPro[0]->Fill(3.5,sinP2nM1n,dMult*(dMult-1));
b3dacf6b 1183 if(fCalculateCumulantsVsM)
1184 {
3842bdcd 1185 fIntFlowCorrectionTermsForNUAVsMPro[0][1]->Fill(dMultiplicityBin,sinP1nP1n,dMult*(dMult-1));
1186 fIntFlowCorrectionTermsForNUAVsMPro[0][3]->Fill(dMultiplicityBin,sinP2nM1n,dMult*(dMult-1));
b3dacf6b 1187 }
489d5531 1188 }
1189
1190 // 3-particle:
1191 Double_t sinP1nM1nM1n = 0.; // <<sin(n*(phi1-phi2-phi3))>>
1192
1193 if(dMult>2)
1194 {
1195 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1196 / (dMult*(dMult-1)*(dMult-2));
1197
1198 // average non-weighted 3-particle correction (sin terms) for non-uniform acceptance for single event:
1199 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(3,sinP1nM1nM1n);
0328db2d 1200 // event weights for NUA terms:
1201 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(3,dMult*(dMult-1)*(dMult-2));
489d5531 1202
1203 // final average non-weighted 3-particle correction (sin terms) for non-uniform acceptance for all events:
2001bc3a 1204 fIntFlowCorrectionTermsForNUAPro[0]->Fill(2.5,sinP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
3842bdcd 1205 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[0][2]->Fill(dMultiplicityBin,sinP1nM1nM1n,dMult*(dMult-1)*(dMult-2));}
489d5531 1206 }
1207
1208} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTerms()
1209
e1d101a6 1210//=======================================================================================================================
489d5531 1211
489d5531 1212void AliFlowAnalysisWithQCumulants::GetOutputHistograms(TList *outputListHistos)
1213{
1268c371 1214 // a) Get pointers for common control and common result histograms;
1215 // b) Get pointers for histograms holding particle weights;
1216 // c) Get pointers for reference flow histograms;
1217 // d) Get pointers for differential flow histograms;
1218 // e) Get pointers for 2D differential flow histograms;
64e500e3 1219 // f) Get pointers for other differential correlators;
1db7eced 1220 // g) Get pointers for mixed harmonics histograms;
1221 // h) Get pointers for nested loops' histograms;
1222 // i) Get pointers for control histograms.
489d5531 1223
1224 if(outputListHistos)
3b552efe 1225 {
1226 this->SetHistList(outputListHistos);
1227 if(!fHistList)
1228 {
1268c371 1229 printf("\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
3b552efe 1230 exit(0);
489d5531 1231 }
1232 this->GetPointersForCommonHistograms();
1233 this->GetPointersForParticleWeightsHistograms();
1234 this->GetPointersForIntFlowHistograms();
1235 this->GetPointersForDiffFlowHistograms();
1268c371 1236 this->GetPointersFor2DDiffFlowHistograms();
64e500e3 1237 this->GetPointersForOtherDiffCorrelators();
e1d101a6 1238 this->GetPointersForMixedHarmonicsHistograms();
489d5531 1239 this->GetPointersForNestedLoopsHistograms();
1db7eced 1240 this->GetPointersForControlHistograms();
3b552efe 1241 } else
1242 {
1268c371 1243 printf("\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
3b552efe 1244 exit(0);
489d5531 1245 }
1246
1247} // end of void AliFlowAnalysisWithQCumulants::GetOutputHistograms(TList *outputListHistos)
ad87ae62 1248
e1d101a6 1249//=======================================================================================================================
489d5531 1250
489d5531 1251TProfile* AliFlowAnalysisWithQCumulants::MakePtProjection(TProfile2D *profilePtEta) const
ad87ae62 1252{
489d5531 1253 // project 2D profile onto pt axis to get 1D profile
1254
1255 Int_t nBinsPt = profilePtEta->GetNbinsX();
1256 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1257 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1258
1259 Int_t nBinsEta = profilePtEta->GetNbinsY();
1260
1261 TProfile *profilePt = new TProfile("","",nBinsPt,dPtMin,dPtMax);
1262
1263 for(Int_t p=1;p<=nBinsPt;p++)
1264 {
1265 Double_t contentPt = 0.;
1266 Double_t entryPt = 0.;
1267 Double_t spreadPt = 0.;
1268 Double_t sum1 = 0.;
1269 Double_t sum2 = 0.;
1270 Double_t sum3 = 0.;
1271 for(Int_t e=1;e<=nBinsEta;e++)
1272 {
1273 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1274 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1275 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1276
1277 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1278 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1279 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1280 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1281 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1282 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1283 }
1284 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1285 {
1286 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1287 }
1288 profilePt->SetBinContent(p,contentPt);
1289 profilePt->SetBinEntries(p,entryPt);
1290 {
1291 profilePt->SetBinError(p,spreadPt);
1292 }
1293
1294 }
1295
1296 return profilePt;
1297
1298} // end of TProfile* AliFlowAnalysisWithQCumulants::MakePtProjection(TProfile2D *profilePtEta)
1299
1300
e1d101a6 1301//=======================================================================================================================
489d5531 1302
1303
1304TProfile* AliFlowAnalysisWithQCumulants::MakeEtaProjection(TProfile2D *profilePtEta) const
1305{
1306 // project 2D profile onto eta axis to get 1D profile
1307
1308 Int_t nBinsEta = profilePtEta->GetNbinsY();
1309 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1310 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1311
1312 Int_t nBinsPt = profilePtEta->GetNbinsX();
1313
1314 TProfile *profileEta = new TProfile("","",nBinsEta,dEtaMin,dEtaMax);
1315
1316 for(Int_t e=1;e<=nBinsEta;e++)
1317 {
1318 Double_t contentEta = 0.;
1319 Double_t entryEta = 0.;
1320 for(Int_t p=1;p<=nBinsPt;p++)
1321 {
1322 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1323 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1324 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1325 }
1326 profileEta->SetBinContent(e,contentEta);
1327 profileEta->SetBinEntries(e,entryEta);
1328 }
1329
1330 return profileEta;
1331
1332} // end of TProfile* AliFlowAnalysisWithQCumulants::MakeEtaProjection(TProfile2D *profilePtEta)
1333
e1d101a6 1334//=======================================================================================================================
489d5531 1335
489d5531 1336void AliFlowAnalysisWithQCumulants::PrintFinalResultsForIntegratedFlow(TString type)
1337{
2001bc3a 1338 // Printing on the screen the final results for integrated flow (RF, POI and RP).
489d5531 1339
1340 Int_t n = fHarmonic;
1341
489d5531 1342 Double_t dVn[4] = {0.}; // array to hold Vn{2}, Vn{4}, Vn{6} and Vn{8}
1343 Double_t dVnErr[4] = {0.}; // array to hold errors of Vn{2}, Vn{4}, Vn{6} and Vn{8}
1344
2001bc3a 1345 if(type == "RF")
489d5531 1346 {
0dd3b008 1347 for(Int_t b=0;b<4;b++)
1348 {
b77b6434 1349 dVn[0] = (fCommonHistsResults2nd->GetHistIntFlow())->GetBinContent(1);
1350 dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlow())->GetBinError(1);
1351 dVn[1] = (fCommonHistsResults4th->GetHistIntFlow())->GetBinContent(1);
1352 dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlow())->GetBinError(1);
1353 dVn[2] = (fCommonHistsResults6th->GetHistIntFlow())->GetBinContent(1);
1354 dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlow())->GetBinError(1);
1355 dVn[3] = (fCommonHistsResults8th->GetHistIntFlow())->GetBinContent(1);
1356 dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlow())->GetBinError(1);
0dd3b008 1357 }
489d5531 1358 } else if(type == "RP")
1359 {
1360 dVn[0] = (fCommonHistsResults2nd->GetHistIntFlowRP())->GetBinContent(1);
1361 dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlowRP())->GetBinError(1);
1362 dVn[1] = (fCommonHistsResults4th->GetHistIntFlowRP())->GetBinContent(1);
1363 dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlowRP())->GetBinError(1);
1364 dVn[2] = (fCommonHistsResults6th->GetHistIntFlowRP())->GetBinContent(1);
1365 dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlowRP())->GetBinError(1);
1366 dVn[3] = (fCommonHistsResults8th->GetHistIntFlowRP())->GetBinContent(1);
1367 dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlowRP())->GetBinError(1);
1368 } else if(type == "POI")
1369 {
1370 dVn[0] = (fCommonHistsResults2nd->GetHistIntFlowPOI())->GetBinContent(1);
1371 dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlowPOI())->GetBinError(1);
1372 dVn[1] = (fCommonHistsResults4th->GetHistIntFlowPOI())->GetBinContent(1);
1373 dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlowPOI())->GetBinError(1);
1374 dVn[2] = (fCommonHistsResults6th->GetHistIntFlowPOI())->GetBinContent(1);
1375 dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlowPOI())->GetBinError(1);
1376 dVn[3] = (fCommonHistsResults8th->GetHistIntFlowPOI())->GetBinContent(1);
1377 dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlowPOI())->GetBinError(1);
b77b6434 1378 } else if(type == "RF, rebinned in M" && fCalculateCumulantsVsM)
b3dacf6b 1379 {
0dd3b008 1380 for(Int_t b=0;b<4;b++)
1381 {
1382 dVn[b] = fIntFlowRebinnedInM->GetBinContent(b+1);
1383 dVnErr[b] = fIntFlowRebinnedInM->GetBinError(b+1);
1384 }
b3dacf6b 1385 }
489d5531 1386
1387 TString title = " flow estimates from Q-cumulants";
1388 TString subtitle = " (";
b3dacf6b 1389 TString subtitle2 = " (rebinned in M)";
489d5531 1390
b3dacf6b 1391 if(type != "RF, rebinned in M")
489d5531 1392 {
403e3389 1393 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
b3dacf6b 1394 {
1395 subtitle.Append(type);
1396 subtitle.Append(", without weights)");
1397 } else
1398 {
1399 subtitle.Append(type);
1400 subtitle.Append(", with weights)");
1401 }
1402 } else
489d5531 1403 {
403e3389 1404 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
b3dacf6b 1405 {
1406 subtitle.Append("RF");
1407 subtitle.Append(", without weights)");
1408 } else
1409 {
1410 subtitle.Append("RF");
1411 subtitle.Append(", with weights)");
1412 }
1413 }
1414
489d5531 1415 cout<<endl;
1416 cout<<"*************************************"<<endl;
1417 cout<<"*************************************"<<endl;
1418 cout<<title.Data()<<endl;
1419 cout<<subtitle.Data()<<endl;
b3dacf6b 1420 if(type == "RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
489d5531 1421 cout<<endl;
1422
1423 for(Int_t i=0;i<4;i++)
1424 {
2001bc3a 1425 cout<<" v_"<<n<<"{"<<2*(i+1)<<"} = "<<dVn[i]<<" +/- "<<dVnErr[i]<<endl;
489d5531 1426 }
2001bc3a 1427
489d5531 1428 cout<<endl;
b92ea2b9 1429 if(type == "RF")
1430 {
b77b6434 1431 if(fApplyCorrectionForNUA)
1432 {
1433 cout<<" detector bias (corrected for): "<<endl;
1434 } else
1435 {
1436 cout<<" detector bias (not corrected for):"<<endl;
1437 }
b92ea2b9 1438 cout<<" to QC{2}: "<<fIntFlowDetectorBias->GetBinContent(1)<<" +/- "<<fIntFlowDetectorBias->GetBinError(1)<<endl;
1439 cout<<" to QC{4}: "<<fIntFlowDetectorBias->GetBinContent(2)<<" +/- "<<fIntFlowDetectorBias->GetBinError(2)<<endl;
1440 cout<<endl;
1441 }
b3dacf6b 1442 if(type == "RF" || type == "RF, rebinned in M")
489d5531 1443 {
2001bc3a 1444 cout<<" nEvts = "<<(Int_t)fCommonHists->GetHistMultRP()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultRP()->GetMean()<<endl;
489d5531 1445 }
1446 else if (type == "RP")
1447 {
2001bc3a 1448 cout<<" nEvts = "<<(Int_t)fCommonHists->GetHistMultRP()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultRP()->GetMean()<<endl;
489d5531 1449 }
1450 else if (type == "POI")
1451 {
2001bc3a 1452 cout<<" nEvts = "<<(Int_t)fCommonHists->GetHistMultPOI()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultPOI()->GetMean()<<endl;
1453 }
1454
489d5531 1455 cout<<"*************************************"<<endl;
1456 cout<<"*************************************"<<endl;
1457 cout<<endl;
1458
2001bc3a 1459}// end of AliFlowAnalysisWithQCumulants::PrintFinalResultsForIntegratedFlow(TString type="RF");
489d5531 1460
e1d101a6 1461//=======================================================================================================================
489d5531 1462
489d5531 1463void AliFlowAnalysisWithQCumulants::WriteHistograms(TString outputFileName)
1464{
1465 //store the final results in output .root file
1466 TFile *output = new TFile(outputFileName.Data(),"RECREATE");
1467 //output->WriteObject(fHistList, "cobjQC","SingleKey");
1468 fHistList->Write(fHistList->GetName(), TObject::kSingleKey);
1469 delete output;
1470}
1471
1472
e1d101a6 1473//=======================================================================================================================
489d5531 1474
1475
1476void AliFlowAnalysisWithQCumulants::WriteHistograms(TDirectoryFile *outputFileName)
1477{
1478 //store the final results in output .root file
1479 fHistList->SetName("cobjQC");
1480 fHistList->SetOwner(kTRUE);
1481 outputFileName->Add(fHistList);
1482 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1483}
1484
e1d101a6 1485//=======================================================================================================================
489d5531 1486
489d5531 1487void AliFlowAnalysisWithQCumulants::BookCommonHistograms()
1488{
1489 // Book common control histograms and common histograms for final results.
1268c371 1490 // a) Book common control histograms;
1491 // b) Book common result histograms.
1492
1493 // a) Book common control histograms:
1494 // Common control histograms (all events):
489d5531 1495 TString commonHistsName = "AliFlowCommonHistQC";
1496 commonHistsName += fAnalysisLabel->Data();
62d19320 1497 fCommonHists = new AliFlowCommonHist(commonHistsName.Data(),commonHistsName.Data(),fBookOnlyBasicCCH);
489d5531 1498 fHistList->Add(fCommonHists);
1268c371 1499 // Common control histograms (selected events):
dd442cd2 1500 if(fFillMultipleControlHistograms)
1501 {
1268c371 1502 // Common control histogram filled for events with 2 and more reference particles:
dd442cd2 1503 TString commonHists2ndOrderName = "AliFlowCommonHist2ndOrderQC";
1504 commonHists2ndOrderName += fAnalysisLabel->Data();
62d19320 1505 fCommonHists2nd = new AliFlowCommonHist(commonHists2ndOrderName.Data(),commonHists2ndOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1506 fHistList->Add(fCommonHists2nd);
1268c371 1507 // Common control histogram filled for events with 2 and more reference particles:
dd442cd2 1508 TString commonHists4thOrderName = "AliFlowCommonHist4thOrderQC";
1509 commonHists4thOrderName += fAnalysisLabel->Data();
62d19320 1510 fCommonHists4th = new AliFlowCommonHist(commonHists4thOrderName.Data(),commonHists4thOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1511 fHistList->Add(fCommonHists4th);
1268c371 1512 // Common control histogram filled for events with 6 and more reference particles:
dd442cd2 1513 TString commonHists6thOrderName = "AliFlowCommonHist6thOrderQC";
1514 commonHists6thOrderName += fAnalysisLabel->Data();
62d19320 1515 fCommonHists6th = new AliFlowCommonHist(commonHists6thOrderName.Data(),commonHists6thOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1516 fHistList->Add(fCommonHists6th);
1268c371 1517 // Common control histogram filled for events with 8 and more reference particles:
dd442cd2 1518 TString commonHists8thOrderName = "AliFlowCommonHist8thOrderQC";
1519 commonHists8thOrderName += fAnalysisLabel->Data();
62d19320 1520 fCommonHists8th = new AliFlowCommonHist(commonHists8thOrderName.Data(),commonHists8thOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1521 fHistList->Add(fCommonHists8th);
1522 } // end of if(fFillMultipleControlHistograms)
1523
1268c371 1524 // b) Book common result histograms:
1525 // Common result histograms for QC{2}:
489d5531 1526 TString commonHistResults2ndOrderName = "AliFlowCommonHistResults2ndOrderQC";
1527 commonHistResults2ndOrderName += fAnalysisLabel->Data();
62e36168 1528 fCommonHistsResults2nd = new AliFlowCommonHistResults(commonHistResults2ndOrderName.Data(),"",fHarmonic);
489d5531 1529 fHistList->Add(fCommonHistsResults2nd);
1268c371 1530 // Common result histograms for QC{4}:
489d5531 1531 TString commonHistResults4thOrderName = "AliFlowCommonHistResults4thOrderQC";
1532 commonHistResults4thOrderName += fAnalysisLabel->Data();
62e36168 1533 fCommonHistsResults4th = new AliFlowCommonHistResults(commonHistResults4thOrderName.Data(),"",fHarmonic);
489d5531 1534 fHistList->Add(fCommonHistsResults4th);
1268c371 1535 // Common result histograms for QC{6}:
489d5531 1536 TString commonHistResults6thOrderName = "AliFlowCommonHistResults6thOrderQC";
1537 commonHistResults6thOrderName += fAnalysisLabel->Data();
62e36168 1538 fCommonHistsResults6th = new AliFlowCommonHistResults(commonHistResults6thOrderName.Data(),"",fHarmonic);
489d5531 1539 fHistList->Add(fCommonHistsResults6th);
1268c371 1540 // Common result histograms for QC{8}:
489d5531 1541 TString commonHistResults8thOrderName = "AliFlowCommonHistResults8thOrderQC";
1542 commonHistResults8thOrderName += fAnalysisLabel->Data();
62e36168 1543 fCommonHistsResults8th = new AliFlowCommonHistResults(commonHistResults8thOrderName.Data(),"",fHarmonic);
489d5531 1544 fHistList->Add(fCommonHistsResults8th);
1545
1546} // end of void AliFlowAnalysisWithQCumulants::BookCommonHistograms()
1547
e1d101a6 1548//=======================================================================================================================
489d5531 1549
489d5531 1550void AliFlowAnalysisWithQCumulants::BookAndFillWeightsHistograms()
1551{
1268c371 1552 // Book and fill histograms which hold phi, pt and eta weights.
489d5531 1553
1554 if(!fWeightsList)
1555 {
1268c371 1556 printf("\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
489d5531 1557 exit(0);
1558 }
1559
1560 TString fUseParticleWeightsName = "fUseParticleWeightsQC";
1561 fUseParticleWeightsName += fAnalysisLabel->Data();
403e3389 1562 fUseParticleWeights = new TProfile(fUseParticleWeightsName.Data(),"0 = particle weight not used, 1 = particle weight used ",4,0,4);
489d5531 1563 fUseParticleWeights->SetLabelSize(0.06);
e1d101a6 1564 fUseParticleWeights->SetStats(kFALSE);
489d5531 1565 (fUseParticleWeights->GetXaxis())->SetBinLabel(1,"w_{#phi}");
1566 (fUseParticleWeights->GetXaxis())->SetBinLabel(2,"w_{p_{T}}");
1567 (fUseParticleWeights->GetXaxis())->SetBinLabel(3,"w_{#eta}");
403e3389 1568 (fUseParticleWeights->GetXaxis())->SetBinLabel(4,"w_{track}");
489d5531 1569 fUseParticleWeights->Fill(0.5,(Int_t)fUsePhiWeights);
1570 fUseParticleWeights->Fill(1.5,(Int_t)fUsePtWeights);
1571 fUseParticleWeights->Fill(2.5,(Int_t)fUseEtaWeights);
403e3389 1572 fUseParticleWeights->Fill(3.5,(Int_t)fUseTrackWeights);
489d5531 1573 fWeightsList->Add(fUseParticleWeights);
1574
1575 if(fUsePhiWeights)
1576 {
1577 if(fWeightsList->FindObject("phi_weights"))
1578 {
1579 fPhiWeights = dynamic_cast<TH1F*>(fWeightsList->FindObject("phi_weights"));
1268c371 1580 if(!fPhiWeights)
1581 {
1582 printf("\n WARNING (QC): fPhiWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1583 exit(0);
1584 }
489d5531 1585 if(TMath::Abs(fPhiWeights->GetBinWidth(1)-fPhiBinWidth)>pow(10.,-6.))
1586 {
1587 cout<<endl;
1588 cout<<"WARNING (QC): Inconsistent binning in histograms for phi-weights throughout the code."<<endl;
1589 cout<<endl;
6fbbbbf1 1590 //exit(0);
489d5531 1591 }
1592 } else
1593 {
1594 cout<<"WARNING: fWeightsList->FindObject(\"phi_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1595 exit(0);
1596 }
1597 } // end of if(fUsePhiWeights)
1598
1599 if(fUsePtWeights)
1600 {
1601 if(fWeightsList->FindObject("pt_weights"))
1602 {
1603 fPtWeights = dynamic_cast<TH1D*>(fWeightsList->FindObject("pt_weights"));
1268c371 1604 if(!fPtWeights)
1605 {
1606 printf("\n WARNING (QC): fPtWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1607 exit(0);
1608 }
489d5531 1609 if(TMath::Abs(fPtWeights->GetBinWidth(1)-fPtBinWidth)>pow(10.,-6.))
1610 {
1611 cout<<endl;
1612 cout<<"WARNING (QC): Inconsistent binning in histograms for pt-weights throughout the code."<<endl;
1613 cout<<endl;
6fbbbbf1 1614 //exit(0);
489d5531 1615 }
1616 } else
1617 {
1618 cout<<"WARNING: fWeightsList->FindObject(\"pt_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1619 exit(0);
1620 }
1621 } // end of if(fUsePtWeights)
1622
1623 if(fUseEtaWeights)
1624 {
1625 if(fWeightsList->FindObject("eta_weights"))
1626 {
1627 fEtaWeights = dynamic_cast<TH1D*>(fWeightsList->FindObject("eta_weights"));
1268c371 1628 if(!fEtaWeights)
1629 {
1630 printf("\n WARNING (QC): fEtaWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1631 exit(0);
1632 }
489d5531 1633 if(TMath::Abs(fEtaWeights->GetBinWidth(1)-fEtaBinWidth)>pow(10.,-6.))
1634 {
1635 cout<<endl;
1636 cout<<"WARNING (QC): Inconsistent binning in histograms for eta-weights throughout the code."<<endl;
1637 cout<<endl;
6fbbbbf1 1638 //exit(0);
489d5531 1639 }
1640 } else
1641 {
1642 cout<<"WARNING: fUseEtaWeights && fWeightsList->FindObject(\"eta_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1643 exit(0);
1644 }
1645 } // end of if(fUseEtaWeights)
1646
1647} // end of AliFlowAnalysisWithQCumulants::BookAndFillWeightsHistograms()
1648
e1d101a6 1649//=======================================================================================================================
489d5531 1650
489d5531 1651void AliFlowAnalysisWithQCumulants::BookEverythingForIntegratedFlow()
1652{
1653 // Book all objects for integrated flow:
e5834fcb 1654 // a) Book profile to hold all flags for integrated flow;
1655 // b) Book event-by-event quantities;
1656 // c) Book profiles; // to be improved (comment)
489d5531 1657 // d) Book histograms holding the final results.
1658
1659 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
1660 TString powerFlag[2] = {"linear","quadratic"}; // to be improved (should I promote this to data members?)
1661
1662 // a) Book profile to hold all flags for integrated flow:
1663 TString intFlowFlagsName = "fIntFlowFlags";
1664 intFlowFlagsName += fAnalysisLabel->Data();
1db7eced 1665 fIntFlowFlags = new TProfile(intFlowFlagsName.Data(),"Flags for Integrated Flow",20,0.,20.);
489d5531 1666 fIntFlowFlags->SetTickLength(-0.01,"Y");
1667 fIntFlowFlags->SetMarkerStyle(25);
403e3389 1668 fIntFlowFlags->SetLabelSize(0.04);
489d5531 1669 fIntFlowFlags->SetLabelOffset(0.02,"Y");
e1d101a6 1670 fIntFlowFlags->SetStats(kFALSE);
489d5531 1671 fIntFlowFlags->GetXaxis()->SetBinLabel(1,"Particle Weights");
1672 fIntFlowFlags->GetXaxis()->SetBinLabel(2,"Event Weights");
1673 fIntFlowFlags->GetXaxis()->SetBinLabel(3,"Corrected for NUA?");
b3dacf6b 1674 fIntFlowFlags->GetXaxis()->SetBinLabel(4,"Print RF results");
489d5531 1675 fIntFlowFlags->GetXaxis()->SetBinLabel(5,"Print RP results");
3b552efe 1676 fIntFlowFlags->GetXaxis()->SetBinLabel(6,"Print POI results");
b3dacf6b 1677 fIntFlowFlags->GetXaxis()->SetBinLabel(7,"Print RF (rebinned in M) results");
1678 fIntFlowFlags->GetXaxis()->SetBinLabel(8,"Corrected for NUA vs M?");
1679 fIntFlowFlags->GetXaxis()->SetBinLabel(9,"Propagate errors to v_{n} from correlations?");
1680 fIntFlowFlags->GetXaxis()->SetBinLabel(10,"Calculate cumulants vs M");
0dd3b008 1681 fIntFlowFlags->GetXaxis()->SetBinLabel(11,"fMinimumBiasReferenceFlow");
8e1cefdd 1682 fIntFlowFlags->GetXaxis()->SetBinLabel(12,"fForgetAboutCovariances");
e5834fcb 1683 fIntFlowFlags->GetXaxis()->SetBinLabel(13,"fStorePhiDistributionForOneEvent");
dd442cd2 1684 fIntFlowFlags->GetXaxis()->SetBinLabel(14,"fFillMultipleControlHistograms");
3435cacb 1685 fIntFlowFlags->GetXaxis()->SetBinLabel(15,"Calculate all correlations vs M");
df23c5ae 1686 fIntFlowFlags->GetXaxis()->SetBinLabel(16,"fMultiplicityIs");
d9e6d8bb 1687 fIntFlowFlags->GetXaxis()->SetBinLabel(17,"fExactNoRPs");
1db7eced 1688 fIntFlowFlags->GetXaxis()->SetBinLabel(18,"fUse2DHistograms");
1689 fIntFlowFlags->GetXaxis()->SetBinLabel(19,"fFillProfilesVsMUsingWeights");
1690 fIntFlowFlags->GetXaxis()->SetBinLabel(20,"fUseQvectorTerms");
489d5531 1691 fIntFlowList->Add(fIntFlowFlags);
1692
1693 // b) Book event-by-event quantities:
1694 // Re[Q_{m*n,k}], Im[Q_{m*n,k}] and S_{p,k}^M:
e1d101a6 1695 fReQ = new TMatrixD(12,9);
1696 fImQ = new TMatrixD(12,9);
1268c371 1697 fSpk = new TMatrixD(8,9);
489d5531 1698 // average correlations <2>, <4>, <6> and <8> for single event (bining is the same as in fIntFlowCorrelationsPro and fIntFlowCorrelationsHist):
1699 TString intFlowCorrelationsEBEName = "fIntFlowCorrelationsEBE";
1700 intFlowCorrelationsEBEName += fAnalysisLabel->Data();
1701 fIntFlowCorrelationsEBE = new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
1702 // weights for average correlations <2>, <4>, <6> and <8> for single event:
1703 TString intFlowEventWeightsForCorrelationsEBEName = "fIntFlowEventWeightsForCorrelationsEBE";
1704 intFlowEventWeightsForCorrelationsEBEName += fAnalysisLabel->Data();
1705 fIntFlowEventWeightsForCorrelationsEBE = new TH1D(intFlowEventWeightsForCorrelationsEBEName.Data(),intFlowEventWeightsForCorrelationsEBEName.Data(),4,0,4);
1706 // average all correlations for single event (bining is the same as in fIntFlowCorrelationsAllPro and fIntFlowCorrelationsAllHist):
1707 TString intFlowCorrelationsAllEBEName = "fIntFlowCorrelationsAllEBE";
1708 intFlowCorrelationsAllEBEName += fAnalysisLabel->Data();
403e3389 1709 fIntFlowCorrelationsAllEBE = new TH1D(intFlowCorrelationsAllEBEName.Data(),intFlowCorrelationsAllEBEName.Data(),64,0,64);
489d5531 1710 // average correction terms for non-uniform acceptance for single event
1711 // (binning is the same as in fIntFlowCorrectionTermsForNUAPro[2] and fIntFlowCorrectionTermsForNUAHist[2]):
1712 TString fIntFlowCorrectionTermsForNUAEBEName = "fIntFlowCorrectionTermsForNUAEBE";
1713 fIntFlowCorrectionTermsForNUAEBEName += fAnalysisLabel->Data();
1714 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
1715 {
b92ea2b9 1716 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);
489d5531 1717 }
0328db2d 1718 // event weights for terms for non-uniform acceptance:
1719 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName = "fIntFlowEventWeightForCorrectionTermsForNUAEBE";
1720 fIntFlowEventWeightForCorrectionTermsForNUAEBEName += fAnalysisLabel->Data();
1721 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
1722 {
b92ea2b9 1723 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
0328db2d 1724 }
489d5531 1725 // c) Book profiles: // to be improved (comment)
1726 // profile to hold average multiplicities and number of events for events with nRP>=0, nRP>=1, ... , and nRP>=8:
1727 TString avMultiplicityName = "fAvMultiplicity";
1728 avMultiplicityName += fAnalysisLabel->Data();
403e3389 1729 fAvMultiplicity = new TProfile(avMultiplicityName.Data(),"Average multiplicities of reference particles (RPs)",9,0,9);
489d5531 1730 fAvMultiplicity->SetTickLength(-0.01,"Y");
1731 fAvMultiplicity->SetMarkerStyle(25);
1732 fAvMultiplicity->SetLabelSize(0.05);
1733 fAvMultiplicity->SetLabelOffset(0.02,"Y");
403e3389 1734 fAvMultiplicity->SetYTitle("Average multiplicity");
489d5531 1735 (fAvMultiplicity->GetXaxis())->SetBinLabel(1,"all evts");
1736 (fAvMultiplicity->GetXaxis())->SetBinLabel(2,"n_{RP} #geq 1");
1737 (fAvMultiplicity->GetXaxis())->SetBinLabel(3,"n_{RP} #geq 2");
1738 (fAvMultiplicity->GetXaxis())->SetBinLabel(4,"n_{RP} #geq 3");
1739 (fAvMultiplicity->GetXaxis())->SetBinLabel(5,"n_{RP} #geq 4");
1740 (fAvMultiplicity->GetXaxis())->SetBinLabel(6,"n_{RP} #geq 5");
1741 (fAvMultiplicity->GetXaxis())->SetBinLabel(7,"n_{RP} #geq 6");
1742 (fAvMultiplicity->GetXaxis())->SetBinLabel(8,"n_{RP} #geq 7");
1743 (fAvMultiplicity->GetXaxis())->SetBinLabel(9,"n_{RP} #geq 8");
1744 fIntFlowProfiles->Add(fAvMultiplicity);
b40a910e 1745 // Average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with wrong errors!):
1746 TString correlationFlag[4] = {"#LT#LT2#GT#GT","#LT#LT4#GT#GT","#LT#LT6#GT#GT","#LT#LT8#GT#GT"};
489d5531 1747 TString intFlowCorrelationsProName = "fIntFlowCorrelationsPro";
1748 intFlowCorrelationsProName += fAnalysisLabel->Data();
1749 fIntFlowCorrelationsPro = new TProfile(intFlowCorrelationsProName.Data(),"Average correlations for all events",4,0,4,"s");
b40a910e 1750 fIntFlowCorrelationsPro->Sumw2();
489d5531 1751 fIntFlowCorrelationsPro->SetTickLength(-0.01,"Y");
1752 fIntFlowCorrelationsPro->SetMarkerStyle(25);
1753 fIntFlowCorrelationsPro->SetLabelSize(0.06);
1754 fIntFlowCorrelationsPro->SetLabelOffset(0.01,"Y");
68a3b4b1 1755 for(Int_t b=0;b<4;b++)
b3dacf6b 1756 {
68a3b4b1 1757 (fIntFlowCorrelationsPro->GetXaxis())->SetBinLabel(b+1,correlationFlag[b].Data());
b3dacf6b 1758 }
489d5531 1759 fIntFlowProfiles->Add(fIntFlowCorrelationsPro);
b40a910e 1760 // Average correlations squared <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> for all events:
1761 TString squaredCorrelationFlag[4] = {"#LT#LT2#GT^{2}#GT","#LT#LT4#GT^{2}#GT","#LT#LT6#GT^{2}#GT","#LT#LT8#GT^{2}#GT"};
1762 TString intFlowSquaredCorrelationsProName = "fIntFlowSquaredCorrelationsPro";
1763 intFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
1764 fIntFlowSquaredCorrelationsPro = new TProfile(intFlowSquaredCorrelationsProName.Data(),"Average squared correlations for all events",4,0,4,"s");
1765 fIntFlowSquaredCorrelationsPro->Sumw2();
1766 fIntFlowSquaredCorrelationsPro->SetTickLength(-0.01,"Y");
1767 fIntFlowSquaredCorrelationsPro->SetMarkerStyle(25);
1768 fIntFlowSquaredCorrelationsPro->SetLabelSize(0.06);
1769 fIntFlowSquaredCorrelationsPro->SetLabelOffset(0.01,"Y");
1770 for(Int_t b=0;b<4;b++)
1771 {
1772 (fIntFlowSquaredCorrelationsPro->GetXaxis())->SetBinLabel(b+1,squaredCorrelationFlag[b].Data());
1773 }
1774 fIntFlowProfiles->Add(fIntFlowSquaredCorrelationsPro);
b3dacf6b 1775 if(fCalculateCumulantsVsM)
1776 {
1777 for(Int_t ci=0;ci<4;ci++) // correlation index
1778 {
b40a910e 1779 // average correlations <<2>>, <<4>>, <<6>> and <<8>> versus multiplicity for all events (with wrong errors):
b3dacf6b 1780 TString intFlowCorrelationsVsMProName = "fIntFlowCorrelationsVsMPro";
1781 intFlowCorrelationsVsMProName += fAnalysisLabel->Data();
1782 fIntFlowCorrelationsVsMPro[ci] = new TProfile(Form("%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
1783 Form("%s vs multiplicity",correlationFlag[ci].Data()),
b40a910e 1784 fnBinsMult,fMinMult,fMaxMult,"s");
1785 fIntFlowCorrelationsVsMPro[ci]->Sumw2();
b3dacf6b 1786 fIntFlowCorrelationsVsMPro[ci]->GetYaxis()->SetTitle(correlationFlag[ci].Data());
df23c5ae 1787 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1788 {
1789 fIntFlowCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# RPs");
1790 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1791 {
1792 fIntFlowCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
1793 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1794 {
1795 fIntFlowCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# POIs");
1796 }
b3dacf6b 1797 fIntFlowProfiles->Add(fIntFlowCorrelationsVsMPro[ci]);
b40a910e 1798 // average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> versus multiplicity for all events:
1799 TString intFlowSquaredCorrelationsVsMProName = "fIntFlowSquaredCorrelationsVsMPro";
1800 intFlowSquaredCorrelationsVsMProName += fAnalysisLabel->Data();
1801 fIntFlowSquaredCorrelationsVsMPro[ci] = new TProfile(Form("%s, %s",intFlowSquaredCorrelationsVsMProName.Data(),squaredCorrelationFlag[ci].Data()),
1802 Form("%s vs multiplicity",squaredCorrelationFlag[ci].Data()),
1803 fnBinsMult,fMinMult,fMaxMult,"s");
1804 fIntFlowSquaredCorrelationsVsMPro[ci]->Sumw2();
1805 fIntFlowSquaredCorrelationsVsMPro[ci]->GetYaxis()->SetTitle(squaredCorrelationFlag[ci].Data());
df23c5ae 1806 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1807 {
1808 fIntFlowSquaredCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# RPs");
1809 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1810 {
1811 fIntFlowSquaredCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
1812 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1813 {
1814 fIntFlowSquaredCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# POIs");
1815 }
b40a910e 1816 fIntFlowProfiles->Add(fIntFlowSquaredCorrelationsVsMPro[ci]);
b3dacf6b 1817 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
1818 } // end of if(fCalculateCumulantsVsM)
489d5531 1819 // averaged all correlations for all events (with wrong errors!):
1820 TString intFlowCorrelationsAllProName = "fIntFlowCorrelationsAllPro";
1821 intFlowCorrelationsAllProName += fAnalysisLabel->Data();
403e3389 1822 fIntFlowCorrelationsAllPro = new TProfile(intFlowCorrelationsAllProName.Data(),"Average all correlations for all events",64,0,64);
b84464d3 1823 fIntFlowCorrelationsAllPro->Sumw2();
489d5531 1824 fIntFlowCorrelationsAllPro->SetTickLength(-0.01,"Y");
1825 fIntFlowCorrelationsAllPro->SetMarkerStyle(25);
1826 fIntFlowCorrelationsAllPro->SetLabelSize(0.03);
1827 fIntFlowCorrelationsAllPro->SetLabelOffset(0.01,"Y");
1828 // 2-p correlations:
403e3389 1829 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(1,"#LT#LT2#GT#GT_{n|n}");
1830 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(2,"#LT#LT2#GT#GT_{2n|2n}");
1831 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(3,"#LT#LT2#GT#GT_{3n|3n}");
1832 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(4,"#LT#LT2#GT#GT_{4n|4n}");
489d5531 1833 // 3-p correlations:
403e3389 1834 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(6,"#LT#LT3#GT#GT_{2n|n,n}");
1835 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(7,"#LT#LT3#GT#GT_{3n|2n,n}");
1836 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(8,"#LT#LT3#GT#GT_{4n|2n,2n}");
1837 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(9,"#LT#LT3#GT#GT_{4n|3n,n}");
489d5531 1838 // 4-p correlations:
403e3389 1839 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(11,"#LT#LT4#GT#GT_{n,n|n,n}");
1840 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(12,"#LT#LT4#GT#GT_{2n,n|2n,n}");
1841 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(13,"#LT#LT4#GT#GT_{2n,2n|2n,2n}");
1842 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(14,"#LT#LT4#GT#GT_{3n|n,n,n}");
1843 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(15,"#LT#LT4#GT#GT_{3n,n|3n,n}");
1844 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(16,"#LT#LT4#GT#GT_{3n,n|2n,2n}");
1845 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(17,"#LT#LT4#GT#GT_{4n|2n,n,n}");
489d5531 1846 // 5-p correlations:
403e3389 1847 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(19,"#LT#LT5#GT#GT_{2n,n|n,n,n}");
1848 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(20,"#LT#LT5#GT#GT_{2n,2n|2n,n,n}");
1849 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(21,"#LT#LT5#GT#GT_{3n,n|2n,n,n}");
1850 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(22,"#LT#LT5#GT#GT_{4n|n,n,n,n}");
489d5531 1851 // 6-p correlations:
403e3389 1852 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(24,"#LT#LT6#GT#GT_{n,n,n|n,n,n}");
1853 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(25,"#LT#LT6#GT#GT_{2n,n,n|2n,n,n}");
1854 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(26,"#LT#LT6#GT#GT_{2n,2n|n,n,n,n}");
1855 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(27,"#LT#LT6#GT#GT_{3n,n|n,n,n,n}");
489d5531 1856 // 7-p correlations:
403e3389 1857 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(29,"#LT#LT7#GT#GT_{2n,n,n|n,n,n,n}");
489d5531 1858 // 8-p correlations:
403e3389 1859 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(31,"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}");
b84464d3 1860 // EXTRA correlations for v3{5} study:
403e3389 1861 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(33,"#LT#LT4#GT#GT_{4n,2n|3n,3n}");
1862 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(34,"#LT#LT5#GT#GT_{3n,3n|2n,2n,2n}");
b84464d3 1863 // EXTRA correlations for Teaney-Yan study:
403e3389 1864 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(35,"#LT#LT2#GT#GT_{5n|5n}");
1865 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(36,"#LT#LT2#GT#GT_{6n|6n}");
1866 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(37,"#LT#LT3#GT#GT_{5n|3n,2n}");
1867 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(38,"#LT#LT3#GT#GT_{5n|4n,1n}");
1868 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(39,"#LT#LT3#GT#GT_{6n|3n,3n}");
1869 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(40,"#LT#LT3#GT#GT_{6n|4n,2n}");
1870 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(41,"#LT#LT3#GT#GT_{6n|5n,1n}");
1871 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(42,"#LT#LT4#GT#GT_{6n|3n,2n,1n}");
1872 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(43,"#LT#LT4#GT#GT_{3n,2n|3n,2n}");
1873 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(44,"#LT#LT4#GT#GT_{4n,1n|3n,2n}");
1874 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(45,"#LT#LT4#GT#GT_{3n,3n|3n,3n}");
1875 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(46,"#LT#LT4#GT#GT_{4n,2n|3n,3n}");
1876 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(47,"#LT#LT4#GT#GT_{5n,1n|3n,3n}");
1877 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(48,"#LT#LT4#GT#GT_{4n,2n|4n,2n}");
1878 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(49,"#LT#LT4#GT#GT_{5n,1n|4n,2n}");
1879 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(50,"#LT#LT4#GT#GT_{5n|3n,1n,1n}");
1880 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(51,"#LT#LT4#GT#GT_{5n|2n,2n,1n}");
1881 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(52,"#LT#LT4#GT#GT_{5n,1n|5n,1n}");
1882 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(53,"#LT#LT5#GT#GT_{3n,3n|3n,2n,1n}");
1883 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(54,"#LT#LT5#GT#GT_{4n,2n|3n,2n,1n}");
1884 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(55,"#LT#LT5#GT#GT_{3n,2n|3n,1n,1n}");
1885 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(56,"#LT#LT5#GT#GT_{3n,2n|2n,2n,1n}");
1886 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(57,"#LT#LT5#GT#GT_{5n,1n|3n,2n,1n}");
1887 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(58,"#LT#LT6#GT#GT_{3n,2n,1n|3n,2n,1n}");
1888 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(59,"#LT#LT4#GT#GT_{6n|4n,1n,1n}");
1889 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(60,"#LT#LT4#GT#GT_{6n|2n,2n,2n}");
1890 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(61,"#LT#LT5#GT#GT_{6n|2n,2n,1n,1n}");
1891 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(62,"#LT#LT5#GT#GT_{4n,1n,1n|3n,3n}");
1892 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(63,"#LT#LT6#GT#GT_{3n,3n|2n,2n,1n,1n}");
489d5531 1893 fIntFlowProfiles->Add(fIntFlowCorrelationsAllPro);
3435cacb 1894 // average all correlations versus multiplicity (errors via Sumw2 - to be improved):
1895 if(fCalculateAllCorrelationsVsM)
1896 {
1897 // 2-p correlations vs M:
1898 fIntFlowCorrelationsAllVsMPro[0] = new TProfile("two1n1n","#LT#LT2#GT#GT_{n|n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1899 fIntFlowCorrelationsAllVsMPro[1] = new TProfile("two2n2n","#LT#LT2#GT#GT_{2n|2n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1900 fIntFlowCorrelationsAllVsMPro[2] = new TProfile("two3n3n","#LT#LT2#GT#GT_{3n|3n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1901 fIntFlowCorrelationsAllVsMPro[3] = new TProfile("two4n4n","#LT#LT2#GT#GT_{4n|4n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1902 // 3-p correlations vs M:
1903 fIntFlowCorrelationsAllVsMPro[5] = new TProfile("three2n1n1n","#LT#LT3#GT#GT_{2n|n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1904 fIntFlowCorrelationsAllVsMPro[6] = new TProfile("three3n2n1n","#LT#LT3#GT#GT_{3n|2n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1905 fIntFlowCorrelationsAllVsMPro[7] = new TProfile("three4n2n2n","#LT#LT3#GT#GT_{4n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1906 fIntFlowCorrelationsAllVsMPro[8] = new TProfile("three4n3n1n","#LT#LT3#GT#GT_{4n|3n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1907 // 4-p correlations vs M:
1908 fIntFlowCorrelationsAllVsMPro[10] = new TProfile("four1n1n1n1n","#LT#LT4#GT#GT_{n,n|n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1909 fIntFlowCorrelationsAllVsMPro[11] = new TProfile("four2n1n2n1n","#LT#LT4#GT#GT_{2n,n|2n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1910 fIntFlowCorrelationsAllVsMPro[12] = new TProfile("four2n2n2n2n","#LT#LT4#GT#GT_{2n,2n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1911 fIntFlowCorrelationsAllVsMPro[13] = new TProfile("four3n1n1n1n","#LT#LT4#GT#GT_{3n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1912 fIntFlowCorrelationsAllVsMPro[14] = new TProfile("four3n1n3n1n","#LT#LT4#GT#GT_{3n,n|3n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1913 fIntFlowCorrelationsAllVsMPro[15] = new TProfile("four3n1n2n2n","#LT#LT4#GT#GT_{3n,n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1914 fIntFlowCorrelationsAllVsMPro[16] = new TProfile("four4n2n1n1n","#LT#LT4#GT#GT_{4n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1915 // 5-p correlations vs M:
403e3389 1916 fIntFlowCorrelationsAllVsMPro[18] = new TProfile("five2n1n1n1n1n","#LT#LT5#GT#GT_{2n,n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1917 fIntFlowCorrelationsAllVsMPro[19] = new TProfile("five2n2n2n1n1n","#LT#LT5#GT#GT_{2n,2n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1918 fIntFlowCorrelationsAllVsMPro[20] = new TProfile("five3n1n2n1n1n","#LT#LT5#GT#GT_{3n,n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1919 fIntFlowCorrelationsAllVsMPro[21] = new TProfile("five4n1n1n1n1n","#LT#LT5#GT#GT_{4n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1920 // 6-p correlations vs M:
1921 fIntFlowCorrelationsAllVsMPro[23] = new TProfile("six1n1n1n1n1n1n","#LT#LT6#GT#GT_{n,n,n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1922 fIntFlowCorrelationsAllVsMPro[24] = new TProfile("six2n1n1n2n1n1n","#LT#LT6#GT#GT_{2n,n,n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1923 fIntFlowCorrelationsAllVsMPro[25] = new TProfile("six2n2n1n1n1n1n","#LT#LT6#GT#GT_{2n,2n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1924 fIntFlowCorrelationsAllVsMPro[26] = new TProfile("six3n1n1n1n1n1n","#LT#LT6#GT#GT_{3n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1925 // 7-p correlations vs M:
1926 fIntFlowCorrelationsAllVsMPro[28] = new TProfile("seven2n1n1n1n1n1n1n","#LT#LT7#GT#GT_{2n,n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1927 // 8-p correlations vs M:
1928 fIntFlowCorrelationsAllVsMPro[30] = new TProfile("eight1n1n1n1n1n1n1n1n","#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1929 // EXTRA correlations vs M for v3{5} study (to be improved - put them in a right order somewhere):
3435cacb 1930 fIntFlowCorrelationsAllVsMPro[32] = new TProfile("four4n2n3n3n","#LT#LT4#GT#GT_{4n,2n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1931 fIntFlowCorrelationsAllVsMPro[33] = new TProfile("five3n3n2n2n2n","#LT#LT5#GT#GT_{3n,3n|2n,2n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1932 // EXTRA correlations vs M for Teaney-Yan study (to be improved - put them in a right order somewhere):
1933 fIntFlowCorrelationsAllVsMPro[34] = new TProfile("two5n5n","#LT#LT2#GT#GT_{5n|5n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1934 fIntFlowCorrelationsAllVsMPro[35] = new TProfile("two6n6n","#LT#LT2#GT#GT_{6n|6n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1935 fIntFlowCorrelationsAllVsMPro[36] = new TProfile("three5n3n2n","#LT#LT3#GT#GT_{5n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1936 fIntFlowCorrelationsAllVsMPro[37] = new TProfile("three5n4n1n","#LT#LT3#GT#GT_{5n|4n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1937 fIntFlowCorrelationsAllVsMPro[38] = new TProfile("three6n3n3n","#LT#LT3#GT#GT_{6n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1938 fIntFlowCorrelationsAllVsMPro[39] = new TProfile("three6n4n2n","#LT#LT3#GT#GT_{6n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1939 fIntFlowCorrelationsAllVsMPro[40] = new TProfile("three6n5n1n","#LT#LT3#GT#GT_{6n|5n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1940 fIntFlowCorrelationsAllVsMPro[41] = new TProfile("four6n3n2n1n","#LT#LT4#GT#GT_{6n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1941 fIntFlowCorrelationsAllVsMPro[42] = new TProfile("four3n2n3n2n","#LT#LT4#GT#GT_{3n,2n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1942 fIntFlowCorrelationsAllVsMPro[43] = new TProfile("four4n1n3n2n","#LT#LT4#GT#GT_{4n,1n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1943 fIntFlowCorrelationsAllVsMPro[44] = new TProfile("four3n3n3n3n","#LT#LT4#GT#GT_{3n,3n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1944 fIntFlowCorrelationsAllVsMPro[45] = new TProfile("four4n2n3n3n","#LT#LT4#GT#GT_{4n,2n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1945 fIntFlowCorrelationsAllVsMPro[46] = new TProfile("four5n1n3n3n","#LT#LT4#GT#GT_{5n,1n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1946 fIntFlowCorrelationsAllVsMPro[47] = new TProfile("four4n2n4n2n","#LT#LT4#GT#GT_{4n,2n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1947 fIntFlowCorrelationsAllVsMPro[48] = new TProfile("four5n1n4n2n","#LT#LT4#GT#GT_{5n,1n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1948 fIntFlowCorrelationsAllVsMPro[49] = new TProfile("four5n3n1n1n","#LT#LT4#GT#GT_{5n|3n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1949 fIntFlowCorrelationsAllVsMPro[50] = new TProfile("four5n2n2n1n","#LT#LT4#GT#GT_{5n|2n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1950 fIntFlowCorrelationsAllVsMPro[51] = new TProfile("four5n1n5n1n","#LT#LT4#GT#GT_{5n,1n|5n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1951 fIntFlowCorrelationsAllVsMPro[52] = new TProfile("five3n3n3n2n1n","#LT#LT5#GT#GT_{3n,3n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1952 fIntFlowCorrelationsAllVsMPro[53] = new TProfile("five4n2n3n2n1n","#LT#LT5#GT#GT_{4n,2n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1953 fIntFlowCorrelationsAllVsMPro[54] = new TProfile("five3n2n3n1n1n","#LT#LT5#GT#GT_{3n,2n|3n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1954 fIntFlowCorrelationsAllVsMPro[55] = new TProfile("five3n2n2n2n1n","#LT#LT5#GT#GT_{3n,2n|2n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1955 fIntFlowCorrelationsAllVsMPro[56] = new TProfile("five5n1n3n2n1n","#LT#LT5#GT#GT_{5n,1n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1956 fIntFlowCorrelationsAllVsMPro[57] = new TProfile("six3n2n1n3n2n1n","#LT#LT6#GT#GT_{3n,2n,1n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
403e3389 1957 fIntFlowCorrelationsAllVsMPro[58] = new TProfile("four6n4n1n1n","#LT#LT4#GT#GT_{6n|4n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
403e3389 1958 fIntFlowCorrelationsAllVsMPro[59] = new TProfile("four6n2n2n2n","#LT#LT4#GT#GT_{6n|2n,2n,2n}",fnBinsMult,fMinMult,fMaxMult);
403e3389 1959 fIntFlowCorrelationsAllVsMPro[60] = new TProfile("five6n2n2n1n1n","#LT#LT5#GT#GT_{6n|2n,2n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
403e3389 1960 fIntFlowCorrelationsAllVsMPro[61] = new TProfile("five4n1n1n3n3n","#LT#LT5#GT#GT_{4n,1n,1n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
403e3389 1961 fIntFlowCorrelationsAllVsMPro[62] = new TProfile("six3n3n2n2n1n1n","#LT#LT6#GT#GT_{3n,3n|2n,2n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
3842bdcd 1962 for(Int_t n=0;n<63;n++)
1963 {
1964 if(fIntFlowCorrelationsAllVsMPro[n])
1965 {
1966 fIntFlowCorrelationsAllVsMPro[n]->Sumw2();
df23c5ae 1967 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1968 {
1969 fIntFlowCorrelationsAllVsMPro[n]->GetXaxis()->SetTitle("# RPs");
1970 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1971 {
1972 fIntFlowCorrelationsAllVsMPro[n]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
1973 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1974 {
1975 fIntFlowCorrelationsAllVsMPro[n]->GetXaxis()->SetTitle("# POIs");
1976 }
3842bdcd 1977 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[n]);
1978 } // end of if(fIntFlowCorrelationsAllVsMPro[n])
1979 } // end of for(Int_t n=0;n<63;n++)
3435cacb 1980 } // end of if(fCalculateAllCorrelationsVsM)
489d5531 1981 // when particle weights are used some extra correlations appear:
403e3389 1982 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 1983 {
1984 TString intFlowExtraCorrelationsProName = "fIntFlowExtraCorrelationsPro";
1985 intFlowExtraCorrelationsProName += fAnalysisLabel->Data();
1986 fIntFlowExtraCorrelationsPro = new TProfile(intFlowExtraCorrelationsProName.Data(),"Average extra correlations for all events",100,0,100,"s");
1987 fIntFlowExtraCorrelationsPro->SetTickLength(-0.01,"Y");
1988 fIntFlowExtraCorrelationsPro->SetMarkerStyle(25);
1989 fIntFlowExtraCorrelationsPro->SetLabelSize(0.03);
1990 fIntFlowExtraCorrelationsPro->SetLabelOffset(0.01,"Y");
1991 // extra 2-p correlations:
1992 (fIntFlowExtraCorrelationsPro->GetXaxis())->SetBinLabel(1,"<<w1^3 w2 cos(n*(phi1-phi2))>>");
1993 (fIntFlowExtraCorrelationsPro->GetXaxis())->SetBinLabel(2,"<<w1 w2 w3^2 cos(n*(phi1-phi2))>>");
1994 fIntFlowProfiles->Add(fIntFlowExtraCorrelationsPro);
403e3389 1995 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 1996 // average product of correlations <2>, <4>, <6> and <8>:
403e3389 1997 TString productFlag[6] = {"#LT#LT2#GT#LT4#GT#GT","#LT#LT2#GT#LT6#GT#GT","#LT#LT2#GT#LT8#GT#GT",
1998 "#LT#LT4#GT#LT6#GT#GT","#LT#LT4#GT#LT8#GT#GT","#LT#LT6#GT#LT8#GT#GT"};
489d5531 1999 TString intFlowProductOfCorrelationsProName = "fIntFlowProductOfCorrelationsPro";
2000 intFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
2001 fIntFlowProductOfCorrelationsPro = new TProfile(intFlowProductOfCorrelationsProName.Data(),"Average products of correlations",6,0,6);
2002 fIntFlowProductOfCorrelationsPro->SetTickLength(-0.01,"Y");
2003 fIntFlowProductOfCorrelationsPro->SetMarkerStyle(25);
2004 fIntFlowProductOfCorrelationsPro->SetLabelSize(0.05);
2005 fIntFlowProductOfCorrelationsPro->SetLabelOffset(0.01,"Y");
68a3b4b1 2006 for(Int_t b=0;b<6;b++)
b3dacf6b 2007 {
68a3b4b1 2008 (fIntFlowProductOfCorrelationsPro->GetXaxis())->SetBinLabel(b+1,productFlag[b].Data());
b3dacf6b 2009 }
2010 fIntFlowProfiles->Add(fIntFlowProductOfCorrelationsPro);
ff70ca91 2011 // average product of correlations <2>, <4>, <6> and <8> versus multiplicity
2012 // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 2013 if(fCalculateCumulantsVsM)
2014 {
2015 TString intFlowProductOfCorrelationsVsMProName = "fIntFlowProductOfCorrelationsVsMPro";
2016 intFlowProductOfCorrelationsVsMProName += fAnalysisLabel->Data();
2017 for(Int_t pi=0;pi<6;pi++)
2018 {
2019 fIntFlowProductOfCorrelationsVsMPro[pi] = new TProfile(Form("%s, %s",intFlowProductOfCorrelationsVsMProName.Data(),productFlag[pi].Data()),
2020 Form("%s versus multiplicity",productFlag[pi].Data()),
2021 fnBinsMult,fMinMult,fMaxMult);
df23c5ae 2022 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2023 {
2024 fIntFlowProductOfCorrelationsVsMPro[pi]->GetXaxis()->SetTitle("# RPs");
2025 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2026 {
2027 fIntFlowProductOfCorrelationsVsMPro[pi]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2028 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2029 {
2030 fIntFlowProductOfCorrelationsVsMPro[pi]->GetXaxis()->SetTitle("# POIs");
2031 }
b3dacf6b 2032 fIntFlowProfiles->Add(fIntFlowProductOfCorrelationsVsMPro[pi]);
2033 } // end of for(Int_t pi=0;pi<6;pi++)
2034 } // end of if(fCalculateCumulantsVsM)
0328db2d 2035 // average product of correction terms for NUA:
2036 TString intFlowProductOfCorrectionTermsForNUAProName = "fIntFlowProductOfCorrectionTermsForNUAPro";
2037 intFlowProductOfCorrectionTermsForNUAProName += fAnalysisLabel->Data();
2038 fIntFlowProductOfCorrectionTermsForNUAPro = new TProfile(intFlowProductOfCorrectionTermsForNUAProName.Data(),"Average products of correction terms for NUA",27,0,27);
2039 fIntFlowProductOfCorrectionTermsForNUAPro->SetTickLength(-0.01,"Y");
2040 fIntFlowProductOfCorrectionTermsForNUAPro->SetMarkerStyle(25);
403e3389 2041 fIntFlowProductOfCorrectionTermsForNUAPro->SetLabelSize(0.03);
0328db2d 2042 fIntFlowProductOfCorrectionTermsForNUAPro->SetLabelOffset(0.01,"Y");
2043 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(1,"<<2><cos(#phi)>>");
2044 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(2,"<<2><sin(#phi)>>");
2045 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(3,"<<cos(#phi)><sin(#phi)>>");
2046 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(4,"Cov(<2>,<cos(#phi_{1}+#phi_{2})>)");
2047 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(5,"Cov(<2>,<sin(#phi_{1}+#phi_{2})>)");
2048 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(6,"Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2049 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(7,"Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2050 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(8,"Cov(<4>,<cos(#phi)>)");
2051 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(9,"Cov(<4>,<sin(#phi)>)");
2052 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(10,"Cov(<4>,<cos(#phi_{1}+#phi_{2})>)");
2053 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(11,"Cov(<4>,<sin(#phi_{1}+#phi_{2})>)");
2054 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(12,"Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2055 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(13,"Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2056 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(14,"Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2057 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(15,"Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2058 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(16,"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2059 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(17,"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2060 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(18,"Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2061 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(19,"Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2062 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(20,"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2063 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(21,"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2064 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(22,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2065 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(23,"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2066 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(24,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2067 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(25,"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2068 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(26,"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2069 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(27,"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2070 fIntFlowProfiles->Add(fIntFlowProductOfCorrectionTermsForNUAPro);
489d5531 2071 // average correction terms for non-uniform acceptance (with wrong errors!):
2072 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
2073 {
2074 TString intFlowCorrectionTermsForNUAProName = "fIntFlowCorrectionTermsForNUAPro";
2075 intFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
b92ea2b9 2076 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");
489d5531 2077 fIntFlowCorrectionTermsForNUAPro[sc]->SetTickLength(-0.01,"Y");
2078 fIntFlowCorrectionTermsForNUAPro[sc]->SetMarkerStyle(25);
403e3389 2079 fIntFlowCorrectionTermsForNUAPro[sc]->SetLabelSize(0.05);
489d5531 2080 fIntFlowCorrectionTermsForNUAPro[sc]->SetLabelOffset(0.01,"Y");
403e3389 2081 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(1,Form("#LT#LT%s(n(#phi_{1}))#GT#GT",sinCosFlag[sc].Data()));
2082 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(2,Form("#LT#LT%s(n(#phi_{1}+#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
2083 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(3,Form("#LT#LT%s(n(#phi_{1}-#phi_{2}-#phi_{3}))#GT#GT",sinCosFlag[sc].Data()));
2084 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(4,Form("#LT#LT%s(n(2#phi_{1}-#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
489d5531 2085 fIntFlowProfiles->Add(fIntFlowCorrectionTermsForNUAPro[sc]);
2001bc3a 2086 // versus multiplicity:
b3dacf6b 2087 if(fCalculateCumulantsVsM)
2088 {
2089 TString correctionTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
2090 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2091 {
2092 TString intFlowCorrectionTermsForNUAVsMProName = "fIntFlowCorrectionTermsForNUAVsMPro";
2093 intFlowCorrectionTermsForNUAVsMProName += fAnalysisLabel->Data();
2094 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");
2095 fIntFlowProfiles->Add(fIntFlowCorrectionTermsForNUAVsMPro[sc][ci]);
2096 }
2097 } // end of if(fCalculateCumulantsVsM)
489d5531 2098 } // end of for(Int_t sc=0;sc<2;sc++)
2099
2100 // d) Book histograms holding the final results:
2101 // average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with correct errors!):
2102 TString intFlowCorrelationsHistName = "fIntFlowCorrelationsHist";
2103 intFlowCorrelationsHistName += fAnalysisLabel->Data();
2104 fIntFlowCorrelationsHist = new TH1D(intFlowCorrelationsHistName.Data(),"Average correlations for all events",4,0,4);
2105 fIntFlowCorrelationsHist->SetTickLength(-0.01,"Y");
2106 fIntFlowCorrelationsHist->SetMarkerStyle(25);
2107 fIntFlowCorrelationsHist->SetLabelSize(0.06);
2108 fIntFlowCorrelationsHist->SetLabelOffset(0.01,"Y");
403e3389 2109 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(1,"#LT#LT2#GT#GT");
2110 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(2,"#LT#LT4#GT#GT");
2111 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(3,"#LT#LT6#GT#GT");
2112 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(4,"#LT#LT8#GT#GT");
489d5531 2113 fIntFlowResults->Add(fIntFlowCorrelationsHist);
ff70ca91 2114 // average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with correct errors!) vs M:
b3dacf6b 2115 if(fCalculateCumulantsVsM)
2116 {
2117 for(Int_t ci=0;ci<4;ci++) // correlation index
2118 {
2119 TString intFlowCorrelationsVsMHistName = "fIntFlowCorrelationsVsMHist";
2120 intFlowCorrelationsVsMHistName += fAnalysisLabel->Data();
2121 fIntFlowCorrelationsVsMHist[ci] = new TH1D(Form("%s, %s",intFlowCorrelationsVsMHistName.Data(),correlationFlag[ci].Data()),
2122 Form("%s vs multiplicity",correlationFlag[ci].Data()),
2123 fnBinsMult,fMinMult,fMaxMult);
2124 fIntFlowCorrelationsVsMHist[ci]->GetYaxis()->SetTitle(correlationFlag[ci].Data());
df23c5ae 2125 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2126 {
2127 fIntFlowCorrelationsVsMHist[ci]->GetXaxis()->SetTitle("# RPs");
2128 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2129 {
2130 fIntFlowCorrelationsVsMHist[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2131 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2132 {
2133 fIntFlowCorrelationsVsMHist[ci]->GetXaxis()->SetTitle("# POIs");
2134 }
b3dacf6b 2135 fIntFlowResults->Add(fIntFlowCorrelationsVsMHist[ci]);
2136 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
2137 } // end of if(fCalculateCumulantsVsM)
489d5531 2138 // average all correlations for all events (with correct errors!):
2139 TString intFlowCorrelationsAllHistName = "fIntFlowCorrelationsAllHist";
2140 intFlowCorrelationsAllHistName += fAnalysisLabel->Data();
8ed4edc7 2141 fIntFlowCorrelationsAllHist = new TH1D(intFlowCorrelationsAllHistName.Data(),"Average correlations for all events",34,0,34);
489d5531 2142 fIntFlowCorrelationsAllHist->SetTickLength(-0.01,"Y");
2143 fIntFlowCorrelationsAllHist->SetMarkerStyle(25);
2144 fIntFlowCorrelationsAllHist->SetLabelSize(0.03);
2145 fIntFlowCorrelationsAllHist->SetLabelOffset(0.01,"Y");
2146 // 2-p correlations:
2147 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(1,"<<2>>_{n|n}");
2148 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(2,"<<2>>_{2n|2n}");
2149 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(3,"<<2>>_{3n|3n}");
2150 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(4,"<<2>>_{4n|4n}");
2151 // 3-p correlations:
2152 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(6,"<<3>>_{2n|n,n}");
2153 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(7,"<<3>>_{3n|2n,n}");
2154 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(8,"<<3>>_{4n|2n,2n}");
2155 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(9,"<<3>>_{4n|3n,n}");
2156 // 4-p correlations:
2157 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(11,"<<4>>_{n,n|n,n}");
2158 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(12,"<<4>>_{2n,n|2n,n}");
2159 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(13,"<<4>>_{2n,2n|2n,2n}");
2160 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(14,"<<4>>_{3n|n,n,n}");
2161 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(15,"<<4>>_{3n,n|3n,n}");
2162 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(16,"<<4>>_{3n,n|2n,2n}");
2163 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(17,"<<4>>_{4n|2n,n,n}");
2164 // 5-p correlations:
2165 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(19,"<<5>>_{2n|n,n,n,n}");
2166 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(20,"<<5>>_{2n,2n|2n,n,n}");
2167 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(21,"<<5>>_{3n,n|2n,n,n}");
2168 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(22,"<<5>>_{4n|n,n,n,n}");
2169 // 6-p correlations:
2170 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(24,"<<6>>_{n,n,n|n,n,n}");
2171 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(25,"<<6>>_{2n,n,n|2n,n,n}");
2172 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(26,"<<6>>_{2n,2n|n,n,n,n}");
2173 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(27,"<<6>>_{3n,n|n,n,n,n}");
2174 // 7-p correlations:
2175 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(29,"<<7>>_{2n,n,n|n,n,n,n}");
2176 // 8-p correlations:
2177 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(31,"<<8>>_{n,n,n,n|n,n,n,n}");
2178 fIntFlowResults->Add(fIntFlowCorrelationsAllHist);
2179 // average correction terms for non-uniform acceptance (with correct errors!):
2180 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
2181 {
2182 TString intFlowCorrectionTermsForNUAHistName = "fIntFlowCorrectionTermsForNUAHist";
2183 intFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
b92ea2b9 2184 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);
489d5531 2185 fIntFlowCorrectionTermsForNUAHist[sc]->SetTickLength(-0.01,"Y");
2186 fIntFlowCorrectionTermsForNUAHist[sc]->SetMarkerStyle(25);
403e3389 2187 fIntFlowCorrectionTermsForNUAHist[sc]->SetLabelSize(0.05);
489d5531 2188 fIntFlowCorrectionTermsForNUAHist[sc]->SetLabelOffset(0.01,"Y");
b92ea2b9 2189 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(1,Form("#LT#LT%s(n(#phi_{1}))#GT#GT",sinCosFlag[sc].Data()));
403e3389 2190 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(2,Form("#LT#LT%s(n(#phi_{1}+#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
2191 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(3,Form("#LT#LT%s(n(#phi_{1}-#phi_{2}-#phi_{3}))#GT#GT",sinCosFlag[sc].Data()));
2192 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(4,Form("#LT#LT%s(n(2#phi_{1}-#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
489d5531 2193 fIntFlowResults->Add(fIntFlowCorrectionTermsForNUAHist[sc]);
2194 } // end of for(Int_t sc=0;sc<2;sc++)
2195 // covariances (multiplied with weight dependent prefactor):
2196 TString intFlowCovariancesName = "fIntFlowCovariances";
2197 intFlowCovariancesName += fAnalysisLabel->Data();
2198 fIntFlowCovariances = new TH1D(intFlowCovariancesName.Data(),"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2199 fIntFlowCovariances->SetLabelSize(0.04);
2200 fIntFlowCovariances->SetMarkerStyle(25);
403e3389 2201 (fIntFlowCovariances->GetXaxis())->SetBinLabel(1,"Cov(#LT2#GT,#LT4#GT)");
2202 (fIntFlowCovariances->GetXaxis())->SetBinLabel(2,"Cov(#LT2#GT,#LT6#GT)");
2203 (fIntFlowCovariances->GetXaxis())->SetBinLabel(3,"Cov(#LT2#GT,#LT8#GT)");
2204 (fIntFlowCovariances->GetXaxis())->SetBinLabel(4,"Cov(#LT4#GT,#LT6#GT)");
2205 (fIntFlowCovariances->GetXaxis())->SetBinLabel(5,"Cov(#LT4#GT,#LT8#GT)");
2206 (fIntFlowCovariances->GetXaxis())->SetBinLabel(6,"Cov(#LT6#GT,#LT8#GT)");
489d5531 2207 fIntFlowResults->Add(fIntFlowCovariances);
2208 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8>:
2209 TString intFlowSumOfEventWeightsName = "fIntFlowSumOfEventWeights";
2210 intFlowSumOfEventWeightsName += fAnalysisLabel->Data();
2211 for(Int_t power=0;power<2;power++)
2212 {
2213 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);
403e3389 2214 fIntFlowSumOfEventWeights[power]->SetLabelSize(0.04);
489d5531 2215 fIntFlowSumOfEventWeights[power]->SetMarkerStyle(25);
2216 if(power == 0)
2217 {
403e3389 2218 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT}");
2219 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT4#GT}");
2220 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT6#GT}");
2221 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT8#GT}");
489d5531 2222 } else if (power == 1)
2223 {
403e3389 2224 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT}^{2}");
2225 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT4#GT}^{2}");
2226 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT6#GT}^{2}");
2227 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT8#GT}^{2}");
489d5531 2228 }
2229 fIntFlowResults->Add(fIntFlowSumOfEventWeights[power]);
2230 }
2231 // sum of products of event weights for correlations <2>, <4>, <6> and <8>:
2232 TString intFlowSumOfProductOfEventWeightsName = "fIntFlowSumOfProductOfEventWeights";
2233 intFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
2234 fIntFlowSumOfProductOfEventWeights = new TH1D(intFlowSumOfProductOfEventWeightsName.Data(),"Sum of product of event weights for correlations",6,0,6);
403e3389 2235 fIntFlowSumOfProductOfEventWeights->SetLabelSize(0.04);
489d5531 2236 fIntFlowSumOfProductOfEventWeights->SetMarkerStyle(25);
403e3389 2237 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT4#GT}");
2238 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT6#GT}");
2239 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT8#GT}");
2240 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LT6#GT}");
2241 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(5,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LT8#GT}");
2242 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(6,"#sum_{i=1}^{N} w_{#LT6#GT} w_{#LT8#GT}");
489d5531 2243 fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeights);
ff70ca91 2244 // final result for covariances of correlations (multiplied with weight dependent prefactor) versus M
2245 // [0=Cov(2,4),1=Cov(2,6),2=Cov(2,8),3=Cov(4,6),4=Cov(4,8),5=Cov(6,8)]:
b3dacf6b 2246 if(fCalculateCumulantsVsM)
ff70ca91 2247 {
b3dacf6b 2248 TString intFlowCovariancesVsMName = "fIntFlowCovariancesVsM";
2249 intFlowCovariancesVsMName += fAnalysisLabel->Data();
2250 TString covarianceFlag[6] = {"Cov(<2>,<4>)","Cov(<2>,<6>)","Cov(<2>,<8>)","Cov(<4>,<6>)","Cov(<4>,<8>)","Cov(<6>,<8>)"};
2251 for(Int_t ci=0;ci<6;ci++)
2252 {
2253 fIntFlowCovariancesVsM[ci] = new TH1D(Form("%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2254 Form("%s vs multiplicity",covarianceFlag[ci].Data()),
2255 fnBinsMult,fMinMult,fMaxMult);
2256 fIntFlowCovariancesVsM[ci]->GetYaxis()->SetTitle(covarianceFlag[ci].Data());
df23c5ae 2257 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2258 {
2259 fIntFlowCovariancesVsM[ci]->GetXaxis()->SetTitle("# RPs");
2260 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2261 {
2262 fIntFlowCovariancesVsM[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2263 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2264 {
2265 fIntFlowCovariancesVsM[ci]->GetXaxis()->SetTitle("# POIs");
2266 }
b3dacf6b 2267 fIntFlowResults->Add(fIntFlowCovariancesVsM[ci]);
2268 }
2269 } // end of if(fCalculateCumulantsVsM)
ff70ca91 2270 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8> versus multiplicity
2271 // [0=sum{w_{<2>}},1=sum{w_{<4>}},2=sum{w_{<6>}},3=sum{w_{<8>}}][0=linear 1,1=quadratic]:
b3dacf6b 2272 if(fCalculateCumulantsVsM)
ff70ca91 2273 {
b3dacf6b 2274 TString intFlowSumOfEventWeightsVsMName = "fIntFlowSumOfEventWeightsVsM";
2275 intFlowSumOfEventWeightsVsMName += fAnalysisLabel->Data();
2276 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>}"},
2277 {"#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}"}};
2278 for(Int_t si=0;si<4;si++)
ff70ca91 2279 {
b3dacf6b 2280 for(Int_t power=0;power<2;power++)
2281 {
2282 fIntFlowSumOfEventWeightsVsM[si][power] = new TH1D(Form("%s, %s",intFlowSumOfEventWeightsVsMName.Data(),sumFlag[power][si].Data()),
2283 Form("%s vs multiplicity",sumFlag[power][si].Data()),
2284 fnBinsMult,fMinMult,fMaxMult);
2285 fIntFlowSumOfEventWeightsVsM[si][power]->GetYaxis()->SetTitle(sumFlag[power][si].Data());
df23c5ae 2286 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2287 {
2288 fIntFlowSumOfEventWeightsVsM[si][power]->GetXaxis()->SetTitle("# RPs");
2289 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2290 {
2291 fIntFlowSumOfEventWeightsVsM[si][power]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2292 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2293 {
2294 fIntFlowSumOfEventWeightsVsM[si][power]->GetXaxis()->SetTitle("# POIs");
2295 }
b3dacf6b 2296 fIntFlowResults->Add(fIntFlowSumOfEventWeightsVsM[si][power]);
2297 } // end of for(Int_t power=0;power<2;power++)
2298 } // end of for(Int_t si=0;si<4;si++)
2299 } // end of if(fCalculateCumulantsVsM)
ff70ca91 2300 // sum of products of event weights for correlations <2>, <4>, <6> and <8> vs M
2301 // [0=sum{w_{<2>}w_{<4>}},1=sum{w_{<2>}w_{<6>}},2=sum{w_{<2>}w_{<8>}},
2302 // 3=sum{w_{<4>}w_{<6>}},4=sum{w_{<4>}w_{<8>}},5=sum{w_{<6>}w_{<8>}}]:
b3dacf6b 2303 if(fCalculateCumulantsVsM)
2304 {
2305 TString intFlowSumOfProductOfEventWeightsVsMName = "fIntFlowSumOfProductOfEventWeightsVsM";
2306 intFlowSumOfProductOfEventWeightsVsMName += fAnalysisLabel->Data();
2307 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>}",
2308 "#sum_{i=1}^{N} w_{<4>} w_{<6>}","#sum_{i=1}^{N} w_{<4>} w_{<8>}","#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2309 for(Int_t pi=0;pi<6;pi++)
2310 {
2311 fIntFlowSumOfProductOfEventWeightsVsM[pi] = new TH1D(Form("%s, %s",intFlowSumOfProductOfEventWeightsVsMName.Data(),sopowFlag[pi].Data()),
2312 Form("%s versus multiplicity",sopowFlag[pi].Data()),
2313 fnBinsMult,fMinMult,fMaxMult);
df23c5ae 2314 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2315 {
2316 fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetXaxis()->SetTitle("# RPs");
2317 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2318 {
2319 fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2320 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2321 {
2322 fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetXaxis()->SetTitle("# POIs");
2323 }
b3dacf6b 2324 fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetYaxis()->SetTitle(sopowFlag[pi].Data());
2325 fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeightsVsM[pi]);
2326 } // end of for(Int_t pi=0;pi<6;pi++)
2327 } // end of if(fCalculateCumulantsVsM)
0328db2d 2328 // covariances of NUA terms (multiplied with weight dependent prefactor):
2329 TString intFlowCovariancesNUAName = "fIntFlowCovariancesNUA";
2330 intFlowCovariancesNUAName += fAnalysisLabel->Data();
2331 fIntFlowCovariancesNUA = new TH1D(intFlowCovariancesNUAName.Data(),"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2332 fIntFlowCovariancesNUA->SetLabelSize(0.04);
2333 fIntFlowCovariancesNUA->SetMarkerStyle(25);
2334 fIntFlowCovariancesNUA->GetXaxis()->SetLabelSize(0.02);
2335 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(1,"Cov(<2>,<cos(#phi)>");
2336 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(2,"Cov(<2>,<sin(#phi)>)");
2337 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(3,"Cov(<cos(#phi)>,<sin(#phi)>)");
2338 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(4,"Cov(<2>,<cos(#phi_{1}+#phi_{2})>)");
2339 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(5,"Cov(<2>,<sin(#phi_{1}+#phi_{2})>)");
2340 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(6,"Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2341 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(7,"Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2342 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(8,"Cov(<4>,<cos(#phi)>)");
2343 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(9,"Cov(<4>,<sin(#phi)>)");
2344 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(10,"Cov(<4>,<cos(#phi_{1}+#phi_{2})>)");
2345 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(11,"Cov(<4>,<sin(#phi_{1}+#phi_{2})>)");
2346 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(12,"Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2347 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(13,"Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2348 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(14,"Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2349 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(15,"Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2350 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2351 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2352 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(18,"Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2353 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(19,"Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2354 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2355 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2356 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2357 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2358 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2359 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2360 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2361 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2362 fIntFlowResults->Add(fIntFlowCovariancesNUA);
2363 // sum of linear and quadratic event weights for NUA terms:
2364 TString intFlowSumOfEventWeightsNUAName = "fIntFlowSumOfEventWeightsNUA";
2365 intFlowSumOfEventWeightsNUAName += fAnalysisLabel->Data();
2366 for(Int_t sc=0;sc<2;sc++)
2367 {
2368 for(Int_t power=0;power<2;power++)
2369 {
b92ea2b9 2370 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
0328db2d 2371 fIntFlowSumOfEventWeightsNUA[sc][power]->SetLabelSize(0.05);
2372 fIntFlowSumOfEventWeightsNUA[sc][power]->SetMarkerStyle(25);
2373 if(power == 0)
2374 {
2375 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(1,Form("#sum_{i=1}^{N} w_{<%s(#phi)>}",sinCosFlag[sc].Data()));
2376 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(2,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}+#phi_{2})>}",sinCosFlag[sc].Data()));
b92ea2b9 2377 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}",sinCosFlag[sc].Data()));
2378 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(4,Form("#sum_{i=1}^{N} w_{<%s(2#phi_{1}-#phi_{2})>}",sinCosFlag[sc].Data()));
0328db2d 2379 } else if(power == 1)
2380 {
2381 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(1,Form("#sum_{i=1}^{N} w_{<%s(#phi)>}^{2}",sinCosFlag[sc].Data()));
2382 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(2,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}+#phi_{2})>}^{2}",sinCosFlag[sc].Data()));
2383 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].Data()));
b92ea2b9 2384 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(4,Form("#sum_{i=1}^{N} w_{<%s(2#phi_{1}-#phi_{2})>}^{2}",sinCosFlag[sc].Data()));
0328db2d 2385 }
2386 fIntFlowResults->Add(fIntFlowSumOfEventWeightsNUA[sc][power]);
2387 }
2388 }
2389 // sum of products of event weights for NUA terms:
2390 TString intFlowSumOfProductOfEventWeightsNUAName = "fIntFlowSumOfProductOfEventWeightsNUA";
2391 intFlowSumOfProductOfEventWeightsNUAName += fAnalysisLabel->Data();
2392 fIntFlowSumOfProductOfEventWeightsNUA = new TH1D(intFlowSumOfProductOfEventWeightsNUAName.Data(),"Sum of product of event weights for NUA terms",27,0,27);
403e3389 2393 fIntFlowSumOfProductOfEventWeightsNUA->SetLabelSize(0.02);
0328db2d 2394 fIntFlowSumOfProductOfEventWeightsNUA->SetMarkerStyle(25);
62e36168 2395 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi)#GT}");
2396 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi)#GT}");
2397 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi)#GT}");
2398 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2399 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(5,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2400 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(6,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2401 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(7,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2402 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(8,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi)#GT}");
2403 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(9,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi)#GT}");
2404 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(10,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2405 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(11,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2406 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(12,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2407 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(13,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2408 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(14,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2409 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(15,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2410 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(16,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2411 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(17,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2412 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(18,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2413 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(19,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2414 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(20,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2415 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(21,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2416 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(22,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2417 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(23,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2418 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(24,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2419 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(25,"#sum_{i=1}^{N} w_{#LTsin(#phi_{1}+#phi_{2})#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2420 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(26,"#sum_{i=1}^{N} w_{#LTsin(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2421 (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}");
0328db2d 2422 fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeightsNUA);
b3dacf6b 2423 // Final results for reference Q-cumulants:
2424 TString cumulantFlag[4] = {"QC{2}","QC{4}","QC{6}","QC{8}"};
489d5531 2425 TString intFlowQcumulantsName = "fIntFlowQcumulants";
2426 intFlowQcumulantsName += fAnalysisLabel->Data();
b92ea2b9 2427 fIntFlowQcumulants = new TH1D(intFlowQcumulantsName.Data(),"Reference Q-cumulants",4,0,4);
b77b6434 2428 if(fPropagateErrorAlsoFromNIT)
b92ea2b9 2429 {
b77b6434 2430 fIntFlowQcumulants->SetTitle("Reference Q-cumulants (error from non-isotropic terms also propagated)");
b92ea2b9 2431 }
489d5531 2432 fIntFlowQcumulants->SetLabelSize(0.05);
2433 fIntFlowQcumulants->SetMarkerStyle(25);
68a3b4b1 2434 for(Int_t b=0;b<4;b++)
b3dacf6b 2435 {
68a3b4b1 2436 (fIntFlowQcumulants->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
b3dacf6b 2437 }
489d5531 2438 fIntFlowResults->Add(fIntFlowQcumulants);
b3dacf6b 2439 // Final results for reference Q-cumulants rebinned in M:
2440 if(fCalculateCumulantsVsM)
2441 {
2442 TString intFlowQcumulantsRebinnedInMName = "fIntFlowQcumulantsRebinnedInM";
2443 intFlowQcumulantsRebinnedInMName += fAnalysisLabel->Data();
2444 fIntFlowQcumulantsRebinnedInM = new TH1D(intFlowQcumulantsRebinnedInMName.Data(),"Reference Q-cumulants rebinned in M",4,0,4);
2445 fIntFlowQcumulantsRebinnedInM->SetLabelSize(0.05);
2446 fIntFlowQcumulantsRebinnedInM->SetMarkerStyle(25);
68a3b4b1 2447 for(Int_t b=0;b<4;b++)
b3dacf6b 2448 {
68a3b4b1 2449 (fIntFlowQcumulantsRebinnedInM->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
b3dacf6b 2450 }
2451 fIntFlowResults->Add(fIntFlowQcumulantsRebinnedInM);
2452 } // end of if(fCalculateCumulantsVsM)
b92ea2b9 2453 // Ratio between error squared: with/without non-isotropic terms:
2454 TString intFlowQcumulantsErrorSquaredRatioName = "fIntFlowQcumulantsErrorSquaredRatio";
2455 intFlowQcumulantsErrorSquaredRatioName += fAnalysisLabel->Data();
2456 fIntFlowQcumulantsErrorSquaredRatio = new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
2457 fIntFlowQcumulantsErrorSquaredRatio->SetLabelSize(0.05);
2458 fIntFlowQcumulantsErrorSquaredRatio->SetMarkerStyle(25);
2459 for(Int_t b=0;b<4;b++)
2460 {
2461 (fIntFlowQcumulantsErrorSquaredRatio->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
2462 }
2463 fIntFlowResults->Add(fIntFlowQcumulantsErrorSquaredRatio);
ff70ca91 2464 // final results for integrated Q-cumulants versus multiplicity:
b3dacf6b 2465 if(fCalculateCumulantsVsM)
2466 {
2467 TString intFlowQcumulantsVsMName = "fIntFlowQcumulantsVsM";
2468 intFlowQcumulantsVsMName += fAnalysisLabel->Data();
2469 for(Int_t co=0;co<4;co++) // cumulant order
2470 {
2471 fIntFlowQcumulantsVsM[co] = new TH1D(Form("%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
3842bdcd 2472 Form("%s vs multiplicity",cumulantFlag[co].Data()),
b3dacf6b 2473 fnBinsMult,fMinMult,fMaxMult);
df23c5ae 2474 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2475 {
2476 fIntFlowQcumulantsVsM[co]->GetXaxis()->SetTitle("# RPs");
2477 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2478 {
2479 fIntFlowQcumulantsVsM[co]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2480 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2481 {
2482 fIntFlowQcumulantsVsM[co]->GetXaxis()->SetTitle("# POIs");
2483 }
b3dacf6b 2484 fIntFlowQcumulantsVsM[co]->GetYaxis()->SetTitle(cumulantFlag[co].Data());
2485 fIntFlowResults->Add(fIntFlowQcumulantsVsM[co]);
2486 } // end of for(Int_t co=0;co<4;co++) // cumulant order
2487 } // end of if(fCalculateCumulantsVsM)
489d5531 2488 // final integrated flow estimates from Q-cumulants:
b3dacf6b 2489 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)};
489d5531 2490 TString intFlowName = "fIntFlow";
2491 intFlowName += fAnalysisLabel->Data();
2492 // integrated flow from Q-cumulants:
b3dacf6b 2493 fIntFlow = new TH1D(intFlowName.Data(),"Reference flow estimates from Q-cumulants",4,0,4);
489d5531 2494 fIntFlow->SetLabelSize(0.05);
2495 fIntFlow->SetMarkerStyle(25);
68a3b4b1 2496 for(Int_t b=0;b<4;b++)
b3dacf6b 2497 {
68a3b4b1 2498 (fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].Data());
b3dacf6b 2499 }
ff70ca91 2500 fIntFlowResults->Add(fIntFlow);
b3dacf6b 2501 // Reference flow vs M rebinned in one huge bin:
2502 if(fCalculateCumulantsVsM)
2503 {
2504 TString intFlowRebinnedInMName = "fIntFlowRebinnedInM";
2505 intFlowRebinnedInMName += fAnalysisLabel->Data();
2506 fIntFlowRebinnedInM = new TH1D(intFlowRebinnedInMName.Data(),"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
2507 fIntFlowRebinnedInM->SetLabelSize(0.05);
2508 fIntFlowRebinnedInM->SetMarkerStyle(25);
68a3b4b1 2509 for(Int_t b=0;b<4;b++)
b3dacf6b 2510 {
68a3b4b1 2511 (fIntFlowRebinnedInM->GetXaxis())->SetBinLabel(b+1,flowFlag[b].Data());
b3dacf6b 2512 }
2513 fIntFlowResults->Add(fIntFlowRebinnedInM);
2514 }
ff70ca91 2515 // integrated flow from Q-cumulants: versus multiplicity:
b3dacf6b 2516 if(fCalculateCumulantsVsM)
2517 {
2518 TString intFlowVsMName = "fIntFlowVsM";
2519 intFlowVsMName += fAnalysisLabel->Data();
2520 for(Int_t co=0;co<4;co++) // cumulant order
2521 {
2522 fIntFlowVsM[co] = new TH1D(Form("%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3842bdcd 2523 Form("%s vs multiplicity",flowFlag[co].Data()),
b3dacf6b 2524 fnBinsMult,fMinMult,fMaxMult);
df23c5ae 2525 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2526 {
2527 fIntFlowVsM[co]->GetXaxis()->SetTitle("# RPs");
2528 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2529 {
2530 fIntFlowVsM[co]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2531 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2532 {
2533 fIntFlowVsM[co]->GetXaxis()->SetTitle("# POIs");
2534 }
b3dacf6b 2535 fIntFlowVsM[co]->GetYaxis()->SetTitle(flowFlag[co].Data());
2536 fIntFlowResults->Add(fIntFlowVsM[co]);
2537 } // end of for(Int_t co=0;co<4;co++) // cumulant order
2538 } // end of if(fCalculateCumulantsVsM)
2001bc3a 2539 // quantifying detector effects effects to correlations:
2540 TString intFlowDetectorBiasName = "fIntFlowDetectorBias";
2541 intFlowDetectorBiasName += fAnalysisLabel->Data();
2542 fIntFlowDetectorBias = new TH1D(intFlowDetectorBiasName.Data(),"Quantifying detector bias",4,0,4);
2543 fIntFlowDetectorBias->SetLabelSize(0.05);
2544 fIntFlowDetectorBias->SetMarkerStyle(25);
2545 for(Int_t ci=0;ci<4;ci++)
2546 {
2547 (fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form("#frac{corrected}{measured} %s",cumulantFlag[ci].Data()));
2548 }
2549 fIntFlowResults->Add(fIntFlowDetectorBias);
2550 // quantifying detector effects to correlations versus multiplicity:
b3dacf6b 2551 if(fCalculateCumulantsVsM)
2001bc3a 2552 {
b3dacf6b 2553 TString intFlowDetectorBiasVsMName = "fIntFlowDetectorBiasVsM";
2554 intFlowDetectorBiasVsMName += fAnalysisLabel->Data();
2555 for(Int_t ci=0;ci<4;ci++) // correlation index
2556 {
2557 fIntFlowDetectorBiasVsM[ci] = new TH1D(Form("%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
3842bdcd 2558 Form("Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].Data()),
b3dacf6b 2559 fnBinsMult,fMinMult,fMaxMult);
df23c5ae 2560 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2561 {
2562 fIntFlowDetectorBiasVsM[ci]->GetXaxis()->SetTitle("# RPs");
2563 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2564 {
2565 fIntFlowDetectorBiasVsM[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2566 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2567 {
2568 fIntFlowDetectorBiasVsM[ci]->GetXaxis()->SetTitle("# POIs");
2569 }
b3dacf6b 2570 fIntFlowDetectorBiasVsM[ci]->GetYaxis()->SetTitle("#frac{corrected}{measured}");
b77b6434 2571 fIntFlowResults->Add(fIntFlowDetectorBiasVsM[ci]);
b3dacf6b 2572 } // end of for(Int_t co=0;co<4;co++) // cumulant order
2573 } // end of if(fCalculateCumulantsVsM)
1268c371 2574
489d5531 2575} // end of AliFlowAnalysisWithQCumulants::BookEverythingForIntegratedFlow()
2576
e1d101a6 2577//=======================================================================================================================
2578
df23c5ae 2579void AliFlowAnalysisWithQCumulants::BookEverythingForControlHistograms()
2580{
2581 // Book all objects for control histograms.
2582
2583 // a) Book profile to hold all flags for control histograms;
2584 // b) Book all control histograms.
2585
2586 // a) Book profile to hold all flags for control histograms:
2587 TString controlHistogramsFlagsName = "fControlHistogramsFlags";
2588 controlHistogramsFlagsName += fAnalysisLabel->Data();
1db7eced 2589 fControlHistogramsFlags = new TProfile(controlHistogramsFlagsName.Data(),"Flags for Control Histograms",2,0,2);
df23c5ae 2590 fControlHistogramsFlags->SetTickLength(-0.01,"Y");
2591 fControlHistogramsFlags->SetMarkerStyle(25);
2592 fControlHistogramsFlags->SetLabelSize(0.04);
2593 fControlHistogramsFlags->SetLabelOffset(0.02,"Y");
2594 fControlHistogramsFlags->SetStats(kFALSE);
1db7eced 2595 fControlHistogramsFlags->GetXaxis()->SetBinLabel(1,"fStoreControlHistograms");
2596 fControlHistogramsFlags->GetXaxis()->SetBinLabel(2,"fUseQvectorTerms");
df23c5ae 2597 fControlHistogramsList->Add(fControlHistogramsFlags);
2598
2599 if(!fStoreControlHistograms){return;}
2600
2601 // b) Book all control histograms:
2602 // b1) Correlation between # RPs and ref. mult. determined centrally:
2603 TString sCorrelationNoRPsVsRefMultName = "fCorrelationNoRPsVsRefMult";
2604 sCorrelationNoRPsVsRefMultName += fAnalysisLabel->Data();
2605 fCorrelationNoRPsVsRefMult = new TH2D(sCorrelationNoRPsVsRefMultName.Data(),"# RPs vs. Reference Multiplicity",fnBinsMult,fMinMult,fMaxMult,fnBinsMult,fMinMult,fMaxMult);
2606 fCorrelationNoRPsVsRefMult->SetTickLength(-0.01,"Y");
2607 fCorrelationNoRPsVsRefMult->SetLabelSize(0.04);
2608 fCorrelationNoRPsVsRefMult->SetLabelOffset(0.02,"Y");
2609 fCorrelationNoRPsVsRefMult->SetStats(kTRUE);
2610 fCorrelationNoRPsVsRefMult->GetXaxis()->SetTitle("# RPs");
2611 fCorrelationNoRPsVsRefMult->GetYaxis()->SetTitle("Reference Multiplicity");
2612 fControlHistogramsList->Add(fCorrelationNoRPsVsRefMult);
2613 // b2) Correlation between # POIs and ref. mult. determined centrally:
2614 TString sCorrelationNoPOIsVsRefMultName = "fCorrelationNoPOIsVsRefMult";
2615 sCorrelationNoPOIsVsRefMultName += fAnalysisLabel->Data();
2616 fCorrelationNoPOIsVsRefMult = new TH2D(sCorrelationNoPOIsVsRefMultName.Data(),"# POIs vs. Reference Multiplicity",fnBinsMult,fMinMult,fMaxMult,fnBinsMult,fMinMult,fMaxMult);
2617 fCorrelationNoPOIsVsRefMult->SetTickLength(-0.01,"Y");
2618 fCorrelationNoPOIsVsRefMult->SetLabelSize(0.04);
2619 fCorrelationNoPOIsVsRefMult->SetLabelOffset(0.02,"Y");
2620 fCorrelationNoPOIsVsRefMult->SetStats(kTRUE);
2621 fCorrelationNoPOIsVsRefMult->GetXaxis()->SetTitle("# POIs");
2622 fCorrelationNoPOIsVsRefMult->GetYaxis()->SetTitle("Reference Multiplicity");
2623 fControlHistogramsList->Add(fCorrelationNoPOIsVsRefMult);
2624 // b3) Correlation between # RPs and # POIs:
2625 TString sCorrelationNoRPsVsNoPOIsName = "fCorrelationNoRPsVsNoPOIs";
2626 sCorrelationNoRPsVsNoPOIsName += fAnalysisLabel->Data();
2627 fCorrelationNoRPsVsNoPOIs = new TH2D(sCorrelationNoRPsVsNoPOIsName.Data(),"# RPs vs. # POIs",fnBinsMult,fMinMult,fMaxMult,fnBinsMult,fMinMult,fMaxMult);
2628 fCorrelationNoRPsVsNoPOIs->SetTickLength(-0.01,"Y");
2629 fCorrelationNoRPsVsNoPOIs->SetLabelSize(0.04);
2630 fCorrelationNoRPsVsNoPOIs->SetLabelOffset(0.02,"Y");
2631 fCorrelationNoRPsVsNoPOIs->SetStats(kTRUE);
2632 fCorrelationNoRPsVsNoPOIs->GetXaxis()->SetTitle("# RPs");
2633 fCorrelationNoRPsVsNoPOIs->GetYaxis()->SetTitle("# POIs");
2634 fControlHistogramsList->Add(fCorrelationNoRPsVsNoPOIs);
d9e6d8bb 2635 // b4) <2>, <4>, <6> and <8> vs multiplicity (#RPs, #POIs or external):
2636 TString sCorrelation[4] = {"#LT2#GT","#LT4#GT","#LT6#GT","#LT8#GT"};
2637 TString sMultiplicity = "";
2638 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2639 {
2640 sMultiplicity = "# RPs";
2641 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2642 {
2643 sMultiplicity = "Reference multiplicity (from ESD)";
2644 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2645 {
2646 sMultiplicity = "# POIs";
2647 }
2648 for(Int_t ci=0;ci<4;ci++)
2649 {
1db7eced 2650 fCorrelation2468VsMult[ci] = new TH2D(Form("%s vs M",sCorrelation[ci].Data()),Form("%s vs M",sCorrelation[ci].Data()),fnBinsMult,fMinMult,fMaxMult,fnBinsForCorrelations,fMinValueOfCorrelation[ci],fMaxValueOfCorrelation[ci]);
d9e6d8bb 2651 fCorrelation2468VsMult[ci]->SetTickLength(-0.01,"Y");
2652 fCorrelation2468VsMult[ci]->SetLabelSize(0.04);
2653 fCorrelation2468VsMult[ci]->SetLabelOffset(0.02,"Y");
2654 fCorrelation2468VsMult[ci]->SetStats(kTRUE);
2655 fCorrelation2468VsMult[ci]->GetXaxis()->SetTitle(sMultiplicity.Data());
2656 fCorrelation2468VsMult[ci]->GetYaxis()->SetTitle(sCorrelation[ci].Data());
2657 fControlHistogramsList->Add(fCorrelation2468VsMult[ci]);
2658 } // end of for(Int_t ci=0;ci<4;ci++)
1db7eced 2659 // b5) <2><4>, <2><6>, <2><8>, <4><6> etc. vs multiplicity (#RPs, #POIs or external):
2660 TString sCorrelationProduct[1] = {"#LT2#GT#LT4#GT"}; // TBI: add the other ones when needed first time
2661 for(Int_t cpi=0;cpi<1;cpi++) // TBI: hardwired 1
2662 {
2663 fCorrelationProduct2468VsMult[cpi] = new TH2D(Form("%s vs M",sCorrelationProduct[cpi].Data()),Form("%s vs M",sCorrelationProduct[cpi].Data()),fnBinsMult,fMinMult,fMaxMult,fnBinsForCorrelations,fMinValueOfCorrelationProduct[cpi],fMaxValueOfCorrelationProduct[cpi]);
2664 fCorrelationProduct2468VsMult[cpi]->SetTickLength(-0.01,"Y");
2665 fCorrelationProduct2468VsMult[cpi]->SetLabelSize(0.04);
2666 fCorrelationProduct2468VsMult[cpi]->SetLabelOffset(0.02,"Y");
2667 fCorrelationProduct2468VsMult[cpi]->SetStats(kTRUE);
2668 fCorrelationProduct2468VsMult[cpi]->GetXaxis()->SetTitle(sMultiplicity.Data());
2669 fCorrelationProduct2468VsMult[cpi]->GetYaxis()->SetTitle(sCorrelationProduct[cpi].Data());
2670 fControlHistogramsList->Add(fCorrelationProduct2468VsMult[cpi]);
2671 } // end of for(Int_t cpi=0;cpi<4;cpi++)
2672 // b6) |Qn|^2/M, |Q2n|^2/M, |Qn|^4/(M(2M-1)), Re[Q2nQn^*Qn^*]/M, ... vs multiplicity (#RPs, #POIs or external)
2673 if(fUseQvectorTerms)
2674 {
2675 TString sQvectorTerms[4] = {"#frac{|Q_{n}|^{2}}{M}","#frac{|Q_{2n}|^{2}}{M}","#frac{|Q_{n}|^{4}}{M(2M-1)}","#frac{Re[Q_{2n}Q_{n}^{*}Q_{n}^{*}]}{M^{3/2}}"}; // TBI: add the other ones when needed first time
2676 for(Int_t qvti=0;qvti<4;qvti++) // TBI: hardwired 4
2677 {
2678 fQvectorTermsVsMult[qvti] = new TH2D(Form("%s vs M",sQvectorTerms[qvti].Data()),Form("%s vs M",sQvectorTerms[qvti].Data()),fnBinsMult,fMinMult,fMaxMult,fnBinsForCorrelations,-100.,100.); // TBI hardwired -100 and 100
2679 fQvectorTermsVsMult[qvti]->SetTickLength(-0.01,"Y");
2680 fQvectorTermsVsMult[qvti]->SetLabelSize(0.04);
2681 fQvectorTermsVsMult[qvti]->SetLabelOffset(0.02,"Y");
2682 fQvectorTermsVsMult[qvti]->SetStats(kTRUE);
2683 fQvectorTermsVsMult[qvti]->GetXaxis()->SetTitle(sMultiplicity.Data());
2684 fQvectorTermsVsMult[qvti]->GetYaxis()->SetTitle(sQvectorTerms[qvti].Data());
2685 fControlHistogramsList->Add(fQvectorTermsVsMult[qvti]);
2686 } // end of for(Int_t qvti=0;qvti<4;qvti++)
2687 } // end of if(fUseQvectorTerms)
df23c5ae 2688
2689} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForControlHistograms()
2690
2691//=======================================================================================================================
2692
e1d101a6 2693void AliFlowAnalysisWithQCumulants::BookEverythingForMixedHarmonics()
2694{
2695 // Book all objects for mixed harmonics.
2696
2697 // a) Book profile to hold all flags for mixed harmonics;
2698 // b) Book all objects in TList fMixedHarmonicsProfiles;
c10259fb 2699 // c) Book all objects in TList fMixedHarmonicsResults;
2700 // d) Book all objects in TList fMixedHarmonicsErrorPropagation.
e1d101a6 2701
2702 // a) Book profile to hold all flags for mixed harmonics:
2703 TString mixedHarmonicsFlagsName = "fMixedHarmonicsFlags";
2704 mixedHarmonicsFlagsName += fAnalysisLabel->Data();
2705 fMixedHarmonicsFlags = new TProfile(mixedHarmonicsFlagsName.Data(),"Flags for Mixed Harmonics",4,0,4);
2706 fMixedHarmonicsFlags->SetTickLength(-0.01,"Y");
2707 fMixedHarmonicsFlags->SetMarkerStyle(25);
2708 fMixedHarmonicsFlags->SetLabelSize(0.04);
2709 fMixedHarmonicsFlags->SetLabelOffset(0.02,"Y");
2710 fMixedHarmonicsFlags->SetStats(kFALSE);
2711 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(1,"Calculate Mixed Harmonics");
2712 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(2,"Generic Harmonic");
2713 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(3,"Calculate vs Multiplicity");
2714 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(4,"Multiplicity Weight");
2715 fMixedHarmonicsList->Add(fMixedHarmonicsFlags);
2716
2717 if(!fCalculateMixedHarmonics){return;}
2718
2719 // b) Book all objects in TList fMixedHarmonicsProfiles:
2720 // b1) 2-p correlations:
2721 TString s2pCorrelationsName = "f2pCorrelations";
2722 s2pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2723 f2pCorrelations = new TProfile(s2pCorrelationsName.Data(),Form("2-particle correlations (n = %d)",fHarmonic),6,0,6,"s");
e1d101a6 2724 f2pCorrelations->SetTickLength(-0.01,"Y");
2725 f2pCorrelations->SetMarkerStyle(25);
2726 f2pCorrelations->SetLabelSize(0.04);
2727 f2pCorrelations->SetLabelOffset(0.02,"Y");
2728 f2pCorrelations->SetStats(kFALSE);
2729 f2pCorrelations->Sumw2();
2730 f2pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
2731 f2pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
2732 f2pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
2733 f2pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
2734 f2pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
2735 f2pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
2736 fMixedHarmonicsProfiles->Add(f2pCorrelations);
2737 // b2) 3-p correlations (3+6):
2738 TString s3pCorrelationsName = "f3pCorrelations";
2739 s3pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2740 f3pCorrelations = new TProfile(s3pCorrelationsName.Data(),Form("3-particle correlations (n = %d)",fHarmonic),10,0,10,"s");
e1d101a6 2741 f3pCorrelations->SetTickLength(-0.01,"Y");
2742 f3pCorrelations->SetMarkerStyle(25);
2743 f3pCorrelations->SetLabelSize(0.04);
2744 f3pCorrelations->SetLabelOffset(0.02,"Y");
2745 f3pCorrelations->SetStats(kFALSE);
2746 f3pCorrelations->Sumw2();
2747 // 3-p correlations sensitive to two distinct harmonics (3):
2748 f3pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
2749 f3pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
2750 f3pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
2751 f3pCorrelations->GetXaxis()->SetBinLabel(4,""); // empty
2752 // 3-p correlations sensitive to three distinct harmonics (6):
2753 f3pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
2754 f3pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
2755 f3pCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
2756 f3pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
2757 f3pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
2758 f3pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
2759 fMixedHarmonicsProfiles->Add(f3pCorrelations);
2760 // b3) 4-p correlations (6+15+2+10+8):
2761 TString s4pCorrelationsName = "f4pCorrelations";
2762 s4pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2763 f4pCorrelations = new TProfile(s4pCorrelationsName.Data(),Form("4-particle correlations (n = %d)",fHarmonic),45,0,45,"s");
e1d101a6 2764 f4pCorrelations->SetTickLength(-0.01,"Y");
2765 f4pCorrelations->SetMarkerStyle(25);
2766 f4pCorrelations->SetLabelSize(0.03);
2767 f4pCorrelations->SetLabelOffset(0.02,"Y");
2768 f4pCorrelations->SetStats(kFALSE);
2769 f4pCorrelations->Sumw2();
2770 // "same harmonic" (6):
2771 f4pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2772 f4pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2773 f4pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2774 f4pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
2775 f4pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
2776 f4pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
2777 f4pCorrelations->GetXaxis()->SetBinLabel(7,""); // empty
2778 // "standard candles" (15):
2779 f4pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
2780 f4pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
2781 f4pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
2782 f4pCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
2783 f4pCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
2784 f4pCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
2785 f4pCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
2786 f4pCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
2787 f4pCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
2788 f4pCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
2789 f4pCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
2790 f4pCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
2791 f4pCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
2792 f4pCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
2793 f4pCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
2794 f4pCorrelations->GetXaxis()->SetBinLabel(23,""); // empty
2795 // 4-p correlations sensitive to two distinct harmonics (2):
2796 f4pCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2797 f4pCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2798 f4pCorrelations->GetXaxis()->SetBinLabel(26,""); // empty
2799 // 4-p correlations sensitive to three distinct harmonics (10):
2800 f4pCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
2801 f4pCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2802 f4pCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
2803 f4pCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2804 f4pCorrelations->GetXaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2805 f4pCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
2806 f4pCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
2807 f4pCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2808 f4pCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
2809 f4pCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
2810 f4pCorrelations->GetXaxis()->SetBinLabel(37,""); // empty
2811 // 4-p correlations sensitive to four distinct harmonics (8):
2812 f4pCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
2813 f4pCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
2814 f4pCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
2815 f4pCorrelations->GetXaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
2816 f4pCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
2817 f4pCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2818 f4pCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
2819 f4pCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
2820 fMixedHarmonicsProfiles->Add(f4pCorrelations);
2821 // b3) 5-p correlations (30+9+30+11+3):
2822 TString s5pCorrelationsName = "f5pCorrelations";
2823 s5pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2824 f5pCorrelations = new TProfile(s5pCorrelationsName.Data(),Form("5-particle correlations (n = %d)",fHarmonic),87,0,87,"s");
e1d101a6 2825 f5pCorrelations->SetTickLength(-0.01,"Y");
2826 f5pCorrelations->SetMarkerStyle(25);
2827 f5pCorrelations->SetLabelSize(0.02);
2828 f5pCorrelations->SetLabelOffset(0.02,"Y");
2829 f5pCorrelations->SetStats(kFALSE);
2830 f5pCorrelations->Sumw2();
2831 // "standard candles" (30):
2832 f5pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2833 f5pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2834 f5pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2835 f5pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2836 f5pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2837 f5pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2838 f5pCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2839 f5pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
2840 f5pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2841 f5pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2842 f5pCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
2843 f5pCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
2844 f5pCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
2845 f5pCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
2846 f5pCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2847 f5pCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2848 f5pCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2849 f5pCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
2850 f5pCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
2851 f5pCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
2852 f5pCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
2853 f5pCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
2854 f5pCorrelations->GetXaxis()->SetBinLabel(23,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
2855 f5pCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
2856 f5pCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
2857 f5pCorrelations->GetXaxis()->SetBinLabel(26,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
2858 f5pCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
2859 f5pCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
2860 f5pCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
2861 f5pCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
c10259fb 2862 f5pCorrelations->GetXaxis()->SetBinLabel(31,""); // empty
e1d101a6 2863 // 5-p correlations sensitive to two distinct harmonics (9):
2864 f5pCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2865 f5pCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2866 f5pCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2867 f5pCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2868 f5pCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2869 f5pCorrelations->GetXaxis()->SetBinLabel(37,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2870 f5pCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2871 f5pCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
2872 f5pCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
c10259fb 2873 f5pCorrelations->GetXaxis()->SetBinLabel(41,""); // empty
e1d101a6 2874 // 5-p correlations sensitive to three distinct harmonics (30):
2875 f5pCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2876 f5pCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2877 f5pCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2878 f5pCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2879 f5pCorrelations->GetXaxis()->SetBinLabel(46,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
2880 f5pCorrelations->GetXaxis()->SetBinLabel(47,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2881 f5pCorrelations->GetXaxis()->SetBinLabel(48,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2882 f5pCorrelations->GetXaxis()->SetBinLabel(49,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2883 f5pCorrelations->GetXaxis()->SetBinLabel(50,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2884 f5pCorrelations->GetXaxis()->SetBinLabel(51,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2885 f5pCorrelations->GetXaxis()->SetBinLabel(52,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2886 f5pCorrelations->GetXaxis()->SetBinLabel(53,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2887 f5pCorrelations->GetXaxis()->SetBinLabel(54,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2888 f5pCorrelations->GetXaxis()->SetBinLabel(55,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2889 f5pCorrelations->GetXaxis()->SetBinLabel(56,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
2890 f5pCorrelations->GetXaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
2891 f5pCorrelations->GetXaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
2892 f5pCorrelations->GetXaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
2893 f5pCorrelations->GetXaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
2894 f5pCorrelations->GetXaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2895 f5pCorrelations->GetXaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2896 f5pCorrelations->GetXaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
2897 f5pCorrelations->GetXaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
2898 f5pCorrelations->GetXaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2899 f5pCorrelations->GetXaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
2900 f5pCorrelations->GetXaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
2901 f5pCorrelations->GetXaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
2902 f5pCorrelations->GetXaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
2903 f5pCorrelations->GetXaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
2904 f5pCorrelations->GetXaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
c10259fb 2905 f5pCorrelations->GetXaxis()->SetBinLabel(72,""); // empty
e1d101a6 2906 // 5-p correlations sensitive to four distinct harmonics (11):
2907 f5pCorrelations->GetXaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2908 f5pCorrelations->GetXaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
2909 f5pCorrelations->GetXaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2910 f5pCorrelations->GetXaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
2911 f5pCorrelations->GetXaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2912 f5pCorrelations->GetXaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
2913 f5pCorrelations->GetXaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
2914 f5pCorrelations->GetXaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
2915 f5pCorrelations->GetXaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
2916 f5pCorrelations->GetXaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
2917 f5pCorrelations->GetXaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
c10259fb 2918 f5pCorrelations->GetXaxis()->SetBinLabel(84,""); // empty
e1d101a6 2919 // 5-p correlations sensitive to five distinct harmonics (3):
2920 f5pCorrelations->GetXaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2921 f5pCorrelations->GetXaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
2922 f5pCorrelations->GetXaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
2923 fMixedHarmonicsProfiles->Add(f5pCorrelations);
2924 // b4) 6-p correlations (??+??+??+??+??):
2925 TString s6pCorrelationsName = "f6pCorrelations";
2926 s6pCorrelationsName += fAnalysisLabel->Data();
2927 f6pCorrelations = new TProfile(s6pCorrelationsName.Data(),Form("6-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2928 f6pCorrelations->SetTickLength(-0.01,"Y");
2929 f6pCorrelations->SetMarkerStyle(25);
2930 f6pCorrelations->SetLabelSize(0.02);
2931 f6pCorrelations->SetLabelOffset(0.02,"Y");
2932 f6pCorrelations->SetStats(kFALSE);
2933 f6pCorrelations->Sumw2();
2934 //fMixedHarmonicsProfiles->Add(f6pCorrelations); // TBI
2935 // b5) 7-p correlations (??+??+??+??+??):
2936 TString s7pCorrelationsName = "f7pCorrelations";
2937 s7pCorrelationsName += fAnalysisLabel->Data();
2938 f7pCorrelations = new TProfile(s7pCorrelationsName.Data(),Form("7-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2939 f7pCorrelations->SetTickLength(-0.01,"Y");
2940 f7pCorrelations->SetMarkerStyle(25);
2941 f7pCorrelations->SetLabelSize(0.02);
2942 f7pCorrelations->SetLabelOffset(0.02,"Y");
2943 f7pCorrelations->SetStats(kFALSE);
2944 f7pCorrelations->Sumw2();
2945 //fMixedHarmonicsProfiles->Add(f7pCorrelations); // TBI
2946 // b6) 8-p correlations (??+??+??+??+??):
2947 TString s8pCorrelationsName = "f8pCorrelations";
2948 s8pCorrelationsName += fAnalysisLabel->Data();
2949 f8pCorrelations = new TProfile(s8pCorrelationsName.Data(),Form("8-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2950 f8pCorrelations->SetTickLength(-0.01,"Y");
2951 f8pCorrelations->SetMarkerStyle(25);
2952 f8pCorrelations->SetLabelSize(0.02);
2953 f8pCorrelations->SetLabelOffset(0.02,"Y");
2954 f8pCorrelations->SetStats(kFALSE);
2955 f8pCorrelations->Sumw2();
2956 //fMixedHarmonicsProfiles->Add(f8pCorrelations); // TBI
2957
2958 // c) Book all objects in TList fMixedHarmonicsResults:
2959 // QC{2}:
2960 f2pCumulants = f2pCorrelations->ProjectionX("f2pCumulants");
2961 f2pCumulants->SetTitle(Form("2-particle cumulants (n = %d)",fHarmonic));
2962 f2pCumulants->SetStats(kFALSE);
2963 f2pCumulants->SetMarkerStyle(kFullSquare);
2964 f2pCumulants->SetMarkerColor(kBlack);
2965 f2pCumulants->SetLineColor(kBlack);
2966 fMixedHarmonicsResults->Add(f2pCumulants);
2967 // QC{3}:
2968 f3pCumulants = f3pCorrelations->ProjectionX("f3pCumulants");
2969 f3pCumulants->SetTitle(Form("3-particle cumulants (n = %d)",fHarmonic));
2970 f3pCumulants->SetStats(kFALSE);
2971 f3pCumulants->SetMarkerStyle(kFullSquare);
2972 f3pCumulants->SetMarkerColor(kGreen+2);
2973 f3pCumulants->SetLineColor(kGreen+2);
2974 fMixedHarmonicsResults->Add(f3pCumulants);
2975 // QC{4}:
2976 f4pCumulants = f4pCorrelations->ProjectionX("f4pCumulants");
2977 f4pCumulants->SetTitle(Form("4-particle cumulants (n = %d)",fHarmonic));
2978 f4pCumulants->SetStats(kFALSE);
2979 f4pCumulants->SetMarkerStyle(kFullSquare);
2980 f4pCumulants->SetMarkerColor(kRed);
2981 f4pCumulants->SetLineColor(kRed);
2982 fMixedHarmonicsResults->Add(f4pCumulants);
2983 // QC{5}:
2984 f5pCumulants = f5pCorrelations->ProjectionX("f5pCumulants");
2985 f5pCumulants->SetTitle(Form("5-particle cumulants (n = %d)",fHarmonic));
2986 f5pCumulants->SetStats(kFALSE);
2987 f5pCumulants->SetMarkerStyle(kFullSquare);
2988 f5pCumulants->SetMarkerColor(kBlue);
2989 f5pCumulants->SetLineColor(kBlue);
2990 fMixedHarmonicsResults->Add(f5pCumulants);
2991
c10259fb 2992 // d) Book all objects in TList fMixedHarmonicsErrorPropagation:
2993 // Sum of linear and quadratic event weights for mixed harmonics => [0=linear 1,1=quadratic]:
2994 TString mixedHarmonicEventWeightsName = "fMixedHarmonicEventWeights";
2995 mixedHarmonicEventWeightsName += fAnalysisLabel->Data();
2996 TString powerFlag[2] = {"linear","quadratic"};
2997 for(Int_t power=0;power<2;power++)
2998 {
2999 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.);
3000 fMixedHarmonicEventWeights[power]->SetLabelSize(0.04);
3001 fMixedHarmonicEventWeights[power]->SetMarkerStyle(25);
3002 fMixedHarmonicEventWeights[power]->SetStats(kFALSE);
3003 if(power == 0)
3004 {
3005 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum w_{#LT1#GT}");
3006 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum w_{#LT2#GT}");
3007 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum w_{#LT3#GT}");
3008 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum w_{#LT4#GT}");
3009 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(5,"#sum w_{#LT5#GT}");
3010 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(6,"#sum w_{#LT6#GT}");
3011 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(7,"#sum w_{#LT7#GT}");
3012 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(8,"#sum w_{#LT8#GT}");
3013 } else if (power == 1)
3014 {
3015 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum w_{#LT1#GT}^{2}");
3016 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum w_{#LT2#GT}^{2}");
3017 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum w_{#LT3#GT}^{2}");
3018 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum w_{#LT4#GT}^{2}");
3019 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(5,"#sum w_{#LT5#GT}^{2}");
3020 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(6,"#sum w_{#LT6#GT}^{2}");
3021 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(7,"#sum w_{#LT7#GT}^{2}");
3022 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(8,"#sum w_{#LT8#GT}^{2}");
3023 }
3024 fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicEventWeights[power]);
3025 } // end of for(Int_t power=0;power<2;power++)
3026
3027 // Sums of products of event weights for mixed harmonics:
3028 TString mixedHarmonicProductOfEventWeightsName = "fMixedHarmonicProductOfEventWeights";
3029 mixedHarmonicProductOfEventWeightsName += fAnalysisLabel->Data();
3030 fMixedHarmonicProductOfEventWeights = new TH2D(mixedHarmonicProductOfEventWeightsName.Data(),"Sums of products of event weights",8,0.,8.,8,0.,8.);
3031 fMixedHarmonicProductOfEventWeights->SetStats(kFALSE);
3032 fMixedHarmonicProductOfEventWeights->GetXaxis()->SetLabelSize(0.05);
3033 fMixedHarmonicProductOfEventWeights->GetYaxis()->SetLabelSize(0.05);
3034 for(Int_t b=1;b<=8;b++)
3035 {
3036 fMixedHarmonicProductOfEventWeights->GetXaxis()->SetBinLabel(b,Form("w_{#LT%i#GT}",b));
3037 fMixedHarmonicProductOfEventWeights->GetYaxis()->SetBinLabel(b,Form("w_{#LT%i#GT}",b));
3038 }
3039 fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicProductOfEventWeights);
3040
3041 // Averages of products of mixed harmonics correlations:
3042 TString mixedHarmonicProductOfCorrelationsName = "fMixedHarmonicProductOfCorrelations";
3043 mixedHarmonicProductOfCorrelationsName += fAnalysisLabel->Data();
3044 fMixedHarmonicProductOfCorrelations = new TProfile2D(mixedHarmonicProductOfCorrelationsName.Data(),"Averages of products of mixed correlators",139,0.,139.,139,0.,139.);
3045 fMixedHarmonicProductOfCorrelations->Sumw2();
3046 fMixedHarmonicProductOfCorrelations->SetStats(kFALSE);
3047 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetLabelSize(0.015);
3048 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetLabelSize(0.015);
3049 // x-axis:
3050 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
3051 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
3052 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
3053 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
3054 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
3055 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
3056 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
3057 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
3058 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
3059 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
3060 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
3061 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
3062 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
3063 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
3064 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
3065 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3066 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3067 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3068 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3069 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
3070 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
3071 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
3072 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(23,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
3073 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
3074 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
3075 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(26,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
3076 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
3077 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
3078 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
3079 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
3080 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
3081 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
3082 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
3083 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
3084 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
3085 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
3086 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(37,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3087 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3088 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
3089 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3090 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
3091 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3092 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3093 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3094 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
3095 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(46,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3096 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(47,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
3097 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(48,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
3098 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(49,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
3099 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(50,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
3100 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(51,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
3101 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(52,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3102 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(53,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
3103 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(54,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3104 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(55,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
3105 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(56,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
3106 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3107 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3108 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3109 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3110 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3111 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3112 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3113 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3114 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3115 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3116 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3117 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3118 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3119 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3120 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3121 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(72,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3122 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3123 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3124 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3125 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3126 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3127 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3128 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
3129 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
3130 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
3131 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
3132 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
3133 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(84,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
3134 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
3135 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
3136 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3137 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(88,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3138 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(89,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3139 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(90,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3140 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(91,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3141 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(92,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3142 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(93,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3143 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(94,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3144 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(95,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
3145 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(96,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3146 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(97,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3147 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(98,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3148 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(99,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3149 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(100,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3150 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(101,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3151 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(102,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3152 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(103,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3153 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(104,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3154 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(105,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3155 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(106,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3156 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(107,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3157 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(108,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3158 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(109,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3159 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(110,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3160 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(111,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3161 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(112,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3162 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(113,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3163 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(114,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3164 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(115,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3165 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(116,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3166 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(117,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3167 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(118,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3168 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(119,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3169 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(120,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3170 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(121,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
3171 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(122,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
3172 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(123,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
3173 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(124,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
3174 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(125,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
3175 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(126,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3176 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(127,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3177 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(128,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3178 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(129,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3179 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(130,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3180 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(131,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3181 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(132,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
3182 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(133,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3183 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(134,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
3184 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(135,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
3185 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(136,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
3186 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(137,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3187 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(138,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
3188 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(139,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3189 // y-axis:
3190 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
3191 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
3192 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
3193 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
3194 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
3195 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
3196 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
3197 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
3198 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
3199 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
3200 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(11,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
3201 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(12,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
3202 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(13,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
3203 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(14,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
3204 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(15,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
3205 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3206 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3207 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3208 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3209 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
3210 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
3211 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
3212 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(23,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
3213 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
3214 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
3215 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(26,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
3216 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
3217 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
3218 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
3219 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
3220 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
3221 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
3222 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
3223 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
3224 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
3225 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
3226 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(37,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3227 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3228 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
3229 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3230 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
3231 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3232 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3233 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3234 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
3235 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(46,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3236 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(47,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
3237 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(48,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
3238 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(49,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
3239 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(50,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
3240 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(51,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
3241 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(52,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3242 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(53,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
3243 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(54,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3244 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(55,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
3245 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(56,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
3246 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3247 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3248 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3249 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3250 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3251 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3252 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3253 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3254 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3255 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3256 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3257 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3258 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3259 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3260 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3261 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(72,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3262 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3263 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3264 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3265 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3266 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3267 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3268 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
3269 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
3270 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
3271 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
3272 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
3273 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(84,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
3274 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
3275 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
3276 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3277 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(88,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3278 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(89,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3279 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(90,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3280 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(91,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3281 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(92,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3282 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(93,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3283 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(94,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3284 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(95,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
3285 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(96,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3286 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(97,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3287 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(98,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3288 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(99,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3289 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(100,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3290 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(101,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3291 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(102,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3292 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(103,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3293 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(104,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3294 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(105,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3295 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(106,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3296 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(107,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3297 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(108,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3298 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(109,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3299 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(110,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3300 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(111,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3301 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(112,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3302 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(113,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3303 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(114,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3304 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(115,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3305 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(116,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3306 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(117,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3307 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(118,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3308 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(119,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3309 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(120,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3310 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(121,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
3311 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(122,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
3312 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(123,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
3313 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(124,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
3314 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(125,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
3315 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(126,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3316 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(127,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3317 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(128,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3318 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(129,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3319 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(130,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3320 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(131,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3321 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(132,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
3322 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(133,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3323 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(134,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
3324 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(135,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
3325 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(136,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
3326 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(137,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3327 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(138,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
3328 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(139,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3329 fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicProductOfCorrelations);
3330
e1d101a6 3331} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForMixedHarmonics()
3332
3333//=======================================================================================================================
489d5531 3334
489d5531 3335void AliFlowAnalysisWithQCumulants::InitializeArraysForNestedLoops()
3336{
3337 // Initialize arrays of all objects relevant for calculations with nested loops.
3338
3339 // integrated flow:
3340 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3341 {
3342 fIntFlowDirectCorrectionTermsForNUA[sc] = NULL;
3343 }
3344
3345 // differential flow:
3346 // correlations:
3347 for(Int_t t=0;t<2;t++) // type: RP or POI
3348 {
3349 for(Int_t pe=0;pe<2;pe++) // pt or eta
3350 {
3351 for(Int_t ci=0;ci<4;ci++) // correlation index
3352 {
3353 fDiffFlowDirectCorrelations[t][pe][ci] = NULL;
3354 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
3355 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3356 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
3357 // correction terms for non-uniform acceptance:
3358 for(Int_t t=0;t<2;t++) // type: RP or POI
3359 {
3360 for(Int_t pe=0;pe<2;pe++) // pt or eta
3361 {
3362 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3363 {
3364 for(Int_t cti=0;cti<9;cti++) // correction term index
3365 {
3366 fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] = NULL;
3367 }
3368 }
3369 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3370 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
3371
64e500e3 3372 // other differential correlators:
3373 for(Int_t t=0;t<2;t++) // type: RP or POI
3374 {
3375 for(Int_t pe=0;pe<2;pe++) // pt or eta
3376 {
3377 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3378 {
3379 for(Int_t ci=0;ci<1;ci++) // correlator index
3380 {
3381 fOtherDirectDiffCorrelators[t][pe][sc][ci] = NULL;
3382 }
3383 }
3384 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3385 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
489d5531 3386
3387} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForNestedLoops()
3388
e1d101a6 3389//=======================================================================================================================
489d5531 3390
c10259fb 3391void AliFlowAnalysisWithQCumulants::InitializeArraysForMixedHarmonics()
3392{
3393 // Initialize arrays of all objects relevant for mixed harmonics.
3394
3395 for(Int_t power=0;power<2;power++) // linear or quadratic
3396 {
3397 fMixedHarmonicEventWeights[power] = NULL;
3398 }
3399
3400} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForMixedHarmonics()
3401
3402//=======================================================================================================================
3403
d9e6d8bb 3404void AliFlowAnalysisWithQCumulants::InitializeArraysForControlHistograms()
3405{
3406 // Initialize arrays of all objects relevant for control histograms.
3407
3408 for(Int_t ci=0;ci<4;ci++) // correlation index
3409 {
3410 fCorrelation2468VsMult[ci] = NULL;
3411 }
1db7eced 3412 for(Int_t cpi=0;cpi<1;cpi++) // correlation product index TBI: hardwired 1
3413 {
3414 fCorrelationProduct2468VsMult[cpi] = NULL;
3415 }
3416 for(Int_t qwti=0;qwti<4;qwti++) // q-vector terms index TBI: hardwired 4
3417 {
3418 fQvectorTermsVsMult[qwti] = NULL;
3419 }
d9e6d8bb 3420
3421} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForControlHistograms()
3422
3423//=======================================================================================================================
3424
489d5531 3425void AliFlowAnalysisWithQCumulants::BookEverythingForNestedLoops()
3426{
3427 // Book all objects relevant for calculations with nested loops.
3428
3429 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
3430 TString typeFlag[2] = {"RP","POI"}; // to be improved (should I promote this to data members?)
3431 TString ptEtaFlag[2] = {"p_{T}","#eta"}; // to be improved (should I promote this to data members?)
3432 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"}; // to be improved (should I promote this to data members?)
3433 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
3434 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
3435
3436 TString evaluateNestedLoopsName = "fEvaluateNestedLoops";
3437 evaluateNestedLoopsName += fAnalysisLabel->Data();
3438 fEvaluateNestedLoops = new TProfile(evaluateNestedLoopsName.Data(),"Flags for nested loops",4,0,4);
3439 fEvaluateNestedLoops->SetLabelSize(0.03);
e1d101a6 3440 fEvaluateNestedLoops->SetStats(kFALSE);
489d5531 3441 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(1,"fEvaluateIntFlowNestedLoops");
3442 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(2,"fEvaluateDiffFlowNestedLoops");
3443 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(3,"fCrossCheckInPtBinNo");
3444 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(4,"fCrossCheckInEtaBinNo");
3445 fEvaluateNestedLoops->Fill(0.5,(Int_t)fEvaluateIntFlowNestedLoops);
3446 fEvaluateNestedLoops->Fill(1.5,(Int_t)fEvaluateDiffFlowNestedLoops);
3447 fEvaluateNestedLoops->Fill(2.5,fCrossCheckInPtBinNo);
3448 fEvaluateNestedLoops->Fill(3.5,fCrossCheckInEtaBinNo);
3449 fNestedLoopsList->Add(fEvaluateNestedLoops);
3450 // nested loops for integrated flow:
3451 if(fEvaluateIntFlowNestedLoops)
3452 {
3453 // correlations:
3454 TString intFlowDirectCorrelationsName = "fIntFlowDirectCorrelations";
3455 intFlowDirectCorrelationsName += fAnalysisLabel->Data();
403e3389 3456 fIntFlowDirectCorrelations = new TProfile(intFlowDirectCorrelationsName.Data(),"Multiparticle correlations calculated with nested loops (for int. flow)",64,0,64,"s");
489d5531 3457 fNestedLoopsList->Add(fIntFlowDirectCorrelations);
403e3389 3458 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 3459 {
3460 TString intFlowExtraDirectCorrelationsName = "fIntFlowExtraDirectCorrelations";
3461 intFlowExtraDirectCorrelationsName += fAnalysisLabel->Data();
3462 fIntFlowExtraDirectCorrelations = new TProfile(intFlowExtraDirectCorrelationsName.Data(),"Extra multiparticle correlations calculated with nested loops (for int. flow)",100,0,100,"s");
3463 fNestedLoopsList->Add(fIntFlowExtraDirectCorrelations);
403e3389 3464 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 3465 // correction terms for non-uniform acceptance:
3466 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3467 {
3468 TString intFlowDirectCorrectionTermsForNUAName = "fIntFlowDirectCorrectionTermsForNUA";
3469 intFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
3470 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");
3471 fNestedLoopsList->Add(fIntFlowDirectCorrectionTermsForNUA[sc]);
3472 } // end of for(Int_t sc=0;sc<2;sc++)
e1d101a6 3473 // Mixed harmonics:
3474 if(fCalculateMixedHarmonics)
3475 {
3476 TString mixedHarmonicsNestedLoopsName = "fMixedHarmonicsNestedLoops";
3477 mixedHarmonicsNestedLoopsName += fAnalysisLabel->Data();
3478 fMixedHarmonicsNestedLoops = new TProfile(mixedHarmonicsNestedLoopsName.Data(),"Mixed harmonics calculated with nested loops",200,0,200); // TBI hardwired 200
3479 fNestedLoopsList->Add(fMixedHarmonicsNestedLoops);
3480 } // end of if(fCalculateMixedHarmonics)
489d5531 3481 } // end of if(fEvaluateIntFlowNestedLoops)
3482
3483 // nested loops for differential flow:
3484 if(fEvaluateDiffFlowNestedLoops)
3485 {
3486 // reduced correlations:
3487 TString diffFlowDirectCorrelationsName = "fDiffFlowDirectCorrelations";
3488 diffFlowDirectCorrelationsName += fAnalysisLabel->Data();
3489 for(Int_t t=0;t<2;t++) // type: RP or POI
3490 {
62e36168 3491 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 3492 {
3493 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
3494 {
3495 // reduced correlations:
3496 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");
3497 fDiffFlowDirectCorrelations[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
3498 fNestedLoopsList->Add(fDiffFlowDirectCorrelations[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
3499 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
3500 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3501 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
64e500e3 3502
489d5531 3503 // correction terms for non-uniform acceptance:
3504 TString diffFlowDirectCorrectionTermsForNUAName = "fDiffFlowDirectCorrectionTermsForNUA";
3505 diffFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
3506 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
3507 {
62e36168 3508 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 3509 {
3510 for(Int_t sc=0;sc<2;sc++) // sin or cos
3511 {
3512 for(Int_t cti=0;cti<9;cti++) // correction term index
3513 {
3514 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");
3515 fNestedLoopsList->Add(fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti]);
3516 }
3517 }
3518 }
64e500e3 3519 }
3520 // other differential correlators:
3521 TString otherDirectDiffCorrelatorsName = "fOtherDirectDiffCorrelators";
3522 otherDirectDiffCorrelatorsName += fAnalysisLabel->Data();
3523 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
3524 {
62e36168 3525 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 3526 {
3527 for(Int_t sc=0;sc<2;sc++) // sin or cos
3528 {
3529 for(Int_t ci=0;ci<1;ci++) // correlator index
3530 {
3531 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]);
3532 fNestedLoopsList->Add(fOtherDirectDiffCorrelators[t][pe][sc][ci]);
3533 }
3534 }
3535 }
3536 }
3b552efe 3537 // number of RPs and POIs in selected pt and eta bins for cross-checkings:
3538 TString noOfParticlesInBinName = "fNoOfParticlesInBin";
3539 fNoOfParticlesInBin = new TH1D(noOfParticlesInBinName.Data(),"Number of RPs and POIs in selected p_{T} and #eta bin",4,0,4);
489d5531 3540 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(1,"# of RPs in p_{T} bin");
3541 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(2,"# of RPs in #eta bin");
3542 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(3,"# of POIs in p_{T} bin");
3b552efe 3543 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(4,"# of POIs in #eta bin");
489d5531 3544 fNestedLoopsList->Add(fNoOfParticlesInBin);
3545 } // end of if(fEvaluateDiffFlowNestedLoops)
3546
3547} // end of AliFlowAnalysisWithQCumulants::BookEverythingForNestedLoops()
3548
e1d101a6 3549//=========================================================================================================
489d5531 3550
489d5531 3551void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations()
3552{
b84464d3 3553 // Calculate in this method all multiparticle azimuthal correlations.
3554 //
3555 // Remark 1: All multiparticle correlations are stored in TProfile fIntFlowCorrelationsAllPro;
3556 // Remark 2: There is a special TProfile fIntFlowCorrelationsPro holding results
3557 // only for same harmonic's correlations <<2>>, <<4>>, <<6>> and <<8>>;
3558 // Remark 3: Binning of fIntFlowCorrelationsAllPro is organized as follows:
3559 // --------------------------------------------------------------------------------------------------------------------
3560 // 1st bin: <2>_{1n|1n} = two1n1n = cos(1n(phi1-phi2))>
3561 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n(phi1-phi2))>
3562 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n(phi1-phi2))>
3563 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n(phi1-phi2))>
3564 // 5th bin: ---- EMPTY ----
3565 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n(2*phi1-phi2-phi3))>
3566 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n(3*phi1-2*phi2-phi3))>
3567 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n(4*phi1-2*phi2-2*phi3))>
3568 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n(4*phi1-3*phi2-phi3))>
3569 // 10th bin: ---- EMPTY ----
3570 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n(phi1+phi2-phi3-phi4))>
3571 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(n(2*phi1+phi2-2*phi3-phi4))>
3572 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(2n(phi1+phi2-phi3-phi4))>
3573 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n(3*phi1-phi2-phi3-phi4))>
3574 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n(3*phi1+phi2-3*phi3-phi4))>
3575 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n(3*phi1+phi2-2*phi3-2*phi4))>
3576 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n(4*phi1-2*phi2-phi3-phi4))>
3577 // 18th bin: ---- EMPTY ----
3578 // 19th bin: <5>_{2n,1n|1n,1n,1n} = five2n1n1n1n1n = <cos(n(2*phi1+phi2-phi3-phi4-phi5))>
3579 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n(2*phi1+2*phi2-2*phi3-phi4-phi5))>
3580 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n(3*phi1+phi2-2*phi3-phi4-phi5))>
3581 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n(4*phi1-phi2-phi3-phi4-phi5))>
3582 // 23rd bin: ---- EMPTY ----
3583 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n(phi1+phi2+phi3-phi4-phi5-phi6))>
3584 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n(2*phi1+phi2+phi3-2*phi4-phi5-phi6))>
3585 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n(2*phi1+2*phi2-phi3-phi4-phi5-phi6))>
3586 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n(3*phi1+phi2-phi3-phi4-phi5-phi6))>
3587 // 28th bin: ---- EMPTY ----
3588 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n(2*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
3589 // 30th bin: ---- EMPTY ----
3590 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
3591 // 32nd bin: ---- EMPTY ----
3592 // Extra correlations for v3{5} study:
3593 // 33rd bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
3594 // 34th bin: <5>_{3n,3n|2n,2n,2n} = five3n3n2n2n2n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
3595 // Extra correlations for Teaney-Yan study:
3596 // 35th bin: <2>_{5n|5n} = two5n5n = <cos(5n(phi1-phi2)>
3597 // 36th bin: <2>_{6n|6n} = two6n6n = <cos(6n(phi1-phi2)>
3598 // 37th bin: <3>_{5n|3n,2n} = three5n3n2n = <cos(n(5*phi1-3*phi2-2*phi3)>
3599 // 38th bin: <3>_{5n|4n,1n} = three5n4n1n = <cos(n(5*phi1-4*phi2-1*phi3)>
3600 // 39th bin: <3>_{6n|3n,3n} = three6n3n3n = <cos(n(6*phi1-3*phi2-3*phi3)>
3601 // 40th bin: <3>_{6n|4n,2n} = three6n4n2n = <cos(n(6*phi1-4*phi2-2*phi3)>
3602 // 41st bin: <3>_{6n|5n,1n} = three6n5n1n = <cos(n(6*phi1-5*phi2-1*phi3)>
3603 // 42nd bin: <4>_{6n|3n,2n,1n} = four6n3n2n1n = <cos(n(6*phi1-3*phi2-2*phi3-1*phi4)>
3604 // 43rd bin: <4>_{3n,2n|3n,2n} = four3n2n3n2n = <cos(n(3*phi1+2*phi2-3*phi3-2*phi4)>
3605 // 44th bin: <4>_{4n,1n|3n,2n} = four4n1n3n2n = <cos(n(4*phi1+1*phi2-3*phi3-2*phi4)>
3606 // 45th bin: <4>_{3n,3n|3n,3n} = four3n3n3n3n = <cos(3n*(phi1+phi2-phi3-phi4))>
3607 // 46th bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4)>
3608 // 47th bin: <4>_{5n,1n|3n,3n} = four5n1n3n3n = <cos(n(5*phi1+1*phi2-3*phi3-3*phi4)>
3609 // 48th bin: <4>_{4n,2n|4n,2n} = four4n2n4n2n = <cos(n(4*phi1+2*phi2-4*phi3-2*phi4)>
3610 // 49th bin: <4>_{5n,1n|4n,2n} = four5n1n4n2n = <cos(n(5*phi1+1*phi2-4*phi3-2*phi4)>
3611 // 50th bin: <4>_{5n|3n,1n,1n} = four5n3n1n1n = <cos(n(5*phi1-3*phi2-1*phi3-1*phi4)>
3612 // 51st bin: <4>_{5n|2n,2n,1n} = four5n2n2n1n = <cos(n(5*phi1-2*phi2-2*phi3-1*phi4)>
3613 // 52nd bin: <4>_{5n,1n|5n,1n} = four5n1n5n1n = <cos(n(5*phi1+1*phi2-5*phi3-1*phi4)>
3614 // 53rd bin: <5>_{3n,3n|3n,2n,1n} = five3n3n3n2n1n = <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
3615 // 54th bin: <5>_{4n,2n|3n,2n,1n} = five4n2n3n2n1n = <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
3616 // 55th bin: <5>_{3n,2n|3n,1n,1n} = five3n2n3n1n1n = <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
3617 // 56th bin: <5>_{3n,2n|2n,2n,1n} = five3n2n2n2n1n = <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
3618 // 57th bin: <5>_{5n,1n|3n,2n,1n} = five5n1n3n2n1n = <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
3619 // 58th bin: <6>_{3n,2n,1n|3n,2n,1n} = six3n2n1n3n2n1n = <cos(n(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
403e3389 3620 // Extra correlations for Teaney-Yan study (B):
3621 // 59th bin: <4>_{6n|4n,1n,1n} = four6n4n1n1n = <cos(n(6*phi1-4*phi2-1*phi3-1*phi4)>
3622 // 60th bin: <4>_{6n|2n,2n,2n} = four6n2n2n2n = <cos(n(6*phi1-2*phi2-2*phi3-2*phi4)>
3623 // 61st bin: <5>_{6n|2n,2n,1n,1n} = five6n2n2n1n1n = <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5)>
3624 // 62nd bin: <5>_{4n,1n,1n|3n,3n} = five4n1n1n3n3n = <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5)>
3625 // 63rd bin: <6>_{3n,3n|2n,2n,1n,1n} = six3n3n2n2n1n1n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-1*phi5-1*phi6)>
b84464d3 3626 // --------------------------------------------------------------------------------------------------------------------
403e3389 3627
3628 // Multiplicity of an event:
1268c371 3629 Double_t dMult = (*fSpk)(0,0);
b84464d3 3630 // Real parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
489d5531 3631 Double_t dReQ1n = (*fReQ)(0,0);
3632 Double_t dReQ2n = (*fReQ)(1,0);
3633 Double_t dReQ3n = (*fReQ)(2,0);
3634 Double_t dReQ4n = (*fReQ)(3,0);
b84464d3 3635 Double_t dReQ5n = (*fReQ)(4,0);
8ed4edc7 3636 Double_t dReQ6n = (*fReQ)(5,0);
b84464d3 3637 // Imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
489d5531 3638 Double_t dImQ1n = (*fImQ)(0,0);
3639 Double_t dImQ2n = (*fImQ)(1,0);
3640 Double_t dImQ3n = (*fImQ)(2,0);
3641 Double_t dImQ4n = (*fImQ)(3,0);
b84464d3 3642 Double_t dImQ5n = (*fImQ)(4,0);
8ed4edc7 3643 Double_t dImQ6n = (*fImQ)(5,0);
3842bdcd 3644
3645 // Multiplicity bin of an event (relevant for all histos vs M):
3646 Double_t dMultiplicityBin = 0.;
df23c5ae 3647 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 3648 {
4aae2a93 3649 //Printf("RP multiplicity: %lf",fNumberOfRPsEBE);
3650 dMultiplicityBin = fNumberOfRPsEBE+0.5;
df23c5ae 3651 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 3652 {
4aae2a93 3653 //Printf("Reference multiplicity: %lf",fReferenceMultiplicityEBE);
3842bdcd 3654 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 3655 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
3656 {
3657 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
3658 }
1db7eced 3659
b84464d3 3660 // Real parts of expressions involving various combinations of Q-vectors which appears
3661 // simultaneously in several equations for multiparticle correlations bellow:
3662 // Re[Q_{2n}Q_{n}^*Q_{n}^*]
3663 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n;
3664 // Re[Q_{6n}Q_{3n}^*Q_{3n}^*]
3665 Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n;
3666 // Re[Q_{4n}Q_{2n}^*Q_{2n}^*]
489d5531 3667 Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
b84464d3 3668 // Re[Q_{4n}Q_{3n}^*Q_{n}^*]
489d5531 3669 Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
b84464d3 3670 // Re[Q_{3n}Q_{2n}^*Q_{n}^*]
489d5531 3671 Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
b84464d3 3672 + dImQ3n*dImQ2n*dReQ1n;
3673 // Re[Q_{5n}Q_{3n}^*Q_{2n}^*]
3674 Double_t reQ5nQ3nstarQ2nstar = dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
3675 + dImQ5n*dImQ2n*dReQ3n;
3676 // Re[Q_{5n}Q_{4n}^*Q_{1n}^*]
3677 Double_t reQ5nQ4nstarQ1nstar = dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
3678 + dImQ5n*dImQ4n*dReQ1n;
3679 // Re[Q_{6n}Q_{5n}^*Q_{1n}^*]
3680 Double_t reQ6nQ5nstarQ1nstar = dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
3681 + dImQ6n*dImQ5n*dReQ1n;
3682 // Re[Q_{6n}Q_{4n}^*Q_{2n}^*]
3683 Double_t reQ6nQ4nstarQ2nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
3684 + dImQ6n*dImQ4n*dReQ2n;
3685 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{2n}^*]
3686 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
3687 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
3688 // Re[Q_{3n}Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3689 Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
3690 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
403e3389 3691 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
3692 Double_t reQ6nQ2nstarQ2nstarQ2nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
3693 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
b84464d3 3694 // Re[Q_{4n}Q_{2n}^*Q_{n}^*Q_{n}^*]
3695 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
3696 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);
3697 // Re[Q_{4n}Q_{2n}^*Q_{3n}^*Q_{3n}^*]
3698 Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
3699 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;
3700 // Re[Q_{4n}Q_{n}Q_{3n}^*Q_{2n}^*]
3701 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
3702 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
3703 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
3704 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
3705 // Re[Q_{5n}Q_{n}Q_{4n}^*Q_{2n}^*]
3706 Double_t reQ5nQ1nQ4nstarQ2nstar = dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
3707 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
3708 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
3709 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n;
3710 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{3n}^*]
3711 Double_t reQ5nQ1nQ3nstarQ3nstar = dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
3712 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
3713 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n;
3714 // Re[Q_{5n}Q_{3n}^*Q_{n}^*Q_{n}^*]
3715 Double_t reQ5nQ3nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
3716 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
3717 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n;
3718 // Re[Q_{5n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
3719 Double_t reQ5nQ2nstarQ2nstarQ1nstar = -pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
3720 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
403e3389 3721 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n;
3722 // Re[Q_{6n}Q_{4n}^*Q_{n}^*Q_{n}^*]
3723 Double_t reQ6nQ4nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
3724 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
3725 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n;
489d5531 3726 // |Q_{2n}|^2 |Q_{n}|^2
3727 Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
b84464d3 3728 // |Q_{4n}|^2 |Q_{2n}|^2
3729 Double_t dQ4nQ2nQ4nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.));
3730 // |Q_{3n}|^2 |Q_{2n}|^2
3731 Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.));
3732 // |Q_{5n}|^2 |Q_{n}|^2
3733 Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
53884472 3734 // |Q_{3n}|^2 |Q_{n}|^2
3735 Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
b84464d3 3736 // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3737 Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
b84464d3 3738 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));
3739 // Re[Q_{2n}Q_{2n}Q_{2n}^*Q_{n}^*Q_{n}^*]
489d5531 3740 Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
3741 * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);
b84464d3 3742 // Re[Q_{4n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3743 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
3744 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
3745 - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;
b84464d3 3746 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{n}^*Q_{n}^*]
489d5531 3747 Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
b84464d3 3748 * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
3749 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);
3750 // Re[Q_{6n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3751 Double_t reQ6nQ3nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
3752 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
3753 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
3754 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n;
3755 // Re[Q_{3n}Q_{3n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3756 Double_t reQ3nQ3nQ3nstarQ2nstarQ1nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
3757 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
3758 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);
3759 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
3760 Double_t reQ3nQ3nQ2nstarQ2nstarQ2nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.)
3761 - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
3762 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n
3763 - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.)
3764 + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);
3765 // Re[Q_{4n}Q_{2n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3766 Double_t reQ4nQ2nQ3nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
3767 * (dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
3768 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n);
3769 // Re[Q_{3n}Q_{2n}Q_{3n}^*Q_{n}^*Q_{n}^*]
3770 Double_t reQ3nQ2nQ3nstarQ1nstarQ1nstar = -(pow(dImQ3n,2.)+pow(dReQ3n,2.))
3771 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n);
3772 // Re[Q_{3n}Q_{2n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
3773 Double_t reQ3nQ2nQ2nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
3774 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
3775 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);
3776 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3777 Double_t reQ5nQ1nQ3nstarQ2nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
3778 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
3779 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
3780 // Re[Q_{2n}Q_{2n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3781 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
3782 + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
3783 * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
b84464d3 3784 - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n);
3785 // Re[Q_{3n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3786 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
3787 * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
3788 + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
489d5531 3789 // |Q_{2n}|^2 |Q_{n}|^4
b84464d3 3790 Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.);
3791 // |Q_{3n}|^2 |Q_{2n}|^2 |Q_{n}|^2
3792 Double_t dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3793 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
3794 // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3795 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3796 * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
53884472 3797 + 2.*dReQ1n*dImQ1n*dImQ2n);
3798 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*]
3799 Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
3800 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
3801 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
3802 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
3803 + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
3804 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n
3805 - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
3806 // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*]
3807 Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
3808 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
3809 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
3810 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n
3811 + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
3812 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
3813 + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n;
3814 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*]
3815 Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n
3816 - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n
3817 + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n
3818 + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n
3819 - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n
3820 + dImQ1n*dImQ2n*dImQ3n);
489d5531 3821
b84464d3 3822 // Results for multiparticle azimuthal correlations:
489d5531 3823 // 2-particle:
b84464d3 3824 Double_t two1n1n = 0.; // <cos(n(phi1-phi2))>
3825 Double_t two2n2n = 0.; // <cos(2n(phi1-phi2))>
3826 Double_t two3n3n = 0.; // <cos(3n(phi1-phi2))>
3827 Double_t two4n4n = 0.; // <cos(4n(phi1-phi2))>
489d5531 3828 if(dMult>1)
3829 {
3830 two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.));
3831 two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.));
3832 two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.));
3833 two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.));
b84464d3 3834 // Average 2-particle correlations for single event:
489d5531 3835 fIntFlowCorrelationsAllEBE->SetBinContent(1,two1n1n);
3836 fIntFlowCorrelationsAllEBE->SetBinContent(2,two2n2n);
3837 fIntFlowCorrelationsAllEBE->SetBinContent(3,two3n3n);
b84464d3 3838 fIntFlowCorrelationsAllEBE->SetBinContent(4,two4n4n);
3839 // Average 2-particle correlations for all events:
3840 fIntFlowCorrelationsAllPro->Fill(0.5,two1n1n,dMult*(dMult-1.));
3841 fIntFlowCorrelationsAllPro->Fill(1.5,two2n2n,dMult*(dMult-1.));
3842 fIntFlowCorrelationsAllPro->Fill(2.5,two3n3n,dMult*(dMult-1.));
3843 fIntFlowCorrelationsAllPro->Fill(3.5,two4n4n,dMult*(dMult-1.));
3844 // Store separetately <2>:
3845 fIntFlowCorrelationsEBE->SetBinContent(1,two1n1n); // <2>
3846 // Testing other multiplicity weights:
489d5531 3847 Double_t mWeight2p = 0.;
df23c5ae 3848 if(fMultiplicityWeight->Contains("combinations"))
489d5531 3849 {
3850 mWeight2p = dMult*(dMult-1.);
df23c5ae 3851 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 3852 {
3853 mWeight2p = 1.;
df23c5ae 3854 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 3855 {
3856 mWeight2p = dMult;
b84464d3 3857 }
489d5531 3858 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(1,mWeight2p); // eW_<2>
3859 fIntFlowCorrelationsPro->Fill(0.5,two1n1n,mWeight2p);
b40a910e 3860 fIntFlowSquaredCorrelationsPro->Fill(0.5,two1n1n*two1n1n,mWeight2p);
3861 if(fCalculateCumulantsVsM)
3862 {
1db7eced 3863 if(fFillProfilesVsMUsingWeights)
3864 {
3865 fIntFlowCorrelationsVsMPro[0]->Fill(dMultiplicityBin,two1n1n,mWeight2p);
3866 fIntFlowSquaredCorrelationsVsMPro[0]->Fill(dMultiplicityBin,two1n1n*two1n1n,mWeight2p);
3867 } else
3868 {
3869 fIntFlowCorrelationsVsMPro[0]->Fill(dMultiplicityBin,two1n1n);
3870 fIntFlowSquaredCorrelationsVsMPro[0]->Fill(dMultiplicityBin,two1n1n*two1n1n);
3871 }
3872 } // end of if(fCalculateCumulantsVsM)
3435cacb 3873 if(fCalculateAllCorrelationsVsM)
3874 {
3842bdcd 3875 fIntFlowCorrelationsAllVsMPro[0]->Fill(dMultiplicityBin,two1n1n,mWeight2p);
3876 fIntFlowCorrelationsAllVsMPro[1]->Fill(dMultiplicityBin,two2n2n,mWeight2p);
3877 fIntFlowCorrelationsAllVsMPro[2]->Fill(dMultiplicityBin,two3n3n,mWeight2p);
3878 fIntFlowCorrelationsAllVsMPro[3]->Fill(dMultiplicityBin,two4n4n,mWeight2p);
d9e6d8bb 3879 }
3880 if(fStoreControlHistograms)
3881 {
3882 fCorrelation2468VsMult[0]->Fill(dMultiplicityBin,two1n1n);
3883 }
489d5531 3884 } // end of if(dMult>1)
3885
3886 // 3-particle:
b84464d3 3887 Double_t three2n1n1n = 0.; // <cos(n(2*phi1-phi2-phi3))>
3888 Double_t three3n2n1n = 0.; // <cos(n(3*phi1-2*phi2-phi3))>
3889 Double_t three4n2n2n = 0.; // <cos(n(4*phi1-2*phi2-2*phi3))>
3890 Double_t three4n3n1n = 0.; // <cos(n(4*phi1-3*phi2-phi3))>
489d5531 3891 if(dMult>2)
3892 {
3893 three2n1n1n = (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3894 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
3895 / (dMult*(dMult-1.)*(dMult-2.));
3896 three3n2n1n = (reQ3nQ2nstarQ1nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3897 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))
3898 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
3899 / (dMult*(dMult-1.)*(dMult-2.));
3900 three4n2n2n = (reQ4nQ2nstarQ2nstar-2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3901 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
3902 / (dMult*(dMult-1.)*(dMult-2.));
3903 three4n3n1n = (reQ4nQ3nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))
3904 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
3905 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
b84464d3 3906 / (dMult*(dMult-1.)*(dMult-2.));
3907 // Average 3-particle correlations for single event:
489d5531 3908 fIntFlowCorrelationsAllEBE->SetBinContent(6,three2n1n1n);
3909 fIntFlowCorrelationsAllEBE->SetBinContent(7,three3n2n1n);
3910 fIntFlowCorrelationsAllEBE->SetBinContent(8,three4n2n2n);
3911 fIntFlowCorrelationsAllEBE->SetBinContent(9,three4n3n1n);
b84464d3 3912 // Average 3-particle correlations for all events:
489d5531 3913 fIntFlowCorrelationsAllPro->Fill(5.5,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
3914 fIntFlowCorrelationsAllPro->Fill(6.5,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
3915 fIntFlowCorrelationsAllPro->Fill(7.5,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
3435cacb 3916 fIntFlowCorrelationsAllPro->Fill(8.5,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
b84464d3 3917 // Average 3-particle correlations vs M for all events:
3435cacb 3918 if(fCalculateAllCorrelationsVsM)
3919 {
3842bdcd 3920 fIntFlowCorrelationsAllVsMPro[5]->Fill(dMultiplicityBin,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
3921 fIntFlowCorrelationsAllVsMPro[6]->Fill(dMultiplicityBin,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
3922 fIntFlowCorrelationsAllVsMPro[7]->Fill(dMultiplicityBin,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
3923 fIntFlowCorrelationsAllVsMPro[8]->Fill(dMultiplicityBin,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
3435cacb 3924 }
489d5531 3925 } // end of if(dMult>2)
3926
3927 // 4-particle:
b84464d3 3928 Double_t four1n1n1n1n = 0.; // <cos(n(phi1+phi2-phi3-phi4))>
3929 Double_t four2n2n2n2n = 0.; // <cos(2n(phi1+phi2-phi3-phi4))>
3930 Double_t four2n1n2n1n = 0.; // <cos(n(2*phi1+phi2-2*phi3-phi4))>
3931 Double_t four3n1n1n1n = 0.; // <cos(n(3*phi1-phi2-phi3-phi4))>
3932 Double_t four4n2n1n1n = 0.; // <cos(n(4*phi1-2*phi2-phi3-phi4))>
3933 Double_t four3n1n2n2n = 0.; // <cos(n(3*phi1+phi2-2*phi3-2*phi4))>
3934 Double_t four3n1n3n1n = 0.; // <cos(n(3*phi1+phi2-3*phi3-phi4))>
489d5531 3935 if(dMult>3)
3936 {
3937 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
3938 + pow(dImQ1n,2.))-2.*reQ2nQ1nstarQ1nstar+(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
3939 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
3940 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
3941 + pow(dImQ2n,2.))-2.*reQ4nQ2nstarQ2nstar+(pow(dReQ4n,2.)+pow(dImQ4n,2.)))
3942 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
3943 four2n1n2n1n = (dQ2nQ1nQ2nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar-2.*reQ2nQ1nstarQ1nstar)
3944 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3945 - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3946 + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
3947 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3948 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3949 four3n1n1n1n = (reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar-3.*reQ2nQ1nstarQ1nstar
3950 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
489d5531 3951 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
3952 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3953 four4n2n1n1n = (reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar)
3954 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3955 - (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3956 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
3957 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3958 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3959 four3n1n2n2n = (reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nstarQ2nstar-reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar)
489d5531 3960 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
b84464d3 3961 - (2.*reQ2nQ1nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
489d5531 3962 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
3963 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3964 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
3965 four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
b84464d3 3966 - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar
3967 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3968 + pow(dReQ2n,2.)+pow(dImQ2n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3969 + dMult*(dMult-6.))
3970 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3971 // Average 4-particle correlations for single event:
489d5531 3972 fIntFlowCorrelationsAllEBE->SetBinContent(11,four1n1n1n1n);
3973 fIntFlowCorrelationsAllEBE->SetBinContent(12,four2n1n2n1n);
3974 fIntFlowCorrelationsAllEBE->SetBinContent(13,four2n2n2n2n);
3975 fIntFlowCorrelationsAllEBE->SetBinContent(14,four3n1n1n1n);
3976 fIntFlowCorrelationsAllEBE->SetBinContent(15,four3n1n3n1n);
3977 fIntFlowCorrelationsAllEBE->SetBinContent(16,four3n1n2n2n);
b84464d3 3978 fIntFlowCorrelationsAllEBE->SetBinContent(17,four4n2n1n1n);
3979 // Average 4-particle correlations for all events:
489d5531 3980 fIntFlowCorrelationsAllPro->Fill(10.5,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3981 fIntFlowCorrelationsAllPro->Fill(11.5,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3982 fIntFlowCorrelationsAllPro->Fill(12.5,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3983 fIntFlowCorrelationsAllPro->Fill(13.5,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3984 fIntFlowCorrelationsAllPro->Fill(14.5,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3985 fIntFlowCorrelationsAllPro->Fill(15.5,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3986 fIntFlowCorrelationsAllPro->Fill(16.5,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3987 // Average 4-particle correlations vs M for all events:
3435cacb 3988 if(fCalculateAllCorrelationsVsM)
3989 {
3842bdcd 3990 fIntFlowCorrelationsAllVsMPro[10]->Fill(dMultiplicityBin,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3991 fIntFlowCorrelationsAllVsMPro[11]->Fill(dMultiplicityBin,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3992 fIntFlowCorrelationsAllVsMPro[12]->Fill(dMultiplicityBin,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3993 fIntFlowCorrelationsAllVsMPro[13]->Fill(dMultiplicityBin,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3994 fIntFlowCorrelationsAllVsMPro[14]->Fill(dMultiplicityBin,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3995 fIntFlowCorrelationsAllVsMPro[15]->Fill(dMultiplicityBin,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3996 fIntFlowCorrelationsAllVsMPro[16]->Fill(dMultiplicityBin,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3997 }
3998 // Store separetately <4>:
489d5531 3999 fIntFlowCorrelationsEBE->SetBinContent(2,four1n1n1n1n); // <4>
b84464d3 4000 // Testing other multiplicity weights:
489d5531 4001 Double_t mWeight4p = 0.;
df23c5ae 4002 if(fMultiplicityWeight->Contains("combinations"))
489d5531 4003 {
4004 mWeight4p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.);
df23c5ae 4005 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 4006 {
4007 mWeight4p = 1.;
df23c5ae 4008 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 4009 {
4010 mWeight4p = dMult;
b84464d3 4011 }
489d5531 4012 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(2,mWeight4p); // eW_<4>
4013 fIntFlowCorrelationsPro->Fill(1.5,four1n1n1n1n,mWeight4p);
b40a910e 4014 fIntFlowSquaredCorrelationsPro->Fill(1.5,four1n1n1n1n*four1n1n1n1n,mWeight4p);
4015 if(fCalculateCumulantsVsM)
4016 {
1db7eced 4017 if(fFillProfilesVsMUsingWeights)
4018 {
4019 fIntFlowCorrelationsVsMPro[1]->Fill(dMultiplicityBin,four1n1n1n1n,mWeight4p);
4020 fIntFlowSquaredCorrelationsVsMPro[1]->Fill(dMultiplicityBin,four1n1n1n1n*four1n1n1n1n,mWeight4p);
4021 } else
4022 {
4023 fIntFlowCorrelationsVsMPro[1]->Fill(dMultiplicityBin,four1n1n1n1n);
4024 fIntFlowSquaredCorrelationsVsMPro[1]->Fill(dMultiplicityBin,four1n1n1n1n*four1n1n1n1n);
4025 }
4026 } // end of if(fCalculateCumulantsVsM)
d9e6d8bb 4027 if(fStoreControlHistograms)
4028 {
4029 fCorrelation2468VsMult[1]->Fill(dMultiplicityBin,four1n1n1n1n);
1db7eced 4030 fCorrelationProduct2468VsMult[0]->Fill(dMultiplicityBin,two1n1n*four1n1n1n1n);
d9e6d8bb 4031 }
489d5531 4032 } // end of if(dMult>3)
4033
4034 // 5-particle:
b84464d3 4035 Double_t five2n1n1n1n1n = 0.; // <cos(n(2*phi1+phi2-phi3-phi4-phi5))>
4036 Double_t five2n2n2n1n1n = 0.; // <cos(n(2*phi1+2*phi2-2*phi3-phi4-phi5))>
4037 Double_t five3n1n2n1n1n = 0.; // <cos(n(3*phi1+phi2-2*phi3-phi4-phi5))>
4038 Double_t five4n1n1n1n1n = 0.; // <cos(n(4*phi1-phi2-phi3-phi4-phi5))>
489d5531 4039 if(dMult>4)
b84464d3 4040 {
4041 five2n1n1n1n1n = (reQ2nQ1nQ1nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar+5.*reQ3nQ2nstarQ1nstar
4042 - 3.*(dMult-5.)*reQ2nQ1nstarQ1nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4043 - 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4044 + 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4045 - 3.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4046 + 6.*(2.*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult*(dMult-4.))
489d5531 4047 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 4048 five2n2n2n1n1n = (reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ3nQ1nQ2nstarQ2nstar
4049 + 3.*reQ4nQ2nstarQ2nstar+8.*reQ3nQ2nstarQ1nstar+2.*reQ4nQ3nstarQ1nstar
4050 - 2.*(dMult-6.)*reQ2nQ1nstarQ1nstar
4051 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4052 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
4053 + 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4054 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4055 + 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
489d5531 4056 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 4057 five4n1n1n1n1n = (reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ4nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nstarQ1nstarQ1nstar
4058 + 8.*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+12.*reQ3nQ2nstarQ1nstar+12.*reQ2nQ1nstarQ1nstar
4059 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4060 - 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+24.*dMult)
4061 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4062 five3n1n2n1n1n = (reQ3nQ1nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar
4063 - reQ3nQ1nQ2nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar
4064 - (2.*dMult-13.)*reQ3nQ2nstarQ1nstar+7.*reQ2nQ1nstarQ1nstar
4065 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4066 + 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4067 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4068 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
489d5531 4069 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4070 - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
b84464d3 4071 + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4072 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4073 // Average 5-particle correlations for single event:
489d5531 4074 fIntFlowCorrelationsAllEBE->SetBinContent(19,five2n1n1n1n1n);
4075 fIntFlowCorrelationsAllEBE->SetBinContent(20,five2n2n2n1n1n);
4076 fIntFlowCorrelationsAllEBE->SetBinContent(21,five3n1n2n1n1n);
b84464d3 4077 fIntFlowCorrelationsAllEBE->SetBinContent(22,five4n1n1n1n1n);
4078 // Average 5-particle correlations for all events:
489d5531 4079 fIntFlowCorrelationsAllPro->Fill(18.5,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4080 fIntFlowCorrelationsAllPro->Fill(19.5,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4081 fIntFlowCorrelationsAllPro->Fill(20.5,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 4082 fIntFlowCorrelationsAllPro->Fill(21.5,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4083 // Average 5-particle correlations vs M for all events:
3435cacb 4084 if(fCalculateAllCorrelationsVsM)
4085 {
3842bdcd 4086 fIntFlowCorrelationsAllVsMPro[18]->Fill(dMultiplicityBin,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4087 fIntFlowCorrelationsAllVsMPro[19]->Fill(dMultiplicityBin,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4088 fIntFlowCorrelationsAllVsMPro[20]->Fill(dMultiplicityBin,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4089 fIntFlowCorrelationsAllVsMPro[21]->Fill(dMultiplicityBin,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4090 }
489d5531 4091 } // end of if(dMult>4)
4092
4093 // 6-particle:
b84464d3 4094 Double_t six1n1n1n1n1n1n = 0.; // <cos(n(phi1+phi2+phi3-phi4-phi5-phi6))>
4095 Double_t six2n2n1n1n1n1n = 0.; // <cos(n(2*phi1+2*phi2-phi3-phi4-phi5-phi6))>
4096 Double_t six3n1n1n1n1n1n = 0.; // <cos(n(3*phi1+phi2-phi3-phi4-phi5-phi6))>
4097 Double_t six2n1n1n2n1n1n = 0.; // <cos(n(2*phi1+phi2+phi3-2*phi4-phi5-phi6))>
489d5531 4098 if(dMult>5)
4099 {
b84464d3 4100 six1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)-6.*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4101 + 4.*reQ3nQ1nstarQ1nstarQ1nstar-12.*reQ3nQ2nstarQ1nstar+18.*(dMult-4.)*reQ2nQ1nstarQ1nstar
4102 + 9.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4103 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-9.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4104 - 9.*(dMult-4.)*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4105 + 18.*(dMult*dMult-7.*dMult+10.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4106 - 6.*dMult*(dMult*dMult-9.*dMult+20.))
4107 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4108 six2n1n1n2n1n1n = (dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4109 - 4.*reQ2nQ1nQ1nstarQ1nstarQ1nstar-2.*reQ2nQ2nQ2nstarQ1nstarQ1nstar
4110 + 4.*reQ4nQ2nstarQ1nstarQ1nstar+4.*reQ3nQ1nQ2nstarQ2nstar+4.*reQ3nQ1nstarQ1nstarQ1nstar
4111 - 8.*reQ4nQ3nstarQ1nstar-4.*reQ4nQ2nstarQ2nstar+4.*(2.*dMult-13.)*reQ3nQ2nstarQ1nstar
4112 + 2.*(7.*dMult-34.)*reQ2nQ1nstarQ1nstar+4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4113 - 4.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4114 + 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4115 + pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+(2.*dMult*dMult-27.*dMult+76.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4116 - (dMult-12.)*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4117 + 4.*(dMult*dMult-15.*dMult+34.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4118 - 2.*dMult*(dMult*dMult-17.*dMult+60.))
4119 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4120 six2n2n1n1n1n1n = (reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ1nstarQ1nstarQ1nstarQ1nstar
4121 - 8.*reQ2nQ1nQ1nstarQ1nstarQ1nstar+8.*reQ3nQ1nstarQ1nstarQ1nstar+6.*reQ4nQ2nstarQ1nstarQ1nstar
4122 + 8.*reQ3nQ1nQ2nstarQ2nstar-40.*reQ3nQ2nstarQ1nstar-8.*reQ4nQ3nstarQ1nstar-9.*reQ4nQ2nstarQ2nstar
4123 + 24.*(dMult-4.)*reQ2nQ1nstarQ1nstar+24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4124 + 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+16.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4125 + 3.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-12.*(2.*dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4126 + 12.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-48.*(dMult-3.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4127 + 24.*dMult*(dMult-5.))
4128 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4129 six3n1n1n1n1n1n = (reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ3nQ1nQ2nstarQ1nstarQ1nstar+6.*reQ4nQ2nstarQ1nstarQ1nstar
4130 - reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-4.*reQ2nQ1nQ1nstarQ1nstarQ1nstar+3.*reQ3nQ1nQ2nstarQ2nstar
4131 - 4.*(dMult-5.)*reQ3nQ1nstarQ1nstarQ1nstar-14.*reQ4nQ3nstarQ1nstar
4132 - 3.*reQ4nQ2nstarQ2nstar+4.*(3.*dMult-17.)*reQ3nQ2nstarQ1nstar+12.*(dMult-6.)*reQ2nQ1nstarQ1nstar
4133 + 12.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4134 + 8.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4135 + 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4136 - 12.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-48.*(dMult-3.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4137 + 12.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)+24.*dMult*(dMult-5.))
4138 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4139 // Average 6-particle correlations for single event:
489d5531 4140 fIntFlowCorrelationsAllEBE->SetBinContent(24,six1n1n1n1n1n1n);
4141 fIntFlowCorrelationsAllEBE->SetBinContent(25,six2n1n1n2n1n1n);
4142 fIntFlowCorrelationsAllEBE->SetBinContent(26,six2n2n1n1n1n1n);
4143 fIntFlowCorrelationsAllEBE->SetBinContent(27,six3n1n1n1n1n1n);
b84464d3 4144 // Average 6-particle correlations for all events:
489d5531 4145 fIntFlowCorrelationsAllPro->Fill(23.5,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4146 fIntFlowCorrelationsAllPro->Fill(24.5,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4147 fIntFlowCorrelationsAllPro->Fill(25.5,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4148 fIntFlowCorrelationsAllPro->Fill(26.5,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
b84464d3 4149 // Average 6-particle correlations vs M for all events:
3435cacb 4150 if(fCalculateAllCorrelationsVsM)
4151 {
3842bdcd 4152 fIntFlowCorrelationsAllVsMPro[23]->Fill(dMultiplicityBin,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4153 fIntFlowCorrelationsAllVsMPro[24]->Fill(dMultiplicityBin,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4154 fIntFlowCorrelationsAllVsMPro[25]->Fill(dMultiplicityBin,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4155 fIntFlowCorrelationsAllVsMPro[26]->Fill(dMultiplicityBin,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3435cacb 4156 }
b84464d3 4157 // Store separetately <6>:
489d5531 4158 fIntFlowCorrelationsEBE->SetBinContent(3,six1n1n1n1n1n1n); // <6>
b84464d3 4159 // Testing other multiplicity weights:
489d5531 4160 Double_t mWeight6p = 0.;
df23c5ae 4161 if(fMultiplicityWeight->Contains("combinations"))
489d5531 4162 {
4163 mWeight6p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.);
df23c5ae 4164 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 4165 {
4166 mWeight6p = 1.;
df23c5ae 4167 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 4168 {
4169 mWeight6p = dMult;
4170 }
489d5531 4171 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(3,mWeight6p); // eW_<6>
4172 fIntFlowCorrelationsPro->Fill(2.5,six1n1n1n1n1n1n,mWeight6p);
b40a910e 4173 fIntFlowSquaredCorrelationsPro->Fill(2.5,six1n1n1n1n1n1n*six1n1n1n1n1n1n,mWeight6p);
4174 if(fCalculateCumulantsVsM)
4175 {
1db7eced 4176 if(fFillProfilesVsMUsingWeights)
4177 {
4178 fIntFlowCorrelationsVsMPro[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n,mWeight6p);
4179 fIntFlowSquaredCorrelationsVsMPro[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n*six1n1n1n1n1n1n,mWeight6p);
4180 } else
4181 {
4182 fIntFlowCorrelationsVsMPro[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n);
4183 fIntFlowSquaredCorrelationsVsMPro[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n*six1n1n1n1n1n1n);
4184 }
4185 } // end of if(fCalculateCumulantsVsM)
d9e6d8bb 4186 if(fStoreControlHistograms)
4187 {
4188 fCorrelation2468VsMult[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n);
4189 }
489d5531 4190 } // end of if(dMult>5)
4191
4192 // 7-particle:
b84464d3 4193 Double_t seven2n1n1n1n1n1n1n = 0.; // <cos(n(2*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
489d5531 4194 if(dMult>6)
4195 {
b84464d3 4196 seven2n1n1n1n1n1n1n = (reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-4.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)
4197 - reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-2.*reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar
4198 + 9.*reQ2nQ2nQ2nstarQ1nstarQ1nstar+20.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4199 + 2.*reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-8.*(dMult-8.)*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4200 - 18.*reQ4nQ2nstarQ1nstarQ1nstar-14.*reQ3nQ1nQ2nstarQ2nstar
4201 + 8.*(dMult-7.)*reQ3nQ1nstarQ1nstarQ1nstar+28.*reQ4nQ3nstarQ1nstar
4202 + 12.*reQ4nQ2nstarQ2nstar-8.*(5.*dMult-31.)*reQ3nQ2nstarQ1nstar
4203 + 12.*(dMult*dMult-15.*dMult+46.)*reQ2nQ1nstarQ1nstar
4204 - 16.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4205 - 6.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4206 - 3.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4207 + 12.*(2.*dMult-13.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4208 - 12.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+16.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4209 - 12.*(dMult-8.)*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4210 + 12.*(3.*dMult-14.)*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)
4211 - 24.*(3.*dMult-7.)*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4212 + 24.*dMult*(dMult-5.)*(dMult-6.))
4213 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.));
4214 // Average 7-particle correlations for single event:
4215 fIntFlowCorrelationsAllEBE->SetBinContent(29,seven2n1n1n1n1n1n1n);
4216 // Average 7-particle correlations for all events:
4217 fIntFlowCorrelationsAllPro->Fill(28.5,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4218 *(dMult-4.)*(dMult-5.)*(dMult-6.));
4219 // Average 7-particle correlations vs M for all events:
3435cacb 4220 if(fCalculateAllCorrelationsVsM)
4221 {
3842bdcd 4222 fIntFlowCorrelationsAllVsMPro[28]->Fill(dMultiplicityBin,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
b84464d3 4223 *(dMult-4.)*(dMult-5.)*(dMult-6.));
3435cacb 4224 }
489d5531 4225 } // end of if(dMult>6)
4226
4227 // 8-particle:
b84464d3 4228 Double_t eight1n1n1n1n1n1n1n1n = 0.; // <cos(n(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
489d5531 4229 if(dMult>7)
b84464d3 4230 {
4231 eight1n1n1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),4.)-12.*reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar
4232 + 16.*reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar+6.*reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar
4233 - 12.*reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-36.*reQ2nQ2nQ2nstarQ1nstarQ1nstar
4234 - 96.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4235 + 72.*reQ4nQ2nstarQ1nstarQ1nstar+48.*reQ3nQ1nQ2nstarQ2nstar
4236 - 64.*(dMult-6.)*reQ3nQ1nstarQ1nstarQ1nstar
4237 + 96.*(dMult-6.)*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4238 - 96.*reQ4nQ3nstarQ1nstar-36.*reQ4nQ2nstarQ2nstar
4239 + 192.*(dMult-6.)*reQ3nQ2nstarQ1nstar
4240 - 144.*(dMult-7.)*(dMult-4.)*reQ2nQ1nstarQ1nstar
4241 + 64.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4242 - 144.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4243 + 72.*(dMult-7.)*(dMult-4.)*(pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
4244 - 96.*(dMult-7.)*(dMult-6.)*(dMult-2.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4245 + 36.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4246 + 9.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4247 - 64.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4248 + 36.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4249 - 16.*(dMult-6.)*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)
4250 + 24.*dMult*(dMult-7.)*(dMult-6.)*(dMult-5.))
4251 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4252 // Average 8-particle correlations for single event:
4253 fIntFlowCorrelationsAllEBE->SetBinContent(31,eight1n1n1n1n1n1n1n1n);
4254 // Average 8-particle correlations for all events:
4255 fIntFlowCorrelationsAllPro->Fill(30.5,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4256 *(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4257 // Average 8-particle correlations vs M for all events:
3435cacb 4258 if(fCalculateAllCorrelationsVsM)
4259 {
3842bdcd 4260 fIntFlowCorrelationsAllVsMPro[30]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
b84464d3 4261 *(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4262 }
4263 // Store separetately <8>:
489d5531 4264 fIntFlowCorrelationsEBE->SetBinContent(4,eight1n1n1n1n1n1n1n1n); // <8>
b84464d3 4265 // Testing other multiplicity weights:
489d5531 4266 Double_t mWeight8p = 0.;
df23c5ae 4267 if(fMultiplicityWeight->Contains("combinations"))
489d5531 4268 {
4269 mWeight8p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.);
df23c5ae 4270 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 4271 {
4272 mWeight8p = 1.;
df23c5ae 4273 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 4274 {
4275 mWeight8p = dMult;
b84464d3 4276 }
489d5531 4277 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(4,mWeight8p); // eW_<8>
b40a910e 4278 fIntFlowCorrelationsPro->Fill(3.5,eight1n1n1n1n1n1n1n1n,mWeight8p);
4279 fIntFlowSquaredCorrelationsPro->Fill(3.5,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n,mWeight8p);
4280 if(fCalculateCumulantsVsM)
4281 {
1db7eced 4282 if(fFillProfilesVsMUsingWeights)
4283 {
4284 fIntFlowCorrelationsVsMPro[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n,mWeight8p);
4285 fIntFlowSquaredCorrelationsVsMPro[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n,mWeight8p);
4286 } else
4287 {
4288 fIntFlowCorrelationsVsMPro[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n);
4289 fIntFlowSquaredCorrelationsVsMPro[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n);
4290 }
4291 } // end of if(fCalculateCumulantsVsM)
d9e6d8bb 4292 if(fStoreControlHistograms)
4293 {
4294 fCorrelation2468VsMult[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n);
1db7eced 4295 } // end of if(fStoreControlHistograms)
489d5531 4296 } // end of if(dMult>7)
4297
b84464d3 4298 // EXTRA correlations for v3{5} study:
8ed4edc7 4299 // 4-particle:
b84464d3 4300 Double_t four4n2n3n3n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
8ed4edc7 4301 if(dMult>3.)
4302 {
11d3e40e 4303 four4n2n3n3n = (reQ4nQ2nQ3nstarQ3nstar-reQ6nQ4nstarQ2nstar-reQ6nQ3nstarQ3nstar
4304 - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar
4305 + (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4306 + 2.*(2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4307 + (pow(dReQ1n,2.)+pow(dImQ1n,2.))-3.*dMult))
b84464d3 4308 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
8ed4edc7 4309 fIntFlowCorrelationsAllPro->Fill(32.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4310 // Average 4-particle correlations vs M for all events:
3435cacb 4311 if(fCalculateAllCorrelationsVsM)
4312 {
3842bdcd 4313 fIntFlowCorrelationsAllVsMPro[32]->Fill(dMultiplicityBin,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3435cacb 4314 }
11d3e40e 4315 } // end of if(dMult>3.)
8ed4edc7 4316
4317 // 5-particle:
b84464d3 4318 Double_t five3n3n2n2n2n = 0.; // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
8ed4edc7 4319 if(dMult>4.)
4320 {
b84464d3 4321 five3n3n2n2n2n = (reQ3nQ3nQ2nstarQ2nstarQ2nstar-reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ4nQ2nQ3nstarQ3nstar
4322 - 6.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ6nQ3nstarQ3nstar+3.*reQ6nQ4nstarQ2nstar
4323 + 6.*reQ4nQ3nstarQ1nstar+6.*reQ4nQ2nstarQ2nstar
4324 + 12.*reQ3nQ2nstarQ1nstar+6.*reQ2nQ1nstarQ1nstar
11d3e40e 4325 - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.))
4326 + 3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4327 + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4328 + 9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4329 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
b84464d3 4330 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4331 fIntFlowCorrelationsAllPro->Fill(33.5,five3n3n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4332 if(fCalculateAllCorrelationsVsM)
4333 {
3842bdcd 4334 fIntFlowCorrelationsAllVsMPro[33]->Fill(dMultiplicityBin,five3n3n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4335 }
11d3e40e 4336 } // end of if(dMult>4.)
8ed4edc7 4337
b84464d3 4338 // EXTRA correlations for Teaney-Yan study:
4339 // 2-particle:
4340 Double_t two5n5n = 0.; // <cos(5n(phi1-phi2))>
4341 Double_t two6n6n = 0.; // <cos(6n(phi1-phi2))>
4342 if(dMult>1)
4343 {
4344 two5n5n = (pow(dReQ5n,2.)+pow(dImQ5n,2.)-dMult)/(dMult*(dMult-1.));
4345 two6n6n = (pow(dReQ6n,2.)+pow(dImQ6n,2.)-dMult)/(dMult*(dMult-1.));
4346 // Average 2-particle correlations for all events:
4347 fIntFlowCorrelationsAllPro->Fill(34.5,two5n5n,dMult*(dMult-1.));
4348 fIntFlowCorrelationsAllPro->Fill(35.5,two6n6n,dMult*(dMult-1.));
4349 if(fCalculateAllCorrelationsVsM)
4350 {
3842bdcd 4351 fIntFlowCorrelationsAllVsMPro[34]->Fill(dMultiplicityBin,two5n5n,dMult*(dMult-1.));
4352 fIntFlowCorrelationsAllVsMPro[35]->Fill(dMultiplicityBin,two6n6n,dMult*(dMult-1.));
b84464d3 4353 }
4354 } // end of if(dMult>1)
4355
4356 // 3-particle:
4357 Double_t three5n3n2n = 0.; // <cos(n(5*phi1-3*phi2-2*phi3)>
4358 Double_t three5n4n1n = 0.; // <cos(n(5*phi1-4*phi2-1*phi3)>
4359 Double_t three6n3n3n = 0.; // <cos(n(6*phi1-3*phi2-3*phi3)>
4360 Double_t three6n4n2n = 0.; // <cos(n(6*phi1-4*phi2-2*phi3)>
4361 Double_t three6n5n1n = 0.; // <cos(n(6*phi1-5*phi2-1*phi3)>
4362 if(dMult>2)
4363 {
4364 three5n3n2n = (reQ5nQ3nstarQ2nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4365 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
4366 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4367 / (dMult*(dMult-1.)*(dMult-2.));
4368 three5n4n1n = (reQ5nQ4nstarQ1nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4369 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4370 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4371 / (dMult*(dMult-1.)*(dMult-2.));
4372 three6n3n3n = (reQ6nQ3nstarQ3nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4373 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*dMult)
4374 / (dMult*(dMult-1.)*(dMult-2.));
4375 three6n4n2n = (reQ6nQ4nstarQ2nstar-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4376 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4377 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4378 / (dMult*(dMult-1.)*(dMult-2.));
4379 three6n5n1n = (reQ6nQ5nstarQ1nstar-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4380 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))
4381 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4382 / (dMult*(dMult-1.)*(dMult-2.));
4383 // Average 3-particle correlations for all events:
4384 fIntFlowCorrelationsAllPro->Fill(36.5,three5n3n2n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(5*phi1-3*phi2-2*phi3)>>
4385 fIntFlowCorrelationsAllPro->Fill(37.5,three5n4n1n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(5*phi1-4*phi2-1*phi3)>>
4386 fIntFlowCorrelationsAllPro->Fill(38.5,three6n3n3n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-3*phi2-3*phi3)>>
4387 fIntFlowCorrelationsAllPro->Fill(39.5,three6n4n2n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-4*phi2-2*phi3)>>
4388 fIntFlowCorrelationsAllPro->Fill(40.5,three6n5n1n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-5*phi2-1*phi3)>>
4389 if(fCalculateAllCorrelationsVsM)
4390 {
3842bdcd 4391 fIntFlowCorrelationsAllVsMPro[36]->Fill(dMultiplicityBin,three5n3n2n,dMult*(dMult-1.)*(dMult-2.));
4392 fIntFlowCorrelationsAllVsMPro[37]->Fill(dMultiplicityBin,three5n4n1n,dMult*(dMult-1.)*(dMult-2.));
4393 fIntFlowCorrelationsAllVsMPro[38]->Fill(dMultiplicityBin,three6n3n3n,dMult*(dMult-1.)*(dMult-2.));
4394 fIntFlowCorrelationsAllVsMPro[39]->Fill(dMultiplicityBin,three6n4n2n,dMult*(dMult-1.)*(dMult-2.));
4395 fIntFlowCorrelationsAllVsMPro[40]->Fill(dMultiplicityBin,three6n5n1n,dMult*(dMult-1.)*(dMult-2.));
b84464d3 4396 }
4397 } // end of if(dMult>2)
4398
4399 // 4-particle:
4400 Double_t four6n3n2n1n = 0.; // <cos(n(6*phi1-3*phi2-2*phi3-1*phi4)>
4401 Double_t four3n2n3n2n = 0.; // <cos(n(3*phi1+2*phi2-3*phi3-2*phi4)>
4402 Double_t four4n1n3n2n = 0.; // <cos(n(4*phi1+1*phi2-3*phi3-2*phi4)>
4403 Double_t four3n3n3n3n = 0.; // <cos(3n(phi1+phi2-phi3-phi4))>
4404 //Double_t four4n2n3n3n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-3*phi4)> // I already have this one above
4405 Double_t four5n1n3n3n = 0.; // <cos(n(5*phi1+1*phi2-3*phi3-3*phi4)>
4406 Double_t four4n2n4n2n = 0.; // <cos(n(4*phi1+2*phi2-4*phi3-2*phi4)>
4407 Double_t four5n1n4n2n = 0.; // <cos(n(5*phi1+1*phi2-4*phi3-2*phi4)>
4408 Double_t four5n3n1n1n = 0.; // <cos(n(5*phi1-3*phi2-1*phi3-1*phi4)>
4409 Double_t four5n2n2n1n = 0.; // <cos(n(5*phi1-2*phi2-2*phi3-1*phi4)>
403e3389 4410 Double_t four5n1n5n1n = 0.; // <cos(n(5*phi1+1*phi2-5*phi3-1*phi4)>
4411 Double_t four6n4n1n1n = 0.; // <cos(n(6*phi1-4*phi2-1*phi3-1*phi4)>
4412 Double_t four6n2n2n2n = 0.; // <cos(n(6*phi1-2*phi2-2*phi3-2*phi4)>
b84464d3 4413 if(dMult>3)
4414 {
4415 four6n3n2n1n = (reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ4nstarQ2nstar-reQ6nQ3nstarQ3nstar-reQ6nQ5nstarQ1nstar
4416 - reQ5nQ3nstarQ2nstar-reQ4nQ3nstarQ1nstar-reQ3nQ2nstarQ1nstar
4417 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+pow(dReQ5n,2.)+pow(dImQ5n,2.)
4418 + pow(dReQ4n,2.)+pow(dImQ4n,2.)+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4419 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4420 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4421 four3n2n3n2n = (dQ3nQ2nQ3nstarQ2nstar-2.*reQ5nQ3nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar
4422 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
4423 -(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
4424 + dMult*(dMult-6.))
4425 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4426 four4n1n3n2n = (reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nstarQ2nstar-reQ5nQ4nstarQ1nstar-reQ4nQ3nstarQ1nstar
4427 - reQ4nQ2nstarQ2nstar-reQ3nQ2nstarQ1nstar-reQ2nQ1nstarQ1nstar
4428 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4429 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4430 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4431 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4432 four3n3n3n3n = (2.*dMult*(dMult-3.)+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ3n,2.)
4433 + pow(dImQ3n,2.))-2.*reQ6nQ3nstarQ3nstar+(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4434 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
4435 //four4n2n3n3n = ; // I already have this one above
4436 four5n1n3n3n = (reQ5nQ1nQ3nstarQ3nstar-reQ6nQ5nstarQ1nstar-reQ6nQ3nstarQ3nstar-2.*reQ5nQ3nstarQ2nstar
4437 - 2.*reQ3nQ2nstarQ1nstar+pow(dReQ6n,2.)+pow(dImQ6n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4438 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4439 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4440 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4441 four4n2n4n2n = (dQ4nQ2nQ4nstarQ2nstar-2.*reQ6nQ4nstarQ2nstar-2.*reQ4nQ2nstarQ2nstar)
4442 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4443 - ((dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4444 + (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4445 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4446 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
4447 four5n1n4n2n = (reQ5nQ1nQ4nstarQ2nstar-reQ6nQ5nstarQ1nstar-reQ6nQ4nstarQ2nstar-reQ5nQ4nstarQ1nstar
4448 - reQ5nQ3nstarQ2nstar-reQ4nQ3nstarQ1nstar-reQ2nQ1nstarQ1nstar+pow(dReQ6n,2.)+pow(dImQ6n,2.)
4449 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4450 + pow(dReQ3n,2.)+pow(dImQ3n,2.)+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4451 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4452 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4453 four5n3n1n1n = (reQ5nQ3nstarQ1nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar-reQ5nQ3nstarQ2nstar-2.*reQ4nQ3nstarQ1nstar
4454 - reQ2nQ1nstarQ1nstar+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4455 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
4456 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4457 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4458 four5n2n2n1n = (reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ4nstarQ1nstar-2.*reQ5nQ3nstarQ2nstar-reQ4nQ2nstarQ2nstar
4459 - 2.*reQ3nQ2nstarQ1nstar+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
4460 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4461 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4462 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4463 four5n1n5n1n = (dQ5nQ1nQ5nstarQ1nstar-2.*reQ6nQ5nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar
4464 + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4465 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.))
53884472 4466 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4467
4468 // TBI: Recursive formula needed:
403e3389 4469 four6n4n1n1n = (reQ6nQ4nstarQ1nstarQ1nstar
4470 - dMult*(dMult-1.)*(dMult-2.)*(three2n1n1n+2.*three5n4n1n+2.*three6n5n1n+three6n4n2n)
4471 - dMult*(dMult-1.)*(2.*two1n1n+1.*two4n4n+1.*two6n6n+1.*two2n2n+2.*two5n5n)
4472 - 1.*dMult)
4473 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
53884472 4474
403e3389 4475 four6n2n2n2n = (reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ6nQ4nstarQ2nstar-3.*reQ4nQ2nstarQ2nstar
4476 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4477 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult)
4478 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4479 // Average 4-particle correlations for all events:
4480 fIntFlowCorrelationsAllPro->Fill(41.5,four6n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4481 fIntFlowCorrelationsAllPro->Fill(42.5,four3n2n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4482 fIntFlowCorrelationsAllPro->Fill(43.5,four4n1n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4483 fIntFlowCorrelationsAllPro->Fill(44.5,four3n3n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4484 //fIntFlowCorrelationsAllPro->Fill(45.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); // I already have this one above
4485 fIntFlowCorrelationsAllPro->Fill(46.5,four5n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4486 fIntFlowCorrelationsAllPro->Fill(47.5,four4n2n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4487 fIntFlowCorrelationsAllPro->Fill(48.5,four5n1n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4488 fIntFlowCorrelationsAllPro->Fill(49.5,four5n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4489 fIntFlowCorrelationsAllPro->Fill(50.5,four5n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4490 fIntFlowCorrelationsAllPro->Fill(51.5,four5n1n5n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
403e3389 4491 fIntFlowCorrelationsAllPro->Fill(58.5,four6n4n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4492 fIntFlowCorrelationsAllPro->Fill(59.5,four6n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4493 if(fCalculateAllCorrelationsVsM)
4494 {
3842bdcd 4495 fIntFlowCorrelationsAllVsMPro[41]->Fill(dMultiplicityBin,four6n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4496 fIntFlowCorrelationsAllVsMPro[42]->Fill(dMultiplicityBin,four3n2n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4497 fIntFlowCorrelationsAllVsMPro[43]->Fill(dMultiplicityBin,four4n1n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4498 fIntFlowCorrelationsAllVsMPro[44]->Fill(dMultiplicityBin,four3n3n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4499 //fIntFlowCorrelationsAllVsMPro[45]->Fill(dMultiplicityBin,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4500 fIntFlowCorrelationsAllVsMPro[46]->Fill(dMultiplicityBin,four5n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4501 fIntFlowCorrelationsAllVsMPro[47]->Fill(dMultiplicityBin,four4n2n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4502 fIntFlowCorrelationsAllVsMPro[48]->Fill(dMultiplicityBin,four5n1n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4503 fIntFlowCorrelationsAllVsMPro[49]->Fill(dMultiplicityBin,four5n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4504 fIntFlowCorrelationsAllVsMPro[50]->Fill(dMultiplicityBin,four5n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4505 fIntFlowCorrelationsAllVsMPro[51]->Fill(dMultiplicityBin,four5n1n5n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4506 fIntFlowCorrelationsAllVsMPro[58]->Fill(dMultiplicityBin,four6n4n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4507 fIntFlowCorrelationsAllVsMPro[59]->Fill(dMultiplicityBin,four6n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4508 }
4509 } // end of if(dMult>3)
4510
4511 // 5-particle:
4512 Double_t five3n3n3n2n1n = 0.; // <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
4513 Double_t five4n2n3n2n1n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
4514 Double_t five3n2n3n1n1n = 0.; // <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
4515 Double_t five3n2n2n2n1n = 0.; // <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
4516 Double_t five5n1n3n2n1n = 0.; // <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
403e3389 4517 Double_t five6n2n2n1n1n = 0.; // <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5)>
4518 Double_t five4n1n1n3n3n = 0.; // <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5)>
b84464d3 4519 if(dMult>4)
4520 {
4521 five3n3n3n2n1n = (reQ3nQ3nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar
4522 + reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+3.*reQ6nQ3nstarQ3nstar+4.*reQ5nQ3nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar
4523 - 2.*(dMult-6.)*reQ3nQ2nstarQ1nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4524 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4525 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4526 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(3.*dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4527 - pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4528 + 2.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4529 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4530 five4n2n3n2n1n = (reQ4nQ2nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
4531 - reQ4nQ2nQ3nstarQ3nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar
4532 - reQ3nQ1nQ2nstarQ2nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4533 + 3.*reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ5nQ4nstarQ1nstar
4534 + 3.*reQ5nQ3nstarQ2nstar-(dMult-7.)*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+7.*reQ3nQ2nstarQ1nstar
4535 + 4.*reQ2nQ1nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4536 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4537 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4538 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4539 + 2.*(dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+(dMult-12.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4540 - 2.*dMult*(dMult-12.))
4541 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4542 five3n2n3n1n1n = (reQ3nQ2nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-2.*reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nstarQ1nstarQ1nstar
4543 - 2.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ5nQ4nstarQ1nstar+3.*reQ5nQ3nstarQ2nstar+6.*reQ4nQ3nstarQ1nstar
4544 + 2.*reQ4nQ2nstarQ2nstar+9.*reQ3nQ2nstarQ1nstar-(dMult-8.)*reQ2nQ1nstarQ1nstar
4545 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4546 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4547 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4548 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-12.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4549 + 2.*(dMult-9.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
4550 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4551 five3n2n2n2n1n = (reQ3nQ2nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
4552 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+reQ5nQ4nstarQ1nstar
4553 + 4.*reQ5nQ3nstarQ2nstar+reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar-2.*(dMult-6.)*reQ3nQ2nstarQ1nstar
4554 + 4.*reQ2nQ1nstarQ1nstar-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4555 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4556 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4557 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4558 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4559 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4560 five5n1n3n2n1n = (reQ5nQ1nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ3nstarQ3nstar
4561 - reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
4562 + 3.*reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+4.*reQ5nQ4nstarQ1nstar
4563 - (dMult-7.)*reQ5nQ3nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+6.*reQ3nQ2nstarQ1nstar
4564 + 3.*reQ2nQ1nstarQ1nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4565 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4566 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4567 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4568 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4569 + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4570 - 2.*dMult*(dMult-12.))
e1d101a6 4571 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
53884472 4572 // Peter Jochumzsen:
4573 five6n2n2n1n1n = (reQ6nQ2nstarQ2nstarQ1nstarQ1nstar
4574 - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.)
4575 - 14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.)
4576 - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.)
4577 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)
4578 - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
4579 - 6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.)
4580 + 2.*reQ2nQ1nstarQ1nstar + 8.*reQ3nQ2nstarQ1nstar
4581 + 5.*reQ6nQ4nstarQ2nstar - reQ6nQ4nstarQ1nstarQ1nstar
4582 + 2.*reQ6nQ3nstarQ3nstar - reQ6nQ2nstarQ2nstarQ2nstar
4583 + 4.*reQ4nQ2nstarQ2nstar - 2.*reQ4nQ2nstarQ1nstarQ1nstar
4584 + 2.*reQ5nQ4nstarQ1nstar - 2.*reQ5nQ2nstarQ2nstarQ1nstar
4585 + 4.*reQ4nQ3nstarQ1nstar + 4.*reQ5nQ3nstarQ2nstar
4586 + 4.*reQ6nQ5nstarQ1nstar - 4.*reQ6nQ3nstarQ2nstarQ1nstar + 24.*dMult)
e1d101a6 4587 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4588 // Peter Jochumzsen:
4589 five4n1n1n3n3n = (reQ4nQ1nQ1nQ3nstarQ3nstar-16.*pow(dReQ1n,2.)-16.*pow(dImQ1n,2.)
4590 - 10.*pow(dReQ2n,2.)-10.*pow(dImQ2n,2.)-12.*pow(dReQ3n,2.)-12.*pow(dImQ3n,2.)
4591 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)-4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
4592 - 2.*pow(dReQ6n,2.)-2.*pow(dImQ6n,2.)+6.*reQ2nQ1nstarQ1nstar
4593 - 1.*reQ6nQ4nstarQ1nstarQ1nstar-1.*reQ4nQ2nQ3nstarQ3nstar
4594 + 1.*reQ6nQ4nstarQ2nstar-2.*reQ5nQ1nQ3nstarQ3nstar
4595 + 2.*reQ4nQ2nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar
4596 - 2.*reQ3nQ1nstarQ1nstarQ1nstar+10.*reQ3nQ2nstarQ1nstar
4597 + 2.*reQ6nQ5nstarQ1nstar+2.*reQ6nQ3nstarQ3nstar
4598 - 4.*reQ4nQ1nQ3nstarQ2nstar+4.*reQ5nQ4nstarQ1nstar
4599 + 4.*reQ5nQ3nstarQ2nstar + 24.*dMult)
4600 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4601 // Average 5-particle correlations for all events:
4602 fIntFlowCorrelationsAllPro->Fill(52.5,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4603 fIntFlowCorrelationsAllPro->Fill(53.5,five4n2n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4604 fIntFlowCorrelationsAllPro->Fill(54.5,five3n2n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4605 fIntFlowCorrelationsAllPro->Fill(55.5,five3n2n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4606 fIntFlowCorrelationsAllPro->Fill(56.5,five5n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4607 fIntFlowCorrelationsAllPro->Fill(60.5,five6n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4608 fIntFlowCorrelationsAllPro->Fill(61.5,five4n1n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4609 if(fCalculateAllCorrelationsVsM)
4610 {
3842bdcd 4611 fIntFlowCorrelationsAllVsMPro[52]->Fill(dMultiplicityBin,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4612 fIntFlowCorrelationsAllVsMPro[53]->Fill(dMultiplicityBin,five4n2n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4613 fIntFlowCorrelationsAllVsMPro[54]->Fill(dMultiplicityBin,five3n2n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4614 fIntFlowCorrelationsAllVsMPro[55]->Fill(dMultiplicityBin,five3n2n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4615 fIntFlowCorrelationsAllVsMPro[56]->Fill(dMultiplicityBin,five5n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4616 fIntFlowCorrelationsAllVsMPro[60]->Fill(dMultiplicityBin,five6n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4617 fIntFlowCorrelationsAllVsMPro[61]->Fill(dMultiplicityBin,five4n1n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
e1d101a6 4618 }
4619 } // end of if(dMult>4)
4620
4621 // 6-particle:
4622 Double_t six3n2n1n3n2n1n = 0.; // <cos(n(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
4623 Double_t six3n3n2n2n1n1n = 0.; // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-1*phi5-1*phi6)>
4624 if(dMult>5.)
4625 {
4626 six3n2n1n3n2n1n = (dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar-2.*reQ3nQ3nQ3nstarQ2nstarQ1nstar
4627 - 2.*reQ3nQ2nQ2nstarQ2nstarQ1nstar-2.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4628 - 2.*reQ3nQ2nQ3nstarQ1nstarQ1nstar-2.*reQ4nQ2nQ3nstarQ2nstarQ1nstar
4629 - 2.*reQ5nQ1nQ3nstarQ2nstarQ1nstar+4.*reQ6nQ3nstarQ2nstarQ1nstar
4630 + 2.*reQ5nQ1nQ4nstarQ2nstar+2.*reQ5nQ1nQ3nstarQ3nstar
4631 + 2.*reQ4nQ2nQ3nstarQ3nstar+6.*reQ4nQ1nQ3nstarQ2nstar
4632 + 2.*reQ5nQ3nstarQ1nstarQ1nstar+2.*reQ5nQ2nstarQ2nstarQ1nstar
4633 + 6.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ4nQ2nstarQ1nstarQ1nstar
4634 - 4.*reQ6nQ5nstarQ1nstar-4.*reQ6nQ4nstarQ2nstar-6.*reQ5nQ4nstarQ1nstar
4635 - 4.*reQ6nQ3nstarQ3nstar+2.*(dMult-11.)*reQ5nQ3nstarQ2nstar
4636 + 2.*(dMult-13.)*reQ4nQ3nstarQ1nstar-8.*reQ4nQ2nstarQ2nstar
4637 + 2.*(5.*dMult-32.)*reQ3nQ2nstarQ1nstar+2.*reQ3nQ1nstarQ1nstarQ1nstar
4638 + 2.*(dMult-13.)*reQ2nQ1nstarQ1nstar
4639 - (dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4640 + (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4641 + (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4642 - (dMult-11.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4643 - (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4644 + 4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-(dMult-12.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4645 - (dMult-16.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)
4646 + (dMult*dMult-19.*dMult+68.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4647 + (dMult*dMult-19.*dMult+72.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4648 + pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4649 + (dMult*dMult-20.*dMult+80.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4650 - dMult*(dMult-12.)*(dMult-10.))
4651 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4652
4653 // Peter Jochumzsen:
4654 six3n3n2n2n1n1n = (reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar
4655 + (80.-16.*dMult)*pow(dReQ1n,2.)+(80.-16.*dMult)*pow(dImQ1n,2.)
4656 + (78.-16.*dMult)*pow(dReQ2n,2.)+(78.-16.*dMult)*pow(dImQ2n,2.)
4657 + (72.-16.*dMult)*pow(dReQ3n,2.)+(72.-16.*dMult)*pow(dImQ3n,2.)
4658 + 14.*pow(dReQ4n,2.)+14.*pow(dImQ4n,2.)
4659 + 8.*pow(dReQ5n,2.)+8.*pow(dImQ5n,2.)
4660 + 6.*pow(dReQ6n,2.)+6.*pow(dImQ6n,2.)
4661 + 1.*reQ6nQ2nstarQ2nstarQ2nstar - 1.*reQ6nQ2nstarQ2nstarQ1nstarQ1nstar
4662 - 76.*reQ3nQ2nstarQ1nstar + 4.*reQ3nQ1nstarQ1nstarQ1nstar
4663 - 8.*reQ3nQ2nstarQ1nstar + 8.*dQ2nQ1nQ2nstarQ1nstar
4664 + 4.*reQ5nQ2nstarQ2nstarQ1nstar - 2.*reQ6nQ3nstarQ3nstar
4665 + 4.*reQ6nQ3nstarQ2nstarQ1nstar - 4.*reQ5nQ4nstarQ1nstar
4666 + 16.*dMult*reQ3nQ2nstarQ1nstar - 2.*reQ4nQ2nstarQ2nstar
4667 - 4.*reQ3nQ3nQ3nstarQ2nstarQ1nstar -8.*reQ4nQ3nstarQ1nstar
4668 - 10.*reQ4nQ2nstarQ2nstar + 4.*reQ4nQ2nstarQ1nstarQ1nstar
4669 - 12.*reQ4nQ3nstarQ1nstar + 8.*dQ3nQ1nQ3nstarQ1nstar
4670 + 8.*reQ3nQ1nQ2nstarQ2nstar - 4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4671 + 5.*reQ4nQ2nQ3nstarQ3nstar+2.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4672 + 4.*reQ5nQ1nQ3nstarQ3nstar+2.*pow(pow(dReQ3n,2.)+pow(dImQ3n,2.),2.)
4673 - 6.*reQ6nQ3nstarQ3nstar - 14.*reQ2nQ1nstarQ1nstar
4674 - 1.*reQ3nQ3nQ2nstarQ2nstarQ2nstar-4.*reQ3nQ2nQ2nstarQ2nstarQ1nstar
4675 - 1.*reQ4nQ1nQ1nQ3nstarQ3nstar-8.*reQ5nQ3nstarQ2nstar
4676 + 2.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.) - 10.*reQ2nQ1nstarQ1nstar
4677 - 4.*reQ6nQ5nstarQ1nstar-5.*reQ6nQ4nstarQ2nstar
4678 + 1.*reQ6nQ4nstarQ1nstarQ1nstar-8.*reQ5nQ3nstarQ2nstar
4679 + 4.*reQ4nQ1nQ3nstarQ2nstar+8.*dQ3nQ2nQ3nstarQ2nstar
4680 - 120.*dMult + 16.*dMult*dMult)
4681 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4682
4683 // Average 6-particle correlations for all events:
4684 fIntFlowCorrelationsAllPro->Fill(57.5,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4685 fIntFlowCorrelationsAllPro->Fill(62.5,six3n3n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4686 if(fCalculateAllCorrelationsVsM)
4687 {
3842bdcd 4688 fIntFlowCorrelationsAllVsMPro[57]->Fill(dMultiplicityBin,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4689 fIntFlowCorrelationsAllVsMPro[62]->Fill(dMultiplicityBin,six3n3n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
e1d101a6 4690 }
4691 } // end of if(dMult>5.)
4692
1db7eced 4693 // |Qn|^2/M, |Q2n|^2/M, |Qn|^4/(M(2M-1)), Re[Q2nQn^*Qn^*]/M, ... vs multiplicity (#RPs, #POIs or external):
4694 if(fUseQvectorTerms)
4695 {
4696 Double_t dM = dMultiplicityBin-0.5;
4697 if(dM>1.) // TBI re-think this if statement
4698 {
4699 fQvectorTermsVsMult[0]->Fill(dMultiplicityBin,(pow(dReQ1n,2.)+pow(dImQ1n,2.))/dM);
4700 fQvectorTermsVsMult[1]->Fill(dMultiplicityBin,(pow(dReQ2n,2.)+pow(dImQ2n,2.))/dM);
4701 fQvectorTermsVsMult[2]->Fill(dMultiplicityBin,(pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.))/(dM*(2.*dM-1.)));
4702 fQvectorTermsVsMult[3]->Fill(dMultiplicityBin,reQ2nQ1nstarQ1nstar/pow(dM,1.5)); // TBI a bit of heuristic inserted here, re-think the rescaling factor
4703 } // end of if(dM>1.) // TBI re-think this if statement
4704 } // end of if(fUseQvectorTerms)
4705
e1d101a6 4706} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations()
4707
4708//=====================================================================================================
4709
4710void AliFlowAnalysisWithQCumulants::CalculateMixedHarmonics()
4711{
4712 // Calculate in this method all multi-particle azimuthal correlations in mixed harmonics.
4713 // (Remark: For completeness sake, we also calculate here again correlations in the same harmonic.)
4714
4715 // a) Access Q-vectors and multiplicity of current event;
c10259fb 4716 // b) Determine multiplicity weights and fill some histos;
e1d101a6 4717 // c) Calculate 2-p correlations;
4718 // d) Calculate 3-p correlations;
4719 // e) Calculate 4-p correlations;
4720 // f) Calculate 5-p correlations;
4721 // g) Calculate 6-p correlations;
4722 // h) Calculate 7-p correlations;
c10259fb 4723 // i) Calculate 8-p correlations.
e1d101a6 4724
4725 // a) Access Q-vectors and multiplicity of current event:
4726 // Multiplicity of an event:
4727 Double_t dMult = (*fSpk)(0,0);
4728 // Real parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
4729 Double_t dReQ1n = (*fReQ)(0,0);
4730 Double_t dReQ2n = (*fReQ)(1,0);
4731 Double_t dReQ3n = (*fReQ)(2,0);
4732 Double_t dReQ4n = (*fReQ)(3,0);
4733 Double_t dReQ5n = (*fReQ)(4,0);
4734 Double_t dReQ6n = (*fReQ)(5,0);
4735 Double_t dReQ7n = (*fReQ)(6,0);
4736 Double_t dReQ8n = (*fReQ)(7,0);
4737 Double_t dReQ9n = (*fReQ)(8,0);
4738 Double_t dReQ10n = (*fReQ)(9,0);
4739 Double_t dReQ11n = (*fReQ)(10,0);
4740 Double_t dReQ12n = (*fReQ)(11,0);
4741 // Imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
4742 Double_t dImQ1n = (*fImQ)(0,0);
4743 Double_t dImQ2n = (*fImQ)(1,0);
4744 Double_t dImQ3n = (*fImQ)(2,0);
4745 Double_t dImQ4n = (*fImQ)(3,0);
4746 Double_t dImQ5n = (*fImQ)(4,0);
4747 Double_t dImQ6n = (*fImQ)(5,0);
4748 Double_t dImQ7n = (*fImQ)(6,0);
4749 Double_t dImQ8n = (*fImQ)(7,0);
4750 Double_t dImQ9n = (*fImQ)(8,0);
4751 Double_t dImQ10n = (*fImQ)(9,0);
4752 Double_t dImQ11n = (*fImQ)(10,0);
4753 Double_t dImQ12n = (*fImQ)(11,0);
c10259fb 4754 // All mixed correlators:
4755 Double_t allMixedCorrelators[139] = {0.};
e1d101a6 4756
4757 // Real parts of expressions involving various combinations of Q-vectors which appears
4758 // simultaneously in several equations for multiparticle correlations bellow:
4759 // Re[Q_{2n}Q_{n}^*Q_{n}^*]
4760 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n;
4761 // Re[Q_{6n}Q_{3n}^*Q_{3n}^*]
4762 Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n;
4763 // Re[Q_{4n}Q_{2n}^*Q_{2n}^*]
4764 Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
4765 // Re[Q_{4n}Q_{3n}^*Q_{n}^*]
4766 Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
4767 // Re[Q_{3n}Q_{2n}^*Q_{n}^*]
4768 Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
4769 + dImQ3n*dImQ2n*dReQ1n;
4770 // Re[Q_{5n}Q_{3n}^*Q_{2n}^*]
4771 Double_t reQ5nQ3nstarQ2nstar = dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
4772 + dImQ5n*dImQ2n*dReQ3n;
4773 // Re[Q_{5n}Q_{4n}^*Q_{1n}^*]
4774 Double_t reQ5nQ4nstarQ1nstar = dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
4775 + dImQ5n*dImQ4n*dReQ1n;
4776 // Re[Q_{6n}Q_{5n}^*Q_{1n}^*]
4777 Double_t reQ6nQ5nstarQ1nstar = dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
4778 + dImQ6n*dImQ5n*dReQ1n;
4779 // Re[Q_{6n}Q_{4n}^*Q_{2n}^*]
4780 Double_t reQ6nQ4nstarQ2nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
4781 + dImQ6n*dImQ4n*dReQ2n;
4782 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{2n}^*]
4783 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
4784 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
4785 // Re[Q_{3n}Q_{n}^*Q_{n}^*Q_{n}^*]
4786 Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
4787 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
4788 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
4789 Double_t reQ6nQ2nstarQ2nstarQ2nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
4790 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
4791 // Re[Q_{4n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4792 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
4793 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);
4794 // Re[Q_{4n}Q_{2n}^*Q_{3n}^*Q_{3n}^*]
4795 Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
4796 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;
4797 // Re[Q_{4n}Q_{n}Q_{3n}^*Q_{2n}^*]
4798 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
4799 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
4800 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
4801 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
4802
4803 // Re[Q_{5n}Q_{n}Q_{4n}^*Q_{2n}^*]
4804 Double_t reQ5nQ1nQ4nstarQ2nstar = dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
4805 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
4806 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
4807 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n;
4808 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{3n}^*]
4809 Double_t reQ5nQ1nQ3nstarQ3nstar = dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
4810 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
4811 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n;
4812 // Re[Q_{5n}Q_{3n}^*Q_{n}^*Q_{n}^*]
4813 Double_t reQ5nQ3nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
4814 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
4815 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n;
4816 // Re[Q_{5n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
4817 Double_t reQ5nQ2nstarQ2nstarQ1nstar = -pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
4818 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
4819 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n;
4820 // Re[Q_{6n}Q_{4n}^*Q_{n}^*Q_{n}^*]
4821 Double_t reQ6nQ4nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
4822 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
4823 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n;
4824 /*// |Q_{2n}|^2 |Q_{n}|^2
4825 Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
4826 // |Q_{4n}|^2 |Q_{2n}|^2
4827 Double_t dQ4nQ2nQ4nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.));
4828 // |Q_{3n}|^2 |Q_{2n}|^2
4829 Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.));
4830 // |Q_{5n}|^2 |Q_{n}|^2
4831 Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
4832 // |Q_{3n}|^2 |Q_{n}|^2
4833 Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));*/
4834 // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*]
4835 /*Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
4836 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));*/
4837 // Re[Q_{2n}Q_{2n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4838 /*Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
4839 * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);*/
4840 /*// Re[Q_{4n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4841 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
4842 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
4843 - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;*/
4844 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4845 /*Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
4846 * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
4847 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);*/
4848 // Re[Q_{6n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4849 Double_t reQ6nQ3nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
4850 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
4851 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
4852 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n;
4853 // Re[Q_{3n}Q_{3n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4854 /*Double_t reQ3nQ3nQ3nstarQ2nstarQ1nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
4855 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
4856 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);*/
4857 /*// Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
4858 Double_t reQ3nQ3nQ2nstarQ2nstarQ2nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.)
4859 - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
4860 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n
4861 - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.)
4862 + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);*/
4863 // Re[Q_{4n}Q_{2n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4864 /*Double_t reQ4nQ2nQ3nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
4865 * (dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
4866 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n);*/
4867 // Re[Q_{3n}Q_{2n}Q_{3n}^*Q_{n}^*Q_{n}^*]
4868 /*Double_t reQ3nQ2nQ3nstarQ1nstarQ1nstar = -(pow(dImQ3n,2.)+pow(dReQ3n,2.))
4869 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n);*/
4870 // Re[Q_{3n}Q_{2n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
4871 /*Double_t reQ3nQ2nQ2nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
4872 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
4873 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);*/
4874/* // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4875 Double_t reQ5nQ1nQ3nstarQ2nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
4876 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
4877 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
4878 */
4879 /*
4880 // Re[Q_{2n}Q_{2n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4881 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
4882 + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
4883 * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
4884 - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n);
4885 // Re[Q_{3n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4886 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
4887 * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
4888 + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
4889 */
4890 // |Q_{2n}|^2 |Q_{n}|^4
4891 //Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.);
4892 /*
4893 // |Q_{3n}|^2 |Q_{2n}|^2 |Q_{n}|^2
4894 Double_t dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4895 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
4896 // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4897 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4898 * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
4899 + 2.*dReQ1n*dImQ1n*dImQ2n);
4900 */
4901 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*]
4902 /*Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
4903 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
4904 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
4905 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
4906 + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
4907 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n
4908 - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
4909 */
4910 // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*]
4911 /*
4912 Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
4913 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
4914 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
4915 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n
4916 + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
4917 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
4918 + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n;*/
4919 /*
4920 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*]
4921 Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n
4922 - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n
4923 + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n
4924 + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n
4925 - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n
4926 + dImQ1n*dImQ2n*dImQ3n);
4927 */
4928
c10259fb 4929 // b) Determine multiplicity weights and fill some histos:
e1d101a6 4930 Double_t d2pMultiplicityWeight = 0.; // weight for <2>_{...} to get <<2>>_{...}
4931 Double_t d3pMultiplicityWeight = 0.; // weight for <3>_{...} to get <<3>>_{...}
4932 Double_t d4pMultiplicityWeight = 0.; // weight for <4>_{...} to get <<4>>_{...}
4933 Double_t d5pMultiplicityWeight = 0.; // weight for <5>_{...} to get <<5>>_{...}
c10259fb 4934 Double_t d6pMultiplicityWeight = 0.; // weight for <6>_{...} to get <<6>>_{...}
e1d101a6 4935 Double_t d7pMultiplicityWeight = 0.; // weight for <7>_{...} to get <<7>>_{...}
c10259fb 4936 Double_t d8pMultiplicityWeight = 0.; // weight for <8>_{...} to get <<8>>_{...}
df23c5ae 4937 if(fMultiplicityWeight->Contains("combinations")) // default multiplicity weight
e1d101a6 4938 {
4939 d2pMultiplicityWeight = dMult*(dMult-1.);
4940 d3pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.);
4941 d4pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.);
4942 d5pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.);
c10259fb 4943 d6pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.);
e1d101a6 4944 d7pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.);
c10259fb 4945 d8pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.);
df23c5ae 4946 } else if(fMultiplicityWeight->Contains("unit"))
e1d101a6 4947 {
4948 d2pMultiplicityWeight = 1.;
4949 d3pMultiplicityWeight = 1.;
4950 d4pMultiplicityWeight = 1.;
4951 d5pMultiplicityWeight = 1.;
c10259fb 4952 d6pMultiplicityWeight = 1.;
e1d101a6 4953 d7pMultiplicityWeight = 1.;
c10259fb 4954 d8pMultiplicityWeight = 1.;
df23c5ae 4955 } else if(fMultiplicityWeight->Contains("multiplicity"))
e1d101a6 4956 {
4957 d2pMultiplicityWeight = dMult;
4958 d3pMultiplicityWeight = dMult;
4959 d4pMultiplicityWeight = dMult;
4960 d5pMultiplicityWeight = dMult;
c10259fb 4961 d6pMultiplicityWeight = dMult;
e1d101a6 4962 d7pMultiplicityWeight = dMult;
c10259fb 4963 d8pMultiplicityWeight = dMult;
4964 }
4965 for(Int_t p=0;p<=1;p++) // power (0=linear,1=quadratic)
4966 {
4967 fMixedHarmonicEventWeights[p]->Fill(0.5,pow(dMult,p+1));
4968 fMixedHarmonicEventWeights[p]->Fill(1.5,pow(d2pMultiplicityWeight,p+1));
4969 fMixedHarmonicEventWeights[p]->Fill(2.5,pow(d3pMultiplicityWeight,p+1));
4970 fMixedHarmonicEventWeights[p]->Fill(3.5,pow(d4pMultiplicityWeight,p+1));
4971 fMixedHarmonicEventWeights[p]->Fill(4.5,pow(d5pMultiplicityWeight,p+1));
4972 fMixedHarmonicEventWeights[p]->Fill(5.5,pow(d6pMultiplicityWeight,p+1));
4973 fMixedHarmonicEventWeights[p]->Fill(6.5,pow(d7pMultiplicityWeight,p+1));
4974 fMixedHarmonicEventWeights[p]->Fill(7.5,pow(d8pMultiplicityWeight,p+1));
4975 } // end of for(Int_t p=0;p<=1;p++) // power (0=linear,1=quadratic)
4976 fMixedHarmonicProductOfEventWeights->Fill(0.5,0.5,dMult*dMult);
4977 fMixedHarmonicProductOfEventWeights->Fill(0.5,1.5,dMult*d2pMultiplicityWeight);
4978 fMixedHarmonicProductOfEventWeights->Fill(0.5,2.5,dMult*d3pMultiplicityWeight);
4979 fMixedHarmonicProductOfEventWeights->Fill(0.5,3.5,dMult*d4pMultiplicityWeight);
4980 fMixedHarmonicProductOfEventWeights->Fill(0.5,4.5,dMult*d5pMultiplicityWeight);
4981 fMixedHarmonicProductOfEventWeights->Fill(0.5,5.5,dMult*d6pMultiplicityWeight);
4982 fMixedHarmonicProductOfEventWeights->Fill(0.5,6.5,dMult*d7pMultiplicityWeight);
4983 fMixedHarmonicProductOfEventWeights->Fill(0.5,7.5,dMult*d8pMultiplicityWeight);
4984 fMixedHarmonicProductOfEventWeights->Fill(1.5,1.5,d2pMultiplicityWeight*d2pMultiplicityWeight);
4985 fMixedHarmonicProductOfEventWeights->Fill(1.5,2.5,d2pMultiplicityWeight*d3pMultiplicityWeight);
4986 fMixedHarmonicProductOfEventWeights->Fill(1.5,3.5,d2pMultiplicityWeight*d4pMultiplicityWeight);
4987 fMixedHarmonicProductOfEventWeights->Fill(1.5,4.5,d2pMultiplicityWeight*d5pMultiplicityWeight);
4988 fMixedHarmonicProductOfEventWeights->Fill(1.5,5.5,d2pMultiplicityWeight*d6pMultiplicityWeight);
4989 fMixedHarmonicProductOfEventWeights->Fill(1.5,6.5,d2pMultiplicityWeight*d7pMultiplicityWeight);
4990 fMixedHarmonicProductOfEventWeights->Fill(1.5,7.5,d2pMultiplicityWeight*d8pMultiplicityWeight);
4991 fMixedHarmonicProductOfEventWeights->Fill(2.5,2.5,d3pMultiplicityWeight*d3pMultiplicityWeight);
4992 fMixedHarmonicProductOfEventWeights->Fill(2.5,3.5,d3pMultiplicityWeight*d4pMultiplicityWeight);
4993 fMixedHarmonicProductOfEventWeights->Fill(2.5,4.5,d3pMultiplicityWeight*d5pMultiplicityWeight);
4994 fMixedHarmonicProductOfEventWeights->Fill(2.5,5.5,d3pMultiplicityWeight*d6pMultiplicityWeight);
4995 fMixedHarmonicProductOfEventWeights->Fill(2.5,6.5,d3pMultiplicityWeight*d7pMultiplicityWeight);
4996 fMixedHarmonicProductOfEventWeights->Fill(2.5,7.5,d3pMultiplicityWeight*d8pMultiplicityWeight);
4997 fMixedHarmonicProductOfEventWeights->Fill(3.5,3.5,d4pMultiplicityWeight*d4pMultiplicityWeight);
4998 fMixedHarmonicProductOfEventWeights->Fill(3.5,4.5,d4pMultiplicityWeight*d5pMultiplicityWeight);
4999 fMixedHarmonicProductOfEventWeights->Fill(3.5,5.5,d4pMultiplicityWeight*d6pMultiplicityWeight);
5000 fMixedHarmonicProductOfEventWeights->Fill(3.5,6.5,d4pMultiplicityWeight*d7pMultiplicityWeight);
5001 fMixedHarmonicProductOfEventWeights->Fill(3.5,7.5,d4pMultiplicityWeight*d8pMultiplicityWeight);
5002 fMixedHarmonicProductOfEventWeights->Fill(4.5,4.5,d5pMultiplicityWeight*d5pMultiplicityWeight);
5003 fMixedHarmonicProductOfEventWeights->Fill(4.5,5.5,d5pMultiplicityWeight*d6pMultiplicityWeight);
5004 fMixedHarmonicProductOfEventWeights->Fill(4.5,6.5,d5pMultiplicityWeight*d7pMultiplicityWeight);
5005 fMixedHarmonicProductOfEventWeights->Fill(4.5,7.5,d5pMultiplicityWeight*d8pMultiplicityWeight);
5006 fMixedHarmonicProductOfEventWeights->Fill(5.5,5.5,d6pMultiplicityWeight*d6pMultiplicityWeight);
5007 fMixedHarmonicProductOfEventWeights->Fill(5.5,6.5,d6pMultiplicityWeight*d7pMultiplicityWeight);
5008 fMixedHarmonicProductOfEventWeights->Fill(5.5,7.5,d6pMultiplicityWeight*d8pMultiplicityWeight);
5009 fMixedHarmonicProductOfEventWeights->Fill(6.5,6.5,d7pMultiplicityWeight*d7pMultiplicityWeight);
5010 fMixedHarmonicProductOfEventWeights->Fill(6.5,7.5,d7pMultiplicityWeight*d8pMultiplicityWeight);
5011 fMixedHarmonicProductOfEventWeights->Fill(7.5,7.5,d8pMultiplicityWeight*d8pMultiplicityWeight);
5012
e1d101a6 5013 // c) Calculate 2-p correlations:
5014 Double_t two1n1n = 0.; // <2>_{1n|1n} = <cos(1n(phi1-phi2))>
5015 Double_t two2n2n = 0.; // <2>_{2n|2n} = <cos(2n(phi1-phi2))>
5016 Double_t two3n3n = 0.; // <2>_{3n|3n} = <cos(3n(phi1-phi2))>
5017 Double_t two4n4n = 0.; // <2>_{4n|4n} = <cos(4n(phi1-phi2))>
5018 Double_t two5n5n = 0.; // <2>_{5n|5n} = <cos(5n(phi1-phi2))>
5019 Double_t two6n6n = 0.; // <2>_{6n|6n} = <cos(6n(phi1-phi2))>
5020 if(dMult>1.)
5021 {
5022 two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.));
5023 two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.));
5024 two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.));
5025 two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.));
5026 two5n5n = (pow(dReQ5n,2.)+pow(dImQ5n,2.)-dMult)/(dMult*(dMult-1.));
5027 two6n6n = (pow(dReQ6n,2.)+pow(dImQ6n,2.)-dMult)/(dMult*(dMult-1.));
5028 f2pCorrelations->Fill(0.5,two1n1n,d2pMultiplicityWeight);
5029 f2pCorrelations->Fill(1.5,two2n2n,d2pMultiplicityWeight);
5030 f2pCorrelations->Fill(2.5,two3n3n,d2pMultiplicityWeight);
5031 f2pCorrelations->Fill(3.5,two4n4n,d2pMultiplicityWeight);
5032 f2pCorrelations->Fill(4.5,two5n5n,d2pMultiplicityWeight);
5033 f2pCorrelations->Fill(5.5,two6n6n,d2pMultiplicityWeight);
c10259fb 5034 allMixedCorrelators[0]=two1n1n;
5035 allMixedCorrelators[1]=two2n2n;
5036 allMixedCorrelators[2]=two3n3n;
5037 allMixedCorrelators[3]=two4n4n;
5038 allMixedCorrelators[4]=two5n5n;
5039 allMixedCorrelators[5]=two6n6n;
e1d101a6 5040 } // end of if(dMult>1.)
5041
5042 // d) Calculate 3-p correlations:
5043 // d1) Two distinct harmonics (3):
5044 Double_t three2n1n1n = 0.; // <3>_{2n|1n,1n} = <cos(n(2*phi1-1*phi2-1*phi3))>
5045 Double_t three4n2n2n = 0.; // <3>_{4n|2n,2n} = <cos(n(4*phi1-2*phi2-2*phi3))>
5046 Double_t three6n3n3n = 0.; // <3>_{6n|3n,3n} = <cos(n(6*phi1-3*phi2-3*phi3))>
5047 // d2) Three distinct harmonics (6):
5048 Double_t three3n2n1n = 0.; // <3>_{3n|2n,1n} = <cos(n(3*phi1-2*phi2-1*phi3))>
5049 Double_t three4n3n1n = 0.; // <3>_{4n|3n,1n} = <cos(n(4*phi1-3*phi2-1*phi3))>
5050 Double_t three5n3n2n = 0.; // <3>_{5n|3n,2n} = <cos(n(5*phi1-3*phi2-2*phi3))>
5051 Double_t three5n4n1n = 0.; // <3>_{5n|4n,1n} = <cos(n(5*phi1-4*phi2-1*phi3))>
5052 Double_t three6n4n2n = 0.; // <3>_{6n|4n,2n} = <cos(n(6*phi1-4*phi2-2*phi3))>
5053 Double_t three6n5n1n = 0.; // <3>_{6n|5n,1n} = <cos(n(6*phi1-5*phi2-1*phi3))>
5054 if(dMult>2.)
5055 {
5056 three2n1n1n = (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n
5057 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
5058 / (dMult*(dMult-1.)*(dMult-2.));
5059 three4n2n2n = (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
5060 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
5061 / (dMult*(dMult-1.)*(dMult-2.));
5062 three6n3n3n = (reQ6nQ3nstarQ3nstar
c10259fb 5063 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
e1d101a6 5064 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*dMult)
5065 / (dMult*(dMult-1.)*(dMult-2.));
5066 three3n2n1n = (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
5067 + dImQ3n*dImQ2n*dReQ1n-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5068 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
5069 / (dMult*(dMult-1.)*(dMult-2.));
5070 three4n3n1n = (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
5071 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5072 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
5073 / (dMult*(dMult-1.)*(dMult-2.));
5074 three5n3n2n = (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
5075 + dImQ5n*dImQ2n*dReQ3n-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5076 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5077 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
5078 / (dMult*(dMult-1.)*(dMult-2.));
5079 three5n4n1n = (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
5080 + dImQ5n*dImQ4n*dReQ1n-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5081 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5082 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
5083 / (dMult*(dMult-1.)*(dMult-2.));
5084 three6n4n2n = (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
5085 + dImQ6n*dImQ4n*dReQ2n-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5086 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
5087 / (dMult*(dMult-1.)*(dMult-2.));
5088 three6n5n1n = (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
5089 + dImQ6n*dImQ5n*dReQ1n-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5090 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))
5091 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
5092 / (dMult*(dMult-1.)*(dMult-2.));
5093 f3pCorrelations->Fill(0.5,three2n1n1n,d3pMultiplicityWeight);
5094 f3pCorrelations->Fill(1.5,three4n2n2n,d3pMultiplicityWeight);
5095 f3pCorrelations->Fill(2.5,three6n3n3n,d3pMultiplicityWeight);
5096 //f3pCorrelations->Fill(3.5,0.,d3pMultiplicityWeight); // empty TBI
5097 f3pCorrelations->Fill(4.5,three3n2n1n,d3pMultiplicityWeight);
5098 f3pCorrelations->Fill(5.5,three4n3n1n,d3pMultiplicityWeight);
5099 f3pCorrelations->Fill(6.5,three5n3n2n,d3pMultiplicityWeight);
5100 f3pCorrelations->Fill(7.5,three5n4n1n,d3pMultiplicityWeight);
5101 f3pCorrelations->Fill(8.5,three6n4n2n,d3pMultiplicityWeight);
5102 f3pCorrelations->Fill(9.5,three6n5n1n,d3pMultiplicityWeight);
c10259fb 5103 allMixedCorrelators[6]=three2n1n1n;
5104 allMixedCorrelators[7]=three4n2n2n;
5105 allMixedCorrelators[8]=three6n3n3n;
5106 allMixedCorrelators[9]=three3n2n1n;
5107 allMixedCorrelators[10]=three4n3n1n;
5108 allMixedCorrelators[11]=three5n3n2n;
5109 allMixedCorrelators[12]=three5n4n1n;
5110 allMixedCorrelators[13]=three6n4n2n;
5111 allMixedCorrelators[14]=three6n5n1n;
e1d101a6 5112 } // end of if(dMult>2.)
5113
5114 // e) Calculate 4-p correlations:
5115 // e1) Single harmonic (6):
5116 Double_t four1n1n1n1n = 0.; // <4>_{1n,1n|1n,1n} = <cos(1*n(phi1+phi2-phi3-phi4))>
5117 Double_t four2n2n2n2n = 0.; // <4>_{2n,2n|2n,2n} = <cos(2*n(phi1+phi2-phi3-phi4))>
5118 Double_t four3n3n3n3n = 0.; // <4>_{3n,3n|3n,3n} = <cos(3*n(phi1+phi2-phi3-phi4))>
5119 Double_t four4n4n4n4n = 0.; // <4>_{4n,4n|4n,4n} = <cos(4*n(phi1+phi2-phi3-phi4))>
5120 Double_t four5n5n5n5n = 0.; // <4>_{5n,5n|5n,5n} = <cos(5*n(phi1+phi2-phi3-phi4))>
5121 Double_t four6n6n6n6n = 0.; // <4>_{6n,6n|6n,6n} = <cos(6*n(phi1+phi2-phi3-phi4))>
5122 // e2) "Standard candles" (15):
5123 Double_t four2n1n2n1n = 0.; // <4>_{2n,1n|2n,1n} = <cos(n(2*phi1+1*phi2-2*phi3-1*phi4))>
5124 Double_t four3n1n3n1n = 0.; // <4>_{3n,1n|3n,1n} = <cos(n(3*phi1+1*phi2-3*phi3-1*phi4))>
5125 Double_t four3n2n3n2n = 0.; // <4>_{3n,2n|3n,2n} = <cos(n(3*phi1+2*phi2-3*phi3-2*phi4))>
5126 Double_t four4n1n4n1n = 0.; // <4>_{4n,1n|4n,1n} = <cos(n(4*phi1+1*phi2-4*phi3-1*phi4))>
5127 Double_t four4n2n4n2n = 0.; // <4>_{4n,2n|4n,2n} = <cos(n(4*phi1+2*phi2-4*phi3-2*phi4))>
5128 Double_t four4n3n4n3n = 0.; // <4>_{4n,3n|4n,3n} = <cos(n(4*phi1+3*phi2-4*phi3-3*phi4))>
5129 Double_t four5n1n5n1n = 0.; // <4>_{5n,1n|5n,1n} = <cos(n(5*phi1+1*phi2-5*phi3-1*phi4))>
5130 Double_t four5n2n5n2n = 0.; // <4>_{5n,2n|5n,2n} = <cos(n(5*phi1+2*phi2-5*phi3-2*phi4))>
5131 Double_t four5n3n5n3n = 0.; // <4>_{5n,3n|5n,3n} = <cos(n(5*phi1+3*phi2-5*phi3-3*phi4))>
5132 Double_t four5n4n5n4n = 0.; // <4>_{5n,4n|5n,4n} = <cos(n(5*phi1+4*phi2-5*phi3-4*phi4))>
5133 Double_t four6n1n6n1n = 0.; // <4>_{6n,1n|6n,1n} = <cos(n(6*phi1+1*phi2-6*phi3-1*phi4))>
5134 Double_t four6n2n6n2n = 0.; // <4>_{6n,2n|6n,2n} = <cos(n(6*phi1+2*phi2-6*phi3-2*phi4))>
5135 Double_t four6n3n6n3n = 0.; // <4>_{6n,3n|6n,3n} = <cos(n(6*phi1+3*phi2-6*phi3-3*phi4))>
5136 Double_t four6n4n6n4n = 0.; // <4>_{6n,4n|6n,4n} = <cos(n(6*phi1+4*phi2-6*phi3-4*phi4))>
5137 Double_t four6n5n6n5n = 0.; // <4>_{6n,5n|6n,5n} = <cos(n(6*phi1+5*phi2-6*phi3-5*phi4))>
5138 // e3) Two distinct harmonics (2):
5139 Double_t four3n1n1n1n = 0.; // <4>_{3n|1n,1n,1n} = <cos(n(3*phi1-1*phi2-1*phi3-1*phi4))>
5140 Double_t four6n2n2n2n = 0.; // <4>_{6n|2n,2n,2n} = <cos(n(6*phi1-2*phi2-2*phi3-2*phi4))>
5141 // e4) Three distinct harmonics (10):
5142 Double_t four3n1n2n2n = 0.; // <4>_{3n,1n|2n,2n} = <cos(n(3*phi1+1*phi2-2*phi3-2*phi4))>
5143 Double_t four4n2n1n1n = 0.; // <4>_{4n|2n,1n,1n} = <cos(n(4*phi1-2*phi2-1*phi3-1*phi4))>
5144 Double_t four4n2n3n3n = 0.; // <4>_{4n,2n|3n,3n} = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
5145 Double_t four5n2n2n1n = 0.; // <4>_{5n|2n,2n,1n} = <cos(n(5*phi1-2*phi2-2*phi3-1*phi4))>
5146 Double_t four5n3n1n1n = 0.; // <4>_{5n|3n,1n,1n} = <cos(n(5*phi1-3*phi2-1*phi3-1*phi4))>
5147 Double_t four5n1n3n3n = 0.; // <4>_{5n,1n|3n,3n} = <cos(n(5*phi1+1*phi2-3*phi3-3*phi4))>
5148 Double_t four5n3n4n4n = 0.; // <4>_{5n,3n|4n,4n} = <cos(n(5*phi1+3*phi2-4*phi3-4*phi4))>
5149 Double_t four6n4n1n1n = 0.; // <4>_{6n|4n,1n,1n} = <cos(n(6*phi1-4*phi2-1*phi3-1*phi4))>
5150 Double_t four6n2n4n4n = 0.; // <4>_{6n,2n|4n,4n} = <cos(n(6*phi1+2*phi2-4*phi3-4*phi4))>
5151 Double_t four6n4n5n5n = 0.; // <4>_{6n,4n|5n,5n} = <cos(n(6*phi1+4*phi2-5*phi3-5*phi4))>
5152 // e5) Four distinct harmonics (8):
5153 Double_t four4n1n3n2n = 0.; // <4>_{4n,1n|3n,2n} = <cos(n(4*phi1+1*phi2-3*phi3-2*phi4))>
5154 Double_t four5n1n4n2n = 0.; // <4>_{5n,1n|4n,2n} = <cos(n(5*phi1+1*phi2-4*phi3-2*phi4))>
5155 Double_t four5n2n4n3n = 0.; // <4>_{5n,2n|4n,3n} = <cos(n(5*phi1+2*phi2-4*phi3-3*phi4))>
5156 Double_t four6n1n4n3n = 0.; // <4>_{6n,1n|4n,3n} = <cos(n(6*phi1+1*phi2-4*phi3-3*phi4))>
5157 Double_t four6n1n5n2n = 0.; // <4>_{6n,1n|5n,2n} = <cos(n(6*phi1+1*phi2-5*phi3-2*phi4))>
5158 Double_t four6n3n2n1n = 0.; // <4>_{6n|3n,2n,1n} = <cos(n(6*phi1-3*phi2-2*phi3-1*phi4))>
5159 Double_t four6n2n5n3n = 0.; // <4>_{6n,2n|5n,3n} = <cos(n(6*phi1+2*phi2-5*phi3-3*phi4))>
5160 Double_t four6n3n5n4n = 0.; // <4>_{6n,3n|5n,4n} = <cos(n(6*phi1+3*phi2-5*phi3-4*phi4))>
5161 if(dMult>3.)
5162 {
5163 // Single harmonic (6):
5164 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
5165 + pow(dImQ1n,2.))-2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5166 + (pow(dReQ2n,2.)+pow(dImQ2n,2.)))
5167 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5168 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
5169 + pow(dImQ2n,2.))-2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5170 + (pow(dReQ4n,2.)+pow(dImQ4n,2.)))
5171 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5172 four3n3n3n3n = (2.*dMult*(dMult-3.)+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ3n,2.)
5173 + pow(dImQ3n,2.))-2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5174 + (pow(dReQ6n,2.)+pow(dImQ6n,2.)))
5175 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5176 four4n4n4n4n = (2.*dMult*(dMult-3.)+pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ4n,2.)
5177 + pow(dImQ4n,2.))-2.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5178 + (pow(dReQ8n,2.)+pow(dImQ8n,2.)))
5179 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5180 four5n5n5n5n = (2.*dMult*(dMult-3.)+pow((pow(dReQ5n,2.)+pow(dImQ5n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ5n,2.)
5181 + pow(dImQ5n,2.))-2.*(pow(dReQ5n,2.)*dReQ10n+2.*dReQ5n*dImQ5n*dImQ10n-pow(dImQ5n,2.)*dReQ10n)
5182 + (pow(dReQ10n,2.)+pow(dImQ10n,2.)))
5183 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5184 four6n6n6n6n = (2.*dMult*(dMult-3.)+pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ6n,2.)
5185 + pow(dImQ6n,2.))-2.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
5186 + (pow(dReQ12n,2.)+pow(dImQ12n,2.)))
5187 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5188 // "Standard candles" (15):
5189 four2n1n2n1n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5190 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
5191 + dImQ3n*dImQ2n*dReQ1n)-2.*(pow(dReQ1n,2.)*dReQ2n
5192 + 2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n))
5193 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5194 - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5195 + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
5196 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5197 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5198 four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5199 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5200 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5201 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5202 + pow(dReQ2n,2.)+pow(dImQ2n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5203 + dMult*(dMult-6.))
5204 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5205 four3n2n3n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5206 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5207 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5208 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5209 - (dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
5210 + dMult*(dMult-6.))
5211 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5212 four4n1n4n1n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5213 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ1n*dImQ4n+dImQ5n*dImQ1n*dReQ4n)
5214 - 2.*(dReQ3n*dReQ4n*dReQ1n+dImQ3n*dImQ4n*dReQ1n+dReQ3n*dImQ4n*dImQ1n-dImQ3n*dImQ1n*dReQ4n)
5215 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)
5216 - (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
5217 + dMult*(dMult-6.))
5218 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5219 four4n2n4n2n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5220 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
5221 + dImQ6n*dImQ4n*dReQ2n)-2.*(pow(dReQ2n,2.)*dReQ4n
5222 + 2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n))
5223 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5224 - ((dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5225 + (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
5226 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5227 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5228 four4n3n4n3n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5229 - 2.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ3n*dImQ4n+dImQ7n*dImQ3n*dReQ4n)
5230 - 2.*(dReQ1n*dReQ4n*dReQ3n+dImQ1n*dImQ4n*dReQ3n+dReQ1n*dImQ4n*dImQ3n-dImQ1n*dImQ3n*dReQ4n)
5231 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5232 - (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
5233 + dMult*(dMult-6.))
5234 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5235 four5n1n5n1n = (((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5236 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5237 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5238 + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5239 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.))
5240 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5241 four5n2n5n2n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5242 - 2.*(dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ2n*dImQ5n+dImQ7n*dImQ2n*dReQ5n)
5243 - 2.*(dReQ3n*dReQ5n*dReQ2n+dImQ3n*dImQ5n*dReQ2n+dReQ3n*dImQ5n*dImQ2n-dImQ3n*dImQ2n*dReQ5n)
5244 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)
5245 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
5246 + dMult*(dMult-6.))
5247 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5248 four5n3n5n3n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5249 - 2.*(dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
5250 - 2.*(dReQ2n*dReQ5n*dReQ3n+dImQ2n*dImQ5n*dReQ3n+dReQ2n*dImQ5n*dImQ3n-dImQ2n*dImQ3n*dReQ5n)
5251 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5252 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
5253 + dMult*(dMult-6.))
5254 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5255 four5n4n5n4n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5256 - 2.*(dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ4n*dImQ5n+dImQ9n*dImQ4n*dReQ5n)
5257 - 2.*(dReQ1n*dReQ5n*dReQ4n+dImQ1n*dImQ5n*dReQ4n+dReQ1n*dImQ5n*dImQ4n-dImQ1n*dImQ4n*dReQ5n)
5258 + pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5259 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
5260 + dMult*(dMult-6.))
5261 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5262 four6n1n6n1n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5263 - 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ1n*dImQ6n+dImQ7n*dImQ1n*dReQ6n)
5264 - 2.*(dReQ5n*dReQ6n*dReQ1n+dImQ5n*dImQ6n*dReQ1n+dReQ5n*dImQ6n*dImQ1n-dImQ5n*dImQ1n*dReQ6n)
5265 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5266 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
5267 + dMult*(dMult-6.))
5268 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5269 four6n2n6n2n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5270 - 2.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
5271 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5272 + pow(dReQ8n,2.)+pow(dImQ8n,2.)-(dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5273 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5274 + dMult*(dMult-6.))
5275 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5276 four6n3n6n3n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5277 - 2.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n
5278 + dImQ9n*dImQ6n*dReQ3n)-2.*(pow(dReQ3n,2.)*dReQ6n
5279 + 2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n))
5280 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5281 - ((dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5282 + (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-(pow(dReQ9n,2.)+pow(dImQ9n,2.)))
5283 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5284 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5285 four6n4n6n4n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5286 - 2.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
5287 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5288 + pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5289 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
5290 + dMult*(dMult-6.))
5291 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5292 four6n5n6n5n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5293 - 2.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ5n*dImQ6n+dImQ11n*dImQ5n*dReQ6n)
5294 - 2.*(dReQ1n*dReQ6n*dReQ5n+dImQ1n*dImQ6n*dReQ5n+dReQ1n*dImQ6n*dImQ5n-dImQ1n*dImQ5n*dReQ6n)
5295 + pow(dReQ11n,2.)+pow(dImQ11n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5296 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
5297 + dMult*(dMult-6.))
5298 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5299 // Two distinct harmonics (2):
5300 four3n1n1n1n = (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
5301 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3)
5302 - 3.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5303 - 3.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5304 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5305 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5306 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5307 four6n2n2n2n = (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
5308 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3)
5309 - 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5310 - 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5311 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5312 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult)
5313 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5314 // Three distinct harmonics (10):
5315 four3n1n2n2n = ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5316 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
5317 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5318 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5319 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n))
5320 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5321 - (2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5322 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5323 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5324 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5325 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5326 four4n2n1n1n = ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5327 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n)
5328 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5329 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5330 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n))
5331 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5332 - ((pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5333 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5334 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5335 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5336 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5337 four4n2n3n3n = ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
5338 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n
5339 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5340 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5341 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5342 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5343 + (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5344 + 2.*(2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5345 + (pow(dReQ1n,2.)+pow(dImQ1n,2.))-3.*dMult))
5346 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5347 four5n2n2n1n = (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
5348 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
5349 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n
5350 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5351 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5352 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5353 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5354 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
5355 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5356 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5357 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5358 four5n3n1n1n = (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
5359 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
5360 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n
5361 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5362 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5363 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5364 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5365 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5366 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5367 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5368 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5369 four5n1n3n3n = (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
5370 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
5371 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n
5372 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5373 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5374 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5375 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5376 + pow(dReQ6n,2.)+pow(dImQ6n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5377 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5378 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5379 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5380 four5n3n4n4n = ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ5n*dReQ3n-dImQ5n*dImQ3n)
5381 + 2.*dReQ4n*dImQ4n*(dReQ5n*dImQ3n+dImQ5n*dReQ3n)
5382 - (dReQ8n*dReQ3n*dReQ5n-dReQ8n*dImQ3n*dImQ5n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
5383 - (pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5384 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5385 - 2.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
5386 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5387 + 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5388 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5389 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5390 four6n4n1n1n = (-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
5391 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
5392 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n
5393 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5394 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5395 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5396 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5397 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5398 + pow(dReQ4n,2.)+pow(dImQ4n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5399 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5400 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5401 four6n2n4n4n = ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
5402 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n)
5403 - (pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5404 - (dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
5405 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n))
5406 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5407 - (2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5408 - (pow(dReQ8n,2.)+pow(dImQ8n,2.))-2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5409 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
5410 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5411 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5412 four6n4n5n5n = ((pow(dReQ5n,2.)-pow(dImQ5n,2.))*(dReQ6n*dReQ4n-dImQ6n*dImQ4n)
5413 + 2.*dReQ5n*dImQ5n*(dReQ6n*dImQ4n+dImQ6n*dReQ4n)
5414 - (dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
5415 - (pow(dReQ5n,2.)*dReQ10n+2.*dReQ5n*dImQ5n*dImQ10n-pow(dImQ5n,2.)*dReQ10n)
5416 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5417 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5418 + pow(dReQ10n,2.)+pow(dImQ10n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5419 + 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5420 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5421 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5422 // Four distinct harmonics (8):
5423 four4n1n3n2n = (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5424 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5425 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5426 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n
5427 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5428 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5429 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5430 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5431 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5432 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5433 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5434 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5435 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5436 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5437 four5n1n4n2n = (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
5438 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
5439 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n+dImQ1n*dImQ2n*dReQ4n*dReQ5n
5440 + dReQ1n*dReQ2n*dReQ4n*dReQ5n
5441 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5442 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5443 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5444 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5445 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5446 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5447 + pow(dReQ6n,2.)+pow(dImQ6n,2.)
5448 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5449 + pow(dReQ3n,2.)+pow(dImQ3n,2.)+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5450 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5451 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5452 four5n2n4n3n = (dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
5453 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
5454 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
5455 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n
5456 - (dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
5457 - (dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
5458 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5459 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5460 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5461 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5462 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5463 + 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5464 + 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5465 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5466 four6n1n4n3n = (dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
5467 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
5468 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n+dImQ1n*dImQ3n*dReQ4n*dReQ6n
5469 + dReQ1n*dReQ3n*dReQ4n*dReQ6n
5470 - (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
5471 - (dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
5472 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5473 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5474 - (dReQ4n*dReQ1n*dReQ3n-dReQ4n*dImQ1n*dImQ3n+dImQ4n*dReQ1n*dImQ3n+dImQ4n*dImQ1n*dReQ3n)
5475 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5476 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5477 + 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5478 + pow(dReQ2n,2.)+pow(dImQ2n,2.)+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5479 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5480 four6n1n5n2n = (dImQ1n*dImQ2n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ1n*dReQ2n
5481 + dImQ2n*dImQ6n*dReQ1n*dReQ5n-dImQ1n*dImQ6n*dReQ2n*dReQ5n
5482 - dImQ2n*dImQ5n*dReQ1n*dReQ6n+dImQ1n*dImQ5n*dReQ2n*dReQ6n+dImQ1n*dImQ2n*dReQ5n*dReQ6n
5483 + dReQ1n*dReQ2n*dReQ5n*dReQ6n
5484 - (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
5485 - (dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
5486 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5487 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5488 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5489 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5490 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5491 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
5492 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5493 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5494 four6n3n2n1n = (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
5495 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
5496 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
5497 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n
5498 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5499 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5500 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5501 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5502 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5503 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5504 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5505 + pow(dReQ4n,2.)+pow(dImQ4n,2.)+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5506 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5507 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5508 four6n2n5n3n = (dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
5509 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
5510 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n+dImQ2n*dImQ3n*dReQ5n*dReQ6n
5511 + dReQ2n*dReQ3n*dReQ5n*dReQ6n
5512 - (dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
5513 - (dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n+dImQ8n*dImQ5n*dReQ3n)
5514 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5515 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5516 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5517 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5518 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5519 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5520 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5521 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5522 four6n3n5n4n = (dImQ3n*dImQ4n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ3n*dReQ4n
5523 + dImQ4n*dImQ6n*dReQ3n*dReQ5n-dImQ3n*dImQ6n*dReQ4n*dReQ5n
5524 - dImQ4n*dImQ5n*dReQ3n*dReQ6n+dImQ3n*dImQ5n*dReQ4n*dReQ6n+dImQ3n*dImQ4n*dReQ5n*dReQ6n
5525 + dReQ3n*dReQ4n*dReQ5n*dReQ6n
5526 - (dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
5527 - (dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ5n*dImQ4n+dImQ9n*dImQ5n*dReQ4n)
5528 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5529 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5530 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5531 - (dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
5532 + pow(dReQ9n,2.)+pow(dImQ9n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5533 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5534 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5535 + pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5536 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5537 f4pCorrelations->Fill(0.5,four1n1n1n1n,d4pMultiplicityWeight);
5538 f4pCorrelations->Fill(1.5,four2n2n2n2n,d4pMultiplicityWeight);
5539 f4pCorrelations->Fill(2.5,four3n3n3n3n,d4pMultiplicityWeight);
5540 f4pCorrelations->Fill(3.5,four4n4n4n4n,d4pMultiplicityWeight);
5541 f4pCorrelations->Fill(4.5,four5n5n5n5n,d4pMultiplicityWeight);
5542 f4pCorrelations->Fill(5.5,four6n6n6n6n,d4pMultiplicityWeight);
5543 //f4pCorrelations->Fill(6.5,0.,d4pMultiplicityWeight); // empty
5544 f4pCorrelations->Fill(7.5,four2n1n2n1n,d4pMultiplicityWeight);
5545 f4pCorrelations->Fill(8.5,four3n1n3n1n,d4pMultiplicityWeight);
5546 f4pCorrelations->Fill(9.5,four3n2n3n2n,d4pMultiplicityWeight);
5547 f4pCorrelations->Fill(10.5,four4n1n4n1n,d4pMultiplicityWeight);
5548 f4pCorrelations->Fill(11.5,four4n2n4n2n,d4pMultiplicityWeight);
5549 f4pCorrelations->Fill(12.5,four4n3n4n3n,d4pMultiplicityWeight);
5550 f4pCorrelations->Fill(13.5,four5n1n5n1n,d4pMultiplicityWeight);
5551 f4pCorrelations->Fill(14.5,four5n2n5n2n,d4pMultiplicityWeight);
5552 f4pCorrelations->Fill(15.5,four5n3n5n3n,d4pMultiplicityWeight);
5553 f4pCorrelations->Fill(16.5,four5n4n5n4n,d4pMultiplicityWeight);
5554 f4pCorrelations->Fill(17.5,four6n1n6n1n,d4pMultiplicityWeight);
5555 f4pCorrelations->Fill(18.5,four6n2n6n2n,d4pMultiplicityWeight);
5556 f4pCorrelations->Fill(19.5,four6n3n6n3n,d4pMultiplicityWeight);
5557 f4pCorrelations->Fill(20.5,four6n4n6n4n,d4pMultiplicityWeight);
5558 f4pCorrelations->Fill(21.5,four6n5n6n5n,d4pMultiplicityWeight);
5559 //f4pCorrelations->Fill(22.5,0.,d4pMultiplicityWeight); // empty
5560 f4pCorrelations->Fill(23.5,four3n1n1n1n,d4pMultiplicityWeight);
5561 f4pCorrelations->Fill(24.5,four6n2n2n2n,d4pMultiplicityWeight);
5562 //f4pCorrelations->Fill(25.5,0.,d4pMultiplicityWeight); // empty
5563 f4pCorrelations->Fill(26.5,four3n1n2n2n,d4pMultiplicityWeight);
5564 f4pCorrelations->Fill(27.5,four4n2n1n1n,d4pMultiplicityWeight);
5565 f4pCorrelations->Fill(28.5,four4n2n3n3n,d4pMultiplicityWeight);
5566 f4pCorrelations->Fill(29.5,four5n2n2n1n,d4pMultiplicityWeight);
5567 f4pCorrelations->Fill(30.5,four5n3n1n1n,d4pMultiplicityWeight);
5568 f4pCorrelations->Fill(31.5,four5n1n3n3n,d4pMultiplicityWeight);
5569 f4pCorrelations->Fill(32.5,four5n3n4n4n,d4pMultiplicityWeight);
5570 f4pCorrelations->Fill(33.5,four6n4n1n1n,d4pMultiplicityWeight);
5571 f4pCorrelations->Fill(34.5,four6n2n4n4n,d4pMultiplicityWeight);
5572 f4pCorrelations->Fill(35.5,four6n4n5n5n,d4pMultiplicityWeight);
5573 //f4pCorrelations->Fill(36.5,0.,d4pMultiplicityWeight); // empty
5574 f4pCorrelations->Fill(37.5,four4n1n3n2n,d4pMultiplicityWeight);
5575 f4pCorrelations->Fill(38.5,four5n1n4n2n,d4pMultiplicityWeight);
5576 f4pCorrelations->Fill(39.5,four5n2n4n3n,d4pMultiplicityWeight);
5577 f4pCorrelations->Fill(40.5,four6n1n4n3n,d4pMultiplicityWeight);
5578 f4pCorrelations->Fill(41.5,four6n1n5n2n,d4pMultiplicityWeight);
5579 f4pCorrelations->Fill(42.5,four6n3n2n1n,d4pMultiplicityWeight);
5580 f4pCorrelations->Fill(43.5,four6n2n5n3n,d4pMultiplicityWeight);
5581 f4pCorrelations->Fill(44.5,four6n3n5n4n,d4pMultiplicityWeight);
c10259fb 5582 allMixedCorrelators[15]=four1n1n1n1n;
5583 allMixedCorrelators[16]=four2n2n2n2n;
5584 allMixedCorrelators[17]=four3n3n3n3n;
5585 allMixedCorrelators[18]=four4n4n4n4n;
5586 allMixedCorrelators[19]=four5n5n5n5n;
5587 allMixedCorrelators[20]=four6n6n6n6n;
5588 allMixedCorrelators[21]=four2n1n2n1n;
5589 allMixedCorrelators[22]=four3n1n3n1n;
5590 allMixedCorrelators[23]=four3n2n3n2n;
5591 allMixedCorrelators[24]=four4n1n4n1n;
5592 allMixedCorrelators[25]=four4n2n4n2n;
5593 allMixedCorrelators[26]=four4n3n4n3n;
5594 allMixedCorrelators[27]=four5n1n5n1n;
5595 allMixedCorrelators[28]=four5n2n5n2n;
5596 allMixedCorrelators[29]=four5n3n5n3n;
5597 allMixedCorrelators[30]=four5n4n5n4n;
5598 allMixedCorrelators[31]=four6n1n6n1n;
5599 allMixedCorrelators[32]=four6n2n6n2n;
5600 allMixedCorrelators[33]=four6n3n6n3n;
5601 allMixedCorrelators[34]=four6n4n6n4n;
5602 allMixedCorrelators[35]=four6n5n6n5n;
5603 allMixedCorrelators[36]=four3n1n1n1n;
5604 allMixedCorrelators[37]=four6n2n2n2n;
5605 allMixedCorrelators[38]=four3n1n2n2n;
5606 allMixedCorrelators[39]=four4n2n1n1n;
5607 allMixedCorrelators[40]=four4n2n3n3n;
5608 allMixedCorrelators[41]=four5n2n2n1n;
5609 allMixedCorrelators[42]=four5n3n1n1n;
5610 allMixedCorrelators[43]=four5n1n3n3n;
5611 allMixedCorrelators[44]=four5n3n4n4n;
5612 allMixedCorrelators[45]=four6n4n1n1n;
5613 allMixedCorrelators[46]=four6n2n4n4n;
5614 allMixedCorrelators[47]=four6n4n5n5n;
5615 allMixedCorrelators[48]=four4n1n3n2n;
5616 allMixedCorrelators[49]=four5n1n4n2n;
5617 allMixedCorrelators[50]=four5n2n4n3n;
5618 allMixedCorrelators[51]=four6n1n4n3n;
5619 allMixedCorrelators[52]=four6n1n5n2n;
5620 allMixedCorrelators[53]=four6n3n2n1n;
5621 allMixedCorrelators[54]=four6n2n5n3n;
5622 allMixedCorrelators[55]=four6n3n5n4n;
e1d101a6 5623 } // end of if(dMult>3.)
5624
5625 // f) Calculate 5-p correlations:
5626 // f1) "Standard candles" (30):
5627 Double_t five3n2n3n1n1n = 0.; // <5>_{3n,2n|3n,1n,1n} = <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5))>
5628 Double_t five4n1n2n2n1n = 0.; // <5>_{4n,1n|2n,2n,1n} = <cos(n(4*phi1+1*phi2-2*phi3-2*phi4-1*phi5))>
5629 Double_t five4n2n3n2n1n = 0.; // <5>_{4n,2n|3n,2n,1n} = <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5))>
5630 Double_t five4n3n3n2n2n = 0.; // <5>_{4n,3n|3n,2n,2n} = <cos(n(4*phi1+3*phi2-3*phi3-2*phi4-2*phi5))>
5631 Double_t five4n2n4n1n1n = 0.; // <5>_{4n,2n|4n,1n,1n} = <cos(n(4*phi1+2*phi2-4*phi3-1*phi4-1*phi5))>
5632 Double_t five4n3n4n2n1n = 0.; // <5>_{4n,3n|4n,2n,1n} = <cos(n(4*phi1+3*phi2-4*phi3-2*phi4-1*phi5))>
5633 Double_t five5n1n3n2n1n = 0.; // <5>_{5n,1n|3n,2n,1n} = <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5))>
5634 Double_t five5n2n5n1n1n = 0.; // <5>_{5n,2n|5n,1n,1n} = <cos(n(5*phi1+2*phi2-5*phi3-1*phi4-1*phi5))>
5635 Double_t five5n2n4n2n1n = 0.; // <5>_{5n,2n|4n,2n,1n} = <cos(n(5*phi1+2*phi2-4*phi3-2*phi4-1*phi5))>
5636 Double_t five5n3n4n3n1n = 0.; // <5>_{5n,3n|4n,3n,1n} = <cos(n(5*phi1+3*phi2-4*phi3-3*phi4-1*phi5))>
5637 Double_t five5n4n4n3n2n = 0.; // <5>_{5n,4n|4n,3n,2n} = <cos(n(5*phi1+4*phi2-4*phi3-3*phi4-2*phi5))>
5638 Double_t five5n3n5n2n1n = 0.; // <5>_{5n,3n|5n,2n,1n} = <cos(n(5*phi1+3*phi2-5*phi3-2*phi4-1*phi5))>
5639 Double_t five5n4n5n2n2n = 0.; // <5>_{5n,4n|5n,2n,2n} = <cos(n(5*phi1+4*phi2-5*phi3-2*phi4-2*phi5))>
5640 Double_t five5n4n5n3n1n = 0.; // <5>_{5n,4n|5n,3n,1n} = <cos(n(5*phi1+4*phi2-5*phi3-3*phi4-1*phi5))>
5641 Double_t five6n1n3n3n1n = 0.; // <5>_{6n,1n|3n,3n,1n} = <cos(n(6*phi1+1*phi2-3*phi3-3*phi4-1*phi5))>
5642 Double_t five6n2n3n3n2n = 0.; // <5>_{6n,2n|3n,3n,2n} = <cos(n(6*phi1+2*phi2-3*phi3-3*phi4-2*phi5))>
5643 Double_t five6n1n4n2n1n = 0.; // <5>_{6n,1n|4n,2n,1n} = <cos(n(6*phi1+1*phi2-4*phi3-2*phi4-1*phi5))>
5644 Double_t five6n3n4n3n2n = 0.; // <5>_{6n,3n|4n,3n,2n} = <cos(n(6*phi1+3*phi2-4*phi3-3*phi4-2*phi5))>
5645 Double_t five6n4n4n3n3n = 0.; // <5>_{6n,4n|4n,3n,3n} = <cos(n(6*phi1+4*phi2-4*phi3-3*phi4-3*phi5))>
5646 Double_t five6n2n5n2n1n = 0.; // <5>_{6n,2n|5n,2n,1n} = <cos(n(6*phi1+2*phi2-5*phi3-2*phi4-1*phi5))>
5647 Double_t five6n3n5n3n1n = 0.; // <5>_{6n,3n|5n,3n,1n} = <cos(n(6*phi1+3*phi2-5*phi3-3*phi4-1*phi5))>
5648 Double_t five6n4n5n4n1n = 0.; // <5>_{6n,4n|5n,4n,1n} = <cos(n(6*phi1+4*phi2-5*phi3-4*phi4-1*phi5))>
5649 Double_t five6n5n5n3n3n = 0.; // <5>_{6n,5n|5n,3n,3n} = <cos(n(6*phi1+5*phi2-5*phi3-3*phi4-3*phi5))>
5650 Double_t five6n2n6n1n1n = 0.; // <5>_{6n,2n|6n,1n,1n} = <cos(n(6*phi1+2*phi2-6*phi3-1*phi4-1*phi5))>
5651 Double_t five6n3n6n2n1n = 0.; // <5>_{6n,3n|6n,2n,1n} = <cos(n(6*phi1+3*phi2-6*phi3-2*phi4-1*phi5))>
5652 Double_t five6n4n6n2n2n = 0.; // <5>_{6n,4n|6n,2n,2n} = <cos(n(6*phi1+4*phi2-6*phi3-2*phi4-2*phi5))>
5653 Double_t five6n4n6n3n1n = 0.; // <5>_{6n,4n|6n,3n,1n} = <cos(n(6*phi1+4*phi2-6*phi3-3*phi4-1*phi5))>
5654 Double_t five6n5n5n4n2n = 0.; // <5>_{6n,5n|5n,4n,2n} = <cos(n(6*phi1+5*phi2-5*phi3-4*phi4-2*phi5))>
5655 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
5656 Double_t five6n5n6n4n1n = 0.; // <5>_{6n,5n|6n,4n,1n} = <cos(n(6*phi1+5*phi2-6*phi3-4*phi4-1*phi5))>
5657 // f2) Two distinct harmonics (9):
5658 Double_t five2n1n1n1n1n = 0.; // <5>_{2n,1n|1n,1n,1n} = <cos(n(2*phi1+1*phi2-1*phi3-1*phi4-1*phi5))>
5659 Double_t five2n2n2n1n1n = 0.; // <5>_{2n,2n|2n,1n,1n} = <cos(n(2*phi1+2*phi2-2*phi3-1*phi4-1*phi5))>
5660 Double_t five3n3n2n2n2n = 0.; // <5>_{3n,3n|2n,2n,2n} = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
5661 Double_t five4n1n1n1n1n = 0.; // <5>_{4n|1n,1n,1n,1n} = <cos(n(4*phi1-1*phi2-1*phi3-1*phi4-1*phi5))>
5662 Double_t five4n2n2n2n2n = 0.; // <5>_{4n,2n|2n,2n,2n} = <cos(n(4*phi1+2*phi2-2*phi3-2*phi4-2*phi5))>
5663 Double_t five4n4n4n2n2n = 0.; // <5>_{4n,4n|4n,2n,2n} = <cos(n(4*phi1+4*phi2-4*phi3-2*phi4-2*phi5))>
5664 Double_t five6n3n3n3n3n = 0.; // <5>_{6n,3n|3n,3n,3n} = <cos(n(6*phi1+3*phi2-3*phi3-3*phi4-3*phi5))>
5665 Double_t five6n6n4n4n4n = 0.; // <5>_{6n,6n|4n,4n,4n} = <cos(n(6*phi1+6*phi2-4*phi3-4*phi4-4*phi5))>
5666 Double_t five6n6n6n3n3n = 0.; // <5>_{6n,6n|6n,3n,3n} = <cos(n(6*phi1+6*phi2-6*phi3-3*phi4-3*phi5))>
5667 // f3) Three distinct harmonics (30):
5668 Double_t five3n1n2n1n1n = 0.; // <5>_{3n,1n|2n,1n,1n} = <cos(n(3*phi1+1*phi2-2*phi3-1*phi4-1*phi5))>
5669 Double_t five3n2n2n2n1n = 0.; // <5>_{3n,2n|2n,2n,1n} = <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5))>
5670 Double_t five3n3n3n2n1n = 0.; // <5>_{3n,3n|3n,2n,1n} = <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5))>
5671 Double_t five4n1n3n1n1n = 0.; // <5>_{4n,1n|3n,1n,1n} = <cos(n(4*phi1+1*phi2-3*phi3-1*phi4-1*phi5))>
5672 Double_t five4n1n1n3n3n = 0.; // <5>_{4n,1n,1n|3n,3n} = <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5))>
5673 Double_t five4n3n3n3n1n = 0.; // <5>_{4n,3n|3n,3n,1n} = <cos(n(4*phi1+3*phi2-3*phi3-3*phi4-1*phi5))>
5674 Double_t five4n4n3n3n2n = 0.; // <5>_{4n,4n|3n,3n,2n} = <cos(n(4*phi1+4*phi2-3*phi3-3*phi4-2*phi5))>
5675 Double_t five4n4n4n3n1n = 0.; // <5>_{4n,4n|4n,3n,1n} = <cos(n(4*phi1+4*phi2-4*phi3-3*phi4-1*phi5))>
5676 Double_t five5n2n1n1n1n = 0.; // <5>_{5n|2n,1n,1n,1n} = <cos(n(5*phi1-2*phi2-1*phi3-1*phi4-1*phi5))>
5677 Double_t five5n1n2n2n2n = 0.; // <5>_{5n,1n|2n,2n,2n} = <cos(n(5*phi1+1*phi2-2*phi3-2*phi4-2*phi5))>
5678 Double_t five5n2n3n2n2n = 0.; // <5>_{5n,2n|3n,2n,2n} = <cos(n(5*phi1+2*phi2-3*phi3-2*phi4-2*phi5))>
5679 Double_t five5n3n3n3n2n = 0.; // <5>_{5n,3n|3n,3n,2n} = <cos(n(5*phi1+3*phi2-3*phi3-3*phi4-2*phi5))>
5680 Double_t five5n1n4n1n1n = 0.; // <5>_{5n,1n|4n,1n,1n} = <cos(n(5*phi1+1*phi2-4*phi3-1*phi4-1*phi5))>
5681 Double_t five5n4n3n3n3n = 0.; // <5>_{5n,4n|3n,3n,3n} = <cos(n(5*phi1+4*phi2-3*phi3-3*phi4-3*phi5))>
5682 Double_t five5n4n4n4n1n = 0.; // <5>_{5n,4n|4n,4n,1n} = <cos(n(5*phi1+4*phi2-4*phi3-4*phi4-1*phi5))>
5683 Double_t five5n5n4n3n3n = 0.; // <5>_{5n,5n|4n,3n,3n} = <cos(n(5*phi1+5*phi2-4*phi3-3*phi4-3*phi5))>
5684 Double_t five5n5n4n4n2n = 0.; // <5>_{5n,5n|4n,4n,2n} = <cos(n(5*phi1+5*phi2-4*phi3-4*phi4-2*phi5))>
5685 Double_t five5n5n5n3n2n = 0.; // <5>_{5n,5n|5n,3n,2n} = <cos(n(5*phi1+5*phi2-5*phi3-3*phi4-2*phi5))>
5686 Double_t five5n5n5n4n1n = 0.; // <5>_{5n,5n|5n,4n,1n} = <cos(n(5*phi1+5*phi2-5*phi3-4*phi4-1*phi5))>
5687 Double_t five6n2n2n1n1n = 0.; // <5>_{6n|2n,2n,1n,1n} = <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5))>
5688 Double_t five6n3n1n1n1n = 0.; // <5>_{6n|3n,1n,1n,1n} = <cos(n(6*phi1-3*phi2-1*phi3-1*phi4-1*phi5))>
5689 Double_t five6n1n1n4n4n = 0.; // <5>_{6n,1n,1n|4n,4n} = <cos(n(6*phi1+1*phi2+1*phi3-4*phi4-4*phi5))>
5690 Double_t five6n1n5n1n1n = 0.; // <5>_{6n,1n|5n,1n,1n} = <cos(n(6*phi1+1*phi2-5*phi3-1*phi4-1*phi5))>
5691 Double_t five6n2n4n2n2n = 0.; // <5>_{6n,2n|4n,2n,2n} = <cos(n(6*phi1+2*phi2-4*phi3-2*phi4-2*phi5))>
5692 Double_t five6n4n4n4n2n = 0.; // <5>_{6n,4n|4n,4n,2n} = <cos(n(6*phi1+4*phi2-4*phi3-4*phi4-2*phi5))>
5693 Double_t five6n2n2n5n5n = 0.; // <5>_{6n,2n,2n|5n,5n} = <cos(n(6*phi1+2*phi2+2*phi3-5*phi4-5*phi5))>
5694 Double_t five6n5n5n5n1n = 0.; // <5>_{6n,5n|5n,5n,1n} = <cos(n(6*phi1+5*phi2-5*phi3-5*phi4-1*phi5))>
5695 Double_t five6n6n5n5n2n = 0.; // <5>_{6n,6n|5n,5n,2n} = <cos(n(6*phi1+6*phi2-5*phi3-5*phi4-2*phi5))>
5696 Double_t five6n6n6n4n2n = 0.; // <5>_{6n,6n|6n,4n,2n} = <cos(n(6*phi1+6*phi2-6*phi3-4*phi4-2*phi5))>
5697 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
5698 // Four distinct harmonics (11):
5699 Double_t five5n2n3n3n1n = 0.; // <5>_{5n,2n|3n,3n,1n} = <cos(n(5*phi1+2*phi2-3*phi3-3*phi4-1*phi5))>
5700 Double_t five5n1n1n4n3n = 0.; // <5>_{5n,1n,1n|4n,3n} = <cos(n(5*phi1+1*phi2+1*phi3-4*phi4-3*phi5))>
5701 Double_t five5n3n4n2n2n = 0.; // <5>_{5n,3n|4n,2n,2n} = <cos(n(5*phi1+3*phi2-4*phi3-2*phi4-2*phi5))>
5702 Double_t five5n2n1n4n4n = 0.; // <5>_{5n,2n,1n|4n,4n} = <cos(n(5*phi1+2*phi2+1*phi3-4*phi4-4*phi5))>
5703 Double_t five6n1n3n2n2n = 0.; // <5>_{6n,1n|3n,2n,2n} = <cos(n(6*phi1+1*phi2-3*phi3-2*phi4-2*phi5))>
5704 Double_t five6n3n4n4n1n = 0.; // <5>_{6n,3n|4n,4n,1n} = <cos(n(6*phi1+3*phi2-4*phi3-4*phi4-1*phi5))>
5705 Double_t five6n1n1n5n3n = 0.; // <5>_{6n,1n,1n|5n,3n} = <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
5706 Double_t five6n3n5n2n2n = 0.; // <5>_{6n,3n|5n,2n,2n} = <cos(n(6*phi1+3*phi2-5*phi3-2*phi4-2*phi5))>
5707 Double_t five6n5n4n4n3n = 0.; // <5>_{6n,5n|4n,4n,3n} = <cos(n(6*phi1+5*phi2-4*phi3-4*phi4-3*phi5))>
5708 Double_t five6n3n1n5n5n = 0.; // <5>_{6n,3n,1n|5n,5n} = <cos(n(6*phi1+3*phi2+1*phi3-5*phi4-5*phi5))>
5709 Double_t five6n6n5n4n3n = 0.; // <5>_{6n,6n|5n,4n,3n} = <cos(n(6*phi1+6*phi2-5*phi3-4*phi4-3*phi5))>
5710 // Five distinct harmonics (3):
5711 Double_t five6n2n4n3n1n = 0.; // <5>_{6n,2n|4n,3n,1n} = <cos(n(6*phi1+2*phi2-4*phi3-3*phi4-1*phi5))>
5712 Double_t five6n2n1n5n4n = 0.; // <5>_{6n,2n,1n|5n,4n} = <cos(n(6*phi1+2*phi2+1*phi3-5*phi4-4*phi5))>
5713 Double_t five6n4n5n3n2n = 0.; // <5>_{6n,4n|5n,3n,2n} = <cos(n(6*phi1+4*phi2-5*phi3-3*phi4-2*phi5))>
5714 if(dMult>4.)
5715 {
5716 five3n2n3n1n1n = (-(pow(dImQ3n,2.)+pow(dReQ3n,2.))
5717 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n)
5718 - (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
5719 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
5720 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n)
5721 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5722 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5723 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5724 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5725 - (dReQ3n*pow(dReQ1n,3.)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
5726 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2.)-dImQ3n*pow(dImQ1n,3.))
5727 - 2.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5728 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5729 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5730 + 3.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5731 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5732 + 2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5733 + 9.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5734 - (dMult-8.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5735 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5736 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5737 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5738 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-12.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5739 + 2.*(dMult-9.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
5740 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5741 five4n1n2n2n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))
5742 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
5743 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5744 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5745 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5746 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5747 - 2.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
5748 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
5749 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
5750 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
5751 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
5752 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5753 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5754 + (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5755 + 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5756 + 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5757 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5758 + 3.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5759 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5760 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5761 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5762 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5763 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5764 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5765 - 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5766 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5767 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5768 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5769 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5770 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
5771 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5772 five4n2n3n2n1n = ((pow(dImQ2n,2.)+pow(dReQ2n,2.))*(dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
5773 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n)
5774 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
5775 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
5776 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
5777 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
5778 - (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
5779 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
5780 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
5781 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n)
5782 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
5783 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
5784 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5785 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5786 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5787 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5788 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
5789 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
5790 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5791 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5792 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5793 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5794 + (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5795 + pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n
5796 + dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n
5797 + 3.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5798 - (dMult-7.)*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5799 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5800 + 7.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5801 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5802 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5803 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5804 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5805 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5806 + 2.*(dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+(dMult-12.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5807 - 2.*dMult*(dMult-12.))
5808 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5809
5810 // *********************************************************************
5811 Double_t reQ7nQ3nstarQ2nstarQ2nstar = (dReQ7n*dReQ3n+dImQ7n*dImQ3n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
5812 + 2.*dReQ2n*dImQ2n*(dImQ7n*dReQ3n-dReQ7n*dImQ3n);
5813 Double_t reQ5nQ2nQ4nstarQ3nstar = dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
5814 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
5815 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
5816 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n;
5817 Double_t reQ7nQ4nstarQ3nstar = dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n
5818 + dImQ7n*dImQ4n*dReQ3n;
5819
5820
5821 Double_t reQ7nQ5nstarQ2nstar = dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n
5822 + dImQ7n*dImQ5n*dReQ2n;
5823
5824 // <5>_{6n,4n|4n,3n,3n}:
5825 Double_t reQ10nQ4nstarQ3nstarQ3nstar = (dReQ10n*dReQ4n+dImQ10n*dImQ4n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5826 + 2.*dReQ3n*dImQ3n*(dImQ10n*dReQ4n-dReQ10n*dImQ4n);
5827 Double_t reQ7nQ3nQ6nstarQ4nstar = dImQ3n*dImQ4n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ3n*dReQ4n
5828 + dImQ4n*dImQ7n*dReQ3n*dReQ6n-dImQ3n*dImQ7n*dReQ4n*dReQ6n
5829 - dImQ4n*dImQ6n*dReQ3n*dReQ7n+dImQ3n*dImQ6n*dReQ4n*dReQ7n
5830 + dImQ3n*dImQ4n*dReQ6n*dReQ7n+dReQ3n*dReQ4n*dReQ6n*dReQ7n;
5831 Double_t reQ10nQ7nstarQ3nstar = dReQ10n*dReQ7n*dReQ3n-dReQ10n*dImQ7n*dImQ3n+dImQ10n*dReQ7n*dImQ3n
5832 + dImQ10n*dImQ7n*dReQ3n;
5833 Double_t reQ10nQ6nstarQ4nstar = dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n
5834 + dImQ10n*dImQ6n*dReQ4n;
5835 Double_t reQ6nQ1nQ4nstarQ3nstar = dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
5836 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
5837 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
5838 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n;
5839 Double_t reQ7nQ6nstarQ1nstar = dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n
5840 + dImQ7n*dImQ6n*dReQ1n;
5841 // <5>_{6n,5n|5n,3n,3n}:
5842 /*Double_t reQ11nQ5nstarQ3nstarQ3nstar = (dReQ11n*dReQ5n+dImQ11n*dImQ5n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5843 + 2.*dReQ3n*dImQ3n*(dImQ11n*dReQ5n-dReQ11n*dImQ5n); */
5844 Double_t reQ6nQ2nQ5nstarQ3nstar = dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
5845 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
5846 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
5847 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n;
5848 Double_t reQ8nQ3nQ6nstarQ5nstar = dImQ3n*dImQ5n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ3n*dReQ5n
5849 + dImQ5n*dImQ8n*dReQ3n*dReQ6n-dImQ3n*dImQ8n*dReQ5n*dReQ6n
5850 - dImQ5n*dImQ6n*dReQ3n*dReQ8n+dImQ3n*dImQ6n*dReQ5n*dReQ8n
5851 + dImQ3n*dImQ5n*dReQ6n*dReQ8n+dReQ3n*dReQ5n*dReQ6n*dReQ8n;
5852 Double_t reQ11nQ6nstarQ5nstar = dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n
5853 + dImQ11n*dImQ6n*dReQ5n;
5854 Double_t reQ8nQ6nstarQ2nstar = dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n
5855 + dImQ8n*dImQ6n*dReQ2n;
5856 Double_t reQ11nQ8nstarQ3nstar = dReQ11n*dReQ8n*dReQ3n-dReQ11n*dImQ8n*dImQ3n+dImQ11n*dReQ8n*dImQ3n
5857 + dImQ11n*dImQ8n*dReQ3n;
5858 Double_t reQ8nQ5nstarQ3nstar = dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n
5859 + dImQ8n*dImQ5n*dReQ3n;
5860 // <5>_{5n,2n|5n,1n,1n}
5861 Double_t reQ7nQ5nstarQ1nstarQ1nstar = (dReQ7n*dReQ5n+dImQ7n*dImQ5n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5862 + 2.*dReQ1n*dImQ1n*(dImQ7n*dReQ5n-dReQ7n*dImQ5n);
5863 Double_t reQ6nQ1nQ5nstarQ2nstar = dImQ1n*dImQ2n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ1n*dReQ2n
5864 + dImQ2n*dImQ6n*dReQ1n*dReQ5n-dImQ1n*dImQ6n*dReQ2n*dReQ5n
5865 - dImQ2n*dImQ5n*dReQ1n*dReQ6n+dImQ1n*dImQ5n*dReQ2n*dReQ6n
5866 + dImQ1n*dImQ2n*dReQ5n*dReQ6n+dReQ1n*dReQ2n*dReQ5n*dReQ6n;
5867 // <5>_{5n,4n|5n,2n,2n}
5868 Double_t reQ9nQ5nstarQ2nstarQ2nstar = (dReQ9n*dReQ5n+dImQ9n*dImQ5n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
5869 + 2.*dReQ2n*dImQ2n*(dImQ9n*dReQ5n-dReQ9n*dImQ5n);
5870 Double_t reQ7nQ2nQ5nstarQ4nstar = dImQ2n*dImQ4n*dImQ5n*dImQ7n+dImQ5n*dImQ7n*dReQ2n*dReQ4n
5871 + dImQ4n*dImQ7n*dReQ2n*dReQ5n-dImQ2n*dImQ7n*dReQ4n*dReQ5n
5872 - dImQ4n*dImQ5n*dReQ2n*dReQ7n+dImQ2n*dImQ5n*dReQ4n*dReQ7n
5873 + dImQ2n*dImQ4n*dReQ5n*dReQ7n+dReQ2n*dReQ4n*dReQ5n*dReQ7n;
5874 Double_t reQ9nQ5nstarQ4nstar = dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ5n*dImQ4n
5875 + dImQ9n*dImQ5n*dReQ4n;
5876 Double_t reQ9nQ7nstarQ2nstar = dReQ9n*dReQ7n*dReQ2n-dReQ9n*dImQ7n*dImQ2n+dImQ9n*dReQ7n*dImQ2n
5877 + dImQ9n*dImQ7n*dReQ2n;
5878 // <5>_{6n,2n|6n,1n,1n}
5879 Double_t reQ8nQ6nstarQ1nstarQ1nstar = (dReQ8n*dReQ6n+dImQ8n*dImQ6n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5880 + 2.*dReQ1n*dImQ1n*(dImQ8n*dReQ6n-dReQ8n*dImQ6n);
5881 Double_t reQ7nQ1nQ6nstarQ2nstar = dImQ1n*dImQ2n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ1n*dReQ2n
5882 + dImQ2n*dImQ7n*dReQ1n*dReQ6n-dImQ1n*dImQ7n*dReQ2n*dReQ6n
5883 - dImQ2n*dImQ6n*dReQ1n*dReQ7n+dImQ1n*dImQ6n*dReQ2n*dReQ7n
5884 + dImQ1n*dImQ2n*dReQ6n*dReQ7n+dReQ1n*dReQ2n*dReQ6n*dReQ7n;
5885 Double_t reQ8nQ7nstarQ1nstar = dReQ8n*dReQ7n*dReQ1n-dReQ8n*dImQ7n*dImQ1n+dImQ8n*dReQ7n*dImQ1n
5886 + dImQ8n*dImQ7n*dReQ1n;
5887 // <5>_{5n,2n|4n,2n,1n}
5888 Double_t reQ5nQ2nQ4nstarQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5889 * (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5890 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n);
5891 Double_t reQ7nQ4nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ4n*dReQ7n-dReQ4n*dReQ7n*dImQ1n*dImQ2n
5892 - dReQ2n*dReQ7n*dImQ1n*dImQ4n-dReQ1n*dReQ7n*dImQ2n*dImQ4n
5893 + dReQ2n*dReQ4n*dImQ1n*dImQ7n+dReQ1n*dReQ4n*dImQ2n*dImQ7n
5894 + dReQ1n*dReQ2n*dImQ4n*dImQ7n-dImQ1n*dImQ2n*dImQ4n*dImQ7n;
5895 // <5>_{4n,3n|4n,2n,1n}:
c10259fb 5896 Double_t reQ4nQ3nQ4nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5897 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5898 * (pow(dReQ4n,2.)+pow(dImQ4n,2.));
e1d101a6 5899 /*
5900 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5901 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5902 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5903 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
5904 */
5905 // <5>_{5n,3n|4n,3n,1n}:
5906 Double_t reQ5nQ3nQ4nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5907 * (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5908 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n);
c10259fb 5909 Double_t reQ5nQ3nQ4nstarQ4nstar = dReQ3n*pow(dReQ4n,2.)*dReQ5n+2.*dReQ4n*dReQ5n*dImQ3n*dImQ4n
5910 - dReQ3n*dReQ5n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ3n*dImQ5n
5911 + 2.*dReQ3n*dReQ4n*dImQ4n*dImQ5n+dImQ3n*pow(dImQ4n,2.)*dImQ5n;
e1d101a6 5912 Double_t reQ7nQ1nQ5nstarQ3nstar = dImQ1n*dImQ3n*dImQ5n*dImQ7n+dImQ5n*dImQ7n*dReQ1n*dReQ3n
5913 + dImQ3n*dImQ7n*dReQ1n*dReQ5n-dImQ1n*dImQ7n*dReQ3n*dReQ5n
5914 - dImQ3n*dImQ5n*dReQ1n*dReQ7n+dImQ1n*dImQ5n*dReQ3n*dReQ7n
5915 + dImQ1n*dImQ3n*dReQ5n*dReQ7n+dReQ1n*dReQ3n*dReQ5n*dReQ7n;
c10259fb 5916 Double_t reQ8nQ4nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ4n*dReQ8n-dReQ4n*dReQ8n*dImQ1n*dImQ3n
5917 - dReQ3n*dReQ8n*dImQ1n*dImQ4n-dReQ1n*dReQ8n*dImQ3n*dImQ4n
5918 + dReQ3n*dReQ4n*dImQ1n*dImQ8n+dReQ1n*dReQ4n*dImQ3n*dImQ8n
5919 + dReQ1n*dReQ3n*dImQ4n*dImQ8n-dImQ1n*dImQ3n*dImQ4n*dImQ8n;
e1d101a6 5920 Double_t reQ8nQ4nstarQ4nstar = pow(dReQ4n,2.)*dReQ8n-dReQ8n*pow(dImQ4n,2.)+2.*dReQ4n*dImQ4n*dImQ8n;
5921 // <5>_{5n,4n|4n,3n,2n}:
5922 Double_t reQ5nQ4nQ4nstarQ3nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5923 * (dReQ2n*dReQ3n*dReQ5n-dReQ5n*dImQ2n*dImQ3n
5924 + dReQ3n*dImQ2n*dImQ5n+dReQ2n*dImQ3n*dImQ5n);
5925 Double_t reQ6nQ3nQ5nstarQ4nstar = dImQ4n*dImQ3n*dImQ6n*dImQ5n+dImQ6n*dImQ5n*dReQ4n*dReQ3n
5926 + dImQ3n*dImQ5n*dReQ4n*dReQ6n-dImQ4n*dImQ5n*dReQ3n*dReQ6n
5927 - dImQ3n*dImQ6n*dReQ4n*dReQ5n+dImQ4n*dImQ6n*dReQ3n*dReQ5n
5928 + dImQ4n*dImQ3n*dReQ6n*dReQ5n+dReQ4n*dReQ3n*dReQ6n*dReQ5n;
c10259fb 5929 Double_t reQ9nQ4nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ4n*dReQ9n-dReQ4n*dReQ9n*dImQ2n*dImQ3n
5930 - dReQ3n*dReQ9n*dImQ2n*dImQ4n-dReQ2n*dReQ9n*dImQ3n*dImQ4n
5931 + dReQ3n*dReQ4n*dImQ2n*dImQ9n+dReQ2n*dReQ4n*dImQ3n*dImQ9n
5932 + dReQ2n*dReQ3n*dImQ4n*dImQ9n-dImQ2n*dImQ3n*dImQ4n*dImQ9n;
e1d101a6 5933 Double_t reQ9nQ6nstarQ3nstar = dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n
5934 + dImQ9n*dImQ6n*dReQ3n;
5935 // <5>_{5n,3n|5n,2n,1n}:
c10259fb 5936 Double_t reQ5nQ3nQ5nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5937 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5938 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
5939 Double_t reQ8nQ5nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ5n*dReQ8n-dReQ5n*dReQ8n*dImQ1n*dImQ2n
5940 - dReQ2n*dReQ8n*dImQ1n*dImQ5n-dReQ1n*dReQ8n*dImQ2n*dImQ5n
5941 + dReQ2n*dReQ5n*dImQ1n*dImQ8n+dReQ1n*dReQ5n*dImQ2n*dImQ8n
5942 + dReQ1n*dReQ2n*dImQ5n*dImQ8n-dImQ1n*dImQ2n*dImQ5n*dImQ8n;
e1d101a6 5943 // <5>_{5n,4n|5n,3n,1n}:
c10259fb 5944 Double_t reQ5nQ4nQ5nstarQ3nstarQ1nstar = (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5945 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n)
5946 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
e1d101a6 5947 Double_t reQ8nQ1nQ5nstarQ4nstar = dImQ4n*dImQ1n*dImQ8n*dImQ5n+dImQ8n*dImQ5n*dReQ4n*dReQ1n
5948 + dImQ1n*dImQ5n*dReQ4n*dReQ8n-dImQ4n*dImQ5n*dReQ1n*dReQ8n
5949 - dImQ1n*dImQ8n*dReQ4n*dReQ5n+dImQ4n*dImQ8n*dReQ1n*dReQ5n
5950 + dImQ4n*dImQ1n*dReQ8n*dReQ5n+dReQ4n*dReQ1n*dReQ8n*dReQ5n;
c10259fb 5951 Double_t reQ9nQ5nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ5n*dReQ9n-dReQ5n*dReQ9n*dImQ1n*dImQ3n
5952 - dReQ3n*dReQ9n*dImQ1n*dImQ5n-dReQ1n*dReQ9n*dImQ3n*dImQ5n
5953 + dReQ3n*dReQ5n*dImQ1n*dImQ9n+dReQ1n*dReQ5n*dImQ3n*dImQ9n
5954 + dReQ1n*dReQ3n*dImQ5n*dImQ9n-dImQ1n*dImQ3n*dImQ5n*dImQ9n;
e1d101a6 5955 Double_t reQ9nQ8nstarQ1nstar = dReQ9n*dReQ8n*dReQ1n-dReQ9n*dImQ8n*dImQ1n+dImQ9n*dReQ8n*dImQ1n
5956 + dImQ9n*dImQ8n*dReQ1n;
5957 // <5>_{6n,1n|4n,2n,1n}:
c10259fb 5958 Double_t reQ6nQ1nQ4nstarQ2nstarQ1nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5959 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5960 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
e1d101a6 5961 // <5>_{6n,3n|4n,3n,2n}:
c10259fb 5962 Double_t reQ6nQ3nQ4nstarQ3nstarQ2nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5963 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5964 * (pow(dReQ3n,2.)+pow(dImQ3n,2.));
e1d101a6 5965 Double_t reQ7nQ2nQ6nstarQ3nstar = dImQ3n*dImQ2n*dImQ7n*dImQ6n+dImQ7n*dImQ6n*dReQ3n*dReQ2n
5966 + dImQ2n*dImQ6n*dReQ3n*dReQ7n-dImQ3n*dImQ6n*dReQ2n*dReQ7n
5967 - dImQ2n*dImQ7n*dReQ3n*dReQ6n+dImQ3n*dImQ7n*dReQ2n*dReQ6n
5968 + dImQ3n*dImQ2n*dReQ7n*dReQ6n+dReQ3n*dReQ2n*dReQ7n*dReQ6n;
5969 // <5>_{6n,2n|5n,2n,1n}:
5970 Double_t reQ6nQ2nQ5nstarQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5971 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5972 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5973 // <5>_{6n,3n|5n,3n,1n}:
5974 Double_t reQ6nQ3nQ5nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5975 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5976 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5977 Double_t reQ8nQ1nQ6nstarQ3nstar = dImQ3n*dImQ1n*dImQ8n*dImQ6n+dImQ8n*dImQ6n*dReQ3n*dReQ1n
5978 + dImQ1n*dImQ6n*dReQ3n*dReQ8n-dImQ3n*dImQ6n*dReQ1n*dReQ8n
5979 - dImQ1n*dImQ8n*dReQ3n*dReQ6n+dImQ3n*dImQ8n*dReQ1n*dReQ6n
5980 + dImQ3n*dImQ1n*dReQ8n*dReQ6n+dReQ3n*dReQ1n*dReQ8n*dReQ6n;
5981 // <5>_{6n,4n|5n,4n,1n}:
5982 Double_t reQ6nQ4nQ5nstarQ4nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5983 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5984 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
c10259fb 5985 Double_t reQ6nQ4nQ5nstarQ5nstar = dReQ4n*pow(dReQ5n,2.)*dReQ6n+2.*dReQ5n*dReQ6n*dImQ4n*dImQ5n
5986 - dReQ4n*dReQ6n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ4n*dImQ6n
5987 + 2.*dReQ4n*dReQ5n*dImQ5n*dImQ6n+dImQ4n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 5988 Double_t reQ9nQ1nQ6nstarQ4nstar = dImQ4n*dImQ1n*dImQ9n*dImQ6n+dImQ9n*dImQ6n*dReQ4n*dReQ1n
5989 + dImQ1n*dImQ6n*dReQ4n*dReQ9n-dImQ4n*dImQ6n*dReQ1n*dReQ9n
5990 - dImQ1n*dImQ9n*dReQ4n*dReQ6n+dImQ4n*dImQ9n*dReQ1n*dReQ6n
c10259fb 5991 + dImQ4n*dImQ1n*dReQ9n*dReQ6n+dReQ4n*dReQ1n*dReQ9n*dReQ6n;
5992 Double_t reQ10nQ5nstarQ4nstarQ1nstar = dReQ1n*dReQ4n*dReQ5n*dReQ10n-dReQ5n*dReQ10n*dImQ1n*dImQ4n
5993 - dReQ4n*dReQ10n*dImQ1n*dImQ5n-dReQ1n*dReQ10n*dImQ4n*dImQ5n
5994 + dReQ4n*dReQ5n*dImQ1n*dImQ10n+dReQ1n*dReQ5n*dImQ4n*dImQ10n
5995 + dReQ1n*dReQ4n*dImQ5n*dImQ10n-dImQ1n*dImQ4n*dImQ5n*dImQ10n;
e1d101a6 5996 Double_t reQ10nQ9nstarQ1nstar = dReQ10n*dReQ9n*dReQ1n-dReQ10n*dImQ9n*dImQ1n+dImQ10n*dReQ9n*dImQ1n
5997 + dImQ10n*dImQ9n*dReQ1n;
5998 Double_t reQ10nQ5nstarQ5nstar = pow(dReQ5n,2.)*dReQ10n-dReQ10n*pow(dImQ5n,2.)+2.*dReQ5n*dImQ5n*dImQ10n;
5999 // <5>_{6n,3n|6n,2n,1n}:
c10259fb 6000 Double_t reQ6nQ3nQ6nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
6001 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
6002 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
6003 Double_t reQ9nQ6nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ6n*dReQ9n-dReQ6n*dReQ9n*dImQ1n*dImQ2n
6004 - dReQ2n*dReQ9n*dImQ1n*dImQ6n-dReQ1n*dReQ9n*dImQ2n*dImQ6n
6005 + dReQ2n*dReQ6n*dImQ1n*dImQ9n+dReQ1n*dReQ6n*dImQ2n*dImQ9n
6006 + dReQ1n*dReQ2n*dImQ6n*dImQ9n-dImQ1n*dImQ2n*dImQ6n*dImQ9n;
e1d101a6 6007 // <5>_{6n,4n|6n,3n,1n}:
c10259fb 6008 Double_t reQ6nQ4nQ6nstarQ3nstarQ1nstar = (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
6009 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n)
6010 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
6011 Double_t reQ10nQ6nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ6n*dReQ10n-dReQ6n*dReQ10n*dImQ1n*dImQ3n
6012 - dReQ3n*dReQ10n*dImQ1n*dImQ6n-dReQ1n*dReQ10n*dImQ3n*dImQ6n
6013 + dReQ3n*dReQ6n*dImQ1n*dImQ10n+dReQ1n*dReQ6n*dImQ3n*dImQ10n
6014 + dReQ1n*dReQ3n*dImQ6n*dImQ10n-dImQ1n*dImQ3n*dImQ6n*dImQ10n;
e1d101a6 6015 // <5>_{6n,5n|5n,4n,2n}:
c10259fb 6016 Double_t reQ6nQ5nQ5nstarQ4nstarQ2nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
6017 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
6018 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
e1d101a6 6019 Double_t reQ7nQ4nQ6nstarQ5nstar = dImQ5n*dImQ4n*dImQ7n*dImQ6n+dImQ7n*dImQ6n*dReQ5n*dReQ4n
6020 + dImQ4n*dImQ6n*dReQ5n*dReQ7n-dImQ5n*dImQ6n*dReQ4n*dReQ7n
6021 - dImQ4n*dImQ7n*dReQ5n*dReQ6n+dImQ5n*dImQ7n*dReQ4n*dReQ6n
6022 + dImQ5n*dImQ4n*dReQ7n*dReQ6n+dReQ5n*dReQ4n*dReQ7n*dReQ6n;
6023 Double_t reQ9nQ2nQ6nstarQ5nstar = dImQ5n*dImQ2n*dImQ9n*dImQ6n+dImQ9n*dImQ6n*dReQ5n*dReQ2n
6024 + dImQ2n*dImQ6n*dReQ5n*dReQ9n-dImQ5n*dImQ6n*dReQ2n*dReQ9n
6025 - dImQ2n*dImQ9n*dReQ5n*dReQ6n+dImQ5n*dImQ9n*dReQ2n*dReQ6n
6026 + dImQ5n*dImQ2n*dReQ9n*dReQ6n+dReQ5n*dReQ2n*dReQ9n*dReQ6n;
c10259fb 6027 Double_t reQ11nQ5nstarQ4nstarQ2nstar = dReQ2n*dReQ4n*dReQ5n*dReQ11n-dReQ5n*dReQ11n*dImQ2n*dImQ4n
6028 - dReQ4n*dReQ11n*dImQ2n*dImQ5n-dReQ2n*dReQ11n*dImQ4n*dImQ5n
6029 + dReQ4n*dReQ5n*dImQ2n*dImQ11n+dReQ2n*dReQ5n*dImQ4n*dImQ11n
6030 + dReQ2n*dReQ4n*dImQ5n*dImQ11n-dImQ2n*dImQ4n*dImQ5n*dImQ11n;
e1d101a6 6031 Double_t reQ11nQ9nstarQ2nstar = dReQ11n*dReQ9n*dReQ2n-dReQ11n*dImQ9n*dImQ2n+dImQ11n*dReQ9n*dImQ2n
6032 + dImQ11n*dImQ9n*dReQ2n;
6033 Double_t reQ11nQ7nstarQ4nstar = dReQ11n*dReQ7n*dReQ4n-dReQ11n*dImQ7n*dImQ4n+dImQ11n*dReQ7n*dImQ4n
6034 + dImQ11n*dImQ7n*dReQ4n;
6035 // <5>_{6n,5n|6n,3n,2n}:
c10259fb 6036 Double_t reQ6nQ5nQ6nstarQ3nstarQ2nstar = (dReQ2n*dReQ3n*dReQ5n-dReQ5n*dImQ2n*dImQ3n
6037 + dReQ3n*dImQ2n*dImQ5n+dReQ2n*dImQ3n*dImQ5n)
6038 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
6039 Double_t reQ11nQ6nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ6n*dReQ11n-dReQ6n*dReQ11n*dImQ2n*dImQ3n
6040 - dReQ3n*dReQ11n*dImQ2n*dImQ6n-dReQ2n*dReQ11n*dImQ3n*dImQ6n
6041 + dReQ3n*dReQ6n*dImQ2n*dImQ11n+dReQ2n*dReQ6n*dImQ3n*dImQ11n
6042 + dReQ2n*dReQ3n*dImQ6n*dImQ11n-dImQ2n*dImQ3n*dImQ6n*dImQ11n;
e1d101a6 6043 // <5>_{6n,5n|6n,4n,1n}:
c10259fb 6044 Double_t reQ6nQ5nQ6nstarQ4nstarQ1nstar = (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
6045 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n)
6046 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
e1d101a6 6047 Double_t reQ10nQ1nQ6nstarQ5nstar = dImQ5n*dImQ1n*dImQ10n*dImQ6n+dImQ10n*dImQ6n*dReQ5n*dReQ1n
6048 + dImQ1n*dImQ6n*dReQ5n*dReQ10n-dImQ5n*dImQ6n*dReQ1n*dReQ10n
6049 - dImQ1n*dImQ10n*dReQ5n*dReQ6n+dImQ5n*dImQ10n*dReQ1n*dReQ6n
6050 + dImQ5n*dImQ1n*dReQ10n*dReQ6n+dReQ5n*dReQ1n*dReQ10n*dReQ6n;
6051 Double_t reQ11nQ10nstarQ1nstar = dReQ11n*dReQ10n*dReQ1n-dReQ11n*dImQ10n*dImQ1n+dImQ11n*dReQ10n*dImQ1n
6052 + dImQ11n*dImQ10n*dReQ1n;
c10259fb 6053 Double_t reQ11nQ6nstarQ4nstarQ1nstar = dReQ1n*dReQ4n*dReQ6n*dReQ11n-dReQ6n*dReQ11n*dImQ1n*dImQ4n
6054 - dReQ4n*dReQ11n*dImQ1n*dImQ6n-dReQ1n*dReQ11n*dImQ4n*dImQ6n
6055 + dReQ4n*dReQ6n*dImQ1n*dImQ11n+dReQ1n*dReQ6n*dImQ4n*dImQ11n
6056 + dReQ1n*dReQ4n*dImQ6n*dImQ11n-dImQ1n*dImQ4n*dImQ6n*dImQ11n;
e1d101a6 6057 // <5>_{4n,1n|3n,1n,1n}:
6058 Double_t reQ4nQ1nQ3nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
6059 * (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
6060 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n);
6061 Double_t reQ4nQ1nQ4nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
6062 Double_t reQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
6063 // <5>_{4n,3n|3n,3n,1n}:
6064 Double_t reQ4nQ3nQ3nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
6065 * (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n));
6066 Double_t reQ7nQ3nstarQ3nstarQ1nstar = (dReQ7n*dReQ1n+dImQ7n*dImQ1n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
6067 + 2.*dReQ3n*dImQ3n*(dImQ7n*dReQ1n-dReQ7n*dImQ1n);
6068 // <5>_{4n,4n|4n,3n,1n}:
6069 Double_t reQ4nQ4nQ4nstarQ3nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
c10259fb 6070 * reQ4nQ3nstarQ1nstar;
6071 Double_t reQ7nQ1nQ4nstarQ4nstar = dReQ1n*pow(dReQ4n,2.)*dReQ7n+2.*dReQ4n*dReQ7n*dImQ1n*dImQ4n
6072 - dReQ1n*dReQ7n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ1n*dImQ7n
6073 + 2.*dReQ1n*dReQ4n*dImQ4n*dImQ7n+dImQ1n*pow(dImQ4n,2.)*dImQ7n;
e1d101a6 6074 // <5>_{5n,2n|3n,2n,2n}:
6075 Double_t reQ5nQ2nQ3nstarQ2nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
c10259fb 6076 * reQ5nQ3nstarQ2nstar;
e1d101a6 6077 // <5>_{5n,3n|3n,3n,2n}:
6078 Double_t reQ5nQ3nQ3nstarQ3nstarQ2nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
6079 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
6080 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
6081 Double_t reQ8nQ3nstarQ3nstarQ2nstar = (dReQ8n*dReQ2n+dImQ8n*dImQ2n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
6082 + 2.*dReQ3n*dImQ3n*(dImQ8n*dReQ2n-dReQ8n*dImQ2n);
6083 /*
6084 Double_t reQ5nQ1nQ3nstarQ2nstar = dImQ2n*dImQ1n*dImQ5n*dImQ3n+dImQ5n*dImQ3n*dReQ2n*dReQ1n
6085 + dImQ1n*dImQ3n*dReQ2n*dReQ5n-dImQ2n*dImQ3n*dReQ1n*dReQ5n
6086 - dImQ1n*dImQ5n*dReQ2n*dReQ3n+dImQ2n*dImQ5n*dReQ1n*dReQ3n
6087 + dImQ2n*dImQ1n*dReQ5n*dReQ3n+dReQ2n*dReQ1n*dReQ5n*dReQ3n;
6088 */
6089 // <5>_{5n,1n|4n,1n,1n}:
6090 Double_t reQ5nQ1nQ4nstarQ1nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
6091 * (dImQ1n*dImQ5n*dReQ4n+dImQ4n*dImQ5n*dReQ1n
6092 - dImQ4n*dImQ1n*dReQ5n+dReQ4n*dReQ1n*dReQ5n);
6093 // <5>_{5n,4n|4n,4n,1n}:
6094 Double_t reQ5nQ4nQ4nstarQ4nstarQ1nstar = (pow(dImQ4n,2.)+pow(dReQ4n,2.))
6095 * (dImQ4n*dImQ5n*dReQ1n+dImQ1n*dImQ5n*dReQ4n
6096 - dImQ1n*dImQ4n*dReQ5n+dReQ1n*dReQ4n*dReQ5n);
6097 Double_t reQ9nQ4nstarQ4nstarQ1nstar = (dReQ9n*dReQ1n+dImQ9n*dImQ1n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6098 + 2.*dReQ4n*dImQ4n*(dImQ9n*dReQ1n-dReQ9n*dImQ1n);
6099 // <5>_{5n,5n|5n,3n,2n}:
6100 Double_t reQ5nQ5nQ5nstarQ3nstarQ2nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6101 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
6102 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
c10259fb 6103 Double_t reQ7nQ3nQ5nstarQ5nstar = dReQ3n*pow(dReQ5n,2.)*dReQ7n+2.*dReQ5n*dReQ7n*dImQ3n*dImQ5n
6104 - dReQ3n*dReQ7n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ3n*dImQ7n
6105 + 2.*dReQ3n*dReQ5n*dImQ5n*dImQ7n+dImQ3n*pow(dImQ5n,2.)*dImQ7n;
6106 Double_t reQ8nQ2nQ5nstarQ5nstar = dReQ2n*pow(dReQ5n,2.)*dReQ8n+2.*dReQ5n*dReQ8n*dImQ2n*dImQ5n
6107 - dReQ2n*dReQ8n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ2n*dImQ8n
6108 + 2.*dReQ2n*dReQ5n*dImQ5n*dImQ8n+dImQ2n*pow(dImQ5n,2.)*dImQ8n;
6109 Double_t reQ10nQ5nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ5n*dReQ10n-dReQ5n*dReQ10n*dImQ2n*dImQ3n
6110 - dReQ3n*dReQ10n*dImQ2n*dImQ5n-dReQ2n*dReQ10n*dImQ3n*dImQ5n
6111 + dReQ3n*dReQ5n*dImQ2n*dImQ10n+dReQ2n*dReQ5n*dImQ3n*dImQ10n
6112 + dReQ2n*dReQ3n*dImQ5n*dImQ10n-dImQ2n*dImQ3n*dImQ5n*dImQ10n;
e1d101a6 6113 Double_t reQ10nQ8nstarQ2nstar = dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n
6114 + dImQ10n*dImQ8n*dReQ2n;
6115 // <5>_{5n,5n|5n,4n,1n}:
6116 Double_t reQ5nQ5nQ5nstarQ4nstarQ1nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6117 * (dImQ4n*dImQ5n*dReQ1n+dImQ1n*dImQ5n*dReQ4n
6118 - dImQ1n*dImQ4n*dReQ5n+dReQ1n*dReQ4n*dReQ5n);
c10259fb 6119 Double_t reQ9nQ1nQ5nstarQ5nstar = dReQ1n*pow(dReQ5n,2.)*dReQ9n+2.*dReQ5n*dReQ9n*dImQ1n*dImQ5n
6120 - dReQ1n*dReQ9n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ1n*dImQ9n
6121 + 2.*dReQ1n*dReQ5n*dImQ5n*dImQ9n+dImQ1n*pow(dImQ5n,2.)*dImQ9n;
e1d101a6 6122 // <5>_{6n,1n|5n,1n,1n}:
6123 Double_t reQ6nQ1nQ5nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
6124 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
6125 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
6126 // <5>_{6n,5n|5n,5n,1n}:
6127 Double_t reQ6nQ5nQ5nstarQ5nstarQ1nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6128 * (dImQ5n*dImQ6n*dReQ1n+dImQ1n*dImQ6n*dReQ5n
6129 - dImQ1n*dImQ5n*dReQ6n+dReQ1n*dReQ5n*dReQ6n);
6130 Double_t reQ11nQ5nstarQ5nstarQ1nstar = (dReQ11n*dReQ1n+dImQ11n*dImQ1n)*(pow(dReQ5n,2)-pow(dImQ5n,2))
6131 + 2.*dReQ5n*dImQ5n*(dImQ11n*dReQ1n-dReQ11n*dImQ1n);
6132 // <5>_{6n,6n|6n,5n,1n}:
6133 Double_t reQ6nQ6nQ6nstarQ5nstarQ1nstar = (pow(dReQ6n,2.)+pow(dImQ6n,2.))
c10259fb 6134 * reQ6nQ5nstarQ1nstar;
6135 Double_t reQ7nQ5nQ6nstarQ6nstar = dReQ5n*pow(dReQ6n,2.)*dReQ7n+2.*dReQ6n*dReQ7n*dImQ5n*dImQ6n
6136 - dReQ5n*dReQ7n*pow(dImQ6n,2.)-pow(dReQ6n,2.)*dImQ5n*dImQ7n
6137 + 2.*dReQ5n*dReQ6n*dImQ6n*dImQ7n+dImQ5n*pow(dImQ6n,2.)*dImQ7n;
6138 Double_t reQ11nQ1nQ6nstarQ6nstar = dReQ1n*pow(dReQ6n,2.)*dReQ11n+2.*dReQ6n*dReQ11n*dImQ1n*dImQ6n
6139 - dReQ1n*dReQ11n*pow(dImQ6n,2.)-pow(dReQ6n,2.)*dImQ1n*dImQ11n
6140 + 2.*dReQ1n*dReQ6n*dImQ6n*dImQ11n+dImQ1n*pow(dImQ6n,2.)*dImQ11n;
e1d101a6 6141 Double_t reQ12nQ6nstarQ6nstar = pow(dReQ6n,2.)*dReQ12n-dReQ12n*pow(dImQ6n,2.)+2.*dReQ6n*dImQ6n*dImQ12n;
6142 Double_t reQ12nQ11nstarQ1nstar = dReQ12n*dReQ11n*dReQ1n-dReQ12n*dImQ11n*dImQ1n+dImQ12n*dReQ11n*dImQ1n
6143 + dImQ12n*dImQ11n*dReQ1n;
c10259fb 6144 Double_t reQ12nQ6nstarQ5nstarQ1nstar = dReQ1n*dReQ5n*dReQ6n*dReQ12n-dReQ6n*dReQ12n*dImQ1n*dImQ5n
6145 - dReQ5n*dReQ12n*dImQ1n*dImQ6n-dReQ1n*dReQ12n*dImQ5n*dImQ6n
6146 + dReQ5n*dReQ6n*dImQ1n*dImQ12n+dReQ1n*dReQ6n*dImQ5n*dImQ12n
6147 + dReQ1n*dReQ5n*dImQ6n*dImQ12n-dImQ1n*dImQ5n*dImQ6n*dImQ12n;
e1d101a6 6148 Double_t reQ12nQ7nstarQ5nstar = dReQ12n*dReQ7n*dReQ5n-dReQ12n*dImQ7n*dImQ5n+dImQ12n*dReQ7n*dImQ5n
6149 + dImQ12n*dImQ7n*dReQ5n;
6150 // <5>_{6n,2n|4n,3n,1n}:
c10259fb 6151 Double_t reQ6nQ2nQ4nstarQ3nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ4n*dReQ6n+dReQ3n*dReQ4n*dReQ6n*dImQ1n*dImQ2n
6152 - dReQ2n*dReQ4n*dReQ6n*dImQ1n*dImQ3n+dReQ1n*dReQ4n*dReQ6n*dImQ2n*dImQ3n
6153 - dReQ2n*dReQ3n*dReQ6n*dImQ1n*dImQ4n+dReQ1n*dReQ3n*dReQ6n*dImQ2n*dImQ4n
6154 - dReQ1n*dReQ2n*dReQ6n*dImQ3n*dImQ4n-dReQ6n*dImQ1n*dImQ2n*dImQ3n*dImQ4n
6155 + dReQ2n*dReQ3n*dReQ4n*dImQ1n*dImQ6n-dReQ1n*dReQ3n*dReQ4n*dImQ2n*dImQ6n
6156 + dReQ1n*dReQ2n*dReQ4n*dImQ3n*dImQ6n+dReQ4n*dImQ1n*dImQ2n*dImQ3n*dImQ6n
6157 + dReQ1n*dReQ2n*dReQ3n*dImQ4n*dImQ6n+dReQ3n*dImQ1n*dImQ2n*dImQ4n*dImQ6n
6158 - dReQ2n*dImQ1n*dImQ3n*dImQ4n*dImQ6n+dReQ1n*dImQ2n*dImQ3n*dImQ4n*dImQ6n;
6159 Double_t reQ6nQ2nQ4nstarQ4nstar = dReQ2n*pow(dReQ4n,2.)*dReQ6n+2.*dReQ4n*dReQ6n*dImQ2n*dImQ4n
6160 - dReQ2n*dReQ6n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ2n*dImQ6n
6161 + 2.*dReQ2n*dReQ4n*dImQ4n*dImQ6n+dImQ2n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6162 // <5>_{6n,2n,1n|5n,4n}:
c10259fb 6163 Double_t reQ6nQ2nQ1nQ5nstarQ4nstar = dReQ1n*dReQ2n*dReQ4n*dReQ6n*dReQ5n - dReQ4n*dReQ6n*dReQ5n*dImQ1n*dImQ2n
6164 + dReQ2n*dReQ6n*dReQ5n*dImQ1n*dImQ4n + dReQ1n*dReQ6n*dReQ5n*dImQ2n*dImQ4n
6165 - dReQ2n*dReQ4n*dReQ5n*dImQ1n*dImQ6n - dReQ1n*dReQ4n*dReQ5n*dImQ2n*dImQ6n
6166 + dReQ1n*dReQ2n*dReQ5n*dImQ4n*dImQ6n - dReQ5n*dImQ1n*dImQ2n*dImQ4n*dImQ6n
6167 + dReQ2n*dReQ4n*dReQ6n*dImQ1n*dImQ5n + dReQ1n*dReQ4n*dReQ6n*dImQ2n*dImQ5n
6168 - dReQ1n*dReQ2n*dReQ6n*dImQ4n*dImQ5n + dReQ6n*dImQ1n*dImQ2n*dImQ4n*dImQ5n
6169 + dReQ1n*dReQ2n*dReQ4n*dImQ6n*dImQ5n - dReQ4n*dImQ1n*dImQ2n*dImQ6n*dImQ5n
6170 + dReQ2n*dImQ1n*dImQ4n*dImQ6n*dImQ5n + dReQ1n*dImQ2n*dImQ4n*dImQ6n*dImQ5n;
e1d101a6 6171
6172 // <5>_{6n,4n|5n,3n,2n}:
c10259fb 6173 Double_t reQ6nQ4nQ5nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ4n*dReQ5n*dReQ6n - dReQ4n*dReQ5n*dReQ6n*dImQ2n*dImQ3n
6174 + dReQ3n*dReQ5n*dReQ6n*dImQ2n*dImQ4n + dReQ2n*dReQ5n*dReQ6n*dImQ3n*dImQ4n
6175 - dReQ3n*dReQ4n*dReQ6n*dImQ2n*dImQ5n - dReQ2n*dReQ4n*dReQ6n*dImQ3n*dImQ5n
6176 + dReQ2n*dReQ3n*dReQ6n*dImQ4n*dImQ5n - dReQ6n*dImQ2n*dImQ3n*dImQ4n*dImQ5n
6177 + dReQ3n*dReQ4n*dReQ5n*dImQ2n*dImQ6n + dReQ2n*dReQ4n*dReQ5n*dImQ3n*dImQ6n
6178 - dReQ2n*dReQ3n*dReQ5n*dImQ4n*dImQ6n + dReQ5n*dImQ2n*dImQ3n*dImQ4n*dImQ6n
6179 + dReQ2n*dReQ3n*dReQ4n*dImQ5n*dImQ6n - dReQ4n*dImQ2n*dImQ3n*dImQ5n*dImQ6n
6180 + dReQ3n*dImQ2n*dImQ4n*dImQ5n*dImQ6n + dReQ2n*dImQ3n*dImQ4n*dImQ5n*dImQ6n;
e1d101a6 6181 Double_t reQ8nQ2nQ6nstarQ4nstar = dImQ4n*dImQ2n*dImQ8n*dImQ6n+dImQ8n*dImQ6n*dReQ4n*dReQ2n
6182 + dImQ2n*dImQ6n*dReQ4n*dReQ8n-dImQ4n*dImQ6n*dReQ2n*dReQ8n
6183 - dImQ2n*dImQ8n*dReQ4n*dReQ6n+dImQ4n*dImQ8n*dReQ2n*dReQ6n
6184 + dImQ4n*dImQ2n*dReQ8n*dReQ6n+dReQ4n*dReQ2n*dReQ8n*dReQ6n;
6185
6186 // <5>_{4n,4n|3n,3n,2n}:
c10259fb 6187 Double_t reQ4nQ4nQ3nstarQ3nstarQ2nstar = dReQ2n*pow(dReQ3n,2.)*pow(dReQ4n,2.)-2.*dReQ3n*pow(dReQ4n,2.)*dImQ2n*dImQ3n
6188 - dReQ2n*pow(dReQ4n,2.)*pow(dImQ3n,2.)+2.*pow(dReQ3n,2.)*dReQ4n*dImQ2n*dImQ4n
6189 + 4.*dReQ2n*dReQ3n*dReQ4n*dImQ3n*dImQ4n - 2.*dReQ4n*dImQ2n*pow(dImQ3n,2.)*dImQ4n
6190 - dReQ2n*pow(dReQ3n,2.)*pow(dImQ4n,2.) + 2.*dReQ3n*dImQ2n*dImQ3n*pow(dImQ4n,2.)
6191 + dReQ2n*pow(dImQ3n,2.)*pow(dImQ4n,2.);
6192
e1d101a6 6193 // <5>_{5n|2n,1n,1n,1n}:
c10259fb 6194 Double_t reQ5nQ2nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,3.)*dReQ2n*dReQ5n-3.*dReQ1n*dReQ2n*dReQ5n*pow(dImQ1n,2.)
6195 - 3.*pow(dReQ1n,2.)*dReQ5n*dImQ1n*dImQ2n+dReQ5n*pow(dImQ1n,3.)*dImQ2n
6196 + 3.*pow(dReQ1n,2.)*dReQ2n*dImQ1n*dImQ5n-dReQ2n*pow(dImQ1n,3.)*dImQ5n
6197 + pow(dReQ1n,3.)*dImQ2n*dImQ5n-3.*dReQ1n*pow(dImQ1n,2.)*dImQ2n*dImQ5n;
e1d101a6 6198
6199 // <5>_{5n,1n|2n,2n,2n}:
c10259fb 6200 Double_t reQ5nQ1nQ2nstarQ2nstarQ2nstar = dReQ1n*pow(dReQ2n,3.)*dReQ5n+3.*pow(dReQ2n,2.)*dReQ5n*dImQ1n*dImQ2n
6201 - 3.*dReQ1n*dReQ2n*dReQ5n*pow(dImQ2n,2.)-dReQ5n*dImQ1n*pow(dImQ2n,3.)
6202 - pow(dReQ2n,3.)*dImQ1n*dImQ5n+3.*dReQ1n*pow(dReQ2n,2.)*dImQ2n*dImQ5n
6203 + 3.*dReQ2n*dImQ1n*pow(dImQ2n,2.)*dImQ5n-dReQ1n*pow(dImQ2n,3.)*dImQ5n;
e1d101a6 6204
6205
6206 // <5>_{5n,4n|3n,3n,3n}:
c10259fb 6207 Double_t reQ5nQ4nQ3nstarQ3nstarQ3nstar = dReQ4n*pow(dReQ3n,3.)*dReQ5n+3.*pow(dReQ3n,2.)*dReQ5n*dImQ4n*dImQ3n
6208 - 3.*dReQ4n*dReQ3n*dReQ5n*pow(dImQ3n,2.)-dReQ5n*dImQ4n*pow(dImQ3n,3.)
6209 - pow(dReQ3n,3.)*dImQ4n*dImQ5n+3.*dReQ4n*pow(dReQ3n,2.)*dImQ3n*dImQ5n
6210 + 3.*dReQ3n*dImQ4n*pow(dImQ3n,2.)*dImQ5n-dReQ4n*pow(dImQ3n,3.)*dImQ5n;
e1d101a6 6211
6212 Double_t reQ9nQ3nstarQ3nstarQ3nstar = dReQ9n*pow(dReQ3n,3)-3.*dReQ3n*dReQ9n*pow(dImQ3n,2)
6213 + 3.*dImQ3n*dImQ9n*pow(dReQ3n,2)-dImQ9n*pow(dImQ3n,3);
6214 // <5>_{5n,5n|4n,3n,3n}:
c10259fb 6215 Double_t reQ5nQ5nQ4nstarQ3nstarQ3nstar = dReQ4n*pow(dReQ3n,2.)*pow(dReQ5n,2.) - 2.*dReQ3n*pow(dReQ5n,2.)*dImQ4n*dImQ3n
6216 - dReQ4n*pow(dReQ5n,2.)*pow(dImQ3n,2.) + 2.*pow(dReQ3n,2.)*dReQ5n*dImQ4n*dImQ5n
6217 + 4.*dReQ4n*dReQ3n*dReQ5n*dImQ3n*dImQ5n - 2.*dReQ5n*dImQ4n*pow(dImQ3n,2.)*dImQ5n
6218 - dReQ4n*pow(dReQ3n,2.)*pow(dImQ5n,2.) + 2.*dReQ3n*dImQ4n*dImQ3n*pow(dImQ5n,2.)
6219 + dReQ4n*pow(dImQ3n,2.)*pow(dImQ5n,2.);
e1d101a6 6220
6221 // <5>_{5n,5n|4n,4n,2n}:
c10259fb 6222 Double_t reQ5nQ5nQ4nstarQ4nstarQ2nstar = dReQ2n*pow(dReQ4n,2.)*pow(dReQ5n,2.) - 2.*dReQ4n*pow(dReQ5n,2.)*dImQ2n*dImQ4n
6223 - dReQ2n*pow(dReQ5n,2.)*pow(dImQ4n,2.) + 2.*pow(dReQ4n,2.)*dReQ5n*dImQ2n*dImQ5n
6224 + 4.*dReQ2n*dReQ4n*dReQ5n*dImQ4n*dImQ5n - 2.*dReQ5n*dImQ2n*pow(dImQ4n,2.)*dImQ5n
6225 - dReQ2n*pow(dReQ4n,2.)*pow(dImQ5n,2.) + 2.*dReQ4n*dImQ2n*dImQ4n*pow(dImQ5n,2.)
6226 + dReQ2n*pow(dImQ4n,2.)*pow(dImQ5n,2.);
e1d101a6 6227 Double_t reQ10nQ4nstarQ4nstarQ2nstar = (dReQ10n*dReQ2n+dImQ10n*dImQ2n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6228 + 2.*dReQ4n*dImQ4n*(dImQ10n*dReQ2n-dReQ10n*dImQ2n);
6229 // <5>_{6n|3n,1n,1n,1n}:
c10259fb 6230 Double_t reQ6nQ3nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,3.)*dReQ3n*dReQ6n-3.*dReQ1n*dReQ3n*dReQ6n*pow(dImQ1n,2.)
6231 - 3.*pow(dReQ1n,2.)*dReQ6n*dImQ1n*dImQ3n+dReQ6n*pow(dImQ1n,3.)*dImQ3n
6232 + 3.*pow(dReQ1n,2.)*dReQ3n*dImQ1n*dImQ6n-dReQ3n*pow(dImQ1n,3.)*dImQ6n
6233 + pow(dReQ1n,3.)*dImQ3n*dImQ6n-3.*dReQ1n*pow(dImQ1n,2.)*dImQ3n*dImQ6n;
e1d101a6 6234 // <5>_{6n,1n,1n|4n,4n}:
c10259fb 6235 Double_t reQ6nQ1nQ1nQ4nstarQ4nstar = pow(dReQ1n,2.)*pow(dReQ4n,2.)*dReQ6n - pow(dReQ4n,2.)*dReQ6n*pow(dImQ1n,2.)
6236 + 4.*dReQ1n*dReQ4n*dReQ6n*dImQ1n*dImQ4n - pow(dReQ1n,2.)*dReQ6n*pow(dImQ4n,2.)
6237 + dReQ6n*pow(dImQ1n,2.)*pow(dImQ4n,2.) - 2.*dReQ1n*pow(dReQ4n,2.)*dImQ1n*dImQ6n
6238 + 2.*pow(dReQ1n,2.)*dReQ4n*dImQ4n*dImQ6n - 2.*dReQ4n*pow(dImQ1n,2.)*dImQ4n*dImQ6n
6239 + 2.*dReQ1n*dImQ1n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6240
6241
6242 // <5>_{6n,2n,2n|5n,5n}:
c10259fb 6243 Double_t reQ6nQ2nQ2nQ5nstarQ5nstar = pow(dReQ2n,2.)*pow(dReQ5n,2.)*dReQ6n - pow(dReQ5n,2.)*dReQ6n*pow(dImQ2n,2.)
6244 + 4.*dReQ2n*dReQ5n*dReQ6n*dImQ2n*dImQ5n - pow(dReQ2n,2.)*dReQ6n*pow(dImQ5n,2.)
6245 + dReQ6n*pow(dImQ2n,2.)*pow(dImQ5n,2.) - 2.*dReQ2n*pow(dReQ5n,2.)*dImQ2n*dImQ6n
6246 + 2.*pow(dReQ2n,2.)*dReQ5n*dImQ5n*dImQ6n - 2.*dReQ5n*pow(dImQ2n,2.)*dImQ5n*dImQ6n
6247 + 2.*dReQ2n*dImQ2n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 6248 Double_t reQ10nQ6nstarQ2nstarQ2nstar = (dReQ10n*dReQ6n+dImQ10n*dImQ6n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
6249 + 2.*dReQ2n*dImQ2n*(dImQ10n*dReQ6n-dReQ10n*dImQ6n);
6250 // <5>_{6n,6n|5n,5n,2n}:
c10259fb 6251 Double_t reQ6nQ6nQ5nstarQ5nstarQ2nstar = dReQ2n*pow(dReQ5n,2.)*pow(dReQ6n,2.) - 2.*dReQ5n*pow(dReQ6n,2.)*dImQ2n*dImQ5n
6252 - dReQ2n*pow(dReQ6n,2.)*pow(dImQ5n,2.) + 2.*pow(dReQ5n,2.)*dReQ6n*dImQ2n*dImQ6n
6253 + 4.*dReQ2n*dReQ5n*dReQ6n*dImQ5n*dImQ6n - 2.*dReQ6n*dImQ2n*pow(dImQ5n,2.)*dImQ6n
6254 - dReQ2n*pow(dReQ5n,2.)*pow(dImQ6n,2.) + 2.*dReQ5n*dImQ2n*dImQ5n*pow(dImQ6n,2.)
6255 + dReQ2n*pow(dImQ5n,2.)*pow(dImQ6n,2.);
e1d101a6 6256 Double_t reQ10nQ2nQ6nstarQ6nstar = dImQ2n*pow(dImQ6n,2.)*dImQ10n+2.*dImQ6n*dImQ10n*dReQ2n*dReQ6n
6257 - dImQ2n*dImQ10n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ2n*dReQ10n
6258 + 2.*dImQ2n*dImQ6n*dReQ6n*dReQ10n+dReQ2n*pow(dReQ6n,2.)*dReQ10n;
e1d101a6 6259 Double_t reQ12nQ5nstarQ5nstarQ2nstar = (dReQ12n*dReQ2n+dImQ12n*dImQ2n)*(pow(dReQ5n,2)-pow(dImQ5n,2))
6260 + 2.*dReQ5n*dImQ5n*(dImQ12n*dReQ2n-dReQ12n*dImQ2n);
e1d101a6 6261 Double_t reQ12nQ10nstarQ2nstar = dReQ12n*dReQ10n*dReQ2n-dReQ12n*dImQ10n*dImQ2n+dImQ12n*dReQ10n*dImQ2n
6262 + dImQ12n*dImQ10n*dReQ2n;
e1d101a6 6263 // <5>_{5n,2n|3n,3n,1n}:
c10259fb 6264 Double_t reQ5nQ2nQ3nstarQ3nstarQ1nstar = dReQ1n*dReQ2n*pow(dReQ3n,2.)*dReQ5n + pow(dReQ3n,2.)*dReQ5n*dImQ1n*dImQ2n
6265 - 2.*dReQ2n*dReQ3n*dReQ5n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ2n*dImQ3n
6266 - dReQ1n*dReQ2n*dReQ5n*pow(dImQ3n,2.) - dReQ5n*dImQ1n*dImQ2n*pow(dImQ3n,2.)
6267 + dReQ2n*pow(dReQ3n,2.)*dImQ1n*dImQ5n - dReQ1n*pow(dReQ3n,2.)*dImQ2n*dImQ5n
6268 + 2.*dReQ1n*dReQ2n*dReQ3n*dImQ3n*dImQ5n + 2.*dReQ3n*dImQ1n*dImQ2n*dImQ3n*dImQ5n
6269 - dReQ2n*dImQ1n*pow(dImQ3n,2.)*dImQ5n + dReQ1n*dImQ2n*pow(dImQ3n,2.)*dImQ5n;
e1d101a6 6270 // <5>_{5n,1n,1n|4n,3n}:
c10259fb 6271 Double_t reQ5nQ1nQ1nQ4nstarQ3nstar = pow(dReQ1n,2.)*dReQ3n*dReQ4n*dReQ5n - dReQ3n*dReQ4n*dReQ5n*pow(dImQ1n,2.)
6272 + 2.*dReQ1n*dReQ4n*dReQ5n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ1n*dImQ4n
6273 - pow(dReQ1n,2.)*dReQ5n*dImQ3n*dImQ4n + dReQ5n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
6274 - 2.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ5n + pow(dReQ1n,2.)*dReQ4n*dImQ3n*dImQ5n
6275 - dReQ4n*pow(dImQ1n,2.)*dImQ3n*dImQ5n + pow(dReQ1n,2.)*dReQ3n*dImQ4n*dImQ5n
e1d101a6 6276 - dReQ3n*pow(dImQ1n,2.)*dImQ4n*dImQ5n + 2.*dReQ1n*dImQ1n*dImQ3n*dImQ4n*dImQ5n;
6277 // <5>_{5n,3n|4n,2n,2n}:
c10259fb 6278 Double_t reQ5nQ3nQ4nstarQ2nstarQ2nstar = dReQ4n*dReQ3n*pow(dReQ2n,2.)*dReQ5n + pow(dReQ2n,2.)*dReQ5n*dImQ4n*dImQ3n
6279 - 2.*dReQ3n*dReQ2n*dReQ5n*dImQ4n*dImQ2n + 2.*dReQ4n*dReQ2n*dReQ5n*dImQ3n*dImQ2n
6280 - dReQ4n*dReQ3n*dReQ5n*pow(dImQ2n,2.) - dReQ5n*dImQ4n*dImQ3n*pow(dImQ2n,2.)
6281 + dReQ3n*pow(dReQ2n,2.)*dImQ4n*dImQ5n - dReQ4n*pow(dReQ2n,2.)*dImQ3n*dImQ5n
6282 + 2.*dReQ4n*dReQ3n*dReQ2n*dImQ2n*dImQ5n + 2.*dReQ2n*dImQ4n*dImQ3n*dImQ2n*dImQ5n
6283 - dReQ3n*dImQ4n*pow(dImQ2n,2.)*dImQ5n + dReQ4n*dImQ3n*pow(dImQ2n,2.)*dImQ5n;
e1d101a6 6284 Double_t reQ8nQ4nstarQ2nstarQ2nstar = (dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
6285 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n);
6286 // <5>_{5n,2n,1n|4n,4n}:
c10259fb 6287 Double_t reQ5nQ2nQ1nQ4nstarQ4nstar = dReQ1n*dReQ2n*pow(dReQ4n,2.)*dReQ5n - pow(dReQ4n,2.)*dReQ5n*dImQ1n*dImQ2n
6288 + 2.*dReQ2n*dReQ4n*dReQ5n*dImQ1n*dImQ4n + 2.*dReQ1n*dReQ4n*dReQ5n*dImQ2n*dImQ4n
6289 - dReQ1n*dReQ2n*dReQ5n*pow(dImQ4n,2.) + dReQ5n*dImQ1n*dImQ2n*pow(dImQ4n,2.)
6290 - dReQ2n*pow(dReQ4n,2.)*dImQ1n*dImQ5n - dReQ1n*pow(dReQ4n,2.)*dImQ2n*dImQ5n
6291 + 2.*dReQ1n*dReQ2n*dReQ4n*dImQ4n*dImQ5n - 2.*dReQ4n*dImQ1n*dImQ2n*dImQ4n*dImQ5n
6292 + dReQ2n*dImQ1n*pow(dImQ4n,2.)*dImQ5n + dReQ1n*dImQ2n*pow(dImQ4n,2.)*dImQ5n;
e1d101a6 6293 // <5>_{6n,1n|3n,2n,2n}:
c10259fb 6294 Double_t reQ6nQ1nQ3nstarQ2nstarQ2nstar = dReQ3n*dReQ1n*pow(dReQ2n,2.)*dReQ6n + pow(dReQ2n,2.)*dReQ6n*dImQ3n*dImQ1n
6295 - 2.*dReQ1n*dReQ2n*dReQ6n*dImQ3n*dImQ2n + 2.*dReQ3n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
6296 - dReQ3n*dReQ1n*dReQ6n*pow(dImQ2n,2.) - dReQ6n*dImQ3n*dImQ1n*pow(dImQ2n,2.)
6297 + dReQ1n*pow(dReQ2n,2.)*dImQ3n*dImQ6n - dReQ3n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
6298 + 2.*dReQ3n*dReQ1n*dReQ2n*dImQ2n*dImQ6n + 2.*dReQ2n*dImQ3n*dImQ1n*dImQ2n*dImQ6n
6299 - dReQ1n*dImQ3n*pow(dImQ2n,2.)*dImQ6n + dReQ3n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
e1d101a6 6300
6301 // <5>_{6n,3n|4n,4n,1n}:
c10259fb 6302 Double_t reQ6nQ3nQ4nstarQ4nstarQ1nstar = dReQ1n*dReQ3n*pow(dReQ4n,2.)*dReQ6n + pow(dReQ4n,2.)*dReQ6n*dImQ1n*dImQ3n
6303 - 2.*dReQ3n*dReQ4n*dReQ6n*dImQ1n*dImQ4n + 2.*dReQ1n*dReQ4n*dReQ6n*dImQ3n*dImQ4n
6304 - dReQ1n*dReQ3n*dReQ6n*pow(dImQ4n,2.) - dReQ6n*dImQ1n*dImQ3n*pow(dImQ4n,2.)
6305 + dReQ3n*pow(dReQ4n,2.)*dImQ1n*dImQ6n - dReQ1n*pow(dReQ4n,2.)*dImQ3n*dImQ6n
6306 + 2.*dReQ1n*dReQ3n*dReQ4n*dImQ4n*dImQ6n + 2.*dReQ4n*dImQ1n*dImQ3n*dImQ4n*dImQ6n
6307 - dReQ3n*dImQ1n*pow(dImQ4n,2.)*dImQ6n + dReQ1n*dImQ3n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6308
6309 // five6n1n1n5n3n = 0.; // <5>_{6n,1n,1n|5n,3n} = <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
c10259fb 6310 Double_t reQ6nQ1nQ1nQ5nstarQ3nstar = pow(dReQ1n,2.)*dReQ3n*dReQ5n*dReQ6n - dReQ3n*dReQ5n*dReQ6n*pow(dImQ1n,2.)
6311 + 2.*dReQ1n*dReQ5n*dReQ6n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ6n*dImQ1n*dImQ5n
6312 - pow(dReQ1n,2.)*dReQ6n*dImQ3n*dImQ5n + dReQ6n*pow(dImQ1n,2.)*dImQ3n*dImQ5n
6313 - 2.*dReQ1n*dReQ3n*dReQ5n*dImQ1n*dImQ6n + pow(dReQ1n,2.)*dReQ5n*dImQ3n*dImQ6n
6314 - dReQ5n*pow(dImQ1n,2.)*dImQ3n*dImQ6n + pow(dReQ1n,2.)*dReQ3n*dImQ5n*dImQ6n
e1d101a6 6315 - dReQ3n*pow(dImQ1n,2.)*dImQ5n*dImQ6n + 2.*dReQ1n*dImQ1n*dImQ3n*dImQ5n*dImQ6n;
6316
6317 // <5>_{6n,3n|5n,2n,2n}:
c10259fb 6318 Double_t reQ6nQ3nQ5nstarQ2nstarQ2nstar = dReQ5n*dReQ3n*pow(dReQ2n,2.)*dReQ6n + pow(dReQ2n,2.)*dReQ6n*dImQ5n*dImQ3n
6319 - 2.*dReQ3n*dReQ2n*dReQ6n*dImQ5n*dImQ2n + 2.*dReQ5n*dReQ2n*dReQ6n*dImQ3n*dImQ2n
6320 - dReQ5n*dReQ3n*dReQ6n*pow(dImQ2n,2.) - dReQ6n*dImQ5n*dImQ3n*pow(dImQ2n,2.)
6321 + dReQ3n*pow(dReQ2n,2.)*dImQ5n*dImQ6n - dReQ5n*pow(dReQ2n,2.)*dImQ3n*dImQ6n
6322 + 2.*dReQ5n*dReQ3n*dReQ2n*dImQ2n*dImQ6n + 2.*dReQ2n*dImQ5n*dImQ3n*dImQ2n*dImQ6n
6323 - dReQ3n*dImQ5n*pow(dImQ2n,2.)*dImQ6n + dReQ5n*dImQ3n*pow(dImQ2n,2.)*dImQ6n;
e1d101a6 6324
6325 // <5>_{6n,5n|4n,4n,3n}:
c10259fb 6326 Double_t reQ6nQ5nQ4nstarQ4nstarQ3nstar = dReQ3n*dReQ5n*pow(dReQ4n,2.)*dReQ6n + pow(dReQ4n,2.)*dReQ6n*dImQ3n*dImQ5n
6327 - 2.*dReQ5n*dReQ4n*dReQ6n*dImQ3n*dImQ4n + 2.*dReQ3n*dReQ4n*dReQ6n*dImQ5n*dImQ4n
6328 - dReQ3n*dReQ5n*dReQ6n*pow(dImQ4n,2.) - dReQ6n*dImQ3n*dImQ5n*pow(dImQ4n,2.)
6329 + dReQ5n*pow(dReQ4n,2.)*dImQ3n*dImQ6n - dReQ3n*pow(dReQ4n,2.)*dImQ5n*dImQ6n
6330 + 2.*dReQ3n*dReQ5n*dReQ4n*dImQ4n*dImQ6n + 2.*dReQ4n*dImQ3n*dImQ5n*dImQ4n*dImQ6n
6331 - dReQ5n*dImQ3n*pow(dImQ4n,2.)*dImQ6n + dReQ3n*dImQ5n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6332 Double_t reQ11nQ4nstarQ4nstarQ3nstar = (dReQ11n*dReQ3n+dImQ11n*dImQ3n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6333 + 2.*dReQ4n*dImQ4n*(dImQ11n*dReQ3n-dReQ11n*dImQ3n);
6334
c10259fb 6335 // <5>_{6n,3n,1n|5n,5n}:
6336 Double_t reQ6nQ3nQ1nQ5nstarQ5nstar = dReQ1n*dReQ3n*pow(dReQ5n,2.)*dReQ6n - pow(dReQ5n,2.)*dReQ6n*dImQ1n*dImQ3n
6337 + 2.*dReQ3n*dReQ5n*dReQ6n*dImQ1n*dImQ5n + 2.*dReQ1n*dReQ5n*dReQ6n*dImQ3n*dImQ5n
6338 - dReQ1n*dReQ3n*dReQ6n*pow(dImQ5n,2.) + dReQ6n*dImQ1n*dImQ3n*pow(dImQ5n,2.)
6339 - dReQ3n*pow(dReQ5n,2.)*dImQ1n*dImQ6n - dReQ1n*pow(dReQ5n,2.)*dImQ3n*dImQ6n
6340 + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ5n*dImQ6n - 2.*dReQ5n*dImQ1n*dImQ3n*dImQ5n*dImQ6n
6341 + dReQ3n*dImQ1n*pow(dImQ5n,2.)*dImQ6n + dReQ1n*dImQ3n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 6342
6343 // <5>_{6n,6n|5n,4n,3n}:
c10259fb 6344 Double_t reQ6nQ6nQ5nstarQ4nstarQ3nstar = dReQ3n*dReQ4n*dReQ5n*pow(dReQ6n,2.) - dReQ5n*pow(dReQ6n,2.)*dImQ3n*dImQ4n
6345 - dReQ4n*pow(dReQ6n,2.)*dImQ3n*dImQ5n - dReQ3n*pow(dReQ6n,2.)*dImQ4n*dImQ5n
6346 + 2.*dReQ4n*dReQ5n*dReQ6n*dImQ3n*dImQ6n + 2.*dReQ3n*dReQ5n*dReQ6n*dImQ4n*dImQ6n
6347 + 2.*dReQ3n*dReQ4n*dReQ6n*dImQ5n*dImQ6n - 2.*dReQ6n*dImQ3n*dImQ4n*dImQ5n*dImQ6n
6348 - dReQ3n*dReQ4n*dReQ5n*pow(dImQ6n,2.) + dReQ5n*dImQ3n*dImQ4n*pow(dImQ6n,2.)
6349 + dReQ4n*dImQ3n*dImQ5n*pow(dImQ6n,2.) + dReQ3n*dImQ4n*dImQ5n*pow(dImQ6n,2.);
e1d101a6 6350
6351
6352 Double_t reQ8nQ4nQ6nstarQ6nstar = dImQ4n*pow(dImQ6n,2.)*dImQ8n+2.*dImQ6n*dImQ8n*dReQ4n*dReQ6n
6353 - dImQ4n*dImQ8n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ4n*dReQ8n
6354 + 2.*dImQ4n*dImQ6n*dReQ6n*dReQ8n+dReQ4n*pow(dReQ6n,2.)*dReQ8n;
6355
6356
6357 Double_t reQ9nQ3nQ6nstarQ6nstar = dImQ3n*pow(dImQ6n,2.)*dImQ9n+2.*dImQ6n*dImQ9n*dReQ3n*dReQ6n
6358 - dImQ3n*dImQ9n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ3n*dReQ9n
6359 + 2.*dImQ3n*dImQ6n*dReQ6n*dReQ9n+dReQ3n*pow(dReQ6n,2.)*dReQ9n;
6360
6361
c10259fb 6362 Double_t reQ12nQ5nstarQ4nstarQ3nstar = dReQ3n*dReQ5n*dReQ4n*dReQ12n-dReQ4n*dReQ12n*dImQ3n*dImQ5n
6363 - dReQ5n*dReQ12n*dImQ3n*dImQ4n-dReQ3n*dReQ12n*dImQ5n*dImQ4n
6364 + dReQ5n*dReQ4n*dImQ3n*dImQ12n+dReQ3n*dReQ4n*dImQ5n*dImQ12n
6365 + dReQ3n*dReQ5n*dImQ4n*dImQ12n-dImQ3n*dImQ5n*dImQ4n*dImQ12n;
e1d101a6 6366 Double_t reQ12nQ9nstarQ3nstar = dReQ12n*dReQ9n*dReQ3n-dReQ12n*dImQ9n*dImQ3n+dImQ12n*dReQ9n*dImQ3n
6367 + dImQ12n*dImQ9n*dReQ3n;
e1d101a6 6368 Double_t reQ12nQ8nstarQ4nstar = dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n
6369 + dImQ12n*dImQ8n*dReQ4n;
6370
6371
6372 five4n3n3n2n2n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))
6373 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
6374 - ((dReQ7n*dReQ3n+dImQ7n*dImQ3n)*(pow(dReQ2n,2.)-pow(dImQ2n,2.))
6375 + 2.*dReQ2n*dImQ2n*(dImQ7n*dReQ3n-dReQ7n*dImQ3n))
6376 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
6377 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6378 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
6379 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
6380 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
6381 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
6382 - 2.*(dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
6383 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
6384 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
6385 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n)
6386 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6387 + 1.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6388 + 3.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6389 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
6390 + 2.*(dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
6391 + 2.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6392 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6393 + 6.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6394 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6395 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6396 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6397 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6398 - 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6399 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6400 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6401 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6402 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6403 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6404 - 2.*dMult*(dMult-12.))
6405 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6406 five4n2n4n1n1n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))
6407 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6408 - reQ6nQ4nstarQ1nstarQ1nstar
6409 - reQ4nQ2nstarQ1nstarQ1nstar
6410 - 2.*reQ4nQ1nQ3nstarQ2nstar
6411 - 2.*reQ5nQ1nQ4nstarQ2nstar
6412 + 2.*reQ3nQ2nstarQ1nstar
6413 + reQ6nQ4nstarQ2nstar
6414 + 3.*reQ4nQ2nstarQ2nstar
6415 + 2.*reQ5nQ3nstarQ2nstar
6416 + 2.*reQ6nQ5nstarQ1nstar
6417 + 2.*reQ6nQ4nstarQ2nstar
6418 + 6.*reQ4nQ3nstarQ1nstar
6419 + 6.*reQ5nQ4nstarQ1nstar
6420 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6421 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6422 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6423 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6424 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6425 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6426 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6427 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6428 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6429 // to be polished:
6430 five4n3n4n2n1n = (reQ4nQ3nQ4nstarQ2nstarQ1nstar
6431 - reQ5nQ2nQ4nstarQ3nstar
6432 - reQ6nQ1nQ4nstarQ3nstar
6433 - reQ4nQ1nQ3nstarQ2nstar
6434 - reQ7nQ4nstarQ2nstarQ1nstar
6435 - reQ4nQ2nstarQ1nstarQ1nstar
6436 - reQ4nQ2nQ3nstarQ3nstar
6437 + reQ4nQ3nstarQ1nstar
6438 + reQ7nQ4nstarQ3nstar
6439 + 3.*reQ4nQ3nstarQ1nstar
6440 + 2.*reQ7nQ4nstarQ3nstar
6441 + reQ5nQ3nstarQ2nstar
6442 + reQ7nQ5nstarQ2nstar
6443 + reQ6nQ3nstarQ3nstar
6444 + reQ4nQ3nstarQ1nstar
6445 + reQ7nQ6nstarQ1nstar
6446 + reQ2nQ1nstarQ1nstar
6447 - (dMult-6.)*reQ3nQ2nstarQ1nstar
6448 + 3.*reQ5nQ4nstarQ1nstar
6449 + reQ4nQ3nstarQ1nstar
6450 + 2.*reQ4nQ2nstarQ2nstar
6451 + 3.*reQ6nQ4nstarQ2nstar
6452 + reQ3nQ2nstarQ1nstar
6453 + reQ4nQ2nstarQ2nstar
6454 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6455 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6456 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6457 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6458 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6459 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6460 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6461 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6462 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6463 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6464 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6465 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6466 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6467 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6468 five5n1n3n2n1n = ((pow(dImQ1n,2.)+pow(dReQ1n,2.))*(dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
6469 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n)
6470 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6471 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6472 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6473 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6474 - (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
6475 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
6476 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
6477 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n)
6478 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
6479 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
6480 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
6481 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
6482 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
6483 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
6484 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
6485 - (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
6486 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
6487 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n)
6488 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
6489 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
6490 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
6491 + 3.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
6492 + dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n
6493 + pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n
6494 + 4.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
6495 - (dMult-7.)*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6496 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6497 + pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
6498 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6499 + 3.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6500 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6501 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6502 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6503 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6504 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6505 + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6506 - 2.*dMult*(dMult-12.))
6507 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6508 // to be polished:
6509 five5n2n5n1n1n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6510 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6511 - reQ7nQ5nstarQ1nstarQ1nstar
6512 - reQ5nQ3nstarQ1nstarQ1nstar
6513 - 2.*reQ5nQ1nQ4nstarQ2nstar
6514 - 2.*reQ6nQ1nQ5nstarQ2nstar
6515 + 2.*reQ4nQ3nstarQ1nstar
6516 + reQ7nQ5nstarQ2nstar
6517 + 3.*reQ5nQ3nstarQ2nstar
6518 + 2.*reQ6nQ4nstarQ2nstar
6519 + 2.*reQ7nQ6nstarQ1nstar
6520 + 2.*reQ7nQ5nstarQ2nstar
6521 + 6.*reQ5nQ4nstarQ1nstar
6522 + 6.*reQ6nQ5nstarQ1nstar
6523 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6524 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6525 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6526 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))-4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6527 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6528 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6529 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6530 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6531 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6532 // to be polished:
6533 five5n2n4n2n1n = (reQ5nQ2nQ4nstarQ2nstarQ1nstar
6534 - reQ5nQ2nQ4nstarQ3nstar
6535 - reQ6nQ1nQ5nstarQ2nstar
6536 - reQ5nQ2nstarQ2nstarQ1nstar
6537 - reQ7nQ4nstarQ2nstarQ1nstar
6538 - reQ4nQ1nQ3nstarQ2nstar
6539 - reQ5nQ1nQ4nstarQ2nstar
6540 + reQ2nQ1nstarQ1nstar
6541 + reQ7nQ5nstarQ2nstar
6542 + 3.*reQ5nQ3nstarQ2nstar
6543 + 2.*reQ7nQ5nstarQ2nstar
6544 + reQ5nQ3nstarQ2nstar
6545 + reQ7nQ4nstarQ3nstar
6546 + reQ6nQ5nstarQ1nstar
6547 + reQ2nQ1nstarQ1nstar
6548 + reQ7nQ6nstarQ1nstar
6549 + reQ3nQ2nstarQ1nstar
6550 - (dMult-6.)*reQ5nQ4nstarQ1nstar
6551 + 3.*reQ3nQ2nstarQ1nstar
6552 + reQ2nQ1nstarQ1nstar
6553 + 2.*reQ4nQ2nstarQ2nstar
6554 + 3.*reQ6nQ4nstarQ2nstar
6555 + reQ4nQ3nstarQ1nstar
6556 + reQ4nQ2nstarQ2nstar
6557 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6558 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6559 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6560 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6561 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6562 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6563 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6564 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6565 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6566 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6567 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6568 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6569 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
6570 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6571 // to be polished:
6572 five5n3n4n3n1n = (reQ5nQ3nQ4nstarQ3nstarQ1nstar
6573 - reQ5nQ3nQ4nstarQ4nstar
6574 - reQ7nQ1nQ5nstarQ3nstar
6575 - reQ5nQ3nstarQ1nstarQ1nstar
6576 - reQ8nQ4nstarQ3nstarQ1nstar
6577 - reQ4nQ1nQ3nstarQ2nstar
6578 - reQ5nQ2nQ4nstarQ3nstar
6579 + reQ3nQ2nstarQ1nstar
6580 + reQ8nQ5nstarQ3nstar
6581 + 3.*reQ5nQ3nstarQ2nstar
6582 + 2.*reQ8nQ5nstarQ3nstar
6583 + reQ5nQ4nstarQ1nstar
6584 + reQ8nQ4nstarQ4nstar
6585 + reQ7nQ5nstarQ2nstar
6586 + reQ3nQ2nstarQ1nstar
6587 + reQ8nQ7nstarQ1nstar
6588 + reQ2nQ1nstarQ1nstar
6589 - (dMult-6.)*reQ5nQ4nstarQ1nstar
6590 + 3.*reQ4nQ3nstarQ1nstar
6591 + reQ3nQ2nstarQ1nstar
6592 + 2.*reQ4nQ3nstarQ1nstar
6593 + 3.*reQ7nQ4nstarQ3nstar
6594 + reQ4nQ2nstarQ2nstar
6595 + reQ4nQ3nstarQ1nstar
6596 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6597 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6598 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6599 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6600 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6601 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6602 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6603 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6604 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6605 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6606 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6607 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6608 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6609 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6610 // to be polished:
6611 five5n4n4n3n2n = (reQ5nQ4nQ4nstarQ3nstarQ2nstar
6612 - reQ6nQ3nQ5nstarQ4nstar
6613 - reQ7nQ2nQ5nstarQ4nstar
6614 - reQ5nQ1nQ4nstarQ2nstar
6615 - reQ9nQ4nstarQ3nstarQ2nstar
6616 - reQ4nQ1nQ3nstarQ2nstar
6617 - reQ5nQ2nQ4nstarQ3nstar
6618 + reQ4nQ2nstarQ2nstar
6619 + reQ9nQ5nstarQ4nstar
6620 + 3.*reQ5nQ4nstarQ1nstar
6621 + 2.*reQ9nQ5nstarQ4nstar
6622 + reQ6nQ5nstarQ1nstar
6623 + reQ9nQ6nstarQ3nstar
6624 + reQ7nQ5nstarQ2nstar
6625 + reQ4nQ2nstarQ2nstar
6626 + reQ9nQ7nstarQ2nstar
6627 + reQ2nQ1nstarQ1nstar
6628 - (dMult-6.)*reQ5nQ3nstarQ2nstar
6629 + 3.*reQ6nQ4nstarQ2nstar
6630 + reQ4nQ2nstarQ2nstar
6631 + 2.*reQ4nQ3nstarQ1nstar
6632 + 3.*reQ7nQ4nstarQ3nstar
6633 + reQ3nQ2nstarQ1nstar
6634 + reQ4nQ3nstarQ1nstar
6635 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6636 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6637 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6638 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6639 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6640 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6641 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6642 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6643 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6644 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6645 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6646 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6647 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6648 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6649 // to be polished:
6650 five5n3n5n2n1n = (reQ5nQ3nQ5nstarQ2nstarQ1nstar
6651 - reQ6nQ2nQ5nstarQ3nstar
6652 - reQ7nQ1nQ5nstarQ3nstar
6653 - reQ5nQ1nQ3nstarQ3nstar
6654 - reQ8nQ5nstarQ2nstarQ1nstar
6655 - reQ5nQ2nstarQ2nstarQ1nstar
6656 - reQ5nQ2nQ4nstarQ3nstar
6657 + reQ5nQ4nstarQ1nstar
6658 + reQ8nQ5nstarQ3nstar
6659 + 3.*reQ5nQ3nstarQ2nstar
6660 + 2.*reQ8nQ5nstarQ3nstar
6661 + reQ6nQ3nstarQ3nstar
6662 + reQ8nQ6nstarQ2nstar
6663 + reQ7nQ4nstarQ3nstar
6664 + reQ5nQ4nstarQ1nstar
6665 + reQ8nQ7nstarQ1nstar
6666 + reQ3nQ2nstarQ1nstar
6667 - (dMult-6.)*reQ3nQ2nstarQ1nstar
6668 + 3.*reQ6nQ5nstarQ1nstar
6669 + reQ5nQ4nstarQ1nstar
6670 + 2.*reQ5nQ3nstarQ2nstar
6671 + 3.*reQ7nQ5nstarQ2nstar
6672 + reQ4nQ2nstarQ2nstar
6673 + reQ5nQ3nstarQ2nstar
6674 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6675 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6676 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6677 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6678 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6679 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6680 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6681 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6682 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6683 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6684 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6685 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6686 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6687 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6688 // to be polished:
6689 five5n4n5n2n2n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6690 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
6691 - reQ9nQ5nstarQ2nstarQ2nstar
6692 - reQ5nQ2nstarQ2nstarQ1nstar
6693 - 2.*reQ5nQ2nQ4nstarQ3nstar
6694 - 2.*reQ7nQ2nQ5nstarQ4nstar
6695 + 2.*reQ3nQ2nstarQ1nstar
6696 + reQ9nQ5nstarQ4nstar
6697 + 3.*reQ5nQ4nstarQ1nstar
6698 + 2.*reQ7nQ4nstarQ3nstar
6699 + 2.*reQ9nQ7nstarQ2nstar
6700 + 2.*reQ9nQ5nstarQ4nstar
6701 + 6.*reQ5nQ3nstarQ2nstar
6702 + 6.*reQ7nQ5nstarQ2nstar
6703 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6704 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6705 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6706 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6707 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6708 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6709 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6710 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6711 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6712 // to be polished:
6713 five5n4n5n3n1n = (reQ5nQ4nQ5nstarQ3nstarQ1nstar
6714 - reQ6nQ3nQ5nstarQ4nstar
6715 - reQ8nQ1nQ5nstarQ4nstar
6716 - reQ5nQ1nQ4nstarQ2nstar
6717 - reQ9nQ5nstarQ3nstarQ1nstar
6718 - reQ5nQ3nstarQ1nstarQ1nstar
6719 - reQ5nQ3nQ4nstarQ4nstar
6720 + reQ5nQ4nstarQ1nstar
6721 + reQ9nQ5nstarQ4nstar
6722 + 3.*reQ5nQ4nstarQ1nstar
6723 + 2.*reQ9nQ5nstarQ4nstar
6724 + reQ6nQ4nstarQ2nstar
6725 + reQ9nQ6nstarQ3nstar
6726 + reQ8nQ4nstarQ4nstar
6727 + reQ5nQ4nstarQ1nstar
6728 + reQ9nQ8nstarQ1nstar
6729 + reQ2nQ1nstarQ1nstar
6730 - (dMult-6.)*reQ4nQ3nstarQ1nstar
6731 + 3.*reQ6nQ5nstarQ1nstar
6732 + reQ5nQ4nstarQ1nstar
6733 + 2.*reQ5nQ3nstarQ2nstar
6734 + 3.*reQ8nQ5nstarQ3nstar
6735 + reQ4nQ3nstarQ1nstar
6736 + reQ5nQ3nstarQ2nstar
6737 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6738 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6739 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6740 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6741 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6742 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6743 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6744 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6745 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6746 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6747 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6748 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6749 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6750 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6751 five6n1n3n3n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))
6752 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6753 - 2.*(dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
6754 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
6755 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
6756 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n)
6757 - 2.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6758 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6759 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6760 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6761 - (-pow(dImQ3n,2.)*dImQ1n*dImQ7n+dImQ1n*dImQ7n*pow(dReQ3n,2.)
6762 + 2.*dImQ3n*dImQ7n*dReQ3n*dReQ1n-2.*dImQ3n*dImQ1n*dReQ3n*dReQ7n
6763 - pow(dImQ3n,2.)*dReQ1n*dReQ7n+pow(dReQ3n,2.)*dReQ1n*dReQ7n)
6764 - ((pow(dReQ3n,2.)-pow(dImQ3n,2.))*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)
6765 + 2.*dReQ3n*dImQ3n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6766 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6767 + (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6768 + 2.*(dReQ7n*dReQ3n*dReQ4n-dReQ7n*dImQ3n*dImQ4n+dImQ7n*dReQ3n*dImQ4n+dImQ7n*dImQ3n*dReQ4n)
6769 + 2.*(dReQ6n*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)+dImQ6n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6770 + 3.*(dReQ6n*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)+dImQ6n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6771 + 4.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6772 + 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6773 + 6.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
6774 + 2.*(dReQ5n*dReQ3n*dReQ2n-dReQ5n*dImQ3n*dImQ2n+dImQ5n*dReQ3n*dImQ2n+dImQ5n*dImQ3n*dReQ2n)
6775 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6776 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6777 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6778 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6779 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6780 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6781 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+(dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6782 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6783 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6784 five6n2n3n3n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))
6785 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6786 - 2.*(dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
6787 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
6788 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
6789 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n)
6790 - 2.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6791 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6792 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6793 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6794 - (-pow(dImQ3n,2.)*dImQ2n*dImQ8n+dImQ2n*dImQ8n*pow(dReQ3n,2.)
6795 + 2.*dImQ3n*dImQ8n*dReQ3n*dReQ2n-2.*dImQ3n*dImQ2n*dReQ3n*dReQ8n
6796 - pow(dImQ3n,2.)*dReQ2n*dReQ8n+pow(dReQ3n,2.)*dReQ2n*dReQ8n)
6797 - ((pow(dReQ3n,2.)-pow(dImQ3n,2.))*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)
6798 + 2.*dReQ3n*dImQ3n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6799 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6800 + (dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6801 + 2.*(dReQ8n*dReQ3n*dReQ5n-dReQ8n*dImQ3n*dImQ5n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
6802 + 2.*(dReQ6n*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)+dImQ6n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6803 + 3.*(dReQ6n*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)+dImQ6n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6804 + 4.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6805 + 2.*(dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6806 + 6.*(dReQ5n*dReQ3n*dReQ2n-dReQ5n*dImQ3n*dImQ2n+dImQ5n*dReQ3n*dImQ2n+dImQ5n*dImQ3n*dReQ2n)
6807 + 2.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
6808 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6809 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6810 - 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6811 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6812 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6813 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6814 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6815 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6816 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6817 // to be polished:
6818 five6n1n4n2n1n = (reQ6nQ1nQ4nstarQ2nstarQ1nstar
6819 - reQ6nQ1nQ4nstarQ3nstar
6820 - reQ6nQ1nQ5nstarQ2nstar
6821 - reQ6nQ3nstarQ2nstarQ1nstar
6822 - reQ7nQ4nstarQ2nstarQ1nstar
6823 - reQ5nQ1nQ4nstarQ2nstar
6824 - reQ6nQ4nstarQ1nstarQ1nstar
6825 + reQ2nQ1nstarQ1nstar
6826 + reQ7nQ6nstarQ1nstar
6827 + 3.*reQ6nQ5nstarQ1nstar
6828 + 2.*reQ7nQ6nstarQ1nstar
6829 + reQ6nQ3nstarQ3nstar
6830 + reQ7nQ4nstarQ3nstar
6831 + reQ6nQ5nstarQ1nstar
6832 + reQ2nQ1nstarQ1nstar
6833 + reQ7nQ5nstarQ2nstar
6834 + reQ5nQ3nstarQ2nstar
6835 - (dMult-6.)*reQ6nQ4nstarQ2nstar
6836 + 3.*reQ3nQ2nstarQ1nstar
6837 + reQ2nQ1nstarQ1nstar
6838 + 2.*reQ4nQ3nstarQ1nstar
6839 + 3.*reQ5nQ4nstarQ1nstar
6840 + reQ5nQ4nstarQ1nstar
6841 + reQ4nQ3nstarQ1nstar
6842 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6843 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6844 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6845 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6846 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6847 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6848 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6849 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6850 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6851 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6852 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6853 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6854 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
6855 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6856 // to be polished:
6857 five6n3n4n3n2n = (reQ6nQ3nQ4nstarQ3nstarQ2nstar
6858 - reQ6nQ3nQ5nstarQ4nstar
6859 - reQ7nQ2nQ6nstarQ3nstar
6860 - reQ6nQ3nstarQ2nstarQ1nstar
6861 - reQ9nQ4nstarQ3nstarQ2nstar
6862 - reQ4nQ2nQ3nstarQ3nstar
6863 - reQ6nQ1nQ4nstarQ3nstar
6864 + reQ3nQ2nstarQ1nstar
6865 + reQ9nQ6nstarQ3nstar
6866 + 3.*reQ6nQ3nstarQ3nstar
6867 + 2.*reQ9nQ6nstarQ3nstar
6868 + reQ6nQ5nstarQ1nstar
6869 + reQ9nQ5nstarQ4nstar
6870 + reQ7nQ6nstarQ1nstar
6871 + reQ3nQ2nstarQ1nstar
6872 + reQ9nQ7nstarQ2nstar
6873 + reQ3nQ2nstarQ1nstar
6874 - (dMult-6.)*reQ6nQ4nstarQ2nstar
6875 + 3.*reQ5nQ3nstarQ2nstar
6876 + reQ3nQ2nstarQ1nstar
6877 + 2.*reQ4nQ3nstarQ1nstar
6878 + 3.*reQ7nQ4nstarQ3nstar
6879 + reQ4nQ3nstarQ1nstar
6880 + reQ4nQ3nstarQ1nstar
6881 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6882 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6883 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6884 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6885 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6886 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6887 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6888 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6889 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6890 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6891 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6892 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6893 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6894 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6895 five6n4n4n3n3n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))
6896 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6897 - ((dReQ10n*dReQ4n+dImQ10n*dImQ4n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
6898 + 2.*dReQ3n*dImQ3n*(dImQ10n*dReQ4n-dReQ10n*dImQ4n))
6899 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
6900 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
6901 - 2.*(dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
6902 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
6903 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
6904 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n)
6905 - 2.*(dImQ3n*dImQ4n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ3n*dReQ4n
6906 + dImQ4n*dImQ7n*dReQ3n*dReQ6n-dImQ3n*dImQ7n*dReQ4n*dReQ6n
6907 - dImQ4n*dImQ6n*dReQ3n*dReQ7n+dImQ3n*dImQ6n*dReQ4n*dReQ7n
6908 + dImQ3n*dImQ4n*dReQ6n*dReQ7n+dReQ3n*dReQ4n*dReQ6n*dReQ7n)
6909 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6910 + 1.*(dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n+dImQ10n*dImQ6n*dReQ4n)
6911 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
6912 + 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6913 + 2.*(dReQ10n*dReQ7n*dReQ3n-dReQ10n*dImQ7n*dImQ3n+dImQ10n*dReQ7n*dImQ3n+dImQ10n*dImQ7n*dReQ3n)
6914 + 2.*(dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n+dImQ10n*dImQ6n*dReQ4n)
6915 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6916 + 6.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6917 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6918 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6919 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6920 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6921 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6922 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6923 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6924 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6925 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6926 // to be polished:
6927 five6n2n5n2n1n = (reQ6nQ2nQ5nstarQ2nstarQ1nstar
6928 - reQ6nQ2nQ5nstarQ3nstar
6929 - reQ7nQ1nQ6nstarQ2nstar
6930 - reQ6nQ3nstarQ2nstarQ1nstar
6931 - reQ8nQ5nstarQ2nstarQ1nstar
6932 - reQ5nQ1nQ4nstarQ2nstar
6933 - reQ6nQ1nQ5nstarQ2nstar
6934 + reQ2nQ1nstarQ1nstar
6935 + reQ8nQ6nstarQ2nstar
6936 + 3.*reQ6nQ4nstarQ2nstar
6937 + 2.*reQ8nQ6nstarQ2nstar
6938 + reQ6nQ3nstarQ3nstar
6939 + reQ8nQ5nstarQ3nstar
6940 + reQ7nQ6nstarQ1nstar
6941 + reQ2nQ1nstarQ1nstar
6942 + reQ8nQ7nstarQ1nstar
6943 + reQ4nQ3nstarQ1nstar
6944 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6945 + 3.*reQ3nQ2nstarQ1nstar
6946 + reQ2nQ1nstarQ1nstar
6947 + 2.*reQ5nQ3nstarQ2nstar
6948 + 3.*reQ7nQ5nstarQ2nstar
6949 + reQ5nQ4nstarQ1nstar
6950 + reQ5nQ3nstarQ2nstar
6951 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6952 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6953 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6954 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6955 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6956 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6957 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6958 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6959 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6960 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6961 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6962 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6963 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
6964 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6965 // to be polished:
6966 five6n3n5n3n1n = (reQ6nQ3nQ5nstarQ3nstarQ1nstar
6967 - reQ6nQ3nQ5nstarQ4nstar
6968 - reQ8nQ1nQ6nstarQ3nstar
6969 - reQ6nQ3nstarQ2nstarQ1nstar
6970 - reQ9nQ5nstarQ3nstarQ1nstar
6971 - reQ5nQ1nQ3nstarQ3nstar
6972 - reQ6nQ2nQ5nstarQ3nstar
6973 + reQ3nQ2nstarQ1nstar
6974 + reQ9nQ6nstarQ3nstar
6975 + 3.*reQ6nQ3nstarQ3nstar
6976 + 2.*reQ9nQ6nstarQ3nstar
6977 + reQ6nQ4nstarQ2nstar
6978 + reQ9nQ5nstarQ4nstar
6979 + reQ8nQ6nstarQ2nstar
6980 + reQ3nQ2nstarQ1nstar
6981 + reQ9nQ8nstarQ1nstar
6982 + reQ3nQ2nstarQ1nstar
6983 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6984 + 3.*reQ4nQ3nstarQ1nstar
6985 + reQ3nQ2nstarQ1nstar
6986 + 2.*reQ5nQ3nstarQ2nstar
6987 + 3.*reQ8nQ5nstarQ3nstar
6988 + reQ5nQ3nstarQ2nstar
6989 + reQ5nQ3nstarQ2nstar
6990 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6991 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6992 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6993 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6994 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6995 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6996 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6997 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6998 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6999 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7000 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7001 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7002 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
7003 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7004 // to be polished:
7005 five6n4n5n4n1n = (reQ6nQ4nQ5nstarQ4nstarQ1nstar
7006 - reQ6nQ4nQ5nstarQ5nstar
7007 - reQ9nQ1nQ6nstarQ4nstar
7008 - reQ6nQ4nstarQ1nstarQ1nstar
7009 - reQ10nQ5nstarQ4nstarQ1nstar
7010 - reQ5nQ1nQ4nstarQ2nstar
7011 - reQ6nQ3nQ5nstarQ4nstar
7012 + reQ4nQ3nstarQ1nstar
7013 + reQ10nQ6nstarQ4nstar
7014 + 3.*reQ6nQ4nstarQ2nstar
7015 + 2.*reQ10nQ6nstarQ4nstar
7016 + reQ6nQ5nstarQ1nstar
7017 + reQ10nQ5nstarQ5nstar
7018 + reQ9nQ6nstarQ3nstar
7019 + reQ4nQ3nstarQ1nstar
7020 + reQ10nQ9nstarQ1nstar
7021 + reQ2nQ1nstarQ1nstar
7022 - (dMult-6.)*reQ6nQ5nstarQ1nstar
7023 + 3.*reQ5nQ4nstarQ1nstar
7024 + reQ4nQ3nstarQ1nstar
7025 + 2.*reQ5nQ4nstarQ1nstar
7026 + 3.*reQ9nQ5nstarQ4nstar
7027 + reQ5nQ3nstarQ2nstar
7028 + reQ5nQ4nstarQ1nstar
7029 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7030 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7031 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7032 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7033 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7034 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7035 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7036 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7037 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7038 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7039 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7040 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7041 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
7042 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7043 five6n5n5n3n3n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
7044 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
7045 - ((dReQ11n*dReQ5n+dImQ11n*dImQ5n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
7046 + 2.*dReQ3n*dImQ3n*(dImQ11n*dReQ5n-dReQ11n*dImQ5n))
7047 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7048 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
7049 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
7050 - 2.*(dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
7051 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
7052 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
7053 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n)
7054 - 2.*(dImQ3n*dImQ5n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ3n*dReQ5n
7055 + dImQ5n*dImQ8n*dReQ3n*dReQ6n-dImQ3n*dImQ8n*dReQ5n*dReQ6n
7056 - dImQ5n*dImQ6n*dReQ3n*dReQ8n+dImQ3n*dImQ6n*dReQ5n*dReQ8n
7057 + dImQ3n*dImQ5n*dReQ6n*dReQ8n+dReQ3n*dReQ5n*dReQ6n*dReQ8n)
7058 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7059 + 1.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n+dImQ11n*dImQ6n*dReQ5n)
7060 + 3.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
7061 + 2.*(dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
7062 + 2.*(dReQ11n*dReQ8n*dReQ3n-dReQ11n*dImQ8n*dImQ3n+dImQ11n*dReQ8n*dImQ3n+dImQ11n*dImQ8n*dReQ3n)
7063 + 2.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n+dImQ11n*dImQ6n*dReQ5n)
7064 + 6.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7065 + 6.*(dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n+dImQ8n*dImQ5n*dReQ3n)
7066 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7067 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7068 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7069 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))-4.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7070 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7071 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7072 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7073 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7074 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7075 // to be polished:
7076 five6n2n6n1n1n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))
7077 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
7078 - reQ8nQ6nstarQ1nstarQ1nstar
7079 - reQ6nQ4nstarQ1nstarQ1nstar
7080 - 2.*reQ6nQ1nQ5nstarQ2nstar
7081 - 2.*reQ7nQ1nQ6nstarQ2nstar
7082 + 2.*reQ5nQ4nstarQ1nstar
7083 + reQ8nQ6nstarQ2nstar
7084 + 3.*reQ6nQ4nstarQ2nstar
7085 + 2.*reQ7nQ5nstarQ2nstar
7086 + 2.*reQ8nQ7nstarQ1nstar
7087 + 2.*reQ8nQ6nstarQ2nstar
7088 + 6.*reQ6nQ5nstarQ1nstar
7089 + 6.*reQ7nQ6nstarQ1nstar
7090 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7091 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7092 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7093 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7094 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7095 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7096 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7097 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7098 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7099 five6n3n6n2n1n = (reQ6nQ3nQ6nstarQ2nstarQ1nstar
7100 - reQ7nQ2nQ6nstarQ3nstar
7101 - reQ8nQ1nQ6nstarQ3nstar
7102 - reQ6nQ1nQ4nstarQ3nstar
7103 - reQ9nQ6nstarQ2nstarQ1nstar
7104 - reQ6nQ3nstarQ2nstarQ1nstar
7105 - reQ6nQ2nQ5nstarQ3nstar
7106 + reQ6nQ5nstarQ1nstar
7107 + reQ9nQ6nstarQ3nstar
7108 + 3.*reQ6nQ3nstarQ3nstar
7109 + 2.*reQ9nQ6nstarQ3nstar
7110 + reQ7nQ4nstarQ3nstar
7111 + reQ9nQ7nstarQ2nstar
7112 + reQ8nQ5nstarQ3nstar
7113 + reQ6nQ5nstarQ1nstar
7114 + reQ9nQ8nstarQ1nstar
7115 + reQ4nQ3nstarQ1nstar
7116 - (dMult-6.)*reQ3nQ2nstarQ1nstar
7117 + 3.*reQ7nQ6nstarQ1nstar
7118 + reQ6nQ5nstarQ1nstar
7119 + 2.*reQ6nQ4nstarQ2nstar
7120 + 3.*reQ8nQ6nstarQ2nstar
7121 + reQ5nQ3nstarQ2nstar
7122 + reQ6nQ4nstarQ2nstar
7123 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7124 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7125 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7126 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7127 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7128 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7129 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7130 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7131 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7132 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7133 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7134 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7135 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7136 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7137 five6n4n6n2n2n = (-(pow(dImQ6n,2.)+pow(dReQ6n,2.))
7138 * (-2.*dImQ2n*dImQ4n*dReQ2n+pow(dImQ2n,2.)*dReQ4n-pow(dReQ2n,2.)*dReQ4n)
7139 - (-pow(dImQ2n,2.)*dImQ6n*dImQ10n+dImQ6n*dImQ10n*pow(dReQ2n,2.)
7140 + 2.*dImQ2n*dImQ10n*dReQ2n*dReQ6n-2.*dImQ2n*dImQ6n*dReQ2n*dReQ10n
7141 - pow(dImQ2n,2.)*dReQ6n*dReQ10n+pow(dReQ2n,2.)*dReQ6n*dReQ10n)
7142 - 2.*(dImQ2n*dImQ4n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ2n*dReQ4n
7143 + dImQ4n*dImQ8n*dReQ2n*dReQ6n-dImQ2n*dImQ8n*dReQ4n*dReQ6n
7144 - dImQ4n*dImQ6n*dReQ2n*dReQ8n+dImQ2n*dImQ6n*dReQ4n*dReQ8n
7145 + dImQ2n*dImQ4n*dReQ6n*dReQ8n+dReQ2n*dReQ4n*dReQ6n*dReQ8n)
7146 - (dReQ6n*pow(dReQ2n,3.)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2.)
7147 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2.)-dImQ6n*pow(dImQ2n,3.))
7148 - 2.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7149 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7150 + 2.*(dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n+dImQ10n*dImQ8n*dReQ2n)
7151 + 3.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
7152 + 6.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7153 + 2.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7154 + 9.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7155 - (dMult-8.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7156 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7157 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7158 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))-4.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7159 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-12.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7160 + 2.*(dMult-9.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
7161 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7162 // to be polished:
7163 five6n4n6n3n1n = (reQ6nQ4nQ6nstarQ3nstarQ1nstar
7164 - reQ7nQ3nQ6nstarQ4nstar
7165 - reQ9nQ1nQ6nstarQ4nstar
7166 - reQ6nQ1nQ4nstarQ3nstar
7167 - reQ10nQ6nstarQ3nstarQ1nstar
7168 - reQ6nQ3nstarQ2nstarQ1nstar
7169 - reQ6nQ3nQ5nstarQ4nstar
7170 + reQ6nQ5nstarQ1nstar
7171 + reQ10nQ6nstarQ4nstar
7172 + 3.*reQ6nQ4nstarQ2nstar
7173 + 2.*reQ10nQ6nstarQ4nstar
7174 + reQ7nQ4nstarQ3nstar
7175 + reQ10nQ7nstarQ3nstar
7176 + reQ9nQ5nstarQ4nstar
7177 + reQ6nQ5nstarQ1nstar
7178 + reQ10nQ9nstarQ1nstar
7179 + reQ3nQ2nstarQ1nstar
7180 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7181 + 3.*reQ7nQ6nstarQ1nstar
7182 + reQ6nQ5nstarQ1nstar
7183 + 2.*reQ6nQ3nstarQ3nstar
7184 + 3.*reQ9nQ6nstarQ3nstar
7185 + reQ5nQ3nstarQ2nstar
7186 + reQ6nQ3nstarQ3nstar
7187 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7188 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7189 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7190 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7191 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7192 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7193 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7194 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7195 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7196 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7197 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7198 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7199 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7200 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7201 // to be polished:
7202 five6n5n5n4n2n = (reQ6nQ5nQ5nstarQ4nstarQ2nstar
7203 - reQ7nQ4nQ6nstarQ5nstar
7204 - reQ9nQ2nQ6nstarQ5nstar
7205 - reQ6nQ1nQ5nstarQ2nstar
7206 - reQ11nQ5nstarQ4nstarQ2nstar
7207 - reQ5nQ1nQ4nstarQ2nstar
7208 - reQ6nQ3nQ5nstarQ4nstar
7209 + reQ5nQ3nstarQ2nstar
7210 + reQ11nQ6nstarQ5nstar
7211 + 3.*reQ6nQ5nstarQ1nstar
7212 + 2.*reQ11nQ6nstarQ5nstar
7213 + reQ7nQ6nstarQ1nstar
7214 + reQ11nQ7nstarQ4nstar
7215 + reQ9nQ6nstarQ3nstar
7216 + reQ5nQ3nstarQ2nstar
7217 + reQ11nQ9nstarQ2nstar
7218 + reQ2nQ1nstarQ1nstar
7219 - (dMult-6.)*reQ6nQ4nstarQ2nstar
7220 + 3.*reQ7nQ5nstarQ2nstar
7221 + reQ5nQ3nstarQ2nstar
7222 + 2.*reQ5nQ4nstarQ1nstar
7223 + 3.*reQ9nQ5nstarQ4nstar
7224 + reQ4nQ3nstarQ1nstar
7225 + reQ5nQ4nstarQ1nstar
7226 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7227 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7228 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7229 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7230 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7231 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7232 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7233 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7234 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7235 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7236 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7237 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7238 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7239 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7240 // to be polished:
7241 five6n5n6n3n2n = (reQ6nQ5nQ6nstarQ3nstarQ2nstar
7242 - reQ8nQ3nQ6nstarQ5nstar
7243 - reQ9nQ2nQ6nstarQ5nstar
7244 - reQ6nQ2nQ5nstarQ3nstar
7245 - reQ11nQ6nstarQ3nstarQ2nstar
7246 - reQ6nQ3nstarQ2nstarQ1nstar
7247 - reQ6nQ3nQ5nstarQ4nstar
7248 + reQ6nQ4nstarQ2nstar
7249 + reQ11nQ6nstarQ5nstar
7250 + 3.*reQ6nQ5nstarQ1nstar
7251 + 2.*reQ11nQ6nstarQ5nstar
7252 + reQ8nQ5nstarQ3nstar
7253 + reQ11nQ8nstarQ3nstar
7254 + reQ9nQ5nstarQ4nstar
7255 + reQ6nQ4nstarQ2nstar
7256 + reQ11nQ9nstarQ2nstar
7257 + reQ3nQ2nstarQ1nstar
7258 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7259 + 3.*reQ8nQ6nstarQ2nstar
7260 + reQ6nQ4nstarQ2nstar
7261 + 2.*reQ6nQ3nstarQ3nstar
7262 + 3.*reQ9nQ6nstarQ3nstar
7263 + reQ4nQ3nstarQ1nstar
7264 + reQ6nQ3nstarQ3nstar
7265 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7266 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7267 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7268 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7269 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7270 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7271 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7272 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7273 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7274 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7275 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7276 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7277 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7278 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7279 // to be polished:
7280 five6n5n6n4n1n = (reQ6nQ5nQ6nstarQ4nstarQ1nstar
7281 - reQ7nQ4nQ6nstarQ5nstar
7282 - reQ10nQ1nQ6nstarQ5nstar
7283 - reQ6nQ1nQ5nstarQ2nstar
7284 - reQ11nQ6nstarQ4nstarQ1nstar
7285 - reQ6nQ4nstarQ1nstarQ1nstar
7286 - reQ6nQ4nQ5nstarQ5nstar
7287 + reQ6nQ5nstarQ1nstar
7288 + reQ11nQ6nstarQ5nstar
7289 + 3.*reQ6nQ5nstarQ1nstar
7290 + 2.*reQ11nQ6nstarQ5nstar
7291 + reQ7nQ5nstarQ2nstar
7292 + reQ11nQ7nstarQ4nstar
7293 + reQ10nQ5nstarQ5nstar
7294 + reQ6nQ5nstarQ1nstar
7295 + reQ11nQ10nstarQ1nstar
7296 + reQ2nQ1nstarQ1nstar
7297 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7298 + 3.*reQ7nQ6nstarQ1nstar
7299 + reQ6nQ5nstarQ1nstar
7300 + 2.*reQ6nQ4nstarQ2nstar
7301 + 3.*reQ10nQ6nstarQ4nstar
7302 + reQ5nQ4nstarQ1nstar
7303 + reQ6nQ4nstarQ2nstar
7304 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7305 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7306 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7307 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7308 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7309 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7310 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7311 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7312 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7313 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7314 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7315 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7316 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7317 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7318 // f2) Two distinct harmonics (9):
7319 five2n1n1n1n1n = ((dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
7320 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3))
7321 - (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7322 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7323 + 5.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7324 - 3.*(dMult-5.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7325 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7326 - 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7327 + 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7328 - 3.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
7329 + 6.*(2.*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult*(dMult-4.))
7330 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7331 five2n2n2n1n1n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.))+2.*dImQ2n*dReQ1n*dImQ1n)
7332 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7333 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7334 - 2.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7335 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7336 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7337 + 8.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7338 + 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7339 - 2.*(dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7340 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7341 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7342 + 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7343 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7344 + 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7345 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7346 five3n3n2n2n2n = (pow(dReQ2n,3.)*pow(dReQ3n,2.)-3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
7347 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n-2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n
7348 - pow(dReQ2n,3.)*pow(dImQ3n,2.)+3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.)
7349 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7350 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7351 - 3.*((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7352 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7353 - 6.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7354 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7355 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7356 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7357 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7358 + 6.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7359 + 12.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7360 + 6.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7361 - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7362 + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7363 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
7364 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7365 five4n1n1n1n1n = (pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
7366 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n-4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n
7367 - 6.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7368 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7369 - 4.*(dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7370 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7371 + 8.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7372 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7373 + 12.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7374 + 12.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7375 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7376 - 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+24.*dMult)
7377 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7378 five4n2n2n2n2n = ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(pow(dReQ2n,3)-3.*dReQ2n*pow(dImQ2n,2))
7379 + (dReQ4n*dImQ2n+dReQ2n*dImQ4n)*(3.*dImQ2n*pow(dReQ2n,2)-pow(dImQ2n,3))
7380 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7381 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7382 + 5.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7383 - 3.*(dMult-5.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7384 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7385 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7386 + 3.*(dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7387 - 3.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7388 + 6.*(2.*dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult*(dMult-4.))
7389 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7390 five4n4n4n2n2n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(dReQ4n*(pow(dReQ2n,2.)-pow(dImQ2n,2.))+2.*dImQ4n*dReQ2n*dImQ2n)
7391 - ((dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
7392 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n))
7393 - 2.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7394 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7395 + 3.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7396 + 8.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7397 + 2.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7398 - 2.*(dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7399 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))-4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7400 - pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)
7401 + 2.*(3.*dMult-10.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7402 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7403 + 4.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
7404 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7405 five6n3n3n3n3n = ((dReQ6n*dReQ3n-dImQ6n*dImQ3n)*(pow(dReQ3n,3)-3.*dReQ3n*pow(dImQ3n,2))
7406 + (dReQ6n*dImQ3n+dReQ3n*dImQ6n)*(3.*dImQ3n*pow(dReQ3n,2)-pow(dImQ3n,3))
7407 - (dReQ9n*pow(dReQ3n,3)-3.*dReQ3n*dReQ9n*pow(dImQ3n,2)
7408 + 3.*dImQ3n*dImQ9n*pow(dReQ3n,2)-dImQ9n*pow(dImQ3n,3))
7409 + 5.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
7410 - 3.*(dMult-5.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7411 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7412 - 3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7413 + 3.*(dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7414 - 3.*pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)
7415 + 6.*(2.*dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-6.*dMult*(dMult-4.))
7416 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7417 five6n6n4n4n4n = (pow(dReQ4n,3.)*pow(dReQ6n,2.)-3.*dReQ4n*pow(dReQ6n,2.)*pow(dImQ4n,2.)
7418 + 6.*pow(dReQ4n,2.)*dReQ6n*dImQ4n*dImQ6n-2.*dReQ6n*pow(dImQ4n,3.)*dImQ6n
7419 - pow(dReQ4n,3.)*pow(dImQ6n,2.)+3.*dReQ4n*pow(dImQ4n,2.)*pow(dImQ6n,2.)
7420 - (dReQ12n*pow(dReQ4n,3)-3.*dReQ4n*dReQ12n*pow(dImQ4n,2)
7421 + 3.*dImQ4n*dImQ12n*pow(dReQ4n,2)-dImQ12n*pow(dImQ4n,3))
7422 - 3.*((dReQ8n*dReQ4n-dImQ8n*dImQ4n)*(dReQ6n*dReQ6n-dImQ6n*dImQ6n)
7423 + 2.*(dReQ8n*dImQ4n+dImQ8n*dReQ4n)*dReQ6n*dImQ6n)
7424 - 6.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7425 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7426 + 2.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
7427 + 3.*(dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n+dImQ12n*dImQ8n*dReQ4n)
7428 + 6.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7429 + 6.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7430 + 12.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7431 + 6.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7432 - 2.*((pow(dReQ12n,2.)+pow(dImQ12n,2.))+3.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7433 + 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+9.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7434 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-12.*dMult))
7435 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7436 five6n6n6n3n3n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(dReQ6n*(pow(dReQ3n,2.)-pow(dImQ3n,2.))+2.*dImQ6n*dReQ3n*dImQ3n)
7437 - ((dReQ12n*dReQ6n+dImQ12n*dImQ6n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
7438 + 2.*dReQ3n*dImQ3n*(dImQ12n*dReQ6n-dReQ12n*dImQ6n))
7439 - 2.*((pow(dReQ6n,2.)-pow(dImQ6n,2.))*(dReQ9n*dReQ3n-dImQ9n*dImQ3n)
7440 + 2.*dReQ6n*dImQ6n*(dReQ9n*dImQ3n+dImQ9n*dReQ3n))
7441 + 3.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
7442 + 8.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
7443 + 2.*(dReQ12n*(dReQ9n*dReQ3n-dImQ9n*dImQ3n)+dImQ12n*(dReQ9n*dImQ3n+dImQ9n*dReQ3n))
7444 - 2.*(dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7445 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))-4.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7446 - pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)
7447 + 2.*(3.*dMult-10.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7448 - 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7449 + 4.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-4.*dMult*(dMult-6.))
7450 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7451 // f3) Three distinct harmonics (30):
7452 five3n1n2n1n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
7453 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
7454 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7455 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7456 - (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7457 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7458 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7459 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7460 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7461 + pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
7462 - (2.*dMult-13.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
7463 + dImQ3n*dImQ2n*dReQ1n)
7464 + 7.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7465 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7466 + 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7467 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7468 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7469 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7470 - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
7471 + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7472 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7473 five3n2n2n2n1n = ((pow(dImQ2n,2.)+pow(dReQ2n,2.))*(dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
7474 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n)
7475 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
7476 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
7477 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
7478 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
7479 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
7480 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
7481 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
7482 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7483 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7484 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7485 + (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7486 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7487 + dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
7488 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7489 - 2.*(dMult-6.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7490 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7491 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7492 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7493 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7494 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7495 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7496 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7497 five3n3n3n2n1n = ((pow(dImQ3n,2.)+pow(dReQ3n,2.))*(dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
7498 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n)
7499 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
7500 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
7501 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
7502 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
7503 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7504 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
7505 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
7506 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7507 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7508 + dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n
7509 + dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n
7510 + 3.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7511 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7512 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7513 - 2.*(dMult-6.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7514 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7515 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7516 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7517 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(3.*dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7518 - pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7519 + 2.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7520 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7521 five4n1n3n1n1n = (reQ4nQ1nQ3nstarQ1nstarQ1nstar
7522 - reQ4nQ1nQ3nstarQ2nstar
7523 - reQ4nQ1nQ4nstarQ1nstar
7524 - reQ4nQ2nstarQ1nstarQ1nstar
7525 - reQ5nQ3nstarQ1nstarQ1nstar
7526 - reQ3nQ1nQ3nstarQ1nstar
7527 - dMult*reQ4nQ3nstarQ1nstar
7528 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7529 + reQ5nQ4nstarQ1nstar
7530 + 3.*reQ4nQ3nstarQ1nstar
7531 + 2.*reQ5nQ4nstarQ1nstar
7532 + reQ4nQ2nstarQ2nstar
7533 + reQ5nQ3nstarQ2nstar
7534 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7535 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7536 + reQ5nQ4nstarQ1nstar
7537 + reQ3nQ2nstarQ1nstar
7538 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7539 + 3.*reQ2nQ1nstarQ1nstar
7540 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7541 + 2.*reQ3nQ2nstarQ1nstar
7542 + 3.*reQ4nQ3nstarQ1nstar
7543 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7544 + reQ3nQ2nstarQ1nstar
7545 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7546 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7547 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7548 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7549 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7550 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7551 - 2.*dMult*dMult
7552 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7553 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7554 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7555 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7556 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7557 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
7558 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7559 five4n1n1n3n3n = // calculated by Peter Jochumzsen
7560 (pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
7561 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
7562 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
7563 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n+2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
7564 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n+2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n
7565 + 6.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7566 - 1.*(-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
7567 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
7568 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n)
7569 - 1.*((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7570 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7571 + 1.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7572 - 2.*(dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7573 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
7574 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
7575 + 2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7576 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7577 - 2.*(dReQ3n*pow(dReQ1n,3.)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
7578 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2.)-dImQ3n*pow(dImQ1n,3.))
7579 + 10.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7580 + 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
7581 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7582 - 4.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
7583 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
7584 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
7585 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
7586 + 4.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7587 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7588 - 16.*pow(dReQ1n,2.)-16.*pow(dImQ1n,2.)
7589 - 10.*pow(dReQ2n,2.)-10.*pow(dImQ2n,2.)-12.*pow(dReQ3n,2.)-12.*pow(dImQ3n,2.)
7590 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)-4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
7591 - 2.*pow(dReQ6n,2.)-2.*pow(dImQ6n,2.)+24.*dMult)
7592 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7593 // to be polished:
7594 five4n3n3n3n1n = (reQ4nQ3nQ3nstarQ3nstarQ1nstar
7595 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7596 - reQ6nQ1nQ4nstarQ3nstar
7597 - dMult*reQ4nQ3nstarQ1nstar
7598 - reQ7nQ3nstarQ3nstarQ1nstar
7599 - reQ3nQ1nQ3nstarQ1nstar
7600 - reQ4nQ2nQ3nstarQ3nstar
7601 + reQ3nQ2nstarQ1nstar
7602 + reQ7nQ4nstarQ3nstar
7603 + 3.*reQ4nQ3nstarQ1nstar
7604 + 2.*reQ7nQ4nstarQ3nstar
7605 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7606 + reQ7nQ4nstarQ3nstar
7607 + reQ6nQ4nstarQ2nstar
7608 + reQ3nQ2nstarQ1nstar
7609 + reQ7nQ6nstarQ1nstar
7610 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7611 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7612 + 3.*reQ4nQ3nstarQ1nstar
7613 + reQ3nQ2nstarQ1nstar
7614 + 2.*dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7615 + 3.*reQ6nQ3nstarQ3nstar
7616 + reQ3nQ2nstarQ1nstar
7617 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7618 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7619 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7620 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7621 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7622 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7623 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7624 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7625 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7626 - 2.*dMult*dMult
7627 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7628 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7629 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7630 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
7631 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7632
7633 // to be polished:
7634 five4n4n3n3n2n = (reQ4nQ4nQ3nstarQ3nstarQ2nstar
7635 - reQ5nQ3nQ4nstarQ4nstar-reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ4nstarQ4nstar
7636 - reQ4nQ1nQ3nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar
7637 - reQ8nQ3nstarQ3nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
7638 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ8nQ4nstarQ4nstar)
7639 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ6nQ4nstarQ2nstar
7640 + reQ8nQ6nstarQ2nstar+reQ8nQ5nstarQ3nstar+reQ8nQ5nstarQ3nstar
7641 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
7642 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
7643 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7644 + 2.*(reQ6nQ3nstarQ3nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
7645 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar)
7646 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7647 - 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.))
7648 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
7649 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7650 - 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.))
7651 + 24.*dMult)
7652 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7653
7654 /*
7655 // correct recursive formula, not needed for the time being.
7656 five4n4n3n3n2n = (reQ4nQ4nQ3nstarQ3nstarQ2nstar
7657 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
7658 * (2.*four4n2n3n3n+4.*four4n1n3n2n+1.*four8n3n3n2n+1.*four6n2n4n4n+2.*four5n3n4n4n)
7659 - dMult*(dMult-1.)*(dMult-2.)
7660 * (4.*three4n3n1n+2.*three4n2n2n+2.*three5n3n2n+1.*three6n3n3n+1.*three8n4n4n
7661 + 4.*three3n2n1n+2.*three2n1n1n+1.*three8n6n2n+2.*three8n5n3n+2.*three6n4n2n+4.*three5n4n1n)
7662 - dMult*(dMult-1.)
7663 * (1.*two2n2n+2.*two3n3n+2.*two4n4n+2.*two5n5n+1.*two6n6n+4.*two1n1n+2.*two2n2n+1.*two8n8n)
7664 - dMult)
7665 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7666 */
7667
7668 // to be polished:
7669 five4n4n4n3n1n = (reQ4nQ4nQ4nstarQ3nstarQ1nstar
7670 - reQ5nQ3nQ4nstarQ4nstar
7671 - reQ7nQ1nQ4nstarQ4nstar
7672 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7673 - reQ8nQ4nstarQ3nstarQ1nstar
7674 - dMult*reQ4nQ3nstarQ1nstar
7675 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7676 + reQ4nQ3nstarQ1nstar
7677 + reQ8nQ4nstarQ4nstar
7678 + 3.*dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7679 + 2.*reQ8nQ4nstarQ4nstar
7680 + reQ5nQ4nstarQ1nstar
7681 + reQ8nQ5nstarQ3nstar
7682 + reQ7nQ4nstarQ3nstar
7683 + reQ4nQ3nstarQ1nstar
7684 + reQ8nQ7nstarQ1nstar
7685 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7686 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7687 + 3.*reQ5nQ4nstarQ1nstar
7688 + reQ4nQ3nstarQ1nstar
7689 + 2.*reQ4nQ3nstarQ1nstar
7690 + 3.*reQ7nQ4nstarQ3nstar
7691 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7692 + reQ4nQ3nstarQ1nstar
7693 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7694 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7695 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7696 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7697 - 2.*dMult*dMult
7698 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7699 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7700 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7701 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7702 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7703 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7704 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7705 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
7706 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7707 // to be polished:
7708 five5n2n1n1n1n = (reQ5nQ2nstarQ1nstarQ1nstarQ1nstar
7709 - reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
7710 - reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar
7711 - reQ3nQ1nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar
7712 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
7713 + reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar
7714 + reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7715 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7716 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7717 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7718 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7719 + 2.*(reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
7720 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7721 - 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.))
7722 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7723 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7724 - 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.))
7725 + 24.*dMult)
7726 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7727 // to be polished:
7728 five5n1n2n2n2n = (reQ5nQ1nQ2nstarQ2nstarQ2nstar
7729 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar
7730 - reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
7731 - reQ6nQ2nstarQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
7732 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ6nQ5nstarQ1nstar)
7733 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7734 + reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
7735 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7736 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7737 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7738 + 2.*(reQ4nQ2nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ4nQ2nstarQ2nstar)
7739 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7740 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7741 - 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.))
7742 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7743 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7744 - 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.))
7745 + 24.*dMult)
7746 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7747 // to be polished:
7748 five5n2n3n2n2n = (reQ5nQ2nQ3nstarQ2nstarQ2nstar
7749 - reQ5nQ2nQ4nstarQ3nstar
7750 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7751 - reQ5nQ2nstarQ2nstarQ1nstar
7752 - reQ7nQ3nstarQ2nstarQ2nstar
7753 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7754 - dMult*reQ5nQ3nstarQ2nstar
7755 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7756 + reQ7nQ5nstarQ2nstar
7757 + 3.*reQ5nQ3nstarQ2nstar
7758 + 2.*reQ7nQ5nstarQ2nstar
7759 + reQ5nQ4nstarQ1nstar
7760 + reQ7nQ4nstarQ3nstar
7761 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7762 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7763 + reQ7nQ5nstarQ2nstar
7764 + reQ3nQ2nstarQ1nstar
7765 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7766 + 3.*reQ4nQ2nstarQ2nstar
7767 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7768 + 2.*reQ3nQ2nstarQ1nstar
7769 + 3.*reQ5nQ3nstarQ2nstar
7770 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7771 + reQ3nQ2nstarQ1nstar
7772 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7773 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7774 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7775 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7776 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7777 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7778 - 2.*dMult*dMult
7779 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7780 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7781 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7782 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7783 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7784 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
7785 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7786 // to be polished:
7787 five5n3n3n3n2n = (reQ5nQ3nQ3nstarQ3nstarQ2nstar
7788 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7789 - reQ6nQ2nQ5nstarQ3nstar
7790 - dMult*reQ5nQ3nstarQ2nstar
7791 - reQ8nQ3nstarQ3nstarQ2nstar
7792 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7793 - reQ5nQ1nQ3nstarQ3nstar
7794 + reQ3nQ2nstarQ1nstar
7795 + reQ8nQ5nstarQ3nstar
7796 + 3.*reQ5nQ3nstarQ2nstar
7797 + 2.*reQ8nQ5nstarQ3nstar
7798 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7799 + reQ8nQ5nstarQ3nstar
7800 + reQ6nQ5nstarQ1nstar
7801 + reQ3nQ2nstarQ1nstar
7802 + reQ8nQ6nstarQ2nstar
7803 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7804 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7805 + 3.*reQ5nQ3nstarQ2nstar
7806 + reQ3nQ2nstarQ1nstar
7807 + 2.*dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7808 + 3.*reQ6nQ3nstarQ3nstar
7809 + reQ3nQ2nstarQ1nstar
7810 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7811 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7812 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7813 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7814 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7815 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7816 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7817 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7818 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7819 - 2.*dMult*dMult
7820 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7821 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7822 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7823 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
7824 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7825 // to be polished:
7826 five5n1n4n1n1n = (reQ5nQ1nQ4nstarQ1nstarQ1nstar
7827 - reQ5nQ1nQ4nstarQ2nstar
7828 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7829 - reQ5nQ3nstarQ1nstarQ1nstar
7830 - reQ6nQ4nstarQ1nstarQ1nstar
7831 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7832 - dMult*reQ5nQ4nstarQ1nstar
7833 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7834 + reQ6nQ5nstarQ1nstar
7835 + 3.*reQ5nQ4nstarQ1nstar
7836 + 2.*reQ6nQ5nstarQ1nstar
7837 + reQ5nQ3nstarQ2nstar
7838 + reQ6nQ4nstarQ2nstar
7839 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7840 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7841 + reQ6nQ5nstarQ1nstar
7842 + reQ4nQ3nstarQ1nstar
7843 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7844 + 3.*reQ2nQ1nstarQ1nstar
7845 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7846 + 2.*reQ4nQ3nstarQ1nstar
7847 + 3.*reQ5nQ4nstarQ1nstar
7848 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7849 + reQ4nQ3nstarQ1nstar
7850 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7851 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7852 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7853 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7854 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7855 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7856 - 2.*dMult*dMult
7857 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7858 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7859 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7860 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7861 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7862 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
7863 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7864 // to be polished:
7865 five5n4n3n3n3n = (reQ5nQ4nQ3nstarQ3nstarQ3nstar
7866 - reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar
7867 - reQ5nQ1nQ3nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar
7868 - reQ9nQ3nstarQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar
7869 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ9nQ5nstarQ4nstar)
7870 + reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
7871 + reQ9nQ6nstarQ3nstar+reQ9nQ6nstarQ3nstar+reQ9nQ6nstarQ3nstar
7872 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7873 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7874 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7875 + 2.*(reQ6nQ3nstarQ3nstar+reQ6nQ3nstarQ3nstar+reQ6nQ3nstarQ3nstar)
7876 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
7877 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7878 - 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.))
7879 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
7880 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7881 - 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.))
7882 + 24.*dMult)
7883 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7884 // to be polished:
7885 five5n4n4n4n1n = (reQ5nQ4nQ4nstarQ4nstarQ1nstar
7886 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7887 - reQ8nQ1nQ5nstarQ4nstar
7888 - dMult*reQ5nQ4nstarQ1nstar
7889 - reQ9nQ4nstarQ4nstarQ1nstar
7890 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7891 - reQ5nQ3nQ4nstarQ4nstar
7892 + reQ4nQ3nstarQ1nstar
7893 + reQ9nQ5nstarQ4nstar
7894 + 3.*reQ5nQ4nstarQ1nstar
7895 + 2.*reQ9nQ5nstarQ4nstar
7896 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7897 + reQ9nQ5nstarQ4nstar
7898 + reQ8nQ5nstarQ3nstar
7899 + reQ4nQ3nstarQ1nstar
7900 + reQ9nQ8nstarQ1nstar
7901 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7902 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7903 + 3.*reQ5nQ4nstarQ1nstar
7904 + reQ4nQ3nstarQ1nstar
7905 + 2.*dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7906 + 3.*reQ8nQ4nstarQ4nstar
7907 + reQ4nQ3nstarQ1nstar
7908 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7909 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7910 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7911 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7912 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7913 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7914 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7915 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7916 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7917 - 2.*dMult*dMult
7918 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7919 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7920 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7921 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
7922 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7923 // to be polished:
7924 five5n5n4n3n3n = (reQ5nQ5nQ4nstarQ3nstarQ3nstar
7925 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar
7926 - reQ5nQ2nQ4nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
7927 - reQ10nQ4nstarQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
7928 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
7929 + reQ6nQ5nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar
7930 + reQ10nQ7nstarQ3nstar+reQ10nQ6nstarQ4nstar+reQ10nQ7nstarQ3nstar
7931 + reQ6nQ5nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7932 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
7933 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
7934 + 2.*(reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar+reQ6nQ3nstarQ3nstar)
7935 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
7936 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7937 - 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.))
7938 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
7939 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7940 - 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.))
7941 + 24.*dMult)
7942 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7943 // to be polished:
7944 five5n5n4n4n2n = (reQ5nQ5nQ4nstarQ4nstarQ2nstar
7945 - reQ6nQ4nQ5nstarQ5nstar-reQ6nQ4nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar
7946 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar
7947 - reQ10nQ4nstarQ4nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar
7948 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ10nQ5nstarQ5nstar)
7949 + reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ8nQ5nstarQ3nstar
7950 + reQ10nQ8nstarQ2nstar+reQ10nQ6nstarQ4nstar+reQ10nQ6nstarQ4nstar
7951 + reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
7952 + reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
7953 + reQ8nQ5nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7954 + 2.*(reQ8nQ4nstarQ4nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar)
7955 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
7956 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7957 - 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.))
7958 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
7959 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7960 - 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.))
7961 + 24.*dMult)
7962 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7963 // to be polished:
7964 five5n5n5n3n2n = (reQ5nQ5nQ5nstarQ3nstarQ2nstar
7965 - reQ7nQ3nQ5nstarQ5nstar
7966 - reQ8nQ2nQ5nstarQ5nstar
7967 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7968 - reQ10nQ5nstarQ3nstarQ2nstar
7969 - dMult*reQ5nQ3nstarQ2nstar
7970 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7971 + reQ5nQ3nstarQ2nstar
7972 + reQ10nQ5nstarQ5nstar
7973 + 3.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7974 + 2.*reQ10nQ5nstarQ5nstar
7975 + reQ7nQ5nstarQ2nstar
7976 + reQ10nQ7nstarQ3nstar
7977 + reQ8nQ5nstarQ3nstar
7978 + reQ5nQ3nstarQ2nstar
7979 + reQ10nQ8nstarQ2nstar
7980 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7981 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7982 + 3.*reQ7nQ5nstarQ2nstar
7983 + reQ5nQ3nstarQ2nstar
7984 + 2.*reQ5nQ3nstarQ2nstar
7985 + 3.*reQ8nQ5nstarQ3nstar
7986 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7987 + reQ5nQ3nstarQ2nstar
7988 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7989 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7990 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7991 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7992 - 2.*dMult*dMult
7993 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7994 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7995 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7996 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7997 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7998 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7999 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8000 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
8001 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8002 // to be polished:
8003 five5n5n5n4n1n = (reQ5nQ5nQ5nstarQ4nstarQ1nstar
8004 - reQ6nQ4nQ5nstarQ5nstar
8005 - reQ9nQ1nQ5nstarQ5nstar
8006 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8007 - reQ10nQ5nstarQ4nstarQ1nstar
8008 - dMult*reQ5nQ4nstarQ1nstar
8009 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8010 + reQ5nQ4nstarQ1nstar
8011 + reQ10nQ5nstarQ5nstar
8012 + 3.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8013 + 2.*reQ10nQ5nstarQ5nstar
8014 + reQ6nQ5nstarQ1nstar
8015 + reQ10nQ6nstarQ4nstar
8016 + reQ9nQ5nstarQ4nstar
8017 + reQ5nQ4nstarQ1nstar
8018 + reQ10nQ9nstarQ1nstar
8019 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8020 - (dMult-6.)*reQ5nQ4nstarQ1nstar
8021 + 3.*reQ6nQ5nstarQ1nstar
8022 + reQ5nQ4nstarQ1nstar
8023 + 2.*reQ5nQ4nstarQ1nstar
8024 + 3.*reQ9nQ5nstarQ4nstar
8025 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8026 + reQ5nQ4nstarQ1nstar
8027 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8028 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8029 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8030 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8031 - 2.*dMult*dMult
8032 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8033 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8034 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
8035 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8036 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8037 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8038 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8039 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
8040 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8041 five6n2n2n1n1n = // calculated by Peter Jochumzsen
8042 (pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
8043 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
8044 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
8045 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n+2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
8046 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n-2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n
8047 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
8048 + 8.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
8049 + 5.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
8050 - (-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
8051 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
8052 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n)
8053 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
8054 - (dReQ6n*pow(dReQ2n,3.)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2.)
8055 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2.)-dImQ6n*pow(dImQ2n,3.))
8056 + 4.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
8057 - 2.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
8058 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
8059 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
8060 - 2.*(-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
8061 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
8062 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
8063 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
8064 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
8065 + 4.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
8066 - 4.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
8067 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
8068 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
8069 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
8070 - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.)-14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.)
8071 - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.)-6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)
8072 - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)-6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.)+24.*dMult)
8073 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8074 // to be polished:
8075 five6n3n1n1n1n = (reQ6nQ3nstarQ1nstarQ1nstarQ1nstar
8076 - reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar
8077 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ4nstarQ1nstarQ1nstar
8078 - reQ3nQ1nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar
8079 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar)
8080 + reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
8081 + reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8082 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8083 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8084 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8085 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8086 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8087 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8088 - 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.))
8089 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8090 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
8091 - 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.))
8092 + 24.*dMult)
53884472 8093 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
e1d101a6 8094
8095
8096 // to be polished:
8097 five6n1n1n4n4n = (reQ6nQ1nQ1nQ4nstarQ4nstar
8098 - reQ6nQ2nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar
8099 - reQ6nQ1nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8100 - reQ8nQ6nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8101 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ8nQ4nstarQ4nstar)
8102 + reQ4nQ2nstarQ2nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar // ?? 1st term
8103 + reQ8nQ7nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ8nQ7nstarQ1nstar
8104 + reQ4nQ2nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8105 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8106 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8107 + 2.*(reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8108 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8109 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8110 - 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.))
8111 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8112 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8113 - 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.))
8114 + 24.*dMult)
53884472 8115 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
403e3389 8116
e1d101a6 8117 // to be polished:
8118 five6n1n5n1n1n = (reQ6nQ1nQ5nstarQ1nstarQ1nstar
8119 - reQ6nQ1nQ5nstarQ2nstar
8120 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8121 - reQ6nQ4nstarQ1nstarQ1nstar
8122 - reQ7nQ5nstarQ1nstarQ1nstar
8123 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8124 - dMult*reQ6nQ5nstarQ1nstar
8125 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8126 + reQ7nQ6nstarQ1nstar
8127 + 3.*reQ6nQ5nstarQ1nstar
8128 + 2.*reQ7nQ6nstarQ1nstar
8129 + reQ6nQ4nstarQ2nstar
8130 + reQ7nQ5nstarQ2nstar
8131 + dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8132 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8133 + reQ7nQ6nstarQ1nstar
8134 + reQ5nQ4nstarQ1nstar
8135 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8136 + 3.*reQ2nQ1nstarQ1nstar
8137 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8138 + 2.*reQ5nQ4nstarQ1nstar
8139 + 3.*reQ6nQ5nstarQ1nstar
8140 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8141 + reQ5nQ4nstarQ1nstar
8142 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8143 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8144 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8145 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
8146 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8147 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8148 - 2.*dMult*dMult
8149 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8150 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8151 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8152 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8153 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8154 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
8155 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8156 five6n2n4n2n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
8157 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
8158 - ((dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
8159 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n))
8160 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
8161 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
8162 - ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
8163 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8164 + 4.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8165 + pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n
8166 - (2.*dMult-13.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
8167 + dImQ6n*dImQ4n*dReQ2n)
8168 + 7.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
8169 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
8170 + 2.*(dMult-5.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8171 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8172 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8173 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8174 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
8175 + 2.*(3.*dMult-11.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8176 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8177 five6n4n4n4n2n = ((pow(dImQ4n,2.)+pow(dReQ4n,2.))*(dImQ4n*dImQ6n*dReQ2n+dImQ2n*dImQ6n*dReQ4n
8178 - dImQ2n*dImQ4n*dReQ6n+dReQ2n*dReQ4n*dReQ6n)
8179 - (-pow(dImQ4n,2.)*dImQ2n*dImQ10n+dImQ2n*dImQ10n*pow(dReQ4n,2.)
8180 + 2.*dImQ4n*dImQ10n*dReQ4n*dReQ2n-2.*dImQ4n*dImQ2n*dReQ4n*dReQ10n
8181 - pow(dImQ4n,2.)*dReQ2n*dReQ10n+pow(dReQ4n,2.)*dReQ2n*dReQ10n)
8182 - (dImQ2n*dImQ4n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ2n*dReQ4n
8183 + dImQ4n*dImQ8n*dReQ2n*dReQ6n-dImQ2n*dImQ8n*dReQ4n*dReQ6n
8184 - dImQ4n*dImQ6n*dReQ2n*dReQ8n+dImQ2n*dImQ6n*dReQ4n*dReQ8n
8185 + dImQ2n*dImQ4n*dReQ6n*dReQ8n+dReQ2n*dReQ4n*dReQ6n*dReQ8n)
8186 - ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
8187 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8188 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8189 + (dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n+dImQ10n*dImQ8n*dReQ2n)
8190 + 4.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
8191 + dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n)
8192 + 3.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
8193 - 2.*(dMult-6.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
8194 + 4.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
8195 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8196 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))+2.*(dMult-5.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8197 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8198 - pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8199 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8200 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8201 // to be polished:
8202 five6n2n2n5n5n = (reQ6nQ2nQ2nQ5nstarQ5nstar
8203 - reQ6nQ4nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar
8204 - reQ6nQ2nQ5nstarQ3nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8205 - reQ10nQ6nstarQ2nstarQ2nstar-reQ6nQ2nQ5nstarQ3nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8206 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
8207 + reQ5nQ4nstarQ1nstar+reQ8nQ5nstarQ3nstar+reQ8nQ5nstarQ3nstar
8208 + reQ10nQ8nstarQ2nstar+reQ10nQ6nstarQ4nstar+reQ10nQ8nstarQ2nstar
8209 + reQ5nQ4nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8210 + reQ8nQ5nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8211 + reQ8nQ5nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8212 + 2.*(reQ8nQ6nstarQ2nstar+reQ8nQ6nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8213 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
8214 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8215 - 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.))
8216 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8217 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8218 - 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.))
8219 + 24.*dMult)
8220 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8221 // to be polished:
8222 five6n5n5n5n1n = (reQ6nQ5nQ5nstarQ5nstarQ1nstar
8223 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8224 - reQ10nQ1nQ6nstarQ5nstar
8225 - dMult*reQ6nQ5nstarQ1nstar
8226 - reQ11nQ5nstarQ5nstarQ1nstar
8227 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8228 - reQ6nQ4nQ5nstarQ5nstar
8229 + reQ5nQ4nstarQ1nstar
8230 + reQ11nQ6nstarQ5nstar
8231 + 3.*reQ6nQ5nstarQ1nstar
8232 + 2.*reQ11nQ6nstarQ5nstar
8233 + dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8234 + reQ11nQ6nstarQ5nstar
8235 + reQ10nQ6nstarQ4nstar
8236 + reQ5nQ4nstarQ1nstar
8237 + reQ11nQ10nstarQ1nstar
8238 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8239 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8240 + 3.*reQ6nQ5nstarQ1nstar
8241 + reQ5nQ4nstarQ1nstar
8242 + 2.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8243 + 3.*reQ10nQ5nstarQ5nstar
8244 + reQ5nQ4nstarQ1nstar
8245 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8246 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8247 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8248 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8249 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
8250 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8251 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8252 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8253 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8254 - 2.*dMult*dMult
8255 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8256 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8257 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8258 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
8259 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8260 // to be polished:
8261 five6n6n5n5n2n = (reQ6nQ6nQ5nstarQ5nstarQ2nstar
8262 - reQ7nQ5nQ6nstarQ6nstar-reQ7nQ5nQ6nstarQ6nstar-reQ10nQ2nQ6nstarQ6nstar
8263 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ4nQ5nstarQ5nstar
8264 - reQ12nQ5nstarQ5nstarQ2nstar-reQ6nQ4nQ5nstarQ5nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8265 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ12nQ6nstarQ6nstar)
8266 + reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ10nQ6nstarQ4nstar
8267 + reQ12nQ10nstarQ2nstar+reQ12nQ7nstarQ5nstar+reQ12nQ7nstarQ5nstar
8268 + reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ5nQ4nstarQ1nstar
8269 + reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ5nQ4nstarQ1nstar
8270 + reQ10nQ6nstarQ4nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8271 + 2.*(reQ10nQ5nstarQ5nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar)
8272 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar)
8273 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8274 - 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.))
8275 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ10n,2.)+pow(dImQ10n,2.))
8276 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8277 - 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.))
8278 + 24.*dMult)
8279 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8280 five6n6n6n4n2n = ((pow(dImQ6n,2.)+pow(dReQ6n,2.))*(dImQ4n*dImQ6n*dReQ2n+dImQ2n*dImQ6n*dReQ4n
8281 - dImQ2n*dImQ4n*dReQ6n+dReQ2n*dReQ4n*dReQ6n)
8282 - (dReQ2n*dReQ4n*dReQ6n*dReQ12n-dReQ6n*dReQ12n*dImQ2n*dImQ4n
8283 - dReQ4n*dReQ12n*dImQ2n*dImQ6n-dReQ2n*dReQ12n*dImQ4n*dImQ6n
8284 + dReQ4n*dReQ6n*dImQ2n*dImQ12n+dReQ2n*dReQ6n*dImQ4n*dImQ12n
8285 + dReQ2n*dReQ4n*dImQ6n*dImQ12n-dImQ2n*dImQ4n*dImQ6n*dImQ12n)
8286 - (dImQ2n*pow(dImQ6n,2.)*dImQ10n+2.*dImQ6n*dImQ10n*dReQ2n*dReQ6n
8287 - dImQ2n*dImQ10n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ2n*dReQ10n
8288 + 2.*dImQ2n*dImQ6n*dReQ6n*dReQ10n+dReQ2n*pow(dReQ6n,2.)*dReQ10n)
8289 - ((dReQ8n*dReQ4n-dImQ8n*dImQ4n)*(dReQ6n*dReQ6n-dImQ6n*dImQ6n)
8290 + 2.*(dReQ8n*dImQ4n+dImQ8n*dReQ4n)*dReQ6n*dImQ6n)
8291 + dReQ12n*dReQ10n*dReQ2n-dReQ12n*dImQ10n*dImQ2n+dImQ12n*dReQ10n*dImQ2n+dImQ12n*dImQ10n*dReQ2n
8292 + dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n+dImQ12n*dImQ8n*dReQ4n
8293 + 3.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
8294 + 4.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
8295 + 4.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8296 - 2.*(dMult-6.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
8297 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8298 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8299 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))-2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8300 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))+2.*(3.*dMult-10.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8301 - pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8302 + 2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8303 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8304 // to be polished (and TBI swap with the one above):
8305 five6n6n6n5n1n = (reQ6nQ6nQ6nstarQ5nstarQ1nstar
8306 - reQ7nQ5nQ6nstarQ6nstar
8307 - reQ11nQ1nQ6nstarQ6nstar
8308 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8309 - reQ12nQ6nstarQ5nstarQ1nstar
8310 - dMult*reQ6nQ5nstarQ1nstar
8311 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8312 + reQ6nQ5nstarQ1nstar
8313 + reQ12nQ6nstarQ6nstar
8314 + 3.*dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8315 + 2.*reQ12nQ6nstarQ6nstar
8316 + reQ7nQ6nstarQ1nstar
8317 + reQ12nQ7nstarQ5nstar
8318 + reQ11nQ6nstarQ5nstar
8319 + reQ6nQ5nstarQ1nstar
8320 + reQ12nQ11nstarQ1nstar
8321 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8322 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8323 + 3.*reQ7nQ6nstarQ1nstar
8324 + reQ6nQ5nstarQ1nstar
8325 + 2.*reQ6nQ5nstarQ1nstar
8326 + 3.*reQ11nQ6nstarQ5nstar
8327 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8328 + reQ6nQ5nstarQ1nstar
8329 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8330 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8331 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8332 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))
8333 - 2.*dMult*dMult
8334 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
8335 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8336 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
8337 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8338 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8339 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8340 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8341 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
8342 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8343 // Four distinct harmonics (11):
8344 // to be polished:
8345 five5n2n3n3n1n = (reQ5nQ2nQ3nstarQ3nstarQ1nstar
8346 - reQ5nQ2nQ4nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar-reQ6nQ1nQ5nstarQ2nstar
8347 - reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar
8348 - reQ7nQ3nstarQ3nstarQ1nstar-reQ4nQ2nQ3nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
8349 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar)
8350 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ6nQ5nstarQ1nstar
8351 + reQ7nQ6nstarQ1nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar
8352 + reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8353 + reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8354 + reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
8355 + 2.*(reQ6nQ3nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8356 + 2.*(reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8357 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8358 - 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.))
8359 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8360 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8361 - 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.))
8362 + 24.*dMult)
8363 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8364 // to be polished:
8365 five5n1n1n4n3n = (reQ5nQ1nQ1nQ4nstarQ3nstar
8366 - reQ5nQ2nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar
8367 - reQ5nQ1nQ4nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8368 - reQ7nQ5nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar-reQ3nQ1nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar
8369 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ7nQ4nstarQ3nstar)
8370 + reQ4nQ2nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
8371 + reQ7nQ6nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ7nQ6nstarQ1nstar
8372 + reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8373 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8374 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8375 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8376 + 2.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8377 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8378 - 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.))
8379 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8380 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8381 - 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.))
8382 + 24.*dMult)
8383 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8384 // to be polished:
8385 five5n3n4n2n2n = (reQ5nQ3nQ4nstarQ2nstarQ2nstar
8386 - reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ5nstarQ3nstar-reQ6nQ2nQ5nstarQ3nstar
8387 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8388 - reQ8nQ4nstarQ2nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar
8389 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ8nQ5nstarQ3nstar)
8390 + reQ5nQ4nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8391 + reQ8nQ6nstarQ2nstar+reQ8nQ4nstarQ4nstar+reQ8nQ6nstarQ2nstar
8392 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8393 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8394 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8395 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8396 + 2.*(reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8397 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8398 - 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.))
8399 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8400 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8401 - 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.))
8402 + 24.*dMult)
8403 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 8404
e1d101a6 8405 // to be polished!!!:
8406 five5n2n1n4n4n = (reQ5nQ2nQ1nQ4nstarQ4nstar
8407 - reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar
8408 - reQ5nQ1nQ4nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar
8409 - reQ8nQ5nstarQ2nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8410 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ8nQ4nstarQ4nstar)
8411 + reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ7nQ4nstarQ3nstar
8412 + reQ8nQ7nstarQ1nstar+reQ8nQ5nstarQ3nstar+reQ8nQ6nstarQ2nstar
8413 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8414 + reQ6nQ4nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ5nQ3nstarQ2nstar
8415 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8416 + 2.*(reQ7nQ5nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8417 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar)
8418 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8419 - 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.))
8420 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8421 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8422 - 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.))
8423 + 24.*dMult)
8424 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
403e3389 8425
e1d101a6 8426
8427 // to be polished:
8428 five6n1n3n2n2n = (reQ6nQ1nQ3nstarQ2nstarQ2nstar
8429 - reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8430 - reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ2nstarQ2nstarQ2nstar-reQ6nQ3nstarQ2nstarQ1nstar
8431 - reQ7nQ3nstarQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
8432 + 2.*(reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ7nQ6nstarQ1nstar)
8433 + reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8434 + reQ7nQ5nstarQ2nstar+reQ7nQ4nstarQ3nstar+reQ7nQ5nstarQ2nstar
8435 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8436 + reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar
8437 + reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar
8438 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8439 + 2.*(reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8440 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8441 - 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.))
8442 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8443 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8444 - 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.))
8445 + 24.*dMult)
8446 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8447
8448
8449 // to be polished:
8450 five6n3n4n4n1n = (reQ6nQ3nQ4nstarQ4nstarQ1nstar
8451 - reQ8nQ1nQ6nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar
8452 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ2nQ4nstarQ4nstar-reQ6nQ4nstarQ1nstarQ1nstar
8453 - reQ9nQ4nstarQ4nstarQ1nstar-reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ4nQ1nQ3nstarQ2nstar
8454 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ9nQ6nstarQ3nstar)
8455 + reQ8nQ6nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8456 + reQ9nQ5nstarQ4nstar+reQ9nQ8nstarQ1nstar+reQ9nQ5nstarQ4nstar
8457 + reQ8nQ5nstarQ3nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8458 + reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar
8459 + reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar
8460 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ8nQ4nstarQ4nstar)
8461 + 2.*(reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8462 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8463 - 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.))
8464 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8465 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8466 - 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.))
8467 + 24.*dMult)
8468 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8469
8470 // to be polished:
8471 five6n1n1n5n3n = (reQ6nQ1nQ1nQ5nstarQ3nstar
8472 - reQ6nQ2nQ5nstarQ3nstar-reQ7nQ1nQ5nstarQ3nstar-reQ7nQ1nQ5nstarQ3nstar
8473 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ1nQ5nstarQ2nstar
8474 - reQ8nQ6nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar-reQ3nQ1nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8475 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ8nQ5nstarQ3nstar)
8476 + reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar
8477 + reQ8nQ7nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ8nQ7nstarQ1nstar
8478 + reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8479 + reQ7nQ4nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8480 + reQ7nQ4nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8481 + 2.*(reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8482 + 2.*(reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8483 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8484 - 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.))
8485 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8486 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8487 - 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.))
8488 + 24.*dMult)
8489 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8490 // to be polished:
8491 five6n3n5n2n2n = (reQ6nQ3nQ5nstarQ2nstarQ2nstar
8492 - reQ6nQ3nQ5nstarQ4nstar-reQ7nQ2nQ6nstarQ3nstar-reQ7nQ2nQ6nstarQ3nstar
8493 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ2nstarQ2nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8494 - reQ9nQ5nstarQ2nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar
8495 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ9nQ6nstarQ3nstar)
8496 + reQ6nQ4nstarQ2nstar+reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar
8497 + reQ9nQ7nstarQ2nstar+reQ9nQ5nstarQ4nstar+reQ9nQ7nstarQ2nstar
8498 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8499 + reQ7nQ4nstarQ3nstar+reQ4nQ2nstarQ2nstar+reQ5nQ4nstarQ1nstar
8500 + reQ7nQ4nstarQ3nstar+reQ4nQ2nstarQ2nstar+reQ5nQ4nstarQ1nstar
8501 + 2.*(reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8502 + 2.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8503 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8504 - 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.))
8505 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8506 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8507 - 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.))
8508 + 24.*dMult)
8509 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8510
8511 // to be polished
8512 five6n5n4n4n3n = (reQ6nQ5nQ4nstarQ4nstarQ3nstar
8513 - reQ7nQ4nQ6nstarQ5nstar-reQ7nQ4nQ6nstarQ5nstar-reQ8nQ3nQ6nstarQ5nstar
8514 - reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ2nQ4nstarQ4nstar
8515 - reQ11nQ4nstarQ4nstarQ3nstar-reQ5nQ3nQ4nstarQ4nstar-reQ5nQ2nQ4nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
8516 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ11nQ6nstarQ5nstar)
8517 + reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar
8518 + reQ11nQ8nstarQ3nstar+reQ11nQ7nstarQ4nstar+reQ11nQ7nstarQ4nstar
8519 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
8520 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
8521 + reQ8nQ5nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
8522 + 2.*(reQ8nQ4nstarQ4nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar)
8523 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
8524 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8525 - 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.))
8526 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8527 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8528 - 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.))
8529 + 24.*dMult)
8530 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8531 // to be polished:
8532 five6n3n1n5n5n = (reQ6nQ3nQ1nQ5nstarQ5nstar
8533 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar-reQ9nQ1nQ5nstarQ5nstar
8534 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ3nQ5nstarQ4nstar
8535 - reQ10nQ6nstarQ3nstarQ1nstar-reQ6nQ3nQ5nstarQ4nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ1nQ5nstarQ2nstar
8536 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
8537 + reQ5nQ4nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ9nQ5nstarQ4nstar
8538 + reQ10nQ9nstarQ1nstar+reQ10nQ6nstarQ4nstar+reQ10nQ7nstarQ3nstar
8539 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
8540 + reQ7nQ5nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ6nQ4nstarQ2nstar
8541 + reQ9nQ5nstarQ4nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8542 + 2.*(reQ9nQ6nstarQ3nstar+reQ7nQ6nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8543 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar)
8544 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8545 - 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.))
8546 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ9n,2.)+pow(dImQ9n,2.))
8547 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8548 - 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.))
8549 + 24.*dMult)
8550 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8551 // to be polished:
8552 five6n6n5n4n3n = (reQ6nQ6nQ5nstarQ4nstarQ3nstar
8553 - reQ7nQ5nQ6nstarQ6nstar-reQ8nQ4nQ6nstarQ6nstar-reQ9nQ3nQ6nstarQ6nstar
8554 - reQ6nQ2nQ5nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar
8555 - reQ12nQ5nstarQ4nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ2nQ5nstarQ3nstar
8556 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ12nQ6nstarQ6nstar)
8557 + reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ9nQ6nstarQ3nstar
8558 + reQ12nQ9nstarQ3nstar+reQ12nQ7nstarQ5nstar+reQ12nQ8nstarQ4nstar
8559 + reQ7nQ6nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8560 + reQ8nQ6nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8561 + reQ9nQ6nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ5nQ3nstarQ2nstar
8562 + 2.*(reQ9nQ5nstarQ4nstar+reQ8nQ5nstarQ3nstar+reQ7nQ4nstarQ3nstar)
8563 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar)
8564 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8565 - 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.))
8566 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ9n,2.)+pow(dImQ9n,2.))
8567 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8568 - 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.))
8569 + 24.*dMult)
8570 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8571 // Five distinct harmonics (3):
8572
8573 // to be polished:
8574 five6n2n4n3n1n = (reQ6nQ2nQ4nstarQ3nstarQ1nstar
8575 - reQ6nQ2nQ4nstarQ4nstar-reQ6nQ2nQ5nstarQ3nstar-reQ7nQ1nQ6nstarQ2nstar
8576 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8577 - reQ8nQ4nstarQ3nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
8578 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ8nQ6nstarQ2nstar)
8579 + 1.*(reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ7nQ6nstarQ1nstar)
8580 + 1.*(reQ8nQ7nstarQ1nstar+reQ8nQ4nstarQ4nstar+reQ8nQ5nstarQ3nstar)
8581 + 1.*(reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8582 + 1.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8583 + 1.*(reQ7nQ5nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar)
8584 + 2.*(reQ7nQ4nstarQ3nstar+reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8585 + 2.*(reQ4nQ2nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar) // 3 - 1
8586 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8587 - 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.))
8588 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8589 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8590 - 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.))
8591 + 24.*dMult)
8592 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8593
8594
8595 // to be polished:
8596 five6n2n1n5n4n = (reQ6nQ2nQ1nQ5nstarQ4nstar
8597 - reQ6nQ3nQ5nstarQ4nstar-reQ7nQ2nQ5nstarQ4nstar-reQ8nQ1nQ5nstarQ4nstar
8598 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8599 - reQ9nQ6nstarQ2nstarQ1nstar-reQ6nQ2nQ4nstarQ4nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8600 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ9nQ5nstarQ4nstar)
8601 + reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ8nQ5nstarQ3nstar
8602 + reQ9nQ8nstarQ1nstar+reQ9nQ6nstarQ3nstar+reQ9nQ7nstarQ2nstar
8603 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8604 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8605 + reQ8nQ4nstarQ4nstar+reQ4nQ2nstarQ2nstar+reQ6nQ4nstarQ2nstar
8606 + 2.*(reQ8nQ6nstarQ2nstar+reQ7nQ6nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8607 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar)
8608 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8609 - 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.))
8610 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8611 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8612 - 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.))
8613 + 24.*dMult)
8614 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8615
8616
8617
8618 // to be polished:
8619 five6n4n5n3n2n = (reQ6nQ4nQ5nstarQ3nstarQ2nstar
8620 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ6nstarQ4nstar-reQ8nQ2nQ6nstarQ4nstar
8621 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8622 - reQ10nQ5nstarQ3nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ4nQ1nQ3nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar
8623 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+reQ10nQ6nstarQ4nstar)
8624 + 1.*(reQ6nQ5nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar)
8625 + 1.*(reQ10nQ8nstarQ2nstar+reQ10nQ5nstarQ5nstar+reQ10nQ7nstarQ3nstar)
8626 + 1.*(reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8627 + 1.*(reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar)
8628 + 1.*(reQ8nQ4nstarQ4nstar+reQ4nQ3nstarQ1nstar+reQ5nQ4nstarQ1nstar)
8629 + 2.*(reQ8nQ5nstarQ3nstar+reQ7nQ5nstarQ2nstar+reQ5nQ3nstarQ2nstar)
8630 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar) // 3 - 1
8631 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8632 - 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.))
8633 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8634 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8635 - 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.))
8636 + 24.*dMult)
8637 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8638
8639
8640
8641 f5pCorrelations->Fill(0.5,five3n2n3n1n1n,d5pMultiplicityWeight);
8642 f5pCorrelations->Fill(1.5,five4n1n2n2n1n,d5pMultiplicityWeight);
8643 f5pCorrelations->Fill(2.5,five4n2n3n2n1n,d5pMultiplicityWeight);
8644 f5pCorrelations->Fill(3.5,five4n3n3n2n2n,d5pMultiplicityWeight);
8645 f5pCorrelations->Fill(4.5,five4n2n4n1n1n,d5pMultiplicityWeight);
8646 f5pCorrelations->Fill(5.5,five4n3n4n2n1n,d5pMultiplicityWeight);
8647 f5pCorrelations->Fill(6.5,five5n1n3n2n1n,d5pMultiplicityWeight);
8648 f5pCorrelations->Fill(7.5,five5n2n5n1n1n,d5pMultiplicityWeight);
8649 f5pCorrelations->Fill(8.5,five5n2n4n2n1n,d5pMultiplicityWeight);
8650 f5pCorrelations->Fill(9.5,five5n3n4n3n1n,d5pMultiplicityWeight);
8651 f5pCorrelations->Fill(10.5,five5n4n4n3n2n,d5pMultiplicityWeight);
8652 f5pCorrelations->Fill(11.5,five5n3n5n2n1n,d5pMultiplicityWeight);
8653 f5pCorrelations->Fill(12.5,five5n4n5n2n2n,d5pMultiplicityWeight);
8654 f5pCorrelations->Fill(13.5,five5n4n5n3n1n,d5pMultiplicityWeight);
8655 f5pCorrelations->Fill(14.5,five6n1n3n3n1n,d5pMultiplicityWeight);
8656 f5pCorrelations->Fill(15.5,five6n2n3n3n2n,d5pMultiplicityWeight);
8657 f5pCorrelations->Fill(16.5,five6n1n4n2n1n,d5pMultiplicityWeight);
8658 f5pCorrelations->Fill(17.5,five6n3n4n3n2n,d5pMultiplicityWeight);
8659 f5pCorrelations->Fill(18.5,five6n4n4n3n3n,d5pMultiplicityWeight);
8660 f5pCorrelations->Fill(19.5,five6n2n5n2n1n,d5pMultiplicityWeight);
8661 f5pCorrelations->Fill(20.5,five6n3n5n3n1n,d5pMultiplicityWeight);
8662 f5pCorrelations->Fill(21.5,five6n4n5n4n1n,d5pMultiplicityWeight);
8663 f5pCorrelations->Fill(22.5,five6n5n5n3n3n,d5pMultiplicityWeight);
8664 f5pCorrelations->Fill(23.5,five6n2n6n1n1n,d5pMultiplicityWeight);
8665 f5pCorrelations->Fill(24.5,five6n3n6n2n1n,d5pMultiplicityWeight);
8666 f5pCorrelations->Fill(25.5,five6n4n6n2n2n,d5pMultiplicityWeight);
8667 f5pCorrelations->Fill(26.5,five6n4n6n3n1n,d5pMultiplicityWeight);
8668 f5pCorrelations->Fill(27.5,five6n5n5n4n2n,d5pMultiplicityWeight);
8669 f5pCorrelations->Fill(28.5,five6n5n6n3n2n,d5pMultiplicityWeight);
8670 f5pCorrelations->Fill(29.5,five6n5n6n4n1n,d5pMultiplicityWeight);
8671 //f5pCorrelations->Fill(30.5,-44.,d5pMultiplicityWeight);
8672 f5pCorrelations->Fill(31.5,five2n1n1n1n1n,d5pMultiplicityWeight);
8673 f5pCorrelations->Fill(32.5,five2n2n2n1n1n,d5pMultiplicityWeight);
8674 f5pCorrelations->Fill(33.5,five3n3n2n2n2n,d5pMultiplicityWeight);
8675 f5pCorrelations->Fill(34.5,five4n1n1n1n1n,d5pMultiplicityWeight);
8676 f5pCorrelations->Fill(35.5,five4n2n2n2n2n,d5pMultiplicityWeight);
8677 f5pCorrelations->Fill(36.5,five4n4n4n2n2n,d5pMultiplicityWeight);
8678 f5pCorrelations->Fill(37.5,five6n3n3n3n3n,d5pMultiplicityWeight);
8679 f5pCorrelations->Fill(38.5,five6n6n4n4n4n,d5pMultiplicityWeight);
8680 f5pCorrelations->Fill(39.5,five6n6n6n3n3n,d5pMultiplicityWeight);
8681 //f5pCorrelations->Fill(40.5,-44.,d5pMultiplicityWeight);
8682 f5pCorrelations->Fill(41.5,five3n1n2n1n1n,d5pMultiplicityWeight);
8683 f5pCorrelations->Fill(42.5,five3n2n2n2n1n,d5pMultiplicityWeight);
8684 f5pCorrelations->Fill(43.5,five3n3n3n2n1n,d5pMultiplicityWeight);
8685 f5pCorrelations->Fill(44.5,five4n1n3n1n1n,d5pMultiplicityWeight);
8686 f5pCorrelations->Fill(45.5,five4n1n1n3n3n,d5pMultiplicityWeight);
8687 f5pCorrelations->Fill(46.5,five4n3n3n3n1n,d5pMultiplicityWeight);
8688 f5pCorrelations->Fill(47.5,five4n4n3n3n2n,d5pMultiplicityWeight);
8689 f5pCorrelations->Fill(48.5,five4n4n4n3n1n,d5pMultiplicityWeight);
8690 f5pCorrelations->Fill(49.5,five5n2n1n1n1n,d5pMultiplicityWeight);
8691 f5pCorrelations->Fill(50.5,five5n1n2n2n2n,d5pMultiplicityWeight);
8692 f5pCorrelations->Fill(51.5,five5n2n3n2n2n,d5pMultiplicityWeight);
8693 f5pCorrelations->Fill(52.5,five5n3n3n3n2n,d5pMultiplicityWeight);
8694 f5pCorrelations->Fill(53.5,five5n1n4n1n1n,d5pMultiplicityWeight);
8695 f5pCorrelations->Fill(54.5,five5n4n3n3n3n,d5pMultiplicityWeight);
8696 f5pCorrelations->Fill(55.5,five5n4n4n4n1n,d5pMultiplicityWeight);
8697 f5pCorrelations->Fill(56.5,five5n5n4n3n3n,d5pMultiplicityWeight);
8698 f5pCorrelations->Fill(57.5,five5n5n4n4n2n,d5pMultiplicityWeight);
8699 f5pCorrelations->Fill(58.5,five5n5n5n3n2n,d5pMultiplicityWeight);
8700 f5pCorrelations->Fill(59.5,five5n5n5n4n1n,d5pMultiplicityWeight);
8701 f5pCorrelations->Fill(60.5,five6n2n2n1n1n,d5pMultiplicityWeight);
8702 f5pCorrelations->Fill(61.5,five6n3n1n1n1n,d5pMultiplicityWeight);
8703 f5pCorrelations->Fill(62.5,five6n1n1n4n4n,d5pMultiplicityWeight);
8704 f5pCorrelations->Fill(63.5,five6n1n5n1n1n,d5pMultiplicityWeight);
8705 f5pCorrelations->Fill(64.5,five6n2n4n2n2n,d5pMultiplicityWeight);
8706 f5pCorrelations->Fill(65.5,five6n4n4n4n2n,d5pMultiplicityWeight);
8707 f5pCorrelations->Fill(66.5,five6n2n2n5n5n,d5pMultiplicityWeight);
8708 f5pCorrelations->Fill(67.5,five6n5n5n5n1n,d5pMultiplicityWeight);
8709 f5pCorrelations->Fill(68.5,five6n6n5n5n2n,d5pMultiplicityWeight);
8710 f5pCorrelations->Fill(69.5,five6n6n6n4n2n,d5pMultiplicityWeight);
8711 f5pCorrelations->Fill(70.5,five6n6n6n5n1n,d5pMultiplicityWeight);
8712 //f5pCorrelations->Fill(71.5,-44.,d5pMultiplicityWeight);
8713 f5pCorrelations->Fill(72.5,five5n2n3n3n1n,d5pMultiplicityWeight);
8714 f5pCorrelations->Fill(73.5,five5n1n1n4n3n,d5pMultiplicityWeight);
8715 f5pCorrelations->Fill(74.5,five5n3n4n2n2n,d5pMultiplicityWeight);
8716 f5pCorrelations->Fill(75.5,five5n2n1n4n4n,d5pMultiplicityWeight);
8717 f5pCorrelations->Fill(76.5,five6n1n3n2n2n,d5pMultiplicityWeight);
8718 f5pCorrelations->Fill(77.5,five6n3n4n4n1n,d5pMultiplicityWeight);
8719 f5pCorrelations->Fill(78.5,five6n1n1n5n3n,d5pMultiplicityWeight);
8720 f5pCorrelations->Fill(79.5,five6n3n5n2n2n,d5pMultiplicityWeight);
8721 f5pCorrelations->Fill(80.5,five6n5n4n4n3n,d5pMultiplicityWeight);
8722 f5pCorrelations->Fill(81.5,five6n3n1n5n5n,d5pMultiplicityWeight);
8723 f5pCorrelations->Fill(82.5,five6n6n5n4n3n,d5pMultiplicityWeight);
8724 //f5pCorrelations->Fill(83.5,-44.,d5pMultiplicityWeight);
8725 f5pCorrelations->Fill(84.5,five6n2n4n3n1n,d5pMultiplicityWeight);
8726 f5pCorrelations->Fill(85.5,five6n2n1n5n4n,d5pMultiplicityWeight);
8727 f5pCorrelations->Fill(86.5,five6n4n5n3n2n,d5pMultiplicityWeight);
c10259fb 8728 allMixedCorrelators[56]=five3n2n3n1n1n;
8729 allMixedCorrelators[57]=five4n1n2n2n1n;
8730 allMixedCorrelators[58]=five4n2n3n2n1n;
8731 allMixedCorrelators[59]=five4n3n3n2n2n;
8732 allMixedCorrelators[60]=five4n2n4n1n1n;
8733 allMixedCorrelators[61]=five4n3n4n2n1n;
8734 allMixedCorrelators[62]=five5n1n3n2n1n;
8735 allMixedCorrelators[63]=five5n2n5n1n1n;
8736 allMixedCorrelators[64]=five5n2n4n2n1n;
8737 allMixedCorrelators[65]=five5n3n4n3n1n;
8738 allMixedCorrelators[66]=five5n4n4n3n2n;
8739 allMixedCorrelators[67]=five5n3n5n2n1n;
8740 allMixedCorrelators[68]=five5n4n5n2n2n;
8741 allMixedCorrelators[69]=five5n4n5n3n1n;
8742 allMixedCorrelators[70]=five6n1n3n3n1n;
8743 allMixedCorrelators[71]=five6n2n3n3n2n;
8744 allMixedCorrelators[72]=five6n1n4n2n1n;
8745 allMixedCorrelators[73]=five6n3n4n3n2n;
8746 allMixedCorrelators[74]=five6n4n4n3n3n;
8747 allMixedCorrelators[75]=five6n2n5n2n1n;
8748 allMixedCorrelators[76]=five6n3n5n3n1n;
8749 allMixedCorrelators[77]=five6n4n5n4n1n;
8750 allMixedCorrelators[78]=five6n5n5n3n3n;
8751 allMixedCorrelators[79]=five6n2n6n1n1n;
8752 allMixedCorrelators[80]=five6n3n6n2n1n;
8753 allMixedCorrelators[81]=five6n4n6n2n2n;
8754 allMixedCorrelators[82]=five6n4n6n3n1n;
8755 allMixedCorrelators[83]=five6n5n5n4n2n;
8756 allMixedCorrelators[84]=five6n5n6n3n2n;
8757 allMixedCorrelators[85]=five6n5n6n4n1n;
8758 allMixedCorrelators[86]=five2n1n1n1n1n;
8759 allMixedCorrelators[87]=five2n2n2n1n1n;
8760 allMixedCorrelators[88]=five3n3n2n2n2n;
8761 allMixedCorrelators[89]=five4n1n1n1n1n;
8762 allMixedCorrelators[90]=five4n2n2n2n2n;
8763 allMixedCorrelators[91]=five4n4n4n2n2n;
8764 allMixedCorrelators[92]=five6n3n3n3n3n;
8765 allMixedCorrelators[93]=five6n6n4n4n4n;
8766 allMixedCorrelators[94]=five6n6n6n3n3n;
8767 allMixedCorrelators[95]=five3n1n2n1n1n;
8768 allMixedCorrelators[96]=five3n2n2n2n1n;
8769 allMixedCorrelators[97]=five3n3n3n2n1n;
8770 allMixedCorrelators[98]=five4n1n3n1n1n;
8771 allMixedCorrelators[99]=five4n1n1n3n3n;
8772 allMixedCorrelators[100]=five4n3n3n3n1n;
8773 allMixedCorrelators[101]=five4n4n3n3n2n;
8774 allMixedCorrelators[102]=five4n4n4n3n1n;
8775 allMixedCorrelators[103]=five5n2n1n1n1n;
8776 allMixedCorrelators[104]=five5n1n2n2n2n;
8777 allMixedCorrelators[105]=five5n2n3n2n2n;
8778 allMixedCorrelators[106]=five5n3n3n3n2n;
8779 allMixedCorrelators[107]=five5n1n4n1n1n;
8780 allMixedCorrelators[108]=five5n4n3n3n3n;
8781 allMixedCorrelators[109]=five5n4n4n4n1n;
8782 allMixedCorrelators[110]=five5n5n4n3n3n;
8783 allMixedCorrelators[111]=five5n5n4n4n2n;
8784 allMixedCorrelators[112]=five5n5n5n3n2n;
8785 allMixedCorrelators[113]=five5n5n5n4n1n;
8786 allMixedCorrelators[114]=five6n2n2n1n1n;
8787 allMixedCorrelators[115]=five6n3n1n1n1n;
8788 allMixedCorrelators[116]=five6n1n1n4n4n;
8789 allMixedCorrelators[117]=five6n1n5n1n1n;
8790 allMixedCorrelators[118]=five6n2n4n2n2n;
8791 allMixedCorrelators[119]=five6n4n4n4n2n;
8792 allMixedCorrelators[120]=five6n2n2n5n5n;
8793 allMixedCorrelators[121]=five6n5n5n5n1n;
8794 allMixedCorrelators[122]=five6n6n5n5n2n;
8795 allMixedCorrelators[123]=five6n6n6n4n2n;
8796 allMixedCorrelators[124]=five6n6n6n5n1n;
8797 allMixedCorrelators[125]=five5n2n3n3n1n;
8798 allMixedCorrelators[126]=five5n1n1n4n3n;
8799 allMixedCorrelators[127]=five5n3n4n2n2n;
8800 allMixedCorrelators[128]=five5n2n1n4n4n;
8801 allMixedCorrelators[129]=five6n1n3n2n2n;
8802 allMixedCorrelators[130]=five6n3n4n4n1n;
8803 allMixedCorrelators[131]=five6n1n1n5n3n;
8804 allMixedCorrelators[132]=five6n3n5n2n2n;
8805 allMixedCorrelators[133]=five6n5n4n4n3n;
8806 allMixedCorrelators[134]=five6n3n1n5n5n;
8807 allMixedCorrelators[135]=five6n6n5n4n3n;
8808 allMixedCorrelators[136]=five6n2n4n3n1n;
8809 allMixedCorrelators[137]=five6n2n1n5n4n;
8810 allMixedCorrelators[138]=five6n4n5n3n2n;
e1d101a6 8811 } // end of if(dMult>4.)
b84464d3 8812
c10259fb 8813 // Products of mixed harmonics:
8814 Double_t dwx=0.;
8815 Double_t dwy=0.;
8816 for(Int_t x=1;x<=139;x++)
8817 {
8818 if(x>=1 && x<7)
8819 {
8820 dwx=d2pMultiplicityWeight;
8821 } else if(x>=7 && x<16)
8822 {
8823 dwx=d3pMultiplicityWeight;
8824 } else if(x>=16 && x<57)
8825 {
8826 dwx=d4pMultiplicityWeight;
8827 } else if(x>=57 && x<140)
8828 {
8829 dwx=d5pMultiplicityWeight;
8830 }
8831 for(Int_t y=x+1;y<=139;y++)
8832 {
8833 if(y>=1 && y<7)
8834 {
8835 dwy=d2pMultiplicityWeight;
8836 } else if(y>=7 && y<16)
8837 {
8838 dwy=d3pMultiplicityWeight;
8839 } else if(y>=16 && y<57)
8840 {
8841 dwy=d4pMultiplicityWeight;
8842 } else if(y>=57 && y<140)
8843 {
8844 dwy=d5pMultiplicityWeight;
8845 }
8846 fMixedHarmonicProductOfCorrelations->Fill(x-0.5,y-0.5,allMixedCorrelators[x-1]*allMixedCorrelators[y-1],dwx*dwy);
8847 } // end of for(Int_t y=x+1;y<=139;y++)
8848 } // end of for(Int_t x=1;x<=139;x++)
e1d101a6 8849
8850} // end of void AliFlowAnalysisWithQCumulants::CalculateMixedHarmonics()
489d5531 8851
e1d101a6 8852//===================================================================================================================
8853
8854void AliFlowAnalysisWithQCumulants::CalculateCumulantsMixedHarmonics()
8855{
8856 // Calculate in this method all multi-particle cumulants for azimuthal correlations in mixed harmonics.
8857 // (Remark: For completeness sake, we also calculate here again cumulants in the same harmonic.)
8858
8859 // a) Calculate 2-p cumulants;
8860 // b) Calculate 3-p cumulants;
8861 // c) Calculate 4-p cumulants;
8862 // d) Calculate 5-p cumulants.
8863
8864 // a) Calculate 2-p cumulants:
8865 for(Int_t b=1;b<=6;b++)
8866 {
8867 f2pCumulants->SetBinContent(b,f2pCorrelations->GetBinContent(b));
c10259fb 8868 Double_t dSumWLinear = 0.; // sum of linear event weights
8869 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
8870 Double_t dSpread = 0.; // weighted and biased estimator for sigma
8871 Double_t dError = 0.; // weighted and unbiased estimator for error
8872 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8873 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8874 dSpread = f2pCorrelations->GetBinError(b);
8875 if(pow(dSumWLinear,2.)>dSumWQuadratic)
8876 {
8877 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
8878 f2pCumulants->SetBinError(b,dError);
8879 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 8880 } // end of for(Int_t b=1;b<=6;b++)
8881
8882 // b) Calculate 3-p cumulants:
8883 for(Int_t b=1;b<=10;b++)
8884 {
8885 f3pCumulants->SetBinContent(b,f3pCorrelations->GetBinContent(b));
c10259fb 8886 Double_t dSumWLinear = 0.; // sum of linear event weights
8887 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
8888 Double_t dSpread = 0.; // weighted and biased estimator for sigma
8889 Double_t dError = 0.; // weighted and unbiased estimator for sigma
8890 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(3);
8891 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(3);
8892 dSpread = f3pCorrelations->GetBinError(b);
8893 if(pow(dSumWLinear,2.)>dSumWQuadratic)
8894 {
8895 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
8896 f3pCumulants->SetBinError(b,dError);
8897 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 8898 } // end of for(Int_t b=1;b<=10;b++)
8899
8900 // c) Calculate 4-p cumulants:
8901 // c1) "Single harmonic":
8902 for(Int_t b=1;b<=6;b++)
8903 {
8904 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b)-2.*pow(f2pCorrelations->GetBinContent(b),2.));
c10259fb 8905 Double_t dSumWLinearTwo = 0.; // sum of linear event weights for <2>
8906 Double_t dSumWQuadraticTwo = 0.; // sum of quadratic event weights <2>
8907 Double_t dSpreadTwo = 0.; // weighted and biased estimator for sigma of <2>
8908 Double_t dSumWLinearFour = 0.; // sum of linear event weights for <4>
8909 Double_t dSumWQuadraticFour = 0.; // sum of quadratic event weights <4>
8910 Double_t dSpreadFour = 0.; // weighted and biased estimator for sigma of <4>
8911 dSumWLinearTwo = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8912 dSumWQuadraticTwo = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8913 dSpreadTwo = f2pCorrelations->GetBinError(b);
8914 dSumWLinearFour = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8915 dSumWQuadraticFour = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8916 dSpreadFour = f4pCorrelations->GetBinError(b);
8917 if(pow(dSumWLinearTwo,2.)>dSumWQuadraticTwo && pow(dSumWLinearFour,2.)>dSumWQuadraticFour)
8918 {
8919 Double_t dError = 16.*pow(f2pCorrelations->GetBinContent(b),2.)
8920 * pow((pow(dSumWQuadraticTwo,0.5)/dSumWLinearTwo)*dSpreadTwo*pow(pow(dSumWLinearTwo,2.)/(pow(dSumWLinearTwo,2.)-dSumWQuadraticTwo),0.5),2.)
8921 + pow((pow(dSumWQuadraticFour,0.5)/dSumWLinearFour)*dSpreadFour*pow(pow(dSumWLinearFour,2.)/(pow(dSumWLinearFour,2.)-dSumWQuadraticFour),0.5),2.)
8922 - 8.*f2pCorrelations->GetBinContent(b)
8923 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8924 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(b,b+15))
8925 - f2pCorrelations->GetBinContent(b)*f4pCorrelations->GetBinContent(b))
8926 / (dSumWLinearTwo*dSumWLinearFour-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8927 if(dError>0.)
8928 {
8929 f4pCumulants->SetBinError(b,pow(dError,0.5));
8930 }
8931 } // end of if(pow(dSumWLinearTwo,2.)>dSumWQuadraticTwo && pow(dSumWLinearFour,2.)>dSumWQuadraticFour)
e1d101a6 8932 } // end of for(Int_t b=1;b<=6;b++)
8933 // c2) "Standard candles":
c10259fb 8934 // <4>_{2n,1n|2n,1n}:
e1d101a6 8935 f4pCumulants->SetBinContent(8,f4pCorrelations->GetBinContent(8)-f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1));
c10259fb 8936 {
8937 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8938 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8939 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8940 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
8941 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
8942 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
8943 Double_t dSumWLinearFour2n1n2n1n = 0.; // sum of linear event weights for <4>
8944 Double_t dSumWQuadraticFour2n1n2n1n = 0.; // sum of quadratic event weights <4>
8945 Double_t dSpreadFour2n1n2n1n = 0.; // weighted and biased estimator for sigma of <4>
8946 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8947 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8948 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
8949 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8950 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8951 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
8952 dSumWLinearFour2n1n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8953 dSumWQuadraticFour2n1n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8954 dSpreadFour2n1n2n1n = f4pCorrelations->GetBinError(8);
8955 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
8956 pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
8957 pow(dSumWLinearFour2n1n2n1n,2.)>dSumWQuadraticFour2n1n2n1n)
8958 {
8959 Double_t dError = pow(f2pCorrelations->GetBinContent(2),2.)
8960 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
8961 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
8962 + pow(f2pCorrelations->GetBinContent(1),2.)
8963 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
8964 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
8965 + pow((pow(dSumWQuadraticFour2n1n2n1n,0.5)/dSumWLinearFour2n1n2n1n)
8966 * dSpreadFour2n1n2n1n*pow(pow(dSumWLinearFour2n1n2n1n,2.)/(pow(dSumWLinearFour2n1n2n1n,2.)-dSumWQuadraticFour2n1n2n1n),0.5),2.)
8967 + 2.*f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1)
8968 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8969 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,2))
8970 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2))
8971 / (dSumWLinearTwo1n1n*dSumWLinearTwo2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8972 - 2.*f2pCorrelations->GetBinContent(2)
8973 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8974 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,22))
8975 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(8))
8976 / (dSumWLinearTwo1n1n*dSumWLinearFour2n1n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8977 - 2.*f2pCorrelations->GetBinContent(1)
8978 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8979 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,22))
8980 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(8))
8981 / (dSumWLinearTwo2n2n*dSumWLinearFour2n1n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8982 if(dError>0.)
8983 {
8984 f4pCumulants->SetBinError(8,pow(dError,0.5));
8985 }
8986 } // end of if(...)
8987 } // end of {
8988 // <4>_{3n,1n|3n,1n}:
e1d101a6 8989 f4pCumulants->SetBinContent(9,f4pCorrelations->GetBinContent(9)-f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1));
c10259fb 8990 {
8991 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8992 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8993 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8994 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
8995 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
8996 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
8997 Double_t dSumWLinearFour3n1n3n1n = 0.; // sum of linear event weights for <4>
8998 Double_t dSumWQuadraticFour3n1n3n1n = 0.; // sum of quadratic event weights <4>
8999 Double_t dSpreadFour3n1n3n1n = 0.; // weighted and biased estimator for sigma of <4>
9000 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9001 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9002 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9003 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9004 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9005 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9006 dSumWLinearFour3n1n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9007 dSumWQuadraticFour3n1n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9008 dSpreadFour3n1n3n1n = f4pCorrelations->GetBinError(9);
9009 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9010 pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9011 pow(dSumWLinearFour3n1n3n1n,2.)>dSumWQuadraticFour3n1n3n1n)
9012 {
9013 Double_t dError = pow(f2pCorrelations->GetBinContent(3),2.)
9014 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9015 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9016 + pow(f2pCorrelations->GetBinContent(1),2.)
9017 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9018 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9019 + pow((pow(dSumWQuadraticFour3n1n3n1n,0.5)/dSumWLinearFour3n1n3n1n)
9020 * dSpreadFour3n1n3n1n*pow(pow(dSumWLinearFour3n1n3n1n,2.)/(pow(dSumWLinearFour3n1n3n1n,2.)-dSumWQuadraticFour3n1n3n1n),0.5),2.)
9021 + 2.*f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1)
9022 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9023 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,3))
9024 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3))
9025 / (dSumWLinearTwo1n1n*dSumWLinearTwo3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9026 - 2.*f2pCorrelations->GetBinContent(3)
9027 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9028 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,23))
9029 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(9))
9030 / (dSumWLinearTwo1n1n*dSumWLinearFour3n1n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9031 - 2.*f2pCorrelations->GetBinContent(1)
9032 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9033 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,23))
9034 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(9))
9035 / (dSumWLinearTwo3n3n*dSumWLinearFour3n1n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9036 if(dError>0.)
9037 {
9038 f4pCumulants->SetBinError(9,pow(dError,0.5));
9039 }
9040 } // end of if(...)
9041 } // end of {
9042 // <4>_{3n,2n|3n,2n}:
e1d101a6 9043 f4pCumulants->SetBinContent(10,f4pCorrelations->GetBinContent(10)-f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2));
c10259fb 9044 {
9045 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9046 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9047 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9048 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9049 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9050 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9051 Double_t dSumWLinearFour3n2n3n2n = 0.; // sum of linear event weights for <4>
9052 Double_t dSumWQuadraticFour3n2n3n2n = 0.; // sum of quadratic event weights <4>
9053 Double_t dSpreadFour3n2n3n2n = 0.; // weighted and biased estimator for sigma of <4>
9054 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9055 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9056 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9057 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9058 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9059 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9060 dSumWLinearFour3n2n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9061 dSumWQuadraticFour3n2n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9062 dSpreadFour3n2n3n2n = f4pCorrelations->GetBinError(10);
9063 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9064 pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9065 pow(dSumWLinearFour3n2n3n2n,2.)>dSumWQuadraticFour3n2n3n2n)
9066 {
9067 Double_t dError = pow(f2pCorrelations->GetBinContent(3),2.)
9068 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9069 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9070 + pow(f2pCorrelations->GetBinContent(2),2.)
9071 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9072 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9073 + pow((pow(dSumWQuadraticFour3n2n3n2n,0.5)/dSumWLinearFour3n2n3n2n)
9074 * dSpreadFour3n2n3n2n*pow(pow(dSumWLinearFour3n2n3n2n,2.)/(pow(dSumWLinearFour3n2n3n2n,2.)-dSumWQuadraticFour3n2n3n2n),0.5),2.)
9075 + 2.*f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2)
9076 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9077 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,3))
9078 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3))
9079 / (dSumWLinearTwo2n2n*dSumWLinearTwo3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9080 - 2.*f2pCorrelations->GetBinContent(3)
9081 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9082 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,24))
9083 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(10))
9084 / (dSumWLinearTwo2n2n*dSumWLinearFour3n2n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9085 - 2.*f2pCorrelations->GetBinContent(2)
9086 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9087 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,24))
9088 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(10))
9089 / (dSumWLinearTwo3n3n*dSumWLinearFour3n2n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9090 if(dError>0.)
9091 {
9092 f4pCumulants->SetBinError(10,pow(dError,0.5));
9093 }
9094 } // end of if(...)
9095 } // end of {
9096 // <4>_{4n,1n|4n,1n}
e1d101a6 9097 f4pCumulants->SetBinContent(11,f4pCorrelations->GetBinContent(11)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(1));
c10259fb 9098 {
9099 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9100 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9101 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9102 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9103 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9104 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9105 Double_t dSumWLinearFour4n1n4n1n = 0.; // sum of linear event weights for <4>
9106 Double_t dSumWQuadraticFour4n1n4n1n = 0.; // sum of quadratic event weights <4>
9107 Double_t dSpreadFour4n1n4n1n = 0.; // weighted and biased estimator for sigma of <4>
9108 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9109 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9110 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9111 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9112 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9113 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9114 dSumWLinearFour4n1n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9115 dSumWQuadraticFour4n1n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9116 dSpreadFour4n1n4n1n = f4pCorrelations->GetBinError(11);
9117 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9118 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9119 pow(dSumWLinearFour4n1n4n1n,2.)>dSumWQuadraticFour4n1n4n1n)
9120 {
9121 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9122 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9123 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9124 + pow(f2pCorrelations->GetBinContent(1),2.)
9125 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9126 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9127 + pow((pow(dSumWQuadraticFour4n1n4n1n,0.5)/dSumWLinearFour4n1n4n1n)
9128 * dSpreadFour4n1n4n1n*pow(pow(dSumWLinearFour4n1n4n1n,2.)/(pow(dSumWLinearFour4n1n4n1n,2.)-dSumWQuadraticFour4n1n4n1n),0.5),2.)
9129 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(1)
9130 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9131 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,4))
9132 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4))
9133 / (dSumWLinearTwo1n1n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9134 - 2.*f2pCorrelations->GetBinContent(4)
9135 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9136 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,25))
9137 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(11))
9138 / (dSumWLinearTwo1n1n*dSumWLinearFour4n1n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9139 - 2.*f2pCorrelations->GetBinContent(1)
9140 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9141 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,25))
9142 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(11))
9143 / (dSumWLinearTwo4n4n*dSumWLinearFour4n1n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9144 if(dError>0.)
9145 {
9146 f4pCumulants->SetBinError(11,pow(dError,0.5));
9147 }
9148 } // end of if(...)
9149 } // end of {
9150 // <4>_{4n,2n|4n,2n}
e1d101a6 9151 f4pCumulants->SetBinContent(12,f4pCorrelations->GetBinContent(12)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(2));
c10259fb 9152 {
9153 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9154 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9155 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9156 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9157 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9158 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9159 Double_t dSumWLinearFour4n2n4n2n = 0.; // sum of linear event weights for <4>
9160 Double_t dSumWQuadraticFour4n2n4n2n = 0.; // sum of quadratic event weights <4>
9161 Double_t dSpreadFour4n2n4n2n = 0.; // weighted and biased estimator for sigma of <4>
9162 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9163 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9164 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9165 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9166 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9167 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9168 dSumWLinearFour4n2n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9169 dSumWQuadraticFour4n2n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9170 dSpreadFour4n2n4n2n = f4pCorrelations->GetBinError(12);
9171 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9172 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9173 pow(dSumWLinearFour4n2n4n2n,2.)>dSumWQuadraticFour4n2n4n2n)
9174 {
9175 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9176 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9177 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9178 + pow(f2pCorrelations->GetBinContent(2),2.)
9179 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9180 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9181 + pow((pow(dSumWQuadraticFour4n2n4n2n,0.5)/dSumWLinearFour4n2n4n2n)
9182 * dSpreadFour4n2n4n2n*pow(pow(dSumWLinearFour4n2n4n2n,2.)/(pow(dSumWLinearFour4n2n4n2n,2.)-dSumWQuadraticFour4n2n4n2n),0.5),2.)
9183 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(2)
9184 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9185 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,4))
9186 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4))
9187 / (dSumWLinearTwo2n2n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9188 - 2.*f2pCorrelations->GetBinContent(4)
9189 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9190 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,25))
9191 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(12))
9192 / (dSumWLinearTwo2n2n*dSumWLinearFour4n2n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9193 - 2.*f2pCorrelations->GetBinContent(2)
9194 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9195 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,25))
9196 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(12))
9197 / (dSumWLinearTwo4n4n*dSumWLinearFour4n2n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9198 if(dError>0.)
9199 {
9200 f4pCumulants->SetBinError(12,pow(dError,0.5));
9201 }
9202 } // end of if(...)
9203 } // end of {
9204 // <4>_{4n,3n|4n,3n}
e1d101a6 9205 f4pCumulants->SetBinContent(13,f4pCorrelations->GetBinContent(13)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(3));
c10259fb 9206 {
9207 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9208 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9209 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9210 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9211 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9212 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9213 Double_t dSumWLinearFour4n3n4n3n = 0.; // sum of linear event weights for <4>
9214 Double_t dSumWQuadraticFour4n3n4n3n = 0.; // sum of quadratic event weights <4>
9215 Double_t dSpreadFour4n3n4n3n = 0.; // weighted and biased estimator for sigma of <4>
9216 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9217 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9218 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9219 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9220 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9221 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9222 dSumWLinearFour4n3n4n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9223 dSumWQuadraticFour4n3n4n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9224 dSpreadFour4n3n4n3n = f4pCorrelations->GetBinError(13);
9225 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9226 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9227 pow(dSumWLinearFour4n3n4n3n,2.)>dSumWQuadraticFour4n3n4n3n)
9228 {
9229 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9230 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9231 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9232 + pow(f2pCorrelations->GetBinContent(3),2.)
9233 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9234 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9235 + pow((pow(dSumWQuadraticFour4n3n4n3n,0.5)/dSumWLinearFour4n3n4n3n)
9236 * dSpreadFour4n3n4n3n*pow(pow(dSumWLinearFour4n3n4n3n,2.)/(pow(dSumWLinearFour4n3n4n3n,2.)-dSumWQuadraticFour4n3n4n3n),0.5),2.)
9237 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(3)
9238 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9239 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,4))
9240 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4))
9241 / (dSumWLinearTwo3n3n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9242 - 2.*f2pCorrelations->GetBinContent(4)
9243 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9244 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,26))
9245 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(13))
9246 / (dSumWLinearTwo3n3n*dSumWLinearFour4n3n4n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9247 - 2.*f2pCorrelations->GetBinContent(3)
9248 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9249 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,26))
9250 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(13))
9251 / (dSumWLinearTwo4n4n*dSumWLinearFour4n3n4n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9252 if(dError>0.)
9253 {
9254 f4pCumulants->SetBinError(13,pow(dError,0.5));
9255 }
9256 } // end of if(...)
9257 } // end of {
9258 // <4>_{5n,1n|5n,1n}
e1d101a6 9259 f4pCumulants->SetBinContent(14,f4pCorrelations->GetBinContent(14)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1));
c10259fb 9260 {
9261 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9262 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9263 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9264 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9265 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9266 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9267 Double_t dSumWLinearFour5n1n5n1n = 0.; // sum of linear event weights for <4>
9268 Double_t dSumWQuadraticFour5n1n5n1n = 0.; // sum of quadratic event weights <4>
9269 Double_t dSpreadFour5n1n5n1n = 0.; // weighted and biased estimator for sigma of <4>
9270 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9271 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9272 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9273 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9274 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9275 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9276 dSumWLinearFour5n1n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9277 dSumWQuadraticFour5n1n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9278 dSpreadFour5n1n5n1n = f4pCorrelations->GetBinError(14);
9279 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9280 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9281 pow(dSumWLinearFour5n1n5n1n,2.)>dSumWQuadraticFour5n1n5n1n)
9282 {
9283 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9284 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9285 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9286 + pow(f2pCorrelations->GetBinContent(1),2.)
9287 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9288 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9289 + pow((pow(dSumWQuadraticFour5n1n5n1n,0.5)/dSumWLinearFour5n1n5n1n)
9290 * dSpreadFour5n1n5n1n*pow(pow(dSumWLinearFour5n1n5n1n,2.)/(pow(dSumWLinearFour5n1n5n1n,2.)-dSumWQuadraticFour5n1n5n1n),0.5),2.)
9291 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)
9292 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9293 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,5))
9294 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5))
9295 / (dSumWLinearTwo1n1n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9296 - 2.*f2pCorrelations->GetBinContent(5)
9297 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9298 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,28))
9299 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(14))
9300 / (dSumWLinearTwo1n1n*dSumWLinearFour5n1n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9301 - 2.*f2pCorrelations->GetBinContent(1)
9302 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9303 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,28))
9304 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(14))
9305 / (dSumWLinearTwo5n5n*dSumWLinearFour5n1n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9306 if(dError>0.)
9307 {
9308 f4pCumulants->SetBinError(14,pow(dError,0.5));
9309 }
9310 } // end of if(...)
9311 } // end of {
9312 // <4>_{5n,2n|5n,2n}
e1d101a6 9313 f4pCumulants->SetBinContent(15,f4pCorrelations->GetBinContent(15)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2));
c10259fb 9314 {
9315 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9316 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9317 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9318 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9319 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9320 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9321 Double_t dSumWLinearFour5n2n5n2n = 0.; // sum of linear event weights for <4>
9322 Double_t dSumWQuadraticFour5n2n5n2n = 0.; // sum of quadratic event weights <4>
9323 Double_t dSpreadFour5n2n5n2n = 0.; // weighted and biased estimator for sigma of <4>
9324 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9325 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9326 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9327 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9328 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9329 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9330 dSumWLinearFour5n2n5n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9331 dSumWQuadraticFour5n2n5n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9332 dSpreadFour5n2n5n2n = f4pCorrelations->GetBinError(15);
9333 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9334 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9335 pow(dSumWLinearFour5n2n5n2n,2.)>dSumWQuadraticFour5n2n5n2n)
9336 {
9337 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9338 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9339 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9340 + pow(f2pCorrelations->GetBinContent(2),2.)
9341 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9342 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9343 + pow((pow(dSumWQuadraticFour5n2n5n2n,0.5)/dSumWLinearFour5n2n5n2n)
9344 * dSpreadFour5n2n5n2n*pow(pow(dSumWLinearFour5n2n5n2n,2.)/(pow(dSumWLinearFour5n2n5n2n,2.)-dSumWQuadraticFour5n2n5n2n),0.5),2.)
9345 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)
9346 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9347 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,5))
9348 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5))
9349 / (dSumWLinearTwo2n2n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9350 - 2.*f2pCorrelations->GetBinContent(5)
9351 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9352 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,29))
9353 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(15))
9354 / (dSumWLinearTwo2n2n*dSumWLinearFour5n2n5n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9355 - 2.*f2pCorrelations->GetBinContent(2)
9356 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9357 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,29))
9358 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(15))
9359 / (dSumWLinearTwo5n5n*dSumWLinearFour5n2n5n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9360 if(dError>0.)
9361 {
9362 f4pCumulants->SetBinError(15,pow(dError,0.5));
9363 }
9364 } // end of if(...)
9365 } // end of {
9366 // <4>_{5n,3n|5n,3n}
e1d101a6 9367 f4pCumulants->SetBinContent(16,f4pCorrelations->GetBinContent(16)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3));
c10259fb 9368 {
9369 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9370 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9371 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9372 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9373 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9374 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9375 Double_t dSumWLinearFour5n3n5n3n = 0.; // sum of linear event weights for <4>
9376 Double_t dSumWQuadraticFour5n3n5n3n = 0.; // sum of quadratic event weights <4>
9377 Double_t dSpreadFour5n3n5n3n = 0.; // weighted and biased estimator for sigma of <4>
9378 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9379 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9380 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9381 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9382 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9383 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9384 dSumWLinearFour5n3n5n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9385 dSumWQuadraticFour5n3n5n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9386 dSpreadFour5n3n5n3n = f4pCorrelations->GetBinError(16);
9387 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9388 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9389 pow(dSumWLinearFour5n3n5n3n,2.)>dSumWQuadraticFour5n3n5n3n)
9390 {
9391 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9392 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9393 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9394 + pow(f2pCorrelations->GetBinContent(3),2.)
9395 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9396 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9397 + pow((pow(dSumWQuadraticFour5n3n5n3n,0.5)/dSumWLinearFour5n3n5n3n)
9398 * dSpreadFour5n3n5n3n*pow(pow(dSumWLinearFour5n3n5n3n,2.)/(pow(dSumWLinearFour5n3n5n3n,2.)-dSumWQuadraticFour5n3n5n3n),0.5),2.)
9399 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)
9400 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9401 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,5))
9402 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5))
9403 / (dSumWLinearTwo3n3n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9404 - 2.*f2pCorrelations->GetBinContent(5)
9405 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9406 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,30))
9407 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(16))
9408 / (dSumWLinearTwo3n3n*dSumWLinearFour5n3n5n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9409 - 2.*f2pCorrelations->GetBinContent(3)
9410 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9411 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,30))
9412 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(16))
9413 / (dSumWLinearTwo5n5n*dSumWLinearFour5n3n5n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9414 if(dError>0.)
9415 {
9416 f4pCumulants->SetBinError(16,pow(dError,0.5));
9417 }
9418 } // end of if(...)
9419 } // end of {
9420 // <4>_{5n,4n|5n,4n}
e1d101a6 9421 f4pCumulants->SetBinContent(17,f4pCorrelations->GetBinContent(17)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4));
c10259fb 9422 {
9423 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9424 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9425 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9426 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9427 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9428 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9429 Double_t dSumWLinearFour5n4n5n4n = 0.; // sum of linear event weights for <4>
9430 Double_t dSumWQuadraticFour5n4n5n4n = 0.; // sum of quadratic event weights <4>
9431 Double_t dSpreadFour5n4n5n4n = 0.; // weighted and biased estimator for sigma of <4>
9432 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9433 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9434 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9435 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9436 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9437 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9438 dSumWLinearFour5n4n5n4n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9439 dSumWQuadraticFour5n4n5n4n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9440 dSpreadFour5n4n5n4n = f4pCorrelations->GetBinError(17);
9441 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9442 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9443 pow(dSumWLinearFour5n4n5n4n,2.)>dSumWQuadraticFour5n4n5n4n)
9444 {
9445 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9446 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9447 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9448 + pow(f2pCorrelations->GetBinContent(4),2.)
9449 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9450 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9451 + pow((pow(dSumWQuadraticFour5n4n5n4n,0.5)/dSumWLinearFour5n4n5n4n)
9452 * dSpreadFour5n4n5n4n*pow(pow(dSumWLinearFour5n4n5n4n,2.)/(pow(dSumWLinearFour5n4n5n4n,2.)-dSumWQuadraticFour5n4n5n4n),0.5),2.)
9453 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4)
9454 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9455 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,5))
9456 - f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(5))
9457 / (dSumWLinearTwo4n4n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9458 - 2.*f2pCorrelations->GetBinContent(5)
9459 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9460 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,31))
9461 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(17))
9462 / (dSumWLinearTwo4n4n*dSumWLinearFour5n4n5n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9463 - 2.*f2pCorrelations->GetBinContent(4)
9464 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9465 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,31))
9466 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(17))
9467 / (dSumWLinearTwo5n5n*dSumWLinearFour5n4n5n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9468 if(dError>0.)
9469 {
9470 f4pCumulants->SetBinError(17,pow(dError,0.5));
9471 }
9472 } // end of if(...)
9473 } // end of {
9474 // <4>_{6n,1n|6n,1n}
e1d101a6 9475 f4pCumulants->SetBinContent(18,f4pCorrelations->GetBinContent(18)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1));
c10259fb 9476 {
9477 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9478 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9479 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9480 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9481 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9482 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9483 Double_t dSumWLinearFour6n1n6n1n = 0.; // sum of linear event weights for <4>
9484 Double_t dSumWQuadraticFour6n1n6n1n = 0.; // sum of quadratic event weights <4>
9485 Double_t dSpreadFour6n1n6n1n = 0.; // weighted and biased estimator for sigma of <4>
9486 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9487 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9488 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9489 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9490 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9491 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9492 dSumWLinearFour6n1n6n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9493 dSumWQuadraticFour6n1n6n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9494 dSpreadFour6n1n6n1n = f4pCorrelations->GetBinError(18);
9495 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9496 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9497 pow(dSumWLinearFour6n1n6n1n,2.)>dSumWQuadraticFour6n1n6n1n)
9498 {
9499 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9500 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9501 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9502 + pow(f2pCorrelations->GetBinContent(1),2.)
9503 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9504 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9505 + pow((pow(dSumWQuadraticFour6n1n6n1n,0.5)/dSumWLinearFour6n1n6n1n)
9506 * dSpreadFour6n1n6n1n*pow(pow(dSumWLinearFour6n1n6n1n,2.)/(pow(dSumWLinearFour6n1n6n1n,2.)-dSumWQuadraticFour6n1n6n1n),0.5),2.)
9507 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)
9508 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9509 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,6))
9510 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6))
9511 / (dSumWLinearTwo1n1n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9512 - 2.*f2pCorrelations->GetBinContent(6)
9513 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9514 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,32))
9515 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(18))
9516 / (dSumWLinearTwo1n1n*dSumWLinearFour6n1n6n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9517 - 2.*f2pCorrelations->GetBinContent(1)
9518 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9519 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,32))
9520 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(18))
9521 / (dSumWLinearTwo6n6n*dSumWLinearFour6n1n6n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9522 if(dError>0.)
9523 {
9524 f4pCumulants->SetBinError(18,pow(dError,0.5));
9525 }
9526 } // end of if(...)
9527 } // end of {
9528 // <4>_{6n,2n|6n,2n}
e1d101a6 9529 f4pCumulants->SetBinContent(19,f4pCorrelations->GetBinContent(19)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2));
c10259fb 9530 {
9531 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9532 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9533 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9534 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9535 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9536 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9537 Double_t dSumWLinearFour6n2n6n2n = 0.; // sum of linear event weights for <4>
9538 Double_t dSumWQuadraticFour6n2n6n2n = 0.; // sum of quadratic event weights <4>
9539 Double_t dSpreadFour6n2n6n2n = 0.; // weighted and biased estimator for sigma of <4>
9540 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9541 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9542 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9543 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9544 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9545 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9546 dSumWLinearFour6n2n6n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9547 dSumWQuadraticFour6n2n6n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9548 dSpreadFour6n2n6n2n = f4pCorrelations->GetBinError(19);
9549 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9550 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9551 pow(dSumWLinearFour6n2n6n2n,2.)>dSumWQuadraticFour6n2n6n2n)
9552 {
9553 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9554 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9555 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9556 + pow(f2pCorrelations->GetBinContent(2),2.)
9557 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9558 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9559 + pow((pow(dSumWQuadraticFour6n2n6n2n,0.5)/dSumWLinearFour6n2n6n2n)
9560 * dSpreadFour6n2n6n2n*pow(pow(dSumWLinearFour6n2n6n2n,2.)/(pow(dSumWLinearFour6n2n6n2n,2.)-dSumWQuadraticFour6n2n6n2n),0.5),2.)
9561 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2)
9562 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9563 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,6))
9564 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6))
9565 / (dSumWLinearTwo2n2n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9566 - 2.*f2pCorrelations->GetBinContent(6)
9567 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9568 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,33))
9569 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(19))
9570 / (dSumWLinearTwo2n2n*dSumWLinearFour6n2n6n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9571 - 2.*f2pCorrelations->GetBinContent(2)
9572 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9573 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,33))
9574 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(19))
9575 / (dSumWLinearTwo6n6n*dSumWLinearFour6n2n6n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9576 if(dError>0.)
9577 {
9578 f4pCumulants->SetBinError(19,pow(dError,0.5));
9579 }
9580 } // end of if(...)
9581 } // end of {
9582 // <4>_{6n,3n|6n,3n}
e1d101a6 9583 f4pCumulants->SetBinContent(20,f4pCorrelations->GetBinContent(20)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3));
c10259fb 9584 {
9585 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9586 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9587 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9588 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9589 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9590 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9591 Double_t dSumWLinearFour6n3n6n3n = 0.; // sum of linear event weights for <4>
9592 Double_t dSumWQuadraticFour6n3n6n3n = 0.; // sum of quadratic event weights <4>
9593 Double_t dSpreadFour6n3n6n3n = 0.; // weighted and biased estimator for sigma of <4>
9594 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9595 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9596 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9597 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9598 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9599 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9600 dSumWLinearFour6n3n6n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9601 dSumWQuadraticFour6n3n6n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9602 dSpreadFour6n3n6n3n = f4pCorrelations->GetBinError(20);
9603 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9604 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9605 pow(dSumWLinearFour6n3n6n3n,2.)>dSumWQuadraticFour6n3n6n3n)
9606 {
9607 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9608 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9609 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9610 + pow(f2pCorrelations->GetBinContent(3),2.)
9611 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9612 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9613 + pow((pow(dSumWQuadraticFour6n3n6n3n,0.5)/dSumWLinearFour6n3n6n3n)
9614 * dSpreadFour6n3n6n3n*pow(pow(dSumWLinearFour6n3n6n3n,2.)/(pow(dSumWLinearFour6n3n6n3n,2.)-dSumWQuadraticFour6n3n6n3n),0.5),2.)
9615 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)
9616 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9617 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,6))
9618 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6))
9619 / (dSumWLinearTwo3n3n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9620 - 2.*f2pCorrelations->GetBinContent(6)
9621 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9622 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,34))
9623 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(20))
9624 / (dSumWLinearTwo3n3n*dSumWLinearFour6n3n6n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9625 - 2.*f2pCorrelations->GetBinContent(3)
9626 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9627 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,34))
9628 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(20))
9629 / (dSumWLinearTwo6n6n*dSumWLinearFour6n3n6n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9630 if(dError>0.)
9631 {
9632 f4pCumulants->SetBinError(20,pow(dError,0.5));
9633 }
9634 } // end of if(...)
9635 } // end of {
9636 // <4>_{6n,4n|6n,4n}
e1d101a6 9637 f4pCumulants->SetBinContent(21,f4pCorrelations->GetBinContent(21)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4));
c10259fb 9638 {
9639 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9640 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9641 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9642 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9643 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9644 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9645 Double_t dSumWLinearFour6n4n6n4n = 0.; // sum of linear event weights for <4>
9646 Double_t dSumWQuadraticFour6n4n6n4n = 0.; // sum of quadratic event weights <4>
9647 Double_t dSpreadFour6n4n6n4n = 0.; // weighted and biased estimator for sigma of <4>
9648 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9649 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9650 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9651 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9652 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9653 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9654 dSumWLinearFour6n4n6n4n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9655 dSumWQuadraticFour6n4n6n4n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9656 dSpreadFour6n4n6n4n = f4pCorrelations->GetBinError(21);
9657 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9658 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9659 pow(dSumWLinearFour6n4n6n4n,2.)>dSumWQuadraticFour6n4n6n4n)
9660 {
9661 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9662 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9663 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9664 + pow(f2pCorrelations->GetBinContent(4),2.)
9665 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9666 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9667 + pow((pow(dSumWQuadraticFour6n4n6n4n,0.5)/dSumWLinearFour6n4n6n4n)
9668 * dSpreadFour6n4n6n4n*pow(pow(dSumWLinearFour6n4n6n4n,2.)/(pow(dSumWLinearFour6n4n6n4n,2.)-dSumWQuadraticFour6n4n6n4n),0.5),2.)
9669 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4)
9670 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9671 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,6))
9672 - f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(6))
9673 / (dSumWLinearTwo4n4n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9674 - 2.*f2pCorrelations->GetBinContent(6)
9675 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9676 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,35))
9677 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(21))
9678 / (dSumWLinearTwo4n4n*dSumWLinearFour6n4n6n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9679 - 2.*f2pCorrelations->GetBinContent(4)
9680 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9681 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,35))
9682 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(21))
9683 / (dSumWLinearTwo6n6n*dSumWLinearFour6n4n6n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9684 if(dError>0.)
9685 {
9686 f4pCumulants->SetBinError(21,pow(dError,0.5));
9687 }
9688 } // end of if(...)
9689 } // end of {
9690 // <4>_{6n,5n|6n,5n}
e1d101a6 9691 f4pCumulants->SetBinContent(22,f4pCorrelations->GetBinContent(22)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5));
c10259fb 9692 {
9693 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9694 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9695 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9696 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9697 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9698 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9699 Double_t dSumWLinearFour6n5n6n5n = 0.; // sum of linear event weights for <4>
9700 Double_t dSumWQuadraticFour6n5n6n5n = 0.; // sum of quadratic event weights <4>
9701 Double_t dSpreadFour6n5n6n5n = 0.; // weighted and biased estimator for sigma of <4>
9702 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9703 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9704 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9705 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9706 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9707 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9708 dSumWLinearFour6n5n6n5n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9709 dSumWQuadraticFour6n5n6n5n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9710 dSpreadFour6n5n6n5n = f4pCorrelations->GetBinError(22);
9711 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9712 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9713 pow(dSumWLinearFour6n5n6n5n,2.)>dSumWQuadraticFour6n5n6n5n)
9714 {
9715 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9716 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9717 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9718 + pow(f2pCorrelations->GetBinContent(5),2.)
9719 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9720 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9721 + pow((pow(dSumWQuadraticFour6n5n6n5n,0.5)/dSumWLinearFour6n5n6n5n)
9722 * dSpreadFour6n5n6n5n*pow(pow(dSumWLinearFour6n5n6n5n,2.)/(pow(dSumWLinearFour6n5n6n5n,2.)-dSumWQuadraticFour6n5n6n5n),0.5),2.)
9723 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5)
9724 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9725 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,6))
9726 - f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6))
9727 / (dSumWLinearTwo5n5n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9728 - 2.*f2pCorrelations->GetBinContent(6)
9729 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9730 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,36))
9731 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(22))
9732 / (dSumWLinearTwo5n5n*dSumWLinearFour6n5n6n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9733 - 2.*f2pCorrelations->GetBinContent(5)
9734 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9735 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,36))
9736 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(22))
9737 / (dSumWLinearTwo6n6n*dSumWLinearFour6n5n6n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9738 if(dError>0.)
9739 {
9740 f4pCumulants->SetBinError(22,pow(dError,0.5));
9741 }
9742 } // end of if(...)
9743 } // end of {
9744
e1d101a6 9745 // c3) "Two distinct harmonics":
9746 for(Int_t b=24;b<=25;b++)
9747 {
9748 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9749 Double_t dSumWLinear = 0.; // sum of linear event weights
9750 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9751 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9752 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9753 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9754 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9755 dSpread = f4pCorrelations->GetBinError(b);
9756 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9757 {
9758 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9759 f4pCumulants->SetBinError(b,dError);
9760 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9761 } // end of for(Int_t b=24;b<=25;b++)
9762 // c4) "Three distinct harmonics":
9763 for(Int_t b=27;b<=36;b++)
9764 {
9765 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9766 Double_t dSumWLinear = 0.; // sum of linear event weights
9767 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9768 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9769 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9770 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9771 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9772 dSpread = f4pCorrelations->GetBinError(b);
9773 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9774 {
9775 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9776 f4pCumulants->SetBinError(b,dError);
9777 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9778 } // end of for(Int_t b=27;b<=36;b++)
9779 // c5) "Four distinct harmonics":
9780 for(Int_t b=38;b<=45;b++)
9781 {
9782 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9783 Double_t dSumWLinear = 0.; // sum of linear event weights
9784 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9785 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9786 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9787 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9788 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9789 dSpread = f4pCorrelations->GetBinError(b);
9790 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9791 {
9792 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9793 f4pCumulants->SetBinError(b,dError);
9794 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9795 } // end of for(Int_t b=38;b<=45;b++)
9796
9797 // d) Calculate 5-p cumulants:
9798 // d1) "Standard candles":
9799 f5pCumulants->SetBinContent(1,f5pCorrelations->GetBinContent(1)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3));
c10259fb 9800 {
9801 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9802 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9803 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9804 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
9805 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
9806 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
9807 Double_t dSumWLinearFive3n2n3n1n1n = 0.; // sum of linear event weights for <4>
9808 Double_t dSumWQuadraticFive3n2n3n1n1n = 0.; // sum of quadratic event weights <4>
9809 Double_t dSpreadFive3n2n3n1n1n = 0.; // weighted and biased estimator for sigma of <4>
9810 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9811 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9812 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9813 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9814 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9815 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
9816 dSumWLinearFive3n2n3n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9817 dSumWQuadraticFive3n2n3n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9818 dSpreadFive3n2n3n1n1n = f5pCorrelations->GetBinError(1);
9819 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9820 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
9821 pow(dSumWLinearFive3n2n3n1n1n,2.)>dSumWQuadraticFive3n2n3n1n1n)
9822 {
9823 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
9824 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9825 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9826 + pow(f2pCorrelations->GetBinContent(3),2.)
9827 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
9828 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
9829 + pow((pow(dSumWQuadraticFive3n2n3n1n1n,0.5)/dSumWLinearFive3n2n3n1n1n)
9830 * dSpreadFive3n2n3n1n1n*pow(pow(dSumWLinearFive3n2n3n1n1n,2.)/(pow(dSumWLinearFive3n2n3n1n1n,2.)-dSumWQuadraticFive3n2n3n1n1n),0.5),2.)
9831 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3)
9832 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9833 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,7))
9834 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(1))
9835 / (dSumWLinearTwo3n3n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9836 - 2.*f3pCorrelations->GetBinContent(1)
9837 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9838 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,57))
9839 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(1))
9840 / (dSumWLinearTwo3n3n*dSumWLinearFive3n2n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9841 - 2.*f2pCorrelations->GetBinContent(3)
9842 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9843 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,57))
9844 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(1))
9845 / (dSumWLinearThree2n1n1n*dSumWLinearFive3n2n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9846 if(dError>0.)
9847 {
9848 f5pCumulants->SetBinError(1,pow(dError,0.5));
9849 }
9850 } // end of if(...)
9851 } // end of {
9852
e1d101a6 9853 f5pCumulants->SetBinContent(2,f5pCorrelations->GetBinContent(2)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1));
c10259fb 9854 {
9855 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9856 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9857 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9858 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
9859 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
9860 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
9861 Double_t dSumWLinearFive4n1n2n2n1n = 0.; // sum of linear event weights for <4>
9862 Double_t dSumWQuadraticFive4n1n2n2n1n = 0.; // sum of quadratic event weights <4>
9863 Double_t dSpreadFive4n1n2n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9864 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9865 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9866 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9867 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9868 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9869 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
9870 dSumWLinearFive4n1n2n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9871 dSumWQuadraticFive4n1n2n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9872 dSpreadFive4n1n2n2n1n = f5pCorrelations->GetBinError(2);
9873 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9874 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
9875 pow(dSumWLinearFive4n1n2n2n1n,2.)>dSumWQuadraticFive4n1n2n2n1n)
9876 {
9877 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
9878 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9879 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9880 + pow(f2pCorrelations->GetBinContent(1),2.)
9881 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
9882 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
9883 + pow((pow(dSumWQuadraticFive4n1n2n2n1n,0.5)/dSumWLinearFive4n1n2n2n1n)
9884 * dSpreadFive4n1n2n2n1n*pow(pow(dSumWLinearFive4n1n2n2n1n,2.)/(pow(dSumWLinearFive4n1n2n2n1n,2.)-dSumWQuadraticFive4n1n2n2n1n),0.5),2.)
9885 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1)
9886 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9887 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,8))
9888 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(2))
9889 / (dSumWLinearTwo1n1n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9890 - 2.*f3pCorrelations->GetBinContent(2)
9891 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9892 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,58))
9893 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(2))
9894 / (dSumWLinearTwo1n1n*dSumWLinearFive4n1n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9895 - 2.*f2pCorrelations->GetBinContent(1)
9896 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9897 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,58))
9898 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(2))
9899 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n1n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9900 if(dError>0.)
9901 {
9902 f5pCumulants->SetBinError(2,pow(dError,0.5));
9903 }
9904 } // end of if(...)
9905 } // end of {
e1d101a6 9906 f5pCumulants->SetBinContent(3,f5pCorrelations->GetBinContent(3)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2));
c10259fb 9907 {
9908 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9909 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9910 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9911 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
9912 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
9913 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
9914 Double_t dSumWLinearFive4n2n3n2n1n = 0.; // sum of linear event weights for <4>
9915 Double_t dSumWQuadraticFive4n2n3n2n1n = 0.; // sum of quadratic event weights <4>
9916 Double_t dSpreadFive4n2n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9917 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9918 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9919 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9920 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9921 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9922 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
9923 dSumWLinearFive4n2n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9924 dSumWQuadraticFive4n2n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9925 dSpreadFive4n2n3n2n1n = f5pCorrelations->GetBinError(3);
9926 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9927 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
9928 pow(dSumWLinearFive4n2n3n2n1n,2.)>dSumWQuadraticFive4n2n3n2n1n)
9929 {
9930 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
9931 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9932 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9933 + pow(f2pCorrelations->GetBinContent(2),2.)
9934 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
9935 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
9936 + pow((pow(dSumWQuadraticFive4n2n3n2n1n,0.5)/dSumWLinearFive4n2n3n2n1n)
9937 * dSpreadFive4n2n3n2n1n*pow(pow(dSumWLinearFive4n2n3n2n1n,2.)/(pow(dSumWLinearFive4n2n3n2n1n,2.)-dSumWQuadraticFive4n2n3n2n1n),0.5),2.)
9938 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2)
9939 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9940 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,11))
9941 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(6))
9942 / (dSumWLinearTwo2n2n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9943 - 2.*f3pCorrelations->GetBinContent(6)
9944 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9945 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,59))
9946 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(3))
9947 / (dSumWLinearTwo2n2n*dSumWLinearFive4n2n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9948 - 2.*f2pCorrelations->GetBinContent(2)
9949 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9950 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,59))
9951 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(3))
9952 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n2n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9953 if(dError>0.)
9954 {
9955 f5pCumulants->SetBinError(3,pow(dError,0.5));
9956 }
9957 } // end of if(...)
9958 } // end of {
e1d101a6 9959 f5pCumulants->SetBinContent(4,f5pCorrelations->GetBinContent(4)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3));
c10259fb 9960 {
9961 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9962 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9963 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9964 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
9965 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
9966 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
9967 Double_t dSumWLinearFive4n3n3n2n2n = 0.; // sum of linear event weights for <4>
9968 Double_t dSumWQuadraticFive4n3n3n2n2n = 0.; // sum of quadratic event weights <4>
9969 Double_t dSpreadFive4n3n3n2n2n = 0.; // weighted and biased estimator for sigma of <4>
9970 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9971 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9972 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9973 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9974 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9975 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
9976 dSumWLinearFive4n3n3n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9977 dSumWQuadraticFive4n3n3n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9978 dSpreadFive4n3n3n2n2n = f5pCorrelations->GetBinError(4);
9979 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9980 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
9981 pow(dSumWLinearFive4n3n3n2n2n,2.)>dSumWQuadraticFive4n3n3n2n2n)
9982 {
9983 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
9984 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9985 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9986 + pow(f2pCorrelations->GetBinContent(3),2.)
9987 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
9988 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
9989 + pow((pow(dSumWQuadraticFive4n3n3n2n2n,0.5)/dSumWLinearFive4n3n3n2n2n)
9990 * dSpreadFive4n3n3n2n2n*pow(pow(dSumWLinearFive4n3n3n2n2n,2.)/(pow(dSumWLinearFive4n3n3n2n2n,2.)-dSumWQuadraticFive4n3n3n2n2n),0.5),2.)
9991 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3)
9992 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9993 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,8))
9994 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(2))
9995 / (dSumWLinearTwo3n3n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9996 - 2.*f3pCorrelations->GetBinContent(2)
9997 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9998 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,60))
9999 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(4))
10000 / (dSumWLinearTwo3n3n*dSumWLinearFive4n3n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10001 - 2.*f2pCorrelations->GetBinContent(3)
10002 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10003 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,60))
10004 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(4))
10005 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n3n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10006 if(dError>0.)
10007 {
10008 f5pCumulants->SetBinError(4,pow(dError,0.5));
10009 }
10010 } // end of if(...)
10011 } // end of {
e1d101a6 10012 f5pCumulants->SetBinContent(5,f5pCorrelations->GetBinContent(5)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4));
c10259fb 10013 {
10014 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10015 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10016 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10017 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
10018 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
10019 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
10020 Double_t dSumWLinearFive4n2n4n1n1n = 0.; // sum of linear event weights for <4>
10021 Double_t dSumWQuadraticFive4n2n4n1n1n = 0.; // sum of quadratic event weights <4>
10022 Double_t dSpreadFive4n2n4n1n1n = 0.; // weighted and biased estimator for sigma of <4>
10023 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10024 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10025 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10026 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10027 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10028 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
10029 dSumWLinearFive4n2n4n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10030 dSumWQuadraticFive4n2n4n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10031 dSpreadFive4n2n4n1n1n = f5pCorrelations->GetBinError(5);
10032 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10033 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
10034 pow(dSumWLinearFive4n2n4n1n1n,2.)>dSumWQuadraticFive4n2n4n1n1n)
10035 {
10036 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
10037 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10038 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10039 + pow(f2pCorrelations->GetBinContent(4),2.)
10040 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
10041 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
10042 + pow((pow(dSumWQuadraticFive4n2n4n1n1n,0.5)/dSumWLinearFive4n2n4n1n1n)
10043 * dSpreadFive4n2n4n1n1n*pow(pow(dSumWLinearFive4n2n4n1n1n,2.)/(pow(dSumWLinearFive4n2n4n1n1n,2.)-dSumWQuadraticFive4n2n4n1n1n),0.5),2.)
10044 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4)
10045 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10046 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,7))
10047 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(1))
10048 / (dSumWLinearTwo4n4n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10049 - 2.*f3pCorrelations->GetBinContent(1)
10050 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10051 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,61))
10052 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(5))
10053 / (dSumWLinearTwo4n4n*dSumWLinearFive4n2n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10054 - 2.*f2pCorrelations->GetBinContent(4)
10055 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10056 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,61))
10057 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(5))
10058 / (dSumWLinearThree2n1n1n*dSumWLinearFive4n2n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10059 if(dError>0.)
10060 {
10061 f5pCumulants->SetBinError(5,pow(dError,0.5));
10062 }
10063 } // end of if(...)
10064 } // end of {
e1d101a6 10065 f5pCumulants->SetBinContent(6,f5pCorrelations->GetBinContent(6)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4));
c10259fb 10066 {
10067 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10068 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10069 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10070 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
10071 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
10072 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
10073 Double_t dSumWLinearFive4n3n4n2n1n = 0.; // sum of linear event weights for <4>
10074 Double_t dSumWQuadraticFive4n3n4n2n1n = 0.; // sum of quadratic event weights <4>
10075 Double_t dSpreadFive4n3n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10076 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10077 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10078 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10079 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10080 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10081 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
10082 dSumWLinearFive4n3n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10083 dSumWQuadraticFive4n3n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10084 dSpreadFive4n3n4n2n1n = f5pCorrelations->GetBinError(6);
10085 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10086 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
10087 pow(dSumWLinearFive4n3n4n2n1n,2.)>dSumWQuadraticFive4n3n4n2n1n)
10088 {
10089 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
10090 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10091 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10092 + pow(f2pCorrelations->GetBinContent(4),2.)
10093 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
10094 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
10095 + pow((pow(dSumWQuadraticFive4n3n4n2n1n,0.5)/dSumWLinearFive4n3n4n2n1n)
10096 * dSpreadFive4n3n4n2n1n*pow(pow(dSumWLinearFive4n3n4n2n1n,2.)/(pow(dSumWLinearFive4n3n4n2n1n,2.)-dSumWQuadraticFive4n3n4n2n1n),0.5),2.)
10097 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4)
10098 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10099 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,10))
10100 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(5))
10101 / (dSumWLinearTwo4n4n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10102 - 2.*f3pCorrelations->GetBinContent(5)
10103 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10104 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,62))
10105 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(6))
10106 / (dSumWLinearTwo4n4n*dSumWLinearFive4n3n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10107 - 2.*f2pCorrelations->GetBinContent(4)
10108 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10109 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,62))
10110 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(6))
10111 / (dSumWLinearThree3n2n1n*dSumWLinearFive4n3n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10112 if(dError>0.)
10113 {
10114 f5pCumulants->SetBinError(6,pow(dError,0.5));
10115 }
10116 } // end of if(...)
10117 } // end of {
e1d101a6 10118 f5pCumulants->SetBinContent(7,f5pCorrelations->GetBinContent(7)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(1));
c10259fb 10119 {
10120 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10121 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10122 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10123 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
10124 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
10125 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
10126 Double_t dSumWLinearFive5n1n3n2n1n = 0.; // sum of linear event weights for <4>
10127 Double_t dSumWQuadraticFive5n1n3n2n1n = 0.; // sum of quadratic event weights <4>
10128 Double_t dSpreadFive5n1n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10129 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10130 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10131 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10132 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10133 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10134 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
10135 dSumWLinearFive5n1n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10136 dSumWQuadraticFive5n1n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10137 dSpreadFive5n1n3n2n1n = f5pCorrelations->GetBinError(7);
10138 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10139 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
10140 pow(dSumWLinearFive5n1n3n2n1n,2.)>dSumWQuadraticFive5n1n3n2n1n)
10141 {
10142 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
10143 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10144 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10145 + pow(f2pCorrelations->GetBinContent(1),2.)
10146 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
10147 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
10148 + pow((pow(dSumWQuadraticFive5n1n3n2n1n,0.5)/dSumWLinearFive5n1n3n2n1n)
10149 * dSpreadFive5n1n3n2n1n*pow(pow(dSumWLinearFive5n1n3n2n1n,2.)/(pow(dSumWLinearFive5n1n3n2n1n,2.)-dSumWQuadraticFive5n1n3n2n1n),0.5),2.)
10150 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(1)
10151 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10152 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,12))
10153 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(7))
10154 / (dSumWLinearTwo1n1n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10155 - 2.*f3pCorrelations->GetBinContent(7)
10156 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10157 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,63))
10158 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(7))
10159 / (dSumWLinearTwo1n1n*dSumWLinearFive5n1n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10160 - 2.*f2pCorrelations->GetBinContent(1)
10161 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10162 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,63))
10163 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(7))
10164 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n1n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10165 if(dError>0.)
10166 {
10167 f5pCumulants->SetBinError(7,pow(dError,0.5));
10168 }
10169 } // end of if(...)
10170 } // end of {
e1d101a6 10171 f5pCumulants->SetBinContent(8,f5pCorrelations->GetBinContent(8)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5));
c10259fb 10172 {
10173 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10174 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10175 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10176 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
10177 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
10178 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
10179 Double_t dSumWLinearFive5n2n5n1n1n = 0.; // sum of linear event weights for <4>
10180 Double_t dSumWQuadraticFive5n2n5n1n1n = 0.; // sum of quadratic event weights <4>
10181 Double_t dSpreadFive5n2n5n1n1n = 0.; // weighted and biased estimator for sigma of <4>
10182 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10183 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10184 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10185 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10186 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10187 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
10188 dSumWLinearFive5n2n5n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10189 dSumWQuadraticFive5n2n5n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10190 dSpreadFive5n2n5n1n1n = f5pCorrelations->GetBinError(8);
10191 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10192 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
10193 pow(dSumWLinearFive5n2n5n1n1n,2.)>dSumWQuadraticFive5n2n5n1n1n)
10194 {
10195 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
10196 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10197 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10198 + pow(f2pCorrelations->GetBinContent(5),2.)
10199 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
10200 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
10201 + pow((pow(dSumWQuadraticFive5n2n5n1n1n,0.5)/dSumWLinearFive5n2n5n1n1n)
10202 * dSpreadFive5n2n5n1n1n*pow(pow(dSumWLinearFive5n2n5n1n1n,2.)/(pow(dSumWLinearFive5n2n5n1n1n,2.)-dSumWQuadraticFive5n2n5n1n1n),0.5),2.)
10203 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5)
10204 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10205 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,7))
10206 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(1))
10207 / (dSumWLinearTwo5n5n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10208 - 2.*f3pCorrelations->GetBinContent(1)
10209 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10210 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,64))
10211 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(8))
10212 / (dSumWLinearTwo5n5n*dSumWLinearFive5n2n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10213 - 2.*f2pCorrelations->GetBinContent(5)
10214 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10215 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,64))
10216 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(8))
10217 / (dSumWLinearThree2n1n1n*dSumWLinearFive5n2n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10218 if(dError>0.)
10219 {
10220 f5pCumulants->SetBinError(8,pow(dError,0.5));
10221 }
10222 } // end of if(...)
10223 } // end of {
e1d101a6 10224 f5pCumulants->SetBinContent(9,f5pCorrelations->GetBinContent(9)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(2));
c10259fb 10225 {
10226 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10227 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10228 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10229 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
10230 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
10231 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
10232 Double_t dSumWLinearFive5n2n4n2n1n = 0.; // sum of linear event weights for <4>
10233 Double_t dSumWQuadraticFive5n2n4n2n1n = 0.; // sum of quadratic event weights <4>
10234 Double_t dSpreadFive5n2n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10235 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10236 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10237 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10238 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10239 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10240 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
10241 dSumWLinearFive5n2n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10242 dSumWQuadraticFive5n2n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10243 dSpreadFive5n2n4n2n1n = f5pCorrelations->GetBinError(9);
10244 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10245 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
10246 pow(dSumWLinearFive5n2n4n2n1n,2.)>dSumWQuadraticFive5n2n4n2n1n)
10247 {
10248 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
10249 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10250 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10251 + pow(f2pCorrelations->GetBinContent(2),2.)
10252 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
10253 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
10254 + pow((pow(dSumWQuadraticFive5n2n4n2n1n,0.5)/dSumWLinearFive5n2n4n2n1n)
10255 * dSpreadFive5n2n4n2n1n*pow(pow(dSumWLinearFive5n2n4n2n1n,2.)/(pow(dSumWLinearFive5n2n4n2n1n,2.)-dSumWQuadraticFive5n2n4n2n1n),0.5),2.)
10256 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(2)
10257 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10258 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,13))
10259 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(8))
10260 / (dSumWLinearTwo2n2n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10261 - 2.*f3pCorrelations->GetBinContent(8)
10262 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10263 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,65))
10264 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(9))
10265 / (dSumWLinearTwo2n2n*dSumWLinearFive5n2n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10266 - 2.*f2pCorrelations->GetBinContent(2)
10267 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10268 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,65))
10269 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(9))
10270 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n2n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10271 if(dError>0.)
10272 {
10273 f5pCumulants->SetBinError(9,pow(dError,0.5));
10274 }
10275 } // end of if(...)
10276 } // end of {
e1d101a6 10277 f5pCumulants->SetBinContent(10,f5pCorrelations->GetBinContent(10)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(3));
c10259fb 10278 {
10279 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10280 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10281 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10282 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
10283 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
10284 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
10285 Double_t dSumWLinearFive5n3n4n3n1n = 0.; // sum of linear event weights for <4>
10286 Double_t dSumWQuadraticFive5n3n4n3n1n = 0.; // sum of quadratic event weights <4>
10287 Double_t dSpreadFive5n3n4n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10288 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10289 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10290 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10291 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10292 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10293 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
10294 dSumWLinearFive5n3n4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10295 dSumWQuadraticFive5n3n4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10296 dSpreadFive5n3n4n3n1n = f5pCorrelations->GetBinError(10);
10297 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10298 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
10299 pow(dSumWLinearFive5n3n4n3n1n,2.)>dSumWQuadraticFive5n3n4n3n1n)
10300 {
10301 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
10302 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10303 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10304 + pow(f2pCorrelations->GetBinContent(3),2.)
10305 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
10306 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
10307 + pow((pow(dSumWQuadraticFive5n3n4n3n1n,0.5)/dSumWLinearFive5n3n4n3n1n)
10308 * dSpreadFive5n3n4n3n1n*pow(pow(dSumWLinearFive5n3n4n3n1n,2.)/(pow(dSumWLinearFive5n3n4n3n1n,2.)-dSumWQuadraticFive5n3n4n3n1n),0.5),2.)
10309 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(3)
10310 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10311 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,13))
10312 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(8))
10313 / (dSumWLinearTwo3n3n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10314 - 2.*f3pCorrelations->GetBinContent(8)
10315 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10316 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,66))
10317 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(10))
10318 / (dSumWLinearTwo3n3n*dSumWLinearFive5n3n4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10319 - 2.*f2pCorrelations->GetBinContent(3)
10320 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10321 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,66))
10322 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(10))
10323 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n3n4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10324 if(dError>0.)
10325 {
10326 f5pCumulants->SetBinError(10,pow(dError,0.5));
10327 }
10328 } // end of if(...)
10329 } // end of {
e1d101a6 10330 f5pCumulants->SetBinContent(11,f5pCorrelations->GetBinContent(11)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(4));
c10259fb 10331 {
10332 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10333 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10334 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10335 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
10336 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
10337 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
10338 Double_t dSumWLinearFive5n4n4n3n2n = 0.; // sum of linear event weights for <4>
10339 Double_t dSumWQuadraticFive5n4n4n3n2n = 0.; // sum of quadratic event weights <4>
10340 Double_t dSpreadFive5n4n4n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10341 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10342 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10343 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10344 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10345 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10346 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
10347 dSumWLinearFive5n4n4n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10348 dSumWQuadraticFive5n4n4n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10349 dSpreadFive5n4n4n3n2n = f5pCorrelations->GetBinError(11);
10350 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10351 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
10352 pow(dSumWLinearFive5n4n4n3n2n,2.)>dSumWQuadraticFive5n4n4n3n2n)
10353 {
10354 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
10355 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10356 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10357 + pow(f2pCorrelations->GetBinContent(4),2.)
10358 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
10359 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
10360 + pow((pow(dSumWQuadraticFive5n4n4n3n2n,0.5)/dSumWLinearFive5n4n4n3n2n)
10361 * dSpreadFive5n4n4n3n2n*pow(pow(dSumWLinearFive5n4n4n3n2n,2.)/(pow(dSumWLinearFive5n4n4n3n2n,2.)-dSumWQuadraticFive5n4n4n3n2n),0.5),2.)
10362 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(4)
10363 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10364 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,12))
10365 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(7))
10366 / (dSumWLinearTwo4n4n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10367 - 2.*f3pCorrelations->GetBinContent(7)
10368 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10369 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,67))
10370 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(11))
10371 / (dSumWLinearTwo4n4n*dSumWLinearFive5n4n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10372 - 2.*f2pCorrelations->GetBinContent(4)
10373 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10374 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,67))
10375 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(11))
10376 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n4n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10377 if(dError>0.)
10378 {
10379 f5pCumulants->SetBinError(11,pow(dError,0.5));
10380 }
10381 } // end of if(...)
10382 } // end of {
e1d101a6 10383 f5pCumulants->SetBinContent(12,f5pCorrelations->GetBinContent(12)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(5));
c10259fb 10384 {
10385 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10386 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10387 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10388 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
10389 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
10390 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
10391 Double_t dSumWLinearFive5n3n5n2n1n = 0.; // sum of linear event weights for <4>
10392 Double_t dSumWQuadraticFive5n3n5n2n1n = 0.; // sum of quadratic event weights <4>
10393 Double_t dSpreadFive5n3n5n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10394 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10395 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10396 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10397 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10398 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10399 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
10400 dSumWLinearFive5n3n5n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10401 dSumWQuadraticFive5n3n5n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10402 dSpreadFive5n3n5n2n1n = f5pCorrelations->GetBinError(12);
10403 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10404 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
10405 pow(dSumWLinearFive5n3n5n2n1n,2.)>dSumWQuadraticFive5n3n5n2n1n)
10406 {
10407 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
10408 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10409 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10410 + pow(f2pCorrelations->GetBinContent(5),2.)
10411 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
10412 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
10413 + pow((pow(dSumWQuadraticFive5n3n5n2n1n,0.5)/dSumWLinearFive5n3n5n2n1n)
10414 * dSpreadFive5n3n5n2n1n*pow(pow(dSumWLinearFive5n3n5n2n1n,2.)/(pow(dSumWLinearFive5n3n5n2n1n,2.)-dSumWQuadraticFive5n3n5n2n1n),0.5),2.)
10415 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(5)
10416 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10417 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,10))
10418 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(5))
10419 / (dSumWLinearTwo5n5n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10420 - 2.*f3pCorrelations->GetBinContent(5)
10421 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10422 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,68))
10423 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(12))
10424 / (dSumWLinearTwo5n5n*dSumWLinearFive5n3n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10425 - 2.*f2pCorrelations->GetBinContent(5)
10426 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10427 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,68))
10428 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(12))
10429 / (dSumWLinearThree3n2n1n*dSumWLinearFive5n3n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10430 if(dError>0.)
10431 {
10432 f5pCumulants->SetBinError(12,pow(dError,0.5));
10433 }
10434 } // end of if(...)
10435 } // end of {
e1d101a6 10436 f5pCumulants->SetBinContent(13,f5pCorrelations->GetBinContent(13)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5));
c10259fb 10437 {
10438 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10439 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10440 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10441 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
10442 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
10443 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
10444 Double_t dSumWLinearFive5n4n5n2n2n = 0.; // sum of linear event weights for <4>
10445 Double_t dSumWQuadraticFive5n4n5n2n2n = 0.; // sum of quadratic event weights <4>
10446 Double_t dSpreadFive5n4n5n2n2n = 0.; // weighted and biased estimator for sigma of <4>
10447 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10448 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10449 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10450 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10451 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10452 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
10453 dSumWLinearFive5n4n5n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10454 dSumWQuadraticFive5n4n5n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10455 dSpreadFive5n4n5n2n2n = f5pCorrelations->GetBinError(13);
10456 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10457 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
10458 pow(dSumWLinearFive5n4n5n2n2n,2.)>dSumWQuadraticFive5n4n5n2n2n)
10459 {
10460 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
10461 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10462 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10463 + pow(f2pCorrelations->GetBinContent(5),2.)
10464 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
10465 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
10466 + pow((pow(dSumWQuadraticFive5n4n5n2n2n,0.5)/dSumWLinearFive5n4n5n2n2n)
10467 * dSpreadFive5n4n5n2n2n*pow(pow(dSumWLinearFive5n4n5n2n2n,2.)/(pow(dSumWLinearFive5n4n5n2n2n,2.)-dSumWQuadraticFive5n4n5n2n2n),0.5),2.)
10468 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5)
10469 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10470 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,8))
10471 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(2))
10472 / (dSumWLinearTwo5n5n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10473 - 2.*f3pCorrelations->GetBinContent(2)
10474 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10475 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,69))
10476 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(13))
10477 / (dSumWLinearTwo5n5n*dSumWLinearFive5n4n5n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10478 - 2.*f2pCorrelations->GetBinContent(5)
10479 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10480 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,69))
10481 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(13))
10482 / (dSumWLinearThree4n2n2n*dSumWLinearFive5n4n5n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10483 if(dError>0.)
10484 {
10485 f5pCumulants->SetBinError(13,pow(dError,0.5));
10486 }
10487 } // end of if(...)
10488 } // end of {
e1d101a6 10489 f5pCumulants->SetBinContent(14,f5pCorrelations->GetBinContent(14)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5));
c10259fb 10490 {
10491 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10492 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10493 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10494 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
10495 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
10496 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
10497 Double_t dSumWLinearFive5n4n5n3n1n = 0.; // sum of linear event weights for <4>
10498 Double_t dSumWQuadraticFive5n4n5n3n1n = 0.; // sum of quadratic event weights <4>
10499 Double_t dSpreadFive5n4n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10500 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10501 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10502 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10503 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10504 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10505 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
10506 dSumWLinearFive5n4n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10507 dSumWQuadraticFive5n4n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10508 dSpreadFive5n4n5n3n1n = f5pCorrelations->GetBinError(14);
10509 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10510 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
10511 pow(dSumWLinearFive5n4n5n3n1n,2.)>dSumWQuadraticFive5n4n5n3n1n)
10512 {
10513 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
10514 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10515 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10516 + pow(f2pCorrelations->GetBinContent(5),2.)
10517 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
10518 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
10519 + pow((pow(dSumWQuadraticFive5n4n5n3n1n,0.5)/dSumWLinearFive5n4n5n3n1n)
10520 * dSpreadFive5n4n5n3n1n*pow(pow(dSumWLinearFive5n4n5n3n1n,2.)/(pow(dSumWLinearFive5n4n5n3n1n,2.)-dSumWQuadraticFive5n4n5n3n1n),0.5),2.)
10521 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5)
10522 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10523 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,11))
10524 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(6))
10525 / (dSumWLinearTwo5n5n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10526 - 2.*f3pCorrelations->GetBinContent(6)
10527 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10528 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,70))
10529 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(14))
10530 / (dSumWLinearTwo5n5n*dSumWLinearFive5n4n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10531 - 2.*f2pCorrelations->GetBinContent(5)
10532 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10533 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,70))
10534 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(14))
10535 / (dSumWLinearThree4n3n1n*dSumWLinearFive5n4n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10536 if(dError>0.)
10537 {
10538 f5pCumulants->SetBinError(14,pow(dError,0.5));
10539 }
10540 } // end of if(...)
10541 } // end of {
e1d101a6 10542 f5pCumulants->SetBinContent(15,f5pCorrelations->GetBinContent(15)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1));
c10259fb 10543 {
10544 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10545 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10546 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10547 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10548 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10549 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10550 Double_t dSumWLinearFive6n1n3n3n1n = 0.; // sum of linear event weights for <4>
10551 Double_t dSumWQuadraticFive6n1n3n3n1n = 0.; // sum of quadratic event weights <4>
10552 Double_t dSpreadFive6n1n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10553 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10554 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10555 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10556 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10557 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10558 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10559 dSumWLinearFive6n1n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10560 dSumWQuadraticFive6n1n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10561 dSpreadFive6n1n3n3n1n = f5pCorrelations->GetBinError(15);
10562 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10563 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10564 pow(dSumWLinearFive6n1n3n3n1n,2.)>dSumWQuadraticFive6n1n3n3n1n)
10565 {
10566 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10567 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10568 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10569 + pow(f2pCorrelations->GetBinContent(1),2.)
10570 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10571 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10572 + pow((pow(dSumWQuadraticFive6n1n3n3n1n,0.5)/dSumWLinearFive6n1n3n3n1n)
10573 * dSpreadFive6n1n3n3n1n*pow(pow(dSumWLinearFive6n1n3n3n1n,2.)/(pow(dSumWLinearFive6n1n3n3n1n,2.)-dSumWQuadraticFive6n1n3n3n1n),0.5),2.)
10574 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1)
10575 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10576 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,9))
10577 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(3))
10578 / (dSumWLinearTwo1n1n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10579 - 2.*f3pCorrelations->GetBinContent(3)
10580 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10581 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,71))
10582 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(15))
10583 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10584 - 2.*f2pCorrelations->GetBinContent(1)
10585 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10586 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,71))
10587 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(15))
10588 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n1n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10589 if(dError>0.)
10590 {
10591 f5pCumulants->SetBinError(15,pow(dError,0.5));
10592 }
10593 } // end of if(...)
10594 } // end of {
e1d101a6 10595 f5pCumulants->SetBinContent(16,f5pCorrelations->GetBinContent(16)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2));
c10259fb 10596 {
10597 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10598 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10599 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10600 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10601 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10602 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10603 Double_t dSumWLinearFive6n2n3n3n2n = 0.; // sum of linear event weights for <4>
10604 Double_t dSumWQuadraticFive6n2n3n3n2n = 0.; // sum of quadratic event weights <4>
10605 Double_t dSpreadFive6n2n3n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10606 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10607 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10608 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10609 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10610 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10611 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10612 dSumWLinearFive6n2n3n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10613 dSumWQuadraticFive6n2n3n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10614 dSpreadFive6n2n3n3n2n = f5pCorrelations->GetBinError(16);
10615 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10616 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10617 pow(dSumWLinearFive6n2n3n3n2n,2.)>dSumWQuadraticFive6n2n3n3n2n)
10618 {
10619 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10620 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10621 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10622 + pow(f2pCorrelations->GetBinContent(2),2.)
10623 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10624 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10625 + pow((pow(dSumWQuadraticFive6n2n3n3n2n,0.5)/dSumWLinearFive6n2n3n3n2n)
10626 * dSpreadFive6n2n3n3n2n*pow(pow(dSumWLinearFive6n2n3n3n2n,2.)/(pow(dSumWLinearFive6n2n3n3n2n,2.)-dSumWQuadraticFive6n2n3n3n2n),0.5),2.)
10627 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2)
10628 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10629 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,9))
10630 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(3))
10631 / (dSumWLinearTwo2n2n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10632 - 2.*f3pCorrelations->GetBinContent(3)
10633 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10634 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,72))
10635 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(16))
10636 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10637 - 2.*f2pCorrelations->GetBinContent(2)
10638 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10639 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,72))
10640 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(16))
10641 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n2n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10642 if(dError>0.)
10643 {
10644 f5pCumulants->SetBinError(16,pow(dError,0.5));
10645 }
10646 } // end of if(...)
10647 } // end of {
e1d101a6 10648 f5pCumulants->SetBinContent(17,f5pCorrelations->GetBinContent(17)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(1));
c10259fb 10649 {
10650 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10651 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10652 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10653 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
10654 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
10655 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
10656 Double_t dSumWLinearFive6n1n4n2n1n = 0.; // sum of linear event weights for <4>
10657 Double_t dSumWQuadraticFive6n1n4n2n1n = 0.; // sum of quadratic event weights <4>
10658 Double_t dSpreadFive6n1n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10659 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10660 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10661 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10662 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10663 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10664 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
10665 dSumWLinearFive6n1n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10666 dSumWQuadraticFive6n1n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10667 dSpreadFive6n1n4n2n1n = f5pCorrelations->GetBinError(17);
10668 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10669 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
10670 pow(dSumWLinearFive6n1n4n2n1n,2.)>dSumWQuadraticFive6n1n4n2n1n)
10671 {
10672 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
10673 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10674 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10675 + pow(f2pCorrelations->GetBinContent(1),2.)
10676 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
10677 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
10678 + pow((pow(dSumWQuadraticFive6n1n4n2n1n,0.5)/dSumWLinearFive6n1n4n2n1n)
10679 * dSpreadFive6n1n4n2n1n*pow(pow(dSumWLinearFive6n1n4n2n1n,2.)/(pow(dSumWLinearFive6n1n4n2n1n,2.)-dSumWQuadraticFive6n1n4n2n1n),0.5),2.)
10680 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(1)
10681 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10682 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,14))
10683 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(9))
10684 / (dSumWLinearTwo1n1n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10685 - 2.*f3pCorrelations->GetBinContent(9)
10686 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10687 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,73))
10688 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(17))
10689 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10690 - 2.*f2pCorrelations->GetBinContent(1)
10691 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10692 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,73))
10693 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(17))
10694 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n1n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10695 if(dError>0.)
10696 {
10697 f5pCumulants->SetBinError(17,pow(dError,0.5));
10698 }
10699 } // end of if(...)
10700 } // end of {
e1d101a6 10701 f5pCumulants->SetBinContent(18,f5pCorrelations->GetBinContent(18)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(3));
c10259fb 10702 {
10703 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10704 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10705 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10706 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
10707 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
10708 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
10709 Double_t dSumWLinearFive6n3n4n3n2n = 0.; // sum of linear event weights for <4>
10710 Double_t dSumWQuadraticFive6n3n4n3n2n = 0.; // sum of quadratic event weights <4>
10711 Double_t dSpreadFive6n3n4n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10712 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10713 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10714 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10715 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10716 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10717 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
10718 dSumWLinearFive6n3n4n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10719 dSumWQuadraticFive6n3n4n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10720 dSpreadFive6n3n4n3n2n = f5pCorrelations->GetBinError(18);
10721 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10722 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
10723 pow(dSumWLinearFive6n3n4n3n2n,2.)>dSumWQuadraticFive6n3n4n3n2n)
10724 {
10725 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
10726 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10727 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10728 + pow(f2pCorrelations->GetBinContent(3),2.)
10729 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
10730 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
10731 + pow((pow(dSumWQuadraticFive6n3n4n3n2n,0.5)/dSumWLinearFive6n3n4n3n2n)
10732 * dSpreadFive6n3n4n3n2n*pow(pow(dSumWLinearFive6n3n4n3n2n,2.)/(pow(dSumWLinearFive6n3n4n3n2n,2.)-dSumWQuadraticFive6n3n4n3n2n),0.5),2.)
10733 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(3)
10734 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10735 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,14))
10736 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(9))
10737 / (dSumWLinearTwo3n3n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10738 - 2.*f3pCorrelations->GetBinContent(9)
10739 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10740 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,74))
10741 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(18))
10742 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10743 - 2.*f2pCorrelations->GetBinContent(3)
10744 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10745 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,74))
10746 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(18))
10747 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n3n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10748 if(dError>0.)
10749 {
10750 f5pCumulants->SetBinError(18,pow(dError,0.5));
10751 }
10752 } // end of if(...)
10753 } // end of {
e1d101a6 10754 f5pCumulants->SetBinContent(19,f5pCorrelations->GetBinContent(19)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4));
c10259fb 10755 {
10756 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10757 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10758 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10759 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10760 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10761 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10762 Double_t dSumWLinearFive6n4n4n3n3n = 0.; // sum of linear event weights for <4>
10763 Double_t dSumWQuadraticFive6n4n4n3n3n = 0.; // sum of quadratic event weights <4>
10764 Double_t dSpreadFive6n4n4n3n3n = 0.; // weighted and biased estimator for sigma of <4>
10765 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10766 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10767 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10768 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10769 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10770 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10771 dSumWLinearFive6n4n4n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10772 dSumWQuadraticFive6n4n4n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10773 dSpreadFive6n4n4n3n3n = f5pCorrelations->GetBinError(19);
10774 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10775 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10776 pow(dSumWLinearFive6n4n4n3n3n,2.)>dSumWQuadraticFive6n4n4n3n3n)
10777 {
10778 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10779 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10780 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10781 + pow(f2pCorrelations->GetBinContent(4),2.)
10782 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10783 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10784 + pow((pow(dSumWQuadraticFive6n4n4n3n3n,0.5)/dSumWLinearFive6n4n4n3n3n)
10785 * dSpreadFive6n4n4n3n3n*pow(pow(dSumWLinearFive6n4n4n3n3n,2.)/(pow(dSumWLinearFive6n4n4n3n3n,2.)-dSumWQuadraticFive6n4n4n3n3n),0.5),2.)
10786 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4)
10787 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10788 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,9))
10789 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(3))
10790 / (dSumWLinearTwo4n4n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10791 - 2.*f3pCorrelations->GetBinContent(3)
10792 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10793 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,75))
10794 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(19))
10795 / (dSumWLinearTwo4n4n*dSumWLinearFive6n4n4n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10796 - 2.*f2pCorrelations->GetBinContent(4)
10797 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10798 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,75))
10799 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(19))
10800 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n4n4n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10801 if(dError>0.)
10802 {
10803 f5pCumulants->SetBinError(19,pow(dError,0.5));
10804 }
10805 } // end of if(...)
10806 } // end of {
e1d101a6 10807 f5pCumulants->SetBinContent(20,f5pCorrelations->GetBinContent(20)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(2));
c10259fb 10808 {
10809 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10810 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10811 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10812 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10813 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10814 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10815 Double_t dSumWLinearFive6n2n5n2n1n = 0.; // sum of linear event weights for <4>
10816 Double_t dSumWQuadraticFive6n2n5n2n1n = 0.; // sum of quadratic event weights <4>
10817 Double_t dSpreadFive6n2n5n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10818 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10819 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10820 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10821 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10822 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10823 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10824 dSumWLinearFive6n2n5n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10825 dSumWQuadraticFive6n2n5n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10826 dSpreadFive6n2n5n2n1n = f5pCorrelations->GetBinError(20);
10827 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10828 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10829 pow(dSumWLinearFive6n2n5n2n1n,2.)>dSumWQuadraticFive6n2n5n2n1n)
10830 {
10831 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10832 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10833 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10834 + pow(f2pCorrelations->GetBinContent(2),2.)
10835 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10836 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10837 + pow((pow(dSumWQuadraticFive6n2n5n2n1n,0.5)/dSumWLinearFive6n2n5n2n1n)
10838 * dSpreadFive6n2n5n2n1n*pow(pow(dSumWLinearFive6n2n5n2n1n,2.)/(pow(dSumWLinearFive6n2n5n2n1n,2.)-dSumWQuadraticFive6n2n5n2n1n),0.5),2.)
10839 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(2)
10840 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10841 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,15))
10842 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(10))
10843 / (dSumWLinearTwo2n2n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10844 - 2.*f3pCorrelations->GetBinContent(10)
10845 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10846 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,76))
10847 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(20))
10848 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10849 - 2.*f2pCorrelations->GetBinContent(2)
10850 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10851 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,76))
10852 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(20))
10853 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n2n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10854 if(dError>0.)
10855 {
10856 f5pCumulants->SetBinError(20,pow(dError,0.5));
10857 }
10858 } // end of if(...)
10859 } // end of {
e1d101a6 10860 f5pCumulants->SetBinContent(21,f5pCorrelations->GetBinContent(21)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(3));
c10259fb 10861 {
10862 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10863 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10864 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10865 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10866 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10867 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10868 Double_t dSumWLinearFive6n3n5n3n1n = 0.; // sum of linear event weights for <4>
10869 Double_t dSumWQuadraticFive6n3n5n3n1n = 0.; // sum of quadratic event weights <4>
10870 Double_t dSpreadFive6n3n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10871 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10872 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10873 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10874 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10875 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10876 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10877 dSumWLinearFive6n3n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10878 dSumWQuadraticFive6n3n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10879 dSpreadFive6n3n5n3n1n = f5pCorrelations->GetBinError(21);
10880 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10881 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10882 pow(dSumWLinearFive6n3n5n3n1n,2.)>dSumWQuadraticFive6n3n5n3n1n)
10883 {
10884 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10885 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10886 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10887 + pow(f2pCorrelations->GetBinContent(3),2.)
10888 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10889 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10890 + pow((pow(dSumWQuadraticFive6n3n5n3n1n,0.5)/dSumWLinearFive6n3n5n3n1n)
10891 * dSpreadFive6n3n5n3n1n*pow(pow(dSumWLinearFive6n3n5n3n1n,2.)/(pow(dSumWLinearFive6n3n5n3n1n,2.)-dSumWQuadraticFive6n3n5n3n1n),0.5),2.)
10892 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(3)
10893 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10894 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,15))
10895 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(10))
10896 / (dSumWLinearTwo3n3n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10897 - 2.*f3pCorrelations->GetBinContent(10)
10898 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10899 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,77))
10900 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(21))
10901 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10902 - 2.*f2pCorrelations->GetBinContent(3)
10903 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10904 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,77))
10905 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(21))
10906 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10907 if(dError>0.)
10908 {
10909 f5pCumulants->SetBinError(21,pow(dError,0.5));
10910 }
10911 } // end of if(...)
10912 } // end of {
e1d101a6 10913 f5pCumulants->SetBinContent(22,f5pCorrelations->GetBinContent(22)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(4));
c10259fb 10914 {
10915 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10916 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10917 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10918 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10919 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10920 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10921 Double_t dSumWLinearFive6n3n5n3n1n = 0.; // sum of linear event weights for <4>
10922 Double_t dSumWQuadraticFive6n3n5n3n1n = 0.; // sum of quadratic event weights <4>
10923 Double_t dSpreadFive6n3n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10924 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10925 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10926 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10927 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10928 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10929 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10930 dSumWLinearFive6n3n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10931 dSumWQuadraticFive6n3n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10932 dSpreadFive6n3n5n3n1n = f5pCorrelations->GetBinError(22);
10933 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10934 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10935 pow(dSumWLinearFive6n3n5n3n1n,2.)>dSumWQuadraticFive6n3n5n3n1n)
10936 {
10937 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10938 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10939 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10940 + pow(f2pCorrelations->GetBinContent(4),2.)
10941 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10942 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10943 + pow((pow(dSumWQuadraticFive6n3n5n3n1n,0.5)/dSumWLinearFive6n3n5n3n1n)
10944 * dSpreadFive6n3n5n3n1n*pow(pow(dSumWLinearFive6n3n5n3n1n,2.)/(pow(dSumWLinearFive6n3n5n3n1n,2.)-dSumWQuadraticFive6n3n5n3n1n),0.5),2.)
10945 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(4)
10946 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10947 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,15))
10948 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(10))
10949 / (dSumWLinearTwo4n4n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10950 - 2.*f3pCorrelations->GetBinContent(10)
10951 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10952 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,78))
10953 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(22))
10954 / (dSumWLinearTwo4n4n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10955 - 2.*f2pCorrelations->GetBinContent(4)
10956 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10957 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,78))
10958 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(22))
10959 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10960 if(dError>0.)
10961 {
10962 f5pCumulants->SetBinError(22,pow(dError,0.5));
10963 }
10964 } // end of if(...)
10965 } // end of {
e1d101a6 10966 f5pCumulants->SetBinContent(23,f5pCorrelations->GetBinContent(23)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5));
c10259fb 10967 {
10968 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10969 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10970 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10971 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10972 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10973 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10974 Double_t dSumWLinearFive6n5n5n3n3n = 0.; // sum of linear event weights for <4>
10975 Double_t dSumWQuadraticFive6n5n5n3n3n = 0.; // sum of quadratic event weights <4>
10976 Double_t dSpreadFive6n5n5n3n3n = 0.; // weighted and biased estimator for sigma of <4>
10977 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10978 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10979 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10980 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10981 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10982 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10983 dSumWLinearFive6n5n5n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10984 dSumWQuadraticFive6n5n5n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10985 dSpreadFive6n5n5n3n3n = f5pCorrelations->GetBinError(23);
10986 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10987 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10988 pow(dSumWLinearFive6n5n5n3n3n,2.)>dSumWQuadraticFive6n5n5n3n3n)
10989 {
10990 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10991 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10992 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10993 + pow(f2pCorrelations->GetBinContent(5),2.)
10994 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10995 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10996 + pow((pow(dSumWQuadraticFive6n5n5n3n3n,0.5)/dSumWLinearFive6n5n5n3n3n)
10997 * dSpreadFive6n5n5n3n3n*pow(pow(dSumWLinearFive6n5n5n3n3n,2.)/(pow(dSumWLinearFive6n5n5n3n3n,2.)-dSumWQuadraticFive6n5n5n3n3n),0.5),2.)
10998 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5)
10999 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11000 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,9))
11001 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(3))
11002 / (dSumWLinearTwo5n5n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11003 - 2.*f3pCorrelations->GetBinContent(3)
11004 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11005 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,79))
11006 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(23))
11007 / (dSumWLinearTwo5n5n*dSumWLinearFive6n5n5n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11008 - 2.*f2pCorrelations->GetBinContent(5)
11009 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11010 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,79))
11011 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(23))
11012 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n5n5n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11013 if(dError>0.)
11014 {
11015 f5pCumulants->SetBinError(23,pow(dError,0.5));
11016 }
11017 } // end of if(...)
11018 } // end of {
e1d101a6 11019 f5pCumulants->SetBinContent(24,f5pCorrelations->GetBinContent(24)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6));
c10259fb 11020 {
11021 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11022 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11023 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11024 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11025 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11026 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11027 Double_t dSumWLinearFive6n2n6n1n1n = 0.; // sum of linear event weights for <4>
11028 Double_t dSumWQuadraticFive6n2n6n1n1n = 0.; // sum of quadratic event weights <4>
11029 Double_t dSpreadFive6n2n6n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11030 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11031 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11032 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11033 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11034 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11035 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11036 dSumWLinearFive6n2n6n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11037 dSumWQuadraticFive6n2n6n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11038 dSpreadFive6n2n6n1n1n = f5pCorrelations->GetBinError(24);
11039 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11040 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11041 pow(dSumWLinearFive6n2n6n1n1n,2.)>dSumWQuadraticFive6n2n6n1n1n)
11042 {
11043 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
11044 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11045 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11046 + pow(f2pCorrelations->GetBinContent(6),2.)
11047 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11048 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11049 + pow((pow(dSumWQuadraticFive6n2n6n1n1n,0.5)/dSumWLinearFive6n2n6n1n1n)
11050 * dSpreadFive6n2n6n1n1n*pow(pow(dSumWLinearFive6n2n6n1n1n,2.)/(pow(dSumWLinearFive6n2n6n1n1n,2.)-dSumWQuadraticFive6n2n6n1n1n),0.5),2.)
11051 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6)
11052 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11053 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,7))
11054 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(1))
11055 / (dSumWLinearTwo6n6n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11056 - 2.*f3pCorrelations->GetBinContent(1)
11057 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11058 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,80))
11059 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(24))
11060 / (dSumWLinearTwo6n6n*dSumWLinearFive6n2n6n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11061 - 2.*f2pCorrelations->GetBinContent(6)
11062 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11063 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,80))
11064 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(24))
11065 / (dSumWLinearThree2n1n1n*dSumWLinearFive6n2n6n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11066 if(dError>0.)
11067 {
11068 f5pCumulants->SetBinError(24,pow(dError,0.5));
11069 }
11070 } // end of if(...)
11071 } // end of {
e1d101a6 11072 f5pCumulants->SetBinContent(25,f5pCorrelations->GetBinContent(25)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6));
c10259fb 11073 {
11074 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11075 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11076 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11077 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11078 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11079 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11080 Double_t dSumWLinearFive6n3n6n2n1n = 0.; // sum of linear event weights for <4>
11081 Double_t dSumWQuadraticFive6n3n6n2n1n = 0.; // sum of quadratic event weights <4>
11082 Double_t dSpreadFive6n3n6n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11083 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11084 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11085 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11086 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11087 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11088 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11089 dSumWLinearFive6n3n6n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11090 dSumWQuadraticFive6n3n6n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11091 dSpreadFive6n3n6n2n1n = f5pCorrelations->GetBinError(25);
11092 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11093 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11094 pow(dSumWLinearFive6n3n6n2n1n,2.)>dSumWQuadraticFive6n3n6n2n1n)
11095 {
11096 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
11097 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11098 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11099 + pow(f2pCorrelations->GetBinContent(6),2.)
11100 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11101 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11102 + pow((pow(dSumWQuadraticFive6n3n6n2n1n,0.5)/dSumWLinearFive6n3n6n2n1n)
11103 * dSpreadFive6n3n6n2n1n*pow(pow(dSumWLinearFive6n3n6n2n1n,2.)/(pow(dSumWLinearFive6n3n6n2n1n,2.)-dSumWQuadraticFive6n3n6n2n1n),0.5),2.)
11104 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6)
11105 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11106 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,10))
11107 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(5))
11108 / (dSumWLinearTwo6n6n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11109 - 2.*f3pCorrelations->GetBinContent(5)
11110 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11111 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,81))
11112 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(25))
11113 / (dSumWLinearTwo6n6n*dSumWLinearFive6n3n6n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11114 - 2.*f2pCorrelations->GetBinContent(6)
11115 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11116 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,81))
11117 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(25))
11118 / (dSumWLinearThree3n2n1n*dSumWLinearFive6n3n6n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11119 if(dError>0.)
11120 {
11121 f5pCumulants->SetBinError(25,pow(dError,0.5));
11122 }
11123 } // end of if(...)
11124 } // end of {
e1d101a6 11125 f5pCumulants->SetBinContent(26,f5pCorrelations->GetBinContent(26)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6));
c10259fb 11126 {
11127 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11128 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11129 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11130 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11131 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11132 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11133 Double_t dSumWLinearFive6n4n6n2n2n = 0.; // sum of linear event weights for <4>
11134 Double_t dSumWQuadraticFive6n4n6n2n2n = 0.; // sum of quadratic event weights <4>
11135 Double_t dSpreadFive6n4n6n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11136 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11137 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11138 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11139 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11140 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11141 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11142 dSumWLinearFive6n4n6n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11143 dSumWQuadraticFive6n4n6n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11144 dSpreadFive6n4n6n2n2n = f5pCorrelations->GetBinError(26);
11145 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11146 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11147 pow(dSumWLinearFive6n4n6n2n2n,2.)>dSumWQuadraticFive6n4n6n2n2n)
11148 {
11149 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
11150 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11151 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11152 + pow(f2pCorrelations->GetBinContent(6),2.)
11153 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11154 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11155 + pow((pow(dSumWQuadraticFive6n4n6n2n2n,0.5)/dSumWLinearFive6n4n6n2n2n)
11156 * dSpreadFive6n4n6n2n2n*pow(pow(dSumWLinearFive6n4n6n2n2n,2.)/(pow(dSumWLinearFive6n4n6n2n2n,2.)-dSumWQuadraticFive6n4n6n2n2n),0.5),2.)
11157 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6)
11158 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11159 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,8))
11160 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(2))
11161 / (dSumWLinearTwo6n6n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11162 - 2.*f3pCorrelations->GetBinContent(2)
11163 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11164 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,82))
11165 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(26))
11166 / (dSumWLinearTwo6n6n*dSumWLinearFive6n4n6n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11167 - 2.*f2pCorrelations->GetBinContent(6)
11168 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11169 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,82))
11170 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(26))
11171 / (dSumWLinearThree4n2n2n*dSumWLinearFive6n4n6n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11172 if(dError>0.)
11173 {
11174 f5pCumulants->SetBinError(26,pow(dError,0.5));
11175 }
11176 } // end of if(...)
11177 } // end of {
e1d101a6 11178 f5pCumulants->SetBinContent(27,f5pCorrelations->GetBinContent(27)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(6));
c10259fb 11179 {
11180 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11181 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11182 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11183 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11184 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11185 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11186 Double_t dSumWLinearFive6n4n6n3n1n = 0.; // sum of linear event weights for <4>
11187 Double_t dSumWQuadraticFive6n4n6n3n1n = 0.; // sum of quadratic event weights <4>
11188 Double_t dSpreadFive6n4n6n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11189 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11190 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11191 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11192 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11193 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11194 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11195 dSumWLinearFive6n4n6n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11196 dSumWQuadraticFive6n4n6n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11197 dSpreadFive6n4n6n3n1n = f5pCorrelations->GetBinError(27);
11198 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11199 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11200 pow(dSumWLinearFive6n4n6n3n1n,2.)>dSumWQuadraticFive6n4n6n3n1n)
11201 {
11202 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
11203 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11204 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11205 + pow(f2pCorrelations->GetBinContent(6),2.)
11206 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11207 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11208 + pow((pow(dSumWQuadraticFive6n4n6n3n1n,0.5)/dSumWLinearFive6n4n6n3n1n)
11209 * dSpreadFive6n4n6n3n1n*pow(pow(dSumWLinearFive6n4n6n3n1n,2.)/(pow(dSumWLinearFive6n4n6n3n1n,2.)-dSumWQuadraticFive6n4n6n3n1n),0.5),2.)
11210 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(6)
11211 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11212 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,11))
11213 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(6))
11214 / (dSumWLinearTwo6n6n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11215 - 2.*f3pCorrelations->GetBinContent(6)
11216 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11217 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,83))
11218 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(27))
11219 / (dSumWLinearTwo6n6n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11220 - 2.*f2pCorrelations->GetBinContent(6)
11221 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11222 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,83))
11223 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(27))
11224 / (dSumWLinearThree4n3n1n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11225 if(dError>0.)
11226 {
11227 f5pCumulants->SetBinError(27,pow(dError,0.5));
11228 }
11229 } // end of if(...)
11230 } // end of {
e1d101a6 11231 f5pCumulants->SetBinContent(28,f5pCorrelations->GetBinContent(28)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(5));
c10259fb 11232 {
11233 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
11234 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
11235 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
11236 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
11237 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
11238 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
11239 Double_t dSumWLinearFive6n4n6n3n1n = 0.; // sum of linear event weights for <4>
11240 Double_t dSumWQuadraticFive6n4n6n3n1n = 0.; // sum of quadratic event weights <4>
11241 Double_t dSpreadFive6n4n6n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11242 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11243 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11244 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
11245 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11246 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11247 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
11248 dSumWLinearFive6n4n6n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11249 dSumWQuadraticFive6n4n6n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11250 dSpreadFive6n4n6n3n1n = f5pCorrelations->GetBinError(28);
11251 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
11252 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
11253 pow(dSumWLinearFive6n4n6n3n1n,2.)>dSumWQuadraticFive6n4n6n3n1n)
11254 {
11255 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
11256 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
11257 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
11258 + pow(f2pCorrelations->GetBinContent(5),2.)
11259 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
11260 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
11261 + pow((pow(dSumWQuadraticFive6n4n6n3n1n,0.5)/dSumWLinearFive6n4n6n3n1n)
11262 * dSpreadFive6n4n6n3n1n*pow(pow(dSumWLinearFive6n4n6n3n1n,2.)/(pow(dSumWLinearFive6n4n6n3n1n,2.)-dSumWQuadraticFive6n4n6n3n1n),0.5),2.)
11263 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(5)
11264 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11265 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,14))
11266 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(9))
11267 / (dSumWLinearTwo5n5n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11268 - 2.*f3pCorrelations->GetBinContent(9)
11269 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11270 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,84))
11271 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(28))
11272 / (dSumWLinearTwo5n5n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11273 - 2.*f2pCorrelations->GetBinContent(5)
11274 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11275 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,84))
11276 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(28))
11277 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11278 if(dError>0.)
11279 {
11280 f5pCumulants->SetBinError(28,pow(dError,0.5));
11281 }
11282 } // end of if(...)
11283 } // end of {
e1d101a6 11284 f5pCumulants->SetBinContent(29,f5pCorrelations->GetBinContent(29)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(6));
c10259fb 11285 {
11286 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11287 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11288 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11289 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
11290 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
11291 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
11292 Double_t dSumWLinearFive6n5n6n3n2n = 0.; // sum of linear event weights for <4>
11293 Double_t dSumWQuadraticFive6n5n6n3n2n = 0.; // sum of quadratic event weights <4>
11294 Double_t dSpreadFive6n5n6n3n2n = 0.; // weighted and biased estimator for sigma of <4>
11295 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11296 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11297 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11298 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11299 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11300 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
11301 dSumWLinearFive6n5n6n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11302 dSumWQuadraticFive6n5n6n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11303 dSpreadFive6n5n6n3n2n = f5pCorrelations->GetBinError(29);
11304 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11305 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
11306 pow(dSumWLinearFive6n5n6n3n2n,2.)>dSumWQuadraticFive6n5n6n3n2n)
11307 {
11308 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
11309 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11310 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11311 + pow(f2pCorrelations->GetBinContent(6),2.)
11312 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
11313 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
11314 + pow((pow(dSumWQuadraticFive6n5n6n3n2n,0.5)/dSumWLinearFive6n5n6n3n2n)
11315 * dSpreadFive6n5n6n3n2n*pow(pow(dSumWLinearFive6n5n6n3n2n,2.)/(pow(dSumWLinearFive6n5n6n3n2n,2.)-dSumWQuadraticFive6n5n6n3n2n),0.5),2.)
11316 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(6)
11317 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11318 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,12))
11319 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(7))
11320 / (dSumWLinearTwo6n6n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11321 - 2.*f3pCorrelations->GetBinContent(7)
11322 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11323 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,85))
11324 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(29))
11325 / (dSumWLinearTwo6n6n*dSumWLinearFive6n5n6n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11326 - 2.*f2pCorrelations->GetBinContent(6)
11327 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11328 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,85))
11329 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(29))
11330 / (dSumWLinearThree5n3n2n*dSumWLinearFive6n5n6n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11331 if(dError>0.)
11332 {
11333 f5pCumulants->SetBinError(29,pow(dError,0.5));
11334 }
11335 } // end of if(...)
11336 } // end of {
e1d101a6 11337 f5pCumulants->SetBinContent(30,f5pCorrelations->GetBinContent(30)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(6));
c10259fb 11338 {
11339 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11340 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11341 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11342 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
11343 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
11344 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
11345 Double_t dSumWLinearFive6n5n6n4n1n = 0.; // sum of linear event weights for <4>
11346 Double_t dSumWQuadraticFive6n5n6n4n1n = 0.; // sum of quadratic event weights <4>
11347 Double_t dSpreadFive6n5n6n4n1n = 0.; // weighted and biased estimator for sigma of <4>
11348 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11349 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11350 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11351 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11352 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11353 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
11354 dSumWLinearFive6n5n6n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11355 dSumWQuadraticFive6n5n6n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11356 dSpreadFive6n5n6n4n1n = f5pCorrelations->GetBinError(30);
11357 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11358 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
11359 pow(dSumWLinearFive6n5n6n4n1n,2.)>dSumWQuadraticFive6n5n6n4n1n)
11360 {
11361 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
11362 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11363 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11364 + pow(f2pCorrelations->GetBinContent(6),2.)
11365 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
11366 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
11367 + pow((pow(dSumWQuadraticFive6n5n6n4n1n,0.5)/dSumWLinearFive6n5n6n4n1n)
11368 * dSpreadFive6n5n6n4n1n*pow(pow(dSumWLinearFive6n5n6n4n1n,2.)/(pow(dSumWLinearFive6n5n6n4n1n,2.)-dSumWQuadraticFive6n5n6n4n1n),0.5),2.)
11369 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(6)
11370 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11371 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,13))
11372 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(8))
11373 / (dSumWLinearTwo6n6n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11374 - 2.*f3pCorrelations->GetBinContent(8)
11375 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11376 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,86))
11377 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(30))
11378 / (dSumWLinearTwo6n6n*dSumWLinearFive6n5n6n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11379 - 2.*f2pCorrelations->GetBinContent(6)
11380 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11381 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,86))
11382 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(30))
11383 / (dSumWLinearThree5n4n1n*dSumWLinearFive6n5n6n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11384 if(dError>0.)
11385 {
11386 f5pCumulants->SetBinError(30,pow(dError,0.5));
11387 }
11388 } // end of if(...)
11389 } // end of {
e1d101a6 11390 // d2) "Two distinct harmonics":
11391 f5pCumulants->SetBinContent(32,f5pCorrelations->GetBinContent(32)-3.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(1));
c10259fb 11392 {
11393 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11394 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11395 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11396 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11397 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11398 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11399 Double_t dSumWLinearFive2n1n1n1n1n = 0.; // sum of linear event weights for <4>
11400 Double_t dSumWQuadraticFive2n1n1n1n1n = 0.; // sum of quadratic event weights <4>
11401 Double_t dSpreadFive2n1n1n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11402 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11403 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11404 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11405 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11406 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11407 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11408 dSumWLinearFive2n1n1n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11409 dSumWQuadraticFive2n1n1n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11410 dSpreadFive2n1n1n1n1n = f5pCorrelations->GetBinError(32);
11411 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11412 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11413 pow(dSumWLinearFive2n1n1n1n1n,2.)>dSumWQuadraticFive2n1n1n1n1n)
11414 {
11415 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(1),2.)
11416 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11417 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11418 + 9.*pow(f2pCorrelations->GetBinContent(1),2.)
11419 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11420 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11421 + pow((pow(dSumWQuadraticFive2n1n1n1n1n,0.5)/dSumWLinearFive2n1n1n1n1n)
11422 * dSpreadFive2n1n1n1n1n*pow(pow(dSumWLinearFive2n1n1n1n1n,2.)/(pow(dSumWLinearFive2n1n1n1n1n,2.)-dSumWQuadraticFive2n1n1n1n1n),0.5),2.)
11423 + 9.*2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(1)
11424 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11425 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,7))
11426 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(1))
11427 / (dSumWLinearTwo1n1n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11428 - 3.*2.*f3pCorrelations->GetBinContent(1)
11429 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11430 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,87))
11431 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(32))
11432 / (dSumWLinearTwo1n1n*dSumWLinearFive2n1n1n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11433 - 3.*2.*f2pCorrelations->GetBinContent(1)
11434 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11435 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,87))
11436 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(32))
11437 / (dSumWLinearThree2n1n1n*dSumWLinearFive2n1n1n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11438 if(dError>0.)
11439 {
11440 f5pCumulants->SetBinError(32,pow(dError,0.5));
11441 }
11442 } // end of if(...)
11443 } // end of {
e1d101a6 11444 f5pCumulants->SetBinContent(33,f5pCorrelations->GetBinContent(33)-2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2));
c10259fb 11445 {
11446 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11447 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11448 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11449 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11450 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11451 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11452 Double_t dSumWLinearFive2n2n2n1n1n = 0.; // sum of linear event weights for <4>
11453 Double_t dSumWQuadraticFive2n2n2n1n1n = 0.; // sum of quadratic event weights <4>
11454 Double_t dSpreadFive2n2n2n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11455 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11456 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11457 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11458 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11459 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11460 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11461 dSumWLinearFive2n2n2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11462 dSumWQuadraticFive2n2n2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11463 dSpreadFive2n2n2n1n1n = f5pCorrelations->GetBinError(33);
11464 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11465 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11466 pow(dSumWLinearFive2n2n2n1n1n,2.)>dSumWQuadraticFive2n2n2n1n1n)
11467 {
11468 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(1),2.)
11469 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11470 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11471 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11472 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11473 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11474 + pow((pow(dSumWQuadraticFive2n2n2n1n1n,0.5)/dSumWLinearFive2n2n2n1n1n)
11475 * dSpreadFive2n2n2n1n1n*pow(pow(dSumWLinearFive2n2n2n1n1n,2.)/(pow(dSumWLinearFive2n2n2n1n1n,2.)-dSumWQuadraticFive2n2n2n1n1n),0.5),2.)
11476 + 4.*2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2)
11477 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11478 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,7))
11479 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(1))
11480 / (dSumWLinearTwo2n2n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11481 - 2.*2.*f3pCorrelations->GetBinContent(1)
11482 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11483 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,88))
11484 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(33))
11485 / (dSumWLinearTwo2n2n*dSumWLinearFive2n2n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11486 - 2.*2.*f2pCorrelations->GetBinContent(2)
11487 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11488 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,88))
11489 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(33))
11490 / (dSumWLinearThree2n1n1n*dSumWLinearFive2n2n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11491 if(dError>0.)
11492 {
11493 f5pCumulants->SetBinError(33,pow(dError,0.5));
11494 }
11495 } // end of if(...)
11496 } // end of {
11497 f5pCumulants->SetBinContent(34,f5pCorrelations->GetBinContent(34));
11498 {
11499 Double_t dSumWLinear = 0.; // sum of linear event weights
11500 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11501 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11502 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11503 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11504 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11505 dSpread = f5pCorrelations->GetBinError(34);
11506 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11507 {
11508 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11509 f5pCumulants->SetBinError(34,dError);
11510 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11511 }
11512 f5pCumulants->SetBinContent(35,f5pCorrelations->GetBinContent(35));
11513 {
11514 Double_t dSumWLinear = 0.; // sum of linear event weights
11515 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11516 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11517 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11518 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11519 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11520 dSpread = f5pCorrelations->GetBinError(35);
11521 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11522 {
11523 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11524 f5pCumulants->SetBinError(35,dError);
11525 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11526 }
e1d101a6 11527 f5pCumulants->SetBinContent(36,f5pCorrelations->GetBinContent(36)-3.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(2));
c10259fb 11528 {
11529 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11530 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11531 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11532 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11533 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11534 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11535 Double_t dSumWLinearFive4n2n2n2n2n = 0.; // sum of linear event weights for <4>
11536 Double_t dSumWQuadraticFive4n2n2n2n2n = 0.; // sum of quadratic event weights <4>
11537 Double_t dSpreadFive4n2n2n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11538 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11539 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11540 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11541 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11542 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11543 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11544 dSumWLinearFive4n2n2n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11545 dSumWQuadraticFive4n2n2n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11546 dSpreadFive4n2n2n2n2n = f5pCorrelations->GetBinError(36);
11547 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11548 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11549 pow(dSumWLinearFive4n2n2n2n2n,2.)>dSumWQuadraticFive4n2n2n2n2n)
11550 {
11551 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(2),2.)
11552 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11553 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11554 + 9.*pow(f2pCorrelations->GetBinContent(2),2.)
11555 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11556 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11557 + pow((pow(dSumWQuadraticFive4n2n2n2n2n,0.5)/dSumWLinearFive4n2n2n2n2n)
11558 * dSpreadFive4n2n2n2n2n*pow(pow(dSumWLinearFive4n2n2n2n2n,2.)/(pow(dSumWLinearFive4n2n2n2n2n,2.)-dSumWQuadraticFive4n2n2n2n2n),0.5),2.)
11559 + 9.*2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(2)
11560 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11561 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,8))
11562 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(2))
11563 / (dSumWLinearTwo2n2n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11564 - 3.*2.*f3pCorrelations->GetBinContent(2)
11565 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11566 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,91))
11567 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(36))
11568 / (dSumWLinearTwo2n2n*dSumWLinearFive4n2n2n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11569 - 3.*2.*f2pCorrelations->GetBinContent(2)
11570 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11571 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,91))
11572 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(36))
11573 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n2n2n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11574 if(dError>0.)
11575 {
11576 f5pCumulants->SetBinError(36,pow(dError,0.5));
11577 }
11578 } // end of if(...)
11579 } // end of {
e1d101a6 11580 f5pCumulants->SetBinContent(37,f5pCorrelations->GetBinContent(37)-2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4));
c10259fb 11581 {
11582 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
11583 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
11584 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
11585 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11586 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11587 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11588 Double_t dSumWLinearFive4n4n4n2n2n = 0.; // sum of linear event weights for <4>
11589 Double_t dSumWQuadraticFive4n4n4n2n2n = 0.; // sum of quadratic event weights <4>
11590 Double_t dSpreadFive4n4n4n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11591 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11592 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11593 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
11594 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11595 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11596 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11597 dSumWLinearFive4n4n4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11598 dSumWQuadraticFive4n4n4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11599 dSpreadFive4n4n4n2n2n = f5pCorrelations->GetBinError(37);
11600 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
11601 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11602 pow(dSumWLinearFive4n4n4n2n2n,2.)>dSumWQuadraticFive4n4n4n2n2n)
11603 {
11604 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(2),2.)
11605 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
11606 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
11607 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
11608 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11609 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11610 + pow((pow(dSumWQuadraticFive4n4n4n2n2n,0.5)/dSumWLinearFive4n4n4n2n2n)
11611 * dSpreadFive4n4n4n2n2n*pow(pow(dSumWLinearFive4n4n4n2n2n,2.)/(pow(dSumWLinearFive4n4n4n2n2n,2.)-dSumWQuadraticFive4n4n4n2n2n),0.5),2.)
11612 + 4.*2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4)
11613 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11614 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,8))
11615 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(2))
11616 / (dSumWLinearTwo4n4n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11617 - 2.*2.*f3pCorrelations->GetBinContent(2)
11618 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11619 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,92))
11620 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(37))
11621 / (dSumWLinearTwo4n4n*dSumWLinearFive4n4n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11622 - 2.*2.*f2pCorrelations->GetBinContent(4)
11623 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11624 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,92))
11625 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(37))
11626 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n4n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11627 if(dError>0.)
11628 {
11629 f5pCumulants->SetBinError(37,pow(dError,0.5));
11630 }
11631 } // end of if(...)
11632 } // end of {
e1d101a6 11633 f5pCumulants->SetBinContent(38,f5pCorrelations->GetBinContent(38)-3.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(3));
c10259fb 11634 {
11635 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11636 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11637 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11638 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
11639 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
11640 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
11641 Double_t dSumWLinearFive6n3n3n3n3n = 0.; // sum of linear event weights for <4>
11642 Double_t dSumWQuadraticFive6n3n3n3n3n = 0.; // sum of quadratic event weights <4>
11643 Double_t dSpreadFive6n3n3n3n3n = 0.; // weighted and biased estimator for sigma of <4>
11644 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11645 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11646 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11647 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11648 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11649 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
11650 dSumWLinearFive6n3n3n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11651 dSumWQuadraticFive6n3n3n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11652 dSpreadFive6n3n3n3n3n = f5pCorrelations->GetBinError(38);
11653 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11654 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
11655 pow(dSumWLinearFive6n3n3n3n3n,2.)>dSumWQuadraticFive6n3n3n3n3n)
11656 {
11657 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(3),2.)
11658 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11659 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11660 + 9.*pow(f2pCorrelations->GetBinContent(3),2.)
11661 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
11662 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
11663 + pow((pow(dSumWQuadraticFive6n3n3n3n3n,0.5)/dSumWLinearFive6n3n3n3n3n)
11664 * dSpreadFive6n3n3n3n3n*pow(pow(dSumWLinearFive6n3n3n3n3n,2.)/(pow(dSumWLinearFive6n3n3n3n3n,2.)-dSumWQuadraticFive6n3n3n3n3n),0.5),2.)
11665 + 9.*2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(3)
11666 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11667 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,9))
11668 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(3))
11669 / (dSumWLinearTwo3n3n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11670 - 3.*2.*f3pCorrelations->GetBinContent(3)
11671 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11672 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,93))
11673 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(38))
11674 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n3n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11675 - 3.*2.*f2pCorrelations->GetBinContent(3)
11676 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11677 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,93))
11678 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(38))
11679 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n3n3n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11680 if(dError>0.)
11681 {
11682 f5pCumulants->SetBinError(38,pow(dError,0.5));
11683 }
11684 } // end of if(...)
11685 } // end of {
11686 f5pCumulants->SetBinContent(39,f5pCorrelations->GetBinContent(39));
11687 {
11688 Double_t dSumWLinear = 0.; // sum of linear event weights
11689 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11690 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11691 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11692 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11693 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11694 dSpread = f5pCorrelations->GetBinError(39);
11695 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11696 {
11697 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11698 f5pCumulants->SetBinError(39,dError);
11699 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11700 }
e1d101a6 11701 f5pCumulants->SetBinContent(40,f5pCorrelations->GetBinContent(40)-2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6));
c10259fb 11702 {
11703 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11704 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11705 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11706 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
11707 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
11708 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
11709 Double_t dSumWLinearFive6n6n6n3n3n = 0.; // sum of linear event weights for <4>
11710 Double_t dSumWQuadraticFive6n6n6n3n3n = 0.; // sum of quadratic event weights <4>
11711 Double_t dSpreadFive6n6n6n3n3n = 0.; // weighted and biased estimator for sigma of <4>
11712 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11713 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11714 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11715 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11716 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11717 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
11718 dSumWLinearFive6n6n6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11719 dSumWQuadraticFive6n6n6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11720 dSpreadFive6n6n6n3n3n = f5pCorrelations->GetBinError(40);
11721 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11722 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
11723 pow(dSumWLinearFive6n6n6n3n3n,2.)>dSumWQuadraticFive6n6n6n3n3n)
11724 {
11725 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(3),2.)
11726 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11727 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11728 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
11729 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
11730 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
11731 + pow((pow(dSumWQuadraticFive6n6n6n3n3n,0.5)/dSumWLinearFive6n6n6n3n3n)
11732 * dSpreadFive6n6n6n3n3n*pow(pow(dSumWLinearFive6n6n6n3n3n,2.)/(pow(dSumWLinearFive6n6n6n3n3n,2.)-dSumWQuadraticFive6n6n6n3n3n),0.5),2.)
11733 + 4.*2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6)
11734 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11735 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,9))
11736 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(3))
11737 / (dSumWLinearTwo6n6n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11738 - 2.*2.*f3pCorrelations->GetBinContent(3)
11739 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11740 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,95))
11741 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(40))
11742 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11743 - 2.*2.*f2pCorrelations->GetBinContent(6)
11744 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11745 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,95))
11746 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(40))
11747 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n6n6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11748 if(dError>0.)
11749 {
11750 f5pCumulants->SetBinError(40,pow(dError,0.5));
11751 }
11752 } // end of if(...)
11753 } // end of {
11754
e1d101a6 11755 // d2) "Three distinct harmonics":
11756 f5pCumulants->SetBinContent(42,f5pCorrelations->GetBinContent(42)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1));
c10259fb 11757 {
11758 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11759 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11760 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11761 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11762 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11763 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11764 Double_t dSumWLinearFive3n1n2n1n1n = 0.; // sum of linear event weights for <4>
11765 Double_t dSumWQuadraticFive3n1n2n1n1n = 0.; // sum of quadratic event weights <4>
11766 Double_t dSpreadFive3n1n2n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11767 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11768 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11769 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11770 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11771 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11772 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11773 dSumWLinearFive3n1n2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11774 dSumWQuadraticFive3n1n2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11775 dSpreadFive3n1n2n1n1n = f5pCorrelations->GetBinError(42);
11776 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11777 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11778 pow(dSumWLinearFive3n1n2n1n1n,2.)>dSumWQuadraticFive3n1n2n1n1n)
11779 {
11780 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11781 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11782 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11783 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
11784 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11785 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11786 + pow((pow(dSumWQuadraticFive3n1n2n1n1n,0.5)/dSumWLinearFive3n1n2n1n1n)
11787 * dSpreadFive3n1n2n1n1n*pow(pow(dSumWLinearFive3n1n2n1n1n,2.)/(pow(dSumWLinearFive3n1n2n1n1n,2.)-dSumWQuadraticFive3n1n2n1n1n),0.5),2.)
11788 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)
11789 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11790 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,10))
11791 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(5))
11792 / (dSumWLinearTwo1n1n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11793 - 2.*2.*f3pCorrelations->GetBinContent(5)
11794 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11795 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,96))
11796 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(42))
11797 / (dSumWLinearTwo1n1n*dSumWLinearFive3n1n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11798 - 2.*2.*f2pCorrelations->GetBinContent(1)
11799 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11800 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,96))
11801 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(42))
11802 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n1n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11803 if(dError>0.)
11804 {
11805 f5pCumulants->SetBinError(42,pow(dError,0.5));
11806 }
11807 } // end of if(...)
11808 } // end of {
e1d101a6 11809 f5pCumulants->SetBinContent(43,f5pCorrelations->GetBinContent(43)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2));
c10259fb 11810 {
11811 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11812 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11813 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11814 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11815 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11816 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11817 Double_t dSumWLinearFive3n2n2n2n1n = 0.; // sum of linear event weights for <4>
11818 Double_t dSumWQuadraticFive3n2n2n2n1n = 0.; // sum of quadratic event weights <4>
11819 Double_t dSpreadFive3n2n2n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11820 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11821 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11822 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11823 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11824 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11825 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11826 dSumWLinearFive3n2n2n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11827 dSumWQuadraticFive3n2n2n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11828 dSpreadFive3n2n2n2n1n = f5pCorrelations->GetBinError(43);
11829 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11830 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11831 pow(dSumWLinearFive3n2n2n2n1n,2.)>dSumWQuadraticFive3n2n2n2n1n)
11832 {
11833 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11834 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11835 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11836 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11837 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11838 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11839 + pow((pow(dSumWQuadraticFive3n2n2n2n1n,0.5)/dSumWLinearFive3n2n2n2n1n)
11840 * dSpreadFive3n2n2n2n1n*pow(pow(dSumWLinearFive3n2n2n2n1n,2.)/(pow(dSumWLinearFive3n2n2n2n1n,2.)-dSumWQuadraticFive3n2n2n2n1n),0.5),2.)
11841 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)
11842 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11843 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,10))
11844 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(5))
11845 / (dSumWLinearTwo2n2n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11846 - 2.*2.*f3pCorrelations->GetBinContent(5)
11847 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11848 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,97))
11849 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(43))
11850 / (dSumWLinearTwo2n2n*dSumWLinearFive3n2n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11851 - 2.*2.*f2pCorrelations->GetBinContent(2)
11852 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11853 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,97))
11854 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(43))
11855 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n2n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11856 if(dError>0.)
11857 {
11858 f5pCumulants->SetBinError(43,pow(dError,0.5));
11859 }
11860 } // end of if(...)
11861 } // end of {
e1d101a6 11862 f5pCumulants->SetBinContent(44,f5pCorrelations->GetBinContent(44)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3));
c10259fb 11863 {
11864 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11865 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11866 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11867 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11868 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11869 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11870 Double_t dSumWLinearFive3n3n3n2n1n = 0.; // sum of linear event weights for <4>
11871 Double_t dSumWQuadraticFive3n3n3n2n1n = 0.; // sum of quadratic event weights <4>
11872 Double_t dSpreadFive3n3n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11873 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11874 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11875 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11876 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11877 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11878 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11879 dSumWLinearFive3n3n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11880 dSumWQuadraticFive3n3n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11881 dSpreadFive3n3n3n2n1n = f5pCorrelations->GetBinError(44);
11882 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11883 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11884 pow(dSumWLinearFive3n3n3n2n1n,2.)>dSumWQuadraticFive3n3n3n2n1n)
11885 {
11886 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11887 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11888 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11889 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
11890 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11891 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11892 + pow((pow(dSumWQuadraticFive3n3n3n2n1n,0.5)/dSumWLinearFive3n3n3n2n1n)
11893 * dSpreadFive3n3n3n2n1n*pow(pow(dSumWLinearFive3n3n3n2n1n,2.)/(pow(dSumWLinearFive3n3n3n2n1n,2.)-dSumWQuadraticFive3n3n3n2n1n),0.5),2.)
11894 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)
11895 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11896 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,10))
11897 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(5))
11898 / (dSumWLinearTwo3n3n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11899 - 2.*2.*f3pCorrelations->GetBinContent(5)
11900 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11901 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,98))
11902 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(44))
11903 / (dSumWLinearTwo3n3n*dSumWLinearFive3n3n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11904 - 2.*2.*f2pCorrelations->GetBinContent(3)
11905 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11906 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,98))
11907 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(44))
11908 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n3n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11909 if(dError>0.)
11910 {
11911 f5pCumulants->SetBinError(44,pow(dError,0.5));
11912 }
11913 } // end of if(...)
11914 } // end of {
e1d101a6 11915 f5pCumulants->SetBinContent(45,f5pCorrelations->GetBinContent(45)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1));
c10259fb 11916 {
11917 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11918 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11919 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11920 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11921 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11922 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11923 Double_t dSumWLinearFive4n1n3n1n1n = 0.; // sum of linear event weights for <4>
11924 Double_t dSumWQuadraticFive4n1n3n1n1n = 0.; // sum of quadratic event weights <4>
11925 Double_t dSpreadFive4n1n3n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11926 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11927 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11928 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11929 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11930 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11931 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11932 dSumWLinearFive4n1n3n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11933 dSumWQuadraticFive4n1n3n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11934 dSpreadFive4n1n3n1n1n = f5pCorrelations->GetBinError(45);
11935 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11936 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11937 pow(dSumWLinearFive4n1n3n1n1n,2.)>dSumWQuadraticFive4n1n3n1n1n)
11938 {
11939 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11940 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11941 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11942 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
11943 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11944 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11945 + pow((pow(dSumWQuadraticFive4n1n3n1n1n,0.5)/dSumWLinearFive4n1n3n1n1n)
11946 * dSpreadFive4n1n3n1n1n*pow(pow(dSumWLinearFive4n1n3n1n1n,2.)/(pow(dSumWLinearFive4n1n3n1n1n,2.)-dSumWQuadraticFive4n1n3n1n1n),0.5),2.)
11947 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)
11948 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11949 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,11))
11950 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(6))
11951 / (dSumWLinearTwo1n1n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11952 - 2.*2.*f3pCorrelations->GetBinContent(6)
11953 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11954 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,99))
11955 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(45))
11956 / (dSumWLinearTwo1n1n*dSumWLinearFive4n1n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11957 - 2.*2.*f2pCorrelations->GetBinContent(1)
11958 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11959 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,99))
11960 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(45))
11961 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n1n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11962 if(dError>0.)
11963 {
11964 f5pCumulants->SetBinError(45,pow(dError,0.5));
11965 }
11966 } // end of if(...)
11967 } // end of {
11968 f5pCumulants->SetBinContent(46,f5pCorrelations->GetBinContent(46));
11969 {
11970 Double_t dSumWLinear = 0.; // sum of linear event weights
11971 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11972 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11973 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11974 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11975 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11976 dSpread = f5pCorrelations->GetBinError(46);
11977 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11978 {
11979 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11980 f5pCumulants->SetBinError(46,dError);
11981 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11982 }
e1d101a6 11983 f5pCumulants->SetBinContent(47,f5pCorrelations->GetBinContent(47)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3));
c10259fb 11984 {
11985 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11986 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11987 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11988 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11989 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11990 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11991 Double_t dSumWLinearFive4n3n3n3n1n = 0.; // sum of linear event weights for <4>
11992 Double_t dSumWQuadraticFive4n3n3n3n1n = 0.; // sum of quadratic event weights <4>
11993 Double_t dSpreadFive4n3n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11994 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11995 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11996 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11997 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11998 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11999 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
12000 dSumWLinearFive4n3n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12001 dSumWQuadraticFive4n3n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12002 dSpreadFive4n3n3n3n1n = f5pCorrelations->GetBinError(47);
12003 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
12004 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
12005 pow(dSumWLinearFive4n3n3n3n1n,2.)>dSumWQuadraticFive4n3n3n3n1n)
12006 {
12007 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
12008 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
12009 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
12010 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
12011 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
12012 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
12013 + pow((pow(dSumWQuadraticFive4n3n3n3n1n,0.5)/dSumWLinearFive4n3n3n3n1n)
12014 * dSpreadFive4n3n3n3n1n*pow(pow(dSumWLinearFive4n3n3n3n1n,2.)/(pow(dSumWLinearFive4n3n3n3n1n,2.)-dSumWQuadraticFive4n3n3n3n1n),0.5),2.)
12015 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)
12016 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12017 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,11))
12018 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(6))
12019 / (dSumWLinearTwo3n3n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12020 - 2.*2.*f3pCorrelations->GetBinContent(6)
12021 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12022 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,101))
12023 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(47))
12024 / (dSumWLinearTwo3n3n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12025 - 2.*2.*f2pCorrelations->GetBinContent(3)
12026 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12027 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,101))
12028 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(47))
12029 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12030 if(dError>0.)
12031 {
12032 f5pCumulants->SetBinError(47,pow(dError,0.5));
12033 }
12034 } // end of if(...)
12035 } // end of {
12036 f5pCumulants->SetBinContent(48,f5pCorrelations->GetBinContent(48));
12037 {
12038 Double_t dSumWLinear = 0.; // sum of linear event weights
12039 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12040 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12041 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12042 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12043 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12044 dSpread = f5pCorrelations->GetBinError(48);
12045 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12046 {
12047 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12048 f5pCumulants->SetBinError(48,dError);
12049 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12050 }
e1d101a6 12051 f5pCumulants->SetBinContent(49,f5pCorrelations->GetBinContent(49)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4));
c10259fb 12052 {
12053 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12054 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12055 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12056 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
12057 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
12058 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
12059 Double_t dSumWLinearFive4n3n3n3n1n = 0.; // sum of linear event weights for <4>
12060 Double_t dSumWQuadraticFive4n3n3n3n1n = 0.; // sum of quadratic event weights <4>
12061 Double_t dSpreadFive4n3n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
12062 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12063 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12064 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12065 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12066 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12067 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
12068 dSumWLinearFive4n3n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12069 dSumWQuadraticFive4n3n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12070 dSpreadFive4n3n3n3n1n = f5pCorrelations->GetBinError(49);
12071 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12072 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
12073 pow(dSumWLinearFive4n3n3n3n1n,2.)>dSumWQuadraticFive4n3n3n3n1n)
12074 {
12075 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
12076 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12077 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12078 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12079 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
12080 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
12081 + pow((pow(dSumWQuadraticFive4n3n3n3n1n,0.5)/dSumWLinearFive4n3n3n3n1n)
12082 * dSpreadFive4n3n3n3n1n*pow(pow(dSumWLinearFive4n3n3n3n1n,2.)/(pow(dSumWLinearFive4n3n3n3n1n,2.)-dSumWQuadraticFive4n3n3n3n1n),0.5),2.)
12083 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4)
12084 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12085 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,11))
12086 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(6))
12087 / (dSumWLinearTwo4n4n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12088 - 2.*2.*f3pCorrelations->GetBinContent(6)
12089 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12090 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,103))
12091 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(49))
12092 / (dSumWLinearTwo4n4n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12093 - 2.*2.*f2pCorrelations->GetBinContent(4)
12094 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12095 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,103))
12096 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(49))
12097 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12098 if(dError>0.)
12099 {
12100 f5pCumulants->SetBinError(49,pow(dError,0.5));
12101 }
12102 } // end of if(...)
12103 } // end of {
12104 f5pCumulants->SetBinContent(50,f5pCorrelations->GetBinContent(50));
12105 {
12106 Double_t dSumWLinear = 0.; // sum of linear event weights
12107 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12108 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12109 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12110 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12111 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12112 dSpread = f5pCorrelations->GetBinError(50);
12113 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12114 {
12115 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12116 f5pCumulants->SetBinError(50,dError);
12117 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12118 }
12119 f5pCumulants->SetBinContent(51,f5pCorrelations->GetBinContent(51));
12120 {
12121 Double_t dSumWLinear = 0.; // sum of linear event weights
12122 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12123 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12124 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12125 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12126 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12127 dSpread = f5pCorrelations->GetBinError(51);
12128 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12129 {
12130 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12131 f5pCumulants->SetBinError(51,dError);
12132 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12133 }
e1d101a6 12134 f5pCumulants->SetBinContent(52,f5pCorrelations->GetBinContent(52)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(2));
c10259fb 12135 {
12136 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
12137 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
12138 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
12139 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12140 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12141 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12142 Double_t dSumWLinearFive5n2n3n2n2n = 0.; // sum of linear event weights for <4>
12143 Double_t dSumWQuadraticFive5n2n3n2n2n = 0.; // sum of quadratic event weights <4>
12144 Double_t dSpreadFive5n2n3n2n2n = 0.; // weighted and biased estimator for sigma of <4>
12145 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12146 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12147 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
12148 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12149 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12150 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12151 dSumWLinearFive5n2n3n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12152 dSumWQuadraticFive5n2n3n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12153 dSpreadFive5n2n3n2n2n = f5pCorrelations->GetBinError(52);
12154 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
12155 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12156 pow(dSumWLinearFive5n2n3n2n2n,2.)>dSumWQuadraticFive5n2n3n2n2n)
12157 {
12158 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12159 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
12160 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
12161 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
12162 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12163 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12164 + pow((pow(dSumWQuadraticFive5n2n3n2n2n,0.5)/dSumWLinearFive5n2n3n2n2n)
12165 * dSpreadFive5n2n3n2n2n*pow(pow(dSumWLinearFive5n2n3n2n2n,2.)/(pow(dSumWLinearFive5n2n3n2n2n,2.)-dSumWQuadraticFive5n2n3n2n2n),0.5),2.)
12166 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(2)
12167 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12168 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,12))
12169 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(7))
12170 / (dSumWLinearTwo2n2n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12171 - 2.*2.*f3pCorrelations->GetBinContent(7)
12172 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12173 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,106))
12174 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(52))
12175 / (dSumWLinearTwo2n2n*dSumWLinearFive5n2n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12176 - 2.*2.*f2pCorrelations->GetBinContent(2)
12177 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12178 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,106))
12179 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(52))
12180 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n2n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12181 if(dError>0.)
12182 {
12183 f5pCumulants->SetBinError(52,pow(dError,0.5));
12184 }
12185 } // end of if(...)
12186 } // end of {
e1d101a6 12187 f5pCumulants->SetBinContent(53,f5pCorrelations->GetBinContent(53)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(3));
c10259fb 12188 {
12189 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
12190 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
12191 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
12192 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12193 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12194 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12195 Double_t dSumWLinearFive5n3n3n3n2n = 0.; // sum of linear event weights for <4>
12196 Double_t dSumWQuadraticFive5n3n3n3n2n = 0.; // sum of quadratic event weights <4>
12197 Double_t dSpreadFive5n3n3n3n2n = 0.; // weighted and biased estimator for sigma of <4>
12198 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12199 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12200 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
12201 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12202 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12203 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12204 dSumWLinearFive5n3n3n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12205 dSumWQuadraticFive5n3n3n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12206 dSpreadFive5n3n3n3n2n = f5pCorrelations->GetBinError(53);
12207 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
12208 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12209 pow(dSumWLinearFive5n3n3n3n2n,2.)>dSumWQuadraticFive5n3n3n3n2n)
12210 {
12211 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12212 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
12213 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
12214 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
12215 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12216 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12217 + pow((pow(dSumWQuadraticFive5n3n3n3n2n,0.5)/dSumWLinearFive5n3n3n3n2n)
12218 * dSpreadFive5n3n3n3n2n*pow(pow(dSumWLinearFive5n3n3n3n2n,2.)/(pow(dSumWLinearFive5n3n3n3n2n,2.)-dSumWQuadraticFive5n3n3n3n2n),0.5),2.)
12219 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(3)
12220 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12221 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,12))
12222 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(7))
12223 / (dSumWLinearTwo3n3n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12224 - 2.*2.*f3pCorrelations->GetBinContent(7)
12225 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12226 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,107))
12227 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(53))
12228 / (dSumWLinearTwo3n3n*dSumWLinearFive5n3n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12229 - 2.*2.*f2pCorrelations->GetBinContent(3)
12230 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12231 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,107))
12232 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(53))
12233 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n3n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12234 if(dError>0.)
12235 {
12236 f5pCumulants->SetBinError(53,pow(dError,0.5));
12237 }
12238 } // end of if(...)
12239 } // end of {
12240 f5pCumulants->SetBinContent(54,f5pCorrelations->GetBinContent(54)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(1));
12241 {
12242 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
12243 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
12244 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
12245 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12246 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12247 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12248 Double_t dSumWLinearFive5n1n4n1n1n = 0.; // sum of linear event weights for <4>
12249 Double_t dSumWQuadraticFive5n1n4n1n1n = 0.; // sum of quadratic event weights <4>
12250 Double_t dSpreadFive5n1n4n1n1n = 0.; // weighted and biased estimator for sigma of <4>
12251 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12252 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12253 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
12254 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12255 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12256 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12257 dSumWLinearFive5n1n4n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12258 dSumWQuadraticFive5n1n4n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12259 dSpreadFive5n1n4n1n1n = f5pCorrelations->GetBinError(54);
12260 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
12261 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12262 pow(dSumWLinearFive5n1n4n1n1n,2.)>dSumWQuadraticFive5n1n4n1n1n)
12263 {
12264 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12265 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
12266 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
12267 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
12268 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12269 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12270 + pow((pow(dSumWQuadraticFive5n1n4n1n1n,0.5)/dSumWLinearFive5n1n4n1n1n)
12271 * dSpreadFive5n1n4n1n1n*pow(pow(dSumWLinearFive5n1n4n1n1n,2.)/(pow(dSumWLinearFive5n1n4n1n1n,2.)-dSumWQuadraticFive5n1n4n1n1n),0.5),2.)
12272 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(1)
12273 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12274 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,13))
12275 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(8))
12276 / (dSumWLinearTwo1n1n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12277 - 2.*2.*f3pCorrelations->GetBinContent(8)
12278 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12279 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,108))
12280 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(54))
12281 / (dSumWLinearTwo1n1n*dSumWLinearFive5n1n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12282 - 2.*2.*f2pCorrelations->GetBinContent(1)
12283 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12284 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,108))
12285 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(54))
12286 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n1n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12287 if(dError>0.)
12288 {
12289 f5pCumulants->SetBinError(54,pow(dError,0.5));
12290 }
12291 } // end of if(...)
12292 } // end of {
12293
12294 f5pCumulants->SetBinContent(55,f5pCorrelations->GetBinContent(55));
12295 {
12296 Double_t dSumWLinear = 0.; // sum of linear event weights
12297 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12298 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12299 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12300 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12301 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12302 dSpread = f5pCorrelations->GetBinError(55);
12303 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12304 {
12305 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12306 f5pCumulants->SetBinError(55,dError);
12307 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12308 }
12309 f5pCumulants->SetBinContent(56,f5pCorrelations->GetBinContent(56)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(4));
12310 {
12311 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12312 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12313 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12314 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12315 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12316 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12317 Double_t dSumWLinearFive5n4n4n4n1n = 0.; // sum of linear event weights for <4>
12318 Double_t dSumWQuadraticFive5n4n4n4n1n = 0.; // sum of quadratic event weights <4>
12319 Double_t dSpreadFive5n4n4n4n1n = 0.; // weighted and biased estimator for sigma of <4>
12320 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12321 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12322 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12323 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12324 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12325 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12326 dSumWLinearFive5n4n4n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12327 dSumWQuadraticFive5n4n4n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12328 dSpreadFive5n4n4n4n1n = f5pCorrelations->GetBinError(56);
12329 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12330 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12331 pow(dSumWLinearFive5n4n4n4n1n,2.)>dSumWQuadraticFive5n4n4n4n1n)
12332 {
12333 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12334 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12335 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12336 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12337 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12338 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12339 + pow((pow(dSumWQuadraticFive5n4n4n4n1n,0.5)/dSumWLinearFive5n4n4n4n1n)
12340 * dSpreadFive5n4n4n4n1n*pow(pow(dSumWLinearFive5n4n4n4n1n,2.)/(pow(dSumWLinearFive5n4n4n4n1n,2.)-dSumWQuadraticFive5n4n4n4n1n),0.5),2.)
12341 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(4)
12342 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12343 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,13))
12344 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(8))
12345 / (dSumWLinearTwo4n4n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12346 - 2.*2.*f3pCorrelations->GetBinContent(8)
12347 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12348 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,110))
12349 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(56))
12350 / (dSumWLinearTwo4n4n*dSumWLinearFive5n4n4n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12351 - 2.*2.*f2pCorrelations->GetBinContent(4)
12352 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12353 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,110))
12354 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(56))
12355 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n4n4n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12356 if(dError>0.)
12357 {
12358 f5pCumulants->SetBinError(56,pow(dError,0.5));
12359 }
12360 } // end of if(...)
12361 } // end of {
12362 f5pCumulants->SetBinContent(57,f5pCorrelations->GetBinContent(57));
12363 {
12364 Double_t dSumWLinear = 0.; // sum of linear event weights
12365 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12366 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12367 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12368 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12369 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12370 dSpread = f5pCorrelations->GetBinError(57);
12371 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12372 {
12373 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12374 f5pCumulants->SetBinError(57,dError);
12375 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12376 }
12377 f5pCumulants->SetBinContent(58,f5pCorrelations->GetBinContent(58));
12378 {
12379 Double_t dSumWLinear = 0.; // sum of linear event weights
12380 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12381 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12382 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12383 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12384 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12385 dSpread = f5pCorrelations->GetBinError(58);
12386 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12387 {
12388 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12389 f5pCumulants->SetBinError(58,dError);
12390 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12391 }
e1d101a6 12392 f5pCumulants->SetBinContent(59,f5pCorrelations->GetBinContent(59)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(5));
c10259fb 12393 {
12394 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12395 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12396 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12397 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12398 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12399 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12400 Double_t dSumWLinearFive5n5n5n3n2n = 0.; // sum of linear event weights for <4>
12401 Double_t dSumWQuadraticFive5n5n5n3n2n = 0.; // sum of quadratic event weights <4>
12402 Double_t dSpreadFive5n5n5n3n2n = 0.; // weighted and biased estimator for sigma of <4>
12403 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12404 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12405 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12406 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12407 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12408 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12409 dSumWLinearFive5n5n5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12410 dSumWQuadraticFive5n5n5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12411 dSpreadFive5n5n5n3n2n = f5pCorrelations->GetBinError(59);
12412 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12413 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12414 pow(dSumWLinearFive5n5n5n3n2n,2.)>dSumWQuadraticFive5n5n5n3n2n)
12415 {
12416 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12417 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12418 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12419 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12420 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12421 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12422 + pow((pow(dSumWQuadraticFive5n5n5n3n2n,0.5)/dSumWLinearFive5n5n5n3n2n)
12423 * dSpreadFive5n5n5n3n2n*pow(pow(dSumWLinearFive5n5n5n3n2n,2.)/(pow(dSumWLinearFive5n5n5n3n2n,2.)-dSumWQuadraticFive5n5n5n3n2n),0.5),2.)
12424 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(5)
12425 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12426 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,12))
12427 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(7))
12428 / (dSumWLinearTwo5n5n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12429 - 2.*2.*f3pCorrelations->GetBinContent(7)
12430 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12431 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,113))
12432 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(59))
12433 / (dSumWLinearTwo5n5n*dSumWLinearFive5n5n5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12434 - 2.*2.*f2pCorrelations->GetBinContent(5)
12435 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12436 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,113))
12437 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(59))
12438 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n5n5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12439 if(dError>0.)
12440 {
12441 f5pCumulants->SetBinError(59,pow(dError,0.5));
12442 }
12443 } // end of if(...)
12444 } // end of {
e1d101a6 12445 f5pCumulants->SetBinContent(60,f5pCorrelations->GetBinContent(60)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(5));
c10259fb 12446 {
12447 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12448 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12449 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12450 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12451 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12452 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12453 Double_t dSumWLinearFive5n5n5n4n1n = 0.; // sum of linear event weights for <4>
12454 Double_t dSumWQuadraticFive5n5n5n4n1n = 0.; // sum of quadratic event weights <4>
12455 Double_t dSpreadFive5n5n5n4n1n = 0.; // weighted and biased estimator for sigma of <4>
12456 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12457 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12458 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12459 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12460 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12461 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12462 dSumWLinearFive5n5n5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12463 dSumWQuadraticFive5n5n5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12464 dSpreadFive5n5n5n4n1n = f5pCorrelations->GetBinError(60);
12465 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12466 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12467 pow(dSumWLinearFive5n5n5n4n1n,2.)>dSumWQuadraticFive5n5n5n4n1n)
12468 {
12469 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12470 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12471 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12472 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12473 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12474 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12475 + pow((pow(dSumWQuadraticFive5n5n5n4n1n,0.5)/dSumWLinearFive5n5n5n4n1n)
12476 * dSpreadFive5n5n5n4n1n*pow(pow(dSumWLinearFive5n5n5n4n1n,2.)/(pow(dSumWLinearFive5n5n5n4n1n,2.)-dSumWQuadraticFive5n5n5n4n1n),0.5),2.)
12477 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(5)
12478 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12479 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,13))
12480 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(8))
12481 / (dSumWLinearTwo5n5n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12482 - 2.*2.*f3pCorrelations->GetBinContent(8)
12483 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12484 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,114))
12485 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(60))
12486 / (dSumWLinearTwo5n5n*dSumWLinearFive5n5n5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12487 - 2.*2.*f2pCorrelations->GetBinContent(5)
12488 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12489 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,114))
12490 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(60))
12491 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n5n5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12492 if(dError>0.)
12493 {
12494 f5pCumulants->SetBinError(60,pow(dError,0.5));
12495 }
12496 } // end of if(...)
12497 } // end of {
12498 f5pCumulants->SetBinContent(61,f5pCorrelations->GetBinContent(61));
12499 {
12500 Double_t dSumWLinear = 0.; // sum of linear event weights
12501 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12502 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12503 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12504 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12505 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12506 dSpread = f5pCorrelations->GetBinError(61);
12507 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12508 {
12509 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12510 f5pCumulants->SetBinError(61,dError);
12511 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12512 }
12513 f5pCumulants->SetBinContent(62,f5pCorrelations->GetBinContent(62));
12514 {
12515 Double_t dSumWLinear = 0.; // sum of linear event weights
12516 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12517 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12518 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12519 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12520 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12521 dSpread = f5pCorrelations->GetBinError(62);
12522 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12523 {
12524 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12525 f5pCumulants->SetBinError(62,dError);
12526 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12527 }
12528 f5pCumulants->SetBinContent(63,f5pCorrelations->GetBinContent(63));
12529 {
12530 Double_t dSumWLinear = 0.; // sum of linear event weights
12531 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12532 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12533 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12534 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12535 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12536 dSpread = f5pCorrelations->GetBinError(63);
12537 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12538 {
12539 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12540 f5pCumulants->SetBinError(63,dError);
12541 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12542 }
e1d101a6 12543 f5pCumulants->SetBinContent(64,f5pCorrelations->GetBinContent(64)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(1));
c10259fb 12544 {
12545 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
12546 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
12547 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
12548 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12549 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12550 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12551 Double_t dSumWLinearFive6n1n5n1n1n = 0.; // sum of linear event weights for <4>
12552 Double_t dSumWQuadraticFive6n1n5n1n1n = 0.; // sum of quadratic event weights <4>
12553 Double_t dSpreadFive6n1n5n1n1n = 0.; // weighted and biased estimator for sigma of <4>
12554 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12555 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12556 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
12557 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12558 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12559 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12560 dSumWLinearFive6n1n5n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12561 dSumWQuadraticFive6n1n5n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12562 dSpreadFive6n1n5n1n1n = f5pCorrelations->GetBinError(64);
12563 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
12564 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12565 pow(dSumWLinearFive6n1n5n1n1n,2.)>dSumWQuadraticFive6n1n5n1n1n)
12566 {
12567 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12568 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
12569 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
12570 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
12571 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12572 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12573 + pow((pow(dSumWQuadraticFive6n1n5n1n1n,0.5)/dSumWLinearFive6n1n5n1n1n)
12574 * dSpreadFive6n1n5n1n1n*pow(pow(dSumWLinearFive6n1n5n1n1n,2.)/(pow(dSumWLinearFive6n1n5n1n1n,2.)-dSumWQuadraticFive6n1n5n1n1n),0.5),2.)
12575 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(1)
12576 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12577 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,15))
12578 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(10))
12579 / (dSumWLinearTwo1n1n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12580 - 2.*2.*f3pCorrelations->GetBinContent(10)
12581 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12582 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,118))
12583 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(64))
12584 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12585 - 2.*2.*f2pCorrelations->GetBinContent(1)
12586 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12587 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,118))
12588 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(64))
12589 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n1n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12590 if(dError>0.)
12591 {
12592 f5pCumulants->SetBinError(64,pow(dError,0.5));
12593 }
12594 } // end of if(...)
12595 } // end of {
e1d101a6 12596 f5pCumulants->SetBinContent(65,f5pCorrelations->GetBinContent(65)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(2));
c10259fb 12597 {
12598 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
12599 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
12600 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
12601 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12602 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12603 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12604 Double_t dSumWLinearFive6n2n4n2n2n = 0.; // sum of linear event weights for <4>
12605 Double_t dSumWQuadraticFive6n2n4n2n2n = 0.; // sum of quadratic event weights <4>
12606 Double_t dSpreadFive6n2n4n2n2n = 0.; // weighted and biased estimator for sigma of <4>
12607 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12608 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12609 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
12610 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12611 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12612 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12613 dSumWLinearFive6n2n4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12614 dSumWQuadraticFive6n2n4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12615 dSpreadFive6n2n4n2n2n = f5pCorrelations->GetBinError(65);
12616 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
12617 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12618 pow(dSumWLinearFive6n2n4n2n2n,2.)>dSumWQuadraticFive6n2n4n2n2n)
12619 {
12620 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12621 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
12622 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
12623 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
12624 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12625 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12626 + pow((pow(dSumWQuadraticFive6n2n4n2n2n,0.5)/dSumWLinearFive6n2n4n2n2n)
12627 * dSpreadFive6n2n4n2n2n*pow(pow(dSumWLinearFive6n2n4n2n2n,2.)/(pow(dSumWLinearFive6n2n4n2n2n,2.)-dSumWQuadraticFive6n2n4n2n2n),0.5),2.)
12628 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(2)
12629 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12630 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,14))
12631 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(9))
12632 / (dSumWLinearTwo2n2n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12633 - 2.*2.*f3pCorrelations->GetBinContent(9)
12634 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12635 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,119))
12636 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(65))
12637 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12638 - 2.*2.*f2pCorrelations->GetBinContent(2)
12639 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12640 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,119))
12641 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(65))
12642 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n2n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12643 if(dError>0.)
12644 {
12645 f5pCumulants->SetBinError(65,pow(dError,0.5));
12646 }
12647 } // end of if(...)
12648 } // end of {
12649 f5pCumulants->SetBinContent(66,f5pCorrelations->GetBinContent(66)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(4));
12650 {
12651 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12652 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12653 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12654 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12655 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12656 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12657 Double_t dSumWLinearFive6n4n4n4n2n = 0.; // sum of linear event weights for <4>
12658 Double_t dSumWQuadraticFive6n4n4n4n2n = 0.; // sum of quadratic event weights <4>
12659 Double_t dSpreadFive6n4n4n4n2n = 0.; // weighted and biased estimator for sigma of <4>
12660 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12661 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12662 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12663 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12664 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12665 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12666 dSumWLinearFive6n4n4n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12667 dSumWQuadraticFive6n4n4n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12668 dSpreadFive6n4n4n4n2n = f5pCorrelations->GetBinError(66);
12669 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12670 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12671 pow(dSumWLinearFive6n4n4n4n2n,2.)>dSumWQuadraticFive6n4n4n4n2n)
12672 {
12673 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12674 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12675 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12676 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12677 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12678 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12679 + pow((pow(dSumWQuadraticFive6n4n4n4n2n,0.5)/dSumWLinearFive6n4n4n4n2n)
12680 * dSpreadFive6n4n4n4n2n*pow(pow(dSumWLinearFive6n4n4n4n2n,2.)/(pow(dSumWLinearFive6n4n4n4n2n,2.)-dSumWQuadraticFive6n4n4n4n2n),0.5),2.)
12681 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(4)
12682 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12683 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,14))
12684 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(9))
12685 / (dSumWLinearTwo4n4n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12686 - 2.*2.*f3pCorrelations->GetBinContent(9)
12687 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12688 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,120))
12689 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(66))
12690 / (dSumWLinearTwo4n4n*dSumWLinearFive6n4n4n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12691 - 2.*2.*f2pCorrelations->GetBinContent(4)
12692 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12693 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,120))
12694 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(66))
12695 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n4n4n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12696 if(dError>0.)
12697 {
12698 f5pCumulants->SetBinError(66,pow(dError,0.5));
12699 }
12700 } // end of if(...)
12701 } // end of {
12702 f5pCumulants->SetBinContent(67,f5pCorrelations->GetBinContent(67));
12703 {
12704 Double_t dSumWLinear = 0.; // sum of linear event weights
12705 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12706 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12707 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12708 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12709 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12710 dSpread = f5pCorrelations->GetBinError(67);
12711 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12712 {
12713 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12714 f5pCumulants->SetBinError(67,dError);
12715 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12716 }
e1d101a6 12717 f5pCumulants->SetBinContent(68,f5pCorrelations->GetBinContent(68)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(5));
c10259fb 12718 {
12719 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12720 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12721 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12722 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12723 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12724 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12725 Double_t dSumWLinearFive6n5n5n5n1n = 0.; // sum of linear event weights for <4>
12726 Double_t dSumWQuadraticFive6n5n5n5n1n = 0.; // sum of quadratic event weights <4>
12727 Double_t dSpreadFive6n5n5n5n1n = 0.; // weighted and biased estimator for sigma of <4>
12728 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12729 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12730 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12731 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12732 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12733 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12734 dSumWLinearFive6n5n5n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12735 dSumWQuadraticFive6n5n5n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12736 dSpreadFive6n5n5n5n1n = f5pCorrelations->GetBinError(68);
12737 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12738 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12739 pow(dSumWLinearFive6n5n5n5n1n,2.)>dSumWQuadraticFive6n5n5n5n1n)
12740 {
12741 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12742 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12743 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12744 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12745 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12746 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12747 + pow((pow(dSumWQuadraticFive6n5n5n5n1n,0.5)/dSumWLinearFive6n5n5n5n1n)
12748 * dSpreadFive6n5n5n5n1n*pow(pow(dSumWLinearFive6n5n5n5n1n,2.)/(pow(dSumWLinearFive6n5n5n5n1n,2.)-dSumWQuadraticFive6n5n5n5n1n),0.5),2.)
12749 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(5)
12750 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12751 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,15))
12752 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(10))
12753 / (dSumWLinearTwo5n5n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12754 - 2.*2.*f3pCorrelations->GetBinContent(10)
12755 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12756 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,122))
12757 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(68))
12758 / (dSumWLinearTwo5n5n*dSumWLinearFive6n5n5n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12759 - 2.*2.*f2pCorrelations->GetBinContent(5)
12760 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12761 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,122))
12762 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(68))
12763 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n5n5n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12764 if(dError>0.)
12765 {
12766 f5pCumulants->SetBinError(68,pow(dError,0.5));
12767 }
12768 } // end of if(...)
12769 } // end of {
12770 f5pCumulants->SetBinContent(69,f5pCorrelations->GetBinContent(69));
12771 {
12772 Double_t dSumWLinear = 0.; // sum of linear event weights
12773 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12774 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12775 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12776 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12777 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12778 dSpread = f5pCorrelations->GetBinError(69);
12779 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12780 {
12781 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12782 f5pCumulants->SetBinError(69,dError);
12783 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12784 }
e1d101a6 12785 f5pCumulants->SetBinContent(70,f5pCorrelations->GetBinContent(70)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(6));
c10259fb 12786 {
12787 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
12788 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
12789 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
12790 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12791 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12792 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12793 Double_t dSumWLinearFive6n6n6n4n2n = 0.; // sum of linear event weights for <4>
12794 Double_t dSumWQuadraticFive6n6n6n4n2n = 0.; // sum of quadratic event weights <4>
12795 Double_t dSpreadFive6n6n6n4n2n = 0.; // weighted and biased estimator for sigma of <4>
12796 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12797 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12798 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
12799 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12800 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12801 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12802 dSumWLinearFive6n6n6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12803 dSumWQuadraticFive6n6n6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12804 dSpreadFive6n6n6n4n2n = f5pCorrelations->GetBinError(70);
12805 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
12806 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12807 pow(dSumWLinearFive6n6n6n4n2n,2.)>dSumWQuadraticFive6n6n6n4n2n)
12808 {
12809 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12810 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
12811 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
12812 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
12813 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12814 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12815 + pow((pow(dSumWQuadraticFive6n6n6n4n2n,0.5)/dSumWLinearFive6n6n6n4n2n)
12816 * dSpreadFive6n6n6n4n2n*pow(pow(dSumWLinearFive6n6n6n4n2n,2.)/(pow(dSumWLinearFive6n6n6n4n2n,2.)-dSumWQuadraticFive6n6n6n4n2n),0.5),2.)
12817 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(6)
12818 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12819 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,14))
12820 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(9))
12821 / (dSumWLinearTwo6n6n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12822 - 2.*2.*f3pCorrelations->GetBinContent(9)
12823 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12824 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,124))
12825 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(70))
12826 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12827 - 2.*2.*f2pCorrelations->GetBinContent(6)
12828 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12829 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,124))
12830 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(70))
12831 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n6n6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12832 if(dError>0.)
12833 {
12834 f5pCumulants->SetBinError(70,pow(dError,0.5));
12835 }
12836 } // end of if(...)
12837 } // end of {
12838
12839
12840
12841
12842
e1d101a6 12843 f5pCumulants->SetBinContent(71,f5pCorrelations->GetBinContent(71)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(6));
c10259fb 12844 {
12845 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
12846 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
12847 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
12848 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12849 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12850 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12851 Double_t dSumWLinearFive6n6n6n5n1n = 0.; // sum of linear event weights for <4>
12852 Double_t dSumWQuadraticFive6n6n6n5n1n = 0.; // sum of quadratic event weights <4>
12853 Double_t dSpreadFive6n6n6n5n1n = 0.; // weighted and biased estimator for sigma of <4>
12854 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12855 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12856 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
12857 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12858 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12859 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12860 dSumWLinearFive6n6n6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12861 dSumWQuadraticFive6n6n6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12862 dSpreadFive6n6n6n5n1n = f5pCorrelations->GetBinError(71);
12863 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
12864 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12865 pow(dSumWLinearFive6n6n6n5n1n,2.)>dSumWQuadraticFive6n6n6n5n1n)
12866 {
12867 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12868 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
12869 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
12870 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
12871 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12872 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12873 + pow((pow(dSumWQuadraticFive6n6n6n5n1n,0.5)/dSumWLinearFive6n6n6n5n1n)
12874 * dSpreadFive6n6n6n5n1n*pow(pow(dSumWLinearFive6n6n6n5n1n,2.)/(pow(dSumWLinearFive6n6n6n5n1n,2.)-dSumWQuadraticFive6n6n6n5n1n),0.5),2.)
12875 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(6)
12876 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12877 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,15))
12878 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(10))
12879 / (dSumWLinearTwo6n6n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12880 - 2.*2.*f3pCorrelations->GetBinContent(10)
12881 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12882 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,125))
12883 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(71))
12884 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12885 - 2.*2.*f2pCorrelations->GetBinContent(6)
12886 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12887 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,125))
12888 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(71))
12889 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n6n6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12890 if(dError>0.)
12891 {
12892 f5pCumulants->SetBinError(71,pow(dError,0.5));
12893 }
12894 } // end of if(...)
12895 } // end of {
e1d101a6 12896 // d3) "Four distinct harmonics":
12897 for(Int_t b=73;b<=83;b++)
12898 {
12899 f5pCumulants->SetBinContent(b,f5pCorrelations->GetBinContent(b));
c10259fb 12900 Double_t dSumWLinear = 0.; // sum of linear event weights
12901 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12902 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12903 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12904 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12905 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12906 dSpread = f5pCorrelations->GetBinError(b);
12907 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12908 {
12909 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12910 f5pCumulants->SetBinError(b,dError);
12911 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 12912 } // end of for(Int_t b=73;b<=83;b++)
12913 // d4) "Five distinct harmonics":
12914 for(Int_t b=85;b<=87;b++)
12915 {
12916 f5pCumulants->SetBinContent(b,f5pCorrelations->GetBinContent(b));
c10259fb 12917 Double_t dSumWLinear = 0.; // sum of linear event weights
12918 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12919 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12920 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12921 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12922 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12923 dSpread = f5pCorrelations->GetBinError(b);
12924 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12925 {
12926 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12927 f5pCumulants->SetBinError(b,dError);
12928 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 12929 } // end of for(Int_t b=85;b<=87;b++)
12930
12931} // end of void AliFlowAnalysisWithQCumulants::CalculateCumulantsMixedHarmonics()
12932
12933//===================================================================================================================
489d5531 12934
e5834fcb 12935void AliFlowAnalysisWithQCumulants::StorePhiDistributionForOneEvent(AliFlowEventSimple *anEvent)
12936{
12937 // Store phi distribution for one event to illustrate flow.
12938
12939 if(fPhiDistributionForOneEvent->GetEntries()>0){return;} // store only phi distribution for one event
12940
12941 Double_t vMin = fPhiDistributionForOneEventSettings[0];
12942 Double_t vMax = fPhiDistributionForOneEventSettings[1];
12943 Double_t refMultMin = fPhiDistributionForOneEventSettings[2];
12944 Double_t refMultMax = fPhiDistributionForOneEventSettings[3];
12945
12946 Double_t vEBE = 0.;
12947 Double_t cumulant4thEBE = fIntFlowCorrelationsEBE->GetBinContent(2)-2.*pow(fIntFlowCorrelationsEBE->GetBinContent(1),2.);
12948 if(cumulant4thEBE<0.)
12949 {
12950 vEBE = pow(-1.*cumulant4thEBE,0.25);
12951 if((vEBE>vMin && vEBE<vMax) && (fReferenceMultiplicityEBE>refMultMin && fReferenceMultiplicityEBE<refMultMax))
12952 {
3958eee6 12953 fPhiDistributionForOneEvent->SetTitle(Form("v_{%i} = %f",fHarmonic,vEBE));
e5834fcb 12954 for(Int_t p=0;p<anEvent->NumberOfTracks();p++)
12955 {
12956 if(anEvent->GetTrack(p)->InRPSelection())
12957 {
12958 fPhiDistributionForOneEvent->Fill(anEvent->GetTrack(p)->Phi());
12959 }
12960 } // end of for(Int_t p=0;p<anEvent->NumberOfTracks();p++)
3958eee6 12961 } else
12962 {
12963 fPhiDistributionForOneEvent->SetTitle(Form("v_{%i} = %f, out of specified boundaries",fHarmonic,vEBE));
12964 }
12965
e5834fcb 12966 } // end of if(cumulant4thEBE<0.)
12967
12968} // end of void AliFlowAnalysisWithQCumulants::StorePhiDistributionForOneEvent(AliFlowEventSimple *anEvent)
12969
e1d101a6 12970//===================================================================================================================
489d5531 12971
12972void AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrelations()
12973{
0328db2d 12974 // Calculate averages of products of correlations for integrated flow.
df23c5ae 12975
3842bdcd 12976 // Multiplicity bin of an event (relevant for all histos vs M):
12977 Double_t dMultiplicityBin = 0.;
df23c5ae 12978 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 12979 {
df23c5ae 12980 dMultiplicityBin = fNumberOfRPsEBE+0.5;
12981 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 12982 {
12983 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 12984 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
12985 {
12986 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
12987 }
3842bdcd 12988
489d5531 12989 Int_t counter = 0;
12990
12991 for(Int_t ci1=1;ci1<4;ci1++)
12992 {
12993 for(Int_t ci2=ci1+1;ci2<=4;ci2++)
12994 {
ff70ca91 12995 fIntFlowProductOfCorrelationsPro->Fill(0.5+counter,
12996 fIntFlowCorrelationsEBE->GetBinContent(ci1)*
12997 fIntFlowCorrelationsEBE->GetBinContent(ci2),
12998 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
12999 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
13000 // products versus multiplicity: // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 13001 if(fCalculateCumulantsVsM)
13002 {
1db7eced 13003 if(fFillProfilesVsMUsingWeights)
13004 {
13005 fIntFlowProductOfCorrelationsVsMPro[counter]->Fill(dMultiplicityBin, // to be improved: dMult => sum of weights ?
13006 fIntFlowCorrelationsEBE->GetBinContent(ci1)*
13007 fIntFlowCorrelationsEBE->GetBinContent(ci2),
13008 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
13009 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
13010 } else
13011 {
13012 fIntFlowProductOfCorrelationsVsMPro[counter]->Fill(dMultiplicityBin, // to be improved: dMult => sum of weights ?
13013 fIntFlowCorrelationsEBE->GetBinContent(ci1)*
13014 fIntFlowCorrelationsEBE->GetBinContent(ci2));
13015 }
b3dacf6b 13016 } // end of if(fCalculateCumulantsVsM)
ff70ca91 13017 counter++;
489d5531 13018 }
13019 }
13020
13021} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrelations()
13022
13023
e1d101a6 13024//=======================================================================================================================
489d5531 13025
13026
0328db2d 13027void AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrectionTermsForNUA()
13028{
13029 // Calculate averages of products of correction terms for NUA.
13030
13031 // a) Binning of fIntFlowProductOfCorrectionTermsForNUAPro is organized as follows:
13032 // 1st bin: <<2><cos(phi)>>
13033 // 2nd bin: <<2><sin(phi)>>
13034 // 3rd bin: <<cos(phi)><sin(phi)>>
13035 // 4th bin: <<2><cos(phi1+phi2)>>
13036 // 5th bin: <<2><sin(phi1+phi2)>>
13037 // 6th bin: <<2><cos(phi1-phi2-phi3)>>
13038 // 7th bin: <<2><sin(phi1-phi2-phi3)>>
13039 // 8th bin: <<4><cos(phi1)>>
13040 // 9th bin: <<4><sin(phi1)>>
13041 // 10th bin: <<4><cos(phi1+phi2)>>
13042 // 11th bin: <<4><sin(phi1+phi2)>>
13043 // 12th bin: <<4><cos(phi1-phi2-phi3)>>
13044 // 13th bin: <<4><sin(phi1-phi2-phi3)>>
13045 // 14th bin: <<cos(phi1)><cos(phi1+phi2)>>
13046 // 15th bin: <<cos(phi1)><sin(phi1+phi2)>>
13047 // 16th bin: <<cos(phi1)><cos(phi1-phi2-phi3)>>
13048 // 17th bin: <<cos(phi1)><sin(phi1-phi2-phi3)>>
13049 // 18th bin: <<sin(phi1)><cos(phi1+phi2)>>
13050 // 19th bin: <<sin(phi1)><sin(phi1+phi2)>>
13051 // 20th bin: <<sin(phi1)><cos(phi1-phi2-phi3)>>
13052 // 21st bin: <<sin(phi1)><sin(phi1-phi2-phi3)>>
13053 // 22nd bin: <<cos(phi1+phi2)><sin(phi1+phi2)>>
13054 // 23rd bin: <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>
13055 // 24th bin: <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>
13056 // 25th bin: <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>
13057 // 26th bin: <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>
13058 // 27th bin: <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>
13059
13060 // <<2><cos(phi)>>:
13061 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(0.5,
13062 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1),
13063 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
13064 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
13065 // <<2><sin(phi)>>:
13066 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(1.5,
13067 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
13068 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
13069 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
13070 // <<cos(phi)><sin(phi)>>:
13071 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(2.5,
13072 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
13073 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13074 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
13075 // <<2><cos(phi1+phi2)>>:
13076 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(3.5,
13077 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13078 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
13079 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
13080 // <<2><sin(phi1+phi2)>>:
13081 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(4.5,
13082 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13083 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
13084 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13085 // <<2><cos(phi1-phi2-phi3)>>:
13086 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(5.5,
13087 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13088 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
13089 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13090 // <<2><sin(phi1-phi2-phi3)>>:
13091 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(6.5,
13092 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13093 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
13094 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13095 // <<4><cos(phi1)>>:
13096 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(7.5,
13097 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1),
13098 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13099 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
13100 // <<4><sin(phi1)>>:
13101 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(8.5,
13102 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
13103 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13104 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
13105 // <<4><cos(phi1+phi2)>>:
13106 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(9.5,
13107 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13108 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13109 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
13110 // <<4><sin(phi1+phi2)>>:
13111 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(10.5,
13112 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13113 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13114 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13115 // <<4><cos(phi1-phi2-phi3)>>:
13116 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(11.5,
13117 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13118 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13119 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13120 // <<4><sin(phi1-phi2-phi3)>>:
13121 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(12.5,
13122 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13123 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13124 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13125 // <<cos(phi1)><cos(phi1+phi2)>>:
13126 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(13.5,
13127 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13128 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13129 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
13130 // <<cos(phi1)><sin(phi1+phi2)>>:
13131 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(14.5,
13132 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13133 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13134 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13135 // <<cos(phi1)><cos(phi1-phi2-phi3)>>:
13136 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(15.5,
13137 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13138 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13139 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13140 // <<cos(phi1)><sin(phi1-phi2-phi3)>>:
13141 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(16.5,
13142 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13143 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13144 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13145 // <<sin(phi1)><cos(phi1+phi2)>>:
13146 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(17.5,
13147 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13148 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13149 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
13150 // <<sin(phi1)><sin(phi1+phi2)>>:
13151 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(18.5,
13152 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13153 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13154 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13155 // <<sin(phi1)><cos(phi1-phi2-phi3)>>:
13156 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(19.5,
13157 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13158 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13159 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13160 // <<sin(phi1)><sin(phi1-phi2-phi3)>>:
13161 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(20.5,
13162 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13163 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13164 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13165 // <<cos(phi1+phi2)><sin(phi1+phi2)>>:
13166 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(21.5,
13167 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13168 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13169 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13170 // <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>:
13171 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(22.5,
13172 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13173 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13174 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13175 // <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>:
13176 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(23.5,
13177 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13178 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13179 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13180 // <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>:
13181 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(24.5,
13182 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13183 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)
13184 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13185 // <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>:
13186 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(25.5,
13187 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13188 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)
13189 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13190 // <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>:
13191 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(26.5,
13192 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13193 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)
13194 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13195
13196} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrectionTermsForNUA()
13197
e1d101a6 13198//=======================================================================================================================
0328db2d 13199
489d5531 13200void AliFlowAnalysisWithQCumulants::CalculateCovariancesIntFlow()
13201{
13202 // a) Calculate unbiased estimators Cov(<2>,<4>), Cov(<2>,<6>), Cov(<2>,<8>), Cov(<4>,<6>), Cov(<4>,<8>) and Cov(<6>,<8>)
13203 // for covariances V_(<2>,<4>), V_(<2>,<6>), V_(<2>,<8>), V_(<4>,<6>), V_(<4>,<8>) and V_(<6>,<8>).
13204 // b) Store in histogram fIntFlowCovariances for instance the following:
13205 //
13206 // 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)]
13207 //
13208 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<4>} is event weight for <4>.
13209 // c) Binning of fIntFlowCovariances is organized as follows:
13210 //
13211 // 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)]
13212 // 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)]
13213 // 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)]
13214 // 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)]
13215 // 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)]
13216 // 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)]
b3dacf6b 13217 //
489d5531 13218
b3dacf6b 13219 // Average 2-, 4-, 6- and 8-particle correlations for all events:
489d5531 13220 Double_t correlation[4] = {0.};
13221 for(Int_t ci=0;ci<4;ci++)
13222 {
13223 correlation[ci] = fIntFlowCorrelationsPro->GetBinContent(ci+1);
13224 }
b3dacf6b 13225 // Average products of 2-, 4-, 6- and 8-particle correlations:
489d5531 13226 Double_t productOfCorrelations[4][4] = {{0.}};
13227 Int_t productOfCorrelationsLabel = 1;
b3dacf6b 13228 // Denominators in the expressions for the unbiased estimator for covariance:
489d5531 13229 Double_t denominator[4][4] = {{0.}};
13230 Int_t sumOfProductOfEventWeightsLabel1 = 1;
b3dacf6b 13231 // Weight dependent prefactor which multiply unbiased estimators for covariances:
489d5531 13232 Double_t wPrefactor[4][4] = {{0.}};
13233 Int_t sumOfProductOfEventWeightsLabel2 = 1;
13234 for(Int_t c1=0;c1<4;c1++)
13235 {
13236 for(Int_t c2=c1+1;c2<4;c2++)
13237 {
13238 productOfCorrelations[c1][c2] = fIntFlowProductOfCorrelationsPro->GetBinContent(productOfCorrelationsLabel);
b3dacf6b 13239 if(TMath::Abs(fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)) > 1.e-44 && TMath::Abs(fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1)) > 1.e-44)
13240 {
13241 denominator[c1][c2] = 1.-(fIntFlowSumOfProductOfEventWeights->GetBinContent(sumOfProductOfEventWeightsLabel1))
13242 / (fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)
13243 * fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1));
13244 wPrefactor[c1][c2] = fIntFlowSumOfProductOfEventWeights->GetBinContent(sumOfProductOfEventWeightsLabel2)
13245 / (fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)
13246 * fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1));
489d5531 13247 }
b3dacf6b 13248 productOfCorrelationsLabel++; // to be improved - do I need here all 3 counters?
489d5531 13249 sumOfProductOfEventWeightsLabel1++;
13250 sumOfProductOfEventWeightsLabel2++;
b3dacf6b 13251 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13252 } // end of for(Int_t c1=0;c1<4;c1++)
489d5531 13253
489d5531 13254 Int_t covarianceLabel = 1;
13255 for(Int_t c1=0;c1<4;c1++)
13256 {
13257 for(Int_t c2=c1+1;c2<4;c2++)
13258 {
b3dacf6b 13259 if(TMath::Abs(denominator[c1][c2]) > 1.e-44)
489d5531 13260 {
b3dacf6b 13261 // Covariances:
489d5531 13262 Double_t cov = (productOfCorrelations[c1][c2]-correlation[c1]*correlation[c2])/denominator[c1][c2];
b3dacf6b 13263 // Covariances multiplied with weight dependent prefactor:
489d5531 13264 Double_t wCov = cov * wPrefactor[c1][c2];
13265 fIntFlowCovariances->SetBinContent(covarianceLabel,wCov);
13266 }
13267 covarianceLabel++;
b3dacf6b 13268 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13269 } // end of for(Int_t c1=0;c1<4;c1++)
489d5531 13270
b3dacf6b 13271 // Versus multiplicity:
13272 if(!fCalculateCumulantsVsM){return;}
9da1a4f3 13273 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
13274 for(Int_t b=1;b<=nBins;b++)
13275 {
b3dacf6b 13276 // Average 2-, 4-, 6- and 8-particle correlations for all events:
9da1a4f3 13277 Double_t correlationVsM[4] = {0.};
13278 for(Int_t ci=0;ci<4;ci++)
13279 {
13280 correlationVsM[ci] = fIntFlowCorrelationsVsMPro[ci]->GetBinContent(b);
13281 } // end of for(Int_t ci=0;ci<4;ci++)
b3dacf6b 13282 // Average products of 2-, 4-, 6- and 8-particle correlations:
9da1a4f3 13283 Double_t productOfCorrelationsVsM[4][4] = {{0.}};
13284 Int_t productOfCorrelationsLabelVsM = 1;
b3dacf6b 13285 // Denominators in the expressions for the unbiased estimator for covariance:
9da1a4f3 13286 Double_t denominatorVsM[4][4] = {{0.}};
13287 Int_t sumOfProductOfEventWeightsLabel1VsM = 1;
b3dacf6b 13288 // Weight dependent prefactor which multiply unbiased estimators for covariances:
9da1a4f3 13289 Double_t wPrefactorVsM[4][4] = {{0.}};
13290 Int_t sumOfProductOfEventWeightsLabel2VsM = 1;
13291 for(Int_t c1=0;c1<4;c1++)
13292 {
13293 for(Int_t c2=c1+1;c2<4;c2++)
13294 {
1db7eced 13295 productOfCorrelationsVsM[c1][c2] = fIntFlowProductOfCorrelationsVsMPro[productOfCorrelationsLabelVsM-1]->GetBinContent(b);
b3dacf6b 13296 if(TMath::Abs(fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)) > 1.e-44 && TMath::Abs(fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b)) > 1.e-44)
13297 {
13298 denominatorVsM[c1][c2] = 1.-(fIntFlowSumOfProductOfEventWeightsVsM[sumOfProductOfEventWeightsLabel1VsM-1]->GetBinContent(b))
13299 / (fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)
13300 * fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b));
13301 wPrefactorVsM[c1][c2] = fIntFlowSumOfProductOfEventWeightsVsM[sumOfProductOfEventWeightsLabel2VsM-1]->GetBinContent(b)
13302 / (fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)
13303 * fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b));
9da1a4f3 13304 }
13305 productOfCorrelationsLabelVsM++;
13306 sumOfProductOfEventWeightsLabel1VsM++;
13307 sumOfProductOfEventWeightsLabel2VsM++;
13308 } // end of for(Int_t c1=0;c1<4;c1++)
13309 } // end of for(Int_t c2=c1+1;c2<4;c2++)
b3dacf6b 13310
9da1a4f3 13311 Int_t covarianceLabelVsM = 1;
13312 for(Int_t c1=0;c1<4;c1++)
13313 {
13314 for(Int_t c2=c1+1;c2<4;c2++)
13315 {
b3dacf6b 13316 if(TMath::Abs(denominatorVsM[c1][c2]) > 1.e-44)
9da1a4f3 13317 {
b3dacf6b 13318 // Covariances:
9da1a4f3 13319 Double_t covVsM = (productOfCorrelationsVsM[c1][c2]-correlationVsM[c1]*correlationVsM[c2])/denominatorVsM[c1][c2];
b3dacf6b 13320 // Covariances multiplied with weight dependent prefactor:
9da1a4f3 13321 Double_t wCovVsM = covVsM * wPrefactorVsM[c1][c2];
13322 fIntFlowCovariancesVsM[covarianceLabelVsM-1]->SetBinContent(b,wCovVsM);
13323 }
13324 covarianceLabelVsM++;
b3dacf6b 13325 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13326 } // end of for(Int_t c1=0;c1<4;c1++)
9da1a4f3 13327 } // end of for(Int_t b=1;b<=nBins;b++)
13328
489d5531 13329} // end of AliFlowAnalysisWithQCumulants::CalculateCovariancesIntFlow()
13330
e1d101a6 13331//=======================================================================================================================
489d5531 13332
0328db2d 13333void AliFlowAnalysisWithQCumulants::CalculateCovariancesNUAIntFlow()
13334{
13335 // a) Calculate unbiased estimators Cov(*,*) for true covariances V_(*,*) for NUA terms.
13336 // b) Store in histogram fIntFlowCovariancesNUA for instance the following:
13337 //
13338 // 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)]
13339 //
13340 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<cos(phi)>} is event weight for <cos(phi)>.
13341 // c) Binning of fIntFlowCovariancesNUA is organized as follows:
13342 //
13343 // 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)]
13344 // 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)]
13345 // 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)]
13346 // ...
13347
13348 // Cov(<2>,<cos(phi)>):
13349 Double_t product1 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(1); // <<2><cos(phi)>>
13350 Double_t term1st1 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13351 Double_t term2nd1 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi)>>
13352 Double_t sumOfW1st1 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13353 Double_t sumOfW2nd1 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi)>}
13354 Double_t sumOfWW1 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(1); // W_{<2>} * W_{<cos(phi)>}
13355 // numerator in the expression for the the unbiased estimator for covariance:
13356 Double_t numerator1 = product1 - term1st1*term2nd1;
13357 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13358 Double_t denominator1 = 0.;
13359 if(TMath::Abs(sumOfW1st1*sumOfW2nd1)>0.)
13360 {
13361 denominator1 = 1.-sumOfWW1/(sumOfW1st1*sumOfW2nd1);
13362 if(TMath::Abs(denominator1)>0.)
13363 {
13364 // covariance:
13365 Double_t covariance1 = numerator1/denominator1;
13366 // weight dependent prefactor for covariance:
13367 Double_t wPrefactor1 = sumOfWW1/(sumOfW1st1*sumOfW2nd1);
13368 // finally, store "weighted" covariance:
13369 fIntFlowCovariancesNUA->SetBinContent(1,wPrefactor1*covariance1);
13370 } // end of if(TMath::Abs(denominator)>0.)
13371 } // end of if(TMath::Abs(sumOfW1st1*sumOfW2nd1)>0.)
13372
0328db2d 13373 // Cov(<2>,<sin(phi)>):
13374 Double_t product2 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(2); // <<2><sin(phi)>>
13375 Double_t term1st2 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13376 Double_t term2nd2 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi)>>
13377 Double_t sumOfW1st2 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13378 Double_t sumOfW2nd2 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi)>}
13379 Double_t sumOfWW2 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(2); // W_{<2>} * W_{<sin(phi)>}
13380 // numerator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13381 Double_t numerator2 = product2 - term1st2*term2nd2;
0328db2d 13382 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13383 Double_t denominator2 = 0.;
13384 if(TMath::Abs(sumOfW1st2*sumOfW2nd2)>0.)
13385 {
13386 denominator2 = 1.-sumOfWW2/(sumOfW1st2*sumOfW2nd2);
13387 if(TMath::Abs(denominator2)>0.)
13388 {
13389 // covariance:
13390 Double_t covariance2 = numerator2/denominator2;
13391 // weight dependent prefactor for covariance:
13392 Double_t wPrefactor2 = sumOfWW2/(sumOfW1st2*sumOfW2nd2);
13393 // finally, store "weighted" covariance:
13394 fIntFlowCovariancesNUA->SetBinContent(2,wPrefactor2*covariance2);
13395 } // end of if(TMath::Abs(denominator2)>0.)
13396 } // end of if(TMath::Abs(sumOfW1st2*sumOfW2nd2)>0.)
0328db2d 13397
13398 // Cov(<cos(phi)>,<sin(phi)>):
13399 Double_t product3 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(3); // <<cos(phi)><sin(phi)>>
13400 Double_t term1st3 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi)>>
13401 Double_t term2nd3 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi)>>
13402 Double_t sumOfW1st3 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi)>}
13403 Double_t sumOfW2nd3 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi)>}
13404 Double_t sumOfWW3 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(3); // W_{<cos(phi)>} * W_{<sin(phi)>}
13405 // numerator in the expression for the the unbiased estimator for covariance:
13406 Double_t numerator3 = product3 - term1st3*term2nd3;
13407 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13408 Double_t denominator3 = 0;
13409 if(TMath::Abs(sumOfW1st3*sumOfW2nd3)>0.)
13410 {
13411 denominator3 = 1.-sumOfWW3/(sumOfW1st3*sumOfW2nd3);
13412 if(TMath::Abs(denominator3)>0.)
13413 {
13414 // covariance:
13415 Double_t covariance3 = numerator3/denominator3;
13416 // weight dependent prefactor for covariance:
13417 Double_t wPrefactor3 = sumOfWW3/(sumOfW1st3*sumOfW2nd3);
13418 // finally, store "weighted" covariance:
13419 fIntFlowCovariancesNUA->SetBinContent(3,wPrefactor3*covariance3);
13420 } // end of if(TMath::Abs(denominator3)>0.)
13421 } // end of if(TMath::Abs(sumOfW1st3*sumOfW2nd3)>0.)
0328db2d 13422
13423 // Cov(<2>,<cos(phi1+phi2)>):
13424 Double_t product4 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(4); // <<2><cos(phi1+phi2)>>
13425 Double_t term1st4 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13426 Double_t term2nd4 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13427 Double_t sumOfW1st4 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13428 Double_t sumOfW2nd4 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13429 Double_t sumOfWW4 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(4); // W_{<2>} * W_{<cos(phi1+phi2)>}
13430 // numerator in the expression for the the unbiased estimator for covariance:
13431 Double_t numerator4 = product4 - term1st4*term2nd4;
13432 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13433 Double_t denominator4 = 0.;
13434 if(TMath::Abs(sumOfW1st4*sumOfW2nd4)>0.)
13435 {
13436 denominator4 = 1.-sumOfWW4/(sumOfW1st4*sumOfW2nd4);
13437 if(TMath::Abs(denominator4)>0.)
13438 {
13439 // covariance:
13440 Double_t covariance4 = numerator4/denominator4;
13441 // weight dependent prefactor for covariance:
13442 Double_t wPrefactor4 = sumOfWW4/(sumOfW1st4*sumOfW2nd4);
13443 // finally, store "weighted" covariance:
13444 fIntFlowCovariancesNUA->SetBinContent(4,wPrefactor4*covariance4);
13445 } // end of if(TMath::Abs(denominator4)>0.)
13446 } // end of if(TMath::Abs(sumOfW1st4*sumOfW2nd4)>0.)
13447
0328db2d 13448 // Cov(<2>,<sin(phi1+phi2)>):
13449 Double_t product5 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(5); // <<2><sin(phi1+phi2)>>
13450 Double_t term1st5 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13451 Double_t term2nd5 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13452 Double_t sumOfW1st5 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13453 Double_t sumOfW2nd5 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13454 Double_t sumOfWW5 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(5); // W_{<2>} * W_{<sin(phi1+phi2)>}
13455 // numerator in the expression for the the unbiased estimator for covariance:
13456 Double_t numerator5 = product5 - term1st5*term2nd5;
13457 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13458 Double_t denominator5 = 0.;
13459 if(TMath::Abs(sumOfW1st5*sumOfW2nd5)>0.)
13460 {
13461 denominator5 = 1.-sumOfWW5/(sumOfW1st5*sumOfW2nd5);
13462 if(TMath::Abs(denominator5)>0.)
13463 {
13464 // covariance:
13465 Double_t covariance5 = numerator5/denominator5;
13466 // weight dependent prefactor for covariance:
13467 Double_t wPrefactor5 = sumOfWW5/(sumOfW1st5*sumOfW2nd5);
13468 // finally, store "weighted" covariance:
13469 fIntFlowCovariancesNUA->SetBinContent(5,wPrefactor5*covariance5);
13470 } // end of if(TMath::Abs(denominator5)>0.)
13471 } // end of if(TMath::Abs(sumOfW1st5*sumOfW2nd5)>0.)
13472
0328db2d 13473 // Cov(<2>,<cos(phi1-phi2-phi3)>):
13474 Double_t product6 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(6); // <<2><cos(phi1-phi2-phi3)>>
13475 Double_t term1st6 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13476 Double_t term2nd6 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13477 Double_t sumOfW1st6 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13478 Double_t sumOfW2nd6 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13479 Double_t sumOfWW6 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(6); // W_{<2>} * W_{<cos(phi1-phi2-phi3)>}
13480 // numerator in the expression for the the unbiased estimator for covariance:
13481 Double_t numerator6 = product6 - term1st6*term2nd6;
13482 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13483 Double_t denominator6 = 0.;
13484 if(TMath::Abs(sumOfW1st6*sumOfW2nd6)>0.)
13485 {
13486 denominator6 = 1.-sumOfWW6/(sumOfW1st6*sumOfW2nd6);
13487 if(TMath::Abs(denominator6)>0.)
13488 {
13489 // covariance:
13490 Double_t covariance6 = numerator6/denominator6;
13491 // weight dependent prefactor for covariance:
13492 Double_t wPrefactor6 = sumOfWW6/(sumOfW1st6*sumOfW2nd6);
13493 // finally, store "weighted" covariance:
13494 fIntFlowCovariancesNUA->SetBinContent(6,wPrefactor6*covariance6);
13495 } // end of if(TMath::Abs(denominator6)>0.)
13496 } // end of if(TMath::Abs(sumOfW1st6*sumOfW2nd6)>0.)
13497
0328db2d 13498 // Cov(<2>,<sin(phi1-phi2-phi3)>):
13499 Double_t product7 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(7); // <<2><sin(phi1-phi2-phi3)>>
13500 Double_t term1st7 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13501 Double_t term2nd7 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13502 Double_t sumOfW1st7 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13503 Double_t sumOfW2nd7 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13504 Double_t sumOfWW7 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(7); // W_{<2>} * W_{<sin(phi1-phi2-phi3)>}
13505 // numerator in the expression for the the unbiased estimator for covariance:
13506 Double_t numerator7 = product7 - term1st7*term2nd7;
13507 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13508 Double_t denominator7 = 0.;
13509 if(TMath::Abs(sumOfW1st7*sumOfW2nd7)>0.)
13510 {
13511 denominator7 = 1.-sumOfWW7/(sumOfW1st7*sumOfW2nd7);
13512 if(TMath::Abs(denominator7)>0.)
13513 {
13514 // covariance:
13515 Double_t covariance7 = numerator7/denominator7;
13516 // weight dependent prefactor for covariance:
13517 Double_t wPrefactor7 = sumOfWW7/(sumOfW1st7*sumOfW2nd7);
13518 // finally, store "weighted" covariance:
13519 fIntFlowCovariancesNUA->SetBinContent(7,wPrefactor7*covariance7);
13520 } // end of if(TMath::Abs(denominator7)>0.)
13521 } // end of if(TMath::Abs(sumOfW1st7*sumOfW2nd7)>0.)
13522
0328db2d 13523 // Cov(<4>,<cos(phi1>):
13524 Double_t product8 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(8); // <<4><cos(phi1)>>
13525 Double_t term1st8 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13526 Double_t term2nd8 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13527 Double_t sumOfW1st8 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13528 Double_t sumOfW2nd8 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13529 Double_t sumOfWW8 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(8); // W_{<4>} * W_{<cos(phi1)>}
13530 // numerator in the expression for the the unbiased estimator for covariance:
13531 Double_t numerator8 = product8 - term1st8*term2nd8;
13532 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13533 Double_t denominator8 = 0.;
13534 if(TMath::Abs(sumOfW1st8*sumOfW2nd8)>0.)
13535 {
13536 denominator8 = 1.-sumOfWW8/(sumOfW1st8*sumOfW2nd8);
13537 if(TMath::Abs(denominator8)>0.)
13538 {
13539 // covariance:
13540 Double_t covariance8 = numerator8/denominator8;
13541 // weight dependent prefactor for covariance:
13542 Double_t wPrefactor8 = sumOfWW8/(sumOfW1st8*sumOfW2nd8);
13543 // finally, store "weighted" covariance:
13544 fIntFlowCovariancesNUA->SetBinContent(8,wPrefactor8*covariance8);
13545 } // end of if(TMath::Abs(denominator8)>0.)
13546 } // end of if(TMath::Abs(sumOfW1st8*sumOfW2nd8)>0.)
13547
0328db2d 13548 // Cov(<4>,<sin(phi1)>):
13549 Double_t product9 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(9); // <<4><sin(phi1)>>
13550 Double_t term1st9 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13551 Double_t term2nd9 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13552 Double_t sumOfW1st9 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13553 Double_t sumOfW2nd9 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13554 Double_t sumOfWW9 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(9); // W_{<4>} * W_{<sin(phi1)>}
13555 // numerator in the expression for the the unbiased estimator for covariance:
13556 Double_t numerator9 = product9 - term1st9*term2nd9;
13557 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13558 Double_t denominator9 = 0.;
13559 if(TMath::Abs(sumOfW1st9*sumOfW2nd9)>0.)
13560 {
13561 denominator9 = 1.-sumOfWW9/(sumOfW1st9*sumOfW2nd9);
13562 if(TMath::Abs(denominator9)>0.)
13563 {
13564 // covariance:
13565 Double_t covariance9 = numerator9/denominator9;
13566 // weight dependent prefactor for covariance:
13567 Double_t wPrefactor9 = sumOfWW9/(sumOfW1st9*sumOfW2nd9);
13568 // finally, store "weighted" covariance:
13569 fIntFlowCovariancesNUA->SetBinContent(9,wPrefactor9*covariance9);
13570 }
13571 } // end of if(TMath::Abs(sumOfW1st9*sumOfW2nd9)>0.)
13572
0328db2d 13573 // Cov(<4>,<cos(phi1+phi2)>):
13574 Double_t product10 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(10); // <<4><cos(phi1+phi2)>>
13575 Double_t term1st10 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13576 Double_t term2nd10 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13577 Double_t sumOfW1st10 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13578 Double_t sumOfW2nd10 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13579 Double_t sumOfWW10 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(10); // W_{<4>} * W_{<cos(phi1+phi2)>}
13580 // numerator in the expression for the the unbiased estimator for covariance:
13581 Double_t numerator10 = product10 - term1st10*term2nd10;
13582 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13583 Double_t denominator10 = 0.;
13584 if(TMath::Abs(sumOfW1st10*sumOfW2nd10)>0.)
13585 {
13586 denominator10 = 1.-sumOfWW10/(sumOfW1st10*sumOfW2nd10);
13587 if(TMath::Abs(denominator10)>0.)
13588 {
13589 // covariance:
13590 Double_t covariance10 = numerator10/denominator10;
13591 // weight dependent prefactor for covariance:
13592 Double_t wPrefactor10 = sumOfWW10/(sumOfW1st10*sumOfW2nd10);
13593 // finally, store "weighted" covariance:
13594 fIntFlowCovariancesNUA->SetBinContent(10,wPrefactor10*covariance10);
13595 } // end of if(TMath::Abs(denominator10)>0.)
13596 } // end of if(TMath::Abs(sumOfW1st10*sumOfW2nd10)>0.)
13597
0328db2d 13598 // Cov(<4>,<sin(phi1+phi2)>):
13599 Double_t product11 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(11); // <<4><sin(phi1+phi2)>>
13600 Double_t term1st11 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13601 Double_t term2nd11 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13602 Double_t sumOfW1st11 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13603 Double_t sumOfW2nd11 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13604 Double_t sumOfWW11 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(11); // W_{<4>} * W_{<sin(phi1+phi2)>}
13605 // numerator in the expression for the the unbiased estimator for covariance:
13606 Double_t numerator11 = product11 - term1st11*term2nd11;
13607 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13608 Double_t denominator11 = 0.;
13609 if(TMath::Abs(sumOfW1st11*sumOfW2nd11)>0.)
13610 {
13611 denominator11 = 1.-sumOfWW11/(sumOfW1st11*sumOfW2nd11);
13612 if(TMath::Abs(denominator11)>0.)
13613 {
13614 // covariance:
13615 Double_t covariance11 = numerator11/denominator11;
13616 // weight dependent prefactor for covariance:
13617 Double_t wPrefactor11 = sumOfWW11/(sumOfW1st11*sumOfW2nd11);
13618 // finally, store "weighted" covariance:
13619 fIntFlowCovariancesNUA->SetBinContent(11,wPrefactor11*covariance11);
13620 } // end of if(TMath::Abs(denominator11)>0.)
13621 } // end of if(TMath::Abs(sumOfW1st11*sumOfW2nd11)>0.)
0328db2d 13622
13623 // Cov(<4>,<cos(phi1-phi2-phi3)>):
13624 Double_t product12 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(12); // <<4><cos(phi1-phi2-phi3)>>
13625 Double_t term1st12 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13626 Double_t term2nd12 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13627 Double_t sumOfW1st12 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13628 Double_t sumOfW2nd12 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13629 Double_t sumOfWW12 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(12); // W_{<4>} * W_{<cos(phi1-phi2-phi3)>}
13630 // numerator in the expression for the the unbiased estimator for covariance:
13631 Double_t numerator12 = product12 - term1st12*term2nd12;
13632 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13633 Double_t denominator12 = 0.;
13634 if(TMath::Abs(sumOfW1st12*sumOfW2nd12)>0.)
13635 {
13636 denominator12 = 1.-sumOfWW12/(sumOfW1st12*sumOfW2nd12);
13637 if(TMath::Abs(denominator12)>0.)
13638 {
13639 // covariance:
13640 Double_t covariance12 = numerator12/denominator12;
13641 // weight dependent prefactor for covariance:
13642 Double_t wPrefactor12 = sumOfWW12/(sumOfW1st12*sumOfW2nd12);
13643 // finally, store "weighted" covariance:
13644 fIntFlowCovariancesNUA->SetBinContent(12,wPrefactor12*covariance12);
13645 } // end of if(TMath::Abs(denominator12)>0.)
13646 } // end of if(TMath::Abs(sumOfW1st12*sumOfW2nd12)>0.)
0328db2d 13647
13648 // Cov(<4>,<sin(phi1-phi2-phi3)>):
13649 Double_t product13 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(13); // <<4><sin(phi1-phi2-phi3)>>
13650 Double_t term1st13 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13651 Double_t term2nd13 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13652 Double_t sumOfW1st13 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13653 Double_t sumOfW2nd13 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13654 Double_t sumOfWW13 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(13); // W_{<4>} * W_{<sin(phi1-phi2-phi3)>}
13655 // numerator in the expression for the the unbiased estimator for covariance:
13656 Double_t numerator13 = product13 - term1st13*term2nd13;
13657 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13658 Double_t denominator13 = 0.;
13659 if(TMath::Abs(sumOfW1st13*sumOfW2nd13)>0.)
13660 {
13661 denominator13 = 1.-sumOfWW13/(sumOfW1st13*sumOfW2nd13);
13662 if(TMath::Abs(denominator13)>0.)
13663 {
13664 // covariance:
13665 Double_t covariance13 = numerator13/denominator13;
13666 // weight dependent prefactor for covariance:
13667 Double_t wPrefactor13 = sumOfWW13/(sumOfW1st13*sumOfW2nd13);
13668 // finally, store "weighted" covariance:
13669 fIntFlowCovariancesNUA->SetBinContent(13,wPrefactor13*covariance13);
13670 } // end of if(TMath::Abs(denominator13)>0.)
13671 } // end of if(TMath::Abs(sumOfW1st13*sumOfW2nd13)>0.)
0328db2d 13672
13673 // Cov(<cos(phi1)>,<cos(phi1+phi2)>):
13674 Double_t product14 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(14); // <<cos(phi1)><cos(phi1+phi2)>>
13675 Double_t term1st14 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13676 Double_t term2nd14 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13677 Double_t sumOfW1st14 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13678 Double_t sumOfW2nd14 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13679 Double_t sumOfWW14 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(14); // W_{<cos(phi1)>} * W_{<cos(phi1+phi2)>}
13680 // numerator in the expression for the the unbiased estimator for covariance:
13681 Double_t numerator14 = product14 - term1st14*term2nd14;
13682 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13683 Double_t denominator14 = 0.;
13684 if(TMath::Abs(sumOfW1st14*sumOfW2nd14)>0.)
13685 {
13686 denominator14 = 1.-sumOfWW14/(sumOfW1st14*sumOfW2nd14);
13687 if(TMath::Abs(denominator14)>0.)
13688 {
13689 // covariance:
13690 Double_t covariance14 = numerator14/denominator14;
13691 // weight dependent prefactor for covariance:
13692 Double_t wPrefactor14 = sumOfWW14/(sumOfW1st14*sumOfW2nd14);
13693 // finally, store "weighted" covariance:
13694 fIntFlowCovariancesNUA->SetBinContent(14,wPrefactor14*covariance14);
13695 } // end of if(TMath::Abs(denominator14)>0.)
13696 } // end of if(TMath::Abs(sumOfW1st14*sumOfW2nd14)>0.)
0328db2d 13697
13698 // Cov(<cos(phi1)>,<sin(phi1+phi2)>):
13699 Double_t product15 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(15); // <<cos(phi1)><sin(phi1+phi2)>>
13700 Double_t term1st15 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13701 Double_t term2nd15 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13702 Double_t sumOfW1st15 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13703 Double_t sumOfW2nd15 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13704 Double_t sumOfWW15 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(15); // W_{<cos(phi1)>} * W_{<sin(phi1+phi2)>}
13705 // numerator in the expression for the the unbiased estimator for covariance:
13706 Double_t numerator15 = product15 - term1st15*term2nd15;
13707 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13708 Double_t denominator15 = 0.;
13709 if(TMath::Abs(sumOfW1st15*sumOfW2nd15)>0.)
13710 {
13711 denominator15 = 1.-sumOfWW15/(sumOfW1st15*sumOfW2nd15);
13712 if(TMath::Abs(denominator15)>0.)
13713 {
13714 // covariance:
13715 Double_t covariance15 = numerator15/denominator15;
13716 // weight dependent prefactor for covariance:
13717 Double_t wPrefactor15 = sumOfWW15/(sumOfW1st15*sumOfW2nd15);
13718 // finally, store "weighted" covariance:
13719 fIntFlowCovariancesNUA->SetBinContent(15,wPrefactor15*covariance15);
13720 } // end of if(TMath::Abs(denominator15)>0.)
13721 } // end of if(TMath::Abs(sumOfW1st15*sumOfW2nd15)>0.)
13722
0328db2d 13723 // Cov(<cos(phi1)>,<cos(phi1-phi2-phi3)>):
13724 Double_t product16 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(16); // <<cos(phi1)><cos(phi1-phi2-phi3)>>
13725 Double_t term1st16 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13726 Double_t term2nd16 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13727 Double_t sumOfW1st16 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13728 Double_t sumOfW2nd16 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13729 Double_t sumOfWW16 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(16); // W_{<cos(phi1)>} * W_{<cos(phi1-phi2-phi3)>}
13730 // numerator in the expression for the the unbiased estimator for covariance:
13731 Double_t numerator16 = product16 - term1st16*term2nd16;
13732 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13733 Double_t denominator16 = 0.;
13734 if(TMath::Abs(sumOfW1st16*sumOfW2nd16)>0.)
13735 {
13736 denominator16 = 1.-sumOfWW16/(sumOfW1st16*sumOfW2nd16);
13737 if(TMath::Abs(denominator16)>0.)
13738 {
13739 // covariance:
13740 Double_t covariance16 = numerator16/denominator16;
13741 // weight dependent prefactor for covariance:
13742 Double_t wPrefactor16 = sumOfWW16/(sumOfW1st16*sumOfW2nd16);
13743 // finally, store "weighted" covariance:
13744 fIntFlowCovariancesNUA->SetBinContent(16,wPrefactor16*covariance16);
13745 } // end of if(TMath::Abs(denominator16)>0.)
13746 } // end ofif(TMath::Abs(sumOfW1st16*sumOfW2nd16)>0.)
13747
0328db2d 13748 // Cov(<cos(phi1)>,<sin(phi1-phi2-phi3)>):
13749 Double_t product17 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(17); // <<cos(phi1)><sin(phi1-phi2-phi3)>>
13750 Double_t term1st17 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13751 Double_t term2nd17 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13752 Double_t sumOfW1st17 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13753 Double_t sumOfW2nd17 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13754 Double_t sumOfWW17 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(17); // W_{<cos(phi1)>} * W_{<sin(phi1-phi2-phi3)>}
13755 // numerator in the expression for the the unbiased estimator for covariance:
13756 Double_t numerator17 = product17 - term1st17*term2nd17;
13757 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13758 Double_t denominator17 = 0.;
13759 if(TMath::Abs(sumOfW1st17*sumOfW2nd17)>0.)
13760 {
13761 denominator17 = 1.-sumOfWW17/(sumOfW1st17*sumOfW2nd17);
13762 if(TMath::Abs(denominator17)>0.)
13763 {
13764 // covariance:
13765 Double_t covariance17 = numerator17/denominator17;
13766 // weight dependent prefactor for covariance:
13767 Double_t wPrefactor17 = sumOfWW17/(sumOfW1st17*sumOfW2nd17);
13768 // finally, store "weighted" covariance:
13769 fIntFlowCovariancesNUA->SetBinContent(17,wPrefactor17*covariance17);
13770 } // end of if(TMath::Abs(denominator17)>0.)
13771 } // end of if(TMath::Abs(sumOfW1st17*sumOfW2nd17)>0.)
0328db2d 13772
13773 // Cov(<sin(phi1)>,<cos(phi1+phi2)>):
13774 Double_t product18 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(18); // <<sin(phi1)><cos(phi1+phi2)>>
13775 Double_t term1st18 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13776 Double_t term2nd18 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13777 Double_t sumOfW1st18 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13778 Double_t sumOfW2nd18 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13779 Double_t sumOfWW18 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(18); // W_{<sin(phi1)>} * W_{<cos(phi1+phi2)>}
13780 // numerator in the expression for the the unbiased estimator for covariance:
13781 Double_t numerator18 = product18 - term1st18*term2nd18;
13782 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13783 Double_t denominator18 = 0.;
13784 if(TMath::Abs(sumOfW1st18*sumOfW2nd18)>0.)
13785 {
13786 denominator18 = 1.-sumOfWW18/(sumOfW1st18*sumOfW2nd18);
13787 if(TMath::Abs(denominator18)>0.)
13788 {
13789 // covariance:
13790 Double_t covariance18 = numerator18/denominator18;
13791 // weight dependent prefactor for covariance:
13792 Double_t wPrefactor18 = sumOfWW18/(sumOfW1st18*sumOfW2nd18);
13793 // finally, store "weighted" covariance:
13794 fIntFlowCovariancesNUA->SetBinContent(18,wPrefactor18*covariance18);
13795 } // end of if(TMath::Abs(denominator18)>0.)
13796 } // end of if(TMath::Abs(sumOfW1st18*sumOfW2nd18)>0.)
0328db2d 13797
13798 // Cov(<sin(phi1)>,<sin(phi1+phi2)>):
13799 Double_t product19 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(19); // <<sin(phi1)><sin(phi1+phi2)>>
13800 Double_t term1st19 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13801 Double_t term2nd19 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13802 Double_t sumOfW1st19 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13803 Double_t sumOfW2nd19 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13804 Double_t sumOfWW19 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(19); // W_{<sin(phi1)>} * W_{<sin(phi1+phi2)>}
13805 // numerator in the expression for the the unbiased estimator for covariance:
13806 Double_t numerator19 = product19 - term1st19*term2nd19;
13807 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13808 Double_t denominator19 = 0.;
13809 if(TMath::Abs(sumOfW1st19*sumOfW2nd19)>0.)
13810 {
13811 denominator19 = 1.-sumOfWW19/(sumOfW1st19*sumOfW2nd19);
13812 if(TMath::Abs(denominator19)>0.)
13813 {
13814 // covariance:
13815 Double_t covariance19 = numerator19/denominator19;
13816 // weight dependent prefactor for covariance:
13817 Double_t wPrefactor19 = sumOfWW19/(sumOfW1st19*sumOfW2nd19);
13818 // finally, store "weighted" covariance:
13819 fIntFlowCovariancesNUA->SetBinContent(19,wPrefactor19*covariance19);
13820 } // end of if(TMath::Abs(denominator19)>0.)
13821 } // end of if(TMath::Abs(sumOfW1st19*sumOfW2nd19)>0.)
13822
0328db2d 13823 // Cov(<sin(phi1)>,<cos(phi1-phi2-phi3)>):
13824 Double_t product20 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(20); // <<sin(phi1)><cos(phi1-phi2-phi3)>>
13825 Double_t term1st20 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13826 Double_t term2nd20 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13827 Double_t sumOfW1st20 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13828 Double_t sumOfW2nd20 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13829 Double_t sumOfWW20 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(20); // W_{<sin(phi1)>} * W_{<cos(phi1-phi2-phi3)>}
13830 // numerator in the expression for the the unbiased estimator for covariance:
13831 Double_t numerator20 = product20 - term1st20*term2nd20;
13832 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13833 Double_t denominator20 = 0.;
13834 if(TMath::Abs(sumOfW1st20*sumOfW2nd20)>0.)
13835 {
13836 denominator20 = 1.-sumOfWW20/(sumOfW1st20*sumOfW2nd20);
13837 if(TMath::Abs(denominator20)>0.)
13838 {
13839 // covariance:
13840 Double_t covariance20 = numerator20/denominator20;
13841 // weight dependent prefactor for covariance:
13842 Double_t wPrefactor20 = sumOfWW20/(sumOfW1st20*sumOfW2nd20);
13843 // finally, store "weighted" covariance:
13844 fIntFlowCovariancesNUA->SetBinContent(20,wPrefactor20*covariance20);
13845 } // end of if(TMath::Abs(denominator20)>0.)
13846 } // end of if(TMath::Abs(sumOfW1st20*sumOfW2nd20)>0.)
0328db2d 13847
13848 // Cov(<sin(phi1)>,<sin(phi1-phi2-phi3)>):
13849 Double_t product21 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(21); // <<sin(phi1)><sin(phi1-phi2-phi3)>>
13850 Double_t term1st21 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13851 Double_t term2nd21 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13852 Double_t sumOfW1st21 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13853 Double_t sumOfW2nd21 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13854 Double_t sumOfWW21 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(21); // W_{<sin(phi1)>} * W_{<sin(phi1-phi2-phi3)>}
13855 // numerator in the expression for the the unbiased estimator for covariance:
13856 Double_t numerator21 = product21 - term1st21*term2nd21;
13857 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13858 Double_t denominator21 = 0.;
13859 if(TMath::Abs(sumOfW1st21*sumOfW2nd21)>0.)
13860 {
13861 denominator21 = 1.-sumOfWW21/(sumOfW1st21*sumOfW2nd21);
13862 if(TMath::Abs(denominator21)>0.)
13863 {
13864 // covariance:
13865 Double_t covariance21 = numerator21/denominator21;
13866 // weight dependent prefactor for covariance:
13867 Double_t wPrefactor21 = sumOfWW21/(sumOfW1st21*sumOfW2nd21);
13868 // finally, store "weighted" covariance:
13869 fIntFlowCovariancesNUA->SetBinContent(21,wPrefactor21*covariance21);
13870 } // end of if(TMath::Abs(denominator21)>0.)
13871 } // end of if(TMath::Abs(sumOfW1st21*sumOfW2nd21)>0.)
0328db2d 13872
13873 // Cov(<cos(phi1+phi2)>,<sin(phi1+phi2)>):
13874 Double_t product22 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(22); // <<cos(phi1+phi2)><sin(phi1+phi2)>>
13875 Double_t term1st22 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13876 Double_t term2nd22 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13877 Double_t sumOfW1st22 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13878 Double_t sumOfW2nd22 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13879 Double_t sumOfWW22 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(22); // W_{<cos(phi1+phi2)>} * W_{<sin(phi1+phi2)>}
13880 // numerator in the expression for the the unbiased estimator for covariance:
13881 Double_t numerator22 = product22 - term1st22*term2nd22;
13882 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13883 Double_t denominator22 = 0.;
13884 if(TMath::Abs(sumOfW1st22*sumOfW2nd22)>0.)
13885 {
13886 denominator22 = 1.-sumOfWW22/(sumOfW1st22*sumOfW2nd22);
13887 if(TMath::Abs(denominator22)>0.)
13888 {
13889 // covariance:
13890 Double_t covariance22 = numerator22/denominator22;
13891 // weight dependent prefactor for covariance:
13892 Double_t wPrefactor22 = sumOfWW22/(sumOfW1st22*sumOfW2nd22);
13893 // finally, store "weighted" covariance:
13894 fIntFlowCovariancesNUA->SetBinContent(22,wPrefactor22*covariance22);
13895 } // end of if(TMath::Abs(denominator22)>0.)
13896 } // end of if(TMath::Abs(sumOfW1st22*sumOfW2nd22)>0.)
0328db2d 13897
13898 // Cov(<cos(phi1+phi2)>,<cos(phi1-phi2-phi3)>):
13899 Double_t product23 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(23); // <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>
13900 Double_t term1st23 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13901 Double_t term2nd23 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13902 Double_t sumOfW1st23 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13903 Double_t sumOfW2nd23 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13904 Double_t sumOfWW23 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(23); // W_{<cos(phi1+phi2)>} * W_{<cos(phi1-phi2-phi3)>}
13905 // numerator in the expression for the the unbiased estimator for covariance:
13906 Double_t numerator23 = product23 - term1st23*term2nd23;
13907 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13908 Double_t denominator23 = 0.;
13909 if(TMath::Abs(sumOfW1st23*sumOfW2nd23)>0.)
13910 {
13911 denominator23 = 1.-sumOfWW23/(sumOfW1st23*sumOfW2nd23);
13912 if(TMath::Abs(denominator23)>0.)
13913 {
13914 // covariance:
13915 Double_t covariance23 = numerator23/denominator23;
13916 // weight dependent prefactor for covariance:
13917 Double_t wPrefactor23 = sumOfWW23/(sumOfW1st23*sumOfW2nd23);
13918 // finally, store "weighted" covariance:
13919 fIntFlowCovariancesNUA->SetBinContent(23,wPrefactor23*covariance23);
13920 } // end of if(TMath::Abs(denominator23)>0.)
13921 } // end of if(TMath::Abs(sumOfW1st23*sumOfW2nd23)>0.)
13922
0328db2d 13923 // Cov(<cos(phi1+phi2)>,<sin(phi1-phi2-phi3)>):
13924 Double_t product24 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(24); // <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>
13925 Double_t term1st24 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13926 Double_t term2nd24 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13927 Double_t sumOfW1st24 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13928 Double_t sumOfW2nd24 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13929 Double_t sumOfWW24 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(24); // W_{<cos(phi1+phi2)>} * W_{<sin(phi1-phi2-phi3)>}
13930 // numerator in the expression for the the unbiased estimator for covariance:
13931 Double_t numerator24 = product24 - term1st24*term2nd24;
13932 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13933 Double_t denominator24 = 0.;
13934 if(TMath::Abs(sumOfW1st24*sumOfW2nd24)>0.)
13935 {
13936 denominator24 = 1.-sumOfWW24/(sumOfW1st24*sumOfW2nd24);
13937 if(TMath::Abs(denominator24)>0.)
13938 {
13939 // covariance:
13940 Double_t covariance24 = numerator24/denominator24;
13941 // weight dependent prefactor for covariance:
13942 Double_t wPrefactor24 = sumOfWW24/(sumOfW1st24*sumOfW2nd24);
13943 // finally, store "weighted" covariance:
13944 fIntFlowCovariancesNUA->SetBinContent(24,wPrefactor24*covariance24);
13945 } // end of if(TMath::Abs(denominator24)>0.)
13946 } // end of if(TMath::Abs(sumOfW1st24*sumOfW2nd24)>0.)
0328db2d 13947
13948 // Cov(<sin(phi1+phi2)>,<cos(phi1-phi2-phi3)>):
13949 Double_t product25 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(25); // <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>
13950 Double_t term1st25 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13951 Double_t term2nd25 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13952 Double_t sumOfW1st25 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13953 Double_t sumOfW2nd25 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13954 Double_t sumOfWW25 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(25); // W_{<sin(phi1+phi2)>} * W_{<cos(phi1-phi2-phi3)>}
13955 // numerator in the expression for the the unbiased estimator for covariance:
13956 Double_t numerator25 = product25 - term1st25*term2nd25;
13957 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13958 Double_t denominator25 = 0.;
13959 if(TMath::Abs(sumOfW1st25*sumOfW2nd25)>0.)
13960 {
13961 denominator25 = 1.-sumOfWW25/(sumOfW1st25*sumOfW2nd25);
13962 if(TMath::Abs(denominator25)>0.)
13963 {
13964 // covariance:
13965 Double_t covariance25 = numerator25/denominator25;
13966 // weight dependent prefactor for covariance:
13967 Double_t wPrefactor25 = sumOfWW25/(sumOfW1st25*sumOfW2nd25);
13968 // finally, store "weighted" covariance:
13969 fIntFlowCovariancesNUA->SetBinContent(25,wPrefactor25*covariance25);
13970 } // end of if(TMath::Abs(denominator25)>0.)
13971 } // end of if(TMath::Abs(sumOfW1st25*sumOfW2nd25)>0.)
13972
0328db2d 13973 // Cov(<sin(phi1+phi2)>,<sin(phi1-phi2-phi3)>):
13974 Double_t product26 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(26); // <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>
13975 Double_t term1st26 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13976 Double_t term2nd26 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13977 Double_t sumOfW1st26 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13978 Double_t sumOfW2nd26 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13979 Double_t sumOfWW26 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(26); // W_{<sin(phi1+phi2)>} * W_{<sin(phi1-phi2-phi3)>}
13980 // numerator in the expression for the the unbiased estimator for covariance:
13981 Double_t numerator26 = product26 - term1st26*term2nd26;
13982 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13983 Double_t denominator26 = 0.;
13984 if(TMath::Abs(sumOfW1st26*sumOfW2nd26)>0.)
13985 {
13986 denominator26 = 1.-sumOfWW26/(sumOfW1st26*sumOfW2nd26);
13987 if(TMath::Abs(denominator26)>0.)
13988 {
13989 // covariance:
13990 Double_t covariance26 = numerator26/denominator26;
13991 // weight dependent prefactor for covariance:
13992 Double_t wPrefactor26 = sumOfWW26/(sumOfW1st26*sumOfW2nd26);
13993 // finally, store "weighted" covariance:
13994 fIntFlowCovariancesNUA->SetBinContent(26,wPrefactor26*covariance26);
13995 } // end of if(TMath::Abs(denominator26)>0.)
13996 } // end of if(TMath::Abs(sumOfW1st26*sumOfW2nd26)>0.)
13997
0328db2d 13998 // Cov(<cos(phi1-phi2-phi3)>,<sin(phi1-phi2-phi3)>):
13999 Double_t product27 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(27); // <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>
b92ea2b9 14000 Double_t term1st27 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
0328db2d 14001 Double_t term2nd27 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
b92ea2b9 14002 Double_t sumOfW1st27 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
0328db2d 14003 Double_t sumOfW2nd27 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
14004 Double_t sumOfWW27 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(27); // W_{<cos(phi1-phi2-phi3)>} * W_{<sin(phi1-phi2-phi3)>}
14005 // numerator in the expression for the the unbiased estimator for covariance:
14006 Double_t numerator27 = product27 - term1st27*term2nd27;
14007 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 14008 Double_t denominator27 = 0.;
14009 if(TMath::Abs(sumOfW1st27*sumOfW2nd27)>0.)
14010 {
14011 denominator27 = 1.-sumOfWW27/(sumOfW1st27*sumOfW2nd27);
14012 if(TMath::Abs(denominator27)>0.)
14013 {
14014 // covariance:
14015 Double_t covariance27 = numerator27/denominator27;
14016 // weight dependent prefactor for covariance:
14017 Double_t wPrefactor27 = sumOfWW27/(sumOfW1st27*sumOfW2nd27);
14018 // finally, store "weighted" covariance:
14019 fIntFlowCovariancesNUA->SetBinContent(27,wPrefactor27*covariance27);
14020 } // end of if(TMath::Abs(denominator27)>0.)
14021 } // end of if(TMath::Abs(sumOfW1st27*sumOfW2nd27)>0.)
14022
0328db2d 14023} // end of AliFlowAnalysisWithQCumulants::CalculateCovariancesNUAIntFlow()
14024
e1d101a6 14025//=======================================================================================================================
0328db2d 14026
489d5531 14027void AliFlowAnalysisWithQCumulants::FinalizeCorrelationsIntFlow()
14028{
14029 // From profile fIntFlowCorrelationsPro access measured correlations and spread,
14030 // correctly calculate the statistical errors and store the final results and
14031 // statistical errors for correlations in histogram fIntFlowCorrelationsHist.
14032 //
14033 // Remark: Statistical error of correlation is calculated as:
14034 //
14035 // statistical error = termA * spread * termB:
14036 // termA = sqrt{sum_{i=1}^{N} w^2}/(sum_{i=1}^{N} w)
14037 // termB = 1/sqrt(1-termA^2)
b3dacf6b 14038 //
14039
489d5531 14040 for(Int_t ci=1;ci<=4;ci++) // correlation index
14041 {
b40a910e 14042 if(fIntFlowCorrelationsPro->GetBinEffectiveEntries(ci) < 2 || fIntFlowSquaredCorrelationsPro->GetBinEffectiveEntries(ci) < 2)
14043 {
14044 fIntFlowCorrelationsPro->SetBinError(ci,0.);
14045 fIntFlowSquaredCorrelationsPro->SetBinError(ci,0.);
14046 continue;
14047 }
489d5531 14048 Double_t correlation = fIntFlowCorrelationsPro->GetBinContent(ci);
b40a910e 14049 Double_t squaredCorrelation = fIntFlowSquaredCorrelationsPro->GetBinContent(ci);
14050 Double_t spread = 0.;
14051 if(squaredCorrelation-correlation*correlation >= 0.)
14052 {
14053 spread = pow(squaredCorrelation-correlation*correlation,0.5);
14054 } else
14055 {
14056 cout<<endl;
14057 cout<<Form(" WARNING: Imaginary 'spread' for %d-particle correlation!!!! ",2*ci)<<endl;
14058 cout<<endl;
14059 }
489d5531 14060 Double_t sumOfLinearEventWeights = fIntFlowSumOfEventWeights[0]->GetBinContent(ci);
14061 Double_t sumOfQuadraticEventWeights = fIntFlowSumOfEventWeights[1]->GetBinContent(ci);
14062 Double_t termA = 0.;
14063 Double_t termB = 0.;
b3dacf6b 14064 if(TMath::Abs(sumOfLinearEventWeights) > 0.) // to be improved - shall I omitt here Abs() ?
489d5531 14065 {
14066 termA = pow(sumOfQuadraticEventWeights,0.5)/sumOfLinearEventWeights;
14067 } else
14068 {
b3dacf6b 14069 cout<<endl;
14070 cout<<" WARNING (QC): sumOfLinearEventWeights == 0 in method FinalizeCorrelationsIntFlow() !!!!"<<endl;
14071 cout<<" (for "<<2*ci<<"-particle correlation)"<<endl;
14072 cout<<endl;
489d5531 14073 }
14074 if(1.-pow(termA,2.) > 0.)
14075 {
14076 termB = 1./pow(1-pow(termA,2.),0.5);
14077 } else
14078 {
b3dacf6b 14079 cout<<endl;
14080 cout<<" WARNING (QC): 1.-pow(termA,2.) <= 0 in method FinalizeCorrelationsIntFlow() !!!!"<<endl;
14081 cout<<" (for "<<2*ci<<"-particle correlation)"<<endl;
14082 cout<<endl;
489d5531 14083 }
14084 Double_t statisticalError = termA * spread * termB;
14085 fIntFlowCorrelationsHist->SetBinContent(ci,correlation);
14086 fIntFlowCorrelationsHist->SetBinError(ci,statisticalError);
ff70ca91 14087 } // end of for(Int_t ci=1;ci<=4;ci++) // correlation index
14088
b3dacf6b 14089 // Versus multiplicity:
14090 if(!fCalculateCumulantsVsM){return;}
ff70ca91 14091 for(Int_t ci=0;ci<=3;ci++) // correlation index
14092 {
14093 Int_t nBins = fIntFlowCorrelationsVsMPro[ci]->GetNbinsX();
14094 for(Int_t b=1;b<=nBins;b++) // looping over multiplicity bins
14095 {
b40a910e 14096 if(fIntFlowCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b) < 2 || fIntFlowSquaredCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b) < 2)
14097 {
14098 fIntFlowCorrelationsVsMPro[ci]->SetBinError(b,0.);
14099 fIntFlowSquaredCorrelationsVsMPro[ci]->SetBinError(b,0.);
14100 continue;
14101 }
ff70ca91 14102 Double_t correlationVsM = fIntFlowCorrelationsVsMPro[ci]->GetBinContent(b);
b40a910e 14103 Double_t squaredCorrelationVsM = fIntFlowSquaredCorrelationsVsMPro[ci]->GetBinContent(b);
14104 Double_t spreadVsM = 0.;
14105 if(squaredCorrelationVsM-correlationVsM*correlationVsM >= 0.)
14106 {
14107 spreadVsM = pow(squaredCorrelationVsM-correlationVsM*correlationVsM,0.5);
14108 } else
14109 {
14110 cout<<endl;
14111 cout<<Form(" WARNING (QC): Imaginary 'spreadVsM' for ci = %d, bin = %d, entries = %f !!!!",
14112 ci,b,fIntFlowCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b))<<endl;
14113 cout<<endl;
14114 }
ff70ca91 14115 Double_t sumOfLinearEventWeightsVsM = fIntFlowSumOfEventWeightsVsM[ci][0]->GetBinContent(b);
14116 Double_t sumOfQuadraticEventWeightsVsM = fIntFlowSumOfEventWeightsVsM[ci][1]->GetBinContent(b);
14117 Double_t termAVsM = 0.;
14118 Double_t termBVsM = 0.;
b40a910e 14119 if(sumOfLinearEventWeightsVsM > 0.)
ff70ca91 14120 {
14121 termAVsM = pow(sumOfQuadraticEventWeightsVsM,0.5)/sumOfLinearEventWeightsVsM;
b3dacf6b 14122 }
ff70ca91 14123 if(1.-pow(termAVsM,2.) > 0.)
14124 {
14125 termBVsM = 1./pow(1-pow(termAVsM,2.),0.5);
b3dacf6b 14126 }
ff70ca91 14127 Double_t statisticalErrorVsM = termAVsM * spreadVsM * termBVsM;
14128 fIntFlowCorrelationsVsMHist[ci]->SetBinContent(b,correlationVsM);
14129 fIntFlowCorrelationsVsMHist[ci]->SetBinError(b,statisticalErrorVsM);
14130 } // end of for(Int_t b=1;b<=nBins;b++)
14131 } // end of for(Int_t ci=1;ci<=4;ci++) // correlation index
14132
489d5531 14133} // end of AliFlowAnalysisWithQCumulants::FinalizeCorrelationsIntFlow()
14134
e1d101a6 14135//=======================================================================================================================
489d5531 14136
489d5531 14137void AliFlowAnalysisWithQCumulants::FillAverageMultiplicities(Int_t nRP)
14138{
b77b6434 14139 // Fill profile fAverageMultiplicity to hold average multiplicities and
14140 // number of events for events with nRP>=0, nRP>=1, ... , and nRP>=8
489d5531 14141
14142 // Binning of fAverageMultiplicity is organized as follows:
14143 // 1st bin: all events (including the empty ones)
14144 // 2nd bin: event with # of RPs greater or equal to 1
14145 // 3rd bin: event with # of RPs greater or equal to 2
14146 // 4th bin: event with # of RPs greater or equal to 3
14147 // 5th bin: event with # of RPs greater or equal to 4
14148 // 6th bin: event with # of RPs greater or equal to 5
14149 // 7th bin: event with # of RPs greater or equal to 6
14150 // 8th bin: event with # of RPs greater or equal to 7
14151 // 9th bin: event with # of RPs greater or equal to 8
14152
489d5531 14153 if(nRP<0)
14154 {
b77b6434 14155 cout<<endl;
14156 cout<<" WARNING (QC): nRP<0 in in AFAWQC::FAM() !!!!"<<endl;
14157 cout<<endl;
489d5531 14158 exit(0);
14159 }
14160
14161 for(Int_t i=0;i<9;i++)
14162 {
b77b6434 14163 if(nRP>=i){fAvMultiplicity->Fill(i+0.5,nRP,1);}
489d5531 14164 }
14165
14166} // end of AliFlowAnalysisWithQCumulants::FillAverageMultiplicities(nRP)
14167
e1d101a6 14168//=======================================================================================================================
489d5531 14169
489d5531 14170void AliFlowAnalysisWithQCumulants::CalculateCumulantsIntFlow()
b3dacf6b 14171{
b92ea2b9 14172 // a) Calculate Q-cumulants from the measured multiparticle correlations;
14173 // b) Propagate the statistical errors from measured multiparticle correlations to statistical errors of Q-cumulants;
14174 // c) Remark: Q-cumulants calculated in this method are biased by non-uniform acceptance of detector !!!!
14175 // Method CalculateQcumulantsCorrectedForNUAIntFlow() is called afterwards to correct for this bias;
14176 // d) Store the results and statistical error of Q-cumulants in histogram fIntFlowQcumulants.
14177 // Binning of fIntFlowQcumulants is organized as follows:
489d5531 14178 //
b3dacf6b 14179 // 1st bin: QC{2}
14180 // 2nd bin: QC{4}
14181 // 3rd bin: QC{6}
14182 // 4th bin: QC{8}
14183 //
489d5531 14184
b3dacf6b 14185 // Correlations:
489d5531 14186 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
14187 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
14188 Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
14189 Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
b3dacf6b 14190 // Statistical errors of average 2-, 4-, 6- and 8-particle azimuthal correlations:
489d5531 14191 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1); // statistical error of <2>
14192 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2); // statistical error of <4>
14193 Double_t sixError = fIntFlowCorrelationsHist->GetBinError(3); // statistical error of <6>
14194 Double_t eightError = fIntFlowCorrelationsHist->GetBinError(4); // statistical error of <8>
b3dacf6b 14195 // Covariances (multiplied by prefactor depending on weights - see comments in CalculateCovariancesIntFlow()):
8e1cefdd 14196 Double_t wCov24 = 0.; // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14197 Double_t wCov26 = 0.; // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14198 Double_t wCov28 = 0.; // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14199 Double_t wCov46 = 0.; // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14200 Double_t wCov48 = 0.; // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14201 Double_t wCov68 = 0.; // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
14202 if(!fForgetAboutCovariances)
14203 {
14204 wCov24 = fIntFlowCovariances->GetBinContent(1); // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14205 wCov26 = fIntFlowCovariances->GetBinContent(2); // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14206 wCov28 = fIntFlowCovariances->GetBinContent(3); // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14207 wCov46 = fIntFlowCovariances->GetBinContent(4); // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14208 wCov48 = fIntFlowCovariances->GetBinContent(5); // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14209 wCov68 = fIntFlowCovariances->GetBinContent(6); // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
14210 }
489d5531 14211 // Q-cumulants:
14212 Double_t qc2 = 0.; // QC{2}
14213 Double_t qc4 = 0.; // QC{4}
14214 Double_t qc6 = 0.; // QC{6}
14215 Double_t qc8 = 0.; // QC{8}
b3dacf6b 14216 if(TMath::Abs(two) > 0.){qc2 = two;}
14217 if(TMath::Abs(four) > 0.){qc4 = four-2.*pow(two,2.);}
14218 if(TMath::Abs(six) > 0.){qc6 = six-9.*two*four+12.*pow(two,3.);}
14219 if(TMath::Abs(eight) > 0.){qc8 = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);}
14220 // Statistical errors of Q-cumulants:
489d5531 14221 Double_t qc2Error = 0.;
14222 Double_t qc4Error = 0.;
14223 Double_t qc6Error = 0.;
b3dacf6b 14224 Double_t qc8Error = 0.;
14225 // Squared statistical errors of Q-cumulants:
489d5531 14226 //Double_t qc2ErrorSquared = 0.;
14227 Double_t qc4ErrorSquared = 0.;
14228 Double_t qc6ErrorSquared = 0.;
b3dacf6b 14229 Double_t qc8ErrorSquared = 0.;
14230 // Statistical error of QC{2}:
14231 qc2Error = twoError;
14232 // Statistical error of QC{4}:
489d5531 14233 qc4ErrorSquared = 16.*pow(two,2.)*pow(twoError,2)+pow(fourError,2.)
14234 - 8.*two*wCov24;
14235 if(qc4ErrorSquared>0.)
14236 {
14237 qc4Error = pow(qc4ErrorSquared,0.5);
14238 } else
14239 {
b3dacf6b 14240 cout<<" WARNING (QC): Statistical error of QC{4} is imaginary !!!!"<<endl;
14241 }
14242 // Statistical error of QC{6}:
489d5531 14243 qc6ErrorSquared = 81.*pow(4.*pow(two,2.)-four,2.)*pow(twoError,2.)
14244 + 81.*pow(two,2.)*pow(fourError,2.)
14245 + pow(sixError,2.)
14246 - 162.*two*(4.*pow(two,2.)-four)*wCov24
14247 + 18.*(4.*pow(two,2.)-four)*wCov26
b3dacf6b 14248 - 18.*two*wCov46;
489d5531 14249 if(qc6ErrorSquared>0.)
14250 {
14251 qc6Error = pow(qc6ErrorSquared,0.5);
14252 } else
14253 {
b3dacf6b 14254 cout<<" WARNING (QC): Statistical error of QC{6} is imaginary !!!!"<<endl;
14255 }
14256 // Statistical error of QC{8}:
489d5531 14257 qc8ErrorSquared = 256.*pow(36.*pow(two,3.)-18.*four*two+six,2.)*pow(twoError,2.)
14258 + 1296.*pow(4.*pow(two,2.)-four,2.)*pow(fourError,2.)
14259 + 256.*pow(two,2.)*pow(sixError,2.)
14260 + pow(eightError,2.)
14261 - 1152.*(36.*pow(two,3.)-18.*four*two+six)*(4.*pow(two,2.)-four)*wCov24
14262 + 512.*two*(36.*pow(two,3.)-18.*four*two+six)*wCov26
14263 - 32.*(36.*pow(two,3.)-18.*four*two+six)*wCov28
14264 - 1152.*two*(4.*pow(two,2.)-four)*wCov46
14265 + 72.*(4.*pow(two,2.)-four)*wCov48
14266 - 32.*two*wCov68;
14267 if(qc8ErrorSquared>0.)
14268 {
14269 qc8Error = pow(qc8ErrorSquared,0.5);
14270 } else
14271 {
b3dacf6b 14272 cout<<"WARNING (QC): Statistical error of QC{8} is imaginary !!!!"<<endl;
489d5531 14273 }
b3dacf6b 14274 // Store the results and statistical errors for Q-cumulants:
14275 if(TMath::Abs(qc2)>0.)
14276 {
14277 fIntFlowQcumulants->SetBinContent(1,qc2);
14278 fIntFlowQcumulants->SetBinError(1,qc2Error);
14279 }
14280 if(TMath::Abs(qc4)>0.)
14281 {
14282 fIntFlowQcumulants->SetBinContent(2,qc4);
14283 fIntFlowQcumulants->SetBinError(2,qc4Error);
14284 }
14285 if(TMath::Abs(qc6)>0.)
14286 {
14287 fIntFlowQcumulants->SetBinContent(3,qc6);
14288 fIntFlowQcumulants->SetBinError(3,qc6Error);
14289 }
14290 if(TMath::Abs(qc8)>0.)
14291 {
14292 fIntFlowQcumulants->SetBinContent(4,qc8);
14293 fIntFlowQcumulants->SetBinError(4,qc8Error);
14294 }
14295
14296 // Versus multiplicity:
14297 if(!fCalculateCumulantsVsM){return;}
1db7eced 14298 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // tbi (hardwired 0)
b3dacf6b 14299 Double_t value[4] = {0.}; // QCs vs M
14300 Double_t error[4] = {0.}; // error of QCs vs M
14301 Double_t dSum1[4] = {0.}; // sum value_i/(error_i)^2
14302 Double_t dSum2[4] = {0.}; // sum 1/(error_i)^2
1db7eced 14303 two = 0.; // TBI can be done safer, lines below included
14304 twoError = 0.;
14305 four = 0.;
14306 fourError = 0.;
14307 six = 0.;
14308 sixError = 0.;
14309 eight = 0.;
14310 eightError = 0.;
14311 wCov24 = 0.;
14312 wCov26 = 0.;
14313 wCov28 = 0.;
14314 wCov46 = 0.;
14315 wCov48 = 0.;
14316 wCov68 = 0.;
9da1a4f3 14317 for(Int_t b=1;b<=nBins;b++)
14318 {
b3dacf6b 14319 // Correlations:
1db7eced 14320 if(!fUse2DHistograms)
14321 {
14322 if(!fUseQvectorTerms)
14323 {
14324
14325 cout<<"TProfile"<<endl;
14326
14327 two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>>
14328 four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>>
14329 six = fIntFlowCorrelationsVsMHist[2]->GetBinContent(b); // <<6>>
14330 eight = fIntFlowCorrelationsVsMHist[3]->GetBinContent(b); // <<8>>
14331 } // end of if(!fUseQvectorTerms)
14332 } else
14333 {
14334 // TH2D:
14335
14336 cout<<"TH2D"<<endl;
14337
14338 two = fCorrelation2468VsMult[0]->ProjectionY("2",b,b)->GetMean(); // <<2>>
14339 four = fCorrelation2468VsMult[1]->ProjectionY("4",b,b)->GetMean(); // <<4>>
14340 six = fCorrelation2468VsMult[2]->ProjectionY("6",b,b)->GetMean(); // <<6>>
14341 eight = fCorrelation2468VsMult[3]->ProjectionY("8",b,b)->GetMean(); // <<8>>
14342 }
14343 if(fUseQvectorTerms)
14344 {
14345 Double_t dM = fIntFlowCorrelationsVsMPro[0]->GetBinLowEdge(b);
14346 if(dM>3.) // TBI re-think this if statement
14347 {
14348
14349 cout<<"Q-vector terms"<<endl;
14350
14351 two = (fQvectorTermsVsMult[0]->ProjectionY("qvt0a",b,b)->GetMean()-1.)/(dM-1.);
14352 Double_t dTerm1 = (dM*(2.*dM-1.))*fQvectorTermsVsMult[2]->ProjectionY("qvt2",b,b)->GetMean();
14353 Double_t dTerm2 = dM*fQvectorTermsVsMult[1]->ProjectionY("qvt1",b,b)->GetMean();
14354 Double_t dTerm3 = -2.*pow(dM,1.5)*fQvectorTermsVsMult[3]->ProjectionY("qvt3",b,b)->GetMean();
14355 Double_t dTerm4 = -4.*(dM-2.)*dM*fQvectorTermsVsMult[0]->ProjectionY("qvt0b",b,b)->GetMean();
14356 Double_t dTerm5 = 2.*dM*(dM-3.);
14357 four = (dTerm1+dTerm2+dTerm3+dTerm4+dTerm5)/(dM*(dM-1.)*(dM-2.)*(dM-3.));
14358 } // end of if(dM>3.) // TBI rethink this if statement
14359 } // end of else if(fUseQvectorTerms)
b3dacf6b 14360 // Statistical errors of average 2-, 4-, 6- and 8-particle azimuthal correlations:
1db7eced 14361 if(!fUse2DHistograms)
14362 {
14363 if(!fUseQvectorTerms)
14364 {
14365 twoError = fIntFlowCorrelationsVsMHist[0]->GetBinError(b); // <2> error
14366 fourError = fIntFlowCorrelationsVsMHist[1]->GetBinError(b); // <4> error
14367 sixError = fIntFlowCorrelationsVsMHist[2]->GetBinError(b); // <6> error
14368 eightError = fIntFlowCorrelationsVsMHist[3]->GetBinError(b); // <8> error
14369 }
14370 } else
14371 {
14372 // TH2D:
14373 twoError = fCorrelation2468VsMult[0]->ProjectionY("2",b,b)->GetMeanError(); // <2> error
14374 fourError = fCorrelation2468VsMult[1]->ProjectionY("4",b,b)->GetMeanError(); // <4> error
14375 sixError = fCorrelation2468VsMult[2]->ProjectionY("6",b,b)->GetMeanError(); // <6> error
14376 eightError = fCorrelation2468VsMult[3]->ProjectionY("8",b,b)->GetMeanError(); // <8> error
14377 } // end of else
14378 if(fUseQvectorTerms)
14379 {
14380 Double_t dM = fIntFlowCorrelationsVsMPro[0]->GetBinLowEdge(b);
14381 if(dM>3.) // TBI re-think this if statement
14382 {
14383 twoError = (fQvectorTermsVsMult[0]->ProjectionY("qvt0a",b,b)->GetMeanError())/(dM-1.);
14384 }
14385 } // end of if(fUseQvectorTerms)
14386
b3dacf6b 14387 // Covariances (multiplied by prefactor depending on weights - see comments in CalculateCovariancesIntFlow()):
8e1cefdd 14388 if(!fForgetAboutCovariances)
14389 {
1db7eced 14390 if(!fUse2DHistograms)
14391 {
14392 if(!fUseQvectorTerms)
14393 {
14394 wCov24 = fIntFlowCovariancesVsM[0]->GetBinContent(b); // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14395 wCov26 = fIntFlowCovariancesVsM[1]->GetBinContent(b); // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14396 wCov28 = fIntFlowCovariancesVsM[2]->GetBinContent(b); // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14397 wCov46 = fIntFlowCovariancesVsM[3]->GetBinContent(b); // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14398 wCov48 = fIntFlowCovariancesVsM[4]->GetBinContent(b); // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14399 wCov68 = fIntFlowCovariancesVsM[5]->GetBinContent(b); // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
14400 }
14401 } else
14402 {
14403 // TH2D:
14404 Int_t nEntries = fCorrelationProduct2468VsMult[0]->ProjectionY("Cov(2,4)",b,b)->GetEntries();
14405 if(nEntries>0.)
14406 {
14407 wCov24 = (fCorrelationProduct2468VsMult[0]->ProjectionY("Cov(2,4)",b,b)->GetMean()
14408 - (fCorrelation2468VsMult[0]->ProjectionY("2cov",b,b)->GetMean())
14409 * (fCorrelation2468VsMult[1]->ProjectionY("4cov",b,b)->GetMean()))
14410 / nEntries; // w*Cov(<2>,<4>)
14411 } // end of if(nEntries>0. && dn2pCombinations>0. && dn4pCombinations>0.)
14412 // ... TBI add other covariances as well
14413 }
14414 } // end of if(!fForgetAboutCovariances)
9da1a4f3 14415 // Q-cumulants:
14416 qc2 = 0.; // QC{2}
14417 qc4 = 0.; // QC{4}
14418 qc6 = 0.; // QC{6}
14419 qc8 = 0.; // QC{8}
b3dacf6b 14420 if(TMath::Abs(two) > 0.){qc2 = two;}
14421 if(TMath::Abs(four) > 0.){qc4 = four-2.*pow(two,2.);}
14422 if(TMath::Abs(six) > 0.){qc6 = six-9.*two*four+12.*pow(two,3.);}
14423 if(TMath::Abs(eight) > 0.){qc8 = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);}
14424 // Statistical errors of Q-cumulants:
9da1a4f3 14425 qc2Error = 0.;
14426 qc4Error = 0.;
14427 qc6Error = 0.;
b3dacf6b 14428 qc8Error = 0.;
14429 // Squared statistical errors of Q-cumulants:
9da1a4f3 14430 //Double_t qc2ErrorSquared = 0.;
14431 qc4ErrorSquared = 0.;
14432 qc6ErrorSquared = 0.;
b3dacf6b 14433 qc8ErrorSquared = 0.;
14434 // Statistical error of QC{2}:
14435 qc2Error = twoError;
14436 // Statistical error of QC{4}:
9da1a4f3 14437 qc4ErrorSquared = 16.*pow(two,2.)*pow(twoError,2)+pow(fourError,2.)
1db7eced 14438 - 8.*two*wCov24;
14439 if(fUseQvectorTerms){qc4ErrorSquared = 0.01*pow(qc4,2.);} // TBI for the time being use bootstrap and ignore this error completely, this method needs an urgent clean-up, as the code is getting fragile here :'(
9da1a4f3 14440 if(qc4ErrorSquared>0.)
14441 {
14442 qc4Error = pow(qc4ErrorSquared,0.5);
14443 } else
14444 {
14445 // cout<<"WARNING: Statistical error of QC{4} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
b3dacf6b 14446 }
14447 // Statistical error of QC{6}:
9da1a4f3 14448 qc6ErrorSquared = 81.*pow(4.*pow(two,2.)-four,2.)*pow(twoError,2.)
14449 + 81.*pow(two,2.)*pow(fourError,2.)
14450 + pow(sixError,2.)
14451 - 162.*two*(4.*pow(two,2.)-four)*wCov24
14452 + 18.*(4.*pow(two,2.)-four)*wCov26
b3dacf6b 14453 - 18.*two*wCov46;
9da1a4f3 14454 if(qc6ErrorSquared>0.)
14455 {
14456 qc6Error = pow(qc6ErrorSquared,0.5);
14457 } else
14458 {
14459 // cout<<"WARNING: Statistical error of QC{6} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
b3dacf6b 14460 }
14461 // Statistical error of QC{8}:
9da1a4f3 14462 qc8ErrorSquared = 256.*pow(36.*pow(two,3.)-18.*four*two+six,2.)*pow(twoError,2.)
14463 + 1296.*pow(4.*pow(two,2.)-four,2.)*pow(fourError,2.)
14464 + 256.*pow(two,2.)*pow(sixError,2.)
14465 + pow(eightError,2.)
14466 - 1152.*(36.*pow(two,3.)-18.*four*two+six)*(4.*pow(two,2.)-four)*wCov24
14467 + 512.*two*(36.*pow(two,3.)-18.*four*two+six)*wCov26
14468 - 32.*(36.*pow(two,3.)-18.*four*two+six)*wCov28
14469 - 1152.*two*(4.*pow(two,2.)-four)*wCov46
14470 + 72.*(4.*pow(two,2.)-four)*wCov48
14471 - 32.*two*wCov68;
14472 if(qc8ErrorSquared>0.)
14473 {
14474 qc8Error = pow(qc8ErrorSquared,0.5);
14475 } else
14476 {
14477 // cout<<"WARNING: Statistical error of QC{8} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
14478 }
b3dacf6b 14479 // Store the results and statistical errors for Q-cumulants:
14480 if(TMath::Abs(qc2)>0.)
14481 {
14482 fIntFlowQcumulantsVsM[0]->SetBinContent(b,qc2);
14483 fIntFlowQcumulantsVsM[0]->SetBinError(b,qc2Error);
14484 }
14485 if(TMath::Abs(qc4)>0.)
14486 {
14487 fIntFlowQcumulantsVsM[1]->SetBinContent(b,qc4);
14488 fIntFlowQcumulantsVsM[1]->SetBinError(b,qc4Error);
14489 }
14490 if(TMath::Abs(qc6)>0.)
14491 {
14492 fIntFlowQcumulantsVsM[2]->SetBinContent(b,qc6);
14493 fIntFlowQcumulantsVsM[2]->SetBinError(b,qc6Error);
14494 }
14495 if(TMath::Abs(qc8)>0.)
14496 {
14497 fIntFlowQcumulantsVsM[3]->SetBinContent(b,qc8);
14498 fIntFlowQcumulantsVsM[3]->SetBinError(b,qc8Error);
14499 }
14500 // Rebin in M:
14501 for(Int_t co=0;co<4;co++)
14502 {
b40a910e 14503 if(fIntFlowCorrelationsVsMPro[co]->GetBinEffectiveEntries(b)<2){continue;}
b3dacf6b 14504 value[co] = fIntFlowQcumulantsVsM[co]->GetBinContent(b);
14505 error[co] = fIntFlowQcumulantsVsM[co]->GetBinError(b);
14506 if(error[co]>0.)
14507 {
14508 dSum1[co]+=value[co]/(error[co]*error[co]);
14509 dSum2[co]+=1./(error[co]*error[co]);
14510 }
14511 } // end of for(Int_t co=0;co<4;co++)
9da1a4f3 14512 } // end of for(Int_t b=1;b<=nBins;b++)
b3dacf6b 14513 // Store rebinned Q-cumulants:
14514 for(Int_t co=0;co<4;co++)
14515 {
14516 if(dSum2[co]>0.)
14517 {
14518 fIntFlowQcumulantsRebinnedInM->SetBinContent(co+1,dSum1[co]/dSum2[co]);
14519 fIntFlowQcumulantsRebinnedInM->SetBinError(co+1,pow(1./dSum2[co],0.5));
14520 }
14521 } // end of for(Int_t co=0;co<4;co++)
14522
489d5531 14523} // end of AliFlowAnalysisWithQCumulants::CalculateCumulantsIntFlow()
14524
489d5531 14525//================================================================================================================================
14526
b92ea2b9 14527void AliFlowAnalysisWithQCumulants::CalculateReferenceFlow()
489d5531 14528{
b92ea2b9 14529 // a) Calculate the final results for reference flow estimates from Q-cumulants;
14530 // b) Propagate the statistical errors to reference flow estimates from statistical error of Q-cumulants;
0328db2d 14531 // c) Store the results and statistical errors of reference flow estimates in histogram fIntFlow.
489d5531 14532 // Binning of fIntFlow is organized as follows:
14533 //
b3dacf6b 14534 // 1st bin: v{2,QC}
14535 // 2nd bin: v{4,QC}
14536 // 3rd bin: v{6,QC}
14537 // 4th bin: v{8,QC}
14538 //
489d5531 14539
b3dacf6b 14540 // Reference flow estimates:
489d5531 14541 Double_t v2 = 0.; // v{2,QC}
14542 Double_t v4 = 0.; // v{4,QC}
14543 Double_t v6 = 0.; // v{6,QC}
14544 Double_t v8 = 0.; // v{8,QC}
b3dacf6b 14545 // Reference flow's statistical errors:
14546 Double_t v2Error = 0.; // v{2,QC} stat. error
14547 Double_t v4Error = 0.; // v{4,QC} stat. error
14548 Double_t v6Error = 0.; // v{6,QC} stat. error
14549 Double_t v8Error = 0.; // v{8,QC} stat. error
14550
b92ea2b9 14551 // Q-cumulants:
14552 Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); // QC{2}
14553 Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); // QC{4}
14554 Double_t qc6 = fIntFlowQcumulants->GetBinContent(3); // QC{6}
14555 Double_t qc8 = fIntFlowQcumulants->GetBinContent(4); // QC{8}
14556 // Q-cumulants's statistical errors:
14557 Double_t qc2Error = fIntFlowQcumulants->GetBinError(1); // QC{2} stat. error
14558 Double_t qc4Error = fIntFlowQcumulants->GetBinError(2); // QC{4} stat. error
14559 Double_t qc6Error = fIntFlowQcumulants->GetBinError(3); // QC{6} stat. error
14560 Double_t qc8Error = fIntFlowQcumulants->GetBinError(4); // QC{8} stat. error
14561 // Calculate reference flow estimates from Q-cumulants:
1268c371 14562 if(qc2>=0.){v2 = pow(qc2,0.5);}
b92ea2b9 14563 if(qc4<=0.){v4 = pow(-1.*qc4,1./4.);}
14564 if(qc6>=0.){v6 = pow((1./4.)*qc6,1./6.);}
14565 if(qc8<=0.){v8 = pow((-1./33.)*qc8,1./8.);}
14566 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14567 if(qc2>0.){v2Error = (1./2.)*pow(qc2,-0.5)*qc2Error;}
b92ea2b9 14568 if(qc4<0.){v4Error = (1./4.)*pow(-qc4,-3./4.)*qc4Error;}
14569 if(qc6>0.){v6Error = (1./6.)*pow(2.,-1./3.)*pow(qc6,-5./6.)*qc6Error;}
14570 if(qc8<0.){v8Error = (1./8.)*pow(33.,-1./8.)*pow(-qc8,-7./8.)*qc8Error;}
14571 // Print warnings for the 'wrong sign' cumulants:
14572 if(TMath::Abs(v2) < 1.e-44)
14573 {
14574 cout<<" WARNING: Wrong sign QC{2}, couldn't calculate v{2,QC} !!!!"<<endl;
14575 }
14576 if(TMath::Abs(v4) < 1.e-44)
14577 {
14578 cout<<" WARNING: Wrong sign QC{4}, couldn't calculate v{4,QC} !!!!"<<endl;
14579 }
14580 if(TMath::Abs(v6) < 1.e-44)
14581 {
14582 cout<<" WARNING: Wrong sign QC{6}, couldn't calculate v{6,QC} !!!!"<<endl;
14583 }
14584 if(TMath::Abs(v8) < 1.e-44)
14585 {
14586 cout<<" WARNING: Wrong sign QC{8}, couldn't calculate v{8,QC} !!!!"<<endl;
14587 }
14588 // Store the results and statistical errors of integrated flow estimates:
14589 fIntFlow->SetBinContent(1,v2);
14590 fIntFlow->SetBinError(1,v2Error);
14591 fIntFlow->SetBinContent(2,v4);
14592 fIntFlow->SetBinError(2,v4Error);
14593 fIntFlow->SetBinContent(3,v6);
14594 fIntFlow->SetBinError(3,v6Error);
14595 fIntFlow->SetBinContent(4,v8);
14596 fIntFlow->SetBinError(4,v8Error);
14597
14598 // Versus multiplicity:
14599 if(!fCalculateCumulantsVsM){return;}
14600 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
14601 for(Int_t b=1;b<=nBins;b++)
9da1a4f3 14602 {
14603 // Q-cumulants:
b92ea2b9 14604 Double_t qc2VsM = fIntFlowQcumulantsVsM[0]->GetBinContent(b); // QC{2}
14605 Double_t qc4VsM = fIntFlowQcumulantsVsM[1]->GetBinContent(b); // QC{4}
14606 Double_t qc6VsM = fIntFlowQcumulantsVsM[2]->GetBinContent(b); // QC{6}
14607 Double_t qc8VsM = fIntFlowQcumulantsVsM[3]->GetBinContent(b); // QC{8}
b3dacf6b 14608 // Q-cumulants's statistical errors:
b92ea2b9 14609 Double_t qc2ErrorVsM = fIntFlowQcumulantsVsM[0]->GetBinError(b); // QC{2} stat. error
14610 Double_t qc4ErrorVsM = fIntFlowQcumulantsVsM[1]->GetBinError(b); // QC{4} stat. error
14611 Double_t qc6ErrorVsM = fIntFlowQcumulantsVsM[2]->GetBinError(b); // QC{6} stat. error
14612 Double_t qc8ErrorVsM = fIntFlowQcumulantsVsM[3]->GetBinError(b); // QC{8} stat. error
b3dacf6b 14613 // Reference flow estimates:
b92ea2b9 14614 Double_t v2VsM = 0.; // v{2,QC}
14615 Double_t v4VsM = 0.; // v{4,QC}
14616 Double_t v6VsM = 0.; // v{6,QC}
14617 Double_t v8VsM = 0.; // v{8,QC}
14618 // Reference flow estimates errors:
14619 Double_t v2ErrorVsM = 0.; // v{2,QC} stat. error
14620 Double_t v4ErrorVsM = 0.; // v{4,QC} stat. error
14621 Double_t v6ErrorVsM = 0.; // v{6,QC} stat. error
14622 Double_t v8ErrorVsM = 0.; // v{8,QC} stat. error
b3dacf6b 14623 // Calculate reference flow estimates from Q-cumulants:
1268c371 14624 if(qc2VsM>=0.){v2VsM = pow(qc2VsM,0.5);}
b92ea2b9 14625 if(qc4VsM<=0.){v4VsM = pow(-1.*qc4VsM,1./4.);}
14626 if(qc6VsM>=0.){v6VsM = pow((1./4.)*qc6VsM,1./6.);}
14627 if(qc8VsM<=0.){v8VsM = pow((-1./33.)*qc8VsM,1./8.);}
b3dacf6b 14628 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14629 if(qc2VsM>0.){v2ErrorVsM = (1./2.)*pow(qc2VsM,-0.5)*qc2ErrorVsM;}
b92ea2b9 14630 if(qc4VsM<0.){v4ErrorVsM = (1./4.)*pow(-qc4VsM,-3./4.)*qc4ErrorVsM;}
14631 if(qc6VsM>0.){v6ErrorVsM = (1./6.)*pow(2.,-1./3.)*pow(qc6VsM,-5./6.)*qc6ErrorVsM;}
14632 if(qc8VsM<0.){v8ErrorVsM = (1./8.)*pow(33.,-1./8.)*pow(-qc8VsM,-7./8.)*qc8ErrorVsM;}
b3dacf6b 14633 // Store the results and statistical errors of integrated flow estimates:
b92ea2b9 14634 fIntFlowVsM[0]->SetBinContent(b,v2VsM);
14635 fIntFlowVsM[0]->SetBinError(b,v2ErrorVsM);
14636 fIntFlowVsM[1]->SetBinContent(b,v4VsM);
14637 fIntFlowVsM[1]->SetBinError(b,v4ErrorVsM);
14638 fIntFlowVsM[2]->SetBinContent(b,v6VsM);
14639 fIntFlowVsM[2]->SetBinError(b,v6ErrorVsM);
14640 fIntFlowVsM[3]->SetBinContent(b,v8VsM);
14641 fIntFlowVsM[3]->SetBinError(b,v8ErrorVsM);
14642 } // end of for(Int_t b=1;b<=nBins;b++)
14643
14644 // 'Rebinned in M' calculation: // to be improved - this can be implemented better:
14645 // Reference flow estimates:
14646 Double_t v2RebinnedInM = 0.; // v{2,QC}
14647 Double_t v4RebinnedInM = 0.; // v{4,QC}
14648 Double_t v6RebinnedInM = 0.; // v{6,QC}
14649 Double_t v8RebinnedInM = 0.; // v{8,QC}
14650 // Reference flow's statistical errors:
14651 Double_t v2ErrorRebinnedInM = 0.; // v{2,QC} stat. error
14652 Double_t v4ErrorRebinnedInM = 0.; // v{4,QC} stat. error
14653 Double_t v6ErrorRebinnedInM = 0.; // v{6,QC} stat. error
14654 Double_t v8ErrorRebinnedInM = 0.; // v{8,QC} stat. error
14655 // Q-cumulants:
14656 Double_t qc2RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(1); // QC{2}
14657 Double_t qc4RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(2); // QC{4}
14658 Double_t qc6RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(3); // QC{6}
14659 Double_t qc8RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(4); // QC{8}
14660 // Q-cumulants's statistical errors:
14661 Double_t qc2ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(1); // QC{2} stat. error
14662 Double_t qc4ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(2); // QC{4} stat. error
14663 Double_t qc6ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(3); // QC{6} stat. error
14664 Double_t qc8ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(4); // QC{8} stat. error
14665 // Calculate reference flow estimates from Q-cumulants:
1268c371 14666 if(qc2RebinnedInM>=0.){v2RebinnedInM = pow(qc2RebinnedInM,0.5);}
b92ea2b9 14667 if(qc4RebinnedInM<=0.){v4RebinnedInM = pow(-1.*qc4RebinnedInM,1./4.);}
14668 if(qc6RebinnedInM>=0.){v6RebinnedInM = pow((1./4.)*qc6RebinnedInM,1./6.);}
14669 if(qc8RebinnedInM<=0.){v8RebinnedInM = pow((-1./33.)*qc8RebinnedInM,1./8.);}
14670 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14671 if(qc2RebinnedInM>0.){v2ErrorRebinnedInM = (1./2.)*pow(qc2RebinnedInM,-0.5)*qc2ErrorRebinnedInM;}
b92ea2b9 14672 if(qc4RebinnedInM<0.){v4ErrorRebinnedInM = (1./4.)*pow(-qc4RebinnedInM,-3./4.)*qc4ErrorRebinnedInM;}
14673 if(qc6RebinnedInM>0.){v6ErrorRebinnedInM = (1./6.)*pow(2.,-1./3.)*pow(qc6RebinnedInM,-5./6.)*qc6ErrorRebinnedInM;}
14674 if(qc8RebinnedInM<0.){v8ErrorRebinnedInM = (1./8.)*pow(33.,-1./8.)*pow(-qc8RebinnedInM,-7./8.)*qc8ErrorRebinnedInM;}
14675 // Print warnings for the 'wrong sign' cumulants:
14676 if(TMath::Abs(v2RebinnedInM) < 1.e-44)
14677 {
14678 cout<<" WARNING: Wrong sign QC{2} rebinned in M, couldn't calculate v{2,QC} !!!!"<<endl;
14679 }
14680 if(TMath::Abs(v4RebinnedInM) < 1.e-44)
14681 {
14682 cout<<" WARNING: Wrong sign QC{4} rebinned in M, couldn't calculate v{4,QC} !!!!"<<endl;
14683 }
14684 if(TMath::Abs(v6RebinnedInM) < 1.e-44)
14685 {
14686 cout<<" WARNING: Wrong sign QC{6} rebinned in M, couldn't calculate v{6,QC} !!!!"<<endl;
14687 }
14688 if(TMath::Abs(v8RebinnedInM) < 1.e-44)
14689 {
14690 cout<<" WARNING: Wrong sign QC{8} rebinned in M, couldn't calculate v{8,QC} !!!!"<<endl;
14691 }
14692 // Store the results and statistical errors of integrated flow estimates:
14693 fIntFlowRebinnedInM->SetBinContent(1,v2RebinnedInM);
14694 fIntFlowRebinnedInM->SetBinError(1,v2ErrorRebinnedInM);
14695 fIntFlowRebinnedInM->SetBinContent(2,v4RebinnedInM);
14696 fIntFlowRebinnedInM->SetBinError(2,v4ErrorRebinnedInM);
14697 fIntFlowRebinnedInM->SetBinContent(3,v6RebinnedInM);
14698 fIntFlowRebinnedInM->SetBinError(3,v6ErrorRebinnedInM);
14699 fIntFlowRebinnedInM->SetBinContent(4,v8RebinnedInM);
14700 fIntFlowRebinnedInM->SetBinError(4,v8ErrorRebinnedInM);
14701
14702} // end of AliFlowAnalysisWithQCumulants::CalculateReferenceFlow()
489d5531 14703
489d5531 14704//================================================================================================================================
14705
489d5531 14706void AliFlowAnalysisWithQCumulants::FillCommonHistResultsIntFlow()
14707{
0dd3b008 14708 // Fill in AliFlowCommonHistResults histograms relevant for reference flow.
489d5531 14709
0dd3b008 14710 // There are two possibilities here:
14711 // a) Store minimum bias reference flow - use SetMinimumBiasReferenceFlow(kTRUE). This result is
14712 // biased by the interplay between nonflow correlations and multiplicity fluctuations and is
14713 // also stored in local histogram fIntFlow;
14714 // b) Store reference flow obtained from flow analysis performed at fixed multiplicity and
14715 // rebinned only at the end of the day - use SetMinimumBiasReferenceFlow(kFALSE). This result
14716 // is also stored in local histogram fIntFlowRebinnedInM.
489d5531 14717
0dd3b008 14718 // Reference flow estimates:
14719 Double_t v[4] = {0.};
14720 // Statistical errors of reference flow estimates:
14721 Double_t vError[4] = {0.};
489d5531 14722
0dd3b008 14723 for(Int_t b=0;b<4;b++)
14724 {
14725 if(fMinimumBiasReferenceFlow)
14726 {
14727 v[b] = fIntFlow->GetBinContent(b+1);
14728 vError[b] = fIntFlow->GetBinError(b+1);
14729 } else
14730 {
14731 v[b] = fIntFlowRebinnedInM->GetBinContent(b+1);
14732 vError[b] = fIntFlowRebinnedInM->GetBinError(b+1);
14733 }
14734 } // end of for(Int_t b=0;b<4;b++)
14735
14736 // Fill AliFlowCommonHistResults histogram:
14737 fCommonHistsResults2nd->FillIntegratedFlow(v[0],vError[0]); // to be improved (hardwired 2nd in the name)
14738 fCommonHistsResults4th->FillIntegratedFlow(v[1],vError[1]); // to be improved (hardwired 4th in the name)
403e3389 14739 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)) // to be improved (calculate also 6th and 8th order)
489d5531 14740 {
0dd3b008 14741 fCommonHistsResults6th->FillIntegratedFlow(v[2],vError[2]); // to be improved (hardwired 6th in the name)
14742 fCommonHistsResults8th->FillIntegratedFlow(v[3],vError[3]); // to be improved (hardwired 8th in the name)
489d5531 14743 }
14744
14745} // end of AliFlowAnalysisWithQCumulants::FillCommonHistResultsIntFlow()
14746
489d5531 14747//================================================================================================================================
14748
489d5531 14749void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelationsUsingParticleWeights()
14750{
14751 // Calculate all correlations needed for integrated flow using particle weights.
14752
14753 // Remark 1: When particle weights are used the binning of fIntFlowCorrelationAllPro is organized as follows:
14754 //
14755 // 1st bin: <2>_{1n|1n} = two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
14756 // 2nd bin: <2>_{2n|2n} = two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
14757 // 3rd bin: <2>_{3n|3n} = two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
14758 // 4th bin: <2>_{4n|4n} = two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
14759 // 5th bin: ---- EMPTY ----
14760 // 6th bin: <3>_{2n|1n,1n} = three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
14761 // 7th bin: <3>_{3n|2n,1n} = ...
14762 // 8th bin: <3>_{4n|2n,2n} = ...
14763 // 9th bin: <3>_{4n|3n,1n} = ...
14764 // 10th bin: ---- EMPTY ----
14765 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
14766 // 12th bin: <4>_{2n,1n|2n,1n} = ...
14767 // 13th bin: <4>_{2n,2n|2n,2n} = ...
14768 // 14th bin: <4>_{3n|1n,1n,1n} = ...
14769 // 15th bin: <4>_{3n,1n|3n,1n} = ...
14770 // 16th bin: <4>_{3n,1n|2n,2n} = ...
14771 // 17th bin: <4>_{4n|2n,1n,1n} = ...
14772 // 18th bin: ---- EMPTY ----
14773 // 19th bin: <5>_{2n|1n,1n,1n,1n} = ...
14774 // 20th bin: <5>_{2n,2n|2n,1n,1n} = ...
14775 // 21st bin: <5>_{3n,1n|2n,1n,1n} = ...
14776 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = ...
14777 // 23rd bin: ---- EMPTY ----
14778 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = ...
14779 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = ...
14780 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = ...
14781 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = ...
14782 // 28th bin: ---- EMPTY ----
14783 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = ...
14784 // 30th bin: ---- EMPTY ----
14785 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = ...
14786
14787 // Remark 2: When particle weights are used there are some extra correlations. They are stored in
14788 // fIntFlowExtraCorrelationsPro binning of which is organized as follows:
14789
14790 // 1st bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
14791 // 2nd bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
14792
14793 // multiplicity (number of particles used to determine the reaction plane)
1268c371 14794 Double_t dMult = (*fSpk)(0,0);
489d5531 14795
14796 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
14797 Double_t dReQ1n1k = (*fReQ)(0,1);
14798 Double_t dReQ2n2k = (*fReQ)(1,2);
14799 Double_t dReQ3n3k = (*fReQ)(2,3);
14800 Double_t dReQ4n4k = (*fReQ)(3,4);
14801 Double_t dReQ1n3k = (*fReQ)(0,3);
14802 Double_t dImQ1n1k = (*fImQ)(0,1);
14803 Double_t dImQ2n2k = (*fImQ)(1,2);
14804 Double_t dImQ3n3k = (*fImQ)(2,3);
14805 Double_t dImQ4n4k = (*fImQ)(3,4);
14806 Double_t dImQ1n3k = (*fImQ)(0,3);
14807
14808 // dMs are variables introduced in order to simplify some Eqs. bellow:
14809 //..............................................................................................
1268c371 14810 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
14811 Double_t dM22 = (*fSpk)(1,2)-(*fSpk)(0,4); // dM22 = sum_{i,j=1,i!=j}^M w_i^2 w_j^2
14812 Double_t dM33 = (*fSpk)(1,3)-(*fSpk)(0,6); // dM33 = sum_{i,j=1,i!=j}^M w_i^3 w_j^3
14813 Double_t dM44 = (*fSpk)(1,4)-(*fSpk)(0,8); // dM44 = sum_{i,j=1,i!=j}^M w_i^4 w_j^4
14814 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
14815 Double_t dM211 = (*fSpk)(0,2)*(*fSpk)(1,1)-2.*(*fSpk)(0,3)*(*fSpk)(0,1)
14816 - (*fSpk)(1,2)+2.*(*fSpk)(0,4); // dM211 = sum_{i,j,k=1,i!=j!=k}^M w_i^2 w_j w_k
14817 Double_t dM1111 = (*fSpk)(3,1)-6.*(*fSpk)(0,2)*(*fSpk)(1,1)
14818 + 8.*(*fSpk)(0,3)*(*fSpk)(0,1)
14819 + 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
489d5531 14820 //..............................................................................................
14821
14822 // 2-particle correlations:
14823 Double_t two1n1nW1W1 = 0.; // <w1 w2 cos(n*(phi1-phi2))>
14824 Double_t two2n2nW2W2 = 0.; // <w1^2 w2^2 cos(2n*(phi1-phi2))>
14825 Double_t two3n3nW3W3 = 0.; // <w1^3 w2^3 cos(3n*(phi1-phi2))>
14826 Double_t two4n4nW4W4 = 0.; // <w1^4 w2^4 cos(4n*(phi1-phi2))>
14827 if(dMult>1)
14828 {
14829 if(dM11)
14830 {
1268c371 14831 two1n1nW1W1 = (pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSpk)(0,2))/dM11;
489d5531 14832 // average correlation <w1 w2 cos(n*(phi1-phi2))> for single event:
14833 fIntFlowCorrelationsEBE->SetBinContent(1,two1n1nW1W1);
14834 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(1,dM11);
14835 // average correlation <w1 w2 cos(n*(phi1-phi2))> for all events:
b40a910e 14836 fIntFlowCorrelationsPro->Fill(0.5,two1n1nW1W1,dM11);
14837 // average squared correlation <w1 w2 cos(n*(phi1-phi2))> for all events:
14838 fIntFlowSquaredCorrelationsPro->Fill(0.5,two1n1nW1W1*two1n1nW1W1,dM11);
489d5531 14839 fIntFlowCorrelationsAllPro->Fill(0.5,two1n1nW1W1,dM11);
14840 }
14841 if(dM22)
14842 {
1268c371 14843 two2n2nW2W2 = (pow(dReQ2n2k,2)+pow(dImQ2n2k,2)-(*fSpk)(0,4))/dM22;
489d5531 14844 // ...
14845 // average correlation <w1^2 w2^2 cos(2n*(phi1-phi2))> for all events:
14846 fIntFlowCorrelationsAllPro->Fill(1.5,two2n2nW2W2,dM22);
14847 }
14848 if(dM33)
14849 {
1268c371 14850 two3n3nW3W3 = (pow(dReQ3n3k,2)+pow(dImQ3n3k,2)-(*fSpk)(0,6))/dM33;
489d5531 14851 // ...
14852 // average correlation <w1^3 w2^3 cos(3n*(phi1-phi2))> for all events:
14853 fIntFlowCorrelationsAllPro->Fill(2.5,two3n3nW3W3,dM33);
14854 }
14855 if(dM44)
14856 {
1268c371 14857 two4n4nW4W4 = (pow(dReQ4n4k,2)+pow(dImQ4n4k,2)-(*fSpk)(0,8))/dM44;
489d5531 14858 // ...
14859 // average correlation <w1^4 w2^4 cos(4n*(phi1-phi2))> for all events:
14860 fIntFlowCorrelationsAllPro->Fill(3.5,two4n4nW4W4,dM44);
14861 }
14862 } // end of if(dMult>1)
14863
14864 // extra 2-particle correlations:
14865 Double_t two1n1nW3W1 = 0.; // <w1^3 w2 cos(n*(phi1-phi2))>
14866 Double_t two1n1nW1W1W2 = 0.; // <w1 w2 w3^2 cos(n*(phi1-phi2))>
14867 if(dMult>1)
14868 {
14869 if(dM31)
14870 {
1268c371 14871 two1n1nW3W1 = (dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k-(*fSpk)(0,4))/dM31;
489d5531 14872 fIntFlowExtraCorrelationsPro->Fill(0.5,two1n1nW3W1,dM31);
14873 }
14874 if(dM211)
14875 {
1268c371 14876 two1n1nW1W1W2 = ((*fSpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSpk)(0,2))
489d5531 14877 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k
1268c371 14878 - (*fSpk)(0,4)))/dM211;
489d5531 14879 fIntFlowExtraCorrelationsPro->Fill(1.5,two1n1nW1W1W2,dM211);
14880 }
14881 } // end of if(dMult>1)
14882 //..............................................................................................
14883
14884 //..............................................................................................
14885 // 3-particle correlations:
14886 Double_t three2n1n1nW2W1W1 = 0.; // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
14887
14888 if(dMult>2)
14889 {
14890 if(dM211)
14891 {
14892 three2n1n1nW2W1W1 = (pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k
14893 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
14894 - pow(dReQ2n2k,2)-pow(dImQ2n2k,2)
1268c371 14895 + 2.*(*fSpk)(0,4))/dM211;
489d5531 14896 fIntFlowCorrelationsAllPro->Fill(5.5,three2n1n1nW2W1W1,dM211);
14897 }
14898 } // end of if(dMult>2)
14899 //..............................................................................................
14900
14901 //..............................................................................................
14902 // 4-particle correlations:
14903 Double_t four1n1n1n1nW1W1W1W1 = 0.; // <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
14904 if(dMult>3)
14905 {
14906 if(dM1111)
14907 {
14908 four1n1n1n1nW1W1W1W1 = (pow(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.),2)
14909 - 2.*(pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k)
14910 + 8.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
14911 + (pow(dReQ2n2k,2)+pow(dImQ2n2k,2))
1268c371 14912 - 4.*(*fSpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
14913 - 6.*(*fSpk)(0,4)+2.*(*fSpk)(1,2))/dM1111;
489d5531 14914
14915 // average correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for single event:
14916 fIntFlowCorrelationsEBE->SetBinContent(2,four1n1n1n1nW1W1W1W1);
14917 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(2,dM1111);
14918 // average correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for all events:
14919 fIntFlowCorrelationsPro->Fill(1.5,four1n1n1n1nW1W1W1W1,dM1111);
b40a910e 14920 // average squared correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for all events:
14921 fIntFlowSquaredCorrelationsPro->Fill(1.5,four1n1n1n1nW1W1W1W1*four1n1n1n1nW1W1W1W1,dM1111);
489d5531 14922 fIntFlowCorrelationsAllPro->Fill(10.5,four1n1n1n1nW1W1W1W1,dM1111);
14923 }
14924 } // end of if(dMult>3)
14925 //..............................................................................................
14926
14927} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelationsUsingParticleWeights()
14928
e1d101a6 14929//=======================================================================================================================
489d5531 14930
489d5531 14931void AliFlowAnalysisWithQCumulants::InitializeArraysForIntFlow()
14932{
14933 // Initialize all arrays used to calculate integrated flow.
14934
14935 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14936 {
14937 fIntFlowCorrectionTermsForNUAEBE[sc] = NULL;
0328db2d 14938 fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc] = NULL;
489d5531 14939 fIntFlowCorrectionTermsForNUAPro[sc] = NULL;
14940 fIntFlowCorrectionTermsForNUAHist[sc] = NULL;
b92ea2b9 14941 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2001bc3a 14942 {
14943 fIntFlowCorrectionTermsForNUAVsMPro[sc][ci] = NULL;
14944 }
0328db2d 14945 for(Int_t power=0;power<2;power++) // linear or quadratic
14946 {
14947 fIntFlowSumOfEventWeightsNUA[sc][power] = NULL;
14948 }
489d5531 14949 }
14950 for(Int_t power=0;power<2;power++) // linear or quadratic
14951 {
14952 fIntFlowSumOfEventWeights[power] = NULL;
14953 }
b3dacf6b 14954 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))
489d5531 14955 {
14956 fPrintFinalResults[i] = kTRUE;
14957 }
ff70ca91 14958 for(Int_t ci=0;ci<4;ci++) // correlation index or cumulant order
14959 {
14960 fIntFlowCorrelationsVsMPro[ci] = NULL;
b40a910e 14961 fIntFlowSquaredCorrelationsVsMPro[ci] = NULL;
ff70ca91 14962 fIntFlowCorrelationsVsMHist[ci] = NULL;
14963 fIntFlowQcumulantsVsM[ci] = NULL;
14964 fIntFlowVsM[ci] = NULL;
2001bc3a 14965 fIntFlowDetectorBiasVsM[ci] = NULL;
ff70ca91 14966 for(Int_t lc=0;lc<2;lc++)
14967 {
14968 fIntFlowSumOfEventWeightsVsM[ci][lc] = NULL;
14969 }
14970 }
14971 for(Int_t pi=0;pi<6;pi++) // product or covariance index
14972 {
14973 fIntFlowProductOfCorrelationsVsMPro[pi] = NULL;
14974 fIntFlowCovariancesVsM[pi] = NULL;
14975 fIntFlowSumOfProductOfEventWeightsVsM[pi] = NULL;
14976 }
403e3389 14977 for(Int_t ci=0;ci<64;ci++) // correlation index for all correlations vs M profiles (to be improved - hardwired 64)
3435cacb 14978 {
14979 fIntFlowCorrelationsAllVsMPro[ci] = NULL;
14980 }
14981
489d5531 14982} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForIntFlow()
14983
e1d101a6 14984//=======================================================================================================================
489d5531 14985
489d5531 14986void AliFlowAnalysisWithQCumulants::InitializeArraysForDiffFlow()
14987{
14988 // Initialize all arrays needed to calculate differential flow.
14989 // a) Initialize lists holding profiles;
14990 // b) Initialize lists holding histograms;
14991 // c) Initialize event-by-event quantities;
14992 // d) Initialize profiles;
14993 // e) Initialize histograms holding final results.
14994
14995 // a) Initialize lists holding profiles;
14996 for(Int_t t=0;t<2;t++) // type (RP, POI)
14997 {
14998 for(Int_t pe=0;pe<2;pe++) // pt or eta
14999 {
15000 fDiffFlowCorrelationsProList[t][pe] = NULL;
15001 fDiffFlowProductOfCorrelationsProList[t][pe] = NULL;
15002 fDiffFlowCorrectionsProList[t][pe] = NULL;
15003 }
1268c371 15004 // 2D:
15005 f2DDiffFlowCorrelationsProList[t] = NULL;
489d5531 15006 }
15007
15008 // b) Initialize lists holding histograms;
15009 for(Int_t t=0;t<2;t++) // type (RP, POI)
15010 {
15011 for(Int_t pe=0;pe<2;pe++) // pt or eta
15012 {
15013 fDiffFlowCorrelationsHistList[t][pe] = NULL;
15014 for(Int_t power=0;power<2;power++)
15015 {
15016 fDiffFlowSumOfEventWeightsHistList[t][pe][power] = NULL;
15017 } // end of for(Int_t power=0;power<2;power++)
15018 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe] = NULL;
15019 fDiffFlowCorrectionsHistList[t][pe] = NULL;
15020 fDiffFlowCovariancesHistList[t][pe] = NULL;
15021 fDiffFlowCumulantsHistList[t][pe] = NULL;
1268c371 15022 fDiffFlowDetectorBiasHistList[t][pe] = NULL;
489d5531 15023 fDiffFlowHistList[t][pe] = NULL;
15024 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
15025 } // enf of for(Int_t t=0;t<2;t++) // type (RP, POI)
15026
15027 // c) Initialize event-by-event quantities:
15028 // 1D:
15029 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
15030 {
15031 for(Int_t pe=0;pe<2;pe++) // pt or eta
15032 {
15033 for(Int_t m=0;m<4;m++) // multiple of harmonic
15034 {
15035 for(Int_t k=0;k<9;k++) // power of weight
15036 {
15037 fReRPQ1dEBE[t][pe][m][k] = NULL;
15038 fImRPQ1dEBE[t][pe][m][k] = NULL;
15039 fs1dEBE[t][pe][k] = NULL; // to be improved (this doesn't need to be within loop over m)
15040 }
15041 }
15042 }
15043 }
15044 // 1D:
15045 for(Int_t t=0;t<2;t++) // type (RP or POI)
15046 {
15047 for(Int_t pe=0;pe<2;pe++) // pt or eta
15048 {
15049 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
15050 {
15051 for(Int_t cti=0;cti<9;cti++) // correction term index
15052 {
15053 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti] = NULL;
15054 }
15055 }
15056 }
15057 }
15058 // 2D:
15059 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
15060 {
15061 for(Int_t m=0;m<4;m++) // multiple of harmonic
15062 {
15063 for(Int_t k=0;k<9;k++) // power of weight
15064 {
15065 fReRPQ2dEBE[t][m][k] = NULL;
15066 fImRPQ2dEBE[t][m][k] = NULL;
15067 fs2dEBE[t][k] = NULL; // to be improved (this doesn't need to be within loop over m)
15068 }
15069 }
15070 }
15071
15072 // d) Initialize profiles:
15073 for(Int_t t=0;t<2;t++) // type: RP or POI
15074 {
15075 for(Int_t pe=0;pe<2;pe++) // pt or eta
15076 {
15077 for(Int_t ci=0;ci<4;ci++) // correlation index
15078 {
15079 fDiffFlowCorrelationsPro[t][pe][ci] = NULL;
b40a910e 15080 fDiffFlowSquaredCorrelationsPro[t][pe][ci] = NULL;
489d5531 15081 } // end of for(Int_t ci=0;ci<4;ci++)
15082 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
15083 {
15084 for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
15085 {
15086 fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2] = NULL;
15087 } // end of for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
15088 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
15089 // correction terms for nua:
15090 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
15091 {
15092 for(Int_t cti=0;cti<9;cti++) // correction term index
15093 {
15094 fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] = NULL;
15095 }
15096 }
64e500e3 15097 // other differential correlators:
15098 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
15099 {
15100 for(Int_t ci=0;ci<1;ci++) // correction term index
15101 {
15102 fOtherDiffCorrelators[t][pe][sc][ci] = NULL;
15103 }
15104 }
489d5531 15105 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
1268c371 15106 for(Int_t ci=0;ci<4;ci++) // correlation index
15107 {
15108 f2DDiffFlowCorrelationsPro[t][ci] = NULL;
15109 }
489d5531 15110 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15111
15112 // e) Initialize histograms holding final results.
15113 for(Int_t t=0;t<2;t++) // type: RP or POI
15114 {
15115 for(Int_t pe=0;pe<2;pe++) // pt or eta
15116 {
15117 for(Int_t ci=0;ci<4;ci++) // correlation index
15118 {
15119 fDiffFlowCorrelationsHist[t][pe][ci] = NULL;
15120 fDiffFlowCumulants[t][pe][ci] = NULL;
1268c371 15121 fDiffFlowDetectorBias[t][pe][ci] = NULL;
489d5531 15122 fDiffFlow[t][pe][ci] = NULL;
15123 } // end of for(Int_t ci=0;ci<4;ci++)
15124 for(Int_t covarianceIndex=0;covarianceIndex<5;covarianceIndex++)
15125 {
15126 fDiffFlowCovariances[t][pe][covarianceIndex] = NULL;
15127 } // end of for(Int_t covarianceIndex=0;covarianceIndex<5;covarianceIndex++)
15128 // correction terms for nua:
15129 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
15130 {
15131 for(Int_t cti=0;cti<9;cti++) // correction term index
15132 {
15133 fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] = NULL;
15134 }
15135 }
15136 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
1268c371 15137 for(Int_t ci=0;ci<4;ci++) // correlation index
15138 {
15139 f2DDiffFlowCumulants[t][ci] = NULL;
15140 f2DDiffFlow[t][ci] = NULL;
15141 }
489d5531 15142 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15143
15144 // sum of event weights for reduced correlations:
15145 for(Int_t t=0;t<2;t++) // type = RP or POI
15146 {
15147 for(Int_t pe=0;pe<2;pe++) // pt or eta
15148 {
15149 for(Int_t p=0;p<2;p++) // power of weight is 1 or 2
15150 {
15151 for(Int_t ew=0;ew<4;ew++) // event weight index for reduced correlations
15152 {
15153 fDiffFlowSumOfEventWeights[t][pe][p][ew] = NULL;
15154 }
15155 }
15156 }
15157 }
15158 // product of event weights for both types of correlations:
15159 for(Int_t t=0;t<2;t++) // type = RP or POI
15160 {
15161 for(Int_t pe=0;pe<2;pe++) // pt or eta
15162 {
15163 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
15164 {
15165 for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
15166 {
15167 fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] = NULL;
15168 }
15169 }
15170 }
15171 }
1268c371 15172
15173} // end of AliFlowAnalysisWithQCumulants::InitializeArraysForDiffFlow()
15174
e1d101a6 15175//=======================================================================================================================
489d5531 15176
1268c371 15177void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulants(TString type, TString ptOrEta)
15178{
15179 // Calculate differential flow cumulants from measured multiparticle correlations.
489d5531 15180
1268c371 15181 // REMARK: Cumulants calculated in this method are NOT corrected for non-uniform acceptance.
15182 // This correction, if enabled via setter SetApplyCorrectionForNUA(Bool_t), is applied
15183 // in the method CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
489d5531 15184
1268c371 15185 Int_t t = 0;
15186 Int_t pe = 0;
15187
15188 if(type == "RP")
15189 {
15190 t = 0;
15191 } else if(type == "POI")
15192 {
15193 t = 1;
15194 }
15195
15196 if(ptOrEta == "Pt")
15197 {
15198 pe = 0;
15199 } else if(ptOrEta == "Eta")
15200 {
15201 pe = 1;
15202 }
15203
15204 // Common:
15205 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 15206
1268c371 15207 // Correlation <<2>>:
15208 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1);
15209 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1);
489d5531 15210
1268c371 15211 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
489d5531 15212 {
1268c371 15213 // Reduced correlations:
15214 Double_t twoPrime = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b); // <<2'>>
15215 Double_t twoPrimeError = fDiffFlowCorrelationsHist[t][pe][0]->GetBinError(b); // stat. error of <<2'>>
15216 Double_t fourPrime = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b); // <<4'>>
15217 Double_t fourPrimeError = fDiffFlowCorrelationsHist[t][pe][1]->GetBinError(b); // stat. error of <<4'>>
15218 // Covariances:
15219 Double_t wCovTwoTwoReduced = fDiffFlowCovariances[t][pe][0]->GetBinContent(b); // Cov(<2>,<2'>) * prefactor(<2>,<2'>)
15220 Double_t wCovTwoFourReduced = fDiffFlowCovariances[t][pe][1]->GetBinContent(b); // Cov(<2>,<4'>) * prefactor(<2>,<4'>)
15221 Double_t wCovTwoReducedFourReduced = fDiffFlowCovariances[t][pe][4]->GetBinContent(b); // Cov(<2'>,<4'>) * prefactor(<2'>,<4'>)
15222 // QC{2'}:
15223 Double_t qc2Prime = twoPrime; // QC{2'}
15224 Double_t qc2PrimeError = twoPrimeError; // stat. error of QC{2'}
15225 fDiffFlowCumulants[t][pe][0]->SetBinContent(b,qc2Prime);
15226 fDiffFlowCumulants[t][pe][0]->SetBinError(b,qc2PrimeError);
15227 // QC{4'}:
15228 Double_t qc4Prime = fourPrime - 2.*twoPrime*two; // QC{4'} = <<4'>> - 2*<<2'>><<2>>
15229 Double_t qc4PrimeError = 0.; // stat. error of QC{4'}
15230 Double_t qc4PrimeErrorSquared = 4.*pow(twoPrime,2.)*pow(twoError,2.)
15231 + 4.*pow(two,2.)*pow(twoPrimeError,2.)
15232 + pow(fourPrimeError,2.)
15233 + 8.*two*twoPrime*wCovTwoTwoReduced
15234 - 4.*twoPrime*wCovTwoFourReduced
15235 - 4.*two*wCovTwoReducedFourReduced;
15236 if(qc4PrimeErrorSquared>0.)
15237 {
15238 qc4PrimeError = pow(qc4PrimeErrorSquared,0.5);
489d5531 15239 }
1268c371 15240 fDiffFlowCumulants[t][pe][1]->SetBinContent(b,qc4Prime);
15241 fDiffFlowCumulants[t][pe][1]->SetBinError(b,qc4PrimeError);
489d5531 15242 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 15243
1268c371 15244} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulants(TString type, Bool_t useParticleWeights, TString eventWeights);
489d5531 15245
e1d101a6 15246//=======================================================================================================================
489d5531 15247
1268c371 15248void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCumulants(TString type)
489d5531 15249{
1268c371 15250 // Calculate 2D differential cumulants.
489d5531 15251
1268c371 15252 // Remark: correction for detector effects and error propagation not implemented yet for 2D differential cumulants.
489d5531 15253
1268c371 15254 Int_t t = 0;
489d5531 15255
15256 if(type == "RP")
15257 {
1268c371 15258 t = 0;
489d5531 15259 } else if(type == "POI")
15260 {
1268c371 15261 t = 1;
15262 }
15263
15264 // Reference correlation <<2>>:
15265 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1);
489d5531 15266
1268c371 15267 // Looping over all (pt,eta) bins and calculating differential flow cumulants:
15268 for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 15269 {
15270 for(Int_t e=1;e<=fnBinsEta;e++)
15271 {
1268c371 15272 // Reduced correlations:
15273 Double_t twoPrime = f2DDiffFlowCorrelationsPro[t][0]->GetBinContent(f2DDiffFlowCorrelationsPro[t][0]->GetBin(p,e)); // <<2'>>(pt,eta)
15274 Double_t fourPrime = f2DDiffFlowCorrelationsPro[t][1]->GetBinContent(f2DDiffFlowCorrelationsPro[t][1]->GetBin(p,e)); // <<4'>>(pt,eta)
15275 // Cumulants:
15276 Double_t qc2Prime = twoPrime; // QC{2'} = <<2'>>
15277 f2DDiffFlowCumulants[t][0]->SetBinContent(f2DDiffFlowCumulants[t][0]->GetBin(p,e),qc2Prime);
15278 Double_t qc4Prime = fourPrime - 2.*twoPrime*two; // QC{4'} = <<4'>> - 2*<<2'>><<2>>
15279 f2DDiffFlowCumulants[t][1]->SetBinContent(f2DDiffFlowCumulants[t][1]->GetBin(p,e),qc4Prime);
489d5531 15280 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
489d5531 15281 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
15282
1268c371 15283} // end of void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCumulants(TString type)
489d5531 15284
e1d101a6 15285//=======================================================================================================================
489d5531 15286
489d5531 15287void AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(TString type)
15288{
1268c371 15289 // Calculate final results for integrated flow of RPs and POIs.
489d5531 15290
1268c371 15291 // to be improved - check if the integrated flow calculation here is actually correct
15292
15293 Int_t t = 0; // RP = 0, POI = 1
489d5531 15294
15295 if(type == "RP")
15296 {
1268c371 15297 t = 0;
489d5531 15298 } else if(type == "POI")
15299 {
1268c371 15300 t = 1;
15301 }
489d5531 15302
489d5531 15303 // pt yield:
15304 TH1F *yield2ndPt = NULL;
15305 TH1F *yield4thPt = NULL;
15306 TH1F *yield6thPt = NULL;
15307 TH1F *yield8thPt = NULL;
15308
15309 if(type == "POI")
15310 {
dd442cd2 15311 if(fFillMultipleControlHistograms)
15312 {
15313 yield2ndPt = (TH1F*)(fCommonHists2nd->GetHistPtPOI())->Clone();
15314 yield4thPt = (TH1F*)(fCommonHists4th->GetHistPtPOI())->Clone();
15315 yield6thPt = (TH1F*)(fCommonHists6th->GetHistPtPOI())->Clone();
15316 yield8thPt = (TH1F*)(fCommonHists8th->GetHistPtPOI())->Clone();
15317 } else
15318 {
15319 yield2ndPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15320 yield4thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15321 yield6thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15322 yield8thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15323 }
489d5531 15324 }
15325 else if(type == "RP")
15326 {
dd442cd2 15327 if(fFillMultipleControlHistograms)
15328 {
15329 yield2ndPt = (TH1F*)(fCommonHists2nd->GetHistPtRP())->Clone();
15330 yield4thPt = (TH1F*)(fCommonHists4th->GetHistPtRP())->Clone();
15331 yield6thPt = (TH1F*)(fCommonHists6th->GetHistPtRP())->Clone();
15332 yield8thPt = (TH1F*)(fCommonHists8th->GetHistPtRP())->Clone();
15333 } else
15334 {
15335 yield2ndPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15336 yield4thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15337 yield6thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15338 yield8thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15339 }
489d5531 15340 }
15341
0d11c335 15342 if(!yield2ndPt){return;}
15343 if(!yield4thPt){return;}
15344 if(!yield6thPt){return;}
15345 if(!yield8thPt){return;}
15346
489d5531 15347 Int_t nBinsPt = yield2ndPt->GetNbinsX();
15348
15349 TH1D *flow2ndPt = NULL;
15350 TH1D *flow4thPt = NULL;
15351 TH1D *flow6thPt = NULL;
15352 TH1D *flow8thPt = NULL;
15353
15354 // to be improved (hardwired pt index)
15355 flow2ndPt = (TH1D*)fDiffFlow[t][0][0]->Clone();
15356 flow4thPt = (TH1D*)fDiffFlow[t][0][1]->Clone();
15357 flow6thPt = (TH1D*)fDiffFlow[t][0][2]->Clone();
15358 flow8thPt = (TH1D*)fDiffFlow[t][0][3]->Clone();
0d11c335 15359
15360 if(!flow2ndPt){return;}
15361 if(!flow4thPt){return;}
15362 if(!flow6thPt){return;}
15363 if(!flow8thPt){return;}
489d5531 15364
15365 Double_t dvn2nd = 0., dvn4th = 0., dvn6th = 0., dvn8th = 0.; // differential flow
15366 Double_t dErrvn2nd = 0., dErrvn4th = 0., dErrvn6th = 0., dErrvn8th = 0.; // error on differential flow
15367
15368 Double_t dVn2nd = 0., dVn4th = 0., dVn6th = 0., dVn8th = 0.; // integrated flow
15369 Double_t dErrVn2nd = 0., dErrVn4th = 0., dErrVn6th = 0., dErrVn8th = 0.; // error on integrated flow
15370
15371 Double_t dYield2nd = 0., dYield4th = 0., dYield6th = 0., dYield8th = 0.; // pt yield
15372 Double_t dSum2nd = 0., dSum4th = 0., dSum6th = 0., dSum8th = 0.; // needed for normalizing integrated flow
15373
15374 // looping over pt bins:
15375 for(Int_t p=1;p<nBinsPt+1;p++)
15376 {
15377 dvn2nd = flow2ndPt->GetBinContent(p);
15378 dvn4th = flow4thPt->GetBinContent(p);
15379 dvn6th = flow6thPt->GetBinContent(p);
15380 dvn8th = flow8thPt->GetBinContent(p);
15381
15382 dErrvn2nd = flow2ndPt->GetBinError(p);
15383 dErrvn4th = flow4thPt->GetBinError(p);
15384 dErrvn6th = flow6thPt->GetBinError(p);
15385 dErrvn8th = flow8thPt->GetBinError(p);
15386
15387 dYield2nd = yield2ndPt->GetBinContent(p);
15388 dYield4th = yield4thPt->GetBinContent(p);
15389 dYield6th = yield6thPt->GetBinContent(p);
15390 dYield8th = yield8thPt->GetBinContent(p);
15391
15392 dVn2nd += dvn2nd*dYield2nd;
15393 dVn4th += dvn4th*dYield4th;
15394 dVn6th += dvn6th*dYield6th;
15395 dVn8th += dvn8th*dYield8th;
15396
15397 dSum2nd += dYield2nd;
15398 dSum4th += dYield4th;
15399 dSum6th += dYield6th;
15400 dSum8th += dYield8th;
15401
15402 dErrVn2nd += dYield2nd*dYield2nd*dErrvn2nd*dErrvn2nd; // ro be improved (check this relation)
15403 dErrVn4th += dYield4th*dYield4th*dErrvn4th*dErrvn4th;
15404 dErrVn6th += dYield6th*dYield6th*dErrvn6th*dErrvn6th;
15405 dErrVn8th += dYield8th*dYield8th*dErrvn8th*dErrvn8th;
15406
15407 } // end of for(Int_t p=1;p<nBinsPt+1;p++)
15408
15409 // normalizing the results for integrated flow:
15410 if(dSum2nd)
15411 {
15412 dVn2nd /= dSum2nd;
15413 dErrVn2nd /= (dSum2nd*dSum2nd);
15414 dErrVn2nd = TMath::Sqrt(dErrVn2nd);
15415 }
15416 if(dSum4th)
15417 {
15418 dVn4th /= dSum4th;
15419 dErrVn4th /= (dSum4th*dSum4th);
15420 dErrVn4th = TMath::Sqrt(dErrVn4th);
15421 }
15422 //if(dSum6th) dVn6th/=dSum6th;
15423 //if(dSum8th) dVn8th/=dSum8th;
15424
15425 // storing the results for integrated flow in common histos: (to be improved: new method for this?)
15426 if(type == "POI")
15427 {
15428 fCommonHistsResults2nd->FillIntegratedFlowPOI(dVn2nd,dErrVn2nd);
15429 fCommonHistsResults4th->FillIntegratedFlowPOI(dVn4th,dErrVn4th);
15430 fCommonHistsResults6th->FillIntegratedFlowPOI(dVn6th,0.); // to be improved (errors)
15431 fCommonHistsResults8th->FillIntegratedFlowPOI(dVn8th,0.); // to be improved (errors)
15432 }
15433 else if (type == "RP")
15434 {
15435 fCommonHistsResults2nd->FillIntegratedFlowRP(dVn2nd,dErrVn2nd);
15436 fCommonHistsResults4th->FillIntegratedFlowRP(dVn4th,dErrVn4th);
15437 fCommonHistsResults6th->FillIntegratedFlowRP(dVn6th,0.); // to be improved (errors)
15438 fCommonHistsResults8th->FillIntegratedFlowRP(dVn8th,0.); // to be improved (errors)
15439 }
15440
15441 delete flow2ndPt;
15442 delete flow4thPt;
15443 //delete flow6thPt;
15444 //delete flow8thPt;
15445
15446 delete yield2ndPt;
15447 delete yield4thPt;
15448 delete yield6thPt;
15449 delete yield8thPt;
15450
15451} // end of AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(TString type)
15452
e1d101a6 15453//=======================================================================================================================
489d5531 15454
489d5531 15455void AliFlowAnalysisWithQCumulants::InitializeArraysForDistributions()
15456{
15457 // Initialize all arrays used for distributions.
15458
15459 // a) Initialize arrays of histograms used to hold distributions of correlations;
15460 // b) Initialize array to hold min and max values of correlations.
15461
15462 // a) Initialize arrays of histograms used to hold distributions of correlations:
15463 for(Int_t di=0;di<4;di++) // distribution index
15464 {
15465 fDistributions[di] = NULL;
15466 }
15467
15468 // b) Initialize default min and max values of correlations:
15469 // (Remark: The default values bellow were chosen for v2=5% and M=500)
15470 fMinValueOfCorrelation[0] = -0.01; // <2>_min
15471 fMaxValueOfCorrelation[0] = 0.04; // <2>_max
15472 fMinValueOfCorrelation[1] = -0.00002; // <4>_min
15473 fMaxValueOfCorrelation[1] = 0.00015; // <4>_max
15474 fMinValueOfCorrelation[2] = -0.0000003; // <6>_min
15475 fMaxValueOfCorrelation[2] = 0.0000006; // <6>_max
15476 fMinValueOfCorrelation[3] = -0.000000006; // <8>_min
15477 fMaxValueOfCorrelation[3] = 0.000000003; // <8>_max
1db7eced 15478
15479 // c) Initialize default min and max values of correlation products:
15480 // (Remark: The default values bellow were chosen for v2=5% and M=500)
15481 fMinValueOfCorrelationProduct[0] = -0.01; // <2><4>_min
15482 fMaxValueOfCorrelationProduct[0] = 0.04; // <2><4>_max
15483
489d5531 15484} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForDistributions()
15485
e1d101a6 15486//=======================================================================================================================
489d5531 15487
e5834fcb 15488void AliFlowAnalysisWithQCumulants::InitializeArraysForVarious()
15489{
15490 // Initialize all arrays used for various unclassified objects.
15491
15492 for(Int_t p=0;p<4;p++) // [v_min,v_max,refMult_min,refMult_max]
15493 {
15494 fPhiDistributionForOneEventSettings[p] = 0.;
15495 }
15496
15497} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForVarious()
15498
e1d101a6 15499//=======================================================================================================================
489d5531 15500
15501void AliFlowAnalysisWithQCumulants::BookEverythingForDistributions()
15502{
15503 // a) Book profile to hold all flags for distributions of correlations;
15504 // b) Book all histograms to hold distributions of correlations.
15505
1db7eced 15506 TString correlationIndex[4] = {"#LT2#GT","#LT4#GT","#LT6#GT","#LT8#GT"}; // TBI (should I promote this to data members?)
489d5531 15507
15508 // a) Book profile to hold all flags for distributions of correlations:
15509 TString distributionsFlagsName = "fDistributionsFlags";
15510 distributionsFlagsName += fAnalysisLabel->Data();
1db7eced 15511 fDistributionsFlags = new TProfile(distributionsFlagsName.Data(),"Flags for Distributions of Correlations",10,0,10);
489d5531 15512 fDistributionsFlags->SetTickLength(-0.01,"Y");
15513 fDistributionsFlags->SetMarkerStyle(25);
15514 fDistributionsFlags->SetLabelSize(0.05);
15515 fDistributionsFlags->SetLabelOffset(0.02,"Y");
e1d101a6 15516 fDistributionsFlags->SetStats(kFALSE);
489d5531 15517 fDistributionsFlags->GetXaxis()->SetBinLabel(1,"Store or not?");
1db7eced 15518 fDistributionsFlags->GetXaxis()->SetBinLabel(2,"#LT2#GT_{min}");
15519 fDistributionsFlags->GetXaxis()->SetBinLabel(3,"#LT2#GT_{max}");
15520 fDistributionsFlags->GetXaxis()->SetBinLabel(4,"#LT4#GT_{min}");
15521 fDistributionsFlags->GetXaxis()->SetBinLabel(5,"#LT4#GT_{max}");
15522 fDistributionsFlags->GetXaxis()->SetBinLabel(6,"#LT6#GT_{min}");
15523 fDistributionsFlags->GetXaxis()->SetBinLabel(7,"#LT6#GT_{max}");
15524 fDistributionsFlags->GetXaxis()->SetBinLabel(8,"#LT8#GT_{min}");
15525 fDistributionsFlags->GetXaxis()->SetBinLabel(9,"#LT8#GT_{max}");
15526 fDistributionsFlags->GetXaxis()->SetBinLabel(10,"fnBinsForCorrelations");
489d5531 15527 fDistributionsList->Add(fDistributionsFlags);
15528
15529 // b) Book all histograms to hold distributions of correlations.
15530 if(fStoreDistributions)
15531 {
15532 TString distributionsName = "fDistributions";
15533 distributionsName += fAnalysisLabel->Data();
15534 for(Int_t di=0;di<4;di++) // distribution index
15535 {
1db7eced 15536 fDistributions[di] = new TH1D(Form("Distribution of %s",correlationIndex[di].Data()),Form("Distribution of %s",correlationIndex[di].Data()),fnBinsForCorrelations,fMinValueOfCorrelation[di],fMaxValueOfCorrelation[di]);
489d5531 15537 fDistributions[di]->SetXTitle(correlationIndex[di].Data());
15538 fDistributionsList->Add(fDistributions[di]);
15539 } // end of for(Int_t di=0;di<4;di++) // distribution index
15540 } // end of if(fStoreDistributions)
15541
15542} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForDistributions()
15543
e1d101a6 15544//=======================================================================================================================
489d5531 15545
e5834fcb 15546void AliFlowAnalysisWithQCumulants::BookEverythingForVarious()
15547{
15548 // Book all objects for various unclassified quantities.
15549
15550 if(!fStorePhiDistributionForOneEvent){return;}
15551
15552 // a) Book histogram holding phi distribution for single event to illustrate flow.
15553
15554 // a) Book histogram holding phi distribution for single event to illustrate flow:
15555 fPhiDistributionForOneEvent = new TH1D("fPhiDistributionForOneEvent","",360,0.,TMath::TwoPi());
15556 fPhiDistributionForOneEvent->GetXaxis()->SetTitle("#phi");
15557 fVariousList->Add(fPhiDistributionForOneEvent);
15558
15559} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForVarious()
15560
e1d101a6 15561//=======================================================================================================================
489d5531 15562
15563void AliFlowAnalysisWithQCumulants::StoreFlagsForDistributions()
15564{
15565 // Store all flags for distributiuons of correlations in profile fDistributionsFlags.
15566
15567 if(!fDistributionsFlags)
15568 {
15569 cout<<"WARNING: fDistributionsFlags is NULL in AFAWQC::SDF() !!!!"<<endl;
15570 exit(0);
15571 }
15572
15573 fDistributionsFlags->Fill(0.5,(Int_t)fStoreDistributions); // histos with distributions of correlations stored or not in the output file
15574 // store min and max values of correlations:
15575 for(Int_t di=0;di<4;di++) // distribution index
15576 {
15577 fDistributionsFlags->Fill(1.5+2.*(Double_t)di,fMinValueOfCorrelation[di]);
15578 fDistributionsFlags->Fill(2.5+2.*(Double_t)di,fMaxValueOfCorrelation[di]);
15579 }
1db7eced 15580 fDistributionsFlags->Fill(9.5,fnBinsForCorrelations);
489d5531 15581
15582} // end of void AliFlowAnalysisWithQCumulants::StoreFlagsForDistributions()
15583
e1d101a6 15584//=======================================================================================================================
489d5531 15585
489d5531 15586void AliFlowAnalysisWithQCumulants::StoreDistributionsOfCorrelations()
15587{
15588 // Store distributions of correlations.
15589
15590 if(!(fIntFlowCorrelationsEBE && fIntFlowEventWeightsForCorrelationsEBE))
15591 {
15592 cout<<"WARNING: fIntFlowCorrelationsEBE && fIntFlowEventWeightsForCorrelationsEBE"<<endl;
15593 cout<<" is NULL in AFAWQC::SDOC() !!!!"<<endl;
15594 exit(0);
15595 }
15596
15597 for(Int_t di=0;di<4;di++) // distribution index
15598 {
15599 if(!fDistributions[di])
15600 {
15601 cout<<"WARNING: fDistributions[di] is NULL in AFAWQC::SDOC() !!!!"<<endl;
15602 cout<<"di = "<<di<<endl;
15603 exit(0);
15604 } else
15605 {
15606 fDistributions[di]->Fill(fIntFlowCorrelationsEBE->GetBinContent(di+1),fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(di+1));
15607 }
15608 } // end of for(Int_t di=0;di<4;di++) // distribution index
15609
15610} // end of void AliFlowAnalysisWithQCumulants::StoreDistributionsOfCorrelations()
15611
e1d101a6 15612//=======================================================================================================================
489d5531 15613
489d5531 15614void AliFlowAnalysisWithQCumulants::BookAndNestAllLists()
15615{
15616 // Book and nest all lists nested in the base list fHistList.
15617 // a) Book and nest lists for integrated flow;
15618 // b) Book and nest lists for differential flow;
15619 // c) Book and nest list for particle weights;
15620 // d) Book and nest list for distributions;
e5834fcb 15621 // e) Book and nest list for various unclassified objects;
e1d101a6 15622 // f) Book and nest list for other differential correlators;
15623 // g) Book and nest list for nested loops;
df23c5ae 15624 // h) Book and nest lists for mixed harmonics;
15625 // i) Book and nest lists for control histograms.
489d5531 15626
15627 // a) Book and nest all lists for integrated flow:
1268c371 15628 // Base list for integrated flow:
489d5531 15629 fIntFlowList = new TList();
15630 fIntFlowList->SetName("Integrated Flow");
15631 fIntFlowList->SetOwner(kTRUE);
15632 fHistList->Add(fIntFlowList);
1268c371 15633 // List holding profiles:
489d5531 15634 fIntFlowProfiles = new TList();
15635 fIntFlowProfiles->SetName("Profiles");
15636 fIntFlowProfiles->SetOwner(kTRUE);
15637 fIntFlowList->Add(fIntFlowProfiles);
3435cacb 15638 // List holding all profiles with results for correlations vs M:
15639 if(fCalculateAllCorrelationsVsM)
15640 {
15641 fIntFlowAllCorrelationsVsM = new TList();
15642 fIntFlowAllCorrelationsVsM->SetName("Correlations vs M");
15643 fIntFlowAllCorrelationsVsM->SetOwner(kTRUE);
15644 fIntFlowProfiles->Add(fIntFlowAllCorrelationsVsM);
15645 } // end of if(fCalculateAllCorrelationsVsM)
1268c371 15646 // List holding histograms with results:
489d5531 15647 fIntFlowResults = new TList();
15648 fIntFlowResults->SetName("Results");
15649 fIntFlowResults->SetOwner(kTRUE);
15650 fIntFlowList->Add(fIntFlowResults);
15651
1268c371 15652 // b) Book and nest lists for differential flow:
15653 this->BookAndNestListsForDifferentialFlow();
15654
15655 // c) Book and nest list for particle weights:
15656 fWeightsList->SetName("Weights");
15657 fWeightsList->SetOwner(kTRUE);
15658 fHistList->Add(fWeightsList);
15659
15660 // d) Book and nest list for distributions:
15661 fDistributionsList = new TList();
15662 fDistributionsList->SetName("Distributions");
15663 fDistributionsList->SetOwner(kTRUE);
15664 fHistList->Add(fDistributionsList);
15665
15666 // e) Book and nest list for various unclassified objects:
15667 if(fStorePhiDistributionForOneEvent)
15668 {
15669 fVariousList = new TList();
15670 fVariousList->SetName("Various");
15671 fVariousList->SetOwner(kTRUE);
15672 fHistList->Add(fVariousList);
15673 }
15674
64e500e3 15675 // f) Book and nest list for other differential correlators:
15676 fOtherDiffCorrelatorsList = new TList();
15677 fOtherDiffCorrelatorsList->SetName("Other differential correlators");
15678 fOtherDiffCorrelatorsList->SetOwner(kTRUE);
62e36168 15679 if(fCalculateDiffFlow){fHistList->Add(fOtherDiffCorrelatorsList);} // TBI: Use another flag here instead of fCalculateDiffFlow
64e500e3 15680
15681 // g) Book and nest list for nested loops:
1268c371 15682 fNestedLoopsList = new TList();
15683 fNestedLoopsList->SetName("Nested Loops");
15684 fNestedLoopsList->SetOwner(kTRUE);
15685 fHistList->Add(fNestedLoopsList);
e1d101a6 15686
15687 // h) Book and nest lists for mixed harmonics:
15688 // Base list for mixed harmonics:
15689 fMixedHarmonicsList = new TList();
15690 fMixedHarmonicsList->SetName("Mixed Harmonics");
15691 fMixedHarmonicsList->SetOwner(kTRUE);
15692 fHistList->Add(fMixedHarmonicsList);
15693 // List holding profiles:
15694 fMixedHarmonicsProfiles = new TList();
15695 fMixedHarmonicsProfiles->SetName("Profiles");
15696 fMixedHarmonicsProfiles->SetOwner(kTRUE);
15697 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsProfiles);}
15698 // List holding histograms with results:
15699 fMixedHarmonicsResults = new TList();
15700 fMixedHarmonicsResults->SetName("Results");
15701 fMixedHarmonicsResults->SetOwner(kTRUE);
15702 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsResults);}
c10259fb 15703 // List holding objects for statistical error propagation of mixed harmonics:
15704 fMixedHarmonicsErrorPropagation = new TList();
15705 fMixedHarmonicsErrorPropagation->SetName("Error Propagation");
15706 fMixedHarmonicsErrorPropagation->SetOwner(kTRUE);
15707 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsErrorPropagation);}
e1d101a6 15708
df23c5ae 15709 // i) Book and nest lists for control histograms:
15710 // Base list for mixed harmonics:
15711 fControlHistogramsList = new TList();
15712 fControlHistogramsList->SetName("Control Histograms");
15713 fControlHistogramsList->SetOwner(kTRUE);
15714 fHistList->Add(fControlHistogramsList);
15715
1268c371 15716} // end of void AliFlowAnalysisWithQCumulants::BookAndNestAllLists()
15717
e1d101a6 15718//=======================================================================================================================
1268c371 15719
15720void AliFlowAnalysisWithQCumulants::BookAndNestListsForDifferentialFlow()
15721{
15722 // Book and nest lists for differential flow.
15723
15724 // Base list for differential flow objects:
489d5531 15725 fDiffFlowList = new TList();
15726 fDiffFlowList->SetName("Differential Flow");
15727 fDiffFlowList->SetOwner(kTRUE);
15728 fHistList->Add(fDiffFlowList);
1268c371 15729
15730 // Local flags:
15731 TString typeFlag[2] = {"RP","POI"};
15732 TString ptEtaFlag[2] = {"p_{T}","#eta"};
15733 TString powerFlag[2] = {"linear","quadratic"};
15734
15735 // 2D:
15736 if(fCalculate2DDiffFlow)
15737 {
15738 fDiffFlow2D = new TList();
15739 fDiffFlow2D->SetName("2D");
15740 fDiffFlow2D->SetOwner(kTRUE);
15741 fDiffFlowList->Add(fDiffFlow2D);
15742 for(Int_t t=0;t<2;t++)
15743 {
15744 f2DDiffFlowCorrelationsProList[t] = new TList();
15745 f2DDiffFlowCorrelationsProList[t]->SetOwner(kTRUE);
15746 f2DDiffFlowCorrelationsProList[t]->SetName(Form("Profiles with 2D correlations (%s)",typeFlag[t].Data()));
15747 fDiffFlow2D->Add(f2DDiffFlowCorrelationsProList[t]);
15748 } // end of for(Int_t t=0;t<2;t++)
15749 } // end of if(fCalculate2DDiffFlow)
15750
15751 // What follows bellow in this method is relevant only for 1D differential flow:
15752 if(!fCalculateDiffFlow){return;}
15753
15754 // List holding profiles:
489d5531 15755 fDiffFlowProfiles = new TList();
15756 fDiffFlowProfiles->SetName("Profiles");
15757 fDiffFlowProfiles->SetOwner(kTRUE);
15758 fDiffFlowList->Add(fDiffFlowProfiles);
1268c371 15759 // List holding histograms with results:
489d5531 15760 fDiffFlowResults = new TList();
15761 fDiffFlowResults->SetName("Results");
15762 fDiffFlowResults->SetOwner(kTRUE);
15763 fDiffFlowList->Add(fDiffFlowResults);
1268c371 15764 // Flags used for naming nested lists in list fDiffFlowProfiles and fDiffFlowResults:
489d5531 15765 TList list;
15766 list.SetOwner(kTRUE);
1268c371 15767 // Nested lists in fDiffFlowProfiles (~/Differential Flow/Profiles):
489d5531 15768 for(Int_t t=0;t<2;t++) // type: RP or POI
15769 {
62e36168 15770 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 15771 {
15772 // list holding profiles with correlations:
15773 fDiffFlowCorrelationsProList[t][pe] = (TList*)list.Clone();
15774 fDiffFlowCorrelationsProList[t][pe]->SetName(Form("Profiles with correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15775 fDiffFlowProfiles->Add(fDiffFlowCorrelationsProList[t][pe]);
15776 // list holding profiles with products of correlations:
15777 fDiffFlowProductOfCorrelationsProList[t][pe] = (TList*)list.Clone();
15778 fDiffFlowProductOfCorrelationsProList[t][pe]->SetName(Form("Profiles with products of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15779 fDiffFlowProfiles->Add(fDiffFlowProductOfCorrelationsProList[t][pe]);
15780 // list holding profiles with corrections:
15781 fDiffFlowCorrectionsProList[t][pe] = (TList*)list.Clone();
15782 fDiffFlowCorrectionsProList[t][pe]->SetName(Form("Profiles with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15783 fDiffFlowProfiles->Add(fDiffFlowCorrectionsProList[t][pe]);
15784 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
15785 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15786 // nested lists in fDiffFlowResults (~/Differential Flow/Results):
15787 for(Int_t t=0;t<2;t++) // type: RP or POI
15788 {
62e36168 15789 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 15790 {
15791 // list holding histograms with correlations:
15792 fDiffFlowCorrelationsHistList[t][pe] = (TList*)list.Clone();
15793 fDiffFlowCorrelationsHistList[t][pe]->SetName(Form("Correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15794 fDiffFlowResults->Add(fDiffFlowCorrelationsHistList[t][pe]);
15795 // list holding histograms with corrections:
15796 fDiffFlowCorrectionsHistList[t][pe] = (TList*)list.Clone();
15797 fDiffFlowCorrectionsHistList[t][pe]->SetName(Form("Histograms with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15798 fDiffFlowResults->Add(fDiffFlowCorrectionsHistList[t][pe]);
15799 for(Int_t power=0;power<2;power++)
15800 {
15801 // list holding histograms with sums of event weights:
15802 fDiffFlowSumOfEventWeightsHistList[t][pe][power] = (TList*)list.Clone();
15803 fDiffFlowSumOfEventWeightsHistList[t][pe][power]->SetName(Form("Sum of %s event weights (%s, %s)",powerFlag[power].Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15804 fDiffFlowResults->Add(fDiffFlowSumOfEventWeightsHistList[t][pe][power]);
15805 } // end of for(Int_t power=0;power<2;power++)
15806 // list holding histograms with sums of products of event weights:
15807 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe] = (TList*)list.Clone();
15808 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]->SetName(Form("Sum of products of event weights (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15809 fDiffFlowResults->Add(fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]);
15810 // list holding histograms with covariances of correlations:
15811 fDiffFlowCovariancesHistList[t][pe] = (TList*)list.Clone();
15812 fDiffFlowCovariancesHistList[t][pe]->SetName(Form("Covariances of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15813 fDiffFlowResults->Add(fDiffFlowCovariancesHistList[t][pe]);
15814 // list holding histograms with differential Q-cumulants:
15815 fDiffFlowCumulantsHistList[t][pe] = (TList*)list.Clone();
15816 fDiffFlowCumulantsHistList[t][pe]->SetName(Form("Differential Q-cumulants (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15817 fDiffFlowResults->Add(fDiffFlowCumulantsHistList[t][pe]);
1268c371 15818 // list holding histograms which quantify detector bias to differential Q-cumulants:
15819 fDiffFlowDetectorBiasHistList[t][pe] = (TList*)list.Clone();
15820 fDiffFlowDetectorBiasHistList[t][pe]->SetName(Form("Detector bias (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15821 fDiffFlowResults->Add(fDiffFlowDetectorBiasHistList[t][pe]);
489d5531 15822 // list holding histograms with differential flow estimates from Q-cumulants:
15823 fDiffFlowHistList[t][pe] = (TList*)list.Clone();
15824 fDiffFlowHistList[t][pe]->SetName(Form("Differential flow (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15825 fDiffFlowResults->Add(fDiffFlowHistList[t][pe]);
15826 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
15827 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15828
1268c371 15829} // end of void AliFlowAnalysisWithQCumulants::BookAndNestListsForDifferentialFlow()
489d5531 15830
e1d101a6 15831//=======================================================================================================================
489d5531 15832
489d5531 15833void AliFlowAnalysisWithQCumulants::FillCommonHistResultsDiffFlow(TString type)
15834{
1268c371 15835 // Fill common result histograms for differential flow.
489d5531 15836
1268c371 15837 Int_t t = 0;
489d5531 15838
15839 if(type == "RP")
15840 {
1268c371 15841 t = 0;
489d5531 15842 } else if(type == "POI")
15843 {
1268c371 15844 t = 1;
489d5531 15845 }
1268c371 15846
15847 // to be improved - check all pointers used in this method
489d5531 15848
15849 if(!(fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th))
15850 {
15851 cout<<"WARNING: fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th"<<endl;
15852 cout<<" is NULL in AFAWQC::FCHRIF() !!!!"<<endl;
15853 exit(0);
15854 }
15855
15856 // pt:
15857 for(Int_t p=1;p<=fnBinsPt;p++)
15858 {
15859 Double_t v2 = fDiffFlow[t][0][0]->GetBinContent(p);
15860 Double_t v4 = fDiffFlow[t][0][1]->GetBinContent(p);
15861 Double_t v6 = fDiffFlow[t][0][2]->GetBinContent(p);
15862 Double_t v8 = fDiffFlow[t][0][3]->GetBinContent(p);
15863
15864 Double_t v2Error = fDiffFlow[t][0][0]->GetBinError(p);
15865 Double_t v4Error = fDiffFlow[t][0][1]->GetBinError(p);
15866 //Double_t v6Error = fFinalFlow1D[t][pW][nua][0][2]->GetBinError(p);
15867 //Double_t v8Error = fFinalFlow1D[t][pW][nua][0][3]->GetBinError(p);
15868
15869 if(type == "RP")
15870 {
15871 fCommonHistsResults2nd->FillDifferentialFlowPtRP(p,v2,v2Error);
15872 fCommonHistsResults4th->FillDifferentialFlowPtRP(p,v4,v4Error);
15873 fCommonHistsResults6th->FillDifferentialFlowPtRP(p,v6,0.);
15874 fCommonHistsResults8th->FillDifferentialFlowPtRP(p,v8,0.);
15875 } else if(type == "POI")
15876 {
15877 fCommonHistsResults2nd->FillDifferentialFlowPtPOI(p,v2,v2Error);
15878 fCommonHistsResults4th->FillDifferentialFlowPtPOI(p,v4,v4Error);
15879 fCommonHistsResults6th->FillDifferentialFlowPtPOI(p,v6,0.);
15880 fCommonHistsResults8th->FillDifferentialFlowPtPOI(p,v8,0.);
15881 }
15882 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
15883
15884 // eta:
62e36168 15885 if(!fCalculateDiffFlowVsEta){return;}
489d5531 15886 for(Int_t e=1;e<=fnBinsEta;e++)
15887 {
15888 Double_t v2 = fDiffFlow[t][1][0]->GetBinContent(e);
15889 Double_t v4 = fDiffFlow[t][1][1]->GetBinContent(e);
15890 Double_t v6 = fDiffFlow[t][1][2]->GetBinContent(e);
15891 Double_t v8 = fDiffFlow[t][1][3]->GetBinContent(e);
15892
15893 Double_t v2Error = fDiffFlow[t][1][0]->GetBinError(e);
15894 Double_t v4Error = fDiffFlow[t][1][1]->GetBinError(e);
15895 //Double_t v6Error = fDiffFlow[t][1][2]->GetBinError(e);
15896 //Double_t v8Error = fDiffFlow[t][1][3]->GetBinError(e);
15897
15898 if(type == "RP")
15899 {
15900 fCommonHistsResults2nd->FillDifferentialFlowEtaRP(e,v2,v2Error);
15901 fCommonHistsResults4th->FillDifferentialFlowEtaRP(e,v4,v4Error);
15902 fCommonHistsResults6th->FillDifferentialFlowEtaRP(e,v6,0.);
15903 fCommonHistsResults8th->FillDifferentialFlowEtaRP(e,v8,0.);
15904 } else if(type == "POI")
15905 {
15906 fCommonHistsResults2nd->FillDifferentialFlowEtaPOI(e,v2,v2Error);
15907 fCommonHistsResults4th->FillDifferentialFlowEtaPOI(e,v4,v4Error);
15908 fCommonHistsResults6th->FillDifferentialFlowEtaPOI(e,v6,0.);
15909 fCommonHistsResults8th->FillDifferentialFlowEtaPOI(e,v8,0.);
15910 }
15911 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
15912
15913} // end of void AliFlowAnalysisWithQCumulants::FillCommonHistResultsDiffFlow(TString type, Bool_t useParticleWeights, TString eventWeights, Bool_t correctedForNUA)
15914
e1d101a6 15915//=======================================================================================================================
489d5531 15916
1268c371 15917void AliFlowAnalysisWithQCumulants::CommonConstants(TString method)
489d5531 15918{
1268c371 15919 // Access and store common constants.
15920
15921 // a) If this method was called in Init() access common constants from AliFlowCommonConstants;
15922 // b) If this method was called in Init() book and fill TProfile to hold constants accessed in a);
15923 // c) If this method was called in Finish() access common constants from TProfile booked and filled in b).
15924
15925 if(method == "Init")
15926 {
15927 // a) If this method was called in Init() access common constants from AliFlowCommonConstants:
15928 fnBinsPhi = AliFlowCommonConstants::GetMaster()->GetNbinsPhi();
15929 fPhiMin = AliFlowCommonConstants::GetMaster()->GetPhiMin();
15930 fPhiMax = AliFlowCommonConstants::GetMaster()->GetPhiMax();
15931 if(fnBinsPhi){fPhiBinWidth = (fPhiMax-fPhiMin)/fnBinsPhi;}
15932 fnBinsPt = AliFlowCommonConstants::GetMaster()->GetNbinsPt();
15933 fPtMin = AliFlowCommonConstants::GetMaster()->GetPtMin();
15934 fPtMax = AliFlowCommonConstants::GetMaster()->GetPtMax();
15935 if(fnBinsPt){fPtBinWidth = (fPtMax-fPtMin)/fnBinsPt;}
15936 fnBinsEta = AliFlowCommonConstants::GetMaster()->GetNbinsEta();
15937 fEtaMin = AliFlowCommonConstants::GetMaster()->GetEtaMin();
15938 fEtaMax = AliFlowCommonConstants::GetMaster()->GetEtaMax();
15939 if(fnBinsEta){fEtaBinWidth = (fEtaMax-fEtaMin)/fnBinsEta;}
15940
15941 // b) If this method was called in Init() book and fill TProfile to hold constants accessed in a):
15942 TString fCommonConstantsName = "fCommonConstants";
15943 fCommonConstantsName += fAnalysisLabel->Data();
15944 fCommonConstants = new TProfile(fCommonConstantsName.Data(),"Common constants",9,0.,9.);
15945 fCommonConstants->SetLabelSize(0.05);
15946 fCommonConstants->GetXaxis()->SetBinLabel(1,"nBins (#phi)");
15947 fCommonConstants->Fill(0.5,fnBinsPhi);
15948 fCommonConstants->GetXaxis()->SetBinLabel(2,"#phi_{min}");
15949 fCommonConstants->Fill(1.5,fPhiMin);
15950 fCommonConstants->GetXaxis()->SetBinLabel(3,"#phi_{max}");
15951 fCommonConstants->Fill(2.5,fPhiMax);
15952 fCommonConstants->GetXaxis()->SetBinLabel(4,"nBins (p_{t})");
15953 fCommonConstants->Fill(3.5,fnBinsPt);
15954 fCommonConstants->GetXaxis()->SetBinLabel(5,"(p_{t})_{min}");
15955 fCommonConstants->Fill(4.5,fPtMin);
15956 fCommonConstants->GetXaxis()->SetBinLabel(6,"(p_{t})_{max}");
15957 fCommonConstants->Fill(5.5,fPtMax);
15958 fCommonConstants->GetXaxis()->SetBinLabel(7,"nBins (#eta)");
15959 fCommonConstants->Fill(6.5,fnBinsEta);
15960 fCommonConstants->GetXaxis()->SetBinLabel(8,"#eta_{min}");
15961 fCommonConstants->Fill(7.5,fEtaMin);
15962 fCommonConstants->GetXaxis()->SetBinLabel(9,"#eta_{max}");
15963 fCommonConstants->Fill(8.5,fEtaMax);
15964 fHistList->Add(fCommonConstants);
15965 } // end of if(method == "Init")
15966 else if(method == "Finish")
15967 {
15968 // c) If this method was called in Finish() access common constants from TProfile booked and filled in b):
15969 if(!fCommonConstants)
15970 {
15971 printf("\n WARNING (QC): fCommonConstants is NULL in AFAWQC::AC(\"%s\") !!!!\n\n",method.Data());
15972 exit(0);
15973 }
15974 fnBinsPhi = (Int_t)fCommonConstants->GetBinContent(1);
15975 fPhiMin = fCommonConstants->GetBinContent(2);
15976 fPhiMax = fCommonConstants->GetBinContent(3);
15977 if(fnBinsPhi){fPhiBinWidth = (fPhiMax-fPhiMin)/fnBinsPhi;}
15978 fnBinsPt = (Int_t)fCommonConstants->GetBinContent(4);
15979 fPtMin = fCommonConstants->GetBinContent(5);
15980 fPtMax = fCommonConstants->GetBinContent(6);
15981 if(fnBinsPt){fPtBinWidth = (fPtMax-fPtMin)/fnBinsPt;}
15982 fnBinsEta = (Int_t)fCommonConstants->GetBinContent(7);
15983 fEtaMin = fCommonConstants->GetBinContent(8);
15984 fEtaMax = fCommonConstants->GetBinContent(9);
15985 if(fnBinsEta){fEtaBinWidth = (fEtaMax-fEtaMin)/fnBinsEta;}
15986 } // end of else if(method == "Finish")
15987
15988} // end of void AliFlowAnalysisWithQCumulants::CommonConstants(TString method)
489d5531 15989
e1d101a6 15990//=======================================================================================================================
489d5531 15991
489d5531 15992void AliFlowAnalysisWithQCumulants::CrossCheckSettings()
15993{
df23c5ae 15994 // a) Cross-check if the choice for multiplicity weights make sense;
15995 // b) Cross-check if the choice for multiplicity itself make sense.
15996
15997 // a) Cross-check if the choice for multiplicity weights make sense:
15998 if((!fMultiplicityWeight->Contains("combinations")) &&
15999 (!fMultiplicityWeight->Contains("unit")) &&
16000 (!fMultiplicityWeight->Contains("multiplicity")) )
489d5531 16001 {
16002 cout<<"WARNING (QC): Multiplicity weight can be either \"combinations\", \"unit\""<<endl;
16003 cout<<" or \"multiplicity\". Certainly not \""<<fMultiplicityWeight->Data()<<"\"."<<endl;
16004 exit(0);
16005 }
df23c5ae 16006
489d5531 16007} // end of void AliFlowAnalysisWithQCumulants::CrossCheckSettings()
16008
e1d101a6 16009//=======================================================================================================================
489d5531 16010
489d5531 16011void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeights()
16012{
0328db2d 16013 // Calculate sum of linear and quadratic event weights for correlations.
2001bc3a 16014
df23c5ae 16015 // TBI re-think what is the right multiplicity when particle weights are used!
3842bdcd 16016
16017 // Multiplicity bin of an event (relevant for all histos vs M):
16018 Double_t dMultiplicityBin = 0.;
df23c5ae 16019 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 16020 {
df23c5ae 16021 dMultiplicityBin = fNumberOfRPsEBE+0.5;
16022 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 16023 {
4aae2a93 16024 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 16025 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
16026 {
16027 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
16028 }
9f33751d 16029
489d5531 16030 for(Int_t p=0;p<2;p++) // power-1
16031 {
16032 for(Int_t ci=0;ci<4;ci++) // correlation index
16033 {
16034 fIntFlowSumOfEventWeights[p]->Fill(ci+0.5,pow(fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci+1),p+1));
b3dacf6b 16035 if(fCalculateCumulantsVsM)
16036 {
1db7eced 16037 if(fFillProfilesVsMUsingWeights)
16038 {
16039 fIntFlowSumOfEventWeightsVsM[ci][p]->Fill(dMultiplicityBin,pow(fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci+1),p+1)); // to be improved: dMult => sum of weights?
16040 } else
16041 {
16042 fIntFlowSumOfEventWeightsVsM[ci][p]->Fill(dMultiplicityBin); // to be improved: dMult => sum of weights?
16043 }
16044 } // end of if(fCalculateCumulantsVsM)
16045 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
16046 } // end of for(Int_t p=0;p<2;p++) // power-1
489d5531 16047
16048} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeights()
16049
e1d101a6 16050//=======================================================================================================================
489d5531 16051
0328db2d 16052void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeightsNUA()
489d5531 16053{
0328db2d 16054 // Calculate sum of linear and quadratic event weights for NUA terms.
16055
16056 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
489d5531 16057 {
0328db2d 16058 for(Int_t p=0;p<2;p++) // power-1
16059 {
b92ea2b9 16060 for(Int_t ci=0;ci<4;ci++) // nua term index
0328db2d 16061 {
16062 fIntFlowSumOfEventWeightsNUA[sc][p]->Fill(ci+0.5,pow(fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc]->GetBinContent(ci+1),p+1));
489d5531 16063 }
0328db2d 16064 }
16065 }
16066
16067} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeightsNUA()
489d5531 16068
e1d101a6 16069//=======================================================================================================================
0328db2d 16070
0328db2d 16071void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeights()
16072{
ff70ca91 16073 // Calculate sum of product of event weights for correlations.
2001bc3a 16074
df23c5ae 16075 // TBI re-think what is the right multiplicity when particle weights are used!
3842bdcd 16076
16077 // Multiplicity bin of an event (relevant for all histos vs M):
16078 Double_t dMultiplicityBin = 0.;
df23c5ae 16079 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 16080 {
df23c5ae 16081 dMultiplicityBin = fNumberOfRPsEBE+0.5;
16082 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 16083 {
16084 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 16085 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
16086 {
16087 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
16088 }
2001bc3a 16089
489d5531 16090 Int_t counter = 0;
16091
16092 for(Int_t ci1=1;ci1<4;ci1++)
16093 {
16094 for(Int_t ci2=ci1+1;ci2<=4;ci2++)
16095 {
ff70ca91 16096 fIntFlowSumOfProductOfEventWeights->Fill(0.5+counter,
16097 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
b3dacf6b 16098 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
16099 if(fCalculateCumulantsVsM)
16100 {
1db7eced 16101 if(fFillProfilesVsMUsingWeights)
16102 {
16103 fIntFlowSumOfProductOfEventWeightsVsM[counter]->Fill(dMultiplicityBin, // to be improved: dMult => sum of weights?
16104 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
16105 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
16106 } else
16107 {
16108 fIntFlowSumOfProductOfEventWeightsVsM[counter]->Fill(dMultiplicityBin);
16109 }
b3dacf6b 16110 } // end of if(fCalculateCumulantsVsM)
ff70ca91 16111 counter++;
1db7eced 16112 } // end of for(Int_t ci2=ci1+1;ci2<=4;ci2++)
16113 } // end of for(Int_t ci1=1;ci1<4;ci1++)
489d5531 16114
0328db2d 16115} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeights()
16116
e1d101a6 16117//=======================================================================================================================
0328db2d 16118
0328db2d 16119void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeightsNUA()
16120{
16121 // Calculate sum of product of event weights for NUA terms.
16122
16123 // w_{<2>} * w_{<cos(#phi)>}:
16124 fIntFlowSumOfProductOfEventWeightsNUA->Fill(0.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
16125 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
16126 // w_{<2>} * w_{<sin(#phi)>}:
16127 fIntFlowSumOfProductOfEventWeightsNUA->Fill(1.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
16128 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
16129 // w_{<cos(#phi)> * w_{<sin(#phi)>}:
16130 fIntFlowSumOfProductOfEventWeightsNUA->Fill(2.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
16131 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
16132 // w_{<2>} * w{<cos(phi1+phi2)>}
16133 fIntFlowSumOfProductOfEventWeightsNUA->Fill(3.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
16134 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
16135 // w_{<2>} * w{<sin(phi1+phi2)>}
16136 fIntFlowSumOfProductOfEventWeightsNUA->Fill(4.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
16137 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
16138 // w_{<2>} * w{<cos(phi1-phi2-phi3)>}
16139 fIntFlowSumOfProductOfEventWeightsNUA->Fill(5.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
16140 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
16141 // w_{<2>} * w{<sin(phi1-phi2-phi3)>}
16142 fIntFlowSumOfProductOfEventWeightsNUA->Fill(6.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
16143 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
16144 // w_{<4>} * w{<cos(phi1)>}
16145 fIntFlowSumOfProductOfEventWeightsNUA->Fill(7.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
16146 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
16147 // w_{<4>} * w{<sin(phi1)>}
16148 fIntFlowSumOfProductOfEventWeightsNUA->Fill(8.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
16149 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
16150 // w_{<4>} * w{<cos(phi1+phi2)>}
16151 fIntFlowSumOfProductOfEventWeightsNUA->Fill(9.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
16152 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
16153 // w_{<4>} * w{<sin(phi1+phi2)>}
16154 fIntFlowSumOfProductOfEventWeightsNUA->Fill(10.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
16155 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
16156 // w_{<4>} * w{<cos(phi1-phi2-phi3)>}
16157 fIntFlowSumOfProductOfEventWeightsNUA->Fill(11.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
16158 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
16159 // w_{<4>} * w{<sin(phi1-phi2-phi3)>}
16160 fIntFlowSumOfProductOfEventWeightsNUA->Fill(12.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
16161 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
16162 // w_{<cos(phi1)>} * w{<cos(phi1+phi2)>}
16163 fIntFlowSumOfProductOfEventWeightsNUA->Fill(13.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
16164 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
16165 // w_{<cos(phi1)>} * w{<sin(phi1+phi2)>}
16166 fIntFlowSumOfProductOfEventWeightsNUA->Fill(14.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
16167 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
16168 // w_{<cos(phi1)>} * w{<cos(phi1-phi2-phi3)>}
16169 fIntFlowSumOfProductOfEventWeightsNUA->Fill(15.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
16170 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
16171 // w_{<cos(phi1)>} * w{<sin(phi1-phi2-phi3)>}
16172 fIntFlowSumOfProductOfEventWeightsNUA->Fill(16.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
16173 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
16174 // w_{<sin(phi1)>} * w{<cos(phi1+phi2)>}
16175 fIntFlowSumOfProductOfEventWeightsNUA->Fill(17.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
16176 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
16177 // w_{<sin(phi1)>} * w{<sin(phi1+phi2)>}
16178 fIntFlowSumOfProductOfEventWeightsNUA->Fill(18.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
16179 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
16180 // w_{<sin(phi1)>} * w{<cos(phi1-phi2-phi3)>}
16181 fIntFlowSumOfProductOfEventWeightsNUA->Fill(19.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
16182 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
16183 // w_{<sin(phi1)>} * w{<sin(phi1-phi2-phi3)>}
16184 fIntFlowSumOfProductOfEventWeightsNUA->Fill(20.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
16185 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
16186 // w_{<cos(phi1+phi2)>} * w{<sin(phi1+phi2))>}
16187 fIntFlowSumOfProductOfEventWeightsNUA->Fill(21.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
16188 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
16189 // w_{<cos(phi1+phi2)>} * w{<cos(phi1-phi2-phi3)>}
16190 fIntFlowSumOfProductOfEventWeightsNUA->Fill(22.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
16191 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
16192 // w_{<cos(phi1+phi2)>} * w{<sin(phi1-phi2-phi3)>}
16193 fIntFlowSumOfProductOfEventWeightsNUA->Fill(23.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
16194 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
16195 // w_{<sin(phi1+phi2)>} * w{<cos(phi1-phi2-phi3)>}
16196 fIntFlowSumOfProductOfEventWeightsNUA->Fill(24.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)*
16197 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
16198 // w_{<sin(phi1+phi2)>} * w{<sin(phi1-phi2-phi3)>}
16199 fIntFlowSumOfProductOfEventWeightsNUA->Fill(25.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)*
16200 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
16201 // w_{<cos(phi1-phi2-phi3)>} * w{<sin(phi1-phi2-phi3)>}
16202 fIntFlowSumOfProductOfEventWeightsNUA->Fill(26.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)*
16203 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
16204
16205} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowIntFlowSumOfProductOfEventWeightsNUA()
489d5531 16206
e1d101a6 16207//=======================================================================================================================
489d5531 16208
489d5531 16209void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelations(TString type, TString ptOrEta)
16210{
1268c371 16211 // Calculate reduced correlations for RPs or POIs for all pt and eta bins.
489d5531 16212
1268c371 16213 // Multiplicity:
16214 Double_t dMult = (*fSpk)(0,0);
489d5531 16215
16216 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16217 Double_t dReQ1n = (*fReQ)(0,0);
16218 Double_t dReQ2n = (*fReQ)(1,0);
16219 //Double_t dReQ3n = (*fReQ)(2,0);
16220 //Double_t dReQ4n = (*fReQ)(3,0);
16221 Double_t dImQ1n = (*fImQ)(0,0);
16222 Double_t dImQ2n = (*fImQ)(1,0);
16223 //Double_t dImQ3n = (*fImQ)(2,0);
16224 //Double_t dImQ4n = (*fImQ)(3,0);
16225
16226 // reduced correlations are stored in fDiffFlowCorrelationsPro[0=RP,1=POI][0=pt,1=eta][correlation index]. Correlation index runs as follows:
16227 //
16228 // 0: <<2'>>
16229 // 1: <<4'>>
16230 // 2: <<6'>>
16231 // 3: <<8'>>
16232
ea239361 16233 //Int_t t = 0; // type flag
2a98ceb8 16234 Int_t pe = 0; // ptEta flag
489d5531 16235
16236 if(type == "RP")
16237 {
ea239361 16238 //t = 0;
489d5531 16239 } else if(type == "POI")
16240 {
ea239361 16241 //t = 1;
489d5531 16242 }
16243
16244 if(ptOrEta == "Pt")
16245 {
16246 pe = 0;
16247 } else if(ptOrEta == "Eta")
16248 {
16249 pe = 1;
16250 }
16251
16252 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16253 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16254 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16255 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16256
16257 // looping over all bins and calculating reduced correlations:
16258 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16259 {
16260 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
16261 Double_t p1n0kRe = 0.;
16262 Double_t p1n0kIm = 0.;
16263
16264 // number of POIs in particular pt or eta bin:
16265 Double_t mp = 0.;
16266
16267 // 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):
16268 Double_t q1n0kRe = 0.;
16269 Double_t q1n0kIm = 0.;
16270 Double_t q2n0kRe = 0.;
16271 Double_t q2n0kIm = 0.;
16272
16273 // number of particles which are both RPs and POIs in particular pt or eta bin:
16274 Double_t mq = 0.;
16275
16276 if(type == "POI")
16277 {
16278 // q_{m*n,0}:
16279 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
16280 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
16281 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
16282 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
16283 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
16284 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
16285 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
16286 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
16287
16288 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16289 }
16290 else if(type == "RP")
16291 {
16292 // q_{m*n,0}:
16293 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
16294 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
16295 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
16296 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
16297 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
16298 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
16299 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
16300 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
16301
16302 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16303 }
16304
16305 if(type == "POI")
16306 {
16307 // p_{m*n,0}:
16308 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
16309 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
16310 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
16311 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
16312
16313 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16314
ea239361 16315 //t = 1; // typeFlag = RP or POI
489d5531 16316 }
16317 else if(type == "RP")
16318 {
16319 // p_{m*n,0} = q_{m*n,0}:
16320 p1n0kRe = q1n0kRe;
16321 p1n0kIm = q1n0kIm;
16322
16323 mp = mq;
16324
ea239361 16325 //t = 0; // typeFlag = RP or POI
489d5531 16326 }
16327
1268c371 16328 // 2'-particle correlation for particular pt or eta bin:
489d5531 16329 Double_t two1n1nPtEta = 0.;
b40a910e 16330 Double_t mWeight2pPrime = 0.; // multiplicity weight for <2'>
489d5531 16331 if(mp*dMult-mq)
16332 {
16333 two1n1nPtEta = (p1n0kRe*dReQ1n+p1n0kIm*dImQ1n-mq)
16334 / (mp*dMult-mq);
b40a910e 16335 // determine multiplicity weight:
df23c5ae 16336 if(fMultiplicityWeight->Contains("combinations"))
b40a910e 16337 {
16338 mWeight2pPrime = mp*dMult-mq;
df23c5ae 16339 } else if(fMultiplicityWeight->Contains("unit"))
b40a910e 16340 {
16341 mWeight2pPrime = 1.;
16342 }
489d5531 16343 if(type == "POI") // to be improved (I do not this if)
16344 {
16345 // fill profile to get <<2'>> for POIs
b40a910e 16346 fDiffFlowCorrelationsPro[1][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta,mWeight2pPrime);
16347 // fill profile to get <<2'>^2> for POIs
16348 fDiffFlowSquaredCorrelationsPro[1][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta*two1n1nPtEta,mWeight2pPrime);
489d5531 16349 // histogram to store <2'> for POIs e-b-e (needed in some other methods):
16350 fDiffFlowCorrelationsEBE[1][pe][0]->SetBinContent(b,two1n1nPtEta);
b40a910e 16351 fDiffFlowEventWeightsForCorrelationsEBE[1][pe][0]->SetBinContent(b,mWeight2pPrime);
489d5531 16352 }
16353 else if(type == "RP") // to be improved (I do not this if)
16354 {
16355 // profile to get <<2'>> for RPs:
b40a910e 16356 fDiffFlowCorrelationsPro[0][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta,mWeight2pPrime);
16357 // profile to get <<2'>^2> for RPs:
16358 fDiffFlowSquaredCorrelationsPro[0][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta*two1n1nPtEta,mWeight2pPrime);
489d5531 16359 // histogram to store <2'> for RPs e-b-e (needed in some other methods):
16360 fDiffFlowCorrelationsEBE[0][pe][0]->SetBinContent(b,two1n1nPtEta);
b40a910e 16361 fDiffFlowEventWeightsForCorrelationsEBE[0][pe][0]->SetBinContent(b,mWeight2pPrime);
489d5531 16362 }
16363 } // end of if(mp*dMult-mq)
16364
16365 // 4'-particle correlation:
16366 Double_t four1n1n1n1nPtEta = 0.;
b40a910e 16367 Double_t mWeight4pPrime = 0.; // multiplicity weight for <4'>
489d5531 16368 if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16369 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
16370 {
16371 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16372 - q2n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
16373 - 2.*q2n0kIm*dReQ1n*dImQ1n
16374 - p1n0kRe*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
16375 + p1n0kIm*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
16376 - 2.*dMult*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16377 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*mq
16378 + 6.*(q1n0kRe*dReQ1n+q1n0kIm*dImQ1n)
16379 + 1.*(q2n0kRe*dReQ2n+q2n0kIm*dImQ2n)
16380 + 2.*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16381 + 2.*mq*dMult
16382 - 6.*mq)
16383 / ((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16384 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.));
b40a910e 16385 // determine multiplicity weight:
df23c5ae 16386 if(fMultiplicityWeight->Contains("combinations"))
b40a910e 16387 {
16388 mWeight4pPrime = (mp-mq)*dMult*(dMult-1.)*(dMult-2.) + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
df23c5ae 16389 } else if(fMultiplicityWeight->Contains("unit"))
b40a910e 16390 {
16391 mWeight4pPrime = 1.;
16392 }
489d5531 16393 if(type == "POI")
16394 {
16395 // profile to get <<4'>> for POIs:
b40a910e 16396 fDiffFlowCorrelationsPro[1][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta,mWeight4pPrime);
16397 // profile to get <<4'>^2> for POIs:
16398 fDiffFlowSquaredCorrelationsPro[1][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta*four1n1n1n1nPtEta,mWeight4pPrime);
489d5531 16399 // histogram to store <4'> for POIs e-b-e (needed in some other methods):
16400 fDiffFlowCorrelationsEBE[1][pe][1]->SetBinContent(b,four1n1n1n1nPtEta);
b40a910e 16401 fDiffFlowEventWeightsForCorrelationsEBE[1][pe][1]->SetBinContent(b,mWeight4pPrime);
489d5531 16402 }
16403 else if(type == "RP")
16404 {
16405 // profile to get <<4'>> for RPs:
b40a910e 16406 fDiffFlowCorrelationsPro[0][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta,mWeight4pPrime);
16407 // profile to get <<4'>^2> for RPs:
16408 fDiffFlowSquaredCorrelationsPro[0][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta*four1n1n1n1nPtEta,mWeight4pPrime);
489d5531 16409 // histogram to store <4'> for RPs e-b-e (needed in some other methods):
16410 fDiffFlowCorrelationsEBE[0][pe][1]->SetBinContent(b,four1n1n1n1nPtEta);
b40a910e 16411 fDiffFlowEventWeightsForCorrelationsEBE[0][pe][1]->SetBinContent(b,mWeight4pPrime);
489d5531 16412 }
16413 } // end of if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16414 // +mq*(dMult-1.)*(dMult-2.)*(dMult-3.))
16415
16416 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16417
16418
16419} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelations(TString type, TString ptOrEta);
16420
e1d101a6 16421//=======================================================================================================================
489d5531 16422
64e500e3 16423void AliFlowAnalysisWithQCumulants::CalculateOtherDiffCorrelators(TString type, TString ptOrEta)
16424{
16425 // Calculate other differential correlators for RPs or POIs for all pt and eta bins.
16426
16427 // Multiplicity:
16428 Double_t dMult = (*fSpk)(0,0);
16429
16430 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16431 Double_t dReQ1n = (*fReQ)(0,0);
16432 Double_t dReQ2n = (*fReQ)(1,0);
16433 Double_t dReQ3n = (*fReQ)(2,0);
16434 //Double_t dReQ4n = (*fReQ)(3,0);
16435 Double_t dImQ1n = (*fImQ)(0,0);
16436 Double_t dImQ2n = (*fImQ)(1,0);
16437 Double_t dImQ3n = (*fImQ)(2,0);
16438 //Double_t dImQ4n = (*fImQ)(3,0);
16439
16440 // 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]
16441 // Correlation index runs as follows:
16442 //
16443 // 0: <exp[in(psi1-3phi2+2phi3)]>
16444
16445 Int_t t = 0; // type flag
16446 Int_t pe = 0; // ptEta flag
16447
16448 if(type == "RP")
16449 {
16450 t = 0;
16451 } else if(type == "POI")
16452 {
16453 t = 1;
16454 }
16455
16456 if(ptOrEta == "Pt")
16457 {
16458 pe = 0;
16459 } else if(ptOrEta == "Eta")
16460 {
16461 pe = 1;
16462 }
16463
16464 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16465 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16466 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16467 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16468
16469 // looping over all bins and calculating reduced correlations:
16470 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16471 {
16472 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
16473 Double_t p1n0kRe = 0.;
16474 Double_t p1n0kIm = 0.;
16475
16476 // number of POIs in particular pt or eta bin:
16477 Double_t mp = 0.;
16478
16479 // 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):
16480 Double_t q1n0kRe = 0.;
16481 Double_t q1n0kIm = 0.;
16482 Double_t q2n0kRe = 0.;
16483 Double_t q2n0kIm = 0.;
16484 Double_t q3n0kRe = 0.;
16485 Double_t q3n0kIm = 0.;
16486
16487 // number of particles which are both RPs and POIs in particular pt or eta bin:
16488 Double_t mq = 0.;
16489
16490 if(type == "POI")
16491 {
16492 // q_{m*n,0}:
16493 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
16494 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
16495 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
16496 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
16497 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
16498 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
16499 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
16500 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
16501 q3n0kRe = fReRPQ1dEBE[2][pe][2][0]->GetBinContent(fReRPQ1dEBE[2][pe][2][0]->GetBin(b))
16502 * fReRPQ1dEBE[2][pe][2][0]->GetBinEntries(fReRPQ1dEBE[2][pe][2][0]->GetBin(b));
16503 q3n0kIm = fImRPQ1dEBE[2][pe][2][0]->GetBinContent(fImRPQ1dEBE[2][pe][2][0]->GetBin(b))
16504 * fImRPQ1dEBE[2][pe][2][0]->GetBinEntries(fImRPQ1dEBE[2][pe][2][0]->GetBin(b));
16505
16506 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16507 }
16508 else if(type == "RP")
16509 {
16510 // q_{m*n,0}:
16511 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
16512 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
16513 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
16514 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
16515 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
16516 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
16517 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
16518 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
16519 q3n0kRe = fReRPQ1dEBE[0][pe][2][0]->GetBinContent(fReRPQ1dEBE[0][pe][2][0]->GetBin(b))
16520 * fReRPQ1dEBE[0][pe][2][0]->GetBinEntries(fReRPQ1dEBE[0][pe][2][0]->GetBin(b));
16521 q3n0kIm = fImRPQ1dEBE[0][pe][2][0]->GetBinContent(fImRPQ1dEBE[0][pe][2][0]->GetBin(b))
16522 * fImRPQ1dEBE[0][pe][2][0]->GetBinEntries(fImRPQ1dEBE[0][pe][2][0]->GetBin(b));
16523
16524 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16525 }
16526
16527 if(type == "POI")
16528 {
16529 // p_{m*n,0}:
16530 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
16531 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
16532 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
16533 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
16534
16535 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16536
16537 t = 1; // typeFlag = RP or POI
16538 }
16539 else if(type == "RP")
16540 {
16541 // p_{m*n,0} = q_{m*n,0}:
16542 p1n0kRe = q1n0kRe;
16543 p1n0kIm = q1n0kIm;
16544
16545 mp = mq;
16546
16547 t = 0; // typeFlag = RP or POI
16548 }
16549
16550 // 3'-particle correlators:
16551 // Taeney-Yan correlator:
16552 Double_t dTaeneyYan = 0.;
16553 Double_t mWeightTaeneyYan = 0.; // multiplicity weight for Taeney-Yan correlator
16554 if((mp*dMult-2.*mq)*(dMult-1.) > 0.) // to be improved - is this condition fully justified?
16555 {
16556 dTaeneyYan = (dReQ3n*(p1n0kRe*dReQ2n-p1n0kIm*dImQ2n)+dImQ3n*(p1n0kIm*dReQ2n+p1n0kRe*dImQ2n)
16557 - p1n0kRe*dReQ1n - p1n0kIm*dImQ1n
16558 - q2n0kRe*dReQ2n - q2n0kIm*dImQ2n
16559 - q3n0kRe*dReQ3n - q3n0kIm*dImQ3n
16560 + 2.*mq)
16561 / ((mp*dMult-2.*mq)*(dMult-1.));
16562 // determine multiplicity weight:
df23c5ae 16563 if(fMultiplicityWeight->Contains("combinations"))
64e500e3 16564 {
16565 mWeightTaeneyYan = (mp*dMult-2.*mq)*(dMult-1.);
df23c5ae 16566 } else if(fMultiplicityWeight->Contains("unit"))
64e500e3 16567 {
16568 mWeightTaeneyYan = 1.;
16569 }
16570 // Fill profiles:
16571 fOtherDiffCorrelators[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dTaeneyYan,mWeightTaeneyYan);
16572 } // end of if((mp*dMult-2.*mq)*(dMult-1.) > 0.)
16573
16574 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16575
16576} // end of void AliFlowAnalysisWithQCumulants::CalculateOtherDiffCorrelators(TString type, TString ptOrEta)
16577
e1d101a6 16578//=======================================================================================================================
64e500e3 16579
1268c371 16580void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCorrelations(TString type)
16581{
16582 // Calculate all reduced correlations needed for 2D differential flow for each (pt,eta) bin.
16583
16584 // Multiplicity:
16585 Double_t dMult = (*fSpk)(0,0);
16586 // Real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16587 Double_t dReQ1n = (*fReQ)(0,0);
16588 Double_t dReQ2n = (*fReQ)(1,0);
16589 //Double_t dReQ3n = (*fReQ)(2,0);
16590 //Double_t dReQ4n = (*fReQ)(3,0);
16591 Double_t dImQ1n = (*fImQ)(0,0);
16592 Double_t dImQ2n = (*fImQ)(1,0);
16593 //Double_t dImQ3n = (*fImQ)(2,0);
16594 //Double_t dImQ4n = (*fImQ)(3,0);
16595
16596 // 2D reduced correlations are stored in TProfile2D f2DDiffFlowCorrelationsPro[0=RP,1=POI][correlation index].
16597 // Correlation index runs as follows:
16598 // 0: <<2'>>
16599 // 1: <<4'>>
16600 // 2: <<6'>>
16601 // 3: <<8'>>
16602
16603 Int_t t = 0; // type flag
16604 if(type == "RP")
16605 {
16606 t = 0;
16607 } else if(type == "POI")
16608 {
16609 t = 1;
16610 }
16611
16612 // Looping over all (pt,eta) bins and calculating correlations needed for differential flow:
16613 for(Int_t p=1;p<=fnBinsPt;p++)
16614 {
16615 for(Int_t e=1;e<=fnBinsEta;e++)
16616 {
16617 // Real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular (pt,eta) bin):
16618 Double_t p1n0kRe = 0.;
16619 Double_t p1n0kIm = 0.;
16620 // Number of POIs in particular pt or eta bin:
16621 Double_t mp = 0.;
16622 // Real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for 'RP && POI particles' in particular pt or eta bin):
16623 Double_t q1n0kRe = 0.;
16624 Double_t q1n0kIm = 0.;
16625 Double_t q2n0kRe = 0.;
16626 Double_t q2n0kIm = 0.;
16627 // Number of 'RP && POI particles' in particular pt or eta bin:
16628 Double_t mq = 0.;
16629 if(type == "POI")
16630 {
16631 // q_{m*n,0}:
16632 q1n0kRe = fReRPQ2dEBE[2][0][0]->GetBinContent(fReRPQ2dEBE[2][0][0]->GetBin(p,e))
16633 * fReRPQ2dEBE[2][0][0]->GetBinEntries(fReRPQ2dEBE[2][0][0]->GetBin(p,e));
16634 q1n0kIm = fImRPQ2dEBE[2][0][0]->GetBinContent(fImRPQ2dEBE[2][0][0]->GetBin(p,e))
16635 * fImRPQ2dEBE[2][0][0]->GetBinEntries(fImRPQ2dEBE[2][0][0]->GetBin(p,e));
16636 q2n0kRe = fReRPQ2dEBE[2][1][0]->GetBinContent(fReRPQ2dEBE[2][1][0]->GetBin(p,e))
16637 * fReRPQ2dEBE[2][1][0]->GetBinEntries(fReRPQ2dEBE[2][1][0]->GetBin(p,e));
16638 q2n0kIm = fImRPQ2dEBE[2][1][0]->GetBinContent(fImRPQ2dEBE[2][1][0]->GetBin(p,e))
16639 * fImRPQ2dEBE[2][1][0]->GetBinEntries(fImRPQ2dEBE[2][1][0]->GetBin(p,e));
16640 // m_{q}:
16641 mq = fReRPQ2dEBE[2][0][0]->GetBinEntries(fReRPQ2dEBE[2][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16642 } // end of if(type == "POI")
16643 else if(type == "RP")
16644 {
16645 // q_{m*n,0}:
16646 q1n0kRe = fReRPQ2dEBE[0][0][0]->GetBinContent(fReRPQ2dEBE[0][0][0]->GetBin(p,e))
16647 * fReRPQ2dEBE[0][0][0]->GetBinEntries(fReRPQ2dEBE[0][0][0]->GetBin(p,e));
16648 q1n0kIm = fImRPQ2dEBE[0][0][0]->GetBinContent(fImRPQ2dEBE[0][0][0]->GetBin(p,e))
16649 * fImRPQ2dEBE[0][0][0]->GetBinEntries(fImRPQ2dEBE[0][0][0]->GetBin(p,e));
16650 q2n0kRe = fReRPQ2dEBE[0][1][0]->GetBinContent(fReRPQ2dEBE[0][1][0]->GetBin(p,e))
16651 * fReRPQ2dEBE[0][1][0]->GetBinEntries(fReRPQ2dEBE[0][1][0]->GetBin(p,e));
16652 q2n0kIm = fImRPQ2dEBE[0][1][0]->GetBinContent(fImRPQ2dEBE[0][1][0]->GetBin(p,e))
16653 * fImRPQ2dEBE[0][1][0]->GetBinEntries(fImRPQ2dEBE[0][1][0]->GetBin(p,e));
16654 // m_{q}:
16655 mq = fReRPQ2dEBE[0][0][0]->GetBinEntries(fReRPQ2dEBE[0][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16656 } // end of else if(type == "RP")
16657 if(type == "POI")
16658 {
16659 // p_{m*n,0}:
16660 p1n0kRe = fReRPQ2dEBE[1][0][0]->GetBinContent(fReRPQ2dEBE[1][0][0]->GetBin(p,e))
16661 * fReRPQ2dEBE[1][0][0]->GetBinEntries(fReRPQ2dEBE[1][0][0]->GetBin(p,e));
16662 p1n0kIm = fImRPQ2dEBE[1][0][0]->GetBinContent(fImRPQ2dEBE[1][0][0]->GetBin(p,e))
16663 * fImRPQ2dEBE[1][0][0]->GetBinEntries(fImRPQ2dEBE[1][0][0]->GetBin(p,e));
16664 // m_{p}
16665 mp = fReRPQ2dEBE[1][0][0]->GetBinEntries(fReRPQ2dEBE[1][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16666
16667 t = 1; // typeFlag = RP or POI
16668 } // end of if(type == "POI")
16669 else if(type == "RP")
16670 {
16671 // p_{m*n,0} = q_{m*n,0}:
16672 p1n0kRe = q1n0kRe;
16673 p1n0kIm = q1n0kIm;
16674 // m_{p} = m_{q}:
16675 mp = mq;
16676
16677 t = 0; // typeFlag = RP or POI
16678 } // end of if(type == "RP")
16679
16680 // 2'-particle correlation for particular (pt,eta) bin:
16681 Double_t two1n1nPtEta = 0.;
16682 Double_t mWeight2pPrime = 0.; // multiplicity weight for <2'>
16683 if(mp*dMult-mq)
16684 {
16685 two1n1nPtEta = (p1n0kRe*dReQ1n+p1n0kIm*dImQ1n-mq)
16686 / (mp*dMult-mq);
16687 // Determine multiplicity weight:
df23c5ae 16688 if(fMultiplicityWeight->Contains("combinations"))
1268c371 16689 {
16690 mWeight2pPrime = mp*dMult-mq;
df23c5ae 16691 } else if(fMultiplicityWeight->Contains("unit"))
1268c371 16692 {
16693 mWeight2pPrime = 1.;
16694 }
16695 // Fill 2D profile holding <<2'>>:
16696 f2DDiffFlowCorrelationsPro[t][0]->Fill(fPtMin+(p-1)*fPtBinWidth,fEtaMin+(e-1)*fEtaBinWidth,two1n1nPtEta,mWeight2pPrime);
16697 } // end of if(mp*dMult-mq)
16698
16699 // 4'-particle correlation:
16700 Double_t four1n1n1n1nPtEta = 0.;
16701 Double_t mWeight4pPrime = 0.; // multiplicity weight for <4'>
16702 if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16703 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
16704 {
16705 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16706 - q2n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
16707 - 2.*q2n0kIm*dReQ1n*dImQ1n
16708 - p1n0kRe*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
16709 + p1n0kIm*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
16710 - 2.*dMult*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16711 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*mq
16712 + 6.*(q1n0kRe*dReQ1n+q1n0kIm*dImQ1n)
16713 + 1.*(q2n0kRe*dReQ2n+q2n0kIm*dImQ2n)
16714 + 2.*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16715 + 2.*mq*dMult
16716 - 6.*mq)
16717 / ((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16718 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.));
16719 // Determine multiplicity weight:
df23c5ae 16720 if(fMultiplicityWeight->Contains("combinations"))
1268c371 16721 {
16722 mWeight4pPrime = (mp-mq)*dMult*(dMult-1.)*(dMult-2.) + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
df23c5ae 16723 } else if(fMultiplicityWeight->Contains("unit"))
1268c371 16724 {
16725 mWeight4pPrime = 1.;
16726 }
16727 // Fill 2D profile holding <<4'>>:
16728 f2DDiffFlowCorrelationsPro[t][1]->Fill(fPtMin+(p-1)*fPtBinWidth,fEtaMin+(e-1)*fEtaBinWidth,four1n1n1n1nPtEta,mWeight4pPrime);
16729 } // end of if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16730 // +mq*(dMult-1.)*(dMult-2.)*(dMult-3.))
16731 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
16732 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
16733
16734} // end of AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCorrelations(TString type)
16735
e1d101a6 16736//=======================================================================================================================
1268c371 16737
489d5531 16738void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfEventWeights(TString type, TString ptOrEta)
16739{
16740 // Calculate sums of various event weights for reduced correlations.
16741 // (These quantitites are needed in expressions for unbiased estimators relevant for the statistical errors.)
16742
2a98ceb8 16743 Int_t typeFlag = 0;
16744 Int_t ptEtaFlag = 0;
489d5531 16745
16746 if(type == "RP")
16747 {
16748 typeFlag = 0;
16749 } else if(type == "POI")
16750 {
16751 typeFlag = 1;
16752 }
16753
16754 if(ptOrEta == "Pt")
16755 {
16756 ptEtaFlag = 0;
16757 } else if(ptOrEta == "Eta")
16758 {
16759 ptEtaFlag = 1;
16760 }
16761
16762 // shortcuts:
16763 Int_t t = typeFlag;
16764 Int_t pe = ptEtaFlag;
16765
16766 // binning:
16767 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16768 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16769 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16770 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16771
16772 for(Int_t rpq=0;rpq<3;rpq++)
16773 {
16774 for(Int_t m=0;m<4;m++)
16775 {
16776 for(Int_t k=0;k<9;k++)
16777 {
16778 if(!fReRPQ1dEBE[rpq][pe][m][k])
16779 {
16780 cout<<"WARNING: fReRPQ1dEBE[rpq][pe][m][k] is NULL in AFAWQC::CSAPOEWFDF() !!!!"<<endl;
16781 cout<<"pe = "<<pe<<endl;
16782 cout<<"rpq = "<<rpq<<endl;
16783 cout<<"m = "<<m<<endl;
16784 cout<<"k = "<<k<<endl;
16785 exit(0);
16786 }
16787 }
16788 }
16789 }
16790
16791 // multiplicities:
1268c371 16792 Double_t dMult = (*fSpk)(0,0); // total event multiplicity
489d5531 16793 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16794 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16795 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16796
16797 // event weights for reduced correlations:
16798 Double_t dw2 = 0.; // event weight for <2'>
16799 Double_t dw4 = 0.; // event weight for <4'>
16800 //Double_t dw6 = 0.; // event weight for <6'>
16801 //Double_t dw8 = 0.; // event weight for <8'>
16802
16803 // looping over bins:
16804 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16805 {
16806 if(type == "RP")
16807 {
16808 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16809 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16810 } else if(type == "POI")
16811 {
16812 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16813 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16814 }
16815
16816 // event weight for <2'>:
16817 dw2 = mp*dMult-mq;
16818 fDiffFlowSumOfEventWeights[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2);
16819 fDiffFlowSumOfEventWeights[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw2,2.));
16820
16821 // event weight for <4'>:
16822 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16823 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16824 fDiffFlowSumOfEventWeights[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4);
16825 fDiffFlowSumOfEventWeights[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw4,2.));
16826
16827 // event weight for <6'>:
16828 //dw6 = ...;
16829 //fDiffFlowSumOfEventWeights[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6);
16830 //fDiffFlowSumOfEventWeights[t][pe][t][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw6,2.));
16831
16832 // event weight for <8'>:
16833 //dw8 = ...;
16834 //fDiffFlowSumOfEventWeights[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw8);
16835 //fDiffFlowSumOfEventWeights[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw8,2.));
16836 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16837
16838} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfEventWeights()
16839
16840
e1d101a6 16841//=======================================================================================================================
489d5531 16842
16843
16844void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfProductOfEventWeights(TString type, TString ptOrEta)
16845{
16846 // Calculate sum of products of various event weights for both types of correlations (the ones for int. and diff. flow).
16847 // (These quantitites are needed in expressions for unbiased estimators relevant for the statistical errors.)
16848 //
16849 // Important: To fill fDiffFlowSumOfProductOfEventWeights[][][][] use bellow table (i,j) with following constraints:
16850 // 1.) i<j
16851 // 2.) do not store terms which DO NOT include reduced correlations;
16852 // Table:
16853 // [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'>]
16854
2a98ceb8 16855 Int_t typeFlag = 0;
16856 Int_t ptEtaFlag = 0;
489d5531 16857
16858 if(type == "RP")
16859 {
16860 typeFlag = 0;
16861 } else if(type == "POI")
16862 {
16863 typeFlag = 1;
16864 }
16865
16866 if(ptOrEta == "Pt")
16867 {
16868 ptEtaFlag = 0;
16869 } else if(ptOrEta == "Eta")
16870 {
16871 ptEtaFlag = 1;
16872 }
16873
16874 // shortcuts:
16875 Int_t t = typeFlag;
16876 Int_t pe = ptEtaFlag;
16877
16878 // binning:
16879 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16880 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16881 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16882 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16883
16884 // protection:
16885 for(Int_t rpq=0;rpq<3;rpq++)
16886 {
16887 for(Int_t m=0;m<4;m++)
16888 {
16889 for(Int_t k=0;k<9;k++)
16890 {
16891 if(!fReRPQ1dEBE[rpq][pe][m][k])
16892 {
16893 cout<<"WARNING: fReRPQ1dEBE[rpq][pe][m][k] is NULL in AFAWQC::CSAPOEWFDF() !!!!"<<endl;
16894 cout<<"pe = "<<pe<<endl;
16895 cout<<"rpq = "<<rpq<<endl;
16896 cout<<"m = "<<m<<endl;
16897 cout<<"k = "<<k<<endl;
16898 exit(0);
16899 }
16900 }
16901 }
16902 }
16903
16904 // multiplicities:
1268c371 16905 Double_t dMult = (*fSpk)(0,0); // total event multiplicity
489d5531 16906 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16907 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16908 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16909
16910 // event weights for correlations:
16911 Double_t dW2 = dMult*(dMult-1); // event weight for <2>
16912 Double_t dW4 = dMult*(dMult-1)*(dMult-2)*(dMult-3); // event weight for <4>
16913 Double_t dW6 = dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5); // event weight for <6>
16914 Double_t dW8 = dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5)*(dMult-6)*(dMult-7); // event weight for <8>
16915
16916 // event weights for reduced correlations:
16917 Double_t dw2 = 0.; // event weight for <2'>
16918 Double_t dw4 = 0.; // event weight for <4'>
16919 //Double_t dw6 = 0.; // event weight for <6'>
16920 //Double_t dw8 = 0.; // event weight for <8'>
16921
16922 // looping over bins:
16923 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16924 {
16925 if(type == "RP")
16926 {
16927 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16928 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16929 } else if(type == "POI")
16930 {
16931 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16932 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16933 }
16934
16935 // event weight for <2'>:
16936 dw2 = mp*dMult-mq;
16937 fDiffFlowSumOfProductOfEventWeights[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw2); // storing product of even weights for <2> and <2'>
16938 fDiffFlowSumOfProductOfEventWeights[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW4); // storing product of even weights for <4> and <2'>
16939 fDiffFlowSumOfProductOfEventWeights[t][pe][1][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW6); // storing product of even weights for <6> and <2'>
16940 fDiffFlowSumOfProductOfEventWeights[t][pe][1][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW8); // storing product of even weights for <8> and <2'>
16941
16942 // event weight for <4'>:
16943 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16944 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16945 fDiffFlowSumOfProductOfEventWeights[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw4); // storing product of even weights for <2> and <4'>
16946 fDiffFlowSumOfProductOfEventWeights[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw4); // storing product of even weights for <2'> and <4'>
16947 fDiffFlowSumOfProductOfEventWeights[t][pe][2][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw4); // storing product of even weights for <4> and <4'>
16948 fDiffFlowSumOfProductOfEventWeights[t][pe][3][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dW6); // storing product of even weights for <6> and <4'>
16949 fDiffFlowSumOfProductOfEventWeights[t][pe][3][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dW8); // storing product of even weights for <8> and <4'>
16950
16951 // event weight for <6'>:
16952 //dw6 = ...;
16953 //fDiffFlowSumOfProductOfEventWeights[t][pe][0][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw6); // storing product of even weights for <2> and <6'>
16954 //fDiffFlowSumOfProductOfEventWeights[t][pe][1][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw6); // storing product of even weights for <2'> and <6'>
16955 //fDiffFlowSumOfProductOfEventWeights[t][pe][2][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw6); // storing product of even weights for <4> and <6'>
16956 //fDiffFlowSumOfProductOfEventWeights[t][pe][3][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dw6); // storing product of even weights for <4'> and <6'>
16957 //fDiffFlowSumOfProductOfEventWeights[t][pe][4][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW6*dw6); // storing product of even weights for <6> and <6'>
16958 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dW8); // storing product of even weights for <6'> and <8>
16959 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dw8); // storing product of even weights for <6'> and <8'>
16960
16961 // event weight for <8'>:
16962 //dw8 = ...;
16963 //fDiffFlowSumOfProductOfEventWeights[t][pe][0][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw8); // storing product of even weights for <2> and <8'>
16964 //fDiffFlowSumOfProductOfEventWeights[t][pe][1][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw8); // storing product of even weights for <2'> and <8'>
16965 //fDiffFlowSumOfProductOfEventWeights[t][pe][2][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw8); // storing product of even weights for <4> and <8'>
16966 //fDiffFlowSumOfProductOfEventWeights[t][pe][3][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dw8); // storing product of even weights for <4'> and <8'>
16967 //fDiffFlowSumOfProductOfEventWeights[t][pe][4][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW6*dw8); // storing product of even weights for <6> and <8'>
16968 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dw8); // storing product of even weights for <6'> and <8'>
16969 //fDiffFlowSumOfProductOfEventWeights[t][pe][6][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW8*dw8); // storing product of even weights for <8> and <8'>
16970
16971 // Table:
16972 // [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'>]
16973
16974 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16975
16976
16977
16978} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfProductOfEventWeights(TString type, TString ptOrEta)
16979
e1d101a6 16980//=======================================================================================================================
489d5531 16981
489d5531 16982void AliFlowAnalysisWithQCumulants::FinalizeReducedCorrelations(TString type, TString ptOrEta)
16983{
16984 // Transfer profiles into histograms and calculate statistical errors correctly.
16985
1268c371 16986 Int_t t = 0; // RP or POI
16987 Int_t pe = 0; // pt or eta
489d5531 16988
16989 if(type == "RP")
16990 {
1268c371 16991 t = 0;
489d5531 16992 } else if(type == "POI")
16993 {
1268c371 16994 t = 1;
489d5531 16995 }
16996
16997 if(ptOrEta == "Pt")
16998 {
1268c371 16999 pe = 0;
489d5531 17000 } else if(ptOrEta == "Eta")
17001 {
1268c371 17002 pe = 1;
489d5531 17003 }
1268c371 17004
17005 for(Int_t rci=0;rci<4;rci++) // to be improved - moved into the method CheckPointersUsedInFinish()
489d5531 17006 {
17007 if(!fDiffFlowCorrelationsPro[t][pe][rci])
17008 {
17009 cout<<"WARNING: fDiffFlowCorrelationsPro[t][pe][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
17010 cout<<"t = "<<t<<endl;
17011 cout<<"pe = "<<pe<<endl;
17012 cout<<"rci = "<<rci<<endl;
17013 exit(0);
17014 }
b40a910e 17015 if(!fDiffFlowSquaredCorrelationsPro[t][pe][rci])
17016 {
17017 cout<<"WARNING: fDiffFlowSquaredCorrelationsPro[t][pe][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
17018 cout<<"t = "<<t<<endl;
17019 cout<<"pe = "<<pe<<endl;
17020 cout<<"rci = "<<rci<<endl;
17021 exit(0);
17022 }
489d5531 17023 for(Int_t power=0;power<2;power++)
17024 {
17025 if(!fDiffFlowSumOfEventWeights[t][pe][power][rci])
17026 {
17027 cout<<"WARNING: fDiffFlowSumOfEventWeights[t][pe][power][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
17028 cout<<"t = "<<t<<endl;
17029 cout<<"pe = "<<pe<<endl;
17030 cout<<"power = "<<power<<endl;
17031 cout<<"rci = "<<rci<<endl;
17032 exit(0);
17033 }
17034 } // end of for(Int_t power=0;power<2;power++)
17035 } // end of for(Int_t rci=0;rci<4;rci++)
17036
17037 // common:
b40a910e 17038 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 17039 // transfer 1D profile into 1D histogram:
17040 Double_t correlation = 0.;
b40a910e 17041 Double_t squaredCorrelation = 0.;
489d5531 17042 Double_t spread = 0.;
17043 Double_t sumOfWeights = 0.; // sum of weights for particular reduced correlations for particular pt or eta bin
17044 Double_t sumOfSquaredWeights = 0.; // sum of squared weights for particular reduced correlations for particular pt or eta bin
17045 Double_t error = 0.; // error = termA * spread * termB
17046 // termA = (sqrt(sumOfSquaredWeights)/sumOfWeights)
17047 // termB = 1/pow(1-termA^2,0.5)
17048 Double_t termA = 0.;
17049 Double_t termB = 0.;
17050 for(Int_t rci=0;rci<4;rci++) // index of reduced correlation
17051 {
17052 for(Int_t b=1;b<=nBinsPtEta[pe];b++) // number of pt or eta bins
17053 {
b40a910e 17054 if(fDiffFlowCorrelationsPro[t][pe][rci]->GetBinEffectiveEntries(b) < 2 ||
17055 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->GetBinEffectiveEntries(b) < 2)
17056 {
17057 fDiffFlowCorrelationsPro[t][pe][rci]->SetBinError(b,0.);
17058 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->SetBinError(b,0.);
17059 continue; // to be improved - should I ignore results in pt bins with one entry for reduced correlations or not?
17060 }
489d5531 17061 correlation = fDiffFlowCorrelationsPro[t][pe][rci]->GetBinContent(b);
b40a910e 17062 squaredCorrelation = fDiffFlowSquaredCorrelationsPro[t][pe][rci]->GetBinContent(b);
17063 if(squaredCorrelation-correlation*correlation >= 0.)
17064 {
17065 spread = pow(squaredCorrelation-correlation*correlation,0.5);
17066 } else
17067 {
17068 cout<<endl;
17069 cout<<Form(" WARNING: Imaginary 'spread' for rci = %d, pe = %d, bin = %d !!!!",rci,pe,b)<<endl;
17070 cout<<endl;
17071 }
489d5531 17072 sumOfWeights = fDiffFlowSumOfEventWeights[t][pe][0][rci]->GetBinContent(b);
17073 sumOfSquaredWeights = fDiffFlowSumOfEventWeights[t][pe][1][rci]->GetBinContent(b);
1268c371 17074 if(TMath::Abs(sumOfWeights)>0.){termA = (pow(sumOfSquaredWeights,0.5)/sumOfWeights);}
17075 if(1.-pow(termA,2.)>0.){termB = 1./pow(1.-pow(termA,2.),0.5);}
489d5531 17076 error = termA*spread*termB; // final error (unbiased estimator for standard deviation)
17077 fDiffFlowCorrelationsHist[t][pe][rci]->SetBinContent(b,correlation);
17078 fDiffFlowCorrelationsHist[t][pe][rci]->SetBinError(b,error);
17079 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17080 } // end of for(Int_t rci=0;rci<4;rci++)
17081
17082} // end of void AliFlowAnalysisWithQCumulants::FinalizeReducedCorrelations(TString type, TString ptOrEta)
17083
e1d101a6 17084//=======================================================================================================================
489d5531 17085
489d5531 17086void AliFlowAnalysisWithQCumulants::CalculateDiffFlowProductOfCorrelations(TString type, TString ptOrEta)
17087{
17088 // store products: <2><2'>, <2><4'>, <2><6'>, <2><8'>, <2'><4>,
17089 // <2'><4'>, <2'><6>, <2'><6'>, <2'><8>, <2'><8'>,
17090 // <4><4'>, <4><6'>, <4><8'>, <4'><6>, <4'><6'>,
17091 // <4'><8>, <4'><8'>, <6><6'>, <6><8'>, <6'><8>,
17092 // <6'><8'>, <8><8'>.
17093
2a98ceb8 17094 Int_t typeFlag = 0;
17095 Int_t ptEtaFlag = 0;
489d5531 17096
17097 if(type == "RP")
17098 {
17099 typeFlag = 0;
17100 } else if(type == "POI")
17101 {
17102 typeFlag = 1;
17103 }
17104
17105 if(ptOrEta == "Pt")
17106 {
17107 ptEtaFlag = 0;
17108 } else if(ptOrEta == "Eta")
17109 {
17110 ptEtaFlag = 1;
17111 }
17112
17113 // shortcuts:
17114 Int_t t = typeFlag;
17115 Int_t pe = ptEtaFlag;
17116
17117 // common:
17118 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
17119 Double_t minPtEta[2] = {fPtMin,fEtaMin};
17120 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
17121
17122 // protections // to be improved (add protection for all pointers in this method)
17123 if(!fIntFlowCorrelationsEBE)
17124 {
17125 cout<<"WARNING: fIntFlowCorrelationsEBE is NULL in AFAWQC::CDFPOC() !!!!"<<endl;
17126 exit(0);
17127 }
17128
17129 /*
1268c371 17130 Double_t dMult = (*fSpk)(0,0); // multiplicity (number of particles used to determine the reaction plane)
489d5531 17131 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
17132 Double_t mp = 0.; // number of POIs in particular pt or eta bin
17133 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
17134 */
17135
17136 // e-b-e correlations:
17137 Double_t twoEBE = fIntFlowCorrelationsEBE->GetBinContent(1); // <2>
17138 Double_t fourEBE = fIntFlowCorrelationsEBE->GetBinContent(2); // <4>
17139 Double_t sixEBE = fIntFlowCorrelationsEBE->GetBinContent(3); // <6>
17140 Double_t eightEBE = fIntFlowCorrelationsEBE->GetBinContent(4); // <8>
17141
17142 // event weights for correlations:
17143 Double_t dW2 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1); // event weight for <2>
17144 Double_t dW4 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2); // event weight for <4>
17145 Double_t dW6 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(3); // event weight for <6>
17146 Double_t dW8 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(4); // event weight for <8>
17147
17148 // e-b-e reduced correlations:
17149 Double_t twoReducedEBE = 0.; // <2'>
17150 Double_t fourReducedEBE = 0.; // <4'>
ea239361 17151 //Double_t sixReducedEBE = 0.; // <6'>
17152 //Double_t eightReducedEBE = 0.; // <8'>
489d5531 17153
17154 // event weights for reduced correlations:
17155 Double_t dw2 = 0.; // event weight for <2'>
17156 Double_t dw4 = 0.; // event weight for <4'>
17157 //Double_t dw6 = 0.; // event weight for <6'>
17158 //Double_t dw8 = 0.; // event weight for <8'>
17159
17160 // looping over bins:
17161 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17162 {
17163 // e-b-e reduced correlations:
17164 twoReducedEBE = fDiffFlowCorrelationsEBE[t][pe][0]->GetBinContent(b);
17165 fourReducedEBE = fDiffFlowCorrelationsEBE[t][pe][1]->GetBinContent(b);
ea239361 17166 //sixReducedEBE = fDiffFlowCorrelationsEBE[t][pe][2]->GetBinContent(b);
17167 //eightReducedEBE = fDiffFlowCorrelationsEBE[t][pe][3]->GetBinContent(b);
489d5531 17168
17169 /*
17170 // to be improved (I should not do this here again)
17171 if(type == "RP")
17172 {
17173 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
17174 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
17175 } else if(type == "POI")
17176 {
17177 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
17178 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
17179 }
17180
17181 // event weights for reduced correlations:
17182 dw2 = mp*dMult-mq; // weight for <2'>
17183 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
17184 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.); // weight for <4'>
17185 //dw6 = ...
17186 //dw8 = ...
17187
17188 */
17189
17190 dw2 = fDiffFlowEventWeightsForCorrelationsEBE[t][pe][0]->GetBinContent(b);
17191 dw4 = fDiffFlowEventWeightsForCorrelationsEBE[t][pe][1]->GetBinContent(b);
17192
17193 // storing all products:
17194 fDiffFlowProductOfCorrelationsPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*twoReducedEBE,dW2*dw2); // storing <2><2'>
17195 fDiffFlowProductOfCorrelationsPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*twoReducedEBE,dW4*dw2); // storing <4><2'>
17196 fDiffFlowProductOfCorrelationsPro[t][pe][1][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*twoReducedEBE,dW6*dw2); // storing <6><2'>
17197 fDiffFlowProductOfCorrelationsPro[t][pe][1][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*twoReducedEBE,dW8*dw2); // storing <8><2'>
17198
17199 // event weight for <4'>:
17200 fDiffFlowProductOfCorrelationsPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*fourReducedEBE,dW2*dw4); // storing <2><4'>
17201 fDiffFlowProductOfCorrelationsPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*fourReducedEBE,dw2*dw4); // storing <2'><4'>
17202 fDiffFlowProductOfCorrelationsPro[t][pe][2][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*fourReducedEBE,dW4*dw4); // storing <4><4'>
17203 fDiffFlowProductOfCorrelationsPro[t][pe][3][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*fourReducedEBE,dW6*dw4); // storing <6><4'>
17204 fDiffFlowProductOfCorrelationsPro[t][pe][3][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*fourReducedEBE,dW8*dw4); // storing <8><4'>
17205
17206 // event weight for <6'>:
17207 //dw6 = ...;
17208 //fDiffFlowProductOfCorrelationsPro[t][pe][0][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*sixReducedEBE,dW2*dw6); // storing <2><6'>
17209 //fDiffFlowProductOfCorrelationsPro[t][pe][1][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*sixReducedEBE,dw2*dw6); // storing <2'><6'>
17210 //fDiffFlowProductOfCorrelationsPro[t][pe][2][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*sixReducedEBE,dW4*dw6); // storing <4><6'>
17211 //fDiffFlowProductOfCorrelationsPro[t][pe][3][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourReducedEBE*sixReducedEBE,dw4*dw6); // storing <4'><6'>
17212 //fDiffFlowProductOfCorrelationsPro[t][pe][4][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*sixReducedEBE,dW6*dw6); // storing <6><6'>
17213 //fDiffFlowProductOfCorrelationsPro[t][pe][5][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightEBE,dw6*dW8); // storing <6'><8>
17214 //fDiffFlowProductOfCorrelationsPro[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightReducedEBE,dw6*dw8); // storing <6'><8'>
17215
17216 // event weight for <8'>:
17217 //dw8 = ...;
17218 //fDiffFlowProductOfCorrelationsPro[t][pe][0][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*eightReducedEBE,dW2*dw8); // storing <2><8'>
17219 //fDiffFlowProductOfCorrelationsPro[t][pe][1][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*eightReducedEBE,dw2*dw8); // storing <2'><8'>
17220 //fDiffFlowProductOfCorrelationsPro[t][pe][2][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*eightReducedEBE,dW4*dw8); // storing <4><8'>
17221 //fDiffFlowProductOfCorrelationsPro[t][pe][3][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourReducedEBE*eightReducedEBE,dw4*dw8); // storing <4'><8'>
17222 //fDiffFlowProductOfCorrelationsPro[t][pe][4][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*eightReducedEBE,dW6*dw8); // storing <6><8'>
17223 //fDiffFlowProductOfCorrelationsPro[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightReducedEBE,dw6*dw8); // storing <6'><8'>
17224 //fDiffFlowProductOfCorrelationsPro[t][pe][6][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*eightReducedEBE,dW8*dw8); // storing <8><8'>
17225 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++
17226
17227} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowProductOfCorrelations(TString type, TString ptOrEta)
17228
e1d101a6 17229//=======================================================================================================================
489d5531 17230
489d5531 17231void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCovariances(TString type, TString ptOrEta) // to be improved (reimplemented)
17232{
17233 // a) Calculate unbiased estimators Cov(<2>,<2'>), Cov(<2>,<4'>), Cov(<4>,<2'>), Cov(<4>,<4'>) and Cov(<2'>,<4'>)
17234 // for covariances V(<2>,<2'>), V(<2>,<4'>), V(<4>,<2'>), V(<4>,<4'>) and V(<2'>,<4'>).
17235 // b) Store in histogram fDiffFlowCovariances[t][pe][index] for instance the following:
17236 //
17237 // 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)]
17238 //
17239 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<2'>} is event weight for <2'>.
17240 // c) Binning of fDiffFlowCovariances[t][pe][index] is organized as follows:
17241 //
17242 // 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)]
17243 // 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)]
17244 // 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)]
17245 // 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)]
17246 // 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)]
17247 // ...
17248
2a98ceb8 17249 Int_t typeFlag = 0;
17250 Int_t ptEtaFlag = 0;
489d5531 17251
17252 if(type == "RP")
17253 {
17254 typeFlag = 0;
17255 } else if(type == "POI")
17256 {
17257 typeFlag = 1;
17258 }
17259
17260 if(ptOrEta == "Pt")
17261 {
17262 ptEtaFlag = 0;
17263 } else if(ptOrEta == "Eta")
17264 {
17265 ptEtaFlag = 1;
17266 }
17267
17268 // shortcuts:
17269 Int_t t = typeFlag;
17270 Int_t pe = ptEtaFlag;
17271
17272 // common:
17273 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
17274 //Double_t minPtEta[2] = {fPtMin,fEtaMin};
17275 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
17276 //Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
17277
17278 // average correlations:
17279 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
17280 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
17281 //Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
17282 //Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
17283
17284 // sum of weights for correlation:
17285 Double_t sumOfWeightsForTwo = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // sum_{i=1}^{N} w_{<2>}
17286 Double_t sumOfWeightsForFour = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // sum_{i=1}^{N} w_{<4>}
17287 //Double_t sumOfWeightsForSix = fIntFlowSumOfEventWeights[0]->GetBinContent(3); // sum_{i=1}^{N} w_{<6>}
17288 //Double_t sumOfWeightsForEight = fIntFlowSumOfEventWeights[0]->GetBinContent(4); // sum_{i=1}^{N} w_{<8>}
17289
17290 // average reduced correlations:
17291 Double_t twoReduced = 0.; // <<2'>>
17292 Double_t fourReduced = 0.; // <<4'>>
17293 //Double_t sixReduced = 0.; // <<6'>>
17294 //Double_t eightReduced = 0.; // <<8'>>
17295
17296 // sum of weights for reduced correlation:
17297 Double_t sumOfWeightsForTwoReduced = 0.; // sum_{i=1}^{N} w_{<2'>}
17298 Double_t sumOfWeightsForFourReduced = 0.; // sum_{i=1}^{N} w_{<4'>}
17299 //Double_t sumOfWeightsForSixReduced = 0.; // sum_{i=1}^{N} w_{<6'>}
17300 //Double_t sumOfWeightsForEightReduced = 0.; // sum_{i=1}^{N} w_{<8'>}
17301
17302 // product of weights for reduced correlation:
17303 Double_t productOfWeightsForTwoTwoReduced = 0.; // sum_{i=1}^{N} w_{<2>}w_{<2'>}
17304 Double_t productOfWeightsForTwoFourReduced = 0.; // sum_{i=1}^{N} w_{<2>}w_{<4'>}
17305 Double_t productOfWeightsForFourTwoReduced = 0.; // sum_{i=1}^{N} w_{<4>}w_{<2'>}
17306 Double_t productOfWeightsForFourFourReduced = 0.; // sum_{i=1}^{N} w_{<4>}w_{<4'>}
17307 Double_t productOfWeightsForTwoReducedFourReduced = 0.; // sum_{i=1}^{N} w_{<2'>}w_{<4'>}
17308 // ...
17309
17310 // products for differential flow:
17311 Double_t twoTwoReduced = 0; // <<2><2'>>
17312 Double_t twoFourReduced = 0; // <<2><4'>>
17313 Double_t fourTwoReduced = 0; // <<4><2'>>
17314 Double_t fourFourReduced = 0; // <<4><4'>>
17315 Double_t twoReducedFourReduced = 0; // <<2'><4'>>
17316
17317 // denominators in the expressions for the unbiased estimators for covariances:
17318 // denominator = 1 - term1/(term2*term3)
17319 // prefactor = term1/(term2*term3)
17320 Double_t denominator = 0.;
17321 Double_t prefactor = 0.;
17322 Double_t term1 = 0.;
17323 Double_t term2 = 0.;
17324 Double_t term3 = 0.;
17325
17326 // unbiased estimators for covariances for differential flow:
17327 Double_t covTwoTwoReduced = 0.; // Cov(<2>,<2'>)
17328 Double_t wCovTwoTwoReduced = 0.; // Cov(<2>,<2'>) * prefactor(w_{<2>},w_{<2'>})
17329 Double_t covTwoFourReduced = 0.; // Cov(<2>,<4'>)
17330 Double_t wCovTwoFourReduced = 0.; // Cov(<2>,<4'>) * prefactor(w_{<2>},w_{<4'>})
17331 Double_t covFourTwoReduced = 0.; // Cov(<4>,<2'>)
17332 Double_t wCovFourTwoReduced = 0.; // Cov(<4>,<2'>) * prefactor(w_{<4>},w_{<2'>})
17333 Double_t covFourFourReduced = 0.; // Cov(<4>,<4'>)
17334 Double_t wCovFourFourReduced = 0.; // Cov(<4>,<4'>) * prefactor(w_{<4>},w_{<4'>})
17335 Double_t covTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>)
17336 Double_t wCovTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>) * prefactor(w_{<2'>},w_{<4'>})
17337
17338 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17339 {
17340 // average reduced corelations:
17341 twoReduced = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b);
17342 fourReduced = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b);
17343 // average products:
17344 twoTwoReduced = fDiffFlowProductOfCorrelationsPro[t][pe][0][1]->GetBinContent(b);
17345 twoFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][0][3]->GetBinContent(b);
17346 fourTwoReduced = fDiffFlowProductOfCorrelationsPro[t][pe][1][2]->GetBinContent(b);
17347 fourFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][2][3]->GetBinContent(b);
17348 twoReducedFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][1][3]->GetBinContent(b);
17349 // sum of weights for reduced correlations:
17350 sumOfWeightsForTwoReduced = fDiffFlowSumOfEventWeights[t][pe][0][0]->GetBinContent(b);
17351 sumOfWeightsForFourReduced = fDiffFlowSumOfEventWeights[t][pe][0][1]->GetBinContent(b);
17352 // products of weights for correlations:
17353 productOfWeightsForTwoTwoReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][0][1]->GetBinContent(b);
17354 productOfWeightsForTwoFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][0][3]->GetBinContent(b);
17355 productOfWeightsForFourTwoReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][1][2]->GetBinContent(b);
17356 productOfWeightsForFourFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][2][3]->GetBinContent(b);
17357 productOfWeightsForTwoReducedFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][1][3]->GetBinContent(b);
17358 // denominator for the unbiased estimator for covariances: 1 - term1/(term2*term3)
17359 // prefactor (multiplies Cov's) = term1/(term2*term3)
17360 // <2>,<2'>:
17361 term1 = productOfWeightsForTwoTwoReduced;
17362 term2 = sumOfWeightsForTwo;
17363 term3 = sumOfWeightsForTwoReduced;
17364 if(term2*term3>0.)
17365 {
17366 denominator = 1.-term1/(term2*term3);
17367 prefactor = term1/(term2*term3);
1268c371 17368 if(TMath::Abs(denominator)>1.e-6)
489d5531 17369 {
17370 covTwoTwoReduced = (twoTwoReduced-two*twoReduced)/denominator;
17371 wCovTwoTwoReduced = covTwoTwoReduced*prefactor;
17372 fDiffFlowCovariances[t][pe][0]->SetBinContent(b,wCovTwoTwoReduced);
17373 }
17374 }
17375 // <2>,<4'>:
17376 term1 = productOfWeightsForTwoFourReduced;
17377 term2 = sumOfWeightsForTwo;
17378 term3 = sumOfWeightsForFourReduced;
17379 if(term2*term3>0.)
17380 {
17381 denominator = 1.-term1/(term2*term3);
17382 prefactor = term1/(term2*term3);
1268c371 17383 if(TMath::Abs(denominator)>1.e-6)
489d5531 17384 {
17385 covTwoFourReduced = (twoFourReduced-two*fourReduced)/denominator;
17386 wCovTwoFourReduced = covTwoFourReduced*prefactor;
17387 fDiffFlowCovariances[t][pe][1]->SetBinContent(b,wCovTwoFourReduced);
17388 }
17389 }
17390 // <4>,<2'>:
17391 term1 = productOfWeightsForFourTwoReduced;
17392 term2 = sumOfWeightsForFour;
17393 term3 = sumOfWeightsForTwoReduced;
17394 if(term2*term3>0.)
17395 {
17396 denominator = 1.-term1/(term2*term3);
17397 prefactor = term1/(term2*term3);
1268c371 17398 if(TMath::Abs(denominator)>1.e-6)
489d5531 17399 {
17400 covFourTwoReduced = (fourTwoReduced-four*twoReduced)/denominator;
17401 wCovFourTwoReduced = covFourTwoReduced*prefactor;
17402 fDiffFlowCovariances[t][pe][2]->SetBinContent(b,wCovFourTwoReduced);
17403 }
17404 }
17405 // <4>,<4'>:
17406 term1 = productOfWeightsForFourFourReduced;
17407 term2 = sumOfWeightsForFour;
17408 term3 = sumOfWeightsForFourReduced;
17409 if(term2*term3>0.)
17410 {
17411 denominator = 1.-term1/(term2*term3);
17412 prefactor = term1/(term2*term3);
1268c371 17413 if(TMath::Abs(denominator)>1.e-6)
489d5531 17414 {
17415 covFourFourReduced = (fourFourReduced-four*fourReduced)/denominator;
17416 wCovFourFourReduced = covFourFourReduced*prefactor;
17417 fDiffFlowCovariances[t][pe][3]->SetBinContent(b,wCovFourFourReduced);
17418 }
17419 }
17420 // <2'>,<4'>:
17421 term1 = productOfWeightsForTwoReducedFourReduced;
17422 term2 = sumOfWeightsForTwoReduced;
17423 term3 = sumOfWeightsForFourReduced;
17424 if(term2*term3>0.)
17425 {
17426 denominator = 1.-term1/(term2*term3);
17427 prefactor = term1/(term2*term3);
1268c371 17428 if(TMath::Abs(denominator)>1.e-6)
489d5531 17429 {
17430 covTwoReducedFourReduced = (twoReducedFourReduced-twoReduced*fourReduced)/denominator;
17431 wCovTwoReducedFourReduced = covTwoReducedFourReduced*prefactor;
17432 fDiffFlowCovariances[t][pe][4]->SetBinContent(b,wCovTwoReducedFourReduced);
17433 }
17434 }
17435 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17436
17437} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCovariances(TString type, TString ptOrEta)
17438
e1d101a6 17439//=======================================================================================================================
489d5531 17440
489d5531 17441void AliFlowAnalysisWithQCumulants::CalculateDiffFlow(TString type, TString ptOrEta)
17442{
1268c371 17443 // Calculate final results for differential flow.
489d5531 17444
1268c371 17445 // REMARK: Differential flow calculated in this method is NOT corrected for non-uniform acceptance.
17446 // This correction, if enabled via setter SetApplyCorrectionForNUA(Bool_t), is applied in the method
17447 // CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta)
17448
17449 Int_t t = 0; // RP or POI
17450 Int_t pe = 0; // pt or eta
489d5531 17451
17452 if(type == "RP")
17453 {
1268c371 17454 t = 0;
489d5531 17455 } else if(type == "POI")
17456 {
1268c371 17457 t = 1;
489d5531 17458 }
17459
17460 if(ptOrEta == "Pt")
17461 {
1268c371 17462 pe = 0;
489d5531 17463 } else if(ptOrEta == "Eta")
17464 {
1268c371 17465 pe = 1;
489d5531 17466 }
1268c371 17467
17468 // Common:
489d5531 17469 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
1268c371 17470 // Correlations:
489d5531 17471 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
1268c371 17472 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
17473 // Statistical errors of correlations:
489d5531 17474 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1);
17475 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2);
1268c371 17476 // Reduced correlations:
489d5531 17477 Double_t twoReduced = 0.; // <<2'>>
17478 Double_t fourReduced = 0.; // <<4'>>
1268c371 17479 // Statistical errors of reduced correlations:
489d5531 17480 Double_t twoReducedError = 0.;
17481 Double_t fourReducedError = 0.;
1268c371 17482 // Covariances:
8e1cefdd 17483 Double_t wCovTwoFour = 0.; // Cov(<2>,<4>) * prefactor(<2>,<4>)
17484 if(!fForgetAboutCovariances)
17485 {
17486 wCovTwoFour = fIntFlowCovariances->GetBinContent(1); // Cov(<2>,<4>) * prefactor(<2>,<4>)
17487 }
489d5531 17488 Double_t wCovTwoTwoReduced = 0.; // Cov(<2>,<2'>) * prefactor(<2>,<2'>)
17489 Double_t wCovTwoFourReduced = 0.; // Cov(<2>,<4'>) * prefactor(<2>,<4'>)
17490 Double_t wCovFourTwoReduced = 0.; // Cov(<4>,<2'>) * prefactor(<4>,<2'>)
17491 Double_t wCovFourFourReduced = 0.; // Cov(<4>,<4'>) * prefactor(<4>,<4'>)
17492 Double_t wCovTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>) * prefactor(<2'>,<4'>)
1268c371 17493 // Differential flow:
489d5531 17494 Double_t v2Prime = 0.; // v'{2}
17495 Double_t v4Prime = 0.; // v'{4}
1268c371 17496 // Statistical error of differential flow:
489d5531 17497 Double_t v2PrimeError = 0.;
17498 Double_t v4PrimeError = 0.;
1268c371 17499 // Squared statistical error of differential flow:
489d5531 17500 Double_t v2PrimeErrorSquared = 0.;
17501 Double_t v4PrimeErrorSquared = 0.;
1268c371 17502 // Loop over pt or eta bins:
489d5531 17503 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17504 {
1268c371 17505 // Reduced correlations and statistical errors:
489d5531 17506 twoReduced = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b);
17507 twoReducedError = fDiffFlowCorrelationsHist[t][pe][0]->GetBinError(b);
17508 fourReduced = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b);
17509 fourReducedError = fDiffFlowCorrelationsHist[t][pe][1]->GetBinError(b);
1268c371 17510 // Covariances:
8e1cefdd 17511 if(!fForgetAboutCovariances)
17512 {
17513 wCovTwoTwoReduced = fDiffFlowCovariances[t][pe][0]->GetBinContent(b);
17514 wCovTwoFourReduced = fDiffFlowCovariances[t][pe][1]->GetBinContent(b);
17515 wCovFourTwoReduced = fDiffFlowCovariances[t][pe][2]->GetBinContent(b);
17516 wCovFourFourReduced = fDiffFlowCovariances[t][pe][3]->GetBinContent(b);
17517 wCovTwoReducedFourReduced = fDiffFlowCovariances[t][pe][4]->GetBinContent(b);
17518 }
1268c371 17519 // Differential flow:
489d5531 17520 // v'{2}:
17521 if(two>0.)
17522 {
17523 v2Prime = twoReduced/pow(two,0.5);
1268c371 17524 v2PrimeErrorSquared = (1./4.)*pow(two,-3.)*(pow(twoReduced,2.)*pow(twoError,2.)
17525 + 4.*pow(two,2.)*pow(twoReducedError,2.)
17526 - 4.*two*twoReduced*wCovTwoTwoReduced);
17527 if(v2PrimeErrorSquared>0.){v2PrimeError = pow(v2PrimeErrorSquared,0.5);}
17528 if(TMath::Abs(v2Prime)>0.)
17529 {
17530 fDiffFlow[t][pe][0]->SetBinContent(b,v2Prime);
17531 fDiffFlow[t][pe][0]->SetBinError(b,v2PrimeError);
17532 }
17533 } // end of if(two>0.)
489d5531 17534 // differential flow:
17535 // v'{4}
17536 if(2.*pow(two,2.)-four > 0.)
17537 {
17538 v4Prime = (2.*two*twoReduced-fourReduced)/pow(2.*pow(two,2.)-four,3./4.);
1268c371 17539 v4PrimeErrorSquared = pow(2.*pow(two,2.)-four,-7./2.)
17540 * (pow(2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced,2.)*pow(twoError,2.)
17541 + (9./16.)*pow(2.*two*twoReduced-fourReduced,2.)*pow(fourError,2.)
17542 + 4.*pow(two,2.)*pow(2.*pow(two,2.)-four,2.)*pow(twoReducedError,2.)
17543 + pow(2.*pow(two,2.)-four,2.)*pow(fourReducedError,2.)
17544 - (3./2.)*(2.*two*twoReduced-fourReduced)
17545 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoFour
17546 - 4.*two*(2.*pow(two,2.)-four)
17547 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoTwoReduced
17548 + 2.*(2.*pow(two,2.)-four)
17549 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoFourReduced
17550 + 3.*two*(2.*pow(two,2.)-four)*(2.*two*twoReduced-fourReduced)*wCovFourTwoReduced
17551 - (3./2.)*(2.*pow(two,2.)-four)*(2.*two*twoReduced-fourReduced)*wCovFourFourReduced
17552 - 4.*two*pow(2.*pow(two,2.)-four,2.)*wCovTwoReducedFourReduced);
17553 if(v4PrimeErrorSquared>0.){v4PrimeError = pow(v4PrimeErrorSquared,0.5);}
17554 if(TMath::Abs(v4Prime)>0.)
17555 {
17556 fDiffFlow[t][pe][1]->SetBinContent(b,v4Prime);
17557 fDiffFlow[t][pe][1]->SetBinError(b,v4PrimeError);
17558 }
17559 } // end of if(2.*pow(two,2.)-four > 0.)
489d5531 17560 } // end of for(Int_t b=1;b<=fnBinsPtEta[pe];b++)
1268c371 17561
17562} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlow(TString type, Bool_t useParticleWeights)
17563
e1d101a6 17564//=======================================================================================================================
1268c371 17565
17566void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlow(TString type)
17567{
17568 // Calculate final results for 2D diferential flow.
17569
17570 // to be improved - check pointers used in this method
17571
17572 Int_t t = 0; // RP or POI
17573
17574 if(type == "RP")
17575 {
17576 t = 0;
17577 } else if(type == "POI")
17578 {
17579 t = 1;
17580 }
489d5531 17581
1268c371 17582 // Differential flow:
17583 Double_t v2Prime = 0.; // v'{2}
17584 Double_t v4Prime = 0.; // v'{4}
17585 // Differential cumulants:
17586 Double_t qc2Prime = 0.; // QC{2'}
17587 Double_t qc4Prime = 0.; // QC{4'}
17588 // Looping over all (pt,eta) bins and calculating differential flow:
17589 for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 17590 {
1268c371 17591 for(Int_t e=1;e<=fnBinsEta;e++)
489d5531 17592 {
1268c371 17593 // QC{2'}:
17594 qc2Prime = f2DDiffFlowCumulants[t][0]->GetBinContent(f2DDiffFlowCumulants[t][0]->GetBin(p,e));
17595 if(qc2Prime>=0.)
17596 {
17597 v2Prime = pow(qc2Prime,0.5);
17598 f2DDiffFlow[t][0]->SetBinContent(f2DDiffFlow[t][0]->GetBin(p,e),v2Prime);
17599 }
17600 // QC{4'}:
17601 qc4Prime = f2DDiffFlowCumulants[t][1]->GetBinContent(f2DDiffFlowCumulants[t][1]->GetBin(p,e));
17602 if(qc4Prime<=0.)
17603 {
17604 v4Prime = pow(-1.*qc4Prime,1./4.);
17605 f2DDiffFlow[t][1]->SetBinContent(f2DDiffFlow[t][1]->GetBin(p,e),v4Prime);
17606 }
17607 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
17608 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
17609
17610} // end of void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlow(TString type)
489d5531 17611
e1d101a6 17612//=======================================================================================================================
489d5531 17613
489d5531 17614void AliFlowAnalysisWithQCumulants::StoreIntFlowFlags()
17615{
17616 // a) Store all flags for integrated flow in profile fIntFlowFlags.
17617
17618 if(!fIntFlowFlags)
17619 {
17620 cout<<"WARNING: fIntFlowFlags is NULL in AFAWQC::SFFIF() !!!!"<<endl;
17621 exit(0);
17622 }
17623
17624 // particle weights used or not:
403e3389 17625 fIntFlowFlags->Fill(0.5,(Int_t)fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights);
489d5531 17626 // which event weights were used:
df23c5ae 17627 if(fMultiplicityWeight->Contains("combinations"))
489d5531 17628 {
17629 fIntFlowFlags->Fill(1.5,0); // 0 = "combinations" (default)
df23c5ae 17630 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 17631 {
17632 fIntFlowFlags->Fill(1.5,1); // 1 = "unit"
df23c5ae 17633 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 17634 {
17635 fIntFlowFlags->Fill(1.5,2); // 2 = "multiplicity"
17636 }
489d5531 17637 fIntFlowFlags->Fill(2.5,(Int_t)fApplyCorrectionForNUA);
17638 fIntFlowFlags->Fill(3.5,(Int_t)fPrintFinalResults[0]);
17639 fIntFlowFlags->Fill(4.5,(Int_t)fPrintFinalResults[1]);
17640 fIntFlowFlags->Fill(5.5,(Int_t)fPrintFinalResults[2]);
b3dacf6b 17641 fIntFlowFlags->Fill(6.5,(Int_t)fPrintFinalResults[3]);
17642 fIntFlowFlags->Fill(7.5,(Int_t)fApplyCorrectionForNUAVsM);
b77b6434 17643 fIntFlowFlags->Fill(8.5,(Int_t)fPropagateErrorAlsoFromNIT);
b3dacf6b 17644 fIntFlowFlags->Fill(9.5,(Int_t)fCalculateCumulantsVsM);
0dd3b008 17645 fIntFlowFlags->Fill(10.5,(Int_t)fMinimumBiasReferenceFlow);
8e1cefdd 17646 fIntFlowFlags->Fill(11.5,(Int_t)fForgetAboutCovariances);
e5834fcb 17647 fIntFlowFlags->Fill(12.5,(Int_t)fStorePhiDistributionForOneEvent);
dd442cd2 17648 fIntFlowFlags->Fill(13.5,(Int_t)fFillMultipleControlHistograms);
3435cacb 17649 fIntFlowFlags->Fill(14.5,(Int_t)fCalculateAllCorrelationsVsM);
df23c5ae 17650 // which multiplicity was used:
17651 if(fMultiplicityIs==AliFlowCommonConstants::kRP) // # of Reference Particles
17652 {
17653 fIntFlowFlags->Fill(15.5,0); // 0 = # of Reference Particles
17654 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
17655 {
17656 fIntFlowFlags->Fill(15.5,1); // 1 = ref. mult. from ESD
17657 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
17658 {
17659 fIntFlowFlags->Fill(15.5,2); // 2 = # of Particles of Interest
17660 }
d9e6d8bb 17661 fIntFlowFlags->Fill(16.5,(Int_t)fExactNoRPs);
1db7eced 17662 fIntFlowFlags->Fill(17.5,(Int_t)fUse2DHistograms);
17663 fIntFlowFlags->Fill(18.5,(Int_t)fFillProfilesVsMUsingWeights);
17664 fIntFlowFlags->Fill(19.5,(Int_t)fUseQvectorTerms);
df23c5ae 17665
489d5531 17666} // end of void AliFlowAnalysisWithQCumulants::StoreIntFlowFlags()
17667
e1d101a6 17668//=======================================================================================================================
489d5531 17669
489d5531 17670void AliFlowAnalysisWithQCumulants::StoreDiffFlowFlags()
17671{
17672 // Store all flags for differential flow in the profile fDiffFlowFlags.
17673
17674 if(!fDiffFlowFlags)
17675 {
1268c371 17676 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::SDFF() !!!!\n\n");
489d5531 17677 exit(0);
17678 }
17679
1268c371 17680 fDiffFlowFlags->Fill(0.5,fCalculateDiffFlow); // calculate differential flow
403e3389 17681 fDiffFlowFlags->Fill(1.5,fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights); // particle weights used or not?
1268c371 17682 //fDiffFlowFlags->Fill(2.5,""); // which event weight was used? ("combinations", "unit" or "multiplicity") to be improved - finalized
17683 fDiffFlowFlags->Fill(3.5,fApplyCorrectionForNUA); // corrected for non-uniform acceptance or not
17684 fDiffFlowFlags->Fill(4.5,fCalculate2DDiffFlow); // calculate also 2D differential flow vs (pt,eta)
62e36168 17685 fDiffFlowFlags->Fill(5.5,fCalculateDiffFlowVsEta); // if you set kFALSE only differential flow vs pt is calculated
1268c371 17686
489d5531 17687} // end of void AliFlowAnalysisWithQCumulants::StoreDiffFlowFlags()
17688
e1d101a6 17689//=======================================================================================================================
17690
17691void AliFlowAnalysisWithQCumulants::StoreMixedHarmonicsFlags()
17692{
17693 // Store all flags for mixed harmonics in profile fMixedHarmonicsFlags.
17694
17695 if(!fMixedHarmonicsFlags)
17696 {
17697 cout<<"WARNING: fMixedHarmonicsFlags is NULL in AFAWQC::SMHF() !!!!"<<endl;
17698 exit(0);
17699 }
17700
17701 fMixedHarmonicsFlags->Fill(0.5,(Int_t)fCalculateMixedHarmonics);
17702 fMixedHarmonicsFlags->Fill(1.5,(Int_t)fHarmonic);
17703 fMixedHarmonicsFlags->Fill(2.5,(Int_t)fCalculateMixedHarmonicsVsM);
17704 // Which multiplicity weight was used?:
17705
df23c5ae 17706 if(fMultiplicityWeight->Contains("combinations"))
e1d101a6 17707 {
17708 fMixedHarmonicsFlags->Fill(3.5,0); // 0 = "combinations" (default)
df23c5ae 17709 } else if(fMultiplicityWeight->Contains("unit"))
e1d101a6 17710 {
17711 fMixedHarmonicsFlags->Fill(3.5,1); // 1 = "unit"
df23c5ae 17712 } else if(fMultiplicityWeight->Contains("multiplicity"))
e1d101a6 17713 {
17714 fMixedHarmonicsFlags->Fill(3.5,2); // 2 = "multiplicity"
17715 }
17716
17717} // end of void AliFlowAnalysisWithQCumulants::StoreMixedHarmonicsFlags()
17718
17719//=======================================================================================================================
489d5531 17720
1db7eced 17721void AliFlowAnalysisWithQCumulants::StoreControlHistogramsFlags()
17722{
17723 // Store all flags for control histograms in profile fControlHistogramsFlags.
17724
17725 if(!fControlHistogramsFlags)
17726 {
17727 cout<<"WARNING: fControlHistogramsFlags is NULL in AFAWQC::SCHF() !!!!"<<endl;
17728 exit(0);
17729 }
17730
17731 fControlHistogramsFlags->Fill(0.5,(Int_t)fStoreControlHistograms);
17732 fControlHistogramsFlags->Fill(1.5,(Int_t)fUseQvectorTerms);
17733
17734} // end of void AliFlowAnalysisWithQCumulants::StoreControlHistogramsFlags()
17735
17736//=======================================================================================================================
17737
489d5531 17738void AliFlowAnalysisWithQCumulants::GetPointersForCommonHistograms()
17739{
17740 // Access all pointers to common control and common result histograms and profiles.
17741
1268c371 17742 TString sCommonConstantsName = "fCommonConstants";
17743 sCommonConstantsName += fAnalysisLabel->Data();
17744 fCommonConstants = dynamic_cast<TProfile*>(fHistList->FindObject(sCommonConstantsName.Data()));
17745 if(!fCommonConstants)
17746 {
17747 printf("\n WARNING (QC): fCommonConstants is NULL in AFAWQC::GPFCH() !!!!\n\n");
17748 exit(0);
17749 }
17750
17751 // to be improved - lines bellow can be implemented better.
17752
489d5531 17753 TString commonHistsName = "AliFlowCommonHistQC";
17754 commonHistsName += fAnalysisLabel->Data();
17755 AliFlowCommonHist *commonHist = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHistsName.Data()));
b77b6434 17756 if(commonHist)
17757 {
17758 this->SetCommonHists(commonHist);
17759 if(fCommonHists->GetHarmonic())
17760 {
17761 fHarmonic = (Int_t)(fCommonHists->GetHarmonic())->GetBinContent(1);
17762 }
17763 } // end of if(commonHist)
489d5531 17764 TString commonHists2ndOrderName = "AliFlowCommonHist2ndOrderQC";
17765 commonHists2ndOrderName += fAnalysisLabel->Data();
17766 AliFlowCommonHist *commonHist2nd = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists2ndOrderName.Data()));
17767 if(commonHist2nd) this->SetCommonHists2nd(commonHist2nd);
17768 TString commonHists4thOrderName = "AliFlowCommonHist4thOrderQC";
17769 commonHists4thOrderName += fAnalysisLabel->Data();
17770 AliFlowCommonHist *commonHist4th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists4thOrderName.Data()));
17771 if(commonHist4th) this->SetCommonHists4th(commonHist4th);
17772 TString commonHists6thOrderName = "AliFlowCommonHist6thOrderQC";
17773 commonHists6thOrderName += fAnalysisLabel->Data();
17774 AliFlowCommonHist *commonHist6th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists6thOrderName.Data()));
17775 if(commonHist6th) this->SetCommonHists6th(commonHist6th);
17776 TString commonHists8thOrderName = "AliFlowCommonHist8thOrderQC";
17777 commonHists8thOrderName += fAnalysisLabel->Data();
17778 AliFlowCommonHist *commonHist8th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists8thOrderName.Data()));
dd442cd2 17779 if(commonHist8th) this->SetCommonHists8th(commonHist8th);
17780
489d5531 17781 TString commonHistResults2ndOrderName = "AliFlowCommonHistResults2ndOrderQC";
17782 commonHistResults2ndOrderName += fAnalysisLabel->Data();
b77b6434 17783 AliFlowCommonHistResults *commonHistRes2nd = dynamic_cast<AliFlowCommonHistResults*>
17784 (fHistList->FindObject(commonHistResults2ndOrderName.Data()));
489d5531 17785 if(commonHistRes2nd) this->SetCommonHistsResults2nd(commonHistRes2nd);
17786 TString commonHistResults4thOrderName = "AliFlowCommonHistResults4thOrderQC";
17787 commonHistResults4thOrderName += fAnalysisLabel->Data();
17788 AliFlowCommonHistResults *commonHistRes4th = dynamic_cast<AliFlowCommonHistResults*>
17789 (fHistList->FindObject(commonHistResults4thOrderName.Data()));
17790 if(commonHistRes4th) this->SetCommonHistsResults4th(commonHistRes4th);
17791 TString commonHistResults6thOrderName = "AliFlowCommonHistResults6thOrderQC";
17792 commonHistResults6thOrderName += fAnalysisLabel->Data();
17793 AliFlowCommonHistResults *commonHistRes6th = dynamic_cast<AliFlowCommonHistResults*>
17794 (fHistList->FindObject(commonHistResults6thOrderName.Data()));
17795 if(commonHistRes6th) this->SetCommonHistsResults6th(commonHistRes6th);
17796 TString commonHistResults8thOrderName = "AliFlowCommonHistResults8thOrderQC";
17797 commonHistResults8thOrderName += fAnalysisLabel->Data();
17798 AliFlowCommonHistResults *commonHistRes8th = dynamic_cast<AliFlowCommonHistResults*>
17799 (fHistList->FindObject(commonHistResults8thOrderName.Data()));
17800 if(commonHistRes8th) this->SetCommonHistsResults8th(commonHistRes8th);
17801
17802} // end of void AliFlowAnalysisWithQCumulants::GetPointersForCommonHistograms()
17803
e1d101a6 17804//=======================================================================================================================
489d5531 17805
489d5531 17806void AliFlowAnalysisWithQCumulants::GetPointersForParticleWeightsHistograms()
17807{
17808 // Get pointers for histograms with particle weights.
17809
17810 TList *weightsList = dynamic_cast<TList*>(fHistList->FindObject("Weights"));
ca5f47e7 17811 if(!weightsList){printf("\n WARNING (QC): weightsList is NULL in AFAWQC::GPFPWH() !!!!\n");exit(0);}
17812 this->SetWeightsList(weightsList);
489d5531 17813 TString fUseParticleWeightsName = "fUseParticleWeightsQC"; // to be improved (hirdwired label QC)
17814 fUseParticleWeightsName += fAnalysisLabel->Data();
17815 TProfile *useParticleWeights = dynamic_cast<TProfile*>(weightsList->FindObject(fUseParticleWeightsName.Data()));
17816 if(useParticleWeights)
17817 {
17818 this->SetUseParticleWeights(useParticleWeights);
17819 fUsePhiWeights = (Int_t)fUseParticleWeights->GetBinContent(1);
17820 fUsePtWeights = (Int_t)fUseParticleWeights->GetBinContent(2);
17821 fUseEtaWeights = (Int_t)fUseParticleWeights->GetBinContent(3);
403e3389 17822 fUseTrackWeights = (Int_t)fUseParticleWeights->GetBinContent(4);
489d5531 17823 }
17824} // end of void AliFlowAnalysisWithQCumulants::GetPointersForParticleWeightsHistograms();
17825
e1d101a6 17826//=======================================================================================================================
489d5531 17827
489d5531 17828void AliFlowAnalysisWithQCumulants::GetPointersForIntFlowHistograms()
17829{
17830 // Get pointers for histograms and profiles relevant for integrated flow:
17831 // a) Get pointer to base list for integrated flow holding profile fIntFlowFlags and lists fIntFlowProfiles and fIntFlowResults.
17832 // b) Get pointer to profile fIntFlowFlags holding all flags for integrated flow.
17833 // c) Get pointer to list fIntFlowProfiles and pointers to all objects that she holds.
17834 // d) Get pointer to list fIntFlowResults and pointers to all objects that she holds.
17835
17836 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data member?)
17837 TString powerFlag[2] = {"linear","quadratic"}; // to be improved (should I promote this to data member?)
b40a910e 17838 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?)
17839 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?)
489d5531 17840
17841 // a) Get pointer to base list for integrated flow holding profile fIntFlowFlags and lists fIntFlowProfiles and fIntFlowResults:
17842 TList *intFlowList = NULL;
17843 intFlowList = dynamic_cast<TList*>(fHistList->FindObject("Integrated Flow"));
17844 if(!intFlowList)
17845 {
17846 cout<<"WARNING: intFlowList is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17847 exit(0);
17848 }
17849
b92ea2b9 17850 // b) Get pointer to profile fIntFlowFlags holding all flags for integrated flow:
17851 TString intFlowFlagsName = "fIntFlowFlags";
17852 intFlowFlagsName += fAnalysisLabel->Data();
17853 TProfile *intFlowFlags = dynamic_cast<TProfile*>(intFlowList->FindObject(intFlowFlagsName.Data()));
17854 if(intFlowFlags)
17855 {
17856 this->SetIntFlowFlags(intFlowFlags);
17857 fApplyCorrectionForNUA = (Bool_t)intFlowFlags->GetBinContent(3);
17858 fApplyCorrectionForNUAVsM = (Bool_t)intFlowFlags->GetBinContent(8);
17859 fCalculateCumulantsVsM = (Bool_t)intFlowFlags->GetBinContent(10);
17860 } else
17861 {
17862 cout<<"WARNING: intFlowFlags is NULL in FAWQC::GPFIFH() !!!!"<<endl;
17863 }
489d5531 17864
17865 // c) Get pointer to list fIntFlowProfiles and pointers to all objects that she holds:
17866 TList *intFlowProfiles = NULL;
17867 intFlowProfiles = dynamic_cast<TList*>(intFlowList->FindObject("Profiles"));
17868 if(intFlowProfiles)
17869 {
17870 // average multiplicities:
17871 TString avMultiplicityName = "fAvMultiplicity";
17872 avMultiplicityName += fAnalysisLabel->Data();
17873 TProfile *avMultiplicity = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(avMultiplicityName.Data()));
17874 if(avMultiplicity)
17875 {
17876 this->SetAvMultiplicity(avMultiplicity);
17877 } else
17878 {
17879 cout<<"WARNING: avMultiplicity is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17880 }
17881 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with wrong errors!):
17882 TString intFlowCorrelationsProName = "fIntFlowCorrelationsPro";
17883 intFlowCorrelationsProName += fAnalysisLabel->Data();
17884 TProfile *intFlowCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowCorrelationsProName.Data()));
17885 if(intFlowCorrelationsPro)
17886 {
17887 this->SetIntFlowCorrelationsPro(intFlowCorrelationsPro);
17888 } else
17889 {
17890 cout<<"WARNING: intFlowCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17891 }
b40a910e 17892 // average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8^2>>:
17893 TString intFlowSquaredCorrelationsProName = "fIntFlowSquaredCorrelationsPro";
17894 intFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
17895 TProfile *intFlowSquaredCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowSquaredCorrelationsProName.Data()));
17896 if(intFlowSquaredCorrelationsPro)
17897 {
17898 this->SetIntFlowSquaredCorrelationsPro(intFlowSquaredCorrelationsPro);
17899 } else
17900 {
17901 cout<<"WARNING: intFlowSquaredCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17902 }
b3dacf6b 17903 if(fCalculateCumulantsVsM)
ff70ca91 17904 {
b40a910e 17905 // Average correlations <<2>>, <<4>>, <<6>> and <<8>> versus multiplicity for all events (error is wrong here):
b3dacf6b 17906 TString intFlowCorrelationsVsMProName = "fIntFlowCorrelationsVsMPro";
17907 intFlowCorrelationsVsMProName += fAnalysisLabel->Data();
17908 for(Int_t ci=0;ci<4;ci++) // correlation index
ff70ca91 17909 {
b3dacf6b 17910 TProfile *intFlowCorrelationsVsMPro = dynamic_cast<TProfile*>
17911 (intFlowProfiles->FindObject(Form("%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data())));
17912 if(intFlowCorrelationsVsMPro)
17913 {
17914 this->SetIntFlowCorrelationsVsMPro(intFlowCorrelationsVsMPro,ci);
17915 } else
17916 {
17917 cout<<"WARNING: "<<Form("intFlowCorrelationsVsMPro[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17918 }
17919 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b40a910e 17920 // Average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> versus multiplicity for all events:
17921 TString intFlowSquaredCorrelationsVsMProName = "fIntFlowSquaredCorrelationsVsMPro";
17922 intFlowSquaredCorrelationsVsMProName += fAnalysisLabel->Data();
17923 for(Int_t ci=0;ci<4;ci++) // correlation index
17924 {
17925 TProfile *intFlowSquaredCorrelationsVsMPro = dynamic_cast<TProfile*>
17926 (intFlowProfiles->FindObject(Form("%s, %s",intFlowSquaredCorrelationsVsMProName.Data(),squaredCorrelationFlag[ci].Data())));
17927 if(intFlowSquaredCorrelationsVsMPro)
17928 {
17929 this->SetIntFlowSquaredCorrelationsVsMPro(intFlowSquaredCorrelationsVsMPro,ci);
17930 } else
17931 {
17932 cout<<"WARNING: "<<Form("intFlowSquaredCorrelationsVsMPro[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17933 }
17934 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b3dacf6b 17935 } // end of if(fCalculateCumulantsVsM)
489d5531 17936 // average all correlations for integrated flow (with wrong errors!):
17937 TString intFlowCorrelationsAllProName = "fIntFlowCorrelationsAllPro";
17938 intFlowCorrelationsAllProName += fAnalysisLabel->Data();
17939 TProfile *intFlowCorrelationsAllPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowCorrelationsAllProName.Data()));
17940 if(intFlowCorrelationsAllPro)
17941 {
17942 this->SetIntFlowCorrelationsAllPro(intFlowCorrelationsAllPro);
17943 } else
17944 {
17945 cout<<"WARNING: intFlowCorrelationsAllPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17946 }
17947 // average extra correlations for integrated flow (which appear only when particle weights are used):
17948 // (to be improved: Weak point in implementation, I am assuming here that method GetPointersForParticleWeightsHistograms() was called)
403e3389 17949 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 17950 {
17951 TString intFlowExtraCorrelationsProName = "fIntFlowExtraCorrelationsPro";
17952 intFlowExtraCorrelationsProName += fAnalysisLabel->Data();
17953 TProfile *intFlowExtraCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowExtraCorrelationsProName.Data()));
17954 if(intFlowExtraCorrelationsPro)
17955 {
17956 this->SetIntFlowExtraCorrelationsPro(intFlowExtraCorrelationsPro);
17957 } else
17958 {
17959 cout<<"WARNING: intFlowExtraCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17960 }
403e3389 17961 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 17962 // average products of correlations <2>, <4>, <6> and <8>:
17963 TString intFlowProductOfCorrelationsProName = "fIntFlowProductOfCorrelationsPro";
17964 intFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
17965 TProfile *intFlowProductOfCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowProductOfCorrelationsProName.Data()));
17966 if(intFlowProductOfCorrelationsPro)
17967 {
17968 this->SetIntFlowProductOfCorrelationsPro(intFlowProductOfCorrelationsPro);
17969 } else
17970 {
17971 cout<<"WARNING: intFlowProductOfCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17972 }
17973 // average product of correlations <2>, <4>, <6> and <8> versus multiplicity
17974 // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 17975 if(fCalculateCumulantsVsM)
17976 {
17977 TString intFlowProductOfCorrelationsVsMProName = "fIntFlowProductOfCorrelationsVsMPro";
17978 intFlowProductOfCorrelationsVsMProName += fAnalysisLabel->Data();
403e3389 17979 TString productFlag[6] = {"#LT#LT2#GT#LT4#GT#GT","#LT#LT2#GT#LT6#GT#GT","#LT#LT2#GT#LT8#GT#GT",
17980 "#LT#LT4#GT#LT6#GT#GT","#LT#LT4#GT#LT8#GT#GT","#LT#LT6#GT#LT8#GT#GT"};
b3dacf6b 17981 for(Int_t pi=0;pi<6;pi++)
17982 {
17983 TProfile *intFlowProductOfCorrelationsVsMPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(Form("%s, %s",intFlowProductOfCorrelationsVsMProName.Data(),productFlag[pi].Data())));
17984 if(intFlowProductOfCorrelationsVsMPro)
17985 {
17986 this->SetIntFlowProductOfCorrelationsVsMPro(intFlowProductOfCorrelationsVsMPro,pi);
17987 } else
17988 {
17989 cout<<"WARNING: "<<Form("intFlowProductOfCorrelationsVsMPro[%d]",pi)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17990 }
17991 } // end of for(Int_t pi=0;pi<6;pi++)
17992 } // end of if(fCalculateCumulantsVsM)
489d5531 17993 // average correction terms for non-uniform acceptance (with wrong errors!):
17994 for(Int_t sc=0;sc<2;sc++)
17995 {
17996 TString intFlowCorrectionTermsForNUAProName = "fIntFlowCorrectionTermsForNUAPro";
17997 intFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
17998 TProfile *intFlowCorrectionTermsForNUAPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject((Form("%s: %s terms",intFlowCorrectionTermsForNUAProName.Data(),sinCosFlag[sc].Data()))));
17999 if(intFlowCorrectionTermsForNUAPro)
18000 {
18001 this->SetIntFlowCorrectionTermsForNUAPro(intFlowCorrectionTermsForNUAPro,sc);
18002 } else
18003 {
18004 cout<<"WARNING: intFlowCorrectionTermsForNUAPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18005 cout<<"sc = "<<sc<<endl;
18006 }
2001bc3a 18007 // versus multiplicity:
b3dacf6b 18008 if(fCalculateCumulantsVsM)
2001bc3a 18009 {
b3dacf6b 18010 TString correctionTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
18011 TString intFlowCorrectionTermsForNUAVsMProName = "fIntFlowCorrectionTermsForNUAVsMPro";
18012 intFlowCorrectionTermsForNUAVsMProName += fAnalysisLabel->Data();
18013 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2001bc3a 18014 {
b3dacf6b 18015 TProfile *intFlowCorrectionTermsForNUAVsMPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(Form("%s: #LT#LT%s%s#GT#GT",intFlowCorrectionTermsForNUAVsMProName.Data(),sinCosFlag[sc].Data(),correctionTermFlag[ci].Data())));
18016 if(intFlowCorrectionTermsForNUAVsMPro)
18017 {
18018 this->SetIntFlowCorrectionTermsForNUAVsMPro(intFlowCorrectionTermsForNUAVsMPro,sc,ci);
18019 } else
18020 {
18021 cout<<"WARNING: intFlowCorrectionTermsForNUAVsMPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18022 cout<<"sc = "<<sc<<endl;
18023 cout<<"ci = "<<ci<<endl;
18024 }
18025 } // end of for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
18026 } // end of if(fCalculateCumulantsVsM)
489d5531 18027 } // end of for(Int_t sc=0;sc<2;sc++)
0328db2d 18028 // average products of correction terms for NUA:
18029 TString intFlowProductOfCorrectionTermsForNUAProName = "fIntFlowProductOfCorrectionTermsForNUAPro";
18030 intFlowProductOfCorrectionTermsForNUAProName += fAnalysisLabel->Data();
18031 TProfile *intFlowProductOfCorrectionTermsForNUAPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowProductOfCorrectionTermsForNUAProName.Data()));
18032 if(intFlowProductOfCorrectionTermsForNUAPro)
18033 {
18034 this->SetIntFlowProductOfCorrectionTermsForNUAPro(intFlowProductOfCorrectionTermsForNUAPro);
18035 } else
18036 {
18037 cout<<"WARNING: intFlowProductOfCorrectionTermsForNUAPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18038 }
489d5531 18039 } else // to if(intFlowProfiles)
18040 {
18041 cout<<"WARNING: intFlowProfiles is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18042 }
18043
18044 // d) Get pointer to list fIntFlowResults and pointers to all objects that she holds.
18045 TList *intFlowResults = NULL;
18046 intFlowResults = dynamic_cast<TList*>(intFlowList->FindObject("Results"));
18047 if(intFlowResults)
18048 {
18049 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with correct errors!):
18050 TString intFlowCorrelationsHistName = "fIntFlowCorrelationsHist";
18051 intFlowCorrelationsHistName += fAnalysisLabel->Data();
18052 TH1D *intFlowCorrelationsHist = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCorrelationsHistName.Data()));
18053 if(intFlowCorrelationsHist)
18054 {
18055 this->SetIntFlowCorrelationsHist(intFlowCorrelationsHist);
18056 } else
18057 {
18058 cout<<"WARNING: intFlowCorrelationsHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18059 }
ff70ca91 18060 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with correct errors!) vs M:
b3dacf6b 18061 if(fCalculateCumulantsVsM)
ff70ca91 18062 {
b3dacf6b 18063 TString intFlowCorrelationsVsMHistName = "fIntFlowCorrelationsVsMHist";
18064 intFlowCorrelationsVsMHistName += fAnalysisLabel->Data();
18065 for(Int_t ci=0;ci<4;ci++) // correlation index
ff70ca91 18066 {
b3dacf6b 18067 TH1D *intFlowCorrelationsVsMHist = dynamic_cast<TH1D*>
18068 (intFlowResults->FindObject(Form("%s, %s",intFlowCorrelationsVsMHistName.Data(),correlationFlag[ci].Data())));
18069 if(intFlowCorrelationsVsMHist)
18070 {
18071 this->SetIntFlowCorrelationsVsMHist(intFlowCorrelationsVsMHist,ci);
18072 } else
18073 {
18074 cout<<"WARNING: "<<Form("intFlowCorrelationsVsMHist[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18075 }
18076 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18077 } // end of if(fCalculateCumulantsVsM)
489d5531 18078 // average all correlations for integrated flow (with correct errors!):
18079 TString intFlowCorrelationsAllHistName = "fIntFlowCorrelationsAllHist";
18080 intFlowCorrelationsAllHistName += fAnalysisLabel->Data();
18081 TH1D *intFlowCorrelationsAllHist = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCorrelationsAllHistName.Data()));
18082 if(intFlowCorrelationsAllHist)
18083 {
18084 this->SetIntFlowCorrelationsAllHist(intFlowCorrelationsAllHist);
18085 } else
18086 {
18087 cout<<"WARNING: intFlowCorrelationsAllHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18088 }
18089 // average correction terms for non-uniform acceptance (with correct errors!):
18090 TString intFlowCorrectionTermsForNUAHistName = "fIntFlowCorrectionTermsForNUAHist";
18091 intFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
18092 for(Int_t sc=0;sc<2;sc++)
18093 {
18094 TH1D *intFlowCorrectionTermsForNUAHist = dynamic_cast<TH1D*>(intFlowResults->FindObject((Form("%s: %s terms",intFlowCorrectionTermsForNUAHistName.Data(),sinCosFlag[sc].Data()))));
18095 if(intFlowCorrectionTermsForNUAHist)
18096 {
18097 this->SetIntFlowCorrectionTermsForNUAHist(intFlowCorrectionTermsForNUAHist,sc);
18098 } else
18099 {
18100 cout<<"WARNING: intFlowCorrectionTermsForNUAHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18101 cout<<"sc = "<<sc<<endl;
18102 }
18103 } // end of for(Int_t sc=0;sc<2;sc++)
18104 // covariances (multiplied with weight dependent prefactor):
18105 TString intFlowCovariancesName = "fIntFlowCovariances";
18106 intFlowCovariancesName += fAnalysisLabel->Data();
18107 TH1D *intFlowCovariances = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCovariancesName.Data()));
18108 if(intFlowCovariances)
18109 {
18110 this->SetIntFlowCovariances(intFlowCovariances);
18111 } else
18112 {
18113 cout<<"WARNING: intFlowCovariances is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18114 }
18115 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8>:
18116 TString intFlowSumOfEventWeightsName = "fIntFlowSumOfEventWeights";
18117 intFlowSumOfEventWeightsName += fAnalysisLabel->Data();
18118 for(Int_t power=0;power<2;power++)
18119 {
18120 TH1D *intFlowSumOfEventWeights = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s: %s",intFlowSumOfEventWeightsName.Data(),powerFlag[power].Data())));
18121 if(intFlowSumOfEventWeights)
18122 {
18123 this->SetIntFlowSumOfEventWeights(intFlowSumOfEventWeights,power);
18124 } else
18125 {
18126 cout<<"WARNING: intFlowSumOfEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18127 cout<<"power = "<<power<<endl;
18128 }
18129 } // end of for(Int_t power=0;power<2;power++)
18130 // sum of products of event weights for correlations <2>, <4>, <6> and <8>:
18131 TString intFlowSumOfProductOfEventWeightsName = "fIntFlowSumOfProductOfEventWeights";
18132 intFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
18133 TH1D *intFlowSumOfProductOfEventWeights = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowSumOfProductOfEventWeightsName.Data()));
18134 if(intFlowSumOfProductOfEventWeights)
18135 {
18136 this->SetIntFlowSumOfProductOfEventWeights(intFlowSumOfProductOfEventWeights);
18137 } else
18138 {
18139 cout<<"WARNING: intFlowSumOfProductOfEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18140 }
ff70ca91 18141 // final result for covariances of correlations (multiplied with weight dependent prefactor) versus M
18142 // [0=Cov(2,4),1=Cov(2,6),2=Cov(2,8),3=Cov(4,6),4=Cov(4,8),5=Cov(6,8)]:
b3dacf6b 18143 if(fCalculateCumulantsVsM)
ff70ca91 18144 {
b3dacf6b 18145 TString intFlowCovariancesVsMName = "fIntFlowCovariancesVsM";
18146 intFlowCovariancesVsMName += fAnalysisLabel->Data();
18147 TString covarianceFlag[6] = {"Cov(<2>,<4>)","Cov(<2>,<6>)","Cov(<2>,<8>)","Cov(<4>,<6>)","Cov(<4>,<8>)","Cov(<6>,<8>)"};
18148 for(Int_t ci=0;ci<6;ci++)
18149 {
18150 TH1D *intFlowCovariancesVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data())));
18151 if(intFlowCovariancesVsM)
ff70ca91 18152 {
b3dacf6b 18153 this->SetIntFlowCovariancesVsM(intFlowCovariancesVsM,ci);
ff70ca91 18154 } else
18155 {
b3dacf6b 18156 cout<<"WARNING: "<<Form("intFlowCovariancesVsM[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 18157 }
b3dacf6b 18158 } // end of for(Int_t ci=0;ci<6;ci++)
18159 } // end of if(fCalculateCumulantsVsM)
18160 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8> versus multiplicity
18161 // [0=sum{w_{<2>}},1=sum{w_{<4>}},2=sum{w_{<6>}},3=sum{w_{<8>}}][0=linear 1,1=quadratic]:
18162 if(fCalculateCumulantsVsM)
18163 {
18164 TString intFlowSumOfEventWeightsVsMName = "fIntFlowSumOfEventWeightsVsM";
18165 intFlowSumOfEventWeightsVsMName += fAnalysisLabel->Data();
18166 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>}"},
18167 {"#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}"}};
18168 for(Int_t si=0;si<4;si++)
18169 {
18170 for(Int_t power=0;power<2;power++)
18171 {
18172 TH1D *intFlowSumOfEventWeightsVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowSumOfEventWeightsVsMName.Data(),sumFlag[power][si].Data())));
18173 if(intFlowSumOfEventWeightsVsM)
18174 {
18175 this->SetIntFlowSumOfEventWeightsVsM(intFlowSumOfEventWeightsVsM,si,power);
18176 } else
18177 {
18178 cout<<"WARNING: "<<Form("intFlowSumOfEventWeightsVsM[%d][%d]",si,power)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18179 }
18180 } // end of for(Int_t power=0;power<2;power++)
18181 } // end of for(Int_t si=0;si<4;si++)
18182 } // end of if(fCalculateCumulantsVsM)
ff70ca91 18183 // sum of products of event weights for correlations <2>, <4>, <6> and <8> vs M
18184 // [0=sum{w_{<2>}w_{<4>}},1=sum{w_{<2>}w_{<6>}},2=sum{w_{<2>}w_{<8>}},
18185 // 3=sum{w_{<4>}w_{<6>}},4=sum{w_{<4>}w_{<8>}},5=sum{w_{<6>}w_{<8>}}]:
b3dacf6b 18186 if(fCalculateCumulantsVsM)
ff70ca91 18187 {
b3dacf6b 18188 TString intFlowSumOfProductOfEventWeightsVsMName = "fIntFlowSumOfProductOfEventWeightsVsM";
18189 intFlowSumOfProductOfEventWeightsVsMName += fAnalysisLabel->Data();
18190 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>}",
18191 "#sum_{i=1}^{N} w_{<4>} w_{<6>}","#sum_{i=1}^{N} w_{<4>} w_{<8>}","#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
18192 for(Int_t pi=0;pi<6;pi++)
ff70ca91 18193 {
b3dacf6b 18194 TH1D *intFlowSumOfProductOfEventWeightsVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowSumOfProductOfEventWeightsVsMName.Data(),sopowFlag[pi].Data())));
18195 if(intFlowSumOfProductOfEventWeightsVsM)
18196 {
18197 this->SetIntFlowSumOfProductOfEventWeightsVsM(intFlowSumOfProductOfEventWeightsVsM,pi);
18198 } else
18199 {
18200 cout<<"WARNING: "<<Form("intFlowSumOfProductOfEventWeightsVsM[%d]",pi)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18201 }
18202 } // end of for(Int_t pi=0;pi<6;pi++)
18203 } // end of if(fCalculateCumulantsVsM)
0328db2d 18204 // covariances for NUA (multiplied with weight dependent prefactor):
18205 TString intFlowCovariancesNUAName = "fIntFlowCovariancesNUA";
18206 intFlowCovariancesNUAName += fAnalysisLabel->Data();
18207 TH1D *intFlowCovariancesNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCovariancesNUAName.Data()));
18208 if(intFlowCovariancesNUA)
18209 {
18210 this->SetIntFlowCovariancesNUA(intFlowCovariancesNUA);
18211 } else
18212 {
18213 cout<<"WARNING: intFlowCovariancesNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18214 }
18215 // sum of linear and quadratic event weights NUA terms:
18216 TString intFlowSumOfEventWeightsNUAName = "fIntFlowSumOfEventWeightsNUA";
18217 intFlowSumOfEventWeightsNUAName += fAnalysisLabel->Data();
18218 for(Int_t sc=0;sc<2;sc++)
18219 {
18220 for(Int_t power=0;power<2;power++)
18221 {
18222 TH1D *intFlowSumOfEventWeightsNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s: %s, %s",intFlowSumOfEventWeightsNUAName.Data(),powerFlag[power].Data(),sinCosFlag[sc].Data())));
18223 if(intFlowSumOfEventWeightsNUA)
18224 {
18225 this->SetIntFlowSumOfEventWeightsNUA(intFlowSumOfEventWeightsNUA,sc,power);
18226 } else
18227 {
18228 cout<<"WARNING: intFlowSumOfEventWeightsNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18229 cout<<"sc = "<<sc<<endl;
18230 cout<<"power = "<<power<<endl;
18231 }
18232 } // end of for(Int_t power=0;power<2;power++)
18233 } // end of for(Int_t sc=0;sc<2;sc++)
18234 // sum of products of event weights for NUA terms:
18235 TString intFlowSumOfProductOfEventWeightsNUAName = "fIntFlowSumOfProductOfEventWeightsNUA";
18236 intFlowSumOfProductOfEventWeightsNUAName += fAnalysisLabel->Data();
18237 TH1D *intFlowSumOfProductOfEventWeightsNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowSumOfProductOfEventWeightsNUAName.Data()));
18238 if(intFlowSumOfProductOfEventWeightsNUA)
18239 {
18240 this->SetIntFlowSumOfProductOfEventWeightsNUA(intFlowSumOfProductOfEventWeightsNUA);
18241 } else
18242 {
18243 cout<<"WARNING: intFlowSumOfProductOfEventWeightsNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18244 }
b3dacf6b 18245 // Final results for reference Q-cumulants:
489d5531 18246 TString intFlowQcumulantsName = "fIntFlowQcumulants";
18247 intFlowQcumulantsName += fAnalysisLabel->Data();
18248 TH1D *intFlowQcumulants = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsName.Data()));
18249 if(intFlowQcumulants)
18250 {
18251 this->SetIntFlowQcumulants(intFlowQcumulants);
18252 } else
18253 {
18254 cout<<"WARNING: intFlowQcumulants is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18255 }
b3dacf6b 18256 // Final results for reference Q-cumulants rebinned in M:
18257 if(fCalculateCumulantsVsM)
18258 {
18259 TString intFlowQcumulantsRebinnedInMName = "fIntFlowQcumulantsRebinnedInM";
18260 intFlowQcumulantsRebinnedInMName += fAnalysisLabel->Data();
18261 TH1D *intFlowQcumulantsRebinnedInM = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsRebinnedInMName.Data()));
18262 if(intFlowQcumulantsRebinnedInM)
18263 {
18264 this->SetIntFlowQcumulantsRebinnedInM(intFlowQcumulantsRebinnedInM);
18265 } else
18266 {
18267 cout<<"WARNING: intFlowQcumulantsRebinnedInM is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18268 }
18269 } // end of if(fCalculateCumulantsVsM)
b92ea2b9 18270 // Ratio between error squared: with/without non-isotropic terms:
18271 TString intFlowQcumulantsErrorSquaredRatioName = "fIntFlowQcumulantsErrorSquaredRatio";
18272 intFlowQcumulantsErrorSquaredRatioName += fAnalysisLabel->Data();
18273 TH1D *intFlowQcumulantsErrorSquaredRatio = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsErrorSquaredRatioName.Data()));
18274 if(intFlowQcumulantsErrorSquaredRatio)
18275 {
18276 this->SetIntFlowQcumulantsErrorSquaredRatio(intFlowQcumulantsErrorSquaredRatio);
18277 } else
18278 {
18279 cout<<" WARNING: intntFlowQcumulantsErrorSquaredRatio is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18280 }
ff70ca91 18281 // final results for integrated Q-cumulants versus multiplicity:
ff70ca91 18282 TString cumulantFlag[4] = {"QC{2}","QC{4}","QC{6}","QC{8}"};
b3dacf6b 18283 if(fCalculateCumulantsVsM)
ff70ca91 18284 {
b3dacf6b 18285 TString intFlowQcumulantsVsMName = "fIntFlowQcumulantsVsM";
18286 intFlowQcumulantsVsMName += fAnalysisLabel->Data();
18287 for(Int_t co=0;co<4;co++) // cumulant order
ff70ca91 18288 {
b3dacf6b 18289 TH1D *intFlowQcumulantsVsM = dynamic_cast<TH1D*>
18290 (intFlowResults->FindObject(Form("%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data())));
18291 if(intFlowQcumulantsVsM)
18292 {
18293 this->SetIntFlowQcumulantsVsM(intFlowQcumulantsVsM,co);
18294 } else
18295 {
18296 cout<<"WARNING: "<<Form("intFlowQcumulantsVsM[%d]",co)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18297 }
18298 } // end of for(Int_t co=0;co<4;co++) // cumulant order
18299 } // end of if(fCalculateCumulantsVsM)
18300 // Final reference flow estimates from Q-cumulants:
489d5531 18301 TString intFlowName = "fIntFlow";
18302 intFlowName += fAnalysisLabel->Data();
18303 TH1D *intFlow = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowName.Data()));
18304 if(intFlow)
18305 {
18306 this->SetIntFlow(intFlow);
18307 } else
18308 {
18309 cout<<"WARNING: intFlow is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 18310 }
b3dacf6b 18311 // Final reference flow estimates from Q-cumulants vs M rebinned in M:
18312 if(fCalculateCumulantsVsM)
ff70ca91 18313 {
b3dacf6b 18314 TString intFlowRebinnedInMName = "fIntFlowRebinnedInM";
18315 intFlowRebinnedInMName += fAnalysisLabel->Data();
18316 TH1D *intFlowRebinnedInM = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowRebinnedInMName.Data()));
18317 if(intFlowRebinnedInM)
ff70ca91 18318 {
b3dacf6b 18319 this->SetIntFlowRebinnedInM(intFlowRebinnedInM);
18320 } else
ff70ca91 18321 {
b3dacf6b 18322 cout<<"WARNING: intFlowRebinnedInM is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18323 }
18324 } // end of if(fCalculateCumulantsVsM)
18325 // integrated flow from Q-cumulants versus multiplicity:
18326 if(fCalculateCumulantsVsM)
18327 {
18328 TString intFlowVsMName = "fIntFlowVsM";
18329 intFlowVsMName += fAnalysisLabel->Data();
b77b6434 18330 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)};
b3dacf6b 18331 for(Int_t co=0;co<4;co++) // cumulant order
18332 {
18333 TH1D *intFlowVsM = dynamic_cast<TH1D*>
b77b6434 18334 (intFlowResults->FindObject(Form("%s, %s",intFlowVsMName.Data(),flowFlag[co].Data())));
b3dacf6b 18335 if(intFlowVsM)
18336 {
18337 this->SetIntFlowVsM(intFlowVsM,co);
18338 } else
18339 {
18340 cout<<"WARNING: "<<Form("intFlowVsM[%d]",co)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18341 }
18342 } // end of for(Int_t co=0;co<4;co++) // cumulant order
18343 } // end of if(fCalculateCumulantsVsM)
2001bc3a 18344 // quantifying detector effects effects to correlations:
18345 TString intFlowDetectorBiasName = "fIntFlowDetectorBias";
18346 intFlowDetectorBiasName += fAnalysisLabel->Data();
18347 TH1D *intFlowDetectorBias = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowDetectorBiasName.Data()));
18348 if(intFlowDetectorBias)
18349 {
18350 this->SetIntFlowDetectorBias(intFlowDetectorBias);
18351 } else
18352 {
18353 cout<<"WARNING: intFlowDetectorBias is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18354 }
18355 // quantifying detector effects effects to correlations vs multiplicity:
b77b6434 18356 if(fCalculateCumulantsVsM)
2001bc3a 18357 {
3c5d5752 18358 TString intFlowDetectorBiasVsMName = "fIntFlowDetectorBiasVsM";
18359 intFlowDetectorBiasVsMName += fAnalysisLabel->Data();
18360 for(Int_t ci=0;ci<4;ci++) // correlation index
2001bc3a 18361 {
3c5d5752 18362 TH1D *intFlowDetectorBiasVsM = dynamic_cast<TH1D*>
18363 (intFlowResults->FindObject(Form("%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data())));
18364 if(intFlowDetectorBiasVsM)
18365 {
18366 this->SetIntFlowDetectorBiasVsM(intFlowDetectorBiasVsM,ci);
18367 } else
18368 {
18369 cout<<"WARNING: "<<Form("intFlowDetectorBiasVsM[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18370 }
18371 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b77b6434 18372 } // end of if(fCalculateCumulantsVsM)
489d5531 18373 } else // to if(intFlowResults)
18374 {
18375 cout<<"WARNING: intFlowResults is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18376 }
ff70ca91 18377
489d5531 18378} // end of void AliFlowAnalysisWithQCumulants::GetPointersForIntFlowHistograms()
18379
e1d101a6 18380//=======================================================================================================================
489d5531 18381
1268c371 18382void AliFlowAnalysisWithQCumulants::GetPointersFor2DDiffFlowHistograms()
18383{
18384 // Get pointers for 2D differential flow histograms.
18385 // a) Check pointers used in this method;
18386 // b) Get pointers to 2D differential flow lists;
18387 // c) Get pointers to 2D differential flow profiles;
18388 // d) Get pointers to 2D differential flow histograms.
18389
18390 // a) Check pointers used in this method:
18391 if(!fDiffFlowList)
18392 {
18393 printf("\n WARNING (QC): fDiffFlowList is NULL in AFAWQC::GPF2DDFH() !!!!\n");
18394 printf(" Call method GetPointersForDiffFlowHistograms() first.\n\n");
18395 exit(0);
18396 }
18397 if(!fDiffFlowFlags)
18398 {
18399 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::GPF2DDFH() !!!!\n\n");
18400 printf(" Call method GetPointersForDiffFlowHistograms() first.\n\n");
18401 exit(0);
18402 }
18403
18404 // b) Get pointers to 2D differential flow lists:
18405 this->SetCalculate2DDiffFlow((Bool_t)fDiffFlowFlags->GetBinContent(5)); // to be improved - hardwired 5
18406 if(!fCalculate2DDiffFlow){return;}
18407 TString typeFlag[2] = {"RP","POI"};
18408 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18409 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18410 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18411 // Base list:
18412 TString diffFlow2DListName = "2D";
18413 diffFlow2DListName += fAnalysisLabel->Data();
18414 fDiffFlow2D = dynamic_cast<TList*>(fDiffFlowList->FindObject(diffFlow2DListName.Data()));
18415 if(!fDiffFlow2D)
18416 {
18417 printf("\n WARNING (QC): fDiffFlow2D is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18418 exit(0);
18419 }
18420 // Lists holding profiles with 2D correlations:
18421 TString s2DDiffFlowCorrelationsProListName = "Profiles with 2D correlations";
18422 s2DDiffFlowCorrelationsProListName += fAnalysisLabel->Data(); // to be improved
18423 for(Int_t t=0;t<2;t++)
18424 {
18425 f2DDiffFlowCorrelationsProList[t] = dynamic_cast<TList*>(fDiffFlow2D->FindObject(Form("Profiles with 2D correlations (%s)",typeFlag[t].Data())));
18426 if(!f2DDiffFlowCorrelationsProList[t])
18427 {
18428 printf("\n WARNING (QC): f2DDiffFlowCorrelationsProList[%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t);
18429 exit(0);
18430 }
18431 } // end of for(Int_t t=0;t<2;t++)
18432
18433 // c) Get pointers to 2D differential flow profiles:
18434 TString s2DDiffFlowCorrelationsProName = "f2DDiffFlowCorrelationsPro";
18435 s2DDiffFlowCorrelationsProName += fAnalysisLabel->Data();
18436 for(Int_t t=0;t<2;t++) // type: RP or POI
18437 {
18438 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18439 {
18440 f2DDiffFlowCorrelationsPro[t][rci] = dynamic_cast<TProfile2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowCorrelationsProName.Data(),typeFlag[t].Data(),reducedCorrelationIndex[rci].Data())));
18441 if(!f2DDiffFlowCorrelationsPro[t][rci])
18442 {
18443 printf("\n WARNING (QC): f2DDiffFlowCorrelationsPro[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18444 exit(0);
18445 } else
18446 {
18447 this->Set2DDiffFlowCorrelationsPro(f2DDiffFlowCorrelationsPro[t][rci],t,rci);
18448 }
18449 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18450 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18451
18452 // d) Get pointers to 2D differential flow histograms:
18453 TString s2DDiffFlowCumulantsName = "f2DDiffFlowCumulants";
18454 s2DDiffFlowCumulantsName += fAnalysisLabel->Data();
18455 TString s2DDiffFlowName = "f2DDiffFlow";
18456 s2DDiffFlowName += fAnalysisLabel->Data();
18457 for(Int_t t=0;t<2;t++) // type: RP or POI
18458 {
18459 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18460 {
18461 // 2D differential cumulants:
18462 f2DDiffFlowCumulants[t][rci] = dynamic_cast<TH2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowCumulantsName.Data(),typeFlag[t].Data(),differentialCumulantIndex[rci].Data())));
18463 if(!f2DDiffFlowCumulants[t][rci])
18464 {
18465 printf("\n WARNING (QC): f2DDiffFlowCumulants[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18466 exit(0);
18467 } else
18468 {
18469 this->Set2DDiffFlowCumulants(f2DDiffFlowCumulants[t][rci],t,rci);
18470 }
18471 // 2D differential flow:
18472 f2DDiffFlow[t][rci] = dynamic_cast<TH2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowName.Data(),typeFlag[t].Data(),differentialFlowIndex[rci].Data())));
18473 if(!f2DDiffFlow[t][rci])
18474 {
18475 printf("\n WARNING (QC): f2DDiffFlow[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18476 exit(0);
18477 } else
18478 {
18479 this->Set2DDiffFlow(f2DDiffFlow[t][rci],t,rci);
18480 }
18481 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18482 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18483
18484} // end of void AliFlowAnalysisWithQCumulants::GetPointersFor2DDiffFlowHistograms()
18485
e1d101a6 18486//=======================================================================================================================
1268c371 18487
64e500e3 18488void AliFlowAnalysisWithQCumulants::GetPointersForOtherDiffCorrelators()
18489{
18490 // Get pointers for other differential correlators.
18491 // a) Get pointer to list with other differential correlators;
18492 // b) Declare local flags;
18493 // c) Get pointers to other differential profiles.
18494
62e36168 18495 if(!fCalculateDiffFlow){return;} // TBI: This must eventually be moved somewhere else
18496
64e500e3 18497 // a) Get pointer to list with other differential correlators:
18498 fOtherDiffCorrelatorsList = dynamic_cast<TList*>(fHistList->FindObject("Other differential correlators"));
18499 if(!fOtherDiffCorrelatorsList)
18500 {
18501 printf("\n WARNING (QC): fOtherDiffCorrelatorsList is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18502 exit(0);
18503 }
18504
18505 // b) Declare local flags: // (to be improved - promoted to data members)
18506 TString typeFlag[2] = {"RP","POI"};
18507 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18508 TString sinCosFlag[2] = {"sin","cos"};
18509
18510 // c) Get pointers to other differential profiles:
18511 TString otherDiffCorrelatorsName = "fOtherDiffCorrelators";
18512 otherDiffCorrelatorsName += fAnalysisLabel->Data();
18513 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18514 {
62e36168 18515 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 18516 {
18517 for(Int_t sc=0;sc<2;sc++) // sin or cos
18518 {
18519 for(Int_t ci=0;ci<1;ci++) // correlator index
18520 {
18521 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)));
18522 if(!fOtherDiffCorrelators[t][pe][sc][ci])
18523 {
18524 printf("\n WARNING (QC): fOtherDiffCorrelators[%i][%i][%i][%i] is NULL in AFAWQC::GPFODC() !!!!\n\n",t,pe,sc,ci);
18525 exit(0);
18526 } else
18527 {
18528 this->SetOtherDiffCorrelators(fOtherDiffCorrelators[t][pe][sc][ci],t,pe,sc,ci);
18529 }
18530 } // end of for(Int_t ci=0;ci<1;ci++) // correlator index
18531 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18532 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18533 } // end of for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18534
18535} // end of void AliFlowAnalysisWithQCumulants::GetPointersForOtherDiffCorrelators()
18536
e1d101a6 18537//=======================================================================================================================
64e500e3 18538
489d5531 18539void AliFlowAnalysisWithQCumulants::GetPointersForDiffFlowHistograms()
18540{
18541 // Get pointer to all objects relevant for differential flow.
1268c371 18542 // a) Get pointer to base list for differential flow fDiffFlowList;
18543 // b) Get pointer to profile fDiffFlowFlags holding all flags for differential flow. Access and set some flags;
18544 // c) Get pointers to nested lists fDiffFlowListProfiles and fDiffFlowListResults;
18545 // d) Define flags locally (to be improved: should I promote these flags to data members?);
18546 // e) Get pointers to all nested lists in fDiffFlowListProfiles and to profiles which they hold;
18547 // f) Get pointers to all nested lists in fDiffFlowListResults and to histograms which they hold.
18548
18549 // a) Get pointer to base list for differential flow fDiffFlowList:
18550 fDiffFlowList = dynamic_cast<TList*>(fHistList->FindObject("Differential Flow"));
18551 if(!fDiffFlowList)
489d5531 18552 {
1268c371 18553 printf("\n WARNING (QC): fDiffFlowList is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18554 exit(0);
18555 }
1268c371 18556
18557 // b) Get pointer to profile fDiffFlowFlags holding all flags for differential flow. Access and set some flags:
18558 TString diffFlowFlagsName = "fDiffFlowFlags";
18559 diffFlowFlagsName += fAnalysisLabel->Data();
18560 fDiffFlowFlags = dynamic_cast<TProfile*>(fDiffFlowList->FindObject(diffFlowFlagsName.Data()));
18561 if(fDiffFlowFlags)
18562 {
62d19320 18563 this->SetCalculateDiffFlow((Bool_t)fDiffFlowFlags->GetBinContent(1)); // to be improved - hardwired 1
62e36168 18564 this->SetCalculateDiffFlowVsEta((Bool_t)fDiffFlowFlags->GetBinContent(6)); // to be improved - hardwired 6
1268c371 18565 } else
18566 {
18567 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18568 printf("\n Flags in method Finish() are wrong.\n\n");
18569 exit(0);
18570 }
18571
18572 if(!fCalculateDiffFlow){return;} // IMPORTANT: do not move this anywhere above in this method (to be improved)
18573
18574 // c) Get pointers to nested lists fDiffFlowListProfiles and fDiffFlowListResults:
18575 // List holding nested lists holding profiles:
489d5531 18576 TList *diffFlowListProfiles = NULL;
1268c371 18577 diffFlowListProfiles = dynamic_cast<TList*>(fDiffFlowList->FindObject("Profiles"));
489d5531 18578 if(!diffFlowListProfiles)
18579 {
1268c371 18580 printf("\n WARNING (QC): diffFlowListProfiles is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18581 exit(0);
18582 }
1268c371 18583 // List holding nested lists holding histograms with final results:
489d5531 18584 TList *diffFlowListResults = NULL;
1268c371 18585 diffFlowListResults = dynamic_cast<TList*>(fDiffFlowList->FindObject("Results"));
489d5531 18586 if(!diffFlowListResults)
18587 {
1268c371 18588 printf("\n WARNING (QC): diffFlowListResults is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18589 exit(0);
18590 }
18591
1268c371 18592 // d) Define flags locally (to be improved: should I promote these flags to data members?):
18593 TString typeFlag[2] = {"RP","POI"};
18594 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18595 TString powerFlag[2] = {"linear","quadratic"};
18596 TString sinCosFlag[2] = {"sin","cos"};
18597 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18598 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18599 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18600 TString reducedSquaredCorrelationIndex[4] = {"<2'>^{2}","<4'>^{2}","<6'>^{2}","<8'>^{2}"};
18601 TString mixedCorrelationIndex[8] = {"<2>","<2'>","<4>","<4'>","<6>","<6'>","<8>","<8'>"};
18602 TString covarianceName[5] = {"Cov(<2>,<2'>)","Cov(<2>,<4'>)","Cov(<4>,<2'>)","Cov(<4>,<4'>)","Cov(<2'>,<4'>)"};
489d5531 18603
1268c371 18604 // e) Get pointers to all nested lists in fDiffFlowListProfiles and to profiles which they hold:
489d5531 18605 // correlations:
18606 TList *diffFlowCorrelationsProList[2][2] = {{NULL}};
18607 TString diffFlowCorrelationsProName = "fDiffFlowCorrelationsPro";
18608 diffFlowCorrelationsProName += fAnalysisLabel->Data();
b40a910e 18609 TProfile *diffFlowCorrelationsPro[2][2][4] = {{{NULL}}};
18610 // squared correlations:
18611 TString diffFlowSquaredCorrelationsProName = "fDiffFlowSquaredCorrelationsPro";
18612 diffFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
18613 TProfile *diffFlowSquaredCorrelationsPro[2][2][4] = {{{NULL}}};
489d5531 18614 // products of correlations:
18615 TList *diffFlowProductOfCorrelationsProList[2][2] = {{NULL}};
18616 TString diffFlowProductOfCorrelationsProName = "fDiffFlowProductOfCorrelationsPro";
18617 diffFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
18618 TProfile *diffFlowProductOfCorrelationsPro[2][2][8][8] = {{{{NULL}}}};
18619 // corrections:
18620 TList *diffFlowCorrectionsProList[2][2] = {{NULL}};
18621 TString diffFlowCorrectionTermsForNUAProName = "fDiffFlowCorrectionTermsForNUAPro";
18622 diffFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
18623 TProfile *diffFlowCorrectionTermsForNUAPro[2][2][2][10] = {{{{NULL}}}};
18624 for(Int_t t=0;t<2;t++)
18625 {
62e36168 18626 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++)
489d5531 18627 {
18628 diffFlowCorrelationsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18629 if(!diffFlowCorrelationsProList[t][pe])
18630 {
18631 cout<<"WARNING: diffFlowCorrelationsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18632 cout<<"t = "<<t<<endl;
18633 cout<<"pe = "<<pe<<endl;
18634 exit(0);
18635 }
18636 for(Int_t ci=0;ci<4;ci++) // correlation index
18637 {
b40a910e 18638 // reduced correlations:
489d5531 18639 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())));
18640 if(diffFlowCorrelationsPro[t][pe][ci])
18641 {
18642 this->SetDiffFlowCorrelationsPro(diffFlowCorrelationsPro[t][pe][ci],t,pe,ci);
18643 } else
18644 {
18645 cout<<"WARNING: diffFlowCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18646 cout<<"t = "<<t<<endl;
18647 cout<<"pe = "<<pe<<endl;
18648 cout<<"ci = "<<ci<<endl;
18649 }
b40a910e 18650 // reduced squared correlations:
18651 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())));
18652 if(diffFlowSquaredCorrelationsPro[t][pe][ci])
18653 {
18654 this->SetDiffFlowSquaredCorrelationsPro(diffFlowSquaredCorrelationsPro[t][pe][ci],t,pe,ci);
18655 } else
18656 {
18657 cout<<"WARNING: diffFlowSquaredCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18658 cout<<"t = "<<t<<endl;
18659 cout<<"pe = "<<pe<<endl;
18660 cout<<"ci = "<<ci<<endl;
18661 }
489d5531 18662 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18663 // products of correlations:
18664 diffFlowProductOfCorrelationsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with products of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18665 if(!diffFlowProductOfCorrelationsProList[t][pe])
18666 {
18667 cout<<"WARNING: ddiffFlowProductOfCorrelationsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18668 cout<<"t = "<<t<<endl;
18669 cout<<"pe = "<<pe<<endl;
18670 exit(0);
18671 }
18672 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18673 {
18674 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18675 {
18676 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())));
18677 if(diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2])
18678 {
18679 this->SetDiffFlowProductOfCorrelationsPro(diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2],t,pe,mci1,mci2);
18680 } else
18681 {
b40a910e 18682 cout<<"WARNING: diffFlowProductOfCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
489d5531 18683 cout<<"t = "<<t<<endl;
18684 cout<<"pe = "<<pe<<endl;
18685 cout<<"mci1 = "<<mci1<<endl;
18686 cout<<"mci2 = "<<mci2<<endl;
18687 }
18688 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18689 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18690 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18691 // corrections:
18692 diffFlowCorrectionsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18693 if(!diffFlowCorrectionsProList[t][pe])
18694 {
18695 cout<<"WARNING: diffFlowCorrectionsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18696 cout<<"t = "<<t<<endl;
18697 cout<<"pe = "<<pe<<endl;
18698 exit(0);
18699 }
18700 // correction terms for NUA:
18701 for(Int_t sc=0;sc<2;sc++) // sin or cos
18702 {
18703 for(Int_t cti=0;cti<9;cti++) // correction term index
18704 {
18705 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)));
18706 if(diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti])
18707 {
18708 this->SetDiffFlowCorrectionTermsForNUAPro(diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti],t,pe,sc,cti);
18709 } else
18710 {
18711 cout<<"WARNING: diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18712 cout<<"t = "<<t<<endl;
18713 cout<<"pe = "<<pe<<endl;
18714 cout<<"sc = "<<sc<<endl;
18715 cout<<"cti = "<<cti<<endl;
18716 }
18717 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
18718 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18719 // ...
18720 } // end of for(Int_t pe=0;pe<2;pe++)
18721 } // end of for(Int_t t=0;t<2;t++)
18722
1268c371 18723 // f) Get pointers to all nested lists in fDiffFlowListResults and to histograms which they hold:
489d5531 18724 // reduced correlations:
18725 TList *diffFlowCorrelationsHistList[2][2] = {{NULL}};
18726 TString diffFlowCorrelationsHistName = "fDiffFlowCorrelationsHist";
18727 diffFlowCorrelationsHistName += fAnalysisLabel->Data();
18728 TH1D *diffFlowCorrelationsHist[2][2][4] = {{{NULL}}};
18729 // corrections for NUA:
18730 TList *diffFlowCorrectionsHistList[2][2] = {{NULL}};
18731 TString diffFlowCorrectionTermsForNUAHistName = "fDiffFlowCorrectionTermsForNUAHist";
18732 diffFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
18733 TH1D *diffFlowCorrectionTermsForNUAHist[2][2][2][10] = {{{{NULL}}}};
18734 // differential Q-cumulants:
18735 TList *diffFlowCumulantsHistList[2][2] = {{NULL}};
18736 TString diffFlowCumulantsName = "fDiffFlowCumulants";
18737 diffFlowCumulantsName += fAnalysisLabel->Data();
18738 TH1D *diffFlowCumulants[2][2][4] = {{{NULL}}};
1268c371 18739 // detector bias to differential Q-cumulants:
18740 TList *diffFlowDetectorBiasHistList[2][2] = {{NULL}};
18741 TString diffFlowDetectorBiasName = "fDiffFlowDetectorBias";
18742 diffFlowDetectorBiasName += fAnalysisLabel->Data();
18743 TH1D *diffFlowDetectorBias[2][2][4] = {{{NULL}}};
489d5531 18744 // differential flow estimates from Q-cumulants:
18745 TList *diffFlowHistList[2][2] = {{NULL}};
18746 TString diffFlowName = "fDiffFlow";
18747 diffFlowName += fAnalysisLabel->Data();
18748 TH1D *diffFlow[2][2][4] = {{{NULL}}};
18749 // differential covariances:
18750 TList *diffFlowCovariancesHistList[2][2] = {{NULL}};
18751 TString diffFlowCovariancesName = "fDiffFlowCovariances";
18752 diffFlowCovariancesName += fAnalysisLabel->Data();
18753 TH1D *diffFlowCovariances[2][2][5] = {{{NULL}}};
18754 for(Int_t t=0;t<2;t++) // type: RP or POI
18755 {
62e36168 18756 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18757 {
18758 // reduced correlations:
18759 diffFlowCorrelationsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18760 if(!diffFlowCorrelationsHistList[t][pe])
18761 {
18762 cout<<"WARNING: diffFlowCorrelationsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18763 cout<<"t = "<<t<<endl;
18764 cout<<"pe = "<<pe<<endl;
18765 exit(0);
18766 }
18767 for(Int_t index=0;index<4;index++)
18768 {
18769 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())));
18770 if(diffFlowCorrelationsHist[t][pe][index])
18771 {
18772 this->SetDiffFlowCorrelationsHist(diffFlowCorrelationsHist[t][pe][index],t,pe,index);
18773 } else
18774 {
18775 cout<<"WARNING: diffFlowCorrelationsHist[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18776 cout<<"t = "<<t<<endl;
18777 cout<<"pe = "<<pe<<endl;
18778 cout<<"index = "<<index<<endl;
18779 exit(0);
18780 }
18781 } // end of for(Int_t index=0;index<4;index++)
18782 // corrections:
18783 diffFlowCorrectionsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Histograms with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18784 if(!diffFlowCorrectionsHistList[t][pe])
18785 {
18786 cout<<"WARNING: diffFlowCorrectionsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18787 cout<<"t = "<<t<<endl;
18788 cout<<"pe = "<<pe<<endl;
18789 exit(0);
18790 }
18791 // correction terms for NUA:
18792 for(Int_t sc=0;sc<2;sc++) // sin or cos
18793 {
18794 for(Int_t cti=0;cti<9;cti++) // correction term index
18795 {
18796 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)));
18797 if(diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti])
18798 {
18799 this->SetDiffFlowCorrectionTermsForNUAHist(diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti],t,pe,sc,cti);
18800 } else
18801 {
18802 cout<<"WARNING: diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18803 cout<<"t = "<<t<<endl;
18804 cout<<"pe = "<<pe<<endl;
18805 cout<<"sc = "<<sc<<endl;
18806 cout<<"cti = "<<cti<<endl;
18807 }
18808 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
18809 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18810 // ...
18811 // differential Q-cumulants:
18812 diffFlowCumulantsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Differential Q-cumulants (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18813 if(!diffFlowCumulantsHistList[t][pe])
18814 {
18815 cout<<"WARNING: diffFlowCumulantsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18816 cout<<"t = "<<t<<endl;
18817 cout<<"pe = "<<pe<<endl;
18818 exit(0);
18819 }
18820 for(Int_t index=0;index<4;index++)
18821 {
18822 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())));
18823 if(diffFlowCumulants[t][pe][index])
18824 {
18825 this->SetDiffFlowCumulants(diffFlowCumulants[t][pe][index],t,pe,index);
18826 } else
18827 {
18828 cout<<"WARNING: diffFlowCumulants[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18829 cout<<"t = "<<t<<endl;
18830 cout<<"pe = "<<pe<<endl;
18831 cout<<"index = "<<index<<endl;
18832 exit(0);
18833 }
18834 } // end of for(Int_t index=0;index<4;index++)
1268c371 18835 // Detector bias to differential Q-cumulants:
18836 diffFlowDetectorBiasHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Detector bias (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18837 if(!diffFlowDetectorBiasHistList[t][pe])
18838 {
18839 cout<<"WARNING: diffFlowDetectorBiasHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18840 cout<<"t = "<<t<<endl;
18841 cout<<"pe = "<<pe<<endl;
18842 exit(0);
18843 }
18844 for(Int_t index=0;index<4;index++)
18845 {
18846 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())));
18847 if(diffFlowDetectorBias[t][pe][index])
18848 {
18849 this->SetDiffFlowDetectorBias(diffFlowDetectorBias[t][pe][index],t,pe,index);
18850 } else
18851 {
18852 cout<<"WARNING: diffFlowDetectorBias[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18853 cout<<"t = "<<t<<endl;
18854 cout<<"pe = "<<pe<<endl;
18855 cout<<"index = "<<index<<endl;
18856 exit(0);
18857 }
18858 } // end of for(Int_t index=0;index<4;index++)
489d5531 18859 // differential flow estimates from Q-cumulants:
18860 diffFlowHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Differential flow (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18861 if(!diffFlowHistList[t][pe])
18862 {
18863 cout<<"WARNING: diffFlowHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18864 cout<<"t = "<<t<<endl;
18865 cout<<"pe = "<<pe<<endl;
18866 exit(0);
18867 }
18868 for(Int_t index=0;index<4;index++)
18869 {
18870 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())));
18871 if(diffFlow[t][pe][index])
18872 {
18873 this->SetDiffFlow(diffFlow[t][pe][index],t,pe,index);
18874 } else
18875 {
18876 cout<<"WARNING: diffFlow[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18877 cout<<"t = "<<t<<endl;
18878 cout<<"pe = "<<pe<<endl;
18879 cout<<"index = "<<index<<endl;
18880 exit(0);
18881 }
18882 } // end of for(Int_t index=0;index<4;index++)
18883 // differential covariances:
18884 diffFlowCovariancesHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Covariances of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18885 if(!diffFlowCovariancesHistList[t][pe])
18886 {
18887 cout<<"WARNING: diffFlowCovariancesHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18888 cout<<"t = "<<t<<endl;
18889 cout<<"pe = "<<pe<<endl;
18890 exit(0);
18891 }
18892 for(Int_t covIndex=0;covIndex<5;covIndex++)
18893 {
18894 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())));
18895 if(diffFlowCovariances[t][pe][covIndex])
18896 {
18897 this->SetDiffFlowCovariances(diffFlowCovariances[t][pe][covIndex],t,pe,covIndex);
18898 } else
18899 {
18900 cout<<"WARNING: diffFlowCovariances[t][pe][covIndex] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18901 cout<<"t = "<<t<<endl;
18902 cout<<"pe = "<<pe<<endl;
18903 cout<<"covIndex = "<<covIndex<<endl;
18904 exit(0);
18905 }
18906 } // end of for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
18907 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18908 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18909 // sum of event weights for reduced correlations:
18910 TList *diffFlowSumOfEventWeightsHistList[2][2][2] = {{{NULL}}};
18911 TString diffFlowSumOfEventWeightsName = "fDiffFlowSumOfEventWeights";
18912 diffFlowSumOfEventWeightsName += fAnalysisLabel->Data();
18913 TH1D *diffFlowSumOfEventWeights[2][2][2][4] = {{{{NULL}}}};
18914 for(Int_t t=0;t<2;t++) // type is RP or POI
18915 {
62e36168 18916 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18917 {
18918 for(Int_t p=0;p<2;p++) // power of event weights is either 1 or 2
18919 {
18920 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())));
18921 if(!diffFlowSumOfEventWeightsHistList[t][pe][p])
18922 {
18923 cout<<"WARNING: diffFlowSumOfEventWeightsHistList[t][pe][p] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18924 cout<<"t = "<<t<<endl;
18925 cout<<"pe = "<<pe<<endl;
18926 cout<<"power = "<<p<<endl;
18927 exit(0);
18928 }
18929 for(Int_t ew=0;ew<4;ew++) // index of reduced correlation
18930 {
18931 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())));
18932 if(diffFlowSumOfEventWeights[t][pe][p][ew])
18933 {
18934 this->SetDiffFlowSumOfEventWeights(diffFlowSumOfEventWeights[t][pe][p][ew],t,pe,p,ew);
18935 } else
18936 {
18937 cout<<"WARNING: diffFlowSumOfEventWeights[t][pe][p][ew] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18938 cout<<"t = "<<t<<endl;
18939 cout<<"pe = "<<pe<<endl;
18940 cout<<"power = "<<p<<endl;
18941 cout<<"ew = "<<ew<<endl;
18942 exit(0);
18943 }
18944 }
18945 } // end of for(Int_t p=0;p<2;p++) // power of event weights is either 1 or 2
18946 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18947 } // end of for(Int_t t=0;t<2;t++) // type is RP or POI
18948 //
18949 TList *diffFlowSumOfProductOfEventWeightsHistList[2][2] = {{NULL}};
18950 TString diffFlowSumOfProductOfEventWeightsName = "fDiffFlowSumOfProductOfEventWeights";
18951 diffFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
18952 TH1D *diffFlowSumOfProductOfEventWeights[2][2][8][8] = {{{{NULL}}}};
18953 for(Int_t t=0;t<2;t++) // type is RP or POI
18954 {
62e36168 18955 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18956 {
18957 diffFlowSumOfProductOfEventWeightsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Sum of products of event weights (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18958 if(!diffFlowSumOfProductOfEventWeightsHistList[t][pe])
18959 {
18960 cout<<"WARNING: diffFlowSumOfProductOfEventWeightsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18961 cout<<"t = "<<t<<endl;
18962 cout<<"pe = "<<pe<<endl;
18963 exit(0);
18964 }
18965 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18966 {
18967 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18968 {
18969 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())));
18970 if(diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2])
18971 {
18972 this->SetDiffFlowSumOfProductOfEventWeights(diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2],t,pe,mci1,mci2);
18973 } else
18974 {
18975 cout<<"WARNING: diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18976 cout<<"t = "<<t<<endl;
18977 cout<<"pe = "<<pe<<endl;
18978 cout<<"mci1 = "<<mci1<<endl;
18979 cout<<"mci2 = "<<mci2<<endl;
18980 exit(0);
18981 }
18982 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18983 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18984 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18985 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18986 } // end of for(Int_t t=0;t<2;t++) // type is RP or POI
18987
18988} // end void AliFlowAnalysisWithQCumulants::GetPointersForDiffFlowHistograms()
18989
e1d101a6 18990//=======================================================================================================================
489d5531 18991
1268c371 18992void AliFlowAnalysisWithQCumulants::BookEverythingFor2DDifferentialFlow()
18993{
18994 // Book all objects needed for 2D differential flow.
18995 // a) Define flags locally (to be improved: should I promote flags to data members?);
18996 // b) Book e-b-e quantities;
18997 // c) Book 2D profiles;
18998 // d) Book 2D histograms.
18999
19000 if(!fCalculate2DDiffFlow){return;}
19001
19002 // a) Define flags locally (to be improved: should I promote flags to data members?):
19003 TString typeFlag[2] = {"RP","POI"};
19004 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
19005 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
19006 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
19007
19008 // b) Book e-b-e quantities:
19009 TProfile2D styleRe("typeMultiplePowerRe","typeMultiplePowerRe",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
19010 TProfile2D styleIm("typeMultiplePowerIm","typeMultiplePowerIm",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
19011 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
19012 {
19013 for(Int_t m=0;m<4;m++)
19014 {
19015 for(Int_t k=0;k<9;k++)
19016 {
19017 fReRPQ2dEBE[t][m][k] = (TProfile2D*)styleRe.Clone(Form("typeFlag%dmultiple%dpower%dRe",t,m,k));
19018 fImRPQ2dEBE[t][m][k] = (TProfile2D*)styleIm.Clone(Form("typeFlag%dmultiple%dpower%dIm",t,m,k));
19019 }
19020 }
19021 }
19022 TProfile2D styleS("typePower","typePower",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
19023 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
19024 {
19025 for(Int_t k=0;k<9;k++)
19026 {
19027 fs2dEBE[t][k] = (TProfile2D*)styleS.Clone(Form("typeFlag%dpower%d",t,k));
19028 }
19029 }
19030
19031 // c) Book 2D profiles:
19032 TString s2DDiffFlowCorrelationsProName = "f2DDiffFlowCorrelationsPro";
19033 s2DDiffFlowCorrelationsProName += fAnalysisLabel->Data();
19034 for(Int_t t=0;t<2;t++) // type: RP or POI
19035 {
19036 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
19037 {
19038 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,"");
19039 f2DDiffFlowCorrelationsPro[t][rci]->Sumw2();
19040 f2DDiffFlowCorrelationsPro[t][rci]->SetXTitle("p_{t}");
19041 f2DDiffFlowCorrelationsPro[t][rci]->SetYTitle("#eta");
19042 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlowCorrelationsPro[t][rci]);
19043 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
19044 } // end of for(Int_t t=0;t<2;t++) // type: RP or POIs
19045
19046 // d) Book 2D histograms:
19047 TString s2DDiffFlowCumulantsName = "f2DDiffFlowCumulants";
19048 s2DDiffFlowCumulantsName += fAnalysisLabel->Data();
19049 TString s2DDiffFlowName = "f2DDiffFlow";
19050 s2DDiffFlowName += fAnalysisLabel->Data();
19051 for(Int_t t=0;t<2;t++) // type: RP or POI
19052 {
19053 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
19054 {
19055 // 2D diferential cumulants:
19056 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);
19057 f2DDiffFlowCumulants[t][rci]->SetXTitle("p_{t}");
19058 f2DDiffFlowCumulants[t][rci]->SetYTitle("#eta");
19059 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlowCumulants[t][rci]); // to be improved - moved to another list
19060 // 2D differential flow:
19061 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);
19062 f2DDiffFlow[t][rci]->SetXTitle("p_{t}");
19063 f2DDiffFlow[t][rci]->SetYTitle("#eta");
19064 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlow[t][rci]); // to be improved - moved to another list
19065 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
19066 } // end of for(Int_t t=0;t<2;t++) // type: RP or POIs
19067
19068} // void AliFlowAnalysisWithQCumulants::BookEverythingFor2DDifferentialFlow()
19069
e1d101a6 19070//=======================================================================================================================
489d5531 19071
19072void AliFlowAnalysisWithQCumulants::BookEverythingForDifferentialFlow()
19073{
19074 // Book all histograms and profiles needed for differential flow.
1268c371 19075 // a) Book profile to hold all flags for differential flow;
19076 // b) Define flags locally (to be improved: should I promote flags to data members?);
489d5531 19077 // c) Book e-b-e quantities;
19078 // d) Book profiles;
19079 // e) Book histograms holding final results.
19080
1268c371 19081 // a) Book profile to hold all flags for differential flow:
19082 TString diffFlowFlagsName = "fDiffFlowFlags";
19083 diffFlowFlagsName += fAnalysisLabel->Data();
62e36168 19084 fDiffFlowFlags = new TProfile(diffFlowFlagsName.Data(),"Flags for differential flow",6,0,6);
1268c371 19085 fDiffFlowFlags->SetTickLength(-0.01,"Y");
19086 fDiffFlowFlags->SetMarkerStyle(25);
19087 fDiffFlowFlags->SetLabelSize(0.04,"X");
19088 fDiffFlowFlags->SetLabelOffset(0.02,"Y");
e1d101a6 19089 fDiffFlowFlags->SetStats(kFALSE);
1268c371 19090 fDiffFlowFlags->GetXaxis()->SetBinLabel(1,"Calculate diff. flow");
19091 fDiffFlowFlags->GetXaxis()->SetBinLabel(2,"Particle weights");
19092 fDiffFlowFlags->GetXaxis()->SetBinLabel(3,"Event weights");
19093 fDiffFlowFlags->GetXaxis()->SetBinLabel(4,"Correct for NUA");
19094 fDiffFlowFlags->GetXaxis()->SetBinLabel(5,"Calculate 2D diff. flow");
62e36168 19095 fDiffFlowFlags->GetXaxis()->SetBinLabel(6,"Calculate diff. flow vs eta");
1268c371 19096 fDiffFlowList->Add(fDiffFlowFlags);
19097
19098 if(!fCalculateDiffFlow){return;}
19099
19100 // b) Define flags locally (to be improved: should I promote flags to data members?):
489d5531 19101 TString typeFlag[2] = {"RP","POI"};
19102 TString ptEtaFlag[2] = {"p_{T}","#eta"};
19103 TString powerFlag[2] = {"linear","quadratic"};
19104 TString sinCosFlag[2] = {"sin","cos"};
19105 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
19106 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
19107 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
b40a910e 19108 TString reducedSquaredCorrelationIndex[4] = {"<2'>^{2}","<4'>^{2}","<6'>^{2}","<8'>^{2}"};
489d5531 19109 TString mixedCorrelationIndex[8] = {"<2>","<2'>","<4>","<4'>","<6>","<6'>","<8>","<8'>"};
19110 TString covarianceName[5] = {"Cov(<2>,<2'>)","Cov(<2>,<4'>)","Cov(<4>,<2'>)","Cov(<4>,<4'>)","Cov(<2'>,<4'>)"};
19111 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
19112 Double_t minPtEta[2] = {fPtMin,fEtaMin};
19113 Double_t maxPtEta[2] = {fPtMax,fEtaMax};
1268c371 19114
489d5531 19115 // c) Book e-b-e quantities:
19116 // Event-by-event r_{m*n,k}(pt,eta), p_{m*n,k}(pt,eta) and q_{m*n,k}(pt,eta)
19117 // Explanantion of notation:
19118 // 1.) n is harmonic, m is multiple of harmonic;
19119 // 2.) k is power of particle weight;
19120 // 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);
19121 // 4.) p_{m*n,k}(pt,eta) = Q-vector evaluated in harmonic m*n for POIs in particular (pt,eta) bin
19122 // (if i-th POI is also RP, than it is weighted with w_i^k);
19123 // 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
19124 // (i-th RP&&POI is weighted with w_i^k)
19125
19126 // 1D:
19127 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP && POI )
19128 {
62e36168 19129 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19130 {
19131 for(Int_t m=0;m<4;m++) // multiple of harmonic
19132 {
19133 for(Int_t k=0;k<9;k++) // power of particle weight
19134 {
19135 fReRPQ1dEBE[t][pe][m][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%dpower%dRe",t,pe,m,k),
19136 Form("TypeFlag%dpteta%dmultiple%dpower%dRe",t,pe,m,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19137 fImRPQ1dEBE[t][pe][m][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%dpower%dIm",t,pe,m,k),
19138 Form("TypeFlag%dpteta%dmultiple%dpower%dIm",t,pe,m,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19139 }
19140 }
19141 }
19142 }
19143 // to be improved (add explanation of fs1dEBE[t][pe][k]):
19144 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
19145 {
62e36168 19146 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19147 {
19148 for(Int_t k=0;k<9;k++) // power of particle weight
19149 {
19150 fs1dEBE[t][pe][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%d",t,pe,k),
19151 Form("TypeFlag%dpteta%dmultiple%d",t,pe,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19152 }
19153 }
19154 }
19155 // correction terms for nua:
19156 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19157 {
62e36168 19158 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19159 {
19160 for(Int_t sc=0;sc<2;sc++) // sin or cos
19161 {
19162 for(Int_t cti=0;cti<9;cti++) // correction term index
19163 {
19164 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti] = new TH1D(Form("typeFlag%d pteta%d sincos%d cti%d",t,pe,sc,cti),
19165 Form("typeFlag%d pteta%d sincos%d cti%d",t,pe,sc,cti),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19166 }
19167 }
19168 }
19169 }
489d5531 19170 // reduced correlations e-b-e:
19171 TString diffFlowCorrelationsEBEName = "fDiffFlowCorrelationsEBE";
19172 diffFlowCorrelationsEBEName += fAnalysisLabel->Data();
19173 for(Int_t t=0;t<2;t++) // type: RP or POI
19174 {
62e36168 19175 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19176 {
19177 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
19178 {
19179 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]);
19180 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
19181 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
19182 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
19183 // event weights for reduced correlations e-b-e:
19184 TString diffFlowEventWeightsForCorrelationsEBEName = "fDiffFlowEventWeightsForCorrelationsEBE";
19185 diffFlowEventWeightsForCorrelationsEBEName += fAnalysisLabel->Data();
19186 for(Int_t t=0;t<2;t++) // type: RP or POI
19187 {
62e36168 19188 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19189 {
19190 for(Int_t rci=0;rci<4;rci++) // event weight for reduced correlation index
19191 {
19192 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]);
19193 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
19194 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
19195 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
19196
19197 // d) Book profiles;
19198 // reduced correlations:
19199 TString diffFlowCorrelationsProName = "fDiffFlowCorrelationsPro";
19200 diffFlowCorrelationsProName += fAnalysisLabel->Data();
b40a910e 19201 // reduced squared correlations:
19202 TString diffFlowSquaredCorrelationsProName = "fDiffFlowSquaredCorrelationsPro";
19203 diffFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
489d5531 19204 // corrections terms:
19205 TString diffFlowCorrectionTermsForNUAProName = "fDiffFlowCorrectionTermsForNUAPro";
19206 diffFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
b40a910e 19207 // reduced correlations:
489d5531 19208 for(Int_t t=0;t<2;t++) // type: RP or POI
19209 {
62e36168 19210 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19211 {
19212 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
19213 {
489d5531 19214 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");
b40a910e 19215 fDiffFlowCorrelationsPro[t][pe][rci]->Sumw2();
489d5531 19216 fDiffFlowCorrelationsPro[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
19217 fDiffFlowCorrelationsProList[t][pe]->Add(fDiffFlowCorrelationsPro[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
19218 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
19219 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
19220 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
b40a910e 19221 // reduced squared correlations:
19222 for(Int_t t=0;t<2;t++) // type: RP or POI
19223 {
62e36168 19224 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
b40a910e 19225 {
19226 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
19227 {
19228 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");
19229 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->Sumw2();
19230 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
19231 fDiffFlowCorrelationsProList[t][pe]->Add(fDiffFlowSquaredCorrelationsPro[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
19232 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
19233 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
19234 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
489d5531 19235 // correction terms for nua:
19236 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19237 {
62e36168 19238 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19239 {
19240 for(Int_t sc=0;sc<2;sc++) // sin or cos
19241 {
19242 for(Int_t cti=0;cti<9;cti++) // correction term index
19243 {
19244 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]);
19245 fDiffFlowCorrectionsProList[t][pe]->Add(fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]);
19246 }
19247 }
19248 }
19249 }
64e500e3 19250 // Other differential correlators:
19251 TString otherDiffCorrelatorsName = "fOtherDiffCorrelators";
19252 otherDiffCorrelatorsName += fAnalysisLabel->Data();
19253 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19254 {
62e36168 19255 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 19256 {
19257 for(Int_t sc=0;sc<2;sc++) // sin or cos
19258 {
19259 for(Int_t ci=0;ci<1;ci++) // correlator index
19260 {
19261 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]);
19262 fOtherDiffCorrelators[t][pe][sc][ci]->Sumw2();
19263 fOtherDiffCorrelatorsList->Add(fOtherDiffCorrelators[t][pe][sc][ci]);
19264 }
19265 }
19266 }
19267 }
489d5531 19268 // e) Book histograms holding final results.
19269 // reduced correlations:
19270 TString diffFlowCorrelationsHistName = "fDiffFlowCorrelationsHist";
19271 diffFlowCorrelationsHistName += fAnalysisLabel->Data();
19272 // corrections terms:
19273 TString diffFlowCorrectionTermsForNUAHistName = "fDiffFlowCorrectionTermsForNUAHist";
19274 diffFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
19275 // differential covariances:
19276 TString diffFlowCovariancesName = "fDiffFlowCovariances";
19277 diffFlowCovariancesName += fAnalysisLabel->Data();
19278 // differential Q-cumulants:
19279 TString diffFlowCumulantsName = "fDiffFlowCumulants";
19280 diffFlowCumulantsName += fAnalysisLabel->Data();
1268c371 19281 // Detector bias to differential Q-cumulants:
19282 TString diffFlowDetectorBiasName = "fDiffFlowDetectorBias";
19283 diffFlowDetectorBiasName += fAnalysisLabel->Data();
489d5531 19284 // differential flow:
19285 TString diffFlowName = "fDiffFlow";
19286 diffFlowName += fAnalysisLabel->Data();
19287 for(Int_t t=0;t<2;t++) // type: RP or POI
19288 {
62e36168 19289 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19290 {
19291 for(Int_t index=0;index<4;index++)
19292 {
19293 // reduced correlations:
19294 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]);
19295 fDiffFlowCorrelationsHist[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19296 fDiffFlowCorrelationsHistList[t][pe]->Add(fDiffFlowCorrelationsHist[t][pe][index]);
19297 // differential Q-cumulants:
19298 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]);
19299 fDiffFlowCumulants[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19300 fDiffFlowCumulantsHistList[t][pe]->Add(fDiffFlowCumulants[t][pe][index]);
1268c371 19301 // Detector bias to differential Q-cumulants:
19302 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]);
19303 fDiffFlowDetectorBias[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19304 fDiffFlowDetectorBias[t][pe][index]->SetTitle(Form("#frac{corrected}{measured} %s",differentialCumulantIndex[index].Data()));
19305 fDiffFlowDetectorBiasHistList[t][pe]->Add(fDiffFlowDetectorBias[t][pe][index]);
489d5531 19306 // differential flow estimates from Q-cumulants:
19307 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]);
19308 fDiffFlow[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19309 fDiffFlowHistList[t][pe]->Add(fDiffFlow[t][pe][index]);
19310 } // end of for(Int_t index=0;index<4;index++)
19311 for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
19312 {
19313 // differential covariances:
19314 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]);
19315 fDiffFlowCovariances[t][pe][covIndex]->SetXTitle(ptEtaFlag[pe].Data());
19316 fDiffFlowCovariancesHistList[t][pe]->Add(fDiffFlowCovariances[t][pe][covIndex]);
19317 } // end of for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
19318 // products of both types of correlations:
19319 TString diffFlowProductOfCorrelationsProName = "fDiffFlowProductOfCorrelationsPro";
19320 diffFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
19321 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19322 {
19323 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19324 {
19325 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]);
19326 fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2]->SetXTitle(ptEtaFlag[pe].Data());
19327 fDiffFlowProductOfCorrelationsProList[t][pe]->Add(fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2]);
19328 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
19329 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19330 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19331 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
19332 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
19333 // sums of event weights for reduced correlations:
19334 TString diffFlowSumOfEventWeightsName = "fDiffFlowSumOfEventWeights";
19335 diffFlowSumOfEventWeightsName += fAnalysisLabel->Data();
19336 for(Int_t t=0;t<2;t++) // type is RP or POI
19337 {
62e36168 19338 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19339 {
19340 for(Int_t p=0;p<2;p++) // power of weights is either 1 or 2
19341 {
19342 for(Int_t ew=0;ew<4;ew++) // index of reduced correlation
19343 {
19344 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]);
19345 fDiffFlowSumOfEventWeights[t][pe][p][ew]->SetXTitle(ptEtaFlag[pe].Data());
19346 fDiffFlowSumOfEventWeightsHistList[t][pe][p]->Add(fDiffFlowSumOfEventWeights[t][pe][p][ew]); // to be improved (add dedicated list to hold all this)
19347 }
19348 }
19349 }
19350 }
19351 // sum of products of event weights for both types of correlations:
19352 TString diffFlowSumOfProductOfEventWeightsName = "fDiffFlowSumOfProductOfEventWeights";
19353 diffFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
19354 for(Int_t t=0;t<2;t++) // type is RP or POI
19355 {
62e36168 19356 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19357 {
19358 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19359 {
19360 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19361 {
19362 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]);
19363 fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2]->SetXTitle(ptEtaFlag[pe].Data());
19364 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]->Add(fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2]);
19365 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
19366 }
19367 }
19368 }
19369 }
19370 // correction terms for nua:
19371 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19372 {
62e36168 19373 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19374 {
19375 for(Int_t sc=0;sc<2;sc++) // sin or cos
19376 {
19377 for(Int_t cti=0;cti<9;cti++) // correction term index
19378 {
19379 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]);
19380 fDiffFlowCorrectionsHistList[t][pe]->Add(fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti]);
19381 }
19382 }
19383 }
19384 }
19385
19386} // end of AliFlowAnalysisWithQCumulants::BookEverythingForDifferentialFlow()
19387
e1d101a6 19388//=======================================================================================================================
489d5531 19389
489d5531 19390void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow()
19391{
19392 // Calculate generalized Q-cumulants (cumulants corrected for non-unifom acceptance).
19393
b92ea2b9 19394 // Isotropic cumulants:
53884472 19395 Double_t QC2 = fIntFlowQcumulants->GetBinContent(1);
19396 Double_t QC2Error = fIntFlowQcumulants->GetBinError(1);
19397 Double_t QC4 = fIntFlowQcumulants->GetBinContent(2);
19398 Double_t QC4Error = fIntFlowQcumulants->GetBinError(2);
19399 //Double_t QC6 = fIntFlowQcumulants->GetBinContent(3);
19400 //Double_t QC6Error = fIntFlowQcumulants->GetBinError(3);
19401 //Double_t QC8 = fIntFlowQcumulants->GetBinContent(4);
19402 //Double_t QC8Error = fIntFlowQcumulants->GetBinError(4);
b92ea2b9 19403
19404 // Measured 2-, 4-, 6- and 8-particle correlations:
489d5531 19405 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
b92ea2b9 19406 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1); // statistical error of <<2>>
489d5531 19407 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
b92ea2b9 19408 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2); // statistical error of <<4>>
489d5531 19409 //Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
489d5531 19410 //Double_t sixError = fIntFlowCorrelationsHist->GetBinError(3); // statistical error of <<6>>
b92ea2b9 19411 //Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
489d5531 19412 //Double_t eightError = fIntFlowCorrelationsHist->GetBinError(4); // statistical error of <<8>>
b92ea2b9 19413
19414 // Non-isotropic terms:
19415 Double_t c1 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(1); // <<cos(n*phi1)>>
19416 Double_t c1Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(1); // statistical error of <<cos(n*phi1)>>
19417 Double_t c2 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(2); // <<cos(n*(phi1+phi2))>>
19418 Double_t c2Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(2); // statistical error of <<cos(n*(phi1+phi2))>>
19419 Double_t c3 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(3); // <<cos(n*(phi1-phi2-phi3))>>
19420 Double_t c3Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(3); // statistical error of <<cos(n*(phi1-phi2-phi3))>>
19421 Double_t s1 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(1); // <<sin(n*phi1)>>
19422 Double_t s1Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(1); // statistical error of <<sin(n*phi1)>>
19423 Double_t s2 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(2); // <<sin(n*(phi1+phi2))>>
19424 Double_t s2Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(2); // statistical error of <<sin(n*(phi1+phi2))>>
19425 Double_t s3 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(3); // <<sin(n*(phi1-phi2-phi3))>>
19426 Double_t s3Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(3); // statistical error of <<sin(n*(phi1-phi2-phi3))>>
19427
19428 // Shortcuts:
19429 Double_t a1 = 2.*pow(c1,2.)+2.*pow(s1,2.)-two;
19430 Double_t a2 = 6.*pow(c1,3.)-2.*c1*c2+c3+6.*c1*pow(s1,2.)-2.*s1*s2-4.*c1*two;
19431 Double_t a3 = 2.*pow(s1,2.)-2.*pow(c1,2.)+c2;
19432 Double_t a4 = 6.*pow(s1,3.)+6.*pow(c1,2.)*s1+2.*c2*s1-2.*c1*s2-s3-4.*s1*two;
19433 Double_t a5 = 4.*c1*s1-s2;
19434
19435 // Covariances (including weight dependent prefactor):
8e1cefdd 19436 Double_t wCov1 = 0.; // w*Cov(<2>,<cos(phi))
19437 Double_t wCov2 = 0.; // w*Cov(<2>,<sin(phi))
19438 Double_t wCov3 = 0.; // w*Cov(<cos(phi),<sin(phi))
19439 Double_t wCov4 = 0.; // w*Cov(<2>,<4>)
19440 Double_t wCov5 = 0.; // w*Cov(<2>,<cos(#phi_{1}+#phi_{2})>)
19441 Double_t wCov6 = 0.; // w*Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19442 Double_t wCov7 = 0.; // w*Cov(<2>,<sin(#phi_{1}+#phi_{2})>)
19443 Double_t wCov8 = 0.; // w*Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19444 Double_t wCov9 = 0.; // w*Cov(<4>,<cos(#phi)>
19445 Double_t wCov10 = 0.; // w*Cov(<4>,<cos(#phi_{1}+#phi_{2})>)
19446 Double_t wCov11 = 0.; // w*Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19447 Double_t wCov12 = 0.; // w*Cov(<4>,<sin(#phi)>
19448 Double_t wCov13 = 0.; // w*Cov(<4>,<sin(#phi_{1}+#phi_{2})>)
19449 Double_t wCov14 = 0.; // w*Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19450 Double_t wCov15 = 0.; // w*Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19451 Double_t wCov16 = 0.; // w*Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19452 Double_t wCov17 = 0.; // w*Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19453 Double_t wCov18 = 0.; // w*Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19454 Double_t wCov19 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19455 Double_t wCov20 = 0.; // w*Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19456 Double_t wCov21 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)
19457 Double_t wCov22 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19458 Double_t wCov23 = 0.; // w*Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19459 Double_t wCov24 = 0.; // w*Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19460 Double_t wCov25 = 0.; // w*Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)
19461 Double_t wCov26 = 0.; // w*Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19462 Double_t wCov27 = 0.; // w*Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19463 Double_t wCov28 = 0.; // w*Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19464 if(!fForgetAboutCovariances)
19465 {
19466 wCov1 = fIntFlowCovariancesNUA->GetBinContent(1); // w*Cov(<2>,<cos(phi))
19467 wCov2 = fIntFlowCovariancesNUA->GetBinContent(2); // w*Cov(<2>,<sin(phi))
19468 wCov3 = fIntFlowCovariancesNUA->GetBinContent(3); // w*Cov(<cos(phi),<sin(phi))
19469 wCov4 = fIntFlowCovariances->GetBinContent(1); // w*Cov(<2>,<4>)
19470 wCov5 = fIntFlowCovariancesNUA->GetBinContent(4); // w*Cov(<2>,<cos(#phi_{1}+#phi_{2})>)
19471 wCov6 = fIntFlowCovariancesNUA->GetBinContent(6); // w*Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19472 wCov7 = fIntFlowCovariancesNUA->GetBinContent(5); // w*Cov(<2>,<sin(#phi_{1}+#phi_{2})>)
19473 wCov8 = fIntFlowCovariancesNUA->GetBinContent(7); // w*Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19474 wCov9 = fIntFlowCovariancesNUA->GetBinContent(8); // w*Cov(<4>,<cos(#phi)>
19475 wCov10 = fIntFlowCovariancesNUA->GetBinContent(10); // w*Cov(<4>,<cos(#phi_{1}+#phi_{2})>)
19476 wCov11 = fIntFlowCovariancesNUA->GetBinContent(12); // w*Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19477 wCov12 = fIntFlowCovariancesNUA->GetBinContent(9); // w*Cov(<4>,<sin(#phi)>
19478 wCov13 = fIntFlowCovariancesNUA->GetBinContent(11); // w*Cov(<4>,<sin(#phi_{1}+#phi_{2})>)
19479 wCov14 = fIntFlowCovariancesNUA->GetBinContent(13); // w*Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19480 wCov15 = fIntFlowCovariancesNUA->GetBinContent(14); // w*Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19481 wCov16 = fIntFlowCovariancesNUA->GetBinContent(16); // w*Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19482 wCov17 = fIntFlowCovariancesNUA->GetBinContent(15); // w*Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19483 wCov18 = fIntFlowCovariancesNUA->GetBinContent(17); // w*Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19484 wCov19 = fIntFlowCovariancesNUA->GetBinContent(23); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19485 wCov20 = fIntFlowCovariancesNUA->GetBinContent(18); // w*Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19486 wCov21 = fIntFlowCovariancesNUA->GetBinContent(22); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)
19487 wCov22 = fIntFlowCovariancesNUA->GetBinContent(24); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19488 wCov23 = fIntFlowCovariancesNUA->GetBinContent(20); // w*Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19489 wCov24 = fIntFlowCovariancesNUA->GetBinContent(25); // w*Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19490 wCov25 = fIntFlowCovariancesNUA->GetBinContent(27); // w*Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)
19491 wCov26 = fIntFlowCovariancesNUA->GetBinContent(19); // w*Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19492 wCov27 = fIntFlowCovariancesNUA->GetBinContent(21); // w*Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19493 wCov28 = fIntFlowCovariancesNUA->GetBinContent(26); // w*Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19494 } // end of if(!fForgetAboutCovariances)
19495
b92ea2b9 19496 // Calculating generalized QC{2}:
19497 // Generalized QC{2}:
19498 Double_t gQC2 = two - pow(c1,2.) - pow(s1,2.);
19499 if(fApplyCorrectionForNUA){fIntFlowQcumulants->SetBinContent(1,gQC2);}
19500 // Statistical error of generalized QC{2}:
19501 Double_t gQC2ErrorSquared = pow(twoError,2.)+4.*pow(c1,2.)*pow(c1Error,2.)
19502 + 4.*pow(s1,2.)*pow(s1Error,2.)
19503 - 4*c1*wCov1-4*s1*wCov2
19504 + 8.*c1*s1*wCov3;
19505 // Store ratio of error squared - with/without NUA terms:
19506 Double_t ratioErrorSquaredQC2 = 0.;
19507 if(fIntFlowQcumulants->GetBinError(1)>0.)
19508 {
19509 ratioErrorSquaredQC2 = (gQC2ErrorSquared/pow(fIntFlowQcumulants->GetBinError(1),2.));
19510 fIntFlowQcumulantsErrorSquaredRatio->SetBinContent(1,ratioErrorSquaredQC2);
19511 }
19512 // If enabled, store error by including non-isotropic terms:
b77b6434 19513 if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19514 {
19515 if(gQC2ErrorSquared>=0.)
19516 {
19517 fIntFlowQcumulants->SetBinError(1,pow(gQC2ErrorSquared,0.5));
19518 } else
19519 {
19520 fIntFlowQcumulants->SetBinError(1,0.);
19521 cout<<endl;
19522 cout<<" WARNING (QC): Statistical error of generalized QC{2} is imaginary !!!!"<<endl;
19523 cout<<endl;
19524 }
b77b6434 19525 } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19526 // Quantify detector bias to QC{2}:
53884472 19527 if(TMath::Abs(QC2)>0.)
b92ea2b9 19528 {
53884472 19529 fIntFlowDetectorBias->SetBinContent(1,gQC2/QC2);
19530 if(QC2Error>0.)
b92ea2b9 19531 {
53884472 19532 Double_t errorSquared = gQC2ErrorSquared/pow(QC2,2.)+pow(gQC2,2.)*pow(QC2Error,2.)/pow(QC2,4.);
b92ea2b9 19533 if(errorSquared>0.)
19534 {
19535 fIntFlowDetectorBias->SetBinError(1,pow(errorSquared,0.5));
19536 }
19537 }
53884472 19538 } // end of if(TMath::Abs(QC2)>0.)
b92ea2b9 19539
19540 // Calculating generalized QC{4}:
19541 // Generalized QC{4}:
19542 Double_t gQC4 = four-2.*pow(two,2.)
19543 - 4.*c1*c3+4.*s1*s3-pow(c2,2.)-pow(s2,2.)
19544 + 4.*c2*(pow(c1,2.)-pow(s1,2.))+8.*s2*s1*c1
19545 + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.);
19546 if(fApplyCorrectionForNUA){fIntFlowQcumulants->SetBinContent(2,gQC4);}
19547 // Statistical error of generalized QC{4}:
19548 Double_t gQC4ErrorSquared = 16.*pow(a1,2.)*pow(twoError,2.)+pow(fourError,2.)+16.*pow(a2,2.)*pow(c1Error,2.)
19549 + 4.*pow(a3,2.)*pow(c2Error,2.)+16.*pow(c1,2.)*pow(c3Error,2.)
19550 + 16.*pow(a4,2.)*pow(s1Error,2.)+4.*pow(a5,2.)*pow(s2Error,2.)
19551 + 16.*pow(s1,2.)*pow(s3Error,2.)+8.*a1*wCov4-32.*a1*a2*wCov1
19552 - 16.*a3*a1*wCov5-32.*c1*a1*wCov6-32.*a1*a4*wCov2+16.*a5*a1*wCov7
19553 + 32.*s1*a1*wCov8-8.*a2*wCov9-4.*a3*wCov10-8.*c1*wCov11-8.*a4*wCov12
19554 + 4.*a5*wCov13+8.*s1*wCov14+16.*a3*a2*wCov15+32.*c1*a2*wCov16+32.*a2*a4*wCov3
19555 - 16.*a5*a2*wCov17-32.*s1*a2*wCov18+16.*c1*a3*wCov19+16.*a3*a4*wCov20
19556 - 8.*a3*a5*wCov21-16.*s1*a3*wCov22+32.*c1*a4*wCov23-16.*c1*a5*wCov24
19557 - 32.*c1*s1*wCov25-16.*a5*a4*wCov26-32.*s1*a4*wCov27+16.*s1*a5*wCov28;
19558 // Store ratio of error squared - with/without NUA terms:
19559 Double_t ratioErrorSquaredQC4 = 0.;
19560 if(fIntFlowQcumulants->GetBinError(2)>0.)
19561 {
19562 ratioErrorSquaredQC4 = (gQC4ErrorSquared/pow(fIntFlowQcumulants->GetBinError(2),2.));
19563 fIntFlowQcumulantsErrorSquaredRatio->SetBinContent(2,ratioErrorSquaredQC4);
19564 }
b77b6434 19565 if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19566 {
19567 if(gQC4ErrorSquared>=0.)
19568 {
19569 fIntFlowQcumulants->SetBinError(2,pow(gQC4ErrorSquared,0.5));
19570 } else
19571 {
19572 fIntFlowQcumulants->SetBinError(2,0.);
19573 cout<<endl;
19574 cout<<" WARNING (QC): Statistical error of generalized QC{4} is imaginary !!!!"<<endl;
19575 cout<<endl;
19576 }
b77b6434 19577 } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19578 // Quantify detector bias to QC{4}:
53884472 19579 if(TMath::Abs(QC4)>0.)
b92ea2b9 19580 {
53884472 19581 fIntFlowDetectorBias->SetBinContent(2,gQC4/QC4);
19582 if(QC4Error>0.)
b92ea2b9 19583 {
53884472 19584 Double_t errorSquared = gQC4ErrorSquared/pow(QC4,2.)+pow(gQC4,2.)*pow(QC4Error,2.)/pow(QC4,4.);
b92ea2b9 19585 if(errorSquared>0.)
19586 {
19587 fIntFlowDetectorBias->SetBinError(2,pow(errorSquared,0.5));
19588 }
19589 }
53884472 19590 } // end of if(TMath::Abs(QC4)>0.)
489d5531 19591
b92ea2b9 19592
19593 // .... to be improved (continued for 6th and 8th order) ....
19594
19595
2001bc3a 19596 // versus multiplicity:
b77b6434 19597 if(fCalculateCumulantsVsM) // to be improved - propagate error for nua terms vs M
2001bc3a 19598 {
19599 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
b77b6434 19600 Double_t value[4] = {0.}; // QCs vs M
19601 Double_t error[4] = {0.}; // error of QCs vs M
19602 Double_t dSum1[4] = {0.}; // sum value_i/(error_i)^2
19603 Double_t dSum2[4] = {0.}; // sum 1/(error_i)^2
2001bc3a 19604 for(Int_t b=1;b<=nBins;b++)
19605 {
b92ea2b9 19606 // Measured correlations:
2001bc3a 19607 two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>> vs M
19608 four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>> vs M
b92ea2b9 19609 // Isotropic cumulants:
53884472 19610 QC2 = two;
19611 QC4 = four-2.*pow(two,2.);
b92ea2b9 19612 // Non-isotropic terms:
19613 c1 = fIntFlowCorrectionTermsForNUAVsMPro[1][0]->GetBinContent(b); // <<cos(n*phi1)>>
19614 c2 = fIntFlowCorrectionTermsForNUAVsMPro[1][1]->GetBinContent(b); // <<cos(n*(phi1+phi2))>>
19615 c3 = fIntFlowCorrectionTermsForNUAVsMPro[1][2]->GetBinContent(b); // <<cos(n*(phi1-phi2-phi3))>>
19616 s1 = fIntFlowCorrectionTermsForNUAVsMPro[0][0]->GetBinContent(b); // <<sin(n*phi1)>>
19617 s2 = fIntFlowCorrectionTermsForNUAVsMPro[0][1]->GetBinContent(b); // <<sin(n*(phi1+phi2))>>
19618 s3 = fIntFlowCorrectionTermsForNUAVsMPro[0][2]->GetBinContent(b); // <<sin(n*(phi1-phi2-phi3))>>
19619 // Generalized QC{2} vs M:
19620 gQC2 = two - pow(c1,2.) - pow(s1,2.);
b77b6434 19621 if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[0]->SetBinContent(b,gQC2);}
b92ea2b9 19622 // Generalized QC{4} vs M:
19623 gQC4 = four-2.*pow(two,2.)
19624 - 4.*c1*c3+4.*s1*s3-pow(c2,2.)-pow(s2,2.)
19625 + 4.*c2*(pow(c1,2.)-pow(s1,2.))+8.*s2*s1*c1
19626 + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.);
b77b6434 19627 if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[1]->SetBinContent(b,gQC4);}
b92ea2b9 19628 // Detector bias vs M:
53884472 19629 if(TMath::Abs(QC2)>0.)
b92ea2b9 19630 {
53884472 19631 fIntFlowDetectorBiasVsM[0]->SetBinContent(b,gQC2/QC2);
19632 } // end of if(TMath::Abs(QC2)>0.)
19633 if(TMath::Abs(QC4)>0.)
b92ea2b9 19634 {
53884472 19635 fIntFlowDetectorBiasVsM[1]->SetBinContent(b,gQC4/QC4);
19636 } // end of if(TMath::Abs(QC4)>0.)
b77b6434 19637 // Rebin in M:
19638 for(Int_t co=0;co<4;co++)
19639 {
19640 value[co] = fIntFlowQcumulantsVsM[co]->GetBinContent(b);
19641 error[co] = fIntFlowQcumulantsVsM[co]->GetBinError(b);
19642 if(error[co]>0.)
19643 {
19644 dSum1[co]+=value[co]/(error[co]*error[co]);
19645 dSum2[co]+=1./(error[co]*error[co]);
19646 }
19647 } // end of for(Int_t co=0;co<4;co++)
19648 } // end of for(Int_t b=1;b<=nBins;b++)
19649 // Store rebinned Q-cumulants:
19650 if(fApplyCorrectionForNUAVsM)
19651 {
19652 for(Int_t co=0;co<4;co++)
19653 {
19654 if(dSum2[co]>0.)
19655 {
19656 fIntFlowQcumulantsRebinnedInM->SetBinContent(co+1,dSum1[co]/dSum2[co]);
19657 fIntFlowQcumulantsRebinnedInM->SetBinError(co+1,pow(1./dSum2[co],0.5));
19658 }
19659 } // end of for(Int_t co=0;co<4;co++)
19660 } // end of if(fApplyCorrectionForNUAVsM)
19661 } // end of if(fCalculateCumulantsVsM)
2001bc3a 19662
489d5531 19663} // end of void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow()
0328db2d 19664
e1d101a6 19665//=======================================================================================================================
489d5531 19666
489d5531 19667void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUAIntFlow()
19668{
0328db2d 19669 // From profile fIntFlowCorrectionTermsForNUAPro[sc] access measured correction terms for NUA
489d5531 19670 // and their spread, correctly calculate the statistical errors and store the final
0328db2d 19671 // results and statistical errors for correction terms for NUA in histogram fIntFlowCorrectionTermsForNUAHist[sc].
489d5531 19672 //
19673 // Remark: Statistical error of correction temrs is calculated as:
19674 //
19675 // statistical error = termA * spread * termB:
19676 // termA = sqrt{sum_{i=1}^{N} w^2}/(sum_{i=1}^{N} w)
19677 // termB = 1/sqrt(1-termA^2)
19678
b92ea2b9 19679 TString sinCosFlag[2] = {"sin","cos"}; // to be improved - promore this to data member?
19680 TString nonisotropicTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
19681
489d5531 19682 for(Int_t sc=0;sc<2;sc++) // sin or cos correction terms
19683 {
b92ea2b9 19684 for(Int_t ci=1;ci<=4;ci++) // correction term index (to be improved - hardwired 4)
489d5531 19685 {
19686 Double_t correction = fIntFlowCorrectionTermsForNUAPro[sc]->GetBinContent(ci);
0328db2d 19687 Double_t spread = fIntFlowCorrectionTermsForNUAPro[sc]->GetBinError(ci);
19688 Double_t sumOfLinearEventWeights = fIntFlowSumOfEventWeightsNUA[sc][0]->GetBinContent(ci);
19689 Double_t sumOfQuadraticEventWeights = fIntFlowSumOfEventWeightsNUA[sc][1]->GetBinContent(ci);
19690 Double_t termA = 0.;
19691 Double_t termB = 0.;
b92ea2b9 19692 if(TMath::Abs(sumOfLinearEventWeights)>1.e-44)
0328db2d 19693 {
19694 termA = pow(sumOfQuadraticEventWeights,0.5)/sumOfLinearEventWeights;
19695 } else
19696 {
b92ea2b9 19697 cout<<" WARNING (QC): sumOfLinearEventWeights == 0 in AFAWQC::FCTFNIF() !!!!"<<endl;
19698 cout<<Form(" (for <<%s[%s]>> non-isotropic term)",sinCosFlag[sc].Data(),nonisotropicTermFlag[ci-1].Data())<<endl;
0328db2d 19699 }
489d5531 19700 if(1.-pow(termA,2.) > 0.)
19701 {
19702 termB = 1./pow(1-pow(termA,2.),0.5);
19703 } else
19704 {
b92ea2b9 19705 cout<<" WARNING (QC): 1.-pow(termA,2.) <= 0 in AFAWQC::FCTFNIF() !!!!"<<endl;
19706 cout<<Form(" (for <<%s[%s]>> non-isotropic term)",sinCosFlag[sc].Data(),nonisotropicTermFlag[ci-1].Data())<<endl;
489d5531 19707 }
19708 Double_t statisticalError = termA * spread * termB;
489d5531 19709 fIntFlowCorrectionTermsForNUAHist[sc]->SetBinContent(ci,correction);
0328db2d 19710 fIntFlowCorrectionTermsForNUAHist[sc]->SetBinError(ci,statisticalError);
b92ea2b9 19711 } // end of for(Int_t ci=1;ci<=4;ci++) // correction term index
489d5531 19712 } // end of for(Int sc=0;sc<2;sc++) // sin or cos correction terms
19713
19714} // end of void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUAIntFlow()
19715
e1d101a6 19716//=======================================================================================================================
489d5531 19717
489d5531 19718void AliFlowAnalysisWithQCumulants::GetPointersForNestedLoopsHistograms()
19719{
19720 // Get pointers to all objects relevant for calculations with nested loops.
19721
19722 TList *nestedLoopsList = dynamic_cast<TList*>(fHistList->FindObject("Nested Loops"));
19723 if(nestedLoopsList)
19724 {
19725 this->SetNestedLoopsList(nestedLoopsList);
19726 } else
19727 {
19728 cout<<"WARNING: nestedLoopsList is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19729 exit(0);
19730 }
19731
19732 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
19733 TString typeFlag[2] = {"RP","POI"}; // to be improved (should I promote this to data members?)
19734 TString ptEtaFlag[2] = {"p_{T}","#eta"}; // to be improved (should I promote this to data members?)
19735 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"}; // to be improved (should I promote this to data members?)
19736
19737 TString evaluateNestedLoopsName = "fEvaluateNestedLoops";
19738 evaluateNestedLoopsName += fAnalysisLabel->Data();
19739 TProfile *evaluateNestedLoops = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(evaluateNestedLoopsName.Data()));
19740 Bool_t bEvaluateIntFlowNestedLoops = kFALSE;
19741 Bool_t bEvaluateDiffFlowNestedLoops = kFALSE;
19742 if(evaluateNestedLoops)
19743 {
19744 this->SetEvaluateNestedLoops(evaluateNestedLoops);
19745 bEvaluateIntFlowNestedLoops = (Int_t)evaluateNestedLoops->GetBinContent(1);
19746 bEvaluateDiffFlowNestedLoops = (Int_t)evaluateNestedLoops->GetBinContent(2);
19747 }
19748 // nested loops relevant for integrated flow:
19749 if(bEvaluateIntFlowNestedLoops)
19750 {
19751 // correlations:
19752 TString intFlowDirectCorrelationsName = "fIntFlowDirectCorrelations";
19753 intFlowDirectCorrelationsName += fAnalysisLabel->Data();
19754 TProfile *intFlowDirectCorrelations = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(intFlowDirectCorrelationsName.Data()));
19755 if(intFlowDirectCorrelations)
19756 {
19757 this->SetIntFlowDirectCorrelations(intFlowDirectCorrelations);
19758 } else
19759 {
19760 cout<<"WARNING: intFlowDirectCorrelations is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19761 exit(0);
19762 }
403e3389 19763 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 19764 {
19765 TString intFlowExtraDirectCorrelationsName = "fIntFlowExtraDirectCorrelations";
19766 intFlowExtraDirectCorrelationsName += fAnalysisLabel->Data();
19767 TProfile *intFlowExtraDirectCorrelations = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(intFlowExtraDirectCorrelationsName.Data()));
19768 if(intFlowExtraDirectCorrelations)
19769 {
19770 this->SetIntFlowExtraDirectCorrelations(intFlowExtraDirectCorrelations);
19771 } else
19772 {
19773 cout<<"WARNING: intFlowExtraDirectCorrelations is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19774 exit(0);
19775 }
403e3389 19776 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 19777 // correction terms for non-uniform acceptance:
19778 TString intFlowDirectCorrectionTermsForNUAName = "fIntFlowDirectCorrectionTermsForNUA";
19779 intFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
19780 TProfile *intFlowDirectCorrectionTermsForNUA[2] = {NULL};
19781 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
19782 {
19783 intFlowDirectCorrectionTermsForNUA[sc] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s: %s terms",intFlowDirectCorrectionTermsForNUAName.Data(),sinCosFlag[sc].Data())));
19784 if(intFlowDirectCorrectionTermsForNUA[sc])
19785 {
19786 this->SetIntFlowDirectCorrectionTermsForNUA(intFlowDirectCorrectionTermsForNUA[sc],sc);
19787 } else
19788 {
19789 cout<<"WARNING: intFlowDirectCorrectionTermsForNUA[sc] is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19790 cout<<"sc = "<<sc<<endl;
19791 exit(0);
19792 }
19793 } // end of for(Int_t sc=0;sc<2;sc++)
e1d101a6 19794 // Mixed harmonics:
19795 if(fCalculateMixedHarmonics)
19796 {
19797 TString mixedHarmonicsNestedLoopsName = "fMixedHarmonicsNestedLoops";
19798 mixedHarmonicsNestedLoopsName += fAnalysisLabel->Data();
19799 TProfile *mixedHarmonicsNestedLoops = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(mixedHarmonicsNestedLoopsName.Data()));
19800 if(mixedHarmonicsNestedLoops)
19801 {
19802 this->SetMixedHarmonicsNestedLoops(mixedHarmonicsNestedLoops);
19803 } else
19804 {
19805 cout<<"WARNING: mixedHarmonicsNestedLoops is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19806 exit(0);
19807 }
19808 } // end of if(fCalculateMixedHarmonics)
489d5531 19809 } // end of if(bEvaluateIntFlowNestedLoops)
19810
19811 // nested loops relevant for differential flow:
19812 if(bEvaluateDiffFlowNestedLoops)
19813 {
19814 // correlations:
19815 TString diffFlowDirectCorrelationsName = "fDiffFlowDirectCorrelations";
19816 diffFlowDirectCorrelationsName += fAnalysisLabel->Data();
19817 TProfile *diffFlowDirectCorrelations[2][2][4] = {{{NULL}}};
19818 for(Int_t t=0;t<2;t++)
19819 {
19820 for(Int_t pe=0;pe<2;pe++)
19821 {
19822 for(Int_t ci=0;ci<4;ci++) // correlation index
19823 {
19824 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())));
19825 if(diffFlowDirectCorrelations[t][pe][ci])
19826 {
19827 this->SetDiffFlowDirectCorrelations(diffFlowDirectCorrelations[t][pe][ci],t,pe,ci);
19828 } else
19829 {
19830 cout<<"WARNING: diffFlowDirectCorrelations[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19831 cout<<"t = "<<t<<endl;
19832 cout<<"pe = "<<pe<<endl;
19833 cout<<"ci = "<<ci<<endl;
19834 }
19835 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
19836 } // end of for(Int_t pe=0;pe<2;pe++)
19837 } // end of for(Int_t t=0;t<2;t++)
19838 // correction terms for non-uniform acceptance:
19839 TString diffFlowDirectCorrectionTermsForNUAName = "fDiffFlowDirectCorrectionTermsForNUA";
19840 diffFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
19841 TProfile *diffFlowDirectCorrectionTermsForNUA[2][2][2][10] = {{{{NULL}}}};
19842 for(Int_t t=0;t<2;t++)
19843 {
19844 for(Int_t pe=0;pe<2;pe++)
19845 {
19846 // correction terms for NUA:
19847 for(Int_t sc=0;sc<2;sc++) // sin or cos
19848 {
19849 for(Int_t cti=0;cti<9;cti++) // correction term index
19850 {
19851 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)));
19852 if(diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti])
19853 {
19854 this->SetDiffFlowDirectCorrectionTermsForNUA(diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti],t,pe,sc,cti);
19855 } else
19856 {
19857 cout<<"WARNING: diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19858 cout<<"t = "<<t<<endl;
19859 cout<<"pe = "<<pe<<endl;
19860 cout<<"sc = "<<sc<<endl;
19861 cout<<"cti = "<<cti<<endl;
19862 }
19863 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
19864 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
19865 } // end of for(Int_t pe=0;pe<2;pe++)
19866 } // end of for(Int_t t=0;t<2;t++)
64e500e3 19867 // other differential correlators:
19868 TString otherDirectDiffCorrelatorsName = "fOtherDirectDiffCorrelators";
19869 otherDirectDiffCorrelatorsName += fAnalysisLabel->Data();
19870 TProfile *otherDirectDiffCorrelators[2][2][2][1] = {{{{NULL}}}};
19871 for(Int_t t=0;t<2;t++)
19872 {
e1d101a6 19873 for(Int_t pe=0;pe<2;pe++)
19874 {
19875 // correction terms for NUA:
19876 for(Int_t sc=0;sc<2;sc++) // sin or cos
19877 {
19878 for(Int_t ci=0;ci<1;ci++) // correlator index
19879 {
19880 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)));
19881 if(otherDirectDiffCorrelators[t][pe][sc][ci])
19882 {
19883 this->SetOtherDirectDiffCorrelators(otherDirectDiffCorrelators[t][pe][sc][ci],t,pe,sc,ci);
19884 } else
19885 {
19886 cout<<"WARNING: otherDirectDiffCorrelators[t][pe][sc][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19887 cout<<"t = "<<t<<endl;
19888 cout<<"pe = "<<pe<<endl;
19889 cout<<"sc = "<<sc<<endl;
19890 cout<<"ci = "<<ci<<endl;
19891 }
19892 } // end of for(Int_t ci=0;ci<9;ci++) // correction term index
19893 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
19894 } // end of for(Int_t pe=0;pe<2;pe++)
19895 } // end of for(Int_t t=0;t<2;t++)
19896 // number of RPs and POIs in selected pt and eta bins for cross-checkings:
19897 TString noOfParticlesInBinName = "fNoOfParticlesInBin";
19898 TH1D *noOfParticlesInBin = NULL;
19899 noOfParticlesInBin = dynamic_cast<TH1D*>(nestedLoopsList->FindObject(noOfParticlesInBinName.Data()));
19900 if(noOfParticlesInBin)
19901 {
19902 this->SetNoOfParticlesInBin(noOfParticlesInBin);
19903 } else
19904 {
19905 cout<<endl;
19906 cout<<" WARNING (QC): noOfParticlesInBin is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19907 cout<<endl;
19908 }
19909 } // end of if(bEvaluateDiffFlowNestedLoops)
19910
19911} // end of void AliFlowAnalysisWithQCumulants::GetPointersForNestedLoopsHistograms()
19912
19913//=======================================================================================================================
19914
19915void AliFlowAnalysisWithQCumulants::GetPointersForMixedHarmonicsHistograms()
19916{
19917 // Get pointers to all objects relevant for mixed harmonics.
19918
19919 // a) Get pointer to base list for mixed harmonics;
19920 // b) Get pointer to TProfile fMixedHarmonicsFlags holding all flags for mixed harmonics;
19921 // c) Get pointer to list fMixedHarmonicsProfiles and pointers to all objects that she holds;
c10259fb 19922 // d) Get pointer to list fMixedHarmonicsResults and pointers to all objects that she holds;
19923 // e) Get pointer to list fMixedHarmonicsErrorPropagation and pointers to all objects that she holds.
e1d101a6 19924
19925 // a) Get pointer to base list for mixed harmonics:
19926 TList *mixedHarmonicsList = dynamic_cast<TList*>(fHistList->FindObject("Mixed Harmonics"));
19927 if(mixedHarmonicsList)
19928 {
19929 this->SetMixedHarmonicsList(mixedHarmonicsList);
19930 } else
19931 {
19932 cout<<"WARNING: mixedHarmonicsList is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19933 exit(0);
19934 }
19935
19936 // b) Get pointer to TProfile fMixedHarmonicsFlags holding all flags for mixed harmonics:
19937 TString mixedHarmonicsFlagsName = "fMixedHarmonicsFlags";
19938 mixedHarmonicsFlagsName += fAnalysisLabel->Data();
19939 TProfile *mixedHarmonicsFlags = dynamic_cast<TProfile*>
19940 (mixedHarmonicsList->FindObject(mixedHarmonicsFlagsName.Data()));
19941 if(mixedHarmonicsFlags)
19942 {
19943 this->SetMixedHarmonicsFlags(mixedHarmonicsFlags);
19944 fCalculateMixedHarmonics = (Bool_t)mixedHarmonicsFlags->GetBinContent(1);
19945 fCalculateMixedHarmonicsVsM = (Bool_t)mixedHarmonicsFlags->GetBinContent(3);
19946 } else
19947 {
19948 cout<<"WARNING: mixedHarmonicsFlags is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19949 exit(0);
19950 }
19951
19952 if(!fCalculateMixedHarmonics){return;}
19953
19954 // c) Get pointer to list fMixedHarmonicsProfiles and pointers to all objects that she holds:
19955 TList *mixedHarmonicsProfiles = NULL;
19956 mixedHarmonicsProfiles = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Profiles"));
19957 if(mixedHarmonicsProfiles)
19958 {
19959 // 2p:
19960 TString s2pCorrelationsName = "f2pCorrelations";
19961 s2pCorrelationsName += fAnalysisLabel->Data();
19962 TProfile *p2pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s2pCorrelationsName.Data()));
19963 if(p2pCorrelations)
19964 {
19965 this->Set2pCorrelations(p2pCorrelations);
19966 } else
19967 {
19968 cout<<"WARNING: p2pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19969 exit(0);
19970 }
19971 // 3p:
19972 TString s3pCorrelationsName = "f3pCorrelations";
19973 s3pCorrelationsName += fAnalysisLabel->Data();
19974 TProfile *p3pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s3pCorrelationsName.Data()));
19975 if(p3pCorrelations)
19976 {
19977 this->Set3pCorrelations(p3pCorrelations);
19978 } else
19979 {
19980 cout<<"WARNING: p3pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19981 exit(0);
19982 }
19983 // 4p:
19984 TString s4pCorrelationsName = "f4pCorrelations";
19985 s4pCorrelationsName += fAnalysisLabel->Data();
19986 TProfile *p4pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s4pCorrelationsName.Data()));
19987 if(p4pCorrelations)
19988 {
19989 this->Set4pCorrelations(p4pCorrelations);
19990 } else
19991 {
19992 cout<<"WARNING: p4pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19993 exit(0);
19994 }
19995 // 5p:
19996 TString s5pCorrelationsName = "f5pCorrelations";
19997 s5pCorrelationsName += fAnalysisLabel->Data();
19998 TProfile *p5pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s5pCorrelationsName.Data()));
19999 if(p5pCorrelations)
20000 {
20001 this->Set5pCorrelations(p5pCorrelations);
20002 } else
20003 {
20004 cout<<"WARNING: p5pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20005 exit(0);
20006 }
20007 /* TBI not needed for the time being
20008 // 6p:
20009 TString s6pCorrelationsName = "f6pCorrelations";
20010 s6pCorrelationsName += fAnalysisLabel->Data();
20011 TProfile *p6pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s6pCorrelationsName.Data()));
20012 if(p6pCorrelations)
20013 {
20014 this->Set6pCorrelations(p6pCorrelations);
20015 } else
20016 {
20017 cout<<"WARNING: p6pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20018 exit(0);
20019 }
20020 // 7p:
20021 TString s7pCorrelationsName = "f7pCorrelations";
20022 s7pCorrelationsName += fAnalysisLabel->Data();
20023 TProfile *p7pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s7pCorrelationsName.Data()));
20024 if(p7pCorrelations)
20025 {
20026 this->Set7pCorrelations(p7pCorrelations);
20027 } else
20028 {
20029 cout<<"WARNING: p7pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20030 exit(0);
20031 }
20032 // 8p:
20033 TString s8pCorrelationsName = "f8pCorrelations";
20034 s8pCorrelationsName += fAnalysisLabel->Data();
20035 TProfile *p8pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s8pCorrelationsName.Data()));
20036 if(p8pCorrelations)
20037 {
20038 this->Set8pCorrelations(p8pCorrelations);
20039 } else
20040 {
20041 cout<<"WARNING: p8pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20042 exit(0);
20043 }
20044 */
20045 } else // to if(mixedHarmonicsProfiles)
20046 {
20047 cout<<"WARNING: mixedHarmonicsProfiles is NULL in FAWQC::GPFMHH() !!!!"<<endl;
20048 exit(0);
20049 }
20050
20051 // d) Get pointer to list fMixedHarmonicsResults and pointers to all objects that she holds.
20052 TList *mixedHarmonicsResults = NULL;
20053 mixedHarmonicsResults = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Results"));
20054 if(mixedHarmonicsResults)
20055 {
20056 // 2p:
20057 TString s2pCumulantsName = "f2pCumulants";
20058 s2pCumulantsName += fAnalysisLabel->Data();
20059 TH1D *p2pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s2pCumulantsName.Data()));
20060 if(p2pCumulants)
20061 {
20062 this->Set2pCumulants(p2pCumulants);
20063 } else
64e500e3 20064 {
e1d101a6 20065 cout<<"WARNING: p2pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20066 exit(0);
20067 }
20068 // 3p:
20069 TString s3pCumulantsName = "f3pCumulants";
20070 s3pCumulantsName += fAnalysisLabel->Data();
20071 TH1D *p3pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s3pCumulantsName.Data()));
20072 if(p3pCumulants)
20073 {
20074 this->Set3pCumulants(p3pCumulants);
20075 } else
20076 {
20077 cout<<"WARNING: p3pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20078 exit(0);
20079 }
20080 // 4p:
20081 TString s4pCumulantsName = "f4pCumulants";
20082 s4pCumulantsName += fAnalysisLabel->Data();
20083 TH1D *p4pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s4pCumulantsName.Data()));
20084 if(p4pCumulants)
20085 {
20086 this->Set4pCumulants(p4pCumulants);
20087 } else
20088 {
20089 cout<<"WARNING: p4pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20090 exit(0);
20091 }
20092 // 5p:
20093 TString s5pCumulantsName = "f5pCumulants";
20094 s5pCumulantsName += fAnalysisLabel->Data();
20095 TH1D *p5pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s5pCumulantsName.Data()));
20096 if(p5pCumulants)
20097 {
20098 this->Set5pCumulants(p5pCumulants);
20099 } else
20100 {
20101 cout<<"WARNING: p5pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20102 exit(0);
20103 }
20104 } else // to if(mixedHarmonicsResults)
489d5531 20105 {
e1d101a6 20106 cout<<"WARNING: mixedHarmonicsResults is NULL in FAWQC::GPFMHH() !!!!"<<endl;
20107 }
489d5531 20108
c10259fb 20109 // e) Get pointer to list fMixedHarmonicsErrorPropagation and pointers to all objects that she holds:
20110 TList *mixedHarmonicsErrorPropagation = NULL;
20111 mixedHarmonicsErrorPropagation = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Error Propagation"));
20112 if(mixedHarmonicsErrorPropagation)
20113 {
20114 TString sMixedHarmonicEventWeightsName = "fMixedHarmonicEventWeights";
20115 sMixedHarmonicEventWeightsName += fAnalysisLabel->Data();
20116 TString powerFlag[2] = {"linear","quadratic"};
20117 for(Int_t power=0;power<2;power++)
20118 {
20119 TH1D *hMixedHarmonicEventWeights = dynamic_cast<TH1D*>(mixedHarmonicsErrorPropagation->FindObject(Form("%s: %s",sMixedHarmonicEventWeightsName.Data(),powerFlag[power].Data())));
20120 if(hMixedHarmonicEventWeights)
20121 {
20122 this->SetMixedHarmonicEventWeights(hMixedHarmonicEventWeights,power);
20123 } else
20124 {
20125 cout<<"WARNING: hMixedHarmonicEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
20126 cout<<"power = "<<power<<endl;
20127 exit(0);
20128 }
20129 } // end of for(Int_t power=0;power<2;power++)
20130 TString sMixedHarmonicProductOfEventWeightsName = "fMixedHarmonicProductOfEventWeights";
20131 sMixedHarmonicProductOfEventWeightsName += fAnalysisLabel->Data();
20132 TH2D *hMixedHarmonicProductOfEventWeights = dynamic_cast<TH2D*>(mixedHarmonicsErrorPropagation->FindObject(sMixedHarmonicProductOfEventWeightsName.Data()));
20133 if(hMixedHarmonicProductOfEventWeights)
20134 {
20135 this->SetMixedHarmonicProductOfEventWeights(hMixedHarmonicProductOfEventWeights);
20136 } else
20137 {
20138 cout<<"WARNING: hMixedHarmonicProductOfEventWeights is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20139 exit(0);
20140 }
20141 TString sMixedHarmonicProductOfCorrelationsName = "fMixedHarmonicProductOfCorrelations";
20142 sMixedHarmonicProductOfCorrelationsName += fAnalysisLabel->Data();
20143 TProfile2D *hMixedHarmonicProductOfCorrelations = dynamic_cast<TProfile2D*>(mixedHarmonicsErrorPropagation->FindObject(sMixedHarmonicProductOfCorrelationsName.Data()));
20144 if(hMixedHarmonicProductOfCorrelations)
20145 {
20146 this->SetMixedHarmonicProductOfCorrelations(hMixedHarmonicProductOfCorrelations);
20147 } else
20148 {
20149 cout<<"WARNING: hMixedHarmonicProductOfCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20150 exit(0);
20151 }
20152 } // end of if(mixedHarmonicsErrorPropagation)
20153
e1d101a6 20154} // end of void AliFlowAnalysisWithQCumulants::GetPointersForMixedHarmonicsHistograms()
489d5531 20155
e1d101a6 20156//=======================================================================================================================
489d5531 20157
1db7eced 20158void AliFlowAnalysisWithQCumulants::GetPointersForControlHistograms()
20159{
20160 // Get pointers to all control histograms.
20161
20162 // a) Get pointer to base list for control histograms;
20163 // b) Get pointer to TProfile fControlHistogramsFlags holding all flags for control histograms;
20164 // c) Get pointers to TH2D *fCorrelation2468VsMult[4], TH2D *fCorrelationProduct2468VsMult[1] and TH2D *fQvectorTermsVsMult[4].
20165
20166 // a) Get pointer to base list for control histograms:
20167 TList *controlHistogramsList = dynamic_cast<TList*>(fHistList->FindObject("Control Histograms"));
20168 if(controlHistogramsList)
20169 {
20170 this->SetControlHistogramsList(controlHistogramsList);
20171 } else
20172 {
20173 cout<<"WARNING: controlHistogramsList is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20174 exit(0);
20175 }
20176
20177 // b) Get pointer to TProfile fControlHistogramsFlags holding all flags for control histograms:
20178 TString controlHistogramsFlagsName = "fControlHistogramsFlags";
20179 controlHistogramsFlagsName += fAnalysisLabel->Data();
20180 TProfile *controlHistogramsFlags = dynamic_cast<TProfile*>
20181 (controlHistogramsList->FindObject(controlHistogramsFlagsName.Data()));
20182 if(controlHistogramsFlags)
20183 {
20184 this->SetControlHistogramsFlags(controlHistogramsFlags);
20185 fStoreControlHistograms = (Bool_t)controlHistogramsFlags->GetBinContent(1);
20186 fUseQvectorTerms = (Bool_t)controlHistogramsFlags->GetBinContent(2);
20187 } else
20188 {
20189 cout<<"WARNING: controlHistogramsFlags is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
20190 exit(0);
20191 }
20192
20193 if(!fStoreControlHistograms){return;}
20194
20195 // c) Get pointers to TH2D *fCorrelation2468VsMult[4], TH2D *fCorrelationProduct2468VsMult[1] and TH2D *fQvectorTermsVsMult[4]:
20196 TString sCorrelation[4] = {"#LT2#GT","#LT4#GT","#LT6#GT","#LT8#GT"};
20197 TString sCorrelation2468VsMultName = "fCorrelation2468VsMult";
20198 sCorrelation2468VsMultName += fAnalysisLabel->Data();
20199 for(Int_t ci=0;ci<4;ci++)
20200 {
20201 TH2D *hCorrelation2468VsMult = dynamic_cast<TH2D*>(controlHistogramsList->FindObject(Form("%s vs M",sCorrelation[ci].Data())));
20202 if(hCorrelation2468VsMult)
20203 {
20204 this->SetCorrelation2468VsMult(hCorrelation2468VsMult,ci);
20205 } else
20206 {
20207 cout<<"WARNING: hCorrelation2468VsMult is NULL in AFAWQC::GPFCH() !!!!"<<endl;
20208 cout<<"ci = "<<ci<<endl;
20209 exit(0);
20210 }
20211 } // end of for(Int_t ci=0;ci<4;ci++)
20212 TString sCorrelationProduct[1] = {"#LT2#GT#LT4#GT"}; // TBI: add the other ones when needed first time
20213 TString sCorrelationProduct2468VsMultName = "fCorrelationProduct2468VsMult";
20214 sCorrelationProduct2468VsMultName += fAnalysisLabel->Data();
20215 for(Int_t cpi=0;cpi<1;cpi++) // TBI: hardwired 1
20216 {
20217 TH2D *hCorrelationProduct2468VsMult = dynamic_cast<TH2D*>(controlHistogramsList->FindObject(Form("%s vs M",sCorrelationProduct[cpi].Data())));
20218 if(hCorrelationProduct2468VsMult)
20219 {
20220 this->SetCorrelationProduct2468VsMult(hCorrelationProduct2468VsMult,cpi);
20221 } else
20222 {
20223 cout<<"WARNING: hCorrelationProduct2468VsMult is NULL in AFAWQC::GPFCH() !!!!"<<endl;
20224 cout<<"cpi = "<<cpi<<endl;
20225 exit(0);
20226 }
20227 } // end of for(Int_t cpi=0;cpi<1;cpi++) // TBI: hardwired 1
20228
20229 if(!fUseQvectorTerms){return;}
20230 TString sQvectorTerms[4] = {"#frac{|Q_{n}|^{2}}{M}","#frac{|Q_{2n}|^{2}}{M}","#frac{|Q_{n}|^{4}}{M(2M-1)}","#frac{Re[Q_{2n}Q_{n}^{*}Q_{n}^{*}]}{M^{3/2}}"};
20231 TString sQvectorTermsVsMultName = "fQvectorTermsVsMult";
20232 sQvectorTermsVsMultName += fAnalysisLabel->Data();
20233 for(Int_t qwti=0;qwti<4;qwti++) // TBI: hardwired 4
20234 {
20235 TH2D *hQvectorTermsVsMult = dynamic_cast<TH2D*>(controlHistogramsList->FindObject(Form("%s vs M",sQvectorTerms[qwti].Data())));
20236 if(hQvectorTermsVsMult)
20237 {
20238 this->SetQvectorTermsVsMult(hQvectorTermsVsMult,qwti);
20239 } else
20240 {
20241 cout<<"WARNING: hQvectorTermsVsMult is NULL in AFAWQC::GPFCH() !!!!"<<endl;
20242 cout<<"qwti = "<<qwti<<endl;
20243 exit(0);
20244 }
20245 } // end of for(Int_t qwti=0;qwti<1;qwti++) // TBI: hardwired 4
20246
20247} // end of void AliFlowAnalysisWithQCumulants::GetPointersForControlHistograms()
20248
20249//=======================================================================================================================
20250
489d5531 20251void AliFlowAnalysisWithQCumulants::StoreHarmonic()
20252{
20253 // Store flow harmonic in common control histograms.
20254
20255 (fCommonHists->GetHarmonic())->Fill(0.5,fHarmonic);
dd442cd2 20256 if(fFillMultipleControlHistograms)
20257 {
20258 (fCommonHists2nd->GetHarmonic())->Fill(0.5,fHarmonic);
20259 (fCommonHists4th->GetHarmonic())->Fill(0.5,fHarmonic);
20260 (fCommonHists6th->GetHarmonic())->Fill(0.5,fHarmonic);
20261 (fCommonHists8th->GetHarmonic())->Fill(0.5,fHarmonic);
20262 }
20263
489d5531 20264} // end of void AliFlowAnalysisWithQCumulants::StoreHarmonic()
20265
e1d101a6 20266//=======================================================================================================================
489d5531 20267
489d5531 20268void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelationsUsingParticleWeights(TString type, TString ptOrEta) // type = RP or POI
20269{
20270 // Calculate all correlations needed for differential flow using particle weights.
20271
2a98ceb8 20272 Int_t t = 0; // type flag
20273 Int_t pe = 0; // ptEta flag
489d5531 20274
20275 if(type == "RP")
20276 {
20277 t = 0;
20278 } else if(type == "POI")
20279 {
20280 t = 1;
20281 }
20282
20283 if(ptOrEta == "Pt")
20284 {
20285 pe = 0;
20286 } else if(ptOrEta == "Eta")
20287 {
20288 pe = 1;
20289 }
20290
20291 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20292 Double_t minPtEta[2] = {fPtMin,fEtaMin};
20293 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20294 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20295
20296 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
20297 Double_t dReQ1n1k = (*fReQ)(0,1);
20298 Double_t dReQ2n2k = (*fReQ)(1,2);
20299 Double_t dReQ1n3k = (*fReQ)(0,3);
20300 //Double_t dReQ4n4k = (*fReQ)(3,4);
20301 Double_t dImQ1n1k = (*fImQ)(0,1);
20302 Double_t dImQ2n2k = (*fImQ)(1,2);
20303 Double_t dImQ1n3k = (*fImQ)(0,3);
20304 //Double_t dImQ4n4k = (*fImQ)(3,4);
20305
1268c371 20306 // S^M_{p,k} (see .h file for the definition of fSpk):
20307 Double_t dSM1p1k = (*fSpk)(0,1);
20308 Double_t dSM1p2k = (*fSpk)(0,2);
20309 Double_t dSM1p3k = (*fSpk)(0,3);
20310 Double_t dSM2p1k = (*fSpk)(1,1);
20311 Double_t dSM3p1k = (*fSpk)(2,1);
489d5531 20312
20313 // looping over all bins and calculating reduced correlations:
20314 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20315 {
20316 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular (pt,eta) bin):
20317 Double_t p1n0kRe = 0.;
20318 Double_t p1n0kIm = 0.;
20319
20320 // number of POIs in particular (pt,eta) bin):
20321 Double_t mp = 0.;
20322
20323 // real and imaginary parts of q_{m*n,k}:
20324 // (weighted Q-vector evaluated for particles which are both RPs and POIs in particular (pt,eta) bin)
20325 Double_t q1n2kRe = 0.;
20326 Double_t q1n2kIm = 0.;
20327 Double_t q2n1kRe = 0.;
20328 Double_t q2n1kIm = 0.;
20329
20330 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
20331 Double_t s1p1k = 0.;
20332 Double_t s1p2k = 0.;
20333 Double_t s1p3k = 0.;
20334
20335 // M0111 from Eq. (118) in QC2c (to be improved (notation))
20336 Double_t dM0111 = 0.;
20337
20338 if(type == "POI")
20339 {
20340 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20341 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20342 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20343 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20344
20345 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20346
20347 t = 1; // typeFlag = RP or POI
20348
20349 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
20350 q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
20351 * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
20352 q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
20353 * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
20354 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
20355 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
20356 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
20357 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
20358
20359 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
20360 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
20361 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
20362 s1p3k = pow(fs1dEBE[2][pe][3]->GetBinContent(b)*fs1dEBE[2][pe][3]->GetBinEntries(b),1.);
20363
20364 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
20365 dM0111 = mp*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
20366 - 3.*(s1p1k*(dSM2p1k-dSM1p2k)
20367 + 2.*(s1p3k-s1p2k*dSM1p1k));
20368 }
20369 else if(type == "RP")
20370 {
20371 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
20372 q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
20373 * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
20374 q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
20375 * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
20376 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
20377 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
20378 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
20379 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
20380
20381 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
20382 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
20383 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
20384 s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
20385
20386 // to be improved (cross-checked):
20387 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20388 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20389 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20390 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20391
20392 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20393
20394 t = 0; // typeFlag = RP or POI
20395
20396 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
20397 dM0111 = mp*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
20398 - 3.*(s1p1k*(dSM2p1k-dSM1p2k)
20399 + 2.*(s1p3k-s1p2k*dSM1p1k));
20400 //...............................................................................................
20401 }
20402
20403 // 2'-particle correlation:
20404 Double_t two1n1nW0W1 = 0.;
20405 if(mp*dSM1p1k-s1p1k)
20406 {
20407 two1n1nW0W1 = (p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k-s1p1k)
20408 / (mp*dSM1p1k-s1p1k);
20409
20410 // fill profile to get <<2'>>
b40a910e 20411 fDiffFlowCorrelationsPro[t][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nW0W1,mp*dSM1p1k-s1p1k);
20412 // fill profile to get <<2'>^2>
20413 fDiffFlowSquaredCorrelationsPro[t][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nW0W1*two1n1nW0W1,mp*dSM1p1k-s1p1k);
489d5531 20414 // histogram to store <2'> e-b-e (needed in some other methods):
20415 fDiffFlowCorrelationsEBE[t][pe][0]->SetBinContent(b,two1n1nW0W1);
20416 fDiffFlowEventWeightsForCorrelationsEBE[t][pe][0]->SetBinContent(b,mp*dSM1p1k-s1p1k);
20417 } // end of if(mp*dSM1p1k-s1p1k)
20418
20419 // 4'-particle correlation:
20420 Double_t four1n1n1n1nW0W1W1W1 = 0.;
20421 if(dM0111)
20422 {
20423 four1n1n1n1nW0W1W1W1 = ((pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*(p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k)
20424 - q2n1kRe*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))
20425 - 2.*q2n1kIm*dReQ1n1k*dImQ1n1k
20426 - p1n0kRe*(dReQ1n1k*dReQ2n2k+dImQ1n1k*dImQ2n2k)
20427 + p1n0kIm*(dImQ1n1k*dReQ2n2k-dReQ1n1k*dImQ2n2k)
20428 - 2.*dSM1p2k*(p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k)
20429 - 2.*(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*s1p1k
20430 + 6.*(q1n2kRe*dReQ1n1k+q1n2kIm*dImQ1n1k)
20431 + 1.*(q2n1kRe*dReQ2n2k+q2n1kIm*dImQ2n2k)
20432 + 2.*(p1n0kRe*dReQ1n3k+p1n0kIm*dImQ1n3k)
20433 + 2.*s1p1k*dSM1p2k
20434 - 6.*s1p3k)
20435 / dM0111; // to be improved (notation of dM0111)
20436
20437 // fill profile to get <<4'>>
b40a910e 20438 fDiffFlowCorrelationsPro[t][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nW0W1W1W1,dM0111);
20439 // fill profile to get <<4'>^2>
20440 fDiffFlowSquaredCorrelationsPro[t][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nW0W1W1W1*four1n1n1n1nW0W1W1W1,dM0111);
489d5531 20441 // histogram to store <4'> e-b-e (needed in some other methods):
20442 fDiffFlowCorrelationsEBE[t][pe][1]->SetBinContent(b,four1n1n1n1nW0W1W1W1);
20443 fDiffFlowEventWeightsForCorrelationsEBE[t][pe][1]->SetBinContent(b,dM0111);
20444 } // end of if(dM0111)
20445 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20446
20447} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelationsUsingParticleWeights(TString type, TString ptOrEta); // type = RP or POI
20448
e1d101a6 20449//=======================================================================================================================
489d5531 20450
489d5531 20451void AliFlowAnalysisWithQCumulants::FillCommonControlHistograms(AliFlowEventSimple *anEvent)
20452{
20453 // Fill common control histograms.
20454
df23c5ae 20455 Int_t nRP = anEvent->GetNumberOfRPs(); // number of Reference Particles
489d5531 20456 fCommonHists->FillControlHistograms(anEvent);
dd442cd2 20457 if(fFillMultipleControlHistograms)
489d5531 20458 {
dd442cd2 20459 if(nRP>1)
489d5531 20460 {
dd442cd2 20461 fCommonHists2nd->FillControlHistograms(anEvent);
20462 if(nRP>3)
489d5531 20463 {
dd442cd2 20464 fCommonHists4th->FillControlHistograms(anEvent);
20465 if(nRP>5)
489d5531 20466 {
dd442cd2 20467 fCommonHists6th->FillControlHistograms(anEvent);
20468 if(nRP>7)
20469 {
20470 fCommonHists8th->FillControlHistograms(anEvent);
20471 } // end of if(nRP>7)
20472 } // end of if(nRP>5)
20473 } // end of if(nRP>3)
20474 } // end of if(nRP>1)
20475 } // end of if(fFillMultipleControlHistograms)
489d5531 20476
20477} // end of void AliFlowAnalysisWithQCumulants::FillCommonControlHistograms(AliFlowEventSimple *anEvent)
20478
e1d101a6 20479//=======================================================================================================================
489d5531 20480
df23c5ae 20481void AliFlowAnalysisWithQCumulants::FillControlHistograms(AliFlowEventSimple *anEvent)
20482{
20483 // Fill common control histograms.
20484
20485 Int_t nRPs = anEvent->GetNumberOfRPs(); // number of Reference Particles
20486 Int_t nPOIs = anEvent->GetNumberOfPOIs(); // number of Particles Of Interest
20487 Int_t nRefMult = anEvent->GetReferenceMultiplicity(); // reference multiplicity for current event (TBI: This call is not really needed here, use fReferenceMultiplicityEBE instead)
20488
20489 fCorrelationNoRPsVsRefMult->Fill(nRPs,nRefMult);
20490 fCorrelationNoPOIsVsRefMult->Fill(nPOIs,nRefMult);
20491 fCorrelationNoRPsVsNoPOIs->Fill(nRPs,nPOIs);
20492
20493} // end of void AliFlowAnalysisWithQCumulants::FillControlHistograms(AliFlowEventSimple *anEvent)
20494
20495//=======================================================================================================================
20496
489d5531 20497void AliFlowAnalysisWithQCumulants::ResetEventByEventQuantities()
20498{
20499 // Reset all event by event quantities.
20500
1268c371 20501 // Reference flow:
489d5531 20502 fReQ->Zero();
20503 fImQ->Zero();
1268c371 20504 fSpk->Zero();
489d5531 20505 fIntFlowCorrelationsEBE->Reset();
20506 fIntFlowEventWeightsForCorrelationsEBE->Reset();
20507 fIntFlowCorrelationsAllEBE->Reset();
20508
b92ea2b9 20509 for(Int_t sc=0;sc<2;sc++)
489d5531 20510 {
b92ea2b9 20511 fIntFlowCorrectionTermsForNUAEBE[sc]->Reset();
20512 fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc]->Reset();
489d5531 20513 }
20514
1268c371 20515 // Differential flow:
20516 if(fCalculateDiffFlow)
489d5531 20517 {
1268c371 20518 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
489d5531 20519 {
62e36168 20520 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // 1D in pt or eta
489d5531 20521 {
1268c371 20522 for(Int_t m=0;m<4;m++) // multiple of harmonic
489d5531 20523 {
1268c371 20524 for(Int_t k=0;k<9;k++) // power of weight
20525 {
20526 if(fReRPQ1dEBE[t][pe][m][k]) fReRPQ1dEBE[t][pe][m][k]->Reset();
20527 if(fImRPQ1dEBE[t][pe][m][k]) fImRPQ1dEBE[t][pe][m][k]->Reset();
20528 }
20529 }
489d5531 20530 }
1268c371 20531 }
20532 for(Int_t t=0;t<3;t++) // type (0 = RP, 1 = POI, 2 = RP&&POI )
20533 {
62e36168 20534 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // 1D in pt or eta
489d5531 20535 {
1268c371 20536 for(Int_t k=0;k<9;k++)
20537 {
20538 if(fs1dEBE[t][pe][k]) fs1dEBE[t][pe][k]->Reset();
20539 }
489d5531 20540 }
20541 }
1268c371 20542 // e-b-e reduced correlations:
20543 for(Int_t t=0;t<2;t++) // type (0 = RP, 1 = POI)
20544 {
62e36168 20545 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 20546 {
1268c371 20547 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
20548 {
20549 if(fDiffFlowCorrelationsEBE[t][pe][rci]) fDiffFlowCorrelationsEBE[t][pe][rci]->Reset();
20550 if(fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci]) fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci]->Reset();
20551 }
489d5531 20552 }
1268c371 20553 }
20554 // correction terms for NUA:
20555 for(Int_t t=0;t<2;t++) // type (0 = RP, 1 = POI)
20556 {
62e36168 20557 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 20558 {
1268c371 20559 for(Int_t sc=0;sc<2;sc++) // sin or cos
489d5531 20560 {
1268c371 20561 for(Int_t cti=0;cti<9;cti++) // correction term index
20562 {
489d5531 20563 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti]->Reset();
1268c371 20564 }
489d5531 20565 }
1268c371 20566 }
20567 }
20568 } // end of if(fCalculateDiffFlow)
20569
489d5531 20570 // 2D (pt,eta)
1268c371 20571 if(fCalculate2DDiffFlow)
489d5531 20572 {
20573 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
20574 {
20575 for(Int_t m=0;m<4;m++) // multiple of harmonic
20576 {
20577 for(Int_t k=0;k<9;k++) // power of weight
20578 {
b77b6434 20579 if(fReRPQ2dEBE[t][m][k]){fReRPQ2dEBE[t][m][k]->Reset();}
20580 if(fImRPQ2dEBE[t][m][k]){fImRPQ2dEBE[t][m][k]->Reset();}
489d5531 20581 }
20582 }
20583 }
20584 for(Int_t t=0;t<3;t++) // type (0 = RP, 1 = POI, 2 = RP&&POI )
20585 {
20586 for(Int_t k=0;k<9;k++)
20587 {
b77b6434 20588 if(fs2dEBE[t][k]){fs2dEBE[t][k]->Reset();}
489d5531 20589 }
20590 }
1268c371 20591 } // end of if(fCalculate2DDiffFlow)
489d5531 20592
20593} // end of void AliFlowAnalysisWithQCumulants::ResetEventByEventQuantities();
20594
e1d101a6 20595//=======================================================================================================================
489d5531 20596
489d5531 20597void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTerms(TString type, TString ptOrEta)
20598{
20599 // Calculate correction terms for non-uniform acceptance for differential flow (sin terms).
20600
20601 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][0][cti], where cti runs as follows:
20602 // 0: <<sin n(psi1)>>
20603 // 1: <<sin n(psi1+phi2)>>
20604 // 2: <<sin n(psi1+phi2-phi3)>>
20605 // 3: <<sin n(psi1-phi2-phi3)>>:
20606 // 4:
20607 // 5:
20608 // 6:
20609
20610 // multiplicity:
1268c371 20611 Double_t dMult = (*fSpk)(0,0);
489d5531 20612
20613 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
20614 Double_t dReQ1n = (*fReQ)(0,0);
20615 Double_t dReQ2n = (*fReQ)(1,0);
20616 //Double_t dReQ3n = (*fReQ)(2,0);
20617 //Double_t dReQ4n = (*fReQ)(3,0);
20618 Double_t dImQ1n = (*fImQ)(0,0);
20619 Double_t dImQ2n = (*fImQ)(1,0);
20620 //Double_t dImQ3n = (*fImQ)(2,0);
20621 //Double_t dImQ4n = (*fImQ)(3,0);
20622
2a98ceb8 20623 Int_t t = 0; // type flag
20624 Int_t pe = 0; // ptEta flag
489d5531 20625
20626 if(type == "RP")
20627 {
20628 t = 0;
20629 } else if(type == "POI")
20630 {
20631 t = 1;
20632 }
20633
20634 if(ptOrEta == "Pt")
20635 {
20636 pe = 0;
20637 } else if(ptOrEta == "Eta")
20638 {
20639 pe = 1;
20640 }
20641
20642 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20643 Double_t minPtEta[2] = {fPtMin,fEtaMin};
20644 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20645 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20646
20647 // looping over all bins and calculating correction terms:
20648 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20649 {
20650 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
20651 Double_t p1n0kRe = 0.;
20652 Double_t p1n0kIm = 0.;
20653
20654 // number of POIs in particular pt or eta bin:
20655 Double_t mp = 0.;
20656
20657 // 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):
20658 Double_t q1n0kRe = 0.;
20659 Double_t q1n0kIm = 0.;
20660 Double_t q2n0kRe = 0.;
20661 Double_t q2n0kIm = 0.;
20662
20663 // number of particles which are both RPs and POIs in particular pt or eta bin:
20664 Double_t mq = 0.;
20665
20666 if(type == "POI")
20667 {
20668 // q_{m*n,0}:
20669 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
20670 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
20671 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
20672 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
20673 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
20674 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
20675 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
20676 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
20677
20678 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20679 }
20680 else if(type == "RP")
20681 {
20682 // q_{m*n,0}:
20683 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20684 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20685 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20686 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20687 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
20688 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
20689 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
20690 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
20691
20692 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20693 }
20694 if(type == "POI")
20695 {
20696 // p_{m*n,0}:
20697 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20698 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20699 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20700 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20701
20702 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20703
20704 t = 1; // typeFlag = RP or POI
20705 }
20706 else if(type == "RP")
20707 {
20708 // p_{m*n,0} = q_{m*n,0}:
20709 p1n0kRe = q1n0kRe;
20710 p1n0kIm = q1n0kIm;
20711
20712 mp = mq;
20713
20714 t = 0; // typeFlag = RP or POI
20715 }
20716
20717 // <<sin n(psi1)>>:
20718 Double_t sinP1nPsi = 0.;
20719 if(mp)
20720 {
20721 sinP1nPsi = p1n0kIm/mp;
20722 // fill profile for <<sin n(psi1)>>:
20723 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi,mp);
20724 // histogram to store <sin n(psi1)> e-b-e (needed in some other methods):
20725 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][0]->SetBinContent(b,sinP1nPsi);
20726 } // end of if(mp)
20727
20728 // <<sin n(psi1+phi2)>>:
20729 Double_t sinP1nPsiP1nPhi = 0.;
20730 if(mp*dMult-mq)
20731 {
20732 sinP1nPsiP1nPhi = (p1n0kRe*dImQ1n+p1n0kIm*dReQ1n-q2n0kIm)/(mp*dMult-mq);
20733 // fill profile for <<sin n(psi1+phi2)>>:
20734 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsiP1nPhi,mp*dMult-mq);
20735 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20736 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][1]->SetBinContent(b,sinP1nPsiP1nPhi);
20737 } // end of if(mp*dMult-mq)
20738
20739 // <<sin n(psi1+phi2-phi3)>>:
20740 Double_t sinP1nPsi1P1nPhi2MPhi3 = 0.;
20741 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20742 {
20743 sinP1nPsi1P1nPhi2MPhi3 = (p1n0kIm*(pow(dImQ1n,2.)+pow(dReQ1n,2.)-dMult)
20744 - 1.*(q2n0kIm*dReQ1n-q2n0kRe*dImQ1n)
20745 - mq*dImQ1n+2.*q1n0kIm)
20746 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20747 // fill profile for <<sin n(psi1+phi2)>>:
20748 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1P1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20749 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20750 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][2]->SetBinContent(b,sinP1nPsi1P1nPhi2MPhi3);
20751 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20752
20753 // <<sin n(psi1-phi2-phi3)>>:
20754 Double_t sinP1nPsi1M1nPhi2MPhi3 = 0.;
20755 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20756 {
20757 sinP1nPsi1M1nPhi2MPhi3 = (p1n0kIm*(pow(dReQ1n,2.)-pow(dImQ1n,2.))-2.*p1n0kRe*dReQ1n*dImQ1n
20758 - 1.*(p1n0kIm*dReQ2n-p1n0kRe*dImQ2n)
20759 + 2.*mq*dImQ1n-2.*q1n0kIm)
20760 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20761 // fill profile for <<sin n(psi1+phi2)>>:
20762 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1M1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20763 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20764 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][3]->SetBinContent(b,sinP1nPsi1M1nPhi2MPhi3);
20765 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20766 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20767
20768} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTerms(TString type, TString ptOrEta)
20769
20770
e1d101a6 20771//=======================================================================================================================
489d5531 20772
20773
20774void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTerms(TString type, TString ptOrEta)
20775{
20776 // Calculate correction terms for non-uniform acceptance for differential flow (cos terms).
20777
20778 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][1][cti], where cti runs as follows:
20779 // 0: <<cos n(psi)>>
20780 // 1: <<cos n(psi1+phi2)>>
20781 // 2: <<cos n(psi1+phi2-phi3)>>
20782 // 3: <<cos n(psi1-phi2-phi3)>>
20783 // 4:
20784 // 5:
20785 // 6:
20786
20787 // multiplicity:
1268c371 20788 Double_t dMult = (*fSpk)(0,0);
489d5531 20789
20790 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
20791 Double_t dReQ1n = (*fReQ)(0,0);
20792 Double_t dReQ2n = (*fReQ)(1,0);
20793 //Double_t dReQ3n = (*fReQ)(2,0);
20794 //Double_t dReQ4n = (*fReQ)(3,0);
20795 Double_t dImQ1n = (*fImQ)(0,0);
20796 Double_t dImQ2n = (*fImQ)(1,0);
20797 //Double_t dImQ3n = (*fImQ)(2,0);
20798 //Double_t dImQ4n = (*fImQ)(3,0);
20799
2a98ceb8 20800 Int_t t = 0; // type flag
20801 Int_t pe = 0; // ptEta flag
489d5531 20802
20803 if(type == "RP")
20804 {
20805 t = 0;
20806 } else if(type == "POI")
20807 {
20808 t = 1;
20809 }
20810
20811 if(ptOrEta == "Pt")
20812 {
20813 pe = 0;
20814 } else if(ptOrEta == "Eta")
20815 {
20816 pe = 1;
20817 }
20818
20819 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20820 Double_t minPtEta[2] = {fPtMin,fEtaMin};
20821 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20822 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20823
20824 // looping over all bins and calculating correction terms:
20825 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20826 {
20827 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
20828 Double_t p1n0kRe = 0.;
20829 Double_t p1n0kIm = 0.;
20830
20831 // number of POIs in particular pt or eta bin:
20832 Double_t mp = 0.;
20833
20834 // 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):
20835 Double_t q1n0kRe = 0.;
20836 Double_t q1n0kIm = 0.;
20837 Double_t q2n0kRe = 0.;
20838 Double_t q2n0kIm = 0.;
20839
20840 // number of particles which are both RPs and POIs in particular pt or eta bin:
20841 Double_t mq = 0.;
20842
20843 if(type == "POI")
20844 {
20845 // q_{m*n,0}:
20846 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
20847 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
20848 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
20849 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
20850 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
20851 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
20852 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
20853 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
20854
20855 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20856 }
20857 else if(type == "RP")
20858 {
20859 // q_{m*n,0}:
20860 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20861 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20862 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20863 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20864 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
20865 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
20866 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
20867 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
20868
20869 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20870 }
20871 if(type == "POI")
20872 {
20873 // p_{m*n,0}:
20874 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20875 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20876 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20877 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20878
20879 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20880
20881 t = 1; // typeFlag = RP or POI
20882 }
20883 else if(type == "RP")
20884 {
20885 // p_{m*n,0} = q_{m*n,0}:
20886 p1n0kRe = q1n0kRe;
20887 p1n0kIm = q1n0kIm;
20888
20889 mp = mq;
20890
20891 t = 0; // typeFlag = RP or POI
20892 }
20893
20894 // <<cos n(psi1)>>:
20895 Double_t cosP1nPsi = 0.;
20896 if(mp)
20897 {
20898 cosP1nPsi = p1n0kRe/mp;
20899
20900 // fill profile for <<cos n(psi1)>>:
20901 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi,mp);
20902 // histogram to store <cos n(psi1)> e-b-e (needed in some other methods):
20903 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][0]->SetBinContent(b,cosP1nPsi);
20904 } // end of if(mp)
20905
20906 // <<cos n(psi1+phi2)>>:
20907 Double_t cosP1nPsiP1nPhi = 0.;
20908 if(mp*dMult-mq)
20909 {
20910 cosP1nPsiP1nPhi = (p1n0kRe*dReQ1n-p1n0kIm*dImQ1n-q2n0kRe)/(mp*dMult-mq);
20911 // fill profile for <<sin n(psi1+phi2)>>:
20912 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsiP1nPhi,mp*dMult-mq);
20913 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20914 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][1]->SetBinContent(b,cosP1nPsiP1nPhi);
20915 } // end of if(mp*dMult-mq)
20916
20917 // <<cos n(psi1+phi2-phi3)>>:
20918 Double_t cosP1nPsi1P1nPhi2MPhi3 = 0.;
20919 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20920 {
20921 cosP1nPsi1P1nPhi2MPhi3 = (p1n0kRe*(pow(dImQ1n,2.)+pow(dReQ1n,2.)-dMult)
20922 - 1.*(q2n0kRe*dReQ1n+q2n0kIm*dImQ1n)
20923 - mq*dReQ1n+2.*q1n0kRe)
20924 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20925 // fill profile for <<sin n(psi1+phi2)>>:
20926 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1P1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20927 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20928 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][2]->SetBinContent(b,cosP1nPsi1P1nPhi2MPhi3);
20929 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20930
20931 // <<cos n(psi1-phi2-phi3)>>:
20932 Double_t cosP1nPsi1M1nPhi2MPhi3 = 0.;
20933 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20934 {
20935 cosP1nPsi1M1nPhi2MPhi3 = (p1n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))+2.*p1n0kIm*dReQ1n*dImQ1n
20936 - 1.*(p1n0kRe*dReQ2n+p1n0kIm*dImQ2n)
20937 - 2.*mq*dReQ1n+2.*q1n0kRe)
20938 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20939 // fill profile for <<sin n(psi1+phi2)>>:
20940 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1M1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20941 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20942 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][3]->SetBinContent(b,cosP1nPsi1M1nPhi2MPhi3);
20943 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20944 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20945
20946} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTerms(TString type, TString ptOrEta)
20947
e1d101a6 20948//=========================================================================================================================
489d5531 20949
489d5531 20950void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUADiffFlow(TString type, TString ptOrEta)
20951{
1268c371 20952 // Transfer profiles into histogams and correctly propagate the error.
489d5531 20953
2a98ceb8 20954 Int_t t = 0; // type flag
20955 Int_t pe = 0; // ptEta flag
489d5531 20956
20957 if(type == "RP")
20958 {
20959 t = 0;
20960 } else if(type == "POI")
20961 {
20962 t = 1;
20963 }
20964
20965 if(ptOrEta == "Pt")
20966 {
20967 pe = 0;
20968 } else if(ptOrEta == "Eta")
20969 {
20970 pe = 1;
20971 }
20972
20973 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20974 //Double_t minPtEta[2] = {fPtMin,fEtaMin};
20975 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20976 //Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20977
20978 for(Int_t sc=0;sc<2;sc++) // sin or cos
20979 {
20980 for(Int_t cti=0;cti<9;cti++) // correction term index
20981 {
20982 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20983 {
20984 Double_t correctionTerm = fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]->GetBinContent(b);
20985 fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti]->SetBinContent(b,correctionTerm);
20986 // to be improved (propagate error correctly)
20987 // ...
20988 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20989 } // correction term index
20990 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
20991
20992}// end of void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUADiffFlow(TString type, TString ptOrEta)
20993
e1d101a6 20994//=========================================================================================================================
489d5531 20995
489d5531 20996void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
20997{
1268c371 20998 // Calculate generalized differential flow cumulants (corrected for non-uniform acceptance).
20999
21000 // to be improved - propagate error also from non-isotropic terms
489d5531 21001
1268c371 21002 Int_t t = 0; // RP = 0, POI = 1
21003 Int_t pe = 0; // pt = 0, eta = 1
489d5531 21004
21005 if(type == "RP")
21006 {
1268c371 21007 t = 0;
489d5531 21008 } else if(type == "POI")
21009 {
1268c371 21010 t = 1;
489d5531 21011 }
21012
21013 if(ptOrEta == "Pt")
21014 {
1268c371 21015 pe = 0;
489d5531 21016 } else if(ptOrEta == "Eta")
21017 {
1268c371 21018 pe = 1;
489d5531 21019 }
1268c371 21020
21021 // Common:
489d5531 21022 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 21023 // 2-particle correlation:
21024 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
1268c371 21025 // sinus terms coming from reference flow:
489d5531 21026 Double_t sinP1nPhi = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(1); // <<sin(n*phi1)>>
21027 Double_t sinP1nPhi1P1nPhi2 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(2); // <<sin(n*(phi1+phi2))>>
21028 Double_t sinP1nPhi1M1nPhi2M1nPhi3 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(3); // <<sin(n*(phi1-phi2-phi3))>>
1268c371 21029 // cosinus terms coming from reference flow:
489d5531 21030 Double_t cosP1nPhi = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(1); // <<cos(n*phi1)>>
21031 Double_t cosP1nPhi1P1nPhi2 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(2); // <<cos(n*(phi1+phi2))>>
21032 Double_t cosP1nPhi1M1nPhi2M1nPhi3 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(3); // <<cos(n*(phi1-phi2-phi3))>>
21033
21034 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
21035 {
21036 Double_t twoPrime = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b); // <<2'>>
21037 Double_t fourPrime = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b); // <<4'>>
21038 Double_t sinP1nPsi = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][0]->GetBinContent(b); // <<sin n(Psi)>>
21039 Double_t cosP1nPsi = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][0]->GetBinContent(b); // <<cos n(Psi)>>
21040 Double_t sinP1nPsi1P1nPhi2 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][1]->GetBinContent(b); // <<sin n(psi1+phi2)>>
21041 Double_t cosP1nPsi1P1nPhi2 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][1]->GetBinContent(b); // <<cos n(psi1+phi2)>>
21042 Double_t sinP1nPsi1P1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][2]->GetBinContent(b); // <<sin n(psi1+phi2-phi3)>>
21043 Double_t cosP1nPsi1P1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][2]->GetBinContent(b); // <<cos n(psi1+phi2-phi3)>>
21044 Double_t sinP1nPsi1M1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][3]->GetBinContent(b); // <<sin n(psi1-phi2-phi3)>>
21045 Double_t cosP1nPsi1M1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][3]->GetBinContent(b); // <<cos n(psi1-phi2-phi3)>>
1268c371 21046 // Generalized QC{2'}:
489d5531 21047 Double_t qc2Prime = twoPrime - sinP1nPsi*sinP1nPhi - cosP1nPsi*cosP1nPhi;
1268c371 21048 if(fApplyCorrectionForNUA)
21049 {
21050 fDiffFlowCumulants[t][pe][0]->SetBinContent(b,qc2Prime);
21051 }
21052 if(TMath::Abs(twoPrime)>0.)
21053 {
21054 fDiffFlowDetectorBias[t][pe][0]->SetBinContent(b,qc2Prime/twoPrime); // detector bias = generalized/isotropic cumulant.
21055 }
21056 // Generalized QC{4'}:
489d5531 21057 Double_t qc4Prime = fourPrime-2.*twoPrime*two
21058 - cosP1nPsi*cosP1nPhi1M1nPhi2M1nPhi3
21059 + sinP1nPsi*sinP1nPhi1M1nPhi2M1nPhi3
21060 - cosP1nPhi*cosP1nPsi1M1nPhi2M1nPhi3
21061 + sinP1nPhi*sinP1nPsi1M1nPhi2M1nPhi3
21062 - 2.*cosP1nPhi*cosP1nPsi1P1nPhi2M1nPhi3
21063 - 2.*sinP1nPhi*sinP1nPsi1P1nPhi2M1nPhi3
21064 - cosP1nPsi1P1nPhi2*cosP1nPhi1P1nPhi2
21065 - sinP1nPsi1P1nPhi2*sinP1nPhi1P1nPhi2
21066 + 2.*cosP1nPhi1P1nPhi2*(cosP1nPsi*cosP1nPhi-sinP1nPsi*sinP1nPhi)
21067 + 2.*sinP1nPhi1P1nPhi2*(cosP1nPsi*sinP1nPhi+sinP1nPsi*cosP1nPhi)
21068 + 4.*two*(cosP1nPsi*cosP1nPhi+sinP1nPsi*sinP1nPhi)
21069 + 2.*cosP1nPsi1P1nPhi2*(pow(cosP1nPhi,2.)-pow(sinP1nPhi,2.))
21070 + 4.*sinP1nPsi1P1nPhi2*cosP1nPhi*sinP1nPhi
21071 + 4.*twoPrime*(pow(cosP1nPhi,2.)+pow(sinP1nPhi,2.))
21072 - 6.*(pow(cosP1nPhi,2.)-pow(sinP1nPhi,2.))
21073 * (cosP1nPsi*cosP1nPhi-sinP1nPsi*sinP1nPhi)
21074 - 12.*cosP1nPhi*sinP1nPhi
21075 * (sinP1nPsi*cosP1nPhi+cosP1nPsi*sinP1nPhi);
1268c371 21076 if(fApplyCorrectionForNUA)
21077 {
21078 fDiffFlowCumulants[t][pe][1]->SetBinContent(b,qc4Prime);
21079 }
21080 if(TMath::Abs(fourPrime-2.*twoPrime*two)>0.)
21081 {
21082 fDiffFlowDetectorBias[t][pe][1]->SetBinContent(b,qc4Prime/(fourPrime-2.*twoPrime*two)); // detector bias = generalized/isotropic cumulant.
21083 }
489d5531 21084 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
21085
21086} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
21087
1268c371 21088//==================================================================================================================================
489d5531 21089
21090void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta)
21091{
21092 // Calculate differential flow corrected for non-uniform acceptance.
21093
1268c371 21094 // to be improved: eventually I will have to access here masured correlations and NUA terms
21095 // instead of cumulants in order to propagate statistical error correctly also
21096 // to NUA terms (propagating errors directly from cumulants is WRONG for
21097 // differential flow becuase that doesn't account at all cross-covariance terms)
489d5531 21098
1268c371 21099 // REMARK: When NUA correction is apllied error for differential flow DOES NOT get corrected,
21100 // i.e. only value is being corrected, error is still the one relevant for isotropic
21101 // case. This eventually will be resolved.
21102
21103
21104 Int_t t = 0; // RP or POI
21105 Int_t pe = 0; // pt or eta
489d5531 21106
21107 if(type == "RP")
21108 {
1268c371 21109 t = 0;
489d5531 21110 } else if(type == "POI")
21111 {
1268c371 21112 t = 1;
21113 }
489d5531 21114 if(ptOrEta == "Pt")
21115 {
1268c371 21116 pe = 0;
489d5531 21117 } else if(ptOrEta == "Eta")
21118 {
1268c371 21119 pe = 1;
489d5531 21120 }
21121
1268c371 21122 // Common:
489d5531 21123 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
1268c371 21124 // Reference Q-cumulants
21125 Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); // QC{2}
21126 Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); // QC{4}
21127 // Loop over pt or eta bins:
489d5531 21128 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
21129 {
1268c371 21130 // Differential Q-cumulants:
21131 Double_t qc2Prime = fDiffFlowCumulants[t][pe][0]->GetBinContent(b); // QC{2'}
21132 Double_t qc4Prime = fDiffFlowCumulants[t][pe][1]->GetBinContent(b); // QC{4'}
489d5531 21133 // v'{2}:
1268c371 21134 if(qc2>0.)
489d5531 21135 {
1268c371 21136 Double_t v2Prime = qc2Prime/pow(qc2,0.5);
21137 if(TMath::Abs(v2Prime)>0.){fDiffFlow[t][pe][0]->SetBinContent(b,v2Prime);}
489d5531 21138 }
489d5531 21139 // v'{4}:
1268c371 21140 if(qc4<0.)
489d5531 21141 {
1268c371 21142 Double_t v4Prime = -qc4Prime/pow(-qc4,3./4.);
21143 if(TMath::Abs(v4Prime)>0.){fDiffFlow[t][pe][1]->SetBinContent(b,v4Prime);}
489d5531 21144 }
21145 } // end of for(Int_t b=1;b<=fnBinsPtEta[pe];b++)
21146
21147} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta);
21148
e1d101a6 21149//=========================================================================================================================
489d5531 21150
0328db2d 21151void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 21152{
21153 // Evaluate with nested loops multiparticle correlations for integrated flow (without using the particle weights).
21154
21155 // Remark: Results are stored in profile fIntFlowDirectCorrelations whose binning is organized as follows:
21156 //
21157 // 1st bin: <2>_{1n|1n} = two1n1n = cos(n*(phi1-phi2))>
21158 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n*(phi1-phi2))>
21159 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n*(phi1-phi2))>
21160 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n*(phi1-phi2))>
21161 // 5th bin: ---- EMPTY ----
21162 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n*(2.*phi1-phi2-phi3))>
21163 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n*(3.*phi1-2.*phi2-phi3))>
21164 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
21165 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n*(4.*phi1-3.*phi2-phi3))>
21166 // 10th bin: ---- EMPTY ----
21167 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n*(phi1+phi2-phi3-phi4))>
21168 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(2.*n*(phi1+phi2-phi3-phi4))>
21169 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
21170 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n*(3.*phi1-phi2-phi3-phi4))>
21171 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
21172 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
21173 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n*(3.*phi1+phi2-3.*phi3-phi4))>
21174 // 18th bin: ---- EMPTY ----
21175 // 19th bin: <5>_{2n|1n,1n,1n,1n} = five2n1n1n1n1n = <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
21176 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
21177 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
21178 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
21179 // 23rd bin: ---- EMPTY ----
21180 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
21181 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
21182 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
21183 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
21184 // 28th bin: ---- EMPTY ----
21185 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
21186 // 30th bin: ---- EMPTY ----
21187 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
8ed4edc7 21188 // 32nd bin: ---- EMPTY ----
b84464d3 21189 // Extra correlations for 3p TY study:
8ed4edc7 21190 // 33rd bin: <4>_{4n,2n|3n,3n}= four4n2n3n3n = <cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4))>
b84464d3 21191 // 34th bin: <5>_{3n,3n|2n,2n,2n} = five3n3n2n2n2n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
21192 // Extra correlations for 6p TY study:
21193 // 35th bin: <2>_{5n|5n} = two5n5n = <cos(5n*(phi1-phi2)> T
21194 // 36th bin: <2>_{6n|6n} = two6n6n = <cos(6n*(phi1-phi2)> T
21195 // 37th bin: <3>_{5n|3n,2n} = three5n3n2n = <cos(n*(5*phi1-3*phi2-2*phi3)>
21196 // 38th bin: <3>_{5n|4n,1n} = three5n4n1n = <cos(n*(5*phi1-4*phi2-1*phi3)>
21197 // 39th bin: <3>_{6n|3n,3n} = three6n3n3n = <cos(n*(6*phi1-3*phi2-3*phi3)> T
21198 // 40th bin: <3>_{6n|4n,2n} = three6n4n2n = <cos(n*(6*phi1-4*phi2-2*phi3)> T
21199 // 41st bin: <3>_{6n|5n,1n} = three6n5n1n = <cos(n*(6*phi1-5*phi2-1*phi3)>
21200 // 42nd bin: <4>_{6n|3n,2n,1n} = four6n3n2n1n = <cos(n*(6*phi1-3*phi2-2*phi3-1*phi4)>
21201 // 43rd bin: <4>_{3n,2n|3n,2n} = four3n2n3n2n = <cos(n*(3*phi1+2*phi2-3*phi3-2*phi4)>
21202 // 44th bin: <4>_{4n,1n|3n,2n} = four4n1n3n2n = <cos(n*(4*phi1+1*phi2-3*phi3-2*phi4)>
21203 // 45th bin: <4>_{3n,3n|3n,3n} = four3n3n3n3n = <cos(3.*n*(phi1+phi2-phi3-phi4))> T
21204 // 46th bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n*(4*phi1+2*phi2-3*phi3-3*phi4)>
21205 // 47th bin: <4>_{5n,1n|3n,3n} = four5n1n3n3n = <cos(n*(5*phi1+1*phi2-3*phi3-3*phi4)>
21206 // 48th bin: <4>_{4n,2n|4n,2n} = four4n2n4n2n = <cos(n*(4*phi1+2*phi2-4*phi3-2*phi4)> T
21207 // 49th bin: <4>_{5n,1n|4n,2n} = four5n1n4n2n = <cos(n*(5*phi1+1*phi2-4*phi3-2*phi4)>
21208 // 50th bin: <4>_{5n|3n,1n,1n} = four5n3n1n1n = <cos(n*(5*phi1-3*phi2-1*phi3-1*phi4)>
21209 // 51st bin: <4>_{5n|2n,2n,1n} = four5n2n2n1n = <cos(n*(5*phi1-2*phi2-2*phi3-1*phi4)>
21210 // 52nd bin: <4>_{5n,1n|5n,1n} = four5n1n5n1n = <cos(n*(5*phi1+1*phi2-5*phi3-1*phi4)>
21211 // 53rd bin: <5>_{3n,3n|3n,2n,1n} = four3n3n3n2n1n = <cos(n*(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
21212 // 54th bin: <5>_{4n,2n|3n,2n,1n} = four4n2n3n2n1n = <cos(n*(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
21213 // 55th bin: <5>_{3n,2n|3n,1n,1n} = four3n2n3n1n1n = <cos(n*(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
21214 // 56th bin: <5>_{3n,2n|2n,2n,1n} = four3n2n2n2n1n = <cos(n*(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
21215 // 57th bin: <5>_{5n,1n|3n,2n,1n} = four5n1n3n2n1n = <cos(n*(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
21216 // 58th bin: <6>_{3n,2n,1n|3n,2n,1n} = six3n2n1n3n2n1n = <cos(n*(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
8ed4edc7 21217
489d5531 21218 Int_t nPrim = anEvent->NumberOfTracks();
21219 AliFlowTrackSimple *aftsTrack = NULL;
21220 Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
21221 Int_t n = fHarmonic;
21222 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 21223 Double_t dMult = (*fSpk)(0,0);
489d5531 21224 cout<<endl;
21225 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21226 if(dMult<2)
21227 {
21228 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21229 } else if (dMult>fMaxAllowedMultiplicity)
21230 {
21231 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21232 } else
21233 {
21234 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
21235 }
21236
21237 // 2-particle correlations:
21238 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21239 {
21240 for(Int_t i1=0;i1<nPrim;i1++)
21241 {
21242 aftsTrack=anEvent->GetTrack(i1);
21243 if(!(aftsTrack->InRPSelection())) continue;
21244 phi1=aftsTrack->Phi();
21245 for(Int_t i2=0;i2<nPrim;i2++)
21246 {
21247 if(i2==i1)continue;
21248 aftsTrack=anEvent->GetTrack(i2);
21249 if(!(aftsTrack->InRPSelection())) continue;
21250 phi2=aftsTrack->Phi();
21251 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21252 // fill the profile with 2-p correlations:
b84464d3 21253 fIntFlowDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),1.); // <cos(n*(phi1-phi2))>
21254 fIntFlowDirectCorrelations->Fill(1.5,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
21255 fIntFlowDirectCorrelations->Fill(2.5,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
21256 fIntFlowDirectCorrelations->Fill(3.5,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>
21257 fIntFlowDirectCorrelations->Fill(34.5,cos(5.*n*(phi1-phi2)),1.); // <cos(5n*(phi1-phi2))>
21258 fIntFlowDirectCorrelations->Fill(35.5,cos(6.*n*(phi1-phi2)),1.); // <cos(6n*(phi1-phi2))>
489d5531 21259 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21260 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21261 } // end of if(nPrim>=2)
21262
21263 // 3-particle correlations:
21264 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21265 {
21266 for(Int_t i1=0;i1<nPrim;i1++)
21267 {
21268 aftsTrack=anEvent->GetTrack(i1);
21269 if(!(aftsTrack->InRPSelection())) continue;
21270 phi1=aftsTrack->Phi();
21271 for(Int_t i2=0;i2<nPrim;i2++)
21272 {
21273 if(i2==i1)continue;
21274 aftsTrack=anEvent->GetTrack(i2);
21275 if(!(aftsTrack->InRPSelection())) continue;
21276 phi2=aftsTrack->Phi();
21277 for(Int_t i3=0;i3<nPrim;i3++)
21278 {
21279 if(i3==i1||i3==i2)continue;
21280 aftsTrack=anEvent->GetTrack(i3);
21281 if(!(aftsTrack->InRPSelection())) continue;
21282 phi3=aftsTrack->Phi();
21283 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
21284 // fill the profile with 3-p correlations:
b84464d3 21285 fIntFlowDirectCorrelations->Fill(5.,cos(2.*n*phi1-n*(phi2+phi3)),1.); //<3>_{2n|nn,n}
21286 fIntFlowDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.); //<3>_{3n|2n,n}
21287 fIntFlowDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); //<3>_{4n|2n,2n}
21288 fIntFlowDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),1.); //<3>_{4n|3n,n}
21289 fIntFlowDirectCorrelations->Fill(36.5,cos(5.*n*phi1-3.*n*phi2-2.*n*phi3),1.); //<3>_{5n|3n,2n}
21290 fIntFlowDirectCorrelations->Fill(37.5,cos(5.*n*phi1-4.*n*phi2-1.*n*phi3),1.); //<3>_{5n|4n,1n}
21291 fIntFlowDirectCorrelations->Fill(38.5,cos(6.*n*phi1-3.*n*phi2-3.*n*phi3),1.); //<3>_{6n|3n,3n}
21292 fIntFlowDirectCorrelations->Fill(39.5,cos(6.*n*phi1-4.*n*phi2-2.*n*phi3),1.); //<3>_{6n|4n,2n}
21293 fIntFlowDirectCorrelations->Fill(40.5,cos(6.*n*phi1-5.*n*phi2-1.*n*phi3),1.); //<3>_{6n|5n,1n}
489d5531 21294 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21295 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21296 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21297 } // end of if(nPrim>=3)
21298
21299 // 4-particle correlations:
21300 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
21301 {
21302 for(Int_t i1=0;i1<nPrim;i1++)
21303 {
21304 aftsTrack=anEvent->GetTrack(i1);
21305 if(!(aftsTrack->InRPSelection())) continue;
21306 phi1=aftsTrack->Phi();
21307 for(Int_t i2=0;i2<nPrim;i2++)
21308 {
21309 if(i2==i1)continue;
21310 aftsTrack=anEvent->GetTrack(i2);
21311 if(!(aftsTrack->InRPSelection())) continue;
21312 phi2=aftsTrack->Phi();
21313 for(Int_t i3=0;i3<nPrim;i3++)
21314 {
21315 if(i3==i1||i3==i2)continue;
21316 aftsTrack=anEvent->GetTrack(i3);
21317 if(!(aftsTrack->InRPSelection())) continue;
21318 phi3=aftsTrack->Phi();
21319 for(Int_t i4=0;i4<nPrim;i4++)
21320 {
21321 if(i4==i1||i4==i2||i4==i3)continue;
21322 aftsTrack=anEvent->GetTrack(i4);
21323 if(!(aftsTrack->InRPSelection())) continue;
21324 phi4=aftsTrack->Phi();
21325 if(nPrim==4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush;
21326 // fill the profile with 4-p correlations:
21327 fIntFlowDirectCorrelations->Fill(10.,cos(n*phi1+n*phi2-n*phi3-n*phi4),1.); // <4>_{n,n|n,n}
21328 fIntFlowDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),1.); // <4>_{2n,n|2n,n}
21329 fIntFlowDirectCorrelations->Fill(12.,cos(2.*n*phi1+2*n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{2n,2n|2n,2n}
21330 fIntFlowDirectCorrelations->Fill(13.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),1.); // <4>_{3n|n,n,n}
21331 fIntFlowDirectCorrelations->Fill(14.,cos(3.*n*phi1+n*phi2-3.*n*phi3-n*phi4),1.); // <4>_{3n,n|3n,n}
21332 fIntFlowDirectCorrelations->Fill(15.,cos(3.*n*phi1+n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{3n,n|2n,2n}
21333 fIntFlowDirectCorrelations->Fill(16.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),1.); // <4>_{4n|2n,n,n}
b84464d3 21334 fIntFlowDirectCorrelations->Fill(32.,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
21335 fIntFlowDirectCorrelations->Fill(41.5,cos(n*(6.*phi1-3.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{6n|3n,2n,1n}
21336 fIntFlowDirectCorrelations->Fill(42.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{3n,2n|3n,2n}
21337 fIntFlowDirectCorrelations->Fill(43.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{4n,1n|3n,2n}
21338 fIntFlowDirectCorrelations->Fill(44.5,cos(n*(3.*phi1+3.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{3n,3n|3n,3n}
21339 fIntFlowDirectCorrelations->Fill(45.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
21340 fIntFlowDirectCorrelations->Fill(46.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{5n,1n|3n,3n}
21341 fIntFlowDirectCorrelations->Fill(47.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{4n,2n|4n,2n}
21342 fIntFlowDirectCorrelations->Fill(48.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{5n,1n|4n,2n}
21343 fIntFlowDirectCorrelations->Fill(49.5,cos(n*(5.*phi1-3.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{5n|3n,1n,1n}
21344 fIntFlowDirectCorrelations->Fill(50.5,cos(n*(5.*phi1-2.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{5n|2n,2n,1n}
403e3389 21345 fIntFlowDirectCorrelations->Fill(51.5,cos(n*(5.*phi1+1.*phi2-5.*phi3-1.*phi4)),1.); // <4>_{5n,1n|5n,1n}
21346 fIntFlowDirectCorrelations->Fill(58.5,cos(n*(6.*phi1-4.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{6n|4n,1n,1n}
21347 fIntFlowDirectCorrelations->Fill(59.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{6n|2n,2n,2n}
489d5531 21348 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21349 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21350 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21351 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21352 } // end of if(nPrim>=)
21353
21354 // 5-particle correlations:
21355 if(nPrim>=5 && nPrim<=fMaxAllowedMultiplicity)
21356 {
21357 for(Int_t i1=0;i1<nPrim;i1++)
21358 {
21359 aftsTrack=anEvent->GetTrack(i1);
21360 if(!(aftsTrack->InRPSelection())) continue;
21361 phi1=aftsTrack->Phi();
21362 for(Int_t i2=0;i2<nPrim;i2++)
21363 {
21364 if(i2==i1)continue;
21365 aftsTrack=anEvent->GetTrack(i2);
21366 if(!(aftsTrack->InRPSelection())) continue;
21367 phi2=aftsTrack->Phi();
21368 for(Int_t i3=0;i3<nPrim;i3++)
21369 {
21370 if(i3==i1||i3==i2)continue;
21371 aftsTrack=anEvent->GetTrack(i3);
21372 if(!(aftsTrack->InRPSelection())) continue;
21373 phi3=aftsTrack->Phi();
21374 for(Int_t i4=0;i4<nPrim;i4++)
21375 {
21376 if(i4==i1||i4==i2||i4==i3)continue;
21377 aftsTrack=anEvent->GetTrack(i4);
21378 if(!(aftsTrack->InRPSelection())) continue;
21379 phi4=aftsTrack->Phi();
21380 for(Int_t i5=0;i5<nPrim;i5++)
21381 {
21382 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21383 aftsTrack=anEvent->GetTrack(i5);
21384 if(!(aftsTrack->InRPSelection())) continue;
21385 phi5=aftsTrack->Phi();
21386 if(nPrim==5) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<"\r"<<flush;
21387 // fill the profile with 5-p correlations:
b84464d3 21388 fIntFlowDirectCorrelations->Fill(18.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1.); // <5>_{2n,n|n,n,n}
21389 fIntFlowDirectCorrelations->Fill(19.,cos(2.*n*phi1+2.*n*phi2-2.*n*phi3-n*phi4-n*phi5),1.); // <5>_{2n,2n|2n,n,n}
21390 fIntFlowDirectCorrelations->Fill(20.,cos(3.*n*phi1+n*phi2-2.*n*phi3-n*phi4-n*phi5),1.); // <5>_{3n,n|2n,n,n}
21391 fIntFlowDirectCorrelations->Fill(21.,cos(4.*n*phi1-n*phi2-n*phi3-n*phi4-n*phi5),1.); // <5>_{4n|n,n,n,n}
21392 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}
21393 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}
21394 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}
21395 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}
21396 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}
21397 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}
403e3389 21398 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}
21399 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}
489d5531 21400 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21401 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21402 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21403 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21404 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21405 } // end of if(nPrim>=5)
21406
21407 // 6-particle correlations:
21408 if(nPrim>=6 && nPrim<=fMaxAllowedMultiplicity)
21409 {
21410 for(Int_t i1=0;i1<nPrim;i1++)
21411 {
21412 aftsTrack=anEvent->GetTrack(i1);
21413 if(!(aftsTrack->InRPSelection())) continue;
21414 phi1=aftsTrack->Phi();
21415 for(Int_t i2=0;i2<nPrim;i2++)
21416 {
21417 if(i2==i1)continue;
21418 aftsTrack=anEvent->GetTrack(i2);
21419 if(!(aftsTrack->InRPSelection())) continue;
21420 phi2=aftsTrack->Phi();
21421 for(Int_t i3=0;i3<nPrim;i3++)
21422 {
21423 if(i3==i1||i3==i2)continue;
21424 aftsTrack=anEvent->GetTrack(i3);
21425 if(!(aftsTrack->InRPSelection())) continue;
21426 phi3=aftsTrack->Phi();
21427 for(Int_t i4=0;i4<nPrim;i4++)
21428 {
21429 if(i4==i1||i4==i2||i4==i3)continue;
21430 aftsTrack=anEvent->GetTrack(i4);
21431 if(!(aftsTrack->InRPSelection())) continue;
21432 phi4=aftsTrack->Phi();
21433 for(Int_t i5=0;i5<nPrim;i5++)
21434 {
21435 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21436 aftsTrack=anEvent->GetTrack(i5);
21437 if(!(aftsTrack->InRPSelection())) continue;
21438 phi5=aftsTrack->Phi();
21439 for(Int_t i6=0;i6<nPrim;i6++)
21440 {
21441 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21442 aftsTrack=anEvent->GetTrack(i6);
21443 if(!(aftsTrack->InRPSelection())) continue;
21444 phi6=aftsTrack->Phi();
21445 if(nPrim==6) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<"\r"<<flush;
21446 // fill the profile with 6-p correlations:
403e3389 21447 fIntFlowDirectCorrelations->Fill(23.,cos(n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6),1.); // <6>_{1n,1n,1n|1n,1n,1n}
21448 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}
21449 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}
21450 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}
b84464d3 21451 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}
403e3389 21452 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}
489d5531 21453 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21454 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21455 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21456 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21457 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21458 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21459 } // end of if(nPrim>=6)
21460
21461 // 7-particle correlations:
21462 if(nPrim>=7 && nPrim<=fMaxAllowedMultiplicity)
21463 {
21464 for(Int_t i1=0;i1<nPrim;i1++)
21465 {
21466 aftsTrack=anEvent->GetTrack(i1);
21467 if(!(aftsTrack->InRPSelection())) continue;
21468 phi1=aftsTrack->Phi();
21469 for(Int_t i2=0;i2<nPrim;i2++)
21470 {
21471 if(i2==i1)continue;
21472 aftsTrack=anEvent->GetTrack(i2);
21473 if(!(aftsTrack->InRPSelection())) continue;
21474 phi2=aftsTrack->Phi();
21475 for(Int_t i3=0;i3<nPrim;i3++)
21476 {
21477 if(i3==i1||i3==i2)continue;
21478 aftsTrack=anEvent->GetTrack(i3);
21479 if(!(aftsTrack->InRPSelection())) continue;
21480 phi3=aftsTrack->Phi();
21481 for(Int_t i4=0;i4<nPrim;i4++)
21482 {
21483 if(i4==i1||i4==i2||i4==i3)continue;
21484 aftsTrack=anEvent->GetTrack(i4);
21485 if(!(aftsTrack->InRPSelection())) continue;
21486 phi4=aftsTrack->Phi();
21487 for(Int_t i5=0;i5<nPrim;i5++)
21488 {
21489 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21490 aftsTrack=anEvent->GetTrack(i5);
21491 if(!(aftsTrack->InRPSelection())) continue;
21492 phi5=aftsTrack->Phi();
21493 for(Int_t i6=0;i6<nPrim;i6++)
21494 {
21495 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21496 aftsTrack=anEvent->GetTrack(i6);
21497 if(!(aftsTrack->InRPSelection())) continue;
21498 phi6=aftsTrack->Phi();
21499 for(Int_t i7=0;i7<nPrim;i7++)
21500 {
21501 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
21502 aftsTrack=anEvent->GetTrack(i7);
21503 if(!(aftsTrack->InRPSelection())) continue;
21504 phi7=aftsTrack->Phi();
21505 if(nPrim==7) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<" "<<i7<<"\r"<<flush;
21506 // fill the profile with 7-p correlation:
21507 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}
21508 } // end of for(Int_t i7=0;i7<nPrim;i7++)
21509 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21510 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21511 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21512 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21513 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21514 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21515 } // end of if(nPrim>=7)
21516
21517 // 8-particle correlations:
21518 if(nPrim>=8 && nPrim<=fMaxAllowedMultiplicity)
21519 {
21520 for(Int_t i1=0;i1<nPrim;i1++)
21521 {
21522 aftsTrack=anEvent->GetTrack(i1);
21523 if(!(aftsTrack->InRPSelection())) continue;
21524 phi1=aftsTrack->Phi();
21525 for(Int_t i2=0;i2<nPrim;i2++)
21526 {
21527 if(i2==i1)continue;
21528 aftsTrack=anEvent->GetTrack(i2);
21529 if(!(aftsTrack->InRPSelection())) continue;
21530 phi2=aftsTrack->Phi();
21531 for(Int_t i3=0;i3<nPrim;i3++)
21532 {
21533 if(i3==i1||i3==i2)continue;
21534 aftsTrack=anEvent->GetTrack(i3);
21535 if(!(aftsTrack->InRPSelection())) continue;
21536 phi3=aftsTrack->Phi();
21537 for(Int_t i4=0;i4<nPrim;i4++)
21538 {
21539 if(i4==i1||i4==i2||i4==i3)continue;
21540 aftsTrack=anEvent->GetTrack(i4);
21541 if(!(aftsTrack->InRPSelection())) continue;
21542 phi4=aftsTrack->Phi();
21543 for(Int_t i5=0;i5<nPrim;i5++)
21544 {
21545 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21546 aftsTrack=anEvent->GetTrack(i5);
21547 if(!(aftsTrack->InRPSelection())) continue;
21548 phi5=aftsTrack->Phi();
21549 for(Int_t i6=0;i6<nPrim;i6++)
21550 {
21551 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21552 aftsTrack=anEvent->GetTrack(i6);
21553 if(!(aftsTrack->InRPSelection())) continue;
21554 phi6=aftsTrack->Phi();
21555 for(Int_t i7=0;i7<nPrim;i7++)
21556 {
21557 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
21558 aftsTrack=anEvent->GetTrack(i7);
21559 if(!(aftsTrack->InRPSelection())) continue;
21560 phi7=aftsTrack->Phi();
21561 for(Int_t i8=0;i8<nPrim;i8++)
21562 {
21563 if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)continue;
21564 aftsTrack=anEvent->GetTrack(i8);
21565 if(!(aftsTrack->InRPSelection())) continue;
21566 phi8=aftsTrack->Phi();
21567 cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<" "<<i7<<" "<<i8<<"\r"<<flush;
21568 // fill the profile with 8-p correlation:
21569 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}
21570 } // end of for(Int_t i8=0;i8<nPrim;i8++)
21571 } // end of for(Int_t i7=0;i7<nPrim;i7++)
21572 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21573 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21574 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21575 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21576 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21577 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21578 } // end of if(nPrim>=8)
21579
21580 cout<<endl;
21581
21582} // end of AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoops(AliFlowEventSimple* anEvent)
21583
e1d101a6 21584//================================================================================================================
21585
21586void AliFlowAnalysisWithQCumulants::EvaluateMixedHarmonicsWithNestedLoops(AliFlowEventSimple * const anEvent)
21587{
21588 // Evaluate with nested loops multi-particle correlations for mixed harmonics.
21589
21590 Int_t nPrim = anEvent->NumberOfTracks();
21591 AliFlowTrackSimple *aftsTrack = NULL;
21592 Double_t phi1=0.;
21593 Double_t phi2=0.;
21594 Double_t phi3=0.;
21595 Double_t phi4=0.;
21596 Double_t phi5=0.;
21597 /*Double_t phi6=0.;
21598 Double_t phi7=0.;
21599 Double_t phi8=0.;*/
21600 Int_t n = fHarmonic;
21601 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // TBI: is such casting safe in general?
21602 Double_t dMult = (*fSpk)(0,0);
21603 cout<<endl;
21604 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21605 if(dMult<2)
21606 {
21607 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21608 } else if (dMult>fMaxAllowedMultiplicity)
21609 {
21610 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21611 } else
21612 {
21613 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
21614 }
21615
21616 // 2-particle correlations:
21617 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21618 {
21619 for(Int_t i1=0;i1<nPrim;i1++)
21620 {
21621 aftsTrack=anEvent->GetTrack(i1);
21622 if(!(aftsTrack->InRPSelection())) continue;
21623 phi1=aftsTrack->Phi();
21624 for(Int_t i2=0;i2<nPrim;i2++)
21625 {
21626 if(i2==i1)continue;
21627 aftsTrack=anEvent->GetTrack(i2);
21628 if(!(aftsTrack->InRPSelection())) continue;
21629 phi2=aftsTrack->Phi();
21630 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21631 // Fill the profile fMixedHarmonicsNestedLoops with 2-p correlations:
21632 fMixedHarmonicsNestedLoops->Fill(0.5,cos(1.*n*(phi1-phi2)),1.); // <cos(1n*(phi1-phi2))>
21633 fMixedHarmonicsNestedLoops->Fill(1.5,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
21634 fMixedHarmonicsNestedLoops->Fill(2.5,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
21635 fMixedHarmonicsNestedLoops->Fill(3.5,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>
21636 fMixedHarmonicsNestedLoops->Fill(4.5,cos(5.*n*(phi1-phi2)),1.); // <cos(5n*(phi1-phi2))>
21637 fMixedHarmonicsNestedLoops->Fill(5.5,cos(6.*n*(phi1-phi2)),1.); // <cos(6n*(phi1-phi2))>
21638 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21639 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21640 } // end of if(nPrim>=2)
21641
21642 // 3-particle correlations:
21643 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21644 {
21645 for(Int_t i1=0;i1<nPrim;i1++)
21646 {
21647 aftsTrack=anEvent->GetTrack(i1);
21648 if(!(aftsTrack->InRPSelection())) continue;
21649 phi1=aftsTrack->Phi();
21650 for(Int_t i2=0;i2<nPrim;i2++)
21651 {
21652 if(i2==i1)continue;
21653 aftsTrack=anEvent->GetTrack(i2);
21654 if(!(aftsTrack->InRPSelection())) continue;
21655 phi2=aftsTrack->Phi();
21656 for(Int_t i3=0;i3<nPrim;i3++)
21657 {
21658 if(i3==i1||i3==i2)continue;
21659 aftsTrack=anEvent->GetTrack(i3);
21660 if(!(aftsTrack->InRPSelection())) continue;
21661 phi3=aftsTrack->Phi();
21662 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
21663 // Fill the profile fMixedHarmonicsNestedLoops with 3-p correlations:
21664 fMixedHarmonicsNestedLoops->Fill( 6.5,cos(2.*n*phi1-n*(phi2+phi3)),1.); // <3>_{2n|1n,1n}
21665 fMixedHarmonicsNestedLoops->Fill( 7.5,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); // <3>_{4n|2n,2n}
21666 fMixedHarmonicsNestedLoops->Fill( 8.5,cos(6.*n*phi1-3.*n*phi2-3.*n*phi3),1.); // <3>_{6n|3n,3n}
21667 fMixedHarmonicsNestedLoops->Fill(10.5,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.); // <3>_{3n|2n,1n}
21668 fMixedHarmonicsNestedLoops->Fill(11.5,cos(4.*n*phi1-3.*n*phi2-1.*n*phi3),1.); // <3>_{4n|3n,1n}
21669 fMixedHarmonicsNestedLoops->Fill(12.5,cos(5.*n*phi1-3.*n*phi2-2.*n*phi3),1.); // <3>_{5n|3n,2n}
21670 fMixedHarmonicsNestedLoops->Fill(13.5,cos(5.*n*phi1-4.*n*phi2-1.*n*phi3),1.); // <3>_{5n|4n,1n}
21671 fMixedHarmonicsNestedLoops->Fill(14.5,cos(6.*n*phi1-4.*n*phi2-2.*n*phi3),1.); // <3>_{6n|4n,2n}
21672 fMixedHarmonicsNestedLoops->Fill(15.5,cos(6.*n*phi1-5.*n*phi2-1.*n*phi3),1.); // <3>_{6n|5n,1n}
21673 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21674 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21675 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21676 } // end of if(nPrim>=3)
21677
21678 // 4-particle correlations:
21679 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
21680 {
21681 for(Int_t i1=0;i1<nPrim;i1++)
21682 {
21683 aftsTrack=anEvent->GetTrack(i1);
21684 if(!(aftsTrack->InRPSelection())) continue;
21685 phi1=aftsTrack->Phi();
21686 for(Int_t i2=0;i2<nPrim;i2++)
21687 {
21688 if(i2==i1)continue;
21689 aftsTrack=anEvent->GetTrack(i2);
21690 if(!(aftsTrack->InRPSelection())) continue;
21691 phi2=aftsTrack->Phi();
21692 for(Int_t i3=0;i3<nPrim;i3++)
21693 {
21694 if(i3==i1||i3==i2)continue;
21695 aftsTrack=anEvent->GetTrack(i3);
21696 if(!(aftsTrack->InRPSelection())) continue;
21697 phi3=aftsTrack->Phi();
21698 for(Int_t i4=0;i4<nPrim;i4++)
21699 {
21700 if(i4==i1||i4==i2||i4==i3)continue;
21701 aftsTrack=anEvent->GetTrack(i4);
21702 if(!(aftsTrack->InRPSelection())) continue;
21703 phi4=aftsTrack->Phi();
21704 if(nPrim==4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush;
21705 // fill the profile with 4-p correlations:
21706 fMixedHarmonicsNestedLoops->Fill(16.5,cos(1.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{1n,1n|1n,1n}
21707 fMixedHarmonicsNestedLoops->Fill(17.5,cos(2.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{2n,2n|2n,2n}
21708 fMixedHarmonicsNestedLoops->Fill(18.5,cos(3.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{3n,3n|3n,3n}
21709 fMixedHarmonicsNestedLoops->Fill(19.5,cos(4.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{4n,4n|4n,4n}
21710 fMixedHarmonicsNestedLoops->Fill(20.5,cos(5.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{5n,5n|5n,5n}
21711 fMixedHarmonicsNestedLoops->Fill(21.5,cos(6.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{6n,6n|6n,6n}
21712 fMixedHarmonicsNestedLoops->Fill(23.5,cos(n*(2.*phi1+1.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{2n,1n|2n,1n}
21713 fMixedHarmonicsNestedLoops->Fill(24.5,cos(n*(3.*phi1+1.*phi2-3.*phi3-1.*phi4)),1.); // <4>_{3n,1n|3n,1n}
21714 fMixedHarmonicsNestedLoops->Fill(25.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{3n,2n|3n,2n}
21715 fMixedHarmonicsNestedLoops->Fill(26.5,cos(n*(4.*phi1+1.*phi2-4.*phi3-1.*phi4)),1.); // <4>_{4n,1n|4n,1n}
21716 fMixedHarmonicsNestedLoops->Fill(27.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{4n,2n|4n,2n}
21717 fMixedHarmonicsNestedLoops->Fill(28.5,cos(n*(4.*phi1+3.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{4n,3n|4n,3n}
21718 fMixedHarmonicsNestedLoops->Fill(29.5,cos(n*(5.*phi1+1.*phi2-5.*phi3-1.*phi4)),1.); // <4>_{5n,1n|5n,1n}
21719 fMixedHarmonicsNestedLoops->Fill(30.5,cos(n*(5.*phi1+2.*phi2-5.*phi3-2.*phi4)),1.); // <4>_{5n,2n|5n,2n}
21720 fMixedHarmonicsNestedLoops->Fill(31.5,cos(n*(5.*phi1+3.*phi2-5.*phi3-3.*phi4)),1.); // <4>_{5n,3n|5n,3n}
21721 fMixedHarmonicsNestedLoops->Fill(32.5,cos(n*(5.*phi1+4.*phi2-5.*phi3-4.*phi4)),1.); // <4>_{5n,4n|5n,4n}
21722 fMixedHarmonicsNestedLoops->Fill(33.5,cos(n*(6.*phi1+1.*phi2-6.*phi3-1.*phi4)),1.); // <4>_{6n,1n|6n,1n}
21723 fMixedHarmonicsNestedLoops->Fill(34.5,cos(n*(6.*phi1+2.*phi2-6.*phi3-2.*phi4)),1.); // <4>_{6n,2n|6n,2n}
21724 fMixedHarmonicsNestedLoops->Fill(35.5,cos(n*(6.*phi1+3.*phi2-6.*phi3-3.*phi4)),1.); // <4>_{6n,3n|6n,3n}
21725 fMixedHarmonicsNestedLoops->Fill(36.5,cos(n*(6.*phi1+4.*phi2-6.*phi3-4.*phi4)),1.); // <4>_{6n,4n|6n,4n}
21726 fMixedHarmonicsNestedLoops->Fill(37.5,cos(n*(6.*phi1+5.*phi2-6.*phi3-5.*phi4)),1.); // <4>_{6n,5n|6n,5n}
21727 fMixedHarmonicsNestedLoops->Fill(39.5,cos(n*(3.*phi1-1.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{3n|1n,1n,1n}
21728 fMixedHarmonicsNestedLoops->Fill(40.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{6n|2n,2n,2n}
21729 fMixedHarmonicsNestedLoops->Fill(42.5,cos(n*(3.*phi1+1.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{3n,1n|2n,2n}
21730 fMixedHarmonicsNestedLoops->Fill(43.5,cos(n*(4.*phi1-2.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{4n|2n,1n,1n}
21731 fMixedHarmonicsNestedLoops->Fill(44.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
21732 fMixedHarmonicsNestedLoops->Fill(45.5,cos(n*(5.*phi1-2.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{5n|2n,2n,1n}
21733 fMixedHarmonicsNestedLoops->Fill(46.5,cos(n*(5.*phi1-3.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{5n|3n,1n,1n}
21734 fMixedHarmonicsNestedLoops->Fill(47.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{5n,1n|3n,3n}
21735 fMixedHarmonicsNestedLoops->Fill(48.5,cos(n*(5.*phi1+3.*phi2-4.*phi3-4.*phi4)),1.); // <4>_{5n,3n|4n,4n}
21736 fMixedHarmonicsNestedLoops->Fill(49.5,cos(n*(6.*phi1-4.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{6n|4n,1n,1n}
21737 fMixedHarmonicsNestedLoops->Fill(50.5,cos(n*(6.*phi1+2.*phi2-4.*phi3-4.*phi4)),1.); // <4>_{6n,2n|4n,4n}
21738 fMixedHarmonicsNestedLoops->Fill(51.5,cos(n*(6.*phi1+4.*phi2-5.*phi3-5.*phi4)),1.); // <4>_{6n,4n|5n,5n}
21739 fMixedHarmonicsNestedLoops->Fill(53.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{4n,1n|3n,2n}
21740 fMixedHarmonicsNestedLoops->Fill(54.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{5n,1n|4n,2n}
21741 fMixedHarmonicsNestedLoops->Fill(55.5,cos(n*(5.*phi1+2.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{5n,2n|4n,3n}
21742 fMixedHarmonicsNestedLoops->Fill(56.5,cos(n*(6.*phi1+1.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{6n,1n|4n,3n}
21743 fMixedHarmonicsNestedLoops->Fill(57.5,cos(n*(6.*phi1+1.*phi2-5.*phi3-2.*phi4)),1.); // <4>_{6n,1n|5n,2n}
21744 fMixedHarmonicsNestedLoops->Fill(58.5,cos(n*(6.*phi1-3.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{6n|3n,2n,1n}
21745 fMixedHarmonicsNestedLoops->Fill(59.5,cos(n*(6.*phi1+2.*phi2-5.*phi3-3.*phi4)),1.); // <4>_{6n,2n|5n,3n}
21746 fMixedHarmonicsNestedLoops->Fill(60.5,cos(n*(6.*phi1+3.*phi2-5.*phi3-4.*phi4)),1.); // <4>_{6n,3n|5n,4n}
21747 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21748 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21749 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21750 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21751 } // end of if(nPrim>=)
21752
21753 // 5-particle correlations:
21754 if(nPrim>=5 && nPrim<=fMaxAllowedMultiplicity)
21755 {
21756 for(Int_t i1=0;i1<nPrim;i1++)
21757 {
21758 aftsTrack=anEvent->GetTrack(i1);
21759 if(!(aftsTrack->InRPSelection())) continue;
21760 phi1=aftsTrack->Phi();
21761 for(Int_t i2=0;i2<nPrim;i2++)
21762 {
21763 if(i2==i1)continue;
21764 aftsTrack=anEvent->GetTrack(i2);
21765 if(!(aftsTrack->InRPSelection())) continue;
21766 phi2=aftsTrack->Phi();
21767 for(Int_t i3=0;i3<nPrim;i3++)
21768 {
21769 if(i3==i1||i3==i2)continue;
21770 aftsTrack=anEvent->GetTrack(i3);
21771 if(!(aftsTrack->InRPSelection())) continue;
21772 phi3=aftsTrack->Phi();
21773 for(Int_t i4=0;i4<nPrim;i4++)
21774 {
21775 if(i4==i1||i4==i2||i4==i3)continue;
21776 aftsTrack=anEvent->GetTrack(i4);
21777 if(!(aftsTrack->InRPSelection())) continue;
21778 phi4=aftsTrack->Phi();
21779 for(Int_t i5=0;i5<nPrim;i5++)
21780 {
21781 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21782 aftsTrack=anEvent->GetTrack(i5);
21783 if(!(aftsTrack->InRPSelection())) continue;
21784 phi5=aftsTrack->Phi();
21785 if(nPrim==5) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<"\r"<<flush;
21786 // fill the profile with 5-p correlations:
21787 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))>
21788 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))>
21789 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))>
21790 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))>
21791 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))>
21792 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))>
21793 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))>
21794 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))>
21795 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))>
21796 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))>
21797 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))>
21798 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))>
21799 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))>
21800 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))>
21801 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))>
21802 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))>
21803 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))>
21804 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))>
21805 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))>
21806 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))>
21807 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))>
21808 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))>
21809 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))>
21810 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))>
21811 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))>
21812 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))>
21813 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))>
21814 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))>
21815 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))>
21816 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))>
21817 //fMixedHarmonicsNestedLoops->Fill(91.5,-44.,1.); // empty
21818 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))>
21819 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))>
21820 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))>
21821 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))>
21822 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))>
21823 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))>
21824 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))>
21825 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))>
21826 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))>
21827 //fMixedHarmonicsNestedLoops->Fill(101.5,-44.,1.); // empty
21828 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))>
21829 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))>
21830 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))>
21831 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))>
21832 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))>
21833 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))>
21834 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))>
21835 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))>
21836 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))>
21837 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))>
21838 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))>
21839 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))>
21840 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))>
21841 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))>
21842 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))>
21843 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))>
21844 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))>
21845 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))>
21846 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))>
21847 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))>
21848 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))>
21849 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))>
21850 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))>
21851 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))>
21852 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))>
21853 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))>
21854 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))>
21855 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))>
21856 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))>
21857 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
21858 //fMixedHarmonicsNestedLoops->Fill(132.5,-44.,1.); // empty
21859 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))>
21860 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))>
21861 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))>
21862 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))>
21863 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))>
21864 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))>
21865 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))>
21866 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))>
21867 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))>
21868 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))>
21869 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))>
21870 //fMixedHarmonicsNestedLoops->Fill(144.5,-44.,1.); // empty
21871 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))>
21872 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))>
21873 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))>
21874 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21875 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21876 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21877 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21878 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21879 } // end of if(nPrim>=5)
21880
21881 // QW44
489d5531 21882
e1d101a6 21883} // end of void AliFlowAnalysisWithQCumulants::EvaluateMixedHarmonicsWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 21884
e1d101a6 21885//================================================================================================================
489d5531 21886
21887void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrelations()
21888{
21889 // Cross-check results for multiparticle correlations needed for int. flow: results from Q-vectors vs results from nested loops.
21890
21891 cout<<endl;
21892 cout<<endl;
21893 cout<<" *****************************************"<<endl;
21894 cout<<" **** cross-checking the correlations ****"<<endl;
21895 cout<<" **** for integrated flow ****"<<endl;
403e3389 21896 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 21897 {
21898 cout<<" **** (particle weights not used) ****"<<endl;
21899 } else
21900 {
21901 cout<<" **** (particle weights used) ****"<<endl;
21902 }
21903 cout<<" *****************************************"<<endl;
21904 cout<<endl;
21905 cout<<endl;
21906
403e3389 21907 Int_t ciMax = 64; // to be improved (removed eventually when I calculate 6th and 8th order with particle weights)
489d5531 21908
403e3389 21909 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 21910 {
21911 ciMax = 11;
21912 }
21913
21914 for(Int_t ci=1;ci<=ciMax;ci++)
21915 {
21916 if(strcmp((fIntFlowCorrelationsAllPro->GetXaxis())->GetBinLabel(ci), "") == 0) continue; // to be improved (access finalized histogram here)
21917 cout<<(fIntFlowCorrelationsAllPro->GetXaxis())->GetBinLabel(ci)<<":"<<endl; // to be improved (access finalized histogram here)
21918 cout<<"from Q-vectors = "<<fIntFlowCorrelationsAllPro->GetBinContent(ci)<<endl; // to be improved (access finalized histogram here)
21919 cout<<"from nested loops = "<<fIntFlowDirectCorrelations->GetBinContent(ci)<<endl;
21920 cout<<endl;
21921 }
e1d101a6 21922
21923 if(!fCalculateMixedHarmonics){return;}
21924
21925 cout<<endl;
21926 cout<<endl;
21927 cout<<" *****************************************"<<endl;
21928 cout<<" **** cross-checking the correlations ****"<<endl;
21929 cout<<" **** for mixed harmonics ****"<<endl;
21930 cout<<" *****************************************"<<endl;
21931 cout<<endl;
21932 cout<<endl;
21933
21934 // 2-p:
21935 for(Int_t ci=1;ci<=6;ci++)
21936 {
21937 cout<<(f2pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21938 cout<<"from Q-vectors = "<<f2pCorrelations->GetBinContent(ci)<<endl;
21939 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci)<<endl;
21940 cout<<endl;
21941 } // end of for(Int_t ci=1;ci<=6;ci++)
21942
21943 // 3-p:
21944 for(Int_t ci=1;ci<=10;ci++)
21945 {
21946 if(4==ci){continue;} // skipping the empty bins
21947 cout<<(f3pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21948 cout<<"from Q-vectors = "<<f3pCorrelations->GetBinContent(ci)<<endl;
21949 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6)<<endl;
21950 cout<<endl;
21951 } // end of for(Int_t ci=1;ci<=10;ci++)
21952
21953 // 4-p:
21954 for(Int_t ci=1;ci<=45;ci++)
21955 {
21956 if(7==ci||23==ci||26==ci||37==ci){continue;} // skipping the empty bins
21957 cout<<(f4pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21958 cout<<"from Q-vectors = "<<f4pCorrelations->GetBinContent(ci)<<endl;
21959 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10)<<endl;
21960 //if(TMath::Abs(f4pCorrelations->GetBinContent(ci)-fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10))
21961 // > 1.e-10){exit(0);}
21962 cout<<endl;
21963 } // end of for(Int_t ci=1;ci<=45;ci++)
21964
21965 for(Int_t ci=1;ci<=87;ci++)
21966 {
21967 if(31==ci||41==ci||72==ci||84==ci){continue;} // skipping the empty bins
21968 cout<<(f5pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21969 cout<<"from Q-vectors = "<<f5pCorrelations->GetBinContent(ci)<<endl;
21970 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10+45)<<endl;
21971 if(TMath::Abs(f5pCorrelations->GetBinContent(ci)-fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10+45))
21972 > 1.e-10){exit(0);}
21973 cout<<endl;
21974 } // end of for(Int_t ci=1;ci<=87;ci++)
21975
21976 return;
21977
489d5531 21978} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrelations()
21979
e1d101a6 21980//=======================================================================================================================
489d5531 21981
489d5531 21982void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrectionTermsForNUA()
21983{
21984 // Cross-check results for corrections terms for non-uniform acceptance needed for int. flow: results from Q-vectors vs results from nested loops.
21985
21986 cout<<endl;
21987 cout<<endl;
21988 cout<<" *********************************************"<<endl;
21989 cout<<" **** cross-checking the correction terms ****"<<endl;
21990 cout<<" **** for non-uniform acceptance relevant ****"<<endl;
21991 cout<<" **** for integrated flow ****"<<endl;
403e3389 21992 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 21993 {
21994 cout<<" **** (particle weights not used) ****"<<endl;
21995 } else
21996 {
21997 cout<<" **** (particle weights used) ****"<<endl;
21998 }
21999 cout<<" *********************************************"<<endl;
22000 cout<<endl;
22001 cout<<endl;
22002
b92ea2b9 22003 for(Int_t ci=1;ci<=4;ci++) // correction term index (to be improved - hardwired 4)
489d5531 22004 {
22005 for(Int_t sc=0;sc<2;sc++) // sin or cos term
22006 {
22007 if(strcmp((fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->GetBinLabel(ci), "") == 0) continue; // to be improved (access finalized histogram here)
22008 cout<<(fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->GetBinLabel(ci)<<":"<<endl; // to be improved (access finalized histogram here)
22009 cout<<"from Q-vectors = "<<fIntFlowCorrectionTermsForNUAPro[sc]->GetBinContent(ci)<<endl; // to be improved (access finalized histogram here)
22010 cout<<"from nested loops = "<<fIntFlowDirectCorrectionTermsForNUA[sc]->GetBinContent(ci)<<endl;
22011 cout<<endl;
22012 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos term
22013 } // end of for(Int_t ci=1;ci<=10;ci++) // correction term index
22014
22015} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrectionTermsForNUA()
22016
e1d101a6 22017//=======================================================================================================================
489d5531 22018
0328db2d 22019void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent)
489d5531 22020{
22021 // Evaluate with nested loops multiparticle correlations for integrated flow (using the particle weights).
22022
22023 // Results are stored in profile fIntFlowDirectCorrelations.
22024 // Remark 1: When particle weights are used the binning of fIntFlowDirectCorrelations is organized as follows:
22025 //
22026 // 1st bin: <2>_{1n|1n} = two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
22027 // 2nd bin: <2>_{2n|2n} = two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
22028 // 3rd bin: <2>_{3n|3n} = two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
22029 // 4th bin: <2>_{4n|4n} = two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
22030 // 5th bin: ---- EMPTY ----
22031 // 6th bin: <3>_{2n|1n,1n} = three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
22032 // 7th bin: <3>_{3n|2n,1n} = ...
22033 // 8th bin: <3>_{4n|2n,2n} = ...
22034 // 9th bin: <3>_{4n|3n,1n} = ...
22035 // 10th bin: ---- EMPTY ----
22036 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
22037 // 12th bin: <4>_{2n,1n|2n,1n} = ...
22038 // 13th bin: <4>_{2n,2n|2n,2n} = ...
22039 // 14th bin: <4>_{3n|1n,1n,1n} = ...
22040 // 15th bin: <4>_{3n,1n|3n,1n} = ...
22041 // 16th bin: <4>_{3n,1n|2n,2n} = ...
22042 // 17th bin: <4>_{4n|2n,1n,1n} = ...
22043 // 18th bin: ---- EMPTY ----
22044 // 19th bin: <5>_{2n|1n,1n,1n,1n} = ...
22045 // 20th bin: <5>_{2n,2n|2n,1n,1n} = ...
22046 // 21st bin: <5>_{3n,1n|2n,1n,1n} = ...
22047 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = ...
22048 // 23rd bin: ---- EMPTY ----
22049 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = ...
22050 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = ...
22051 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = ...
22052 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = ...
22053 // 28th bin: ---- EMPTY ----
22054 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = ...
22055 // 30th bin: ---- EMPTY ----
22056 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = ...
57340a27 22057
489d5531 22058 // Remark 2: When particle weights are used there are some extra correlations. They are stored in
22059 // fIntFlowExtraDirectCorrelations binning of which is organized as follows:
57340a27 22060
489d5531 22061 // 1st bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
22062 // 2nd bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
22063 // ...
57340a27 22064
489d5531 22065 Int_t nPrim = anEvent->NumberOfTracks();
22066 AliFlowTrackSimple *aftsTrack = NULL;
22067 //Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
22068 //Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
22069 Double_t phi1=0., phi2=0., phi3=0., phi4=0.;
22070 Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1.;
22071 Int_t n = fHarmonic;
22072 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 22073 Double_t dMult = (*fSpk)(0,0);
489d5531 22074 cout<<endl;
22075 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
22076 if(dMult<2)
22077 {
22078 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
22079 } else if (dMult>fMaxAllowedMultiplicity)
22080 {
22081 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
22082 } else
22083 {
22084 cout<<"... evaluating nested loops (using particle weights) ..."<<endl;
22085 }
22086
22087 // 2-particle correlations:
22088 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
22089 {
22090 // 2 nested loops multiparticle correlations using particle weights:
22091 for(Int_t i1=0;i1<nPrim;i1++)
22092 {
22093 aftsTrack=anEvent->GetTrack(i1);
22094 if(!(aftsTrack->InRPSelection())) continue;
22095 phi1=aftsTrack->Phi();
22096 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
22097 for(Int_t i2=0;i2<nPrim;i2++)
22098 {
22099 if(i2==i1)continue;
22100 aftsTrack=anEvent->GetTrack(i2);
22101 if(!(aftsTrack->InRPSelection())) continue;
22102 phi2=aftsTrack->Phi();
22103 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22104 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
22105 // 2-p correlations using particle weights:
22106 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),wPhi1*wPhi2); // <w1 w2 cos( n*(phi1-phi2))>
22107 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))>
22108 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))>
22109 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))>
22110 // extra correlations:
22111 // 2-p extra correlations (do not appear if particle weights are not used):
22112 if(fUsePhiWeights) fIntFlowExtraDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),pow(wPhi1,3)*wPhi2); // <w1^3 w2 cos(n*(phi1-phi2))>
22113 // ...
22114 } // end of for(Int_t i2=0;i2<nPrim;i2++)
22115 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22116 } // end of if(nPrim>=2)
22117
22118 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
57340a27 22119 {
489d5531 22120 // 3 nested loops multiparticle correlations using particle weights:
22121 for(Int_t i1=0;i1<nPrim;i1++)
57340a27 22122 {
489d5531 22123 aftsTrack=anEvent->GetTrack(i1);
22124 if(!(aftsTrack->InRPSelection())) continue;
22125 phi1=aftsTrack->Phi();
22126 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
22127 for(Int_t i2=0;i2<nPrim;i2++)
22128 {
22129 if(i2==i1)continue;
22130 aftsTrack=anEvent->GetTrack(i2);
22131 if(!(aftsTrack->InRPSelection())) continue;
22132 phi2=aftsTrack->Phi();
22133 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22134 for(Int_t i3=0;i3<nPrim;i3++)
22135 {
22136 if(i3==i1||i3==i2)continue;
22137 aftsTrack=anEvent->GetTrack(i3);
22138 if(!(aftsTrack->InRPSelection())) continue;
22139 phi3=aftsTrack->Phi();
22140 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
22141 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
22142 // 3-p correlations using particle weights:
22143 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))>
22144 // ...
22145 // extra correlations:
22146 // 2-p extra correlations (do not appear if particle weights are not used):
22147 if(fUsePhiWeights) fIntFlowExtraDirectCorrelations->Fill(1.5,cos(n*(phi1-phi2)),wPhi1*wPhi2*pow(wPhi3,2)); // <w1 w2 w3^2 cos(n*(phi1-phi2))>
22148 // ...
22149 // 3-p extra correlations (do not appear if particle weights are not used):
22150 // ...
22151 } // end of for(Int_t i3=0;i3<nPrim;i3++)
22152 } // end of for(Int_t i2=0;i2<nPrim;i2++)
22153 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22154 } // end of if(nPrim>=3)
57340a27 22155
489d5531 22156 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
22157 {
22158 // 4 nested loops multiparticle correlations using particle weights:
22159 for(Int_t i1=0;i1<nPrim;i1++)
22160 {
22161 aftsTrack=anEvent->GetTrack(i1);
22162 if(!(aftsTrack->InRPSelection())) continue;
22163 phi1=aftsTrack->Phi();
22164 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
22165 for(Int_t i2=0;i2<nPrim;i2++)
22166 {
22167 if(i2==i1)continue;
22168 aftsTrack=anEvent->GetTrack(i2);
22169 if(!(aftsTrack->InRPSelection())) continue;
22170 phi2=aftsTrack->Phi();
22171 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22172 for(Int_t i3=0;i3<nPrim;i3++)
22173 {
22174 if(i3==i1||i3==i2)continue;
22175 aftsTrack=anEvent->GetTrack(i3);
22176 if(!(aftsTrack->InRPSelection())) continue;
22177 phi3=aftsTrack->Phi();
22178 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
22179 for(Int_t i4=0;i4<nPrim;i4++)
22180 {
22181 if(i4==i1||i4==i2||i4==i3)continue;
22182 aftsTrack=anEvent->GetTrack(i4);
22183 if(!(aftsTrack->InRPSelection())) continue;
22184 phi4=aftsTrack->Phi();
22185 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
22186 if(nPrim>=4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush; // to be improved (replace eventually this if statement with if(nPrim==4))
22187 // 4-p correlations using particle weights:
22188 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(10.5,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4);
22189 // extra correlations:
22190 // 2-p extra correlations (do not appear if particle weights are not used):
22191 // ...
22192 // 3-p extra correlations (do not appear if particle weights are not used):
22193 // ...
22194 // 4-p extra correlations (do not appear if particle weights are not used):
22195 // ...
22196 } // end of for(Int_t i4=0;i4<nPrim;i4++)
22197 } // end of for(Int_t i3=0;i3<nPrim;i3++)
22198 } // end of for(Int_t i2=0;i2<nPrim;i2++)
22199 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22200 } // end of if(nPrim>=4)
57340a27 22201
489d5531 22202 cout<<endl;
57340a27 22203
489d5531 22204} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent)
57340a27 22205
e1d101a6 22206//=======================================================================================================================
489d5531 22207
489d5531 22208void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowExtraCorrelations()
57340a27 22209{
489d5531 22210 // Cross-check results for extra multiparticle correlations needed for int. flow
22211 // which appear only when particle weights are used: results from Q-vectors vs results from nested loops.
57340a27 22212
489d5531 22213 cout<<endl;
22214 cout<<endl;
22215 cout<<" ***********************************************"<<endl;
22216 cout<<" **** cross-checking the extra correlations ****"<<endl;
22217 cout<<" **** for integrated flow ****"<<endl;
22218 cout<<" ***********************************************"<<endl;
22219 cout<<endl;
22220 cout<<endl;
22221
22222 for(Int_t eci=1;eci<=2;eci++) // to be improved (increased eciMax eventually when I calculate 6th and 8th)
57340a27 22223 {
489d5531 22224 if(strcmp((fIntFlowExtraCorrelationsPro->GetXaxis())->GetBinLabel(eci), "") == 0) continue;
22225 cout<<(fIntFlowExtraCorrelationsPro->GetXaxis())->GetBinLabel(eci)<<":"<<endl;
22226 cout<<"from Q-vectors = "<<fIntFlowExtraCorrelationsPro->GetBinContent(eci)<<endl;
22227 cout<<"from nested loops = "<<fIntFlowExtraDirectCorrelations->GetBinContent(eci)<<endl;
22228 cout<<endl;
22229 }
57340a27 22230
489d5531 22231} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowExtraCorrelations()
57340a27 22232
e1d101a6 22233//=======================================================================================================================
3b552efe 22234
0328db2d 22235void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 22236{
22237 // Evaluate with nested loops correction terms for non-uniform acceptance relevant for NONAME integrated flow (to be improved (name)).
22238 //
22239 // Remark: Both sin and cos correction terms are calculated in this method. Sin terms are stored in fIntFlowDirectCorrectionTermsForNUA[0],
22240 // and cos terms in fIntFlowDirectCorrectionTermsForNUA[1]. Binning of fIntFlowDirectCorrectionTermsForNUA[sc] is organized as follows
22241 // (sc stands for either sin or cos):
22242
22243 // 1st bin: <<sc(n*(phi1))>>
22244 // 2nd bin: <<sc(n*(phi1+phi2))>>
22245 // 3rd bin: <<sc(n*(phi1-phi2-phi3))>>
22246 // 4th bin: <<sc(n*(2phi1-phi2))>>
22247
22248 Int_t nPrim = anEvent->NumberOfTracks();
22249 AliFlowTrackSimple *aftsTrack = NULL;
22250 Double_t phi1=0., phi2=0., phi3=0.;
22251 Int_t n = fHarmonic;
22252 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 22253 Double_t dMult = (*fSpk)(0,0);
489d5531 22254 cout<<endl;
22255 cout<<"Correction terms for non-uniform acceptance: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
22256 if(dMult<1)
3b552efe 22257 {
489d5531 22258 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
22259 } else if (dMult>fMaxAllowedMultiplicity)
3b552efe 22260 {
489d5531 22261 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
22262 } else
22263 {
22264 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
22265 }
22266
22267 if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
22268 {
22269 // 1-particle correction terms for non-uniform acceptance:
22270 for(Int_t i1=0;i1<nPrim;i1++)
22271 {
22272 aftsTrack=anEvent->GetTrack(i1);
22273 if(!(aftsTrack->InRPSelection())) continue;
22274 phi1=aftsTrack->Phi();
22275 if(nPrim==1) cout<<i1<<"\r"<<flush;
22276 // sin terms:
22277 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(0.5,sin(n*phi1),1.); // <sin(n*phi1)>
22278 // cos terms:
22279 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(0.5,cos(n*phi1),1.); // <cos(n*phi1)>
22280 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22281 } // end of if(nPrim>=1)
22282
22283 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
22284 {
22285 // 2-particle correction terms for non-uniform acceptance:
22286 for(Int_t i1=0;i1<nPrim;i1++)
22287 {
22288 aftsTrack=anEvent->GetTrack(i1);
22289 if(!(aftsTrack->InRPSelection())) continue;
22290 phi1=aftsTrack->Phi();
22291 for(Int_t i2=0;i2<nPrim;i2++)
3b552efe 22292 {
489d5531 22293 if(i2==i1)continue;
22294 aftsTrack=anEvent->GetTrack(i2);
22295 if(!(aftsTrack->InRPSelection())) continue;
22296 phi2=aftsTrack->Phi();
22297 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
22298 // sin terms:
3b552efe 22299 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(1.5,sin(n*(phi1+phi2)),1.); // <<sin(n*(phi1+phi2))>>
489d5531 22300 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(3.5,sin(n*(2*phi1-phi2)),1.); // <<sin(n*(2*phi1-phi2))>>
22301 // cos terms:
3b552efe 22302 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(1.5,cos(n*(phi1+phi2)),1.); // <<cos(n*(phi1+phi2))>>
489d5531 22303 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(3.5,cos(n*(2*phi1-phi2)),1.); // <<cos(n*(2*phi1-phi2))>>
22304 } // end of for(Int_t i2=0;i2<nPrim;i2++)
22305 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22306 } // end of if(nPrim>=2)
22307
22308 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
22309 {
22310 // 3-particle correction terms for non-uniform acceptance:
22311 for(Int_t i1=0;i1<nPrim;i1++)
22312 {
22313 aftsTrack=anEvent->GetTrack(i1);
22314 if(!(aftsTrack->InRPSelection())) continue;
22315 phi1=aftsTrack->Phi();
22316 for(Int_t i2=0;i2<nPrim;i2++)
22317 {
22318 if(i2==i1)continue;
22319 aftsTrack=anEvent->GetTrack(i2);
22320 if(!(aftsTrack->InRPSelection())) continue;
22321 phi2=aftsTrack->Phi();
22322 for(Int_t i3=0;i3<nPrim;i3++)
22323 {
22324 if(i3==i1||i3==i2)continue;
22325 aftsTrack=anEvent->GetTrack(i3);
22326 if(!(aftsTrack->InRPSelection())) continue;
22327 phi3=aftsTrack->Phi();
22328 if(nPrim>=3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush; // to be improved (eventually I will change this if statement)
22329 // sin terms:
22330 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(2.5,sin(n*(phi1-phi2-phi3)),1.); // <<sin(n*(phi1-phi2-phi3))>>
22331 // cos terms:
22332 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(2.5,cos(n*(phi1-phi2-phi3)),1.); // <<cos(n*(phi1-phi2-phi3))>>
22333 } // end of for(Int_t i3=0;i3<nPrim;i3++)
22334 } // end of for(Int_t i2=0;i2<nPrim;i2++)
22335 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22336 } // end of if(nPrim>=3)
22337
22338 cout<<endl;
22339}
64e500e3 22340
e1d101a6 22341//=======================================================================================================================
64e500e3 22342
0328db2d 22343void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22344{
22345 // Evaluate reduced correlations with nested loops without using the particle weights.
22346
22347 // Remark 1: Reduced correlations are evaluated in pt bin number fCrossCheckInPtBinNo and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22348 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrelations[t][pe][ci], where indices runs as follows:
22349 // [0=RP,1=POI][0=Pt,1=Eta][0=<2'>,1=<4'>,2=<6'>,3=<8'>]
22350 // Remark 3: <2'> = <cos(n*(psi1-phi2))>
22351 // <4'> = <cos(n*(psi1+phi2-phi3-phi4))>
22352 // ...
22353
2a98ceb8 22354 Int_t typeFlag = 0;
22355 Int_t ptEtaFlag = 0;
489d5531 22356 if(type == "RP")
22357 {
22358 typeFlag = 0;
22359 } else if(type == "POI")
22360 {
22361 typeFlag = 1;
22362 }
22363 if(ptOrEta == "Pt")
22364 {
22365 ptEtaFlag = 0;
22366 } else if(ptOrEta == "Eta")
22367 {
22368 ptEtaFlag = 1;
22369 }
22370 // shortcuts:
22371 Int_t t = typeFlag;
22372 Int_t pe = ptEtaFlag;
22373
22374 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22375 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22376 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22377
22378 Int_t nPrim = anEvent->NumberOfTracks();
22379 AliFlowTrackSimple *aftsTrack = NULL;
22380
22381 Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22382
3b552efe 22383 Int_t n = fHarmonic;
489d5531 22384
22385 // 2'-particle correlations:
22386 for(Int_t i1=0;i1<nPrim;i1++)
22387 {
22388 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22389 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22390 if(typeFlag==1) // this is diff flow of POIs
489d5531 22391 {
22392 if(ptOrEta == "Pt")
22393 {
22394 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22395 } else if (ptOrEta == "Eta")
22396 {
22397 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22398 }
22399 } else // this is diff flow of RPs
22400 {
489d5531 22401 if(ptOrEta == "Pt")
22402 {
22403 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22404 } else if (ptOrEta == "Eta")
22405 {
22406 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22407 }
22408 }
489d5531 22409
22410 psi1=aftsTrack->Phi();
22411 for(Int_t i2=0;i2<nPrim;i2++)
22412 {
22413 if(i2==i1)continue;
22414 aftsTrack=anEvent->GetTrack(i2);
22415 // RP condition (!(first) particle in the correlator must be RP):
22416 if(!(aftsTrack->InRPSelection()))continue;
22417 phi2=aftsTrack->Phi();
22418 // 2'-particle correlations:
22419 fDiffFlowDirectCorrelations[t][pe][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(1.*n*(psi1-phi2)),1.); // <cos(n*(psi1-phi2))
22420 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22421 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22422
22423 /*
22424
22425 // 3'-particle correlations:
22426 for(Int_t i1=0;i1<nPrim;i1++)
22427 {
22428 aftsTrack=anEvent->GetTrack(i1);
22429 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22430 if(ptOrEta == "Pt")
22431 {
22432 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22433 } else if (ptOrEta == "Eta")
22434 {
22435 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22436 }
22437 psi1=aftsTrack->Phi();
22438 for(Int_t i2=0;i2<nPrim;i2++)
22439 {
22440 if(i2==i1)continue;
22441 aftsTrack=anEvent->GetTrack(i2);
22442 // RP condition (!(first) particle in the correlator must be RP):
22443 if(!(aftsTrack->InRPSelection())) continue;
22444 phi2=aftsTrack->Phi();
22445 for(Int_t i3=0;i3<nPrim;i3++)
22446 {
22447 if(i3==i1||i3==i2)continue;
22448 aftsTrack=anEvent->GetTrack(i3);
22449 // RP condition (!(first) particle in the correlator must be RP):
22450 if(!(aftsTrack->InRPSelection())) continue;
22451 phi3=aftsTrack->Phi();
22452 // 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))>
22453 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22454 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22455 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22456
22457 */
22458
22459 // 4'-particle correlations:
22460 for(Int_t i1=0;i1<nPrim;i1++)
22461 {
22462 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22463 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22464 if(typeFlag==1) // this is diff flow of POIs
489d5531 22465 {
22466 if(ptOrEta == "Pt")
22467 {
22468 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22469 } else if (ptOrEta == "Eta")
22470 {
22471 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22472 }
22473 } else // this is diff flow of RPs
22474 {
489d5531 22475 if(ptOrEta == "Pt")
22476 {
22477 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22478 } else if (ptOrEta == "Eta")
22479 {
22480 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22481 }
22482 }
489d5531 22483
22484 psi1=aftsTrack->Phi();
22485 for(Int_t i2=0;i2<nPrim;i2++)
22486 {
22487 if(i2==i1) continue;
22488 aftsTrack=anEvent->GetTrack(i2);
22489 // RP condition (!(first) particle in the correlator must be RP):
22490 if(!(aftsTrack->InRPSelection())) continue;
22491 phi2=aftsTrack->Phi();
22492 for(Int_t i3=0;i3<nPrim;i3++)
22493 {
22494 if(i3==i1||i3==i2) continue;
22495 aftsTrack=anEvent->GetTrack(i3);
22496 // RP condition (!(first) particle in the correlator must be RP):
22497 if(!(aftsTrack->InRPSelection())) continue;
22498 phi3=aftsTrack->Phi();
22499 for(Int_t i4=0;i4<nPrim;i4++)
22500 {
22501 if(i4==i1||i4==i2||i4==i3) continue;
22502 aftsTrack=anEvent->GetTrack(i4);
22503 // RP condition (!(first) particle in the correlator must be RP):
22504 if(!(aftsTrack->InRPSelection())) continue;
22505 phi4=aftsTrack->Phi();
22506 // 4'-particle correlations:
22507 fDiffFlowDirectCorrelations[t][pe][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3-phi4)),1.); // <cos(n(psi1+phi2-phi3-phi4))>
22508 }//end of for(Int_t i4=0;i4<nPrim;i4++)
22509 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22510 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22511 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22512
22513 // count # of RPs and POIs in selected pt and eta bins for cross-checkings:
3b552efe 22514 for(Int_t i=0;i<nPrim;i++)
22515 {
22516 aftsTrack=anEvent->GetTrack(i);
22517 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22518 if(typeFlag==1) // this is diff flow of POIs
489d5531 22519 {
22520 if(ptOrEta == "Pt")
22521 {
22522 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22523 } else if (ptOrEta == "Eta")
22524 {
22525 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22526 }
22527 } else // this is diff flow of RPs
22528 {
489d5531 22529 if(ptOrEta == "Pt")
22530 {
22531 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22532 } else if (ptOrEta == "Eta")
22533 {
22534 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22535 }
22536 }
22537 if(t==1)t++;
22538 fNoOfParticlesInBin->Fill(t+pe+0.5);
489d5531 22539 }
22540
22541} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoops(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22542
e1d101a6 22543//=======================================================================================================================
489d5531 22544
64e500e3 22545void AliFlowAnalysisWithQCumulants::EvaluateOtherDiffCorrelatorsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22546{
22547 // Evaluate other differential correlators with nested loops without using the particle weights.
22548
22549 // Remark 1: Other differential correlators are evaluated in pt bin number fCrossCheckInPtBinNo
22550 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22551 // Remark 2: Results are stored in 1 bin profiles fOtherDirectDiffCorrelators[t][pe][sc][ci], where indices runs as follows:
22552 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms][ci = correlator index]
22553 // Remark 3: Correlator index 'ci' runs as follows:
22554 // 0: <exp(n*(psi1-3phi2+2phi3))> (Teaney-Yan correlator)
22555
22556 Int_t typeFlag = 0;
22557 Int_t ptEtaFlag = 0;
22558 if(type == "RP")
22559 {
22560 typeFlag = 0;
22561 } else if(type == "POI")
22562 {
22563 typeFlag = 1;
22564 }
22565 if(ptOrEta == "Pt")
22566 {
22567 ptEtaFlag = 0;
22568 } else if(ptOrEta == "Eta")
22569 {
22570 ptEtaFlag = 1;
22571 }
22572 // shortcuts:
22573 Int_t t = typeFlag;
22574 Int_t pe = ptEtaFlag;
22575
22576 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22577 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22578 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22579
22580 Int_t nPrim = anEvent->NumberOfTracks();
22581 AliFlowTrackSimple *aftsTrack = NULL;
22582
22583 Double_t psi1=0., phi2=0., phi3=0.;
22584
22585 Int_t n = fHarmonic;
22586
22587 // 3-p correlators:
22588 for(Int_t i1=0;i1<nPrim;i1++)
22589 {
22590 aftsTrack=anEvent->GetTrack(i1);
22591 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22592 if(typeFlag==1) // this is diff flow of POIs
22593 {
22594 if(ptOrEta == "Pt")
22595 {
22596 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22597 } else if (ptOrEta == "Eta")
22598 {
22599 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22600 }
22601 } else // this is diff flow of RPs
22602 {
22603 if(ptOrEta == "Pt")
22604 {
22605 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22606 } else if (ptOrEta == "Eta")
22607 {
22608 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22609 }
22610 }
22611 psi1=aftsTrack->Phi();
22612 for(Int_t i2=0;i2<nPrim;i2++)
22613 {
22614 if(i2==i1) continue;
22615 aftsTrack=anEvent->GetTrack(i2);
22616 // RP condition (!(first) particle in the correlator must be RP):
22617 if(!(aftsTrack->InRPSelection())) continue;
22618 phi2=aftsTrack->Phi();
22619 for(Int_t i3=0;i3<nPrim;i3++)
22620 {
22621 if(i3==i1||i3==i2) continue;
22622 aftsTrack=anEvent->GetTrack(i3);
22623 // RP condition (!(first) particle in the correlator must be RP):
22624 if(!(aftsTrack->InRPSelection())) continue;
22625 phi3=aftsTrack->Phi();
22626 // Fill 3-p correlators:
22627 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))>
22628 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22629 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22630 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22631} // end of void AliFlowAnalysisWithQCumulants::EvaluateOtherDiffCorrelatorsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22632
e1d101a6 22633//=======================================================================================================================
489d5531 22634
22635void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrelations(TString type, TString ptOrEta)
22636{
22637 // Compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22638
2a98ceb8 22639 Int_t typeFlag = 0;
22640 Int_t ptEtaFlag = 0;
489d5531 22641 if(type == "RP")
22642 {
22643 typeFlag = 0;
22644 } else if(type == "POI")
22645 {
22646 typeFlag = 1;
22647 }
22648 if(ptOrEta == "Pt")
22649 {
22650 ptEtaFlag = 0;
22651 } else if(ptOrEta == "Eta")
22652 {
22653 ptEtaFlag = 1;
22654 }
22655 // shortcuts:
22656 Int_t t = typeFlag;
22657 Int_t pe = ptEtaFlag;
22658
22659 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22660 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22661 TString reducedCorrelations[4] = {"<<cos(n(psi1-phi2))>>","<<cos(n(psi1+phi2-phi3-phi4))>>","",""}; // to be improved (access this from pro or hist)
22662 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22663 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22664
22665 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22666
22667
22668 cout<<endl;
22669 cout<<" *****************************************"<<endl;
22670 cout<<" **** cross-checking the correlations ****"<<endl;
22671 cout<<" **** for differential flow ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22672 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 22673 {
22674 cout<<" **** (particle weights not used) ****"<<endl;
22675 } else
22676 {
22677 cout<<" **** (particle weights used) ****"<<endl;
22678 }
22679 cout<<" *****************************************"<<endl;
22680 cout<<endl;
22681 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22682 cout<<endl;
22683
22684 for(Int_t rci=0;rci<2;rci++) // to be improved (calculate 6th and 8th order)
22685 {
22686 cout<<" "<<reducedCorrelations[rci].Data()<<":"<<endl;
22687 cout<<" from Q-vectors = "<<fDiffFlowCorrelationsPro[t][pe][rci]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22688 cout<<" from nested loops = "<<fDiffFlowDirectCorrelations[t][pe][rci]->GetBinContent(1)<<endl;
22689 cout<<endl;
22690 } // end of for(Int_t rci=0;rci<4;rci++)
22691
22692} // end of void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrelations(TString type, TString ptOrEta)
22693
e1d101a6 22694//=======================================================================================================================
3b552efe 22695
64e500e3 22696void AliFlowAnalysisWithQCumulants::CrossCheckOtherDiffCorrelators(TString type, TString ptOrEta)
22697{
22698 // Compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22699
22700 Int_t typeFlag = 0;
22701 Int_t ptEtaFlag = 0;
22702 if(type == "RP")
22703 {
22704 typeFlag = 0;
22705 } else if(type == "POI")
22706 {
22707 typeFlag = 1;
22708 }
22709 if(ptOrEta == "Pt")
22710 {
22711 ptEtaFlag = 0;
22712 } else if(ptOrEta == "Eta")
22713 {
22714 ptEtaFlag = 1;
22715 }
22716 // shortcuts:
22717 Int_t t = typeFlag;
22718 Int_t pe = ptEtaFlag;
22719
22720 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22721 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22722 TString otherCorrelators[1] = {"<<cos(n(psi1-3phi2+2phi3))>>"}; // to be improved (access this from pro or hist)
22723 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22724 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22725
22726 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22727
22728 cout<<endl;
22729 cout<<" *****************************************"<<endl;
22730 cout<<" **** cross-checking the other ****"<<endl;
22731 cout<<" **** diff. correlators ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22732 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
64e500e3 22733 {
22734 cout<<" **** (particle weights not used) ****"<<endl;
22735 } else
22736 {
22737 cout<<" **** (particle weights used) ****"<<endl;
22738 }
22739 cout<<" *****************************************"<<endl;
22740 cout<<endl;
22741 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22742 cout<<endl;
22743
22744 for(Int_t ci=0;ci<1;ci++)
22745 {
22746 cout<<" "<<otherCorrelators[ci].Data()<<":"<<endl;
22747 cout<<" from Q-vectors = "<<fOtherDiffCorrelators[t][pe][1][ci]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22748 cout<<" from nested loops = "<<fOtherDirectDiffCorrelators[t][pe][1][ci]->GetBinContent(1)<<endl;
22749 cout<<endl;
22750 } // end of for(Int_t ci=0;ci<1;ci++)
22751
22752} // end of void AliFlowAnalysisWithQCumulants::CrossCheckOtherDiffCorrelators(TString type, TString ptOrEta)
22753
e1d101a6 22754//=======================================================================================================================
64e500e3 22755
489d5531 22756void AliFlowAnalysisWithQCumulants::PrintNumberOfParticlesInSelectedBin()
3b552efe 22757{
22758 // Print on the screen number of RPs and POIs in selected pt and eta bin for cross checkings.
22759
22760 cout<<endl;
22761 cout<<"Number of RPs in selected pt bin = "<<fNoOfParticlesInBin->GetBinContent(1)<<endl;
22762 cout<<"Number of RPs in selected eta bin = "<<fNoOfParticlesInBin->GetBinContent(2)<<endl;
22763 cout<<"Number of POIs in selected pt bin = "<<fNoOfParticlesInBin->GetBinContent(3)<<endl;
22764 cout<<"Number of POIs in selected eta bin = "<<fNoOfParticlesInBin->GetBinContent(4)<<endl;
22765
489d5531 22766} // end of void AliFlowAnalysisWithQCumulants::PrintNumberOfParticlesInSelectedBin()
22767
e1d101a6 22768//=======================================================================================================================
3b552efe 22769
0328db2d 22770void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22771{
22772 // Evaluate reduced correlations with nested loops without using the particle weights.
22773
22774 // Remark 1: Reduced correlations are evaluated in pt bin number fCrossCheckInPtBinNo and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22775 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrelations[t][pe][ci], where indices runs as follows:
22776 // [0=RP,1=POI][0=Pt,1=Eta][0=<2'>,1=<4'>,2=<6'>,3=<8'>]
22777 // Remark 3: <2'> = <w2 cos(n*(psi1-phi2))>
22778 // <4'> = <w2 w3 w4 cos(n*(psi1+phi2-phi3-phi4))>
22779 // ...
22780
2a98ceb8 22781 Int_t typeFlag = 0;
22782 Int_t ptEtaFlag = 0;
489d5531 22783 if(type == "RP")
22784 {
22785 typeFlag = 0;
22786 } else if(type == "POI")
22787 {
22788 typeFlag = 1;
22789 }
22790 if(ptOrEta == "Pt")
22791 {
22792 ptEtaFlag = 0;
22793 } else if(ptOrEta == "Eta")
22794 {
22795 ptEtaFlag = 1;
22796 }
22797 // shortcuts:
22798 Int_t t = typeFlag;
22799 Int_t pe = ptEtaFlag;
22800
22801 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22802 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22803 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22804
22805 Int_t nPrim = anEvent->NumberOfTracks();
22806 AliFlowTrackSimple *aftsTrack = NULL;
22807
22808 Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22809 Double_t wPhi2=1., wPhi3=1., wPhi4=1.;// wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
22810
22811 Int_t n = fHarmonic;
22812
22813 // 2'-particle correlations:
22814 for(Int_t i1=0;i1<nPrim;i1++)
22815 {
22816 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22817 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22818 if(typeFlag==1) // this is diff flow of POIs
489d5531 22819 {
22820 if(ptOrEta == "Pt")
22821 {
22822 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22823 } else if (ptOrEta == "Eta")
22824 {
22825 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22826 }
22827 } else // this is diff flow of RPs
22828 {
489d5531 22829 if(ptOrEta == "Pt")
22830 {
22831 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22832 } else if (ptOrEta == "Eta")
22833 {
22834 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22835 }
489d5531 22836 }
22837 psi1=aftsTrack->Phi();
22838 for(Int_t i2=0;i2<nPrim;i2++)
22839 {
22840 if(i2==i1) continue;
22841 aftsTrack=anEvent->GetTrack(i2);
22842 // RP condition (!(first) particle in the correlator must be RP):
22843 if(!(aftsTrack->InRPSelection())) continue;
22844 phi2=aftsTrack->Phi();
22845 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22846 // 2'-particle correlations:
22847 fDiffFlowDirectCorrelations[t][pe][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(1.*n*(psi1-phi2)),wPhi2); // <w2 cos(n*(psi1-phi2))
22848 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22849 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22850
22851 // 4'-particle correlations:
22852 for(Int_t i1=0;i1<nPrim;i1++)
22853 {
22854 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22855 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22856 if(typeFlag==1) // this is diff flow of POIs
489d5531 22857 {
22858 if(ptOrEta == "Pt")
22859 {
22860 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22861 } else if (ptOrEta == "Eta")
22862 {
22863 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22864 }
22865 } else // this is diff flow of RPs
22866 {
489d5531 22867 if(ptOrEta == "Pt")
22868 {
22869 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22870 } else if (ptOrEta == "Eta")
22871 {
22872 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22873 }
489d5531 22874 }
22875 psi1=aftsTrack->Phi();
22876 for(Int_t i2=0;i2<nPrim;i2++)
22877 {
22878 if(i2==i1) continue;
22879 aftsTrack=anEvent->GetTrack(i2);
22880 // RP condition (!(first) particle in the correlator must be RP):
22881 if(!(aftsTrack->InRPSelection())) continue;
22882 phi2=aftsTrack->Phi();
22883 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22884 for(Int_t i3=0;i3<nPrim;i3++)
22885 {
22886 if(i3==i1||i3==i2) continue;
22887 aftsTrack=anEvent->GetTrack(i3);
22888 // RP condition (!(first) particle in the correlator must be RP):
22889 if(!(aftsTrack->InRPSelection())) continue;
22890 phi3=aftsTrack->Phi();
22891 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
22892 for(Int_t i4=0;i4<nPrim;i4++)
22893 {
22894 if(i4==i1||i4==i2||i4==i3) continue;
22895 aftsTrack=anEvent->GetTrack(i4);
22896 // RP condition (!(first) particle in the correlator must be RP):
22897 if(!(aftsTrack->InRPSelection())) continue;
22898 phi4=aftsTrack->Phi();
22899 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
22900 // 4'-particle correlations <w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))>:
22901 fDiffFlowDirectCorrelations[t][pe][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3-phi4)),wPhi2*wPhi3*wPhi4);
22902 }//end of for(Int_t i4=0;i4<nPrim;i4++)
22903 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22904 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22905 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22906
22907 // count # of RPs and POIs in selected pt and eta bins for cross-checkings: (to be improved - moved to dedicated method)
3b552efe 22908 for(Int_t i=0;i<nPrim;i++)
22909 {
489d5531 22910 aftsTrack=anEvent->GetTrack(i);
22911 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22912 if(typeFlag==1) // this is diff flow of POIs
22913 {
22914 if(ptOrEta == "Pt")
22915 {
22916 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22917 } else if (ptOrEta == "Eta")
22918 {
22919 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22920 }
22921 } else // this is diff flow of RPs
22922 {
22923 if(ptOrEta == "Pt")
22924 {
22925 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22926 } else if (ptOrEta == "Eta")
22927 {
22928 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22929 }
22930 }
22931 if(t==1)t++;
22932 fNoOfParticlesInBin->Fill(t+pe+0.5);
22933 }
22934
22935} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22936
e1d101a6 22937//=======================================================================================================================
489d5531 22938
0328db2d 22939void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22940{
22941 // Evaluate with nested loops correction terms for non-uniform acceptance (both sin and cos terms) relevant for differential flow.
22942
22943 // Remark 1: Reduced correction terms for non-uniform acceptance are evaluated in pt bin number fCrossCheckInPtBinNo
22944 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22945 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrections[t][pe][sc][cti], where first three indices runs as:
22946 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms], whilst the cti (correction term index) runs as follows:
22947 // cti:
22948 // 0: <<sc n(psi1)>>
22949 // 1: <<sc n(psi1+phi2)>>
22950 // 2: <<sc n(psi1+phi2-phi3)>>
22951 // 3: <<sc n(psi1-phi2-phi3)>>
22952 // 4:
22953 // 5:
22954 // 6:
22955
2a98ceb8 22956 Int_t typeFlag = 0;
22957 Int_t ptEtaFlag = 0;
489d5531 22958 if(type == "RP")
22959 {
22960 typeFlag = 0;
22961 } else if(type == "POI")
22962 {
22963 typeFlag = 1;
22964 }
22965 if(ptOrEta == "Pt")
22966 {
22967 ptEtaFlag = 0;
22968 } else if(ptOrEta == "Eta")
22969 {
22970 ptEtaFlag = 1;
22971 }
22972 // shortcuts:
22973 Int_t t = typeFlag;
22974 Int_t pe = ptEtaFlag;
22975
22976 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22977 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22978 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22979
22980 Int_t nPrim = anEvent->NumberOfTracks();
22981 AliFlowTrackSimple *aftsTrack = NULL;
22982
22983 Double_t psi1=0., phi2=0., phi3=0.;// phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22984
22985 Int_t n = fHarmonic;
22986
22987 // 1-particle correction terms:
22988 for(Int_t i1=0;i1<nPrim;i1++)
22989 {
22990 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22991 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22992 if(typeFlag==1) // this is diff flow of POIs
489d5531 22993 {
22994 if(ptOrEta == "Pt")
22995 {
22996 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22997 } else if (ptOrEta == "Eta")
22998 {
22999 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23000 }
23001 } else // this is diff flow of RPs
23002 {
489d5531 23003 if(ptOrEta == "Pt")
23004 {
23005 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23006 } else if (ptOrEta == "Eta")
23007 {
23008 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23009 }
23010 }
489d5531 23011 psi1=aftsTrack->Phi();
23012 // sin terms:
23013 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*psi1),1.); // <<sin(n*(psi1))>>
23014 // cos terms:
23015 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*psi1),1.); // <<cos(n*(psi1))>>
23016 }//end of for(Int_t i1=0;i1<nPrim;i1++)
23017
23018 // 2-particle correction terms:
23019 for(Int_t i1=0;i1<nPrim;i1++)
23020 {
23021 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23022 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23023 if(typeFlag==1) // this is diff flow of POIs
489d5531 23024 {
23025 if(ptOrEta == "Pt")
23026 {
23027 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23028 } else if (ptOrEta == "Eta")
23029 {
23030 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23031 }
23032 } else // this is diff flow of RPs
23033 {
489d5531 23034 if(ptOrEta == "Pt")
23035 {
23036 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23037 } else if (ptOrEta == "Eta")
23038 {
23039 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23040 }
489d5531 23041 }
23042 psi1=aftsTrack->Phi();
23043 for(Int_t i2=0;i2<nPrim;i2++)
23044 {
23045 if(i2==i1) continue;
23046 aftsTrack=anEvent->GetTrack(i2);
23047 // RP condition (!(first) particle in the correlator must be RP):
23048 if(!(aftsTrack->InRPSelection())) continue;
23049 phi2=aftsTrack->Phi();
23050 // sin terms:
23051 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2)),1.); // <<sin(n*(psi1+phi2))>>
23052 // cos terms:
23053 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2)),1.); // <<cos(n*(psi1+phi2))>>
23054 }//end of for(Int_t i2=0;i2<nPrim;i2++)
23055 }//end of for(Int_t i1=0;i1<nPrim;i1++)
23056
23057 // 3-particle correction terms:
23058 for(Int_t i1=0;i1<nPrim;i1++)
23059 {
23060 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23061 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23062 if(typeFlag==1) // this is diff flow of POIs
489d5531 23063 {
23064 if(ptOrEta == "Pt")
23065 {
23066 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23067 } else if (ptOrEta == "Eta")
23068 {
23069 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23070 }
23071 } else // this is diff flow of RPs
23072 {
489d5531 23073 if(ptOrEta == "Pt")
23074 {
23075 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23076 } else if (ptOrEta == "Eta")
23077 {
23078 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23079 }
489d5531 23080 }
23081 psi1=aftsTrack->Phi();
23082 for(Int_t i2=0;i2<nPrim;i2++)
23083 {
23084 if(i2==i1) continue;
23085 aftsTrack=anEvent->GetTrack(i2);
23086 // RP condition (!(first) particle in the correlator must be RP):
23087 if(!(aftsTrack->InRPSelection())) continue;
23088 phi2=aftsTrack->Phi();
23089 for(Int_t i3=0;i3<nPrim;i3++)
23090 {
23091 if(i3==i1||i3==i2) continue;
23092 aftsTrack=anEvent->GetTrack(i3);
23093 // RP condition (!(first) particle in the correlator must be RP):
23094 if(!(aftsTrack->InRPSelection())) continue;
23095 phi3=aftsTrack->Phi();
23096 // sin terms:
23097 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2-phi3)),1.); // <<sin(n*(psi1+phi2-phi3))>>
23098 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1-phi2-phi3)),1.); // <<sin(n*(psi1-phi2-phi3))>>
23099 // cos terms:
23100 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3)),1.); // <<cos(n*(psi1+phi2-phi3))>>
23101 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1-phi2-phi3)),1.); // <<cos(n*(psi1-phi2-phi3))>>
23102 }//end of for(Int_t i3=0;i3<nPrim;i3++)
23103 }//end of for(Int_t i2=0;i2<nPrim;i2++)
23104 }//end of for(Int_t i1=0;i1<nPrim;i1++)
23105
23106} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
23107
23108
e1d101a6 23109//=======================================================================================================================
489d5531 23110
23111
23112void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrectionTermsForNUA(TString type, TString ptOrEta)
23113{
23114 // Compare corrections temrs for non-uniform acceptance needed for diff. flow calculated with nested loops and those calculated from Q-vectors
23115
2a98ceb8 23116 Int_t typeFlag = 0;
23117 Int_t ptEtaFlag = 0;
489d5531 23118 if(type == "RP")
23119 {
23120 typeFlag = 0;
23121 } else if(type == "POI")
23122 {
23123 typeFlag = 1;
23124 }
23125 if(ptOrEta == "Pt")
23126 {
23127 ptEtaFlag = 0;
23128 } else if(ptOrEta == "Eta")
23129 {
23130 ptEtaFlag = 1;
23131 }
23132 // shortcuts:
23133 Int_t t = typeFlag;
23134 Int_t pe = ptEtaFlag;
23135
23136 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
23137 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
23138 //TString sinCosFlag[2] = {"sin","cos"}; // to be improved (eventually promote to data member)
23139 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)
23140 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)
23141 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
23142 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
23143
23144 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
23145
23146 cout<<endl;
23147 cout<<" ******************************************"<<endl;
23148 cout<<" **** cross-checking the correction ****"<<endl;
46b94261 23149 cout<<" **** terms for non-uniform acceptance ****"<<endl;
489d5531 23150 cout<<" **** for differential flow ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 23151 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 23152 {
23153 cout<<" **** (particle weights not used) ****"<<endl;
23154 } else
23155 {
23156 cout<<" **** (particle weights used) ****"<<endl;
23157 }
23158 cout<<" ******************************************"<<endl;
23159 cout<<endl;
23160 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
23161 cout<<endl;
23162
23163 for(Int_t cti=0;cti<4;cti++) // correction term index
23164 {
23165 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
23166 {
23167 if(sc==0) // to be improved (this can be implemented better)
23168 {
23169 cout<<" "<<reducedCorrectionSinTerms[cti].Data()<<":"<<endl;
23170 } else
23171 {
23172 cout<<" "<<reducedCorrectionCosTerms[cti].Data()<<":"<<endl;
23173 }
23174 cout<<" from Q-vectors = "<<fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
23175 cout<<" from nested loops = "<<fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti]->GetBinContent(1)<<endl;
23176 cout<<endl;
23177 }
23178 } // end of for(Int_t rci=0;rci<4;rci++)
23179
23180} // end of void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrectionTermsForNUA(TString type, TString ptOrEta)
23181
e1d101a6 23182//=======================================================================================================================
57340a27 23183
489d5531 23184void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights()
23185{
23186 // Calculate corrections using particle weights for non-uniform acceptance of the detector for no-name integrated flow (cos terms).
23187
23188 // **********************************************************************
23189 // **** weighted corrections for non-uniform acceptance (cos terms): ****
23190 // **********************************************************************
57340a27 23191
489d5531 23192 // Remark 1: When particle weights are used the binning of fIntFlowCorrectionTermsForNUAPro[1] is organized as follows:
57340a27 23193 //
489d5531 23194 // 1st bin: <<w1 cos(n*(phi1))>> = cosP1nW1
23195 // 2nd bin: <<w1 w2 cos(n*(phi1+phi2))>> = cosP1nP1nW1W1
23196 // 3rd bin: <<w1 w2 w3 cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1nW1W1W1
23197 // ...
23198
23199 // multiplicity (number of particles used to determine the reaction plane)
1268c371 23200 Double_t dMult = (*fSpk)(0,0);
489d5531 23201
23202 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
23203 Double_t dReQ1n1k = (*fReQ)(0,1);
23204 Double_t dReQ2n2k = (*fReQ)(1,2);
23205 //Double_t dReQ3n3k = (*fReQ)(2,3);
23206 //Double_t dReQ4n4k = (*fReQ)(3,4);
23207 Double_t dReQ1n3k = (*fReQ)(0,3);
23208 Double_t dImQ1n1k = (*fImQ)(0,1);
23209 Double_t dImQ2n2k = (*fImQ)(1,2);
23210 //Double_t dImQ3n3k = (*fImQ)(2,3);
23211 //Double_t dImQ4n4k = (*fImQ)(3,4);
23212 //Double_t dImQ1n3k = (*fImQ)(0,3);
23213
23214 // dMs are variables introduced in order to simplify some Eqs. bellow:
23215 //..............................................................................................
1268c371 23216 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
23217 Double_t dM111 = (*fSpk)(2,1)-3.*(*fSpk)(0,2)*(*fSpk)(0,1)
23218 + 2.*(*fSpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
489d5531 23219 //..............................................................................................
ecac11c2 23220 // 1-particle:
489d5531 23221 Double_t cosP1nW1 = 0.; // <<w1 cos(n*(phi1))>>
23222
1268c371 23223 if(dMult>0 && TMath::Abs((*fSpk)(0,1))>1.e-6)
489d5531 23224 {
1268c371 23225 cosP1nW1 = dReQ1n1k/(*fSpk)(0,1);
489d5531 23226
23227 // average weighted 1-particle correction (cos terms) for non-uniform acceptance for single event:
23228 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(1,cosP1nW1);
23229
23230 // final average weighted 1-particle correction (cos terms) for non-uniform acceptance for all events:
1268c371 23231 fIntFlowCorrectionTermsForNUAPro[1]->Fill(0.5,cosP1nW1,(*fSpk)(0,1));
489d5531 23232 }
23233
23234 // 2-particle:
23235 Double_t cosP1nP1nW1W1 = 0.; // <<w1 w2 cos(n*(phi1+phi2))>>
23236
1268c371 23237 if(dMult>1 && TMath::Abs(dM11)>1.e-6)
489d5531 23238 {
23239 cosP1nP1nW1W1 = (pow(dReQ1n1k,2)-pow(dImQ1n1k,2)-dReQ2n2k)/dM11;
23240
23241 // average weighted 2-particle correction (cos terms) for non-uniform acceptance for single event:
23242 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(2,cosP1nP1nW1W1);
23243
23244 // final average weighted 2-particle correction (cos terms) for non-uniform acceptance for all events:
23245 fIntFlowCorrectionTermsForNUAPro[1]->Fill(1.5,cosP1nP1nW1W1,dM11);
23246 }
23247
23248 // 3-particle:
23249 Double_t cosP1nM1nM1nW1W1W1 = 0.; // <<w1 w2 w3 cos(n*(phi1-phi2-phi3))>>
23250
1268c371 23251 if(dMult>2 && TMath::Abs(dM111)>1.e-6)
489d5531 23252 {
57340a27 23253 cosP1nM1nM1nW1W1W1 = (dReQ1n1k*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
23254 - dReQ1n1k*dReQ2n2k-dImQ1n1k*dImQ2n2k
1268c371 23255 - 2.*((*fSpk)(0,2))*dReQ1n1k
489d5531 23256 + 2.*dReQ1n3k)
23257 / dM111;
23258
23259 // average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for single event:
23260 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(3,cosP1nM1nM1nW1W1W1);
23261
23262 // final average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for all events:
23263 fIntFlowCorrectionTermsForNUAPro[1]->Fill(2.5,cosP1nM1nM1nW1W1W1,dM111);
23264 }
23265
23266} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights()
23267
23268
e1d101a6 23269//=======================================================================================================================
489d5531 23270
23271
23272void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights()
23273{
23274 // calculate corrections using particle weights for non-uniform acceptance of the detector for no-name integrated flow (sin terms)
23275
23276 // **********************************************************************
23277 // **** weighted corrections for non-uniform acceptance (sin terms): ****
23278 // **********************************************************************
23279
23280 // Remark 1: When particle weights are used the binning of fIntFlowCorrectionTermsForNUAPro[0] is organized as follows:
57340a27 23281 //
489d5531 23282 // 1st bin: <<w1 sin(n*(phi1))>> = sinP1nW1
23283 // 2nd bin: <<w1 w2 sin(n*(phi1+phi2))>> = sinP1nP1nW1W1
23284 // 3rd bin: <<w1 w2 w3 sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1nW1W1W1
23285 // ...
23286
23287 // multiplicity (number of particles used to determine the reaction plane)
1268c371 23288 Double_t dMult = (*fSpk)(0,0);
489d5531 23289
23290 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
23291 Double_t dReQ1n1k = (*fReQ)(0,1);
23292 Double_t dReQ2n2k = (*fReQ)(1,2);
23293 //Double_t dReQ3n3k = (*fReQ)(2,3);
23294 //Double_t dReQ4n4k = (*fReQ)(3,4);
23295 //Double_t dReQ1n3k = (*fReQ)(0,3);
23296 Double_t dImQ1n1k = (*fImQ)(0,1);
23297 Double_t dImQ2n2k = (*fImQ)(1,2);
23298 //Double_t dImQ3n3k = (*fImQ)(2,3);
23299 //Double_t dImQ4n4k = (*fImQ)(3,4);
23300 Double_t dImQ1n3k = (*fImQ)(0,3);
23301
23302 // dMs are variables introduced in order to simplify some Eqs. bellow:
23303 //..............................................................................................
1268c371 23304 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
23305 Double_t dM111 = (*fSpk)(2,1)-3.*(*fSpk)(0,2)*(*fSpk)(0,1)
23306 + 2.*(*fSpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
489d5531 23307 //..............................................................................................
23308
23309 // 1-particle:
23310 Double_t sinP1nW1 = 0.; // <<w1 sin(n*(phi1))>>
23311
1268c371 23312 if(dMult>0 && TMath::Abs((*fSpk)(0,1))>1.e-6)
489d5531 23313 {
1268c371 23314 sinP1nW1 = dImQ1n1k/((*fSpk)(0,1));
489d5531 23315
23316 // average weighted 1-particle correction (sin terms) for non-uniform acceptance for single event:
23317 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(1,sinP1nW1);
23318
23319 // final average weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
1268c371 23320 fIntFlowCorrectionTermsForNUAPro[0]->Fill(0.5,sinP1nW1,(*fSpk)(0,1));
489d5531 23321 }
23322
23323 // 2-particle:
23324 Double_t sinP1nP1nW1W1 = 0.; // <<w1 w2 sin(n*(phi1+phi2))>>
23325
1268c371 23326 if(dMult>1 && TMath::Abs(dM11)>1.e-6)
489d5531 23327 {
23328 sinP1nP1nW1W1 = (2.*dReQ1n1k*dImQ1n1k-dImQ2n2k)/dM11;
23329
23330 // average weighted 2-particle correction (sin terms) for non-uniform acceptance for single event:
23331 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(2,sinP1nP1nW1W1);
23332
23333 // final average weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
23334 fIntFlowCorrectionTermsForNUAPro[0]->Fill(1.5,sinP1nP1nW1W1,dM11);
23335 }
23336
23337 // 3-particle:
23338 Double_t sinP1nM1nM1nW1W1W1 = 0.; // <<w1 w2 w3 sin(n*(phi1-phi2-phi3))>>
23339
1268c371 23340 if(dMult>2 && TMath::Abs(dM111)>1.e-6)
489d5531 23341 {
57340a27 23342 sinP1nM1nM1nW1W1W1 = (-dImQ1n1k*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
23343 + dReQ1n1k*dImQ2n2k-dImQ1n1k*dReQ2n2k
1268c371 23344 + 2.*((*fSpk)(0,2))*dImQ1n1k
489d5531 23345 - 2.*dImQ1n3k)
23346 / dM111;
23347
23348 // average weighted 3-particle correction (sin terms) for non-uniform acceptance for single event:
23349 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(3,sinP1nM1nM1nW1W1W1);
23350
23351 // final average weighted 3-particle correction (sin terms) for non-uniform acceptance for all events:
23352 fIntFlowCorrectionTermsForNUAPro[0]->Fill(2.5,sinP1nM1nM1nW1W1W1,dM111);
23353 }
23354
23355} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights()
23356
e1d101a6 23357//=======================================================================================================================
489d5531 23358
0328db2d 23359void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent)
489d5531 23360{
23361 // Evaluate with nested loops correction terms for non-uniform acceptance for integrated flow (using the particle weights).
23362
57340a27 23363 // Results are stored in profiles fIntFlowDirectCorrectionTermsForNUA[0] (sin terms) and
23364 // fIntFlowDirectCorrectionTermsForNUA[1] (cos terms).
489d5531 23365
57340a27 23366 // Remark 1: When particle weights are used the binning of fIntFlowDirectCorrectionTermsForNUA[sc] is
489d5531 23367 // organized as follows (sc stands for either sin or cos):
23368 //
23369 // 1st bin: <<w1 sc(n*(phi1))>> = scP1nW1
23370 // 2nd bin: <<w1 w2 sc(n*(phi1+phi2))>> = scP1nP1nW1W1
23371 // 3rd bin: <<w1 w2 w3 sc(n*(phi1-phi2-phi3))>> = scP1nM1nM1nW1W1W1
3b552efe 23372 // ...
489d5531 23373
23374 Int_t nPrim = anEvent->NumberOfTracks();
23375 AliFlowTrackSimple *aftsTrack = NULL;
23376 //Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
23377 //Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
23378 Double_t phi1=0., phi2=0., phi3=0.;
23379 Double_t wPhi1=1., wPhi2=1., wPhi3=1.;
23380 Int_t n = fHarmonic;
23381 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 23382 Double_t dMult = (*fSpk)(0,0);
489d5531 23383 cout<<endl;
23384 cout<<"Correction terms for non-uniform acceptance: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
23385 if(dMult<1)
23386 {
23387 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
23388 } else if (dMult>fMaxAllowedMultiplicity)
23389 {
23390 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
23391 } else
23392 {
23393 cout<<"... evaluating nested loops (using particle weights) ..."<<endl;
23394 }
23395
23396 // 1-particle correction terms using particle weights:
23397 if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
23398 {
23399 for(Int_t i1=0;i1<nPrim;i1++)
23400 {
23401 aftsTrack=anEvent->GetTrack(i1);
23402 if(!(aftsTrack->InRPSelection())) continue;
23403 phi1=aftsTrack->Phi();
23404 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
57340a27 23405 // 1-particle correction terms using particle weights:
489d5531 23406 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(0.5,sin(n*phi1),wPhi1); // <w1 sin(n*phi1)>
23407 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(0.5,cos(n*phi1),wPhi1); // <w1 cos(n*phi1)>
57340a27 23408 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23409 } // end of if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
23410
489d5531 23411 // 2-particle correction terms using particle weights:
23412 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
23413 {
23414 for(Int_t i1=0;i1<nPrim;i1++)
23415 {
23416 aftsTrack=anEvent->GetTrack(i1);
23417 if(!(aftsTrack->InRPSelection())) continue;
23418 phi1=aftsTrack->Phi();
23419 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23420 for(Int_t i2=0;i2<nPrim;i2++)
23421 {
23422 if(i2==i1)continue;
23423 aftsTrack=anEvent->GetTrack(i2);
23424 if(!(aftsTrack->InRPSelection())) continue;
23425 phi2=aftsTrack->Phi();
23426 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23427 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
57340a27 23428 // 2-p correction terms using particle weights:
489d5531 23429 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(1.5,sin(n*(phi1+phi2)),wPhi1*wPhi2); // <w1 w2 sin(n*(phi1+phi2))>
23430 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(1.5,cos(n*(phi1+phi2)),wPhi1*wPhi2); // <w1 w2 cos(n*(phi1+phi2))>
23431 } // end of for(Int_t i2=0;i2<nPrim;i2++)
23432 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23433 } // end of if(nPrim>=2)
23434
23435 // 3-particle correction terms using particle weights:
23436 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
23437 {
23438 for(Int_t i1=0;i1<nPrim;i1++)
23439 {
23440 aftsTrack=anEvent->GetTrack(i1);
23441 if(!(aftsTrack->InRPSelection())) continue;
23442 phi1=aftsTrack->Phi();
23443 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23444 for(Int_t i2=0;i2<nPrim;i2++)
23445 {
23446 if(i2==i1)continue;
23447 aftsTrack=anEvent->GetTrack(i2);
23448 if(!(aftsTrack->InRPSelection())) continue;
23449 phi2=aftsTrack->Phi();
23450 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23451 for(Int_t i3=0;i3<nPrim;i3++)
23452 {
23453 if(i3==i1||i3==i2)continue;
23454 aftsTrack=anEvent->GetTrack(i3);
23455 if(!(aftsTrack->InRPSelection())) continue;
23456 phi3=aftsTrack->Phi();
23457 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23458 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
57340a27 23459 // 3-p correction terms using particle weights:
489d5531 23460 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(2.5,sin(n*(phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 sin(n*(phi1-phi2-phi3))>
23461 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(2.5,cos(n*(phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 cos(n*(phi1-phi2-phi3))>
23462 } // end of for(Int_t i3=0;i3<nPrim;i3++)
23463 } // end of for(Int_t i2=0;i2<nPrim;i2++)
23464 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23465 } // end of if(nPrim>=3)
23466
57340a27 23467 /*
23468
489d5531 23469 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
23470 {
23471 // 4 nested loops multiparticle correlations using particle weights:
23472 for(Int_t i1=0;i1<nPrim;i1++)
23473 {
23474 aftsTrack=anEvent->GetTrack(i1);
23475 if(!(aftsTrack->InRPSelection())) continue;
23476 phi1=aftsTrack->Phi();
23477 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23478 for(Int_t i2=0;i2<nPrim;i2++)
23479 {
23480 if(i2==i1)continue;
23481 aftsTrack=anEvent->GetTrack(i2);
23482 if(!(aftsTrack->InRPSelection())) continue;
23483 phi2=aftsTrack->Phi();
23484 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23485 for(Int_t i3=0;i3<nPrim;i3++)
23486 {
23487 if(i3==i1||i3==i2)continue;
23488 aftsTrack=anEvent->GetTrack(i3);
23489 if(!(aftsTrack->InRPSelection())) continue;
23490 phi3=aftsTrack->Phi();
23491 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23492 for(Int_t i4=0;i4<nPrim;i4++)
23493 {
23494 if(i4==i1||i4==i2||i4==i3)continue;
23495 aftsTrack=anEvent->GetTrack(i4);
23496 if(!(aftsTrack->InRPSelection())) continue;
23497 phi4=aftsTrack->Phi();
23498 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
23499 if(nPrim>=4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush; // to be improved (replace eventually this if statement with if(nPrim==4))
23500 // 4-p correlations using particle weights:
23501 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(10.5,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4);
23502 // extra correlations:
23503 // 2-p extra correlations (do not appear if particle weights are not used):
23504 // ...
23505 // 3-p extra correlations (do not appear if particle weights are not used):
23506 // ...
23507 // 4-p extra correlations (do not appear if particle weights are not used):
23508 // ...
23509 } // end of for(Int_t i4=0;i4<nPrim;i4++)
23510 } // end of for(Int_t i3=0;i3<nPrim;i3++)
23511 } // end of for(Int_t i2=0;i2<nPrim;i2++)
23512 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23513 } // end of if(nPrim>=4)
23514
23515 */
23516
23517 cout<<endl;
23518
23519} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent)
23520
e1d101a6 23521//=======================================================================================================================
489d5531 23522
489d5531 23523void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights(TString type, TString ptOrEta)
23524{
23525 // Calculate correction terms for non-uniform acceptance for differential flow (cos terms) using particle weights.
57340a27 23526
489d5531 23527 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][1][cti], where cti runs as follows:
57340a27 23528 //
489d5531 23529 // 0: <<cos n(psi)>>
23530 // 1: <<w2 cos n(psi1+phi2)>>
23531 // 2: <<w2 w3 cos n(psi1+phi2-phi3)>>
23532 // 3: <<w2 w3 cos n(psi1-phi2-phi3)>>
23533 // 4:
23534 // 5:
23535 // 6:
23536
23537 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
23538 Double_t dReQ1n1k = (*fReQ)(0,1);
23539 Double_t dReQ2n2k = (*fReQ)(1,2);
23540 //Double_t dReQ1n3k = (*fReQ)(0,3);
23541 //Double_t dReQ4n4k = (*fReQ)(3,4);
23542 Double_t dImQ1n1k = (*fImQ)(0,1);
23543 Double_t dImQ2n2k = (*fImQ)(1,2);
23544 //Double_t dImQ1n3k = (*fImQ)(0,3);
23545 //Double_t dImQ4n4k = (*fImQ)(3,4);
23546
1268c371 23547 // S^M_{p,k} (see .h file for the definition of fSpk):
23548 Double_t dSM1p1k = (*fSpk)(0,1);
23549 Double_t dSM1p2k = (*fSpk)(0,2);
23550 Double_t dSM2p1k = (*fSpk)(1,1);
489d5531 23551
2a98ceb8 23552 Int_t t = 0; // type flag
23553 Int_t pe = 0; // ptEta flag
489d5531 23554
23555 if(type == "RP")
23556 {
23557 t = 0;
23558 } else if(type == "POI")
23559 {
23560 t = 1;
23561 }
23562
23563 if(ptOrEta == "Pt")
23564 {
23565 pe = 0;
23566 } else if(ptOrEta == "Eta")
23567 {
23568 pe = 1;
23569 }
23570
23571 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
23572 Double_t minPtEta[2] = {fPtMin,fEtaMin};
23573 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
23574 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23575
23576 // looping over all bins and calculating correction terms:
23577 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23578 {
23579 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
23580 Double_t p1n0kRe = 0.;
23581 Double_t p1n0kIm = 0.;
23582
23583 // number of POIs in particular pt or eta bin:
23584 Double_t mp = 0.;
23585
23586 // 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):
23587 Double_t q1n2kRe = 0.;
ea239361 23588 //Double_t q1n2kIm = 0.;
489d5531 23589 Double_t q2n1kRe = 0.;
23590 Double_t q2n1kIm = 0.;
46b94261 23591
489d5531 23592 // s_{1,1}, s_{1,2} // to be improved (add explanation)
23593 Double_t s1p1k = 0.;
23594 Double_t s1p2k = 0.;
46b94261 23595
489d5531 23596 // number of particles which are both RPs and POIs in particular pt or eta bin:
ea239361 23597 //Double_t mq = 0.;
489d5531 23598
23599 // M0111 from Eq. (118) in QC2c (to be improved (notation))
23600 Double_t dM01 = 0.;
23601 Double_t dM011 = 0.;
23602
23603 if(type == "POI")
23604 {
23605 // q_{m*n,k}:
23606 q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
23607 * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
ea239361 23608 //q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
23609 // * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
489d5531 23610 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
23611 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
23612 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
23613 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
ea239361 23614 //mq = fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
46b94261 23615
489d5531 23616 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
23617 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
23618 }else if(type == "RP")
23619 {
23620 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
23621 q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
23622 * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
ea239361 23623 //q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
23624 // * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
489d5531 23625 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
23626 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
23627 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
23628 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
23629 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23630 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
23631 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
3b552efe 23632 //s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
23633
ea239361 23634 //mq = fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
489d5531 23635 }
3b552efe 23636
489d5531 23637 if(type == "POI")
3b552efe 23638 {
23639 // p_{m*n,k}:
489d5531 23640 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
23641 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
23642 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
3b552efe 23643 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
23644 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
489d5531 23645 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23646 dM01 = mp*dSM1p1k-s1p1k;
23647 dM011 = mp*(dSM2p1k-dSM1p2k)
23648 - 2.*(s1p1k*dSM1p1k-s1p2k);
23649
23650 // typeFlag = RP (0) or POI (1):
23651 t = 1;
23652 } else if(type == "RP")
489d5531 23653 {
23654 // to be improved (cross-checked):
23655 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
23656 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
23657 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
23658 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
23659 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23660 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23661 dM01 = mp*dSM1p1k-s1p1k;
23662 dM011 = mp*(dSM2p1k-dSM1p2k)
23663 - 2.*(s1p1k*dSM1p1k-s1p2k);
489d5531 23664 // typeFlag = RP (0) or POI (1):
3b552efe 23665 t = 0;
23666 }
489d5531 23667
23668 // <<cos n(psi1)>>:
23669 Double_t cosP1nPsi = 0.;
23670 if(mp)
23671 {
23672 cosP1nPsi = p1n0kRe/mp;
23673
23674 // fill profile for <<cos n(psi1)>>:
23675 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi,mp);
23676 // histogram to store <cos n(psi1)> e-b-e (needed in some other methods):
23677 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][0]->SetBinContent(b,cosP1nPsi);
46b94261 23678 } // end of if(mp)
57340a27 23679
489d5531 23680 // <<w2 cos n(psi1+phi2)>>:
23681 Double_t cosP1nPsiP1nPhiW2 = 0.;
23682 if(dM01)
23683 {
23684 cosP1nPsiP1nPhiW2 = (p1n0kRe*dReQ1n1k-p1n0kIm*dImQ1n1k-q2n1kRe)/(dM01);
23685 // fill profile for <<w2 cos n(psi1+phi2)>>:
23686 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsiP1nPhiW2,dM01);
23687 // histogram to store <w2 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23688 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][1]->SetBinContent(b,cosP1nPsiP1nPhiW2);
23689 } // end of if(dM01)
23690
23691 // <<w2 w3 cos n(psi1+phi2-phi3)>>:
23692 Double_t cosP1nPsi1P1nPhi2MPhi3W2W3 = 0.;
23693 if(dM011)
23694 {
46b94261 23695 cosP1nPsi1P1nPhi2MPhi3W2W3 = (p1n0kRe*(pow(dImQ1n1k,2.)+pow(dReQ1n1k,2.))
23696 - p1n0kRe*dSM1p2k
23697 - q2n1kRe*dReQ1n1k-q2n1kIm*dImQ1n1k
23698 - s1p1k*dReQ1n1k
23699 + 2.*q1n2kRe)
23700 / dM011;
489d5531 23701 // fill profile for <<w1 w2 w3 cos n(psi1+phi2)>>:
23702 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1P1nPhi2MPhi3W2W3,dM011);
23703 // histogram to store <w1 w2 w3 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23704 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][2]->SetBinContent(b,cosP1nPsi1P1nPhi2MPhi3W2W3);
23705 } // end of if(dM011)
23706
23707 // <<w2 w3 cos n(psi1-phi2-phi3)>>:
23708 Double_t cosP1nPsi1M1nPhi2MPhi3W2W3 = 0.;
23709 if(dM011)
23710 {
23711 cosP1nPsi1M1nPhi2MPhi3W2W3 = (p1n0kRe*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))+2.*p1n0kIm*dReQ1n1k*dImQ1n1k
23712 - 1.*(p1n0kRe*dReQ2n2k+p1n0kIm*dImQ2n2k)
46b94261 23713 - 2.*s1p1k*dReQ1n1k
489d5531 23714 + 2.*q1n2kRe)
23715 / dM011;
23716 // fill profile for <<w1 w2 w3 cos n(psi1+phi2)>>:
23717 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1M1nPhi2MPhi3W2W3,dM011);
23718 // histogram to store <w1 w2 w3 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23719 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][3]->SetBinContent(b,cosP1nPsi1M1nPhi2MPhi3W2W3);
23720 } // end of if(dM011)
23721
23722 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
46b94261 23723
57340a27 23724} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights(TString type, TString ptOrEta)
23725
489d5531 23726
e1d101a6 23727//=======================================================================================================================
489d5531 23728
23729
23730void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights(TString type, TString ptOrEta)
23731{
23732 // Calculate correction terms for non-uniform acceptance for differential flow (sin terms).
23733
23734 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][0][cti], where cti runs as follows:
23735 // 0: <<sin n(psi1)>>
23736 // 1: <<w2 sin n(psi1+phi2)>>
23737 // 2: <<w2 w3 sin n(psi1+phi2-phi3)>>
23738 // 3: <<w2 w3 sin n(psi1-phi2-phi3)>>:
23739 // 4:
23740 // 5:
23741 // 6:
23742
23743 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
23744 Double_t dReQ1n1k = (*fReQ)(0,1);
23745 Double_t dReQ2n2k = (*fReQ)(1,2);
23746 //Double_t dReQ1n3k = (*fReQ)(0,3);
23747 //Double_t dReQ4n4k = (*fReQ)(3,4);
23748 Double_t dImQ1n1k = (*fImQ)(0,1);
23749 Double_t dImQ2n2k = (*fImQ)(1,2);
23750 //Double_t dImQ1n3k = (*fImQ)(0,3);
23751 //Double_t dImQ4n4k = (*fImQ)(3,4);
23752
1268c371 23753 // S^M_{p,k} (see .h file for the definition of fSpk):
23754 Double_t dSM1p1k = (*fSpk)(0,1);
23755 Double_t dSM1p2k = (*fSpk)(0,2);
23756 Double_t dSM2p1k = (*fSpk)(1,1);
489d5531 23757
2a98ceb8 23758 Int_t t = 0; // type flag
23759 Int_t pe = 0; // ptEta flag
489d5531 23760
23761 if(type == "RP")
23762 {
23763 t = 0;
23764 } else if(type == "POI")
23765 {
23766 t = 1;
23767 }
23768
23769 if(ptOrEta == "Pt")
23770 {
23771 pe = 0;
23772 } else if(ptOrEta == "Eta")
23773 {
23774 pe = 1;
23775 }
23776
23777 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
23778 Double_t minPtEta[2] = {fPtMin,fEtaMin};
23779 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
23780 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23781
23782 // looping over all bins and calculating correction terms:
23783 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23784 {
23785 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
23786 Double_t p1n0kRe = 0.;
23787 Double_t p1n0kIm = 0.;
23788
23789 // number of POIs in particular pt or eta bin:
23790 Double_t mp = 0.;
23791
23792 // 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):
ea239361 23793 //Double_t q1n2kRe = 0.;
489d5531 23794 Double_t q1n2kIm = 0.;
23795 Double_t q2n1kRe = 0.;
23796 Double_t q2n1kIm = 0.;
46b94261 23797
489d5531 23798 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23799 Double_t s1p1k = 0.;
23800 Double_t s1p2k = 0.;
46b94261 23801
489d5531 23802 // number of particles which are both RPs and POIs in particular pt or eta bin:
ea239361 23803 //Double_t mq = 0.;
489d5531 23804
23805 // M0111 from Eq. (118) in QC2c (to be improved (notation))
23806 Double_t dM01 = 0.;
23807 Double_t dM011 = 0.;
23808
23809 if(type == "POI")
23810 {
23811 // q_{m*n,k}:
ea239361 23812 //q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
23813 // * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
489d5531 23814 q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
23815 * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
23816 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
23817 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
23818 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
23819 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
ea239361 23820 //mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
46b94261 23821
489d5531 23822 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
23823 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
23824 }else if(type == "RP")
23825 {
23826 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
ea239361 23827 //q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
23828 // * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
489d5531 23829 q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
23830 * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
23831 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
23832 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
23833 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
23834 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
23835 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23836 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
23837 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
23838 //s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
3b552efe 23839 }
23840
23841 if(type == "POI")
23842 {
23843 // p_{m*n,k}:
489d5531 23844 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
23845 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
23846 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
3b552efe 23847 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
23848 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
489d5531 23849 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23850 dM01 = mp*dSM1p1k-s1p1k;
23851 dM011 = mp*(dSM2p1k-dSM1p2k)
23852 - 2.*(s1p1k*dSM1p1k-s1p2k);
23853 // typeFlag = RP (0) or POI (1):
23854 t = 1;
489d5531 23855 } else if(type == "RP")
3b552efe 23856 {
489d5531 23857 // to be improved (cross-checked):
23858 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
23859 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
23860 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
23861 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
23862 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23863 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23864 dM01 = mp*dSM1p1k-s1p1k;
23865 dM011 = mp*(dSM2p1k-dSM1p2k)
489d5531 23866 - 2.*(s1p1k*dSM1p1k-s1p2k);
23867 // typeFlag = RP (0) or POI (1):
3b552efe 23868 t = 0;
23869 }
23870
489d5531 23871 // <<sin n(psi1)>>:
23872 Double_t sinP1nPsi = 0.;
23873 if(mp)
23874 {
23875 sinP1nPsi = p1n0kIm/mp;
23876
23877 // fill profile for <<sin n(psi1)>>:
23878 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi,mp);
23879 // histogram to store <sin n(psi1)> e-b-e (needed in some other methods):
23880 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][0]->SetBinContent(b,sinP1nPsi);
46b94261 23881 } // end of if(mp)
23882
489d5531 23883 // <<w2 sin n(psi1+phi2)>>:
23884 Double_t sinP1nPsiP1nPhiW2 = 0.;
23885 if(dM01)
23886 {
23887 sinP1nPsiP1nPhiW2 = (p1n0kRe*dImQ1n1k+p1n0kIm*dReQ1n1k-q2n1kIm)/(dM01);
23888 // fill profile for <<w2 sin n(psi1+phi2)>>:
23889 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsiP1nPhiW2,dM01);
23890 // histogram to store <w2 sin n(psi1+phi2)> e-b-e (needed in some other methods):
23891 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][1]->SetBinContent(b,sinP1nPsiP1nPhiW2);
23892 } // end of if(mp*dMult-mq)
23893
23894 // <<w2 w3 sin n(psi1+phi2-phi3)>>:
23895 Double_t sinP1nPsi1P1nPhi2MPhi3W2W3 = 0.;
23896 if(dM011)
23897 {
46b94261 23898 sinP1nPsi1P1nPhi2MPhi3W2W3 = (p1n0kIm*(pow(dImQ1n1k,2.)+pow(dReQ1n1k,2.))
23899 - p1n0kIm*dSM1p2k
23900 + q2n1kRe*dImQ1n1k-q2n1kIm*dReQ1n1k
23901 - s1p1k*dImQ1n1k
23902 + 2.*q1n2kIm)
23903 / dM011;
489d5531 23904 // fill profile for <<w2 w3 sin n(psi1+phi2-phi3)>>:
23905 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1P1nPhi2MPhi3W2W3,dM011);
23906 // histogram to store <w2 w3 sin n(psi1+phi2-phi3)> e-b-e (needed in some other methods):
23907 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][2]->SetBinContent(b,sinP1nPsi1P1nPhi2MPhi3W2W3);
23908 } // end of if(dM011)
23909
23910 // <<w2 w3 sin n(psi1-phi2-phi3)>>:
23911 Double_t sinP1nPsi1M1nPhi2MPhi3W2W3 = 0.;
23912 if(dM011)
23913 {
23914 sinP1nPsi1M1nPhi2MPhi3W2W3 = (p1n0kIm*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))-2.*p1n0kRe*dReQ1n1k*dImQ1n1k
23915 + 1.*(p1n0kRe*dImQ2n2k-p1n0kIm*dReQ2n2k)
46b94261 23916 + 2.*s1p1k*dImQ1n1k
489d5531 23917 - 2.*q1n2kIm)
23918 / dM011;
23919 // fill profile for <<w2 w3 sin n(psi1-phi2-phi3)>>:
23920 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1M1nPhi2MPhi3W2W3,dM011);
23921 // histogram to store <w2 w3 sin n(psi1-phi2-phi3)> e-b-e (needed in some other methods):
23922 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][3]->SetBinContent(b,sinP1nPsi1M1nPhi2MPhi3W2W3);
23923 } // end of if(dM011)
23924
23925 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23926
23927} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights(TString type, TString ptOrEta)
23928
e1d101a6 23929//=======================================================================================================================
489d5531 23930
0328db2d 23931void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 23932{
57340a27 23933 // Evaluate with nested loops correction terms for non-uniform acceptance
489d5531 23934 // with using particle weights (both sin and cos terms) relevant for differential flow.
23935
57340a27 23936 // Remark 1: "w1" in expressions bellow is a particle weight used only for particles which were
23937 // flagged both as POI and RP.
489d5531 23938 // Remark 2: Reduced correction terms for non-uniform acceptance are evaluated in pt bin number fCrossCheckInPtBinNo
23939 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
23940 // Remark 3: Results are stored in 1 bin profiles fDiffFlowDirectCorrections[t][pe][sc][cti], where first three indices runs as:
23941 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms], whilst the cti (correction term index) runs as follows:
23942 // cti:
23943 // 0: <<sc n(psi1)>>
23944 // 1: <<w2 sc n(psi1+phi2)>>
23945 // 2: <<w2 w3 sc n(psi1+phi2-phi3)>>
23946 // 3: <<w2 w3 sc n(psi1-phi2-phi3)>>
23947 // 4:
23948 // 5:
23949 // 6:
46b94261 23950
2a98ceb8 23951 Int_t typeFlag = 0;
23952 Int_t ptEtaFlag = 0;
489d5531 23953 if(type == "RP")
23954 {
23955 typeFlag = 0;
23956 } else if(type == "POI")
23957 {
23958 typeFlag = 1;
23959 }
23960 if(ptOrEta == "Pt")
23961 {
23962 ptEtaFlag = 0;
23963 } else if(ptOrEta == "Eta")
23964 {
23965 ptEtaFlag = 1;
23966 }
23967 // shortcuts:
23968 Int_t t = typeFlag;
23969 Int_t pe = ptEtaFlag;
23970
23971 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
23972 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
23973 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23974
23975 Int_t nPrim = anEvent->NumberOfTracks();
23976 AliFlowTrackSimple *aftsTrack = NULL;
23977
23978 Double_t psi1=0., phi2=0., phi3=0.;// phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
23979 Double_t wPhi2=1., wPhi3=1.;
23980
23981 Int_t n = fHarmonic;
23982
23983 // 1'-particle correction terms:
23984 for(Int_t i1=0;i1<nPrim;i1++)
23985 {
23986 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23987 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23988 if(typeFlag==1) // this is diff flow of POIs
489d5531 23989 {
23990 if(ptOrEta == "Pt")
23991 {
23992 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23993 } else if (ptOrEta == "Eta")
23994 {
23995 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23996 }
23997 } else // this is diff flow of RPs
23998 {
489d5531 23999 if(ptOrEta == "Pt")
24000 {
24001 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
24002 } else if (ptOrEta == "Eta")
24003 {
24004 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 24005 }
489d5531 24006 }
24007 psi1=aftsTrack->Phi();
24008 // sin terms:
24009 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*psi1),1.); // <<sin(n*(psi1))>>
24010 // cos terms:
24011 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*psi1),1.); // <<cos(n*(psi1))>>
24012 }//end of for(Int_t i1=0;i1<nPrim;i1++)
24013
24014 // 2'-particle correction terms:
24015 for(Int_t i1=0;i1<nPrim;i1++)
24016 {
24017 aftsTrack=anEvent->GetTrack(i1);
3b552efe 24018 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
24019 if(typeFlag==1) // this is diff flow of POIs
489d5531 24020 {
24021 if(ptOrEta == "Pt")
24022 {
24023 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
24024 } else if (ptOrEta == "Eta")
24025 {
24026 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 24027 }
24028 } else // this is diff flow of RPs
24029 {
489d5531 24030 if(ptOrEta == "Pt")
24031 {
24032 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
24033 } else if (ptOrEta == "Eta")
24034 {
24035 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 24036 }
489d5531 24037 }
24038 psi1=aftsTrack->Phi();
24039 for(Int_t i2=0;i2<nPrim;i2++)
24040 {
24041 if(i2==i1) continue;
24042 aftsTrack=anEvent->GetTrack(i2);
24043 // RP condition (!(first) particle in the correlator must be RP):
24044 if(!(aftsTrack->InRPSelection())) continue;
46b94261 24045 phi2=aftsTrack->Phi();
489d5531 24046 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
24047 // sin terms:
24048 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2)),wPhi2); // <<w2 sin(n*(psi1+phi2))>>
24049 // cos terms:
24050 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2)),wPhi2); // <<w2 cos(n*(psi1+phi2))>>
24051 }//end of for(Int_t i2=0;i2<nPrim;i2++)
24052 }//end of for(Int_t i1=0;i1<nPrim;i1++)
24053
24054 // 3'-particle correction terms:
24055 for(Int_t i1=0;i1<nPrim;i1++)
24056 {
24057 aftsTrack=anEvent->GetTrack(i1);
3b552efe 24058 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
24059 if(typeFlag==1) // this is diff flow of POIs
489d5531 24060 {
24061 if(ptOrEta == "Pt")
24062 {
24063 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
24064 } else if (ptOrEta == "Eta")
24065 {
24066 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 24067 }
24068 } else // this is diff flow of RPs
24069 {
489d5531 24070 if(ptOrEta == "Pt")
24071 {
24072 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
24073 } else if (ptOrEta == "Eta")
24074 {
24075 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 24076 }
489d5531 24077 }
24078 psi1=aftsTrack->Phi();
24079 for(Int_t i2=0;i2<nPrim;i2++)
24080 {
24081 if(i2==i1) continue;
24082 aftsTrack=anEvent->GetTrack(i2);
24083 // RP condition (!(first) particle in the correlator must be RP):
24084 if(!(aftsTrack->InRPSelection())) continue;
24085 phi2=aftsTrack->Phi();
24086 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
24087 for(Int_t i3=0;i3<nPrim;i3++)
24088 {
24089 if(i3==i1||i3==i2) continue;
24090 aftsTrack=anEvent->GetTrack(i3);
24091 // RP condition (!(first) particle in the correlator must be RP):
24092 if(!(aftsTrack->InRPSelection())) continue;
24093 phi3=aftsTrack->Phi();
24094 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
24095 // sin terms:
24096 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))>>
24097 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))>>
24098 // cos terms:
24099 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))>>
24100 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))>>
24101 }//end of for(Int_t i3=0;i3<nPrim;i3++)
24102 }//end of for(Int_t i2=0;i2<nPrim;i2++)
46b94261 24103 }//end of for(Int_t i1=0;i1<nPrim;i1++)
489d5531 24104
24105} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
24106
e1d101a6 24107//=======================================================================================================================
2001bc3a 24108
b3dacf6b 24109void AliFlowAnalysisWithQCumulants::CheckPointersUsedInFinish()
24110{
24111 // Check all pointers used in method Finish().
24112
b77b6434 24113 if(!fAvMultiplicity)
24114 {
24115 cout<<endl;
24116 cout<<" WARNING (QC): fAvMultiplicity is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24117 cout<<endl;
24118 exit(0);
24119 }
b3dacf6b 24120 if(!fIntFlowCorrelationsPro)
24121 {
24122 cout<<endl;
24123 cout<<" WARNING (QC): fIntFlowCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24124 cout<<endl;
24125 exit(0);
24126 }
b40a910e 24127 if(!fIntFlowSquaredCorrelationsPro)
24128 {
24129 cout<<endl;
24130 cout<<" WARNING (QC): fIntFlowSquaredCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24131 cout<<endl;
24132 exit(0);
24133 }
b3dacf6b 24134 if(!fIntFlowCorrelationsHist)
24135 {
24136 cout<<endl;
24137 cout<<" WARNING (QC): fIntFlowCorrelationsHist is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24138 cout<<endl;
24139 exit(0);
24140 }
403e3389 24141 if((fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) && !fIntFlowExtraCorrelationsPro)
b77b6434 24142 {
24143 cout<<endl;
24144 cout<<" WARNING (QC): fIntFlowExtraCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24145 cout<<endl;
24146 exit(0);
24147 }
b3dacf6b 24148 for(Int_t power=0;power<2;power++)
24149 {
24150 if(!fIntFlowSumOfEventWeights[power])
24151 {
24152 cout<<endl;
24153 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeights[%d] is NULL in CheckPointersUsedInFinish() !!!!",power)<<endl;
24154 cout<<endl;
24155 exit(0);
24156 }
24157 } // end of for(Int_t power=0;power<2;power++)
24158 if(!fIntFlowProductOfCorrelationsPro)
24159 {
24160 cout<<endl;
24161 cout<<" WARNING (QC): fIntFlowProductOfCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24162 cout<<endl;
24163 exit(0);
24164 }
24165 if(!fIntFlowSumOfProductOfEventWeights)
24166 {
24167 cout<<endl;
24168 cout<<" WARNING (QC): fIntFlowSumOfProductOfEventWeights is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24169 cout<<endl;
24170 exit(0);
24171 }
24172 if(!fIntFlowCovariances)
24173 {
24174 cout<<endl;
24175 cout<<" WARNING (QC): fIntFlowCovariances is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24176 cout<<endl;
24177 exit(0);
24178 }
24179 if(!fIntFlowQcumulants)
24180 {
24181 cout<<endl;
24182 cout<<" WARNING (QC): fIntFlowQcumulants is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24183 cout<<endl;
24184 exit(0);
24185 }
0dd3b008 24186 if(!fIntFlow)
24187 {
24188 cout<<endl;
24189 cout<<" WARNING (QC): fIntFlow is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24190 cout<<endl;
24191 exit(0);
24192 }
24193 if(!fCommonHists)
24194 {
24195 cout<<endl;
24196 cout<<" WARNING (QC): fCommonHists is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24197 cout<<endl;
24198 exit(0);
24199 }
24200 if(!(fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th))
24201 {
24202 cout<<endl;
24203 cout<<" WARNING (QC): fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th"<<endl;
24204 cout<<" && fCommonHistsResults8th is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24205 cout<<endl;
24206 exit(0);
24207 }
e1d101a6 24208
b92ea2b9 24209 // NUA stuff:
24210 for(Int_t sc=0;sc<2;sc++) // sin/cos
24211 {
24212 if(!fIntFlowCorrectionTermsForNUAPro[sc])
24213 {
24214 cout<<endl;
24215 cout<<Form(" WARNING (QC): fIntFlowCorrectionTermsForNUAPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",sc)<<endl;
24216 cout<<endl;
24217 exit(0);
24218 }
24219 if(!fIntFlowCorrectionTermsForNUAHist[sc])
24220 {
24221 cout<<endl;
24222 cout<<Form(" WARNING (QC): fIntFlowCorrectionTermsForNUAHist[%d] is NULL in CheckPointersUsedInFinish() !!!!",sc)<<endl;
24223 cout<<endl;
24224 exit(0);
24225 }
24226 for(Int_t lq=0;lq<2;lq++) // linear/quadratic
24227 {
24228 if(!fIntFlowSumOfEventWeightsNUA[sc][lq])
24229 {
24230 cout<<endl;
24231 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeightsNUA[%d][%d] is NULL in CheckPointersUsedInFinish() !!!!",sc,lq)<<endl;
24232 cout<<endl;
24233 exit(0);
24234 }
24235 } // end of for(Int_t lq=0;lq<2;lq++) // linear/quadratic
24236 } // end of for(Int_t power=0;power<2;power++)
24237 if(!fIntFlowProductOfCorrectionTermsForNUAPro)
24238 {
24239 cout<<endl;
24240 cout<<" WARNING (QC): fIntFlowProductOfCorrectionTermsForNUAPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24241 cout<<endl;
24242 exit(0);
24243 }
24244 if(!fIntFlowSumOfProductOfEventWeightsNUA)
24245 {
24246 cout<<endl;
24247 cout<<" WARNING (QC): fIntFlowSumOfProductOfEventWeightsNUA is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24248 cout<<endl;
24249 exit(0);
24250 }
24251 if(!fIntFlowCovariancesNUA)
24252 {
24253 cout<<endl;
24254 cout<<" WARNING (QC): fIntFlowCovariancesNUA is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24255 cout<<endl;
24256 exit(0);
24257 }
24258 if(!fIntFlowQcumulantsErrorSquaredRatio)
24259 {
24260 cout<<endl;
24261 cout<<" WARNING (QC): fIntFlowQcumulantsErrorSquaredRatio is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24262 cout<<endl;
24263 exit(0);
24264 }
24265 if(!fIntFlowDetectorBias)
24266 {
24267 cout<<endl;
24268 cout<<" WARNING (QC): fIntFlowDetectorBias is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24269 cout<<endl;
24270 exit(0);
24271 }
24272
e1d101a6 24273 if(fCalculateMixedHarmonics)
24274 {
24275 if(!(fMixedHarmonicsFlags))
24276 {
24277 cout<<endl;
24278 cout<<" WARNING (QC): fMixedHarmonicsFlags is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24279 cout<<endl;
24280 exit(0);
24281 }
24282 if(!(f2pCorrelations && f3pCorrelations && f4pCorrelations && f5pCorrelations))
24283 {
24284 cout<<endl;
24285 cout<<" WARNING (QC): f2pCorrelations && f3pCorrelations && f4pCorrelations && f5pCorrelations is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24286 cout<<endl;
24287 exit(0);
24288 }
24289 if(!(f2pCumulants && f3pCumulants && f4pCumulants && f5pCumulants))
24290 {
24291 cout<<endl;
24292 cout<<" WARNING (QC): f2pCumulants && f3pCumulants && f4pCumulants && f5pCumulants is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24293 cout<<endl;
24294 exit(0);
24295 }
c10259fb 24296 for(Int_t power=0;power<2;power++)
24297 {
24298 if(!fMixedHarmonicEventWeights[power])
24299 {
24300 cout<<endl;
24301 cout<<Form(" WARNING (QC): fMixedHarmonicEventWeights[%d] is NULL in CheckPointersUsedInFinish() !!!!",power)<<endl;
24302 cout<<endl;
24303 exit(0);
24304 }
24305 } // end of for(Int_t power=0;power<2;power++)
24306 if(!(fMixedHarmonicProductOfEventWeights))
24307 {
24308 cout<<endl;
24309 cout<<" WARNING (QC): fMixedHarmonicProductOfEventWeights is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24310 cout<<endl;
24311 exit(0);
24312 }
24313 if(!(fMixedHarmonicProductOfCorrelations))
24314 {
24315 cout<<endl;
24316 cout<<" WARNING (QC): fMixedHarmonicProductOfCorrelations is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24317 cout<<endl;
24318 exit(0);
24319 }
e1d101a6 24320 } // end of if(fCalculateMixedHarmonics)
24321
b3dacf6b 24322 // Versus multiplicity:
24323 if(!fCalculateCumulantsVsM){return;}
b77b6434 24324 for(Int_t co=0;co<=3;co++) // cumulant order
b3dacf6b 24325 {
b77b6434 24326 if(!fIntFlowQcumulantsVsM[co])
b3dacf6b 24327 {
24328 cout<<endl;
b77b6434 24329 cout<<Form(" WARNING (QC): fIntFlowQcumulantsVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
b3dacf6b 24330 cout<<endl;
24331 exit(0);
24332 }
b77b6434 24333 if(!fIntFlowVsM[co])
b3dacf6b 24334 {
24335 cout<<endl;
b77b6434 24336 cout<<Form(" WARNING (QC): fIntFlowVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
24337 cout<<endl;
24338 exit(0);
24339 }
24340 if(!fIntFlowDetectorBiasVsM[co])
24341 {
24342 cout<<endl;
24343 cout<<Form(" WARNING (QC): fIntFlowDetectorBiasVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
24344 cout<<endl;
24345 exit(0);
24346 }
24347 } // end of for(Int_t c0=0;c0<=3;c0++) // cumulant order
24348 for(Int_t ci=0;ci<=3;ci++) // correlation index
24349 {
24350 if(!fIntFlowCorrelationsVsMPro[ci])
24351 {
24352 cout<<endl;
24353 cout<<Form(" WARNING (QC): fIntFlowCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
b3dacf6b 24354 cout<<endl;
24355 exit(0);
24356 }
b40a910e 24357 if(!fIntFlowSquaredCorrelationsVsMPro[ci])
24358 {
24359 cout<<endl;
24360 cout<<Form(" WARNING (QC): fIntFlowSquaredCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
24361 cout<<endl;
24362 exit(0);
24363 }
b77b6434 24364 if(!fIntFlowCorrelationsVsMHist[ci])
b92ea2b9 24365 {
24366 cout<<endl;
b77b6434 24367 cout<<Form(" WARNING (QC): fIntFlowCorrelationsVsMHist[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
b92ea2b9 24368 cout<<endl;
24369 exit(0);
24370 }
b3dacf6b 24371 for(Int_t power=0;power<2;power++)
24372 {
24373 if(!fIntFlowSumOfEventWeightsVsM[ci][power])
24374 {
24375 cout<<endl;
24376 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeightsVsM[%d][%d] is NULL in CheckPointersUsedInFinish() !!!!",ci,power)<<endl;
24377 cout<<endl;
24378 exit(0);
24379 }
24380 } // end of for(Int_t power=0;power<2;power++)
24381 } // end of for(Int_t ci=0;ci<=3;ci++) // correlation index
24382 for(Int_t i=0;i<6;i++)
24383 {
24384 if(!fIntFlowProductOfCorrelationsVsMPro[i])
24385 {
24386 cout<<endl;
24387 cout<<Form(" WARNING (QC): fIntFlowProductOfCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24388 cout<<endl;
24389 exit(0);
24390 }
24391 if(!fIntFlowSumOfProductOfEventWeightsVsM[i])
24392 {
24393 cout<<endl;
24394 cout<<Form(" WARNING (QC): fIntFlowSumOfProductOfEventWeightsVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24395 cout<<endl;
24396 exit(0);
24397 }
24398 if(!fIntFlowCovariancesVsM[i])
24399 {
24400 cout<<endl;
24401 cout<<Form(" WARNING (QC): fIntFlowCovariancesVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24402 cout<<endl;
24403 exit(0);
24404 }
24405 } // end of for(Int_t i=0;i<6;i++)
24406 if(!fIntFlowRebinnedInM)
24407 {
24408 cout<<endl;
24409 cout<<" WARNING (QC): fIntFlowRebinnedInM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24410 cout<<endl;
24411 exit(0);
24412 }
24413 if(!fIntFlowQcumulantsRebinnedInM)
24414 {
24415 cout<<endl;
24416 cout<<" WARNING (QC): fIntFlowQcumulantsRebinnedInM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24417 cout<<endl;
24418 exit(0);
24419 }
24420
24421} // end of void AliFlowAnalysisWithQCumulants::CheckPointersUsedInFinish()
24422
e1d101a6 24423//=======================================================================================================================
b3dacf6b 24424
24425void AliFlowAnalysisWithQCumulants::CheckPointersUsedInMake()
24426{
1268c371 24427 // Check all pointers used in method Make(). // to be improved - check other pointers as well
b3dacf6b 24428
b77b6434 24429 if(!fAvMultiplicity)
24430 {
1268c371 24431 printf("\n WARNING (QC): fAvMultiplicity is NULL in CheckPointersUsedInMake() !!!!\n\n");
b77b6434 24432 exit(0);
24433 }
403e3389 24434 if((fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) && !fIntFlowExtraCorrelationsPro)
b77b6434 24435 {
1268c371 24436 printf("\n WARNING (QC): fIntFlowExtraCorrelationsPro is NULL in CheckPointersUsedInMake() !!!!\n\n");
b77b6434 24437 exit(0);
24438 }
1268c371 24439 // 2D:
24440 if(fCalculate2DDiffFlow)
24441 {
24442 for(Int_t t=0;t<2;t++) // type = RP or POI
24443 {
24444 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
24445 {
24446 if(!f2DDiffFlowCorrelationsPro[t][rci])
24447 {
24448 printf("\n WARNING (QC): f2DDiffFlowCorrelationsPro[%i][%i] is NULL in CheckPointersUsedInMake() !!!!\n\n",t,rci);
24449 exit(0);
24450 } // end of if(!f2DDiffFlowCorrelationsPro[t][rci])
24451 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
24452 } // end of for(Int_t t=0;t<2;t++)
24453 } // end of if(fCalculate2DDiffFlow)
b3dacf6b 24454
24455} // end of void AliFlowAnalysisWithQCumulants::CheckPointersUsedInMake()
24456
57340a27 24457