]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/FLOW/Base/AliFlowAnalysisWithQCumulants.cxx
ante updates
[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),
114 // 3.) integrated flow:
115 fIntFlowList(NULL),
116 fIntFlowProfiles(NULL),
117 fIntFlowResults(NULL),
3435cacb 118 fIntFlowAllCorrelationsVsM(NULL),
489d5531 119 fIntFlowFlags(NULL),
b92ea2b9 120 fApplyCorrectionForNUA(kFALSE),
2001bc3a 121 fApplyCorrectionForNUAVsM(kFALSE),
9da1a4f3 122 fnBinsMult(10000),
067e9bc8 123 fMinMult(0.),
124 fMaxMult(10000.),
b77b6434 125 fPropagateErrorAlsoFromNIT(kFALSE),
8ed4edc7 126 fCalculateCumulantsVsM(kFALSE),
3435cacb 127 fCalculateAllCorrelationsVsM(kFALSE),
0dd3b008 128 fMinimumBiasReferenceFlow(kTRUE),
e5834fcb 129 fForgetAboutCovariances(kFALSE),
130 fStorePhiDistributionForOneEvent(kFALSE),
489d5531 131 fReQ(NULL),
132 fImQ(NULL),
1268c371 133 fSpk(NULL),
489d5531 134 fIntFlowCorrelationsEBE(NULL),
135 fIntFlowEventWeightsForCorrelationsEBE(NULL),
136 fIntFlowCorrelationsAllEBE(NULL),
e5834fcb 137 fReferenceMultiplicityEBE(0.),
489d5531 138 fAvMultiplicity(NULL),
139 fIntFlowCorrelationsPro(NULL),
b40a910e 140 fIntFlowSquaredCorrelationsPro(NULL),
489d5531 141 fIntFlowCorrelationsAllPro(NULL),
142 fIntFlowExtraCorrelationsPro(NULL),
143 fIntFlowProductOfCorrelationsPro(NULL),
0328db2d 144 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
489d5531 145 fIntFlowCorrelationsHist(NULL),
146 fIntFlowCorrelationsAllHist(NULL),
147 fIntFlowCovariances(NULL),
148 fIntFlowSumOfProductOfEventWeights(NULL),
0328db2d 149 fIntFlowCovariancesNUA(NULL),
150 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
489d5531 151 fIntFlowQcumulants(NULL),
b92ea2b9 152 fIntFlowQcumulantsRebinnedInM(NULL),
153 fIntFlowQcumulantsErrorSquaredRatio(NULL),
489d5531 154 fIntFlow(NULL),
b3dacf6b 155 fIntFlowRebinnedInM(NULL),
2001bc3a 156 fIntFlowDetectorBias(NULL),
489d5531 157 // 4.) differential flow:
158 fDiffFlowList(NULL),
159 fDiffFlowProfiles(NULL),
160 fDiffFlowResults(NULL),
1268c371 161 fDiffFlow2D(NULL),
489d5531 162 fDiffFlowFlags(NULL),
1268c371 163 fCalculateDiffFlow(kTRUE),
164 fCalculate2DDiffFlow(kFALSE),
62e36168 165 fCalculateDiffFlowVsEta(kTRUE),
64e500e3 166 // 5.) other differential correlators:
167 fOtherDiffCorrelatorsList(NULL),
168 // 6.) distributions:
57340a27 169 fDistributionsList(NULL),
170 fDistributionsFlags(NULL),
489d5531 171 fStoreDistributions(kFALSE),
64e500e3 172 // 7.) various:
e5834fcb 173 fVariousList(NULL),
174 fPhiDistributionForOneEvent(NULL),
e1d101a6 175 // 8.) debugging and cross-checking:
489d5531 176 fNestedLoopsList(NULL),
177 fEvaluateIntFlowNestedLoops(kFALSE),
178 fEvaluateDiffFlowNestedLoops(kFALSE),
179 fMaxAllowedMultiplicity(10),
180 fEvaluateNestedLoops(NULL),
181 fIntFlowDirectCorrelations(NULL),
182 fIntFlowExtraDirectCorrelations(NULL),
183 fCrossCheckInPtBinNo(10),
3b552efe 184 fCrossCheckInEtaBinNo(20),
e1d101a6 185 fNoOfParticlesInBin(NULL),
186 fMixedHarmonicsNestedLoops(NULL),
187 // 9.) mixed harmonics:
188 fMixedHarmonicsList(NULL),
189 fMixedHarmonicsProfiles(NULL),
190 fMixedHarmonicsResults(NULL),
c10259fb 191 fMixedHarmonicsErrorPropagation(NULL),
e1d101a6 192 fMixedHarmonicsFlags(NULL),
193 fCalculateMixedHarmonics(kFALSE),
194 fCalculateMixedHarmonicsVsM(kFALSE),
195 f2pCorrelations(NULL),
196 f3pCorrelations(NULL),
197 f4pCorrelations(NULL),
198 f5pCorrelations(NULL),
199 f6pCorrelations(NULL),
200 f7pCorrelations(NULL),
201 f8pCorrelations(NULL),
202 f2pCumulants(NULL),
203 f3pCumulants(NULL),
204 f4pCumulants(NULL),
205 f5pCumulants(NULL),
206 f6pCumulants(NULL),
207 f7pCumulants(NULL),
c10259fb 208 f8pCumulants(NULL),
209 fMixedHarmonicProductOfEventWeights(NULL),
210 fMixedHarmonicProductOfCorrelations(NULL)
489d5531 211 {
212 // constructor
213
214 // base list to hold all output objects:
215 fHistList = new TList();
216 fHistList->SetName("cobjQC");
217 fHistList->SetOwner(kTRUE);
218
219 // list to hold histograms with phi, pt and eta weights:
220 fWeightsList = new TList();
221
222 // multiplicity weight:
223 fMultiplicityWeight = new TString("combinations");
224
225 // analysis label;
226 fAnalysisLabel = new TString();
227
228 // initialize all arrays:
229 this->InitializeArraysForIntFlow();
230 this->InitializeArraysForDiffFlow();
231 this->InitializeArraysForDistributions();
e5834fcb 232 this->InitializeArraysForVarious();
489d5531 233 this->InitializeArraysForNestedLoops();
c10259fb 234 this->InitializeArraysForMixedHarmonics();
489d5531 235
236 } // end of constructor
237
489d5531 238//================================================================================================================
239
489d5531 240AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
241{
242 // destructor
243
244 delete fHistList;
245
246} // end of AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
247
489d5531 248//================================================================================================================
249
489d5531 250void AliFlowAnalysisWithQCumulants::Init()
251{
3b552efe 252 // a) Cross check if the settings make sense before starting the QC adventure;
489d5531 253 // b) Access all common constants;
254 // c) Book all objects;
3b552efe 255 // d) Store flags for integrated and differential flow;
489d5531 256 // e) Store flags for distributions of corelations;
e1d101a6 257 // f) Store harmonic which will be estimated;
258 // g) Store flags for mixed harmonics.
3b552efe 259
489d5531 260 //save old value and prevent histograms from being added to directory
261 //to avoid name clashes in case multiple analaysis objects are used
262 //in an analysis
263 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
264 TH1::AddDirectory(kFALSE);
265
3b552efe 266 // a) Cross check if the settings make sense before starting the QC adventure;
489d5531 267 this->CrossCheckSettings();
1268c371 268 // b) Access all common constants and book a profile to hold them:
269 this->CommonConstants("Init");
489d5531 270 // c) Book all objects:
1268c371 271 this->BookAndFillWeightsHistograms();
489d5531 272 this->BookAndNestAllLists();
273 this->BookCommonHistograms();
274 this->BookEverythingForIntegratedFlow();
275 this->BookEverythingForDifferentialFlow();
1268c371 276 this->BookEverythingFor2DDifferentialFlow();
489d5531 277 this->BookEverythingForDistributions();
e5834fcb 278 this->BookEverythingForVarious();
489d5531 279 this->BookEverythingForNestedLoops();
e1d101a6 280 this->BookEverythingForMixedHarmonics();
281
489d5531 282 // d) Store flags for integrated and differential flow:
283 this->StoreIntFlowFlags();
3b552efe 284 this->StoreDiffFlowFlags();
489d5531 285 // e) Store flags for distributions of corelations:
286 this->StoreFlagsForDistributions();
287 // f) Store harmonic which will be estimated:
288 this->StoreHarmonic();
e1d101a6 289 // g) Store flags for mixed harmonics:
290 this->StoreMixedHarmonicsFlags();
489d5531 291
292 TH1::AddDirectory(oldHistAddStatus);
293} // end of void AliFlowAnalysisWithQCumulants::Init()
294
489d5531 295//================================================================================================================
296
489d5531 297void AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
298{
299 // Running over data only in this method.
300
b3dacf6b 301 // a) Check all pointers used in this method;
302 // b) Define local variables;
303 // c) Fill the common control histograms and call the method to fill fAvMultiplicity;
1268c371 304 // d) Loop over data and calculate e-b-e quantities Q_{n,k}, S_{p,k} and s_{p,k};
305 // e) Calculate the final expressions for S_{p,k} and s_{p,k} (important !!!!);
306 // f) Call the methods which calculate correlations for reference flow;
307 // g) Call the methods which calculate correlations for differential flow;
308 // h) Call the methods which calculate correlations for 2D differential flow;
64e500e3 309 // i) Call the methods which calculate other differential correlators;
310 // j) Distributions of correlations;
311 // k) Store phi distribution for one event to illustrate flow;
312 // l) Cross-check with nested loops correlators for reference flow;
313 // m) Cross-check with nested loops correlators for differential flow;
314 // n) Reset all event-by-event quantities (very important !!!!).
489d5531 315
b3dacf6b 316 // a) Check all pointers used in this method:
317 this->CheckPointersUsedInMake();
318
319 // b) Define local variables:
489d5531 320 Double_t dPhi = 0.; // azimuthal angle in the laboratory frame
321 Double_t dPt = 0.; // transverse momentum
322 Double_t dEta = 0.; // pseudorapidity
489d5531 323 Double_t wPhi = 1.; // phi weight
324 Double_t wPt = 1.; // pt weight
325 Double_t wEta = 1.; // eta weight
38a1e8b3 326 Double_t wTrack = 1.; // track weight
1268c371 327 Int_t nRP = anEvent->GetEventNSelTracksRP(); // number of RPs (i.e. number of reference particles)
e5834fcb 328 fReferenceMultiplicityEBE = anEvent->GetReferenceMultiplicity(); // reference multiplicity for current event
1268c371 329 Double_t ptEta[2] = {0.,0.}; // 0 = dPt, 1 = dEta
9f33751d 330
b3dacf6b 331 // c) Fill the common control histograms and call the method to fill fAvMultiplicity:
489d5531 332 this->FillCommonControlHistograms(anEvent);
333 this->FillAverageMultiplicities(nRP);
334
1268c371 335 // d) Loop over data and calculate e-b-e quantities Q_{n,k}, S_{p,k} and s_{p,k}:
9f33751d 336 Int_t nPrim = anEvent->NumberOfTracks(); // nPrim = total number of primary tracks, i.e. nPrim = nRP + nPOI where:
1268c371 337 // nRP = # of reference particles;
338 // nPOI = # of particles of interest.
489d5531 339 AliFlowTrackSimple *aftsTrack = NULL;
1268c371 340 Int_t n = fHarmonic; // shortcut for the harmonic
489d5531 341 for(Int_t i=0;i<nPrim;i++)
342 {
343 aftsTrack=anEvent->GetTrack(i);
344 if(aftsTrack)
345 {
1268c371 346 if(!(aftsTrack->InRPSelection() || aftsTrack->InPOISelection())){continue;} // safety measure: consider only tracks which are RPs or POIs
489d5531 347 if(aftsTrack->InRPSelection()) // RP condition:
348 {
349 dPhi = aftsTrack->Phi();
350 dPt = aftsTrack->Pt();
351 dEta = aftsTrack->Eta();
352 if(fUsePhiWeights && fPhiWeights && fnBinsPhi) // determine phi weight for this particle:
353 {
354 wPhi = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*fnBinsPhi/TMath::TwoPi())));
355 }
356 if(fUsePtWeights && fPtWeights && fnBinsPt) // determine pt weight for this particle:
357 {
358 wPt = fPtWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/fPtBinWidth)));
359 }
360 if(fUseEtaWeights && fEtaWeights && fEtaBinWidth) // determine eta weight for this particle:
361 {
362 wEta = fEtaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/fEtaBinWidth)));
38a1e8b3 363 }
364 // Access track weight:
403e3389 365 if(fUseTrackWeights)
366 {
367 wTrack = aftsTrack->Weight();
368 }
e1d101a6 369 // Calculate Re[Q_{m*n,k}] and Im[Q_{m*n,k}] for this event (m = 1,2,...,12, k = 0,1,...,8):
370 for(Int_t m=0;m<12;m++) // to be improved - hardwired 6
489d5531 371 {
1268c371 372 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 373 {
38a1e8b3 374 (*fReQ)(m,k)+=pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
375 (*fImQ)(m,k)+=pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
489d5531 376 }
377 }
1268c371 378 // Calculate S_{p,k} for this event (Remark: final calculation of S_{p,k} follows after the loop over data bellow):
489d5531 379 for(Int_t p=0;p<8;p++)
380 {
381 for(Int_t k=0;k<9;k++)
382 {
38a1e8b3 383 (*fSpk)(p,k)+=pow(wPhi*wPt*wEta*wTrack,k);
489d5531 384 }
385 }
1268c371 386 // Differential flow:
387 if(fCalculateDiffFlow || fCalculate2DDiffFlow)
489d5531 388 {
1268c371 389 ptEta[0] = dPt;
390 ptEta[1] = dEta;
391 // Calculate r_{m*n,k} and s_{p,k} (r_{m,k} is 'p-vector' for RPs):
392 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 393 {
1268c371 394 for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
489d5531 395 {
1268c371 396 if(fCalculateDiffFlow)
397 {
62e36168 398 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
1268c371 399 {
38a1e8b3 400 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
401 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 402 if(m==0) // s_{p,k} does not depend on index m
403 {
38a1e8b3 404 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 405 } // end of if(m==0) // s_{p,k} does not depend on index m
406 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
407 } // end of if(fCalculateDiffFlow)
408 if(fCalculate2DDiffFlow)
409 {
38a1e8b3 410 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
411 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 412 if(m==0) // s_{p,k} does not depend on index m
413 {
38a1e8b3 414 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 415 } // end of if(m==0) // s_{p,k} does not depend on index m
416 } // end of if(fCalculate2DDiffFlow)
417 } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
418 } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
419 // Checking if RP particle is also POI particle:
420 if(aftsTrack->InPOISelection())
489d5531 421 {
1268c371 422 // Calculate q_{m*n,k} and s_{p,k} ('q-vector' and 's' for RPs && POIs):
423 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 424 {
1268c371 425 for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
489d5531 426 {
1268c371 427 if(fCalculateDiffFlow)
428 {
62e36168 429 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
1268c371 430 {
38a1e8b3 431 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
432 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 433 if(m==0) // s_{p,k} does not depend on index m
434 {
38a1e8b3 435 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 436 } // end of if(m==0) // s_{p,k} does not depend on index m
437 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
438 } // end of if(fCalculateDiffFlow)
439 if(fCalculate2DDiffFlow)
440 {
38a1e8b3 441 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
442 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 443 if(m==0) // s_{p,k} does not depend on index m
444 {
38a1e8b3 445 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 446 } // end of if(m==0) // s_{p,k} does not depend on index m
447 } // end of if(fCalculate2DDiffFlow)
448 } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
449 } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
450 } // end of if(aftsTrack->InPOISelection())
451 } // end of if(fCalculateDiffFlow || fCalculate2DDiffFlow)
489d5531 452 } // end of if(pTrack->InRPSelection())
489d5531 453 if(aftsTrack->InPOISelection())
454 {
455 dPhi = aftsTrack->Phi();
456 dPt = aftsTrack->Pt();
457 dEta = aftsTrack->Eta();
38a1e8b3 458 wPhi = 1.;
459 wPt = 1.;
460 wEta = 1.;
461 wTrack = 1.;
462 if(fUsePhiWeights && fPhiWeights && fnBinsPhi && aftsTrack->InRPSelection()) // determine phi weight for POI && RP particle:
463 {
464 wPhi = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*fnBinsPhi/TMath::TwoPi())));
465 }
466 if(fUsePtWeights && fPtWeights && fnBinsPt && aftsTrack->InRPSelection()) // determine pt weight for POI && RP particle:
467 {
468 wPt = fPtWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/fPtBinWidth)));
469 }
470 if(fUseEtaWeights && fEtaWeights && fEtaBinWidth && aftsTrack->InRPSelection()) // determine eta weight for POI && RP particle:
471 {
472 wEta = fEtaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/fEtaBinWidth)));
473 }
474 // Access track weight for POI && RP particle:
403e3389 475 if(aftsTrack->InRPSelection() && fUseTrackWeights)
38a1e8b3 476 {
477 wTrack = aftsTrack->Weight();
478 }
1268c371 479 ptEta[0] = dPt;
480 ptEta[1] = dEta;
481 // Calculate p_{m*n,k} ('p-vector' for POIs):
482 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 483 {
1268c371 484 for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
489d5531 485 {
1268c371 486 if(fCalculateDiffFlow)
487 {
62e36168 488 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
1268c371 489 {
38a1e8b3 490 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
491 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 492 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
493 } // end of if(fCalculateDiffFlow)
494 if(fCalculate2DDiffFlow)
495 {
38a1e8b3 496 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
497 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 498 } // end of if(fCalculate2DDiffFlow)
499 } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
500 } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
b77b6434 501 } // end of if(pTrack->InPOISelection())
489d5531 502 } else // to if(aftsTrack)
503 {
38a1e8b3 504 printf("\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
489d5531 505 }
506 } // end of for(Int_t i=0;i<nPrim;i++)
507
1268c371 508 // e) Calculate the final expressions for S_{p,k} and s_{p,k} (important !!!!):
489d5531 509 for(Int_t p=0;p<8;p++)
510 {
511 for(Int_t k=0;k<9;k++)
512 {
1268c371 513 (*fSpk)(p,k)=pow((*fSpk)(p,k),p+1);
514 // ... for the time being s_{p,k} dosn't need higher powers, so no need to finalize it here ...
515 } // end of for(Int_t k=0;k<9;k++)
516 } // end of for(Int_t p=0;p<8;p++)
489d5531 517
1268c371 518 // f) Call the methods which calculate correlations for reference flow:
489d5531 519 if(!fEvaluateIntFlowNestedLoops)
520 {
403e3389 521 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 522 {
1268c371 523 if(nRP>1){this->CalculateIntFlowCorrelations();} // without using particle weights
403e3389 524 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 525 {
1268c371 526 if(nRP>1){this->CalculateIntFlowCorrelationsUsingParticleWeights();} // with using particle weights
527 }
528 // Whether or not using particle weights the following is calculated in the same way:
529 if(nRP>3){this->CalculateIntFlowProductOfCorrelations();}
530 if(nRP>1){this->CalculateIntFlowSumOfEventWeights();}
531 if(nRP>1){this->CalculateIntFlowSumOfProductOfEventWeights();}
532 // Non-isotropic terms:
403e3389 533 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 534 {
1268c371 535 if(nRP>0){this->CalculateIntFlowCorrectionsForNUASinTerms();}
536 if(nRP>0){this->CalculateIntFlowCorrectionsForNUACosTerms();}
403e3389 537 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
b92ea2b9 538 {
1268c371 539 if(nRP>0){this->CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights();}
540 if(nRP>0){this->CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights();}
541 }
542 // Whether or not using particle weights the following is calculated in the same way:
543 if(nRP>0){this->CalculateIntFlowProductOfCorrectionTermsForNUA();}
544 if(nRP>0){this->CalculateIntFlowSumOfEventWeightsNUA();}
e1d101a6 545 if(nRP>0){this->CalculateIntFlowSumOfProductOfEventWeightsNUA();}
546 // Mixed harmonics:
547 if(fCalculateMixedHarmonics){this->CalculateMixedHarmonics();}
489d5531 548 } // end of if(!fEvaluateIntFlowNestedLoops)
549
1268c371 550 // g) Call the methods which calculate correlations for differential flow:
551 if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
489d5531 552 {
403e3389 553 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 554 {
1268c371 555 // Without using particle weights:
489d5531 556 this->CalculateDiffFlowCorrelations("RP","Pt");
62e36168 557 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelations("RP","Eta");}
489d5531 558 this->CalculateDiffFlowCorrelations("POI","Pt");
62e36168 559 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelations("POI","Eta");}
1268c371 560 // Non-isotropic terms:
b92ea2b9 561 this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Pt");
62e36168 562 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Eta");}
b92ea2b9 563 this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Pt");
62e36168 564 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Eta");}
b92ea2b9 565 this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Pt");
62e36168 566 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Eta");}
b92ea2b9 567 this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Pt");
62e36168 568 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Eta");}
403e3389 569 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 570 {
1268c371 571 // With using particle weights:
489d5531 572 this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Pt");
62e36168 573 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Eta");}
489d5531 574 this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Pt");
62e36168 575 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Eta");}
1268c371 576 // Non-isotropic terms:
b92ea2b9 577 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Pt");
62e36168 578 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Eta");}
b92ea2b9 579 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Pt");
62e36168 580 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Eta");}
b92ea2b9 581 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Pt");
62e36168 582 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Eta");}
b92ea2b9 583 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Pt");
62e36168 584 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Eta");}
1268c371 585 }
586 // Whether or not using particle weights the following is calculated in the same way:
489d5531 587 this->CalculateDiffFlowProductOfCorrelations("RP","Pt");
62e36168 588 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowProductOfCorrelations("RP","Eta");}
489d5531 589 this->CalculateDiffFlowProductOfCorrelations("POI","Pt");
62e36168 590 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowProductOfCorrelations("POI","Eta");}
489d5531 591 this->CalculateDiffFlowSumOfEventWeights("RP","Pt");
62e36168 592 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfEventWeights("RP","Eta");}
489d5531 593 this->CalculateDiffFlowSumOfEventWeights("POI","Pt");
62e36168 594 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfEventWeights("POI","Eta");}
489d5531 595 this->CalculateDiffFlowSumOfProductOfEventWeights("RP","Pt");
62e36168 596 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfProductOfEventWeights("RP","Eta");}
489d5531 597 this->CalculateDiffFlowSumOfProductOfEventWeights("POI","Pt");
62e36168 598 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfProductOfEventWeights("POI","Eta");}
1268c371 599 } // end of if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
489d5531 600
1268c371 601 // h) Call the methods which calculate correlations for 2D differential flow:
602 if(!fEvaluateDiffFlowNestedLoops && fCalculate2DDiffFlow)
603 {
403e3389 604 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 605 {
1268c371 606 // Without using particle weights:
607 this->Calculate2DDiffFlowCorrelations("RP");
608 this->Calculate2DDiffFlowCorrelations("POI");
609 // Non-isotropic terms:
610 // ... to be ctd ...
403e3389 611 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 612 {
613 // With using particle weights:
614 // ... to be ctd ...
615 // Non-isotropic terms:
616 // ... to be ctd ...
617 }
618 // Whether or not using particle weights the following is calculated in the same way:
619 // ... to be ctd ...
620 } // end of if(!fEvaluateDiffFlowNestedLoops && fCalculate2DDiffFlow)
64e500e3 621
622 // i) Call the methods which calculate other differential correlators:
b84464d3 623 if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
64e500e3 624 {
403e3389 625 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
64e500e3 626 {
627 // Without using particle weights:
628 this->CalculateOtherDiffCorrelators("RP","Pt");
62e36168 629 if(fCalculateDiffFlowVsEta){this->CalculateOtherDiffCorrelators("RP","Eta");}
64e500e3 630 this->CalculateOtherDiffCorrelators("POI","Pt");
62e36168 631 if(fCalculateDiffFlowVsEta){this->CalculateOtherDiffCorrelators("POI","Eta");}
403e3389 632 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
64e500e3 633 {
634 // With using particle weights:
635 // ... to be ctd ...
636 }
637 // Whether or not using particle weights the following is calculated in the same way:
638 // ... to be ctd ...
639 } // end of if(!fEvaluateDiffFlowNestedLoops)
640
641 // j) Distributions of correlations:
e5834fcb 642 if(fStoreDistributions){this->StoreDistributionsOfCorrelations();}
643
64e500e3 644 // k) Store phi distribution for one event to illustrate flow:
e5834fcb 645 if(fStorePhiDistributionForOneEvent){this->StorePhiDistributionForOneEvent(anEvent);}
1268c371 646
64e500e3 647 // l) Cross-check with nested loops correlators for reference flow:
1268c371 648 if(fEvaluateIntFlowNestedLoops){this->EvaluateIntFlowNestedLoops(anEvent);}
649
64e500e3 650 // m) Cross-check with nested loops correlators for differential flow:
1268c371 651 if(fEvaluateDiffFlowNestedLoops){this->EvaluateDiffFlowNestedLoops(anEvent);}
489d5531 652
64e500e3 653 // n) Reset all event-by-event quantities (very important !!!!):
489d5531 654 this->ResetEventByEventQuantities();
655
656} // end of AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
657
e1d101a6 658//=======================================================================================================================
489d5531 659
489d5531 660void AliFlowAnalysisWithQCumulants::Finish()
661{
662 // Calculate the final results.
489d5531 663
b3dacf6b 664 // a) Check all pointers used in this method;
e1d101a6 665 // b) Access the constants;
b3dacf6b 666 // c) Access the flags;
b92ea2b9 667 // d) Calculate reference cumulants (not corrected for detector effects);
668 // e) Correct reference cumulants for detector effects;
669 // f) Calculate reference flow;
b77b6434 670 // g) Store results for reference flow in AliFlowCommonHistResults and print them on the screen;
b92ea2b9 671 // h) Calculate the final results for differential flow (without/with weights);
672 // i) Correct the results for differential flow (without/with weights) for effects of non-uniform acceptance (NUA);
673 // j) Calculate the final results for integrated flow (RP/POI) and store in AliFlowCommonHistResults;
674 // k) Store results for differential flow in AliFlowCommonHistResults;
675 // l) Print the final results for integrated flow (RP/POI) on the screen;
e1d101a6 676 // m) Cross-checking: Results from Q-vectors vs results from nested loops;
677 // i) Calculate cumulants for mixed harmonics.
678
b3dacf6b 679 // a) Check all pointers used in this method:
680 this->CheckPointersUsedInFinish();
681
e1d101a6 682 // b) Access the constants:
1268c371 683 this->CommonConstants("Finish");
489d5531 684
b3dacf6b 685 if(fCommonHists && fCommonHists->GetHarmonic()) // to be improved (moved somewhere else)
489d5531 686 {
b3dacf6b 687 fHarmonic = (Int_t)(fCommonHists->GetHarmonic())->GetBinContent(1);
489d5531 688 }
b3dacf6b 689
e1d101a6 690 // 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 691 fUsePhiWeights = (Bool_t)fUseParticleWeights->GetBinContent(1);
692 fUsePtWeights = (Bool_t)fUseParticleWeights->GetBinContent(2);
693 fUseEtaWeights = (Bool_t)fUseParticleWeights->GetBinContent(3);
403e3389 694 fUseTrackWeights = (Bool_t)fUseParticleWeights->GetBinContent(4);
b3dacf6b 695 fApplyCorrectionForNUA = (Bool_t)fIntFlowFlags->GetBinContent(3);
696 fPrintFinalResults[0] = (Bool_t)fIntFlowFlags->GetBinContent(4);
697 fPrintFinalResults[1] = (Bool_t)fIntFlowFlags->GetBinContent(5);
698 fPrintFinalResults[2] = (Bool_t)fIntFlowFlags->GetBinContent(6);
699 fPrintFinalResults[3] = (Bool_t)fIntFlowFlags->GetBinContent(7);
700 fApplyCorrectionForNUAVsM = (Bool_t)fIntFlowFlags->GetBinContent(8);
b77b6434 701 fPropagateErrorAlsoFromNIT = (Bool_t)fIntFlowFlags->GetBinContent(9);
0dd3b008 702 fCalculateCumulantsVsM = (Bool_t)fIntFlowFlags->GetBinContent(10);
703 fMinimumBiasReferenceFlow = (Bool_t)fIntFlowFlags->GetBinContent(11);
e5834fcb 704 fForgetAboutCovariances = (Bool_t)fIntFlowFlags->GetBinContent(12);
705 fStorePhiDistributionForOneEvent = (Bool_t)fIntFlowFlags->GetBinContent(13);
3435cacb 706 fFillMultipleControlHistograms = (Bool_t)fIntFlowFlags->GetBinContent(14);
707 fCalculateAllCorrelationsVsM = (Bool_t)fIntFlowFlags->GetBinContent(15);
b3dacf6b 708 fEvaluateIntFlowNestedLoops = (Bool_t)fEvaluateNestedLoops->GetBinContent(1);
709 fEvaluateDiffFlowNestedLoops = (Bool_t)fEvaluateNestedLoops->GetBinContent(2);
489d5531 710 fCrossCheckInPtBinNo = (Int_t)fEvaluateNestedLoops->GetBinContent(3);
711 fCrossCheckInEtaBinNo = (Int_t)fEvaluateNestedLoops->GetBinContent(4);
e1d101a6 712 fCalculateMixedHarmonics = (Bool_t)fMixedHarmonicsFlags->GetBinContent(1);
713 //fHarmonic = (Int_t)fMixedHarmonicsFlags->GetBinContent(2); // TBI should I add inpdependent generic harmonic here?
714 fCalculateMixedHarmonicsVsM = (Bool_t)fMixedHarmonicsFlags->GetBinContent(3);
715
b92ea2b9 716 // d) Calculate reference cumulants (not corrected for detector effects):
489d5531 717 this->FinalizeCorrelationsIntFlow();
718 this->CalculateCovariancesIntFlow();
719 this->CalculateCumulantsIntFlow();
489d5531 720
b92ea2b9 721 // e) Correct reference cumulants for detector effects:
722 this->FinalizeCorrectionTermsForNUAIntFlow();
723 this->CalculateCovariancesNUAIntFlow();
724 this->CalculateQcumulantsCorrectedForNUAIntFlow();
725
726 // f) Calculate reference flow:
727 this->CalculateReferenceFlow();
489d5531 728
b77b6434 729 // g) Store results for reference flow in AliFlowCommonHistResults and print them on the screen:
489d5531 730 this->FillCommonHistResultsIntFlow();
b3dacf6b 731 if(fPrintFinalResults[0]){this->PrintFinalResultsForIntegratedFlow("RF");}
732 if(fPrintFinalResults[3] && fCalculateCumulantsVsM){this->PrintFinalResultsForIntegratedFlow("RF, rebinned in M");}
489d5531 733
1268c371 734 // h) Calculate the final results for differential flow (without/with weights):
735 if(fCalculateDiffFlow)
736 {
737 this->FinalizeReducedCorrelations("RP","Pt");
62e36168 738 if(fCalculateDiffFlowVsEta){this->FinalizeReducedCorrelations("RP","Eta");}
1268c371 739 this->FinalizeReducedCorrelations("POI","Pt");
62e36168 740 if(fCalculateDiffFlowVsEta){this->FinalizeReducedCorrelations("POI","Eta");}
1268c371 741 this->CalculateDiffFlowCovariances("RP","Pt");
62e36168 742 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCovariances("RP","Eta");}
1268c371 743 this->CalculateDiffFlowCovariances("POI","Pt");
62e36168 744 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCovariances("POI","Eta");}
1268c371 745 this->CalculateDiffFlowCumulants("RP","Pt");
62e36168 746 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulants("RP","Eta");}
1268c371 747 this->CalculateDiffFlowCumulants("POI","Pt");
62e36168 748 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulants("POI","Eta");}
1268c371 749 this->CalculateDiffFlow("RP","Pt");
62e36168 750 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlow("RP","Eta");}
1268c371 751 this->CalculateDiffFlow("POI","Pt");
62e36168 752 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlow("POI","Eta");}
1268c371 753 } // if(fCalculateDiffFlow)
754
755 // i) Correct the results for differential flow (without/with weights) for effects of non-uniform acceptance (NUA):
756 if(fCalculateDiffFlow)
489d5531 757 {
758 this->FinalizeCorrectionTermsForNUADiffFlow("RP","Pt");
62e36168 759 if(fCalculateDiffFlowVsEta){this->FinalizeCorrectionTermsForNUADiffFlow("RP","Eta");}
489d5531 760 this->FinalizeCorrectionTermsForNUADiffFlow("POI","Pt");
62e36168 761 if(fCalculateDiffFlowVsEta){this->FinalizeCorrectionTermsForNUADiffFlow("POI","Eta");}
489d5531 762 this->CalculateDiffFlowCumulantsCorrectedForNUA("RP","Pt");
62e36168 763 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulantsCorrectedForNUA("RP","Eta");}
489d5531 764 this->CalculateDiffFlowCumulantsCorrectedForNUA("POI","Pt");
62e36168 765 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulantsCorrectedForNUA("POI","Eta");}
1268c371 766 if(fApplyCorrectionForNUA)
767 {
768 this->CalculateDiffFlowCorrectedForNUA("RP","Pt");
62e36168 769 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectedForNUA("RP","Eta");}
1268c371 770 this->CalculateDiffFlowCorrectedForNUA("POI","Pt");
62e36168 771 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectedForNUA("POI","Eta");}
1268c371 772 }
773 } // end of if(fCalculateDiffFlow && fApplyCorrectionForNUA)
774
775 // i) Calcualate final results for 2D differential flow:
776 if(fCalculate2DDiffFlow)
777 {
778 this->Calculate2DDiffFlowCumulants("RP");
779 this->Calculate2DDiffFlowCumulants("POI");
780 this->Calculate2DDiffFlow("RP");
781 this->Calculate2DDiffFlow("POI");
782 } // end of if(fCalculate2DDiffFlow)
783
784 // j) Calculate the final results for integrated flow (RP/POI) and store in AliFlowCommonHistResults:
785 if(fCalculateDiffFlow)
786 {
787 this->CalculateFinalResultsForRPandPOIIntegratedFlow("RP");
788 this->CalculateFinalResultsForRPandPOIIntegratedFlow("POI");
3b552efe 789 }
489d5531 790
1268c371 791 // k) Store results for differential flow in AliFlowCommonHistResults:
792 if(fCalculateDiffFlow)
793 {
794 this->FillCommonHistResultsDiffFlow("RP");
795 this->FillCommonHistResultsDiffFlow("POI");
796 }
797
798 // l) Print the final results for integrated flow (RP/POI) on the screen:
799 if(fPrintFinalResults[1] && fCalculateDiffFlow){this->PrintFinalResultsForIntegratedFlow("RP");}
800 if(fPrintFinalResults[2] && fCalculateDiffFlow){this->PrintFinalResultsForIntegratedFlow("POI");}
801
802 // m) Cross-checking: Results from Q-vectors vs results from nested loops:
803 // m1) Reference flow:
489d5531 804 if(fEvaluateIntFlowNestedLoops)
805 {
806 this->CrossCheckIntFlowCorrelations();
807 this->CrossCheckIntFlowCorrectionTermsForNUA();
e1d101a6 808 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights){this->CrossCheckIntFlowExtraCorrelations();}
809 if(fCalculateMixedHarmonics){this->CrossCheckIntFlowCorrelations();}
489d5531 810 } // end of if(fEvaluateIntFlowNestedLoops)
1268c371 811 // m2) Differential flow:
812 if(fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
489d5531 813 {
b3dacf6b 814 // Correlations:
489d5531 815 this->PrintNumberOfParticlesInSelectedBin();
816 this->CrossCheckDiffFlowCorrelations("RP","Pt");
62e36168 817 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrelations("RP","Eta");}
489d5531 818 this->CrossCheckDiffFlowCorrelations("POI","Pt");
62e36168 819 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrelations("POI","Eta");}
b3dacf6b 820 // Correction terms for non-uniform acceptance:
489d5531 821 this->CrossCheckDiffFlowCorrectionTermsForNUA("RP","Pt");
62e36168 822 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrectionTermsForNUA("RP","Eta");}
489d5531 823 this->CrossCheckDiffFlowCorrectionTermsForNUA("POI","Pt");
62e36168 824 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrectionTermsForNUA("POI","Eta");}
64e500e3 825 // Other differential correlators:
826 this->CrossCheckOtherDiffCorrelators("RP","Pt");
62e36168 827 if(fCalculateDiffFlowVsEta){this->CrossCheckOtherDiffCorrelators("RP","Eta");}
64e500e3 828 this->CrossCheckOtherDiffCorrelators("POI","Pt");
62e36168 829 if(fCalculateDiffFlowVsEta){this->CrossCheckOtherDiffCorrelators("POI","Eta");}
489d5531 830 } // end of if(fEvaluateDiffFlowNestedLoops)
e1d101a6 831
832 // i) Calculate cumulants for mixed harmonics:
833 if(fCalculateMixedHarmonics){this->CalculateCumulantsMixedHarmonics();}
834
489d5531 835} // end of AliFlowAnalysisWithQCumulants::Finish()
836
e1d101a6 837//=======================================================================================================================
489d5531 838
1268c371 839void AliFlowAnalysisWithQCumulants::EvaluateIntFlowNestedLoops(AliFlowEventSimple* anEvent)
840{
e1d101a6 841 // Evaluate all correlators for reference flow with nested loops.
1268c371 842
843 Int_t nPrim = anEvent->NumberOfTracks(); // nPrim = nRP + nPOI
844 if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
845 {
846 // Without using particle weights:
403e3389 847 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 848 {
849 // Correlations:
850 this->CalculateIntFlowCorrelations(); // from Q-vectors
e1d101a6 851 this->EvaluateIntFlowCorrelationsWithNestedLoops(anEvent); // from nested loops (TBI: do I have to pass here anEvent or not?)
1268c371 852 // Correction for non-uniform acceptance:
853 this->CalculateIntFlowCorrectionsForNUASinTerms(); // from Q-vectors (sin terms)
854 this->CalculateIntFlowCorrectionsForNUACosTerms(); // from Q-vectors (cos terms)
855 this->EvaluateIntFlowCorrectionsForNUAWithNestedLoops(anEvent); // from nested loops (both sin and cos terms)
e1d101a6 856 // Mixed harmonics:
857 if(fCalculateMixedHarmonics)
858 {
859 this->CalculateMixedHarmonics(); // from Q-vectors
860 this->EvaluateMixedHarmonicsWithNestedLoops(anEvent); // from nested loops (TBI: do I have to pass here anEvent or not?)
861 } // end of if(fCalculateMixedHarmonics)
1268c371 862 }
863 // Using particle weights:
403e3389 864 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
1268c371 865 {
866 // Correlations
867 this->CalculateIntFlowCorrelationsUsingParticleWeights(); // from Q-vectors
868 this->EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent); // from nested loops (to be improved: do I have to pass here anEvent or not?)
869 // Correction for non-uniform acceptance:
870 this->CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights(); // from Q-vectors (sin terms)
871 this->CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights(); // from Q-vectors (cos terms)
872 this->EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(anEvent); // from nested loops (both sin and cos terms)
873 }
874 } else if(nPrim>fMaxAllowedMultiplicity) // to if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity)
875 {
876 cout<<endl;
877 cout<<"Skipping the event because multiplicity is "<<nPrim<<". Too high to evaluate nested loops!"<<endl;
878 } else
879 {
880 cout<<endl;
881 cout<<"Skipping the event because multiplicity is "<<nPrim<<"."<<endl;
882 }
883
884} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowNestedLoops(AliFlowEventSimple* anEvent)
885
e1d101a6 886//=======================================================================================================================
1268c371 887
888void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowNestedLoops(AliFlowEventSimple* anEvent)
889{
890 // Evalauted all correlators for differential flow with nested loops.
891
892 if(!fCalculateDiffFlow){return;}
893
894 Int_t nPrim = anEvent->NumberOfTracks(); // nPrim = nRP + nPOI
895 if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
896 {
897 // Without using particle weights:
403e3389 898 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 899 {
64e500e3 900 // 1.) Reduced correlations:
1268c371 901 // Q-vectors:
902 this->CalculateDiffFlowCorrelations("RP","Pt");
903 this->CalculateDiffFlowCorrelations("RP","Eta");
904 this->CalculateDiffFlowCorrelations("POI","Pt");
905 this->CalculateDiffFlowCorrelations("POI","Eta");
906 // Nested loops:
907 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"RP","Pt");
908 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"RP","Eta");
909 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"POI","Pt");
910 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"POI","Eta");
64e500e3 911 // 2.) Reduced corrections for non-uniform acceptance:
1268c371 912 // Q-vectors:
913 this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Pt");
914 this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Eta");
915 this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Pt");
916 this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Eta");
917 this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Pt");
918 this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Eta");
919 this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Pt");
920 this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Eta");
921 // Nested loops:
922 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"RP","Pt");
923 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"RP","Eta");
924 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"POI","Pt");
925 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"POI","Eta");
64e500e3 926 // 3.) Other differential correlators:
927 // Q-vectors:
928 this->CalculateOtherDiffCorrelators("RP","Pt");
929 this->CalculateOtherDiffCorrelators("RP","Eta");
930 this->CalculateOtherDiffCorrelators("POI","Pt");
931 this->CalculateOtherDiffCorrelators("POI","Eta");
932 // Nested loops:
933 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"RP","Pt");
934 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"RP","Eta");
935 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"POI","Pt");
936 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"POI","Eta");
403e3389 937 } // end of if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 938 // Using particle weights:
403e3389 939 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
1268c371 940 {
941 this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Pt");
942 this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Eta");
943 this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Pt");
944 this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Eta");
945 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Pt");
946 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Eta");
947 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Pt");
948 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Eta");
949 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Pt");
950 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Eta");
951 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Pt");
952 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Eta");
953 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"RP","Pt");
954 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"RP","Eta");
955 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"POI","Pt");
956 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"POI","Eta");
957 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"RP","Pt");
958 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"RP","Eta");
959 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"POI","Pt");
960 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"POI","Eta");
403e3389 961 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
1268c371 962 } // end of if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
963
964} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowNestedLoops(AliFlowEventSimple* anEvent)
965
e1d101a6 966//=======================================================================================================================
1268c371 967
489d5531 968void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTerms()
969{
b92ea2b9 970 // Calculate correction terms for non-uniform acceptance of the detector for reference flow (cos terms).
489d5531 971
972 // multiplicity:
1268c371 973 Double_t dMult = (*fSpk)(0,0);
489d5531 974
975 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
976 Double_t dReQ1n = (*fReQ)(0,0);
977 Double_t dReQ2n = (*fReQ)(1,0);
978 //Double_t dReQ3n = (*fReQ)(2,0);
979 //Double_t dReQ4n = (*fReQ)(3,0);
980 Double_t dImQ1n = (*fImQ)(0,0);
981 Double_t dImQ2n = (*fImQ)(1,0);
982 //Double_t dImQ3n = (*fImQ)(2,0);
983 //Double_t dImQ4n = (*fImQ)(3,0);
984
985 // *************************************************************
986 // **** corrections for non-uniform acceptance (cos terms): ****
987 // *************************************************************
988 //
989 // Remark 1: corrections for non-uniform acceptance (cos terms) calculated with non-weighted Q-vectors
990 // are stored in 1D profile fQCorrectionsCos.
991 // Remark 2: binning of fIntFlowCorrectionTermsForNUAPro[1] is organized as follows:
992 // --------------------------------------------------------------------------------------------------------------------
993 // 1st bin: <<cos(n*(phi1))>> = cosP1n
994 // 2nd bin: <<cos(n*(phi1+phi2))>> = cosP1nP1n
995 // 3rd bin: <<cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1n
996 // 4th bin: <<cos(n*(2phi1-phi2))>> = cosP2nM1n
997 // --------------------------------------------------------------------------------------------------------------------
998
999 // 1-particle:
1000 Double_t cosP1n = 0.; // <<cos(n*(phi1))>>
1001
1002 if(dMult>0)
1003 {
1004 cosP1n = dReQ1n/dMult;
1005
1006 // average non-weighted 1-particle correction (cos terms) for non-uniform acceptance for single event:
1007 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(1,cosP1n);
0328db2d 1008 // event weights for NUA terms:
1009 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(1,dMult);
489d5531 1010
1011 // final average non-weighted 1-particle correction (cos terms) for non-uniform acceptance for all events:
1012 fIntFlowCorrectionTermsForNUAPro[1]->Fill(0.5,cosP1n,dMult);
b3dacf6b 1013 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[1][0]->Fill(dMult+0.5,cosP1n,dMult);}
489d5531 1014 }
1015
1016 // 2-particle:
3b552efe 1017 Double_t cosP1nP1n = 0.; // <<cos(n*(phi1+phi2))>>
489d5531 1018 Double_t cosP2nM1n = 0.; // <<cos(n*(2phi1-phi2))>>
1019
1020 if(dMult>1)
1021 {
1022 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1023 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1024
1025 // average non-weighted 2-particle correction (cos terms) for non-uniform acceptance for single event:
3b552efe 1026 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(2,cosP1nP1n);
489d5531 1027 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(4,cosP2nM1n);
0328db2d 1028 // event weights for NUA terms:
1029 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(2,dMult*(dMult-1));
1030 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(4,dMult*(dMult-1));
1031
489d5531 1032 // final average non-weighted 2-particle correction (cos terms) for non-uniform acceptance for all events:
3b552efe 1033 fIntFlowCorrectionTermsForNUAPro[1]->Fill(1.5,cosP1nP1n,dMult*(dMult-1));
489d5531 1034 fIntFlowCorrectionTermsForNUAPro[1]->Fill(3.5,cosP2nM1n,dMult*(dMult-1));
b3dacf6b 1035 if(fCalculateCumulantsVsM)
1036 {
1037 fIntFlowCorrectionTermsForNUAVsMPro[1][1]->Fill(dMult+0.5,cosP1nP1n,dMult*(dMult-1));
1038 fIntFlowCorrectionTermsForNUAVsMPro[1][3]->Fill(dMult+0.5,cosP2nM1n,dMult*(dMult-1));
1039 }
489d5531 1040 }
1041
1042 // 3-particle:
1043 Double_t cosP1nM1nM1n = 0.; // <<cos(n*(phi1-phi2-phi3))>>
1044
1045 if(dMult>2)
1046 {
1047 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1048 / (dMult*(dMult-1)*(dMult-2));
1049
1050 // average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for single event:
1051 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(3,cosP1nM1nM1n);
0328db2d 1052 // event weights for NUA terms:
1053 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(3,dMult*(dMult-1)*(dMult-2));
489d5531 1054
1055 // final average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for all events:
2001bc3a 1056 fIntFlowCorrectionTermsForNUAPro[1]->Fill(2.5,cosP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
b3dacf6b 1057 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[1][2]->Fill(dMult+0.5,cosP1nM1nM1n,dMult*(dMult-1)*(dMult-2));}
489d5531 1058 }
1059
1060} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTerms()
1061
1062
e1d101a6 1063//=======================================================================================================================
489d5531 1064
1065
1066void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTerms()
1067{
1068 // calculate corrections for non-uniform acceptance of the detector for no-name integrated flow (sin terms)
1069
1070 // multiplicity:
1268c371 1071 Double_t dMult = (*fSpk)(0,0);
489d5531 1072
1073 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
1074 Double_t dReQ1n = (*fReQ)(0,0);
1075 Double_t dReQ2n = (*fReQ)(1,0);
1076 //Double_t dReQ3n = (*fReQ)(2,0);
1077 //Double_t dReQ4n = (*fReQ)(3,0);
1078 Double_t dImQ1n = (*fImQ)(0,0);
1079 Double_t dImQ2n = (*fImQ)(1,0);
1080 //Double_t dImQ3n = (*fImQ)(2,0);
1081 //Double_t dImQ4n = (*fImQ)(3,0);
1082
1083 // *************************************************************
1084 // **** corrections for non-uniform acceptance (sin terms): ****
1085 // *************************************************************
1086 //
1087 // Remark 1: corrections for non-uniform acceptance (sin terms) calculated with non-weighted Q-vectors
1088 // are stored in 1D profile fQCorrectionsSin.
1089 // Remark 2: binning of fIntFlowCorrectionTermsForNUAPro[0] is organized as follows:
1090 // --------------------------------------------------------------------------------------------------------------------
1091 // 1st bin: <<sin(n*(phi1))>> = sinP1n
1092 // 2nd bin: <<sin(n*(phi1+phi2))>> = sinP1nP1n
1093 // 3rd bin: <<sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1n
1094 // 4th bin: <<sin(n*(2phi1-phi2))>> = sinP2nM1n
1095 // --------------------------------------------------------------------------------------------------------------------
1096
1097 // 1-particle:
1098 Double_t sinP1n = 0.; // <sin(n*(phi1))>
1099
1100 if(dMult>0)
1101 {
1102 sinP1n = dImQ1n/dMult;
1103
1104 // average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for single event:
0328db2d 1105 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(1,sinP1n);
1106 // event weights for NUA terms:
1107 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(1,dMult);
489d5531 1108
1109 // final average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
1110 fIntFlowCorrectionTermsForNUAPro[0]->Fill(0.5,sinP1n,dMult);
b3dacf6b 1111 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[0][0]->Fill(dMult+0.5,sinP1n,dMult);}
489d5531 1112 }
1113
1114 // 2-particle:
1115 Double_t sinP1nP1n = 0.; // <<sin(n*(phi1+phi2))>>
1116 Double_t sinP2nM1n = 0.; // <<sin(n*(2phi1-phi2))>>
1117 if(dMult>1)
1118 {
3b552efe 1119 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
489d5531 1120 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1121
1122 // average non-weighted 2-particle correction (sin terms) for non-uniform acceptance for single event:
1123 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(2,sinP1nP1n);
3b552efe 1124 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(4,sinP2nM1n);
0328db2d 1125 // event weights for NUA terms:
1126 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(2,dMult*(dMult-1));
1127 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(4,dMult*(dMult-1));
489d5531 1128
1129 // final average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
1130 fIntFlowCorrectionTermsForNUAPro[0]->Fill(1.5,sinP1nP1n,dMult*(dMult-1));
1131 fIntFlowCorrectionTermsForNUAPro[0]->Fill(3.5,sinP2nM1n,dMult*(dMult-1));
b3dacf6b 1132 if(fCalculateCumulantsVsM)
1133 {
1134 fIntFlowCorrectionTermsForNUAVsMPro[0][1]->Fill(dMult+0.5,sinP1nP1n,dMult*(dMult-1));
1135 fIntFlowCorrectionTermsForNUAVsMPro[0][3]->Fill(dMult+0.5,sinP2nM1n,dMult*(dMult-1));
1136 }
489d5531 1137 }
1138
1139 // 3-particle:
1140 Double_t sinP1nM1nM1n = 0.; // <<sin(n*(phi1-phi2-phi3))>>
1141
1142 if(dMult>2)
1143 {
1144 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1145 / (dMult*(dMult-1)*(dMult-2));
1146
1147 // average non-weighted 3-particle correction (sin terms) for non-uniform acceptance for single event:
1148 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(3,sinP1nM1nM1n);
0328db2d 1149 // event weights for NUA terms:
1150 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(3,dMult*(dMult-1)*(dMult-2));
489d5531 1151
1152 // final average non-weighted 3-particle correction (sin terms) for non-uniform acceptance for all events:
2001bc3a 1153 fIntFlowCorrectionTermsForNUAPro[0]->Fill(2.5,sinP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
b3dacf6b 1154 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[0][2]->Fill(dMult+0.5,sinP1nM1nM1n,dMult*(dMult-1)*(dMult-2));}
489d5531 1155 }
1156
1157} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTerms()
1158
e1d101a6 1159//=======================================================================================================================
489d5531 1160
489d5531 1161void AliFlowAnalysisWithQCumulants::GetOutputHistograms(TList *outputListHistos)
1162{
1268c371 1163 // a) Get pointers for common control and common result histograms;
1164 // b) Get pointers for histograms holding particle weights;
1165 // c) Get pointers for reference flow histograms;
1166 // d) Get pointers for differential flow histograms;
1167 // e) Get pointers for 2D differential flow histograms;
64e500e3 1168 // f) Get pointers for other differential correlators;
e1d101a6 1169 // g) Get pointers for nested loops' histograms;
1170 // h) Get pointers for mixed harmonics histograms.
489d5531 1171
1172 if(outputListHistos)
3b552efe 1173 {
1174 this->SetHistList(outputListHistos);
1175 if(!fHistList)
1176 {
1268c371 1177 printf("\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
3b552efe 1178 exit(0);
489d5531 1179 }
1180 this->GetPointersForCommonHistograms();
1181 this->GetPointersForParticleWeightsHistograms();
1182 this->GetPointersForIntFlowHistograms();
1183 this->GetPointersForDiffFlowHistograms();
1268c371 1184 this->GetPointersFor2DDiffFlowHistograms();
64e500e3 1185 this->GetPointersForOtherDiffCorrelators();
e1d101a6 1186 this->GetPointersForMixedHarmonicsHistograms();
489d5531 1187 this->GetPointersForNestedLoopsHistograms();
3b552efe 1188 } else
1189 {
1268c371 1190 printf("\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
3b552efe 1191 exit(0);
489d5531 1192 }
1193
1194} // end of void AliFlowAnalysisWithQCumulants::GetOutputHistograms(TList *outputListHistos)
ad87ae62 1195
e1d101a6 1196//=======================================================================================================================
489d5531 1197
489d5531 1198TProfile* AliFlowAnalysisWithQCumulants::MakePtProjection(TProfile2D *profilePtEta) const
ad87ae62 1199{
489d5531 1200 // project 2D profile onto pt axis to get 1D profile
1201
1202 Int_t nBinsPt = profilePtEta->GetNbinsX();
1203 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1204 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1205
1206 Int_t nBinsEta = profilePtEta->GetNbinsY();
1207
1208 TProfile *profilePt = new TProfile("","",nBinsPt,dPtMin,dPtMax);
1209
1210 for(Int_t p=1;p<=nBinsPt;p++)
1211 {
1212 Double_t contentPt = 0.;
1213 Double_t entryPt = 0.;
1214 Double_t spreadPt = 0.;
1215 Double_t sum1 = 0.;
1216 Double_t sum2 = 0.;
1217 Double_t sum3 = 0.;
1218 for(Int_t e=1;e<=nBinsEta;e++)
1219 {
1220 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1221 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1222 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1223
1224 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1225 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1226 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1227 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1228 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1229 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1230 }
1231 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1232 {
1233 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1234 }
1235 profilePt->SetBinContent(p,contentPt);
1236 profilePt->SetBinEntries(p,entryPt);
1237 {
1238 profilePt->SetBinError(p,spreadPt);
1239 }
1240
1241 }
1242
1243 return profilePt;
1244
1245} // end of TProfile* AliFlowAnalysisWithQCumulants::MakePtProjection(TProfile2D *profilePtEta)
1246
1247
e1d101a6 1248//=======================================================================================================================
489d5531 1249
1250
1251TProfile* AliFlowAnalysisWithQCumulants::MakeEtaProjection(TProfile2D *profilePtEta) const
1252{
1253 // project 2D profile onto eta axis to get 1D profile
1254
1255 Int_t nBinsEta = profilePtEta->GetNbinsY();
1256 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1257 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1258
1259 Int_t nBinsPt = profilePtEta->GetNbinsX();
1260
1261 TProfile *profileEta = new TProfile("","",nBinsEta,dEtaMin,dEtaMax);
1262
1263 for(Int_t e=1;e<=nBinsEta;e++)
1264 {
1265 Double_t contentEta = 0.;
1266 Double_t entryEta = 0.;
1267 for(Int_t p=1;p<=nBinsPt;p++)
1268 {
1269 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1270 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1271 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1272 }
1273 profileEta->SetBinContent(e,contentEta);
1274 profileEta->SetBinEntries(e,entryEta);
1275 }
1276
1277 return profileEta;
1278
1279} // end of TProfile* AliFlowAnalysisWithQCumulants::MakeEtaProjection(TProfile2D *profilePtEta)
1280
e1d101a6 1281//=======================================================================================================================
489d5531 1282
489d5531 1283void AliFlowAnalysisWithQCumulants::PrintFinalResultsForIntegratedFlow(TString type)
1284{
2001bc3a 1285 // Printing on the screen the final results for integrated flow (RF, POI and RP).
489d5531 1286
1287 Int_t n = fHarmonic;
1288
489d5531 1289 Double_t dVn[4] = {0.}; // array to hold Vn{2}, Vn{4}, Vn{6} and Vn{8}
1290 Double_t dVnErr[4] = {0.}; // array to hold errors of Vn{2}, Vn{4}, Vn{6} and Vn{8}
1291
2001bc3a 1292 if(type == "RF")
489d5531 1293 {
0dd3b008 1294 for(Int_t b=0;b<4;b++)
1295 {
b77b6434 1296 dVn[0] = (fCommonHistsResults2nd->GetHistIntFlow())->GetBinContent(1);
1297 dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlow())->GetBinError(1);
1298 dVn[1] = (fCommonHistsResults4th->GetHistIntFlow())->GetBinContent(1);
1299 dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlow())->GetBinError(1);
1300 dVn[2] = (fCommonHistsResults6th->GetHistIntFlow())->GetBinContent(1);
1301 dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlow())->GetBinError(1);
1302 dVn[3] = (fCommonHistsResults8th->GetHistIntFlow())->GetBinContent(1);
1303 dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlow())->GetBinError(1);
0dd3b008 1304 }
489d5531 1305 } else if(type == "RP")
1306 {
1307 dVn[0] = (fCommonHistsResults2nd->GetHistIntFlowRP())->GetBinContent(1);
1308 dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlowRP())->GetBinError(1);
1309 dVn[1] = (fCommonHistsResults4th->GetHistIntFlowRP())->GetBinContent(1);
1310 dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlowRP())->GetBinError(1);
1311 dVn[2] = (fCommonHistsResults6th->GetHistIntFlowRP())->GetBinContent(1);
1312 dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlowRP())->GetBinError(1);
1313 dVn[3] = (fCommonHistsResults8th->GetHistIntFlowRP())->GetBinContent(1);
1314 dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlowRP())->GetBinError(1);
1315 } else if(type == "POI")
1316 {
1317 dVn[0] = (fCommonHistsResults2nd->GetHistIntFlowPOI())->GetBinContent(1);
1318 dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlowPOI())->GetBinError(1);
1319 dVn[1] = (fCommonHistsResults4th->GetHistIntFlowPOI())->GetBinContent(1);
1320 dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlowPOI())->GetBinError(1);
1321 dVn[2] = (fCommonHistsResults6th->GetHistIntFlowPOI())->GetBinContent(1);
1322 dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlowPOI())->GetBinError(1);
1323 dVn[3] = (fCommonHistsResults8th->GetHistIntFlowPOI())->GetBinContent(1);
1324 dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlowPOI())->GetBinError(1);
b77b6434 1325 } else if(type == "RF, rebinned in M" && fCalculateCumulantsVsM)
b3dacf6b 1326 {
0dd3b008 1327 for(Int_t b=0;b<4;b++)
1328 {
1329 dVn[b] = fIntFlowRebinnedInM->GetBinContent(b+1);
1330 dVnErr[b] = fIntFlowRebinnedInM->GetBinError(b+1);
1331 }
b3dacf6b 1332 }
489d5531 1333
1334 TString title = " flow estimates from Q-cumulants";
1335 TString subtitle = " (";
b3dacf6b 1336 TString subtitle2 = " (rebinned in M)";
489d5531 1337
b3dacf6b 1338 if(type != "RF, rebinned in M")
489d5531 1339 {
403e3389 1340 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
b3dacf6b 1341 {
1342 subtitle.Append(type);
1343 subtitle.Append(", without weights)");
1344 } else
1345 {
1346 subtitle.Append(type);
1347 subtitle.Append(", with weights)");
1348 }
1349 } else
489d5531 1350 {
403e3389 1351 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
b3dacf6b 1352 {
1353 subtitle.Append("RF");
1354 subtitle.Append(", without weights)");
1355 } else
1356 {
1357 subtitle.Append("RF");
1358 subtitle.Append(", with weights)");
1359 }
1360 }
1361
489d5531 1362 cout<<endl;
1363 cout<<"*************************************"<<endl;
1364 cout<<"*************************************"<<endl;
1365 cout<<title.Data()<<endl;
1366 cout<<subtitle.Data()<<endl;
b3dacf6b 1367 if(type == "RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
489d5531 1368 cout<<endl;
1369
1370 for(Int_t i=0;i<4;i++)
1371 {
2001bc3a 1372 cout<<" v_"<<n<<"{"<<2*(i+1)<<"} = "<<dVn[i]<<" +/- "<<dVnErr[i]<<endl;
489d5531 1373 }
2001bc3a 1374
489d5531 1375 cout<<endl;
b92ea2b9 1376 if(type == "RF")
1377 {
b77b6434 1378 if(fApplyCorrectionForNUA)
1379 {
1380 cout<<" detector bias (corrected for): "<<endl;
1381 } else
1382 {
1383 cout<<" detector bias (not corrected for):"<<endl;
1384 }
b92ea2b9 1385 cout<<" to QC{2}: "<<fIntFlowDetectorBias->GetBinContent(1)<<" +/- "<<fIntFlowDetectorBias->GetBinError(1)<<endl;
1386 cout<<" to QC{4}: "<<fIntFlowDetectorBias->GetBinContent(2)<<" +/- "<<fIntFlowDetectorBias->GetBinError(2)<<endl;
1387 cout<<endl;
1388 }
b3dacf6b 1389 if(type == "RF" || type == "RF, rebinned in M")
489d5531 1390 {
2001bc3a 1391 cout<<" nEvts = "<<(Int_t)fCommonHists->GetHistMultRP()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultRP()->GetMean()<<endl;
489d5531 1392 }
1393 else if (type == "RP")
1394 {
2001bc3a 1395 cout<<" nEvts = "<<(Int_t)fCommonHists->GetHistMultRP()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultRP()->GetMean()<<endl;
489d5531 1396 }
1397 else if (type == "POI")
1398 {
2001bc3a 1399 cout<<" nEvts = "<<(Int_t)fCommonHists->GetHistMultPOI()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultPOI()->GetMean()<<endl;
1400 }
1401
489d5531 1402 cout<<"*************************************"<<endl;
1403 cout<<"*************************************"<<endl;
1404 cout<<endl;
1405
2001bc3a 1406}// end of AliFlowAnalysisWithQCumulants::PrintFinalResultsForIntegratedFlow(TString type="RF");
489d5531 1407
e1d101a6 1408//=======================================================================================================================
489d5531 1409
489d5531 1410void AliFlowAnalysisWithQCumulants::WriteHistograms(TString outputFileName)
1411{
1412 //store the final results in output .root file
1413 TFile *output = new TFile(outputFileName.Data(),"RECREATE");
1414 //output->WriteObject(fHistList, "cobjQC","SingleKey");
1415 fHistList->Write(fHistList->GetName(), TObject::kSingleKey);
1416 delete output;
1417}
1418
1419
e1d101a6 1420//=======================================================================================================================
489d5531 1421
1422
1423void AliFlowAnalysisWithQCumulants::WriteHistograms(TDirectoryFile *outputFileName)
1424{
1425 //store the final results in output .root file
1426 fHistList->SetName("cobjQC");
1427 fHistList->SetOwner(kTRUE);
1428 outputFileName->Add(fHistList);
1429 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1430}
1431
e1d101a6 1432//=======================================================================================================================
489d5531 1433
489d5531 1434void AliFlowAnalysisWithQCumulants::BookCommonHistograms()
1435{
1436 // Book common control histograms and common histograms for final results.
1268c371 1437 // a) Book common control histograms;
1438 // b) Book common result histograms.
1439
1440 // a) Book common control histograms:
1441 // Common control histograms (all events):
489d5531 1442 TString commonHistsName = "AliFlowCommonHistQC";
1443 commonHistsName += fAnalysisLabel->Data();
62d19320 1444 fCommonHists = new AliFlowCommonHist(commonHistsName.Data(),commonHistsName.Data(),fBookOnlyBasicCCH);
489d5531 1445 fHistList->Add(fCommonHists);
1268c371 1446 // Common control histograms (selected events):
dd442cd2 1447 if(fFillMultipleControlHistograms)
1448 {
1268c371 1449 // Common control histogram filled for events with 2 and more reference particles:
dd442cd2 1450 TString commonHists2ndOrderName = "AliFlowCommonHist2ndOrderQC";
1451 commonHists2ndOrderName += fAnalysisLabel->Data();
62d19320 1452 fCommonHists2nd = new AliFlowCommonHist(commonHists2ndOrderName.Data(),commonHists2ndOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1453 fHistList->Add(fCommonHists2nd);
1268c371 1454 // Common control histogram filled for events with 2 and more reference particles:
dd442cd2 1455 TString commonHists4thOrderName = "AliFlowCommonHist4thOrderQC";
1456 commonHists4thOrderName += fAnalysisLabel->Data();
62d19320 1457 fCommonHists4th = new AliFlowCommonHist(commonHists4thOrderName.Data(),commonHists4thOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1458 fHistList->Add(fCommonHists4th);
1268c371 1459 // Common control histogram filled for events with 6 and more reference particles:
dd442cd2 1460 TString commonHists6thOrderName = "AliFlowCommonHist6thOrderQC";
1461 commonHists6thOrderName += fAnalysisLabel->Data();
62d19320 1462 fCommonHists6th = new AliFlowCommonHist(commonHists6thOrderName.Data(),commonHists6thOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1463 fHistList->Add(fCommonHists6th);
1268c371 1464 // Common control histogram filled for events with 8 and more reference particles:
dd442cd2 1465 TString commonHists8thOrderName = "AliFlowCommonHist8thOrderQC";
1466 commonHists8thOrderName += fAnalysisLabel->Data();
62d19320 1467 fCommonHists8th = new AliFlowCommonHist(commonHists8thOrderName.Data(),commonHists8thOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1468 fHistList->Add(fCommonHists8th);
1469 } // end of if(fFillMultipleControlHistograms)
1470
1268c371 1471 // b) Book common result histograms:
1472 // Common result histograms for QC{2}:
489d5531 1473 TString commonHistResults2ndOrderName = "AliFlowCommonHistResults2ndOrderQC";
1474 commonHistResults2ndOrderName += fAnalysisLabel->Data();
62e36168 1475 fCommonHistsResults2nd = new AliFlowCommonHistResults(commonHistResults2ndOrderName.Data(),"",fHarmonic);
489d5531 1476 fHistList->Add(fCommonHistsResults2nd);
1268c371 1477 // Common result histograms for QC{4}:
489d5531 1478 TString commonHistResults4thOrderName = "AliFlowCommonHistResults4thOrderQC";
1479 commonHistResults4thOrderName += fAnalysisLabel->Data();
62e36168 1480 fCommonHistsResults4th = new AliFlowCommonHistResults(commonHistResults4thOrderName.Data(),"",fHarmonic);
489d5531 1481 fHistList->Add(fCommonHistsResults4th);
1268c371 1482 // Common result histograms for QC{6}:
489d5531 1483 TString commonHistResults6thOrderName = "AliFlowCommonHistResults6thOrderQC";
1484 commonHistResults6thOrderName += fAnalysisLabel->Data();
62e36168 1485 fCommonHistsResults6th = new AliFlowCommonHistResults(commonHistResults6thOrderName.Data(),"",fHarmonic);
489d5531 1486 fHistList->Add(fCommonHistsResults6th);
1268c371 1487 // Common result histograms for QC{8}:
489d5531 1488 TString commonHistResults8thOrderName = "AliFlowCommonHistResults8thOrderQC";
1489 commonHistResults8thOrderName += fAnalysisLabel->Data();
62e36168 1490 fCommonHistsResults8th = new AliFlowCommonHistResults(commonHistResults8thOrderName.Data(),"",fHarmonic);
489d5531 1491 fHistList->Add(fCommonHistsResults8th);
1492
1493} // end of void AliFlowAnalysisWithQCumulants::BookCommonHistograms()
1494
e1d101a6 1495//=======================================================================================================================
489d5531 1496
489d5531 1497void AliFlowAnalysisWithQCumulants::BookAndFillWeightsHistograms()
1498{
1268c371 1499 // Book and fill histograms which hold phi, pt and eta weights.
489d5531 1500
1501 if(!fWeightsList)
1502 {
1268c371 1503 printf("\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
489d5531 1504 exit(0);
1505 }
1506
1507 TString fUseParticleWeightsName = "fUseParticleWeightsQC";
1508 fUseParticleWeightsName += fAnalysisLabel->Data();
403e3389 1509 fUseParticleWeights = new TProfile(fUseParticleWeightsName.Data(),"0 = particle weight not used, 1 = particle weight used ",4,0,4);
489d5531 1510 fUseParticleWeights->SetLabelSize(0.06);
e1d101a6 1511 fUseParticleWeights->SetStats(kFALSE);
489d5531 1512 (fUseParticleWeights->GetXaxis())->SetBinLabel(1,"w_{#phi}");
1513 (fUseParticleWeights->GetXaxis())->SetBinLabel(2,"w_{p_{T}}");
1514 (fUseParticleWeights->GetXaxis())->SetBinLabel(3,"w_{#eta}");
403e3389 1515 (fUseParticleWeights->GetXaxis())->SetBinLabel(4,"w_{track}");
489d5531 1516 fUseParticleWeights->Fill(0.5,(Int_t)fUsePhiWeights);
1517 fUseParticleWeights->Fill(1.5,(Int_t)fUsePtWeights);
1518 fUseParticleWeights->Fill(2.5,(Int_t)fUseEtaWeights);
403e3389 1519 fUseParticleWeights->Fill(3.5,(Int_t)fUseTrackWeights);
489d5531 1520 fWeightsList->Add(fUseParticleWeights);
1521
1522 if(fUsePhiWeights)
1523 {
1524 if(fWeightsList->FindObject("phi_weights"))
1525 {
1526 fPhiWeights = dynamic_cast<TH1F*>(fWeightsList->FindObject("phi_weights"));
1268c371 1527 if(!fPhiWeights)
1528 {
1529 printf("\n WARNING (QC): fPhiWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1530 exit(0);
1531 }
489d5531 1532 if(TMath::Abs(fPhiWeights->GetBinWidth(1)-fPhiBinWidth)>pow(10.,-6.))
1533 {
1534 cout<<endl;
1535 cout<<"WARNING (QC): Inconsistent binning in histograms for phi-weights throughout the code."<<endl;
1536 cout<<endl;
6fbbbbf1 1537 //exit(0);
489d5531 1538 }
1539 } else
1540 {
1541 cout<<"WARNING: fWeightsList->FindObject(\"phi_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1542 exit(0);
1543 }
1544 } // end of if(fUsePhiWeights)
1545
1546 if(fUsePtWeights)
1547 {
1548 if(fWeightsList->FindObject("pt_weights"))
1549 {
1550 fPtWeights = dynamic_cast<TH1D*>(fWeightsList->FindObject("pt_weights"));
1268c371 1551 if(!fPtWeights)
1552 {
1553 printf("\n WARNING (QC): fPtWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1554 exit(0);
1555 }
489d5531 1556 if(TMath::Abs(fPtWeights->GetBinWidth(1)-fPtBinWidth)>pow(10.,-6.))
1557 {
1558 cout<<endl;
1559 cout<<"WARNING (QC): Inconsistent binning in histograms for pt-weights throughout the code."<<endl;
1560 cout<<endl;
6fbbbbf1 1561 //exit(0);
489d5531 1562 }
1563 } else
1564 {
1565 cout<<"WARNING: fWeightsList->FindObject(\"pt_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1566 exit(0);
1567 }
1568 } // end of if(fUsePtWeights)
1569
1570 if(fUseEtaWeights)
1571 {
1572 if(fWeightsList->FindObject("eta_weights"))
1573 {
1574 fEtaWeights = dynamic_cast<TH1D*>(fWeightsList->FindObject("eta_weights"));
1268c371 1575 if(!fEtaWeights)
1576 {
1577 printf("\n WARNING (QC): fEtaWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1578 exit(0);
1579 }
489d5531 1580 if(TMath::Abs(fEtaWeights->GetBinWidth(1)-fEtaBinWidth)>pow(10.,-6.))
1581 {
1582 cout<<endl;
1583 cout<<"WARNING (QC): Inconsistent binning in histograms for eta-weights throughout the code."<<endl;
1584 cout<<endl;
6fbbbbf1 1585 //exit(0);
489d5531 1586 }
1587 } else
1588 {
1589 cout<<"WARNING: fUseEtaWeights && fWeightsList->FindObject(\"eta_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1590 exit(0);
1591 }
1592 } // end of if(fUseEtaWeights)
1593
1594} // end of AliFlowAnalysisWithQCumulants::BookAndFillWeightsHistograms()
1595
e1d101a6 1596//=======================================================================================================================
489d5531 1597
489d5531 1598void AliFlowAnalysisWithQCumulants::BookEverythingForIntegratedFlow()
1599{
1600 // Book all objects for integrated flow:
e5834fcb 1601 // a) Book profile to hold all flags for integrated flow;
1602 // b) Book event-by-event quantities;
1603 // c) Book profiles; // to be improved (comment)
489d5531 1604 // d) Book histograms holding the final results.
1605
1606 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
1607 TString powerFlag[2] = {"linear","quadratic"}; // to be improved (should I promote this to data members?)
1608
1609 // a) Book profile to hold all flags for integrated flow:
1610 TString intFlowFlagsName = "fIntFlowFlags";
1611 intFlowFlagsName += fAnalysisLabel->Data();
3435cacb 1612 fIntFlowFlags = new TProfile(intFlowFlagsName.Data(),"Flags for Integrated Flow",15,0,15);
489d5531 1613 fIntFlowFlags->SetTickLength(-0.01,"Y");
1614 fIntFlowFlags->SetMarkerStyle(25);
403e3389 1615 fIntFlowFlags->SetLabelSize(0.04);
489d5531 1616 fIntFlowFlags->SetLabelOffset(0.02,"Y");
e1d101a6 1617 fIntFlowFlags->SetStats(kFALSE);
489d5531 1618 fIntFlowFlags->GetXaxis()->SetBinLabel(1,"Particle Weights");
1619 fIntFlowFlags->GetXaxis()->SetBinLabel(2,"Event Weights");
1620 fIntFlowFlags->GetXaxis()->SetBinLabel(3,"Corrected for NUA?");
b3dacf6b 1621 fIntFlowFlags->GetXaxis()->SetBinLabel(4,"Print RF results");
489d5531 1622 fIntFlowFlags->GetXaxis()->SetBinLabel(5,"Print RP results");
3b552efe 1623 fIntFlowFlags->GetXaxis()->SetBinLabel(6,"Print POI results");
b3dacf6b 1624 fIntFlowFlags->GetXaxis()->SetBinLabel(7,"Print RF (rebinned in M) results");
1625 fIntFlowFlags->GetXaxis()->SetBinLabel(8,"Corrected for NUA vs M?");
1626 fIntFlowFlags->GetXaxis()->SetBinLabel(9,"Propagate errors to v_{n} from correlations?");
1627 fIntFlowFlags->GetXaxis()->SetBinLabel(10,"Calculate cumulants vs M");
0dd3b008 1628 fIntFlowFlags->GetXaxis()->SetBinLabel(11,"fMinimumBiasReferenceFlow");
8e1cefdd 1629 fIntFlowFlags->GetXaxis()->SetBinLabel(12,"fForgetAboutCovariances");
e5834fcb 1630 fIntFlowFlags->GetXaxis()->SetBinLabel(13,"fStorePhiDistributionForOneEvent");
dd442cd2 1631 fIntFlowFlags->GetXaxis()->SetBinLabel(14,"fFillMultipleControlHistograms");
3435cacb 1632 fIntFlowFlags->GetXaxis()->SetBinLabel(15,"Calculate all correlations vs M");
489d5531 1633 fIntFlowList->Add(fIntFlowFlags);
1634
1635 // b) Book event-by-event quantities:
1636 // Re[Q_{m*n,k}], Im[Q_{m*n,k}] and S_{p,k}^M:
e1d101a6 1637 fReQ = new TMatrixD(12,9);
1638 fImQ = new TMatrixD(12,9);
1268c371 1639 fSpk = new TMatrixD(8,9);
489d5531 1640 // average correlations <2>, <4>, <6> and <8> for single event (bining is the same as in fIntFlowCorrelationsPro and fIntFlowCorrelationsHist):
1641 TString intFlowCorrelationsEBEName = "fIntFlowCorrelationsEBE";
1642 intFlowCorrelationsEBEName += fAnalysisLabel->Data();
1643 fIntFlowCorrelationsEBE = new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
1644 // weights for average correlations <2>, <4>, <6> and <8> for single event:
1645 TString intFlowEventWeightsForCorrelationsEBEName = "fIntFlowEventWeightsForCorrelationsEBE";
1646 intFlowEventWeightsForCorrelationsEBEName += fAnalysisLabel->Data();
1647 fIntFlowEventWeightsForCorrelationsEBE = new TH1D(intFlowEventWeightsForCorrelationsEBEName.Data(),intFlowEventWeightsForCorrelationsEBEName.Data(),4,0,4);
1648 // average all correlations for single event (bining is the same as in fIntFlowCorrelationsAllPro and fIntFlowCorrelationsAllHist):
1649 TString intFlowCorrelationsAllEBEName = "fIntFlowCorrelationsAllEBE";
1650 intFlowCorrelationsAllEBEName += fAnalysisLabel->Data();
403e3389 1651 fIntFlowCorrelationsAllEBE = new TH1D(intFlowCorrelationsAllEBEName.Data(),intFlowCorrelationsAllEBEName.Data(),64,0,64);
489d5531 1652 // average correction terms for non-uniform acceptance for single event
1653 // (binning is the same as in fIntFlowCorrectionTermsForNUAPro[2] and fIntFlowCorrectionTermsForNUAHist[2]):
1654 TString fIntFlowCorrectionTermsForNUAEBEName = "fIntFlowCorrectionTermsForNUAEBE";
1655 fIntFlowCorrectionTermsForNUAEBEName += fAnalysisLabel->Data();
1656 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
1657 {
b92ea2b9 1658 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 1659 }
0328db2d 1660 // event weights for terms for non-uniform acceptance:
1661 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName = "fIntFlowEventWeightForCorrectionTermsForNUAEBE";
1662 fIntFlowEventWeightForCorrectionTermsForNUAEBEName += fAnalysisLabel->Data();
1663 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
1664 {
b92ea2b9 1665 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 1666 }
489d5531 1667 // c) Book profiles: // to be improved (comment)
1668 // profile to hold average multiplicities and number of events for events with nRP>=0, nRP>=1, ... , and nRP>=8:
1669 TString avMultiplicityName = "fAvMultiplicity";
1670 avMultiplicityName += fAnalysisLabel->Data();
403e3389 1671 fAvMultiplicity = new TProfile(avMultiplicityName.Data(),"Average multiplicities of reference particles (RPs)",9,0,9);
489d5531 1672 fAvMultiplicity->SetTickLength(-0.01,"Y");
1673 fAvMultiplicity->SetMarkerStyle(25);
1674 fAvMultiplicity->SetLabelSize(0.05);
1675 fAvMultiplicity->SetLabelOffset(0.02,"Y");
403e3389 1676 fAvMultiplicity->SetYTitle("Average multiplicity");
489d5531 1677 (fAvMultiplicity->GetXaxis())->SetBinLabel(1,"all evts");
1678 (fAvMultiplicity->GetXaxis())->SetBinLabel(2,"n_{RP} #geq 1");
1679 (fAvMultiplicity->GetXaxis())->SetBinLabel(3,"n_{RP} #geq 2");
1680 (fAvMultiplicity->GetXaxis())->SetBinLabel(4,"n_{RP} #geq 3");
1681 (fAvMultiplicity->GetXaxis())->SetBinLabel(5,"n_{RP} #geq 4");
1682 (fAvMultiplicity->GetXaxis())->SetBinLabel(6,"n_{RP} #geq 5");
1683 (fAvMultiplicity->GetXaxis())->SetBinLabel(7,"n_{RP} #geq 6");
1684 (fAvMultiplicity->GetXaxis())->SetBinLabel(8,"n_{RP} #geq 7");
1685 (fAvMultiplicity->GetXaxis())->SetBinLabel(9,"n_{RP} #geq 8");
1686 fIntFlowProfiles->Add(fAvMultiplicity);
b40a910e 1687 // Average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with wrong errors!):
1688 TString correlationFlag[4] = {"#LT#LT2#GT#GT","#LT#LT4#GT#GT","#LT#LT6#GT#GT","#LT#LT8#GT#GT"};
489d5531 1689 TString intFlowCorrelationsProName = "fIntFlowCorrelationsPro";
1690 intFlowCorrelationsProName += fAnalysisLabel->Data();
1691 fIntFlowCorrelationsPro = new TProfile(intFlowCorrelationsProName.Data(),"Average correlations for all events",4,0,4,"s");
b40a910e 1692 fIntFlowCorrelationsPro->Sumw2();
489d5531 1693 fIntFlowCorrelationsPro->SetTickLength(-0.01,"Y");
1694 fIntFlowCorrelationsPro->SetMarkerStyle(25);
1695 fIntFlowCorrelationsPro->SetLabelSize(0.06);
1696 fIntFlowCorrelationsPro->SetLabelOffset(0.01,"Y");
68a3b4b1 1697 for(Int_t b=0;b<4;b++)
b3dacf6b 1698 {
68a3b4b1 1699 (fIntFlowCorrelationsPro->GetXaxis())->SetBinLabel(b+1,correlationFlag[b].Data());
b3dacf6b 1700 }
489d5531 1701 fIntFlowProfiles->Add(fIntFlowCorrelationsPro);
b40a910e 1702 // Average correlations squared <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> for all events:
1703 TString squaredCorrelationFlag[4] = {"#LT#LT2#GT^{2}#GT","#LT#LT4#GT^{2}#GT","#LT#LT6#GT^{2}#GT","#LT#LT8#GT^{2}#GT"};
1704 TString intFlowSquaredCorrelationsProName = "fIntFlowSquaredCorrelationsPro";
1705 intFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
1706 fIntFlowSquaredCorrelationsPro = new TProfile(intFlowSquaredCorrelationsProName.Data(),"Average squared correlations for all events",4,0,4,"s");
1707 fIntFlowSquaredCorrelationsPro->Sumw2();
1708 fIntFlowSquaredCorrelationsPro->SetTickLength(-0.01,"Y");
1709 fIntFlowSquaredCorrelationsPro->SetMarkerStyle(25);
1710 fIntFlowSquaredCorrelationsPro->SetLabelSize(0.06);
1711 fIntFlowSquaredCorrelationsPro->SetLabelOffset(0.01,"Y");
1712 for(Int_t b=0;b<4;b++)
1713 {
1714 (fIntFlowSquaredCorrelationsPro->GetXaxis())->SetBinLabel(b+1,squaredCorrelationFlag[b].Data());
1715 }
1716 fIntFlowProfiles->Add(fIntFlowSquaredCorrelationsPro);
b3dacf6b 1717 if(fCalculateCumulantsVsM)
1718 {
1719 for(Int_t ci=0;ci<4;ci++) // correlation index
1720 {
b40a910e 1721 // average correlations <<2>>, <<4>>, <<6>> and <<8>> versus multiplicity for all events (with wrong errors):
b3dacf6b 1722 TString intFlowCorrelationsVsMProName = "fIntFlowCorrelationsVsMPro";
1723 intFlowCorrelationsVsMProName += fAnalysisLabel->Data();
1724 fIntFlowCorrelationsVsMPro[ci] = new TProfile(Form("%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
1725 Form("%s vs multiplicity",correlationFlag[ci].Data()),
b40a910e 1726 fnBinsMult,fMinMult,fMaxMult,"s");
1727 fIntFlowCorrelationsVsMPro[ci]->Sumw2();
b3dacf6b 1728 fIntFlowCorrelationsVsMPro[ci]->GetYaxis()->SetTitle(correlationFlag[ci].Data());
1729 fIntFlowCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("M");
1730 fIntFlowProfiles->Add(fIntFlowCorrelationsVsMPro[ci]);
b40a910e 1731 // average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> versus multiplicity for all events:
1732 TString intFlowSquaredCorrelationsVsMProName = "fIntFlowSquaredCorrelationsVsMPro";
1733 intFlowSquaredCorrelationsVsMProName += fAnalysisLabel->Data();
1734 fIntFlowSquaredCorrelationsVsMPro[ci] = new TProfile(Form("%s, %s",intFlowSquaredCorrelationsVsMProName.Data(),squaredCorrelationFlag[ci].Data()),
1735 Form("%s vs multiplicity",squaredCorrelationFlag[ci].Data()),
1736 fnBinsMult,fMinMult,fMaxMult,"s");
1737 fIntFlowSquaredCorrelationsVsMPro[ci]->Sumw2();
1738 fIntFlowSquaredCorrelationsVsMPro[ci]->GetYaxis()->SetTitle(squaredCorrelationFlag[ci].Data());
1739 fIntFlowSquaredCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("M");
1740 fIntFlowProfiles->Add(fIntFlowSquaredCorrelationsVsMPro[ci]);
b3dacf6b 1741 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
1742 } // end of if(fCalculateCumulantsVsM)
489d5531 1743 // averaged all correlations for all events (with wrong errors!):
1744 TString intFlowCorrelationsAllProName = "fIntFlowCorrelationsAllPro";
1745 intFlowCorrelationsAllProName += fAnalysisLabel->Data();
403e3389 1746 fIntFlowCorrelationsAllPro = new TProfile(intFlowCorrelationsAllProName.Data(),"Average all correlations for all events",64,0,64);
b84464d3 1747 fIntFlowCorrelationsAllPro->Sumw2();
489d5531 1748 fIntFlowCorrelationsAllPro->SetTickLength(-0.01,"Y");
1749 fIntFlowCorrelationsAllPro->SetMarkerStyle(25);
1750 fIntFlowCorrelationsAllPro->SetLabelSize(0.03);
1751 fIntFlowCorrelationsAllPro->SetLabelOffset(0.01,"Y");
1752 // 2-p correlations:
403e3389 1753 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(1,"#LT#LT2#GT#GT_{n|n}");
1754 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(2,"#LT#LT2#GT#GT_{2n|2n}");
1755 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(3,"#LT#LT2#GT#GT_{3n|3n}");
1756 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(4,"#LT#LT2#GT#GT_{4n|4n}");
489d5531 1757 // 3-p correlations:
403e3389 1758 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(6,"#LT#LT3#GT#GT_{2n|n,n}");
1759 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(7,"#LT#LT3#GT#GT_{3n|2n,n}");
1760 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(8,"#LT#LT3#GT#GT_{4n|2n,2n}");
1761 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(9,"#LT#LT3#GT#GT_{4n|3n,n}");
489d5531 1762 // 4-p correlations:
403e3389 1763 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(11,"#LT#LT4#GT#GT_{n,n|n,n}");
1764 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(12,"#LT#LT4#GT#GT_{2n,n|2n,n}");
1765 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(13,"#LT#LT4#GT#GT_{2n,2n|2n,2n}");
1766 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(14,"#LT#LT4#GT#GT_{3n|n,n,n}");
1767 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(15,"#LT#LT4#GT#GT_{3n,n|3n,n}");
1768 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(16,"#LT#LT4#GT#GT_{3n,n|2n,2n}");
1769 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(17,"#LT#LT4#GT#GT_{4n|2n,n,n}");
489d5531 1770 // 5-p correlations:
403e3389 1771 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(19,"#LT#LT5#GT#GT_{2n,n|n,n,n}");
1772 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(20,"#LT#LT5#GT#GT_{2n,2n|2n,n,n}");
1773 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(21,"#LT#LT5#GT#GT_{3n,n|2n,n,n}");
1774 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(22,"#LT#LT5#GT#GT_{4n|n,n,n,n}");
489d5531 1775 // 6-p correlations:
403e3389 1776 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(24,"#LT#LT6#GT#GT_{n,n,n|n,n,n}");
1777 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(25,"#LT#LT6#GT#GT_{2n,n,n|2n,n,n}");
1778 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(26,"#LT#LT6#GT#GT_{2n,2n|n,n,n,n}");
1779 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(27,"#LT#LT6#GT#GT_{3n,n|n,n,n,n}");
489d5531 1780 // 7-p correlations:
403e3389 1781 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(29,"#LT#LT7#GT#GT_{2n,n,n|n,n,n,n}");
489d5531 1782 // 8-p correlations:
403e3389 1783 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(31,"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}");
b84464d3 1784 // EXTRA correlations for v3{5} study:
403e3389 1785 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(33,"#LT#LT4#GT#GT_{4n,2n|3n,3n}");
1786 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(34,"#LT#LT5#GT#GT_{3n,3n|2n,2n,2n}");
b84464d3 1787 // EXTRA correlations for Teaney-Yan study:
403e3389 1788 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(35,"#LT#LT2#GT#GT_{5n|5n}");
1789 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(36,"#LT#LT2#GT#GT_{6n|6n}");
1790 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(37,"#LT#LT3#GT#GT_{5n|3n,2n}");
1791 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(38,"#LT#LT3#GT#GT_{5n|4n,1n}");
1792 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(39,"#LT#LT3#GT#GT_{6n|3n,3n}");
1793 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(40,"#LT#LT3#GT#GT_{6n|4n,2n}");
1794 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(41,"#LT#LT3#GT#GT_{6n|5n,1n}");
1795 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(42,"#LT#LT4#GT#GT_{6n|3n,2n,1n}");
1796 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(43,"#LT#LT4#GT#GT_{3n,2n|3n,2n}");
1797 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(44,"#LT#LT4#GT#GT_{4n,1n|3n,2n}");
1798 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(45,"#LT#LT4#GT#GT_{3n,3n|3n,3n}");
1799 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(46,"#LT#LT4#GT#GT_{4n,2n|3n,3n}");
1800 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(47,"#LT#LT4#GT#GT_{5n,1n|3n,3n}");
1801 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(48,"#LT#LT4#GT#GT_{4n,2n|4n,2n}");
1802 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(49,"#LT#LT4#GT#GT_{5n,1n|4n,2n}");
1803 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(50,"#LT#LT4#GT#GT_{5n|3n,1n,1n}");
1804 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(51,"#LT#LT4#GT#GT_{5n|2n,2n,1n}");
1805 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(52,"#LT#LT4#GT#GT_{5n,1n|5n,1n}");
1806 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(53,"#LT#LT5#GT#GT_{3n,3n|3n,2n,1n}");
1807 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(54,"#LT#LT5#GT#GT_{4n,2n|3n,2n,1n}");
1808 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(55,"#LT#LT5#GT#GT_{3n,2n|3n,1n,1n}");
1809 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(56,"#LT#LT5#GT#GT_{3n,2n|2n,2n,1n}");
1810 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(57,"#LT#LT5#GT#GT_{5n,1n|3n,2n,1n}");
1811 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(58,"#LT#LT6#GT#GT_{3n,2n,1n|3n,2n,1n}");
1812 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(59,"#LT#LT4#GT#GT_{6n|4n,1n,1n}");
1813 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(60,"#LT#LT4#GT#GT_{6n|2n,2n,2n}");
1814 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(61,"#LT#LT5#GT#GT_{6n|2n,2n,1n,1n}");
1815 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(62,"#LT#LT5#GT#GT_{4n,1n,1n|3n,3n}");
1816 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(63,"#LT#LT6#GT#GT_{3n,3n|2n,2n,1n,1n}");
489d5531 1817 fIntFlowProfiles->Add(fIntFlowCorrelationsAllPro);
3435cacb 1818 // average all correlations versus multiplicity (errors via Sumw2 - to be improved):
1819 if(fCalculateAllCorrelationsVsM)
1820 {
1821 // 2-p correlations vs M:
1822 fIntFlowCorrelationsAllVsMPro[0] = new TProfile("two1n1n","#LT#LT2#GT#GT_{n|n}",fnBinsMult,fMinMult,fMaxMult);
1823 fIntFlowCorrelationsAllVsMPro[0]->Sumw2();
1824 fIntFlowCorrelationsAllVsMPro[0]->GetXaxis()->SetTitle("M");
1825 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[0]);
1826 fIntFlowCorrelationsAllVsMPro[1] = new TProfile("two2n2n","#LT#LT2#GT#GT_{2n|2n}",fnBinsMult,fMinMult,fMaxMult);
1827 fIntFlowCorrelationsAllVsMPro[1]->Sumw2();
1828 fIntFlowCorrelationsAllVsMPro[1]->GetXaxis()->SetTitle("M");
1829 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[1]);
1830 fIntFlowCorrelationsAllVsMPro[2] = new TProfile("two3n3n","#LT#LT2#GT#GT_{3n|3n}",fnBinsMult,fMinMult,fMaxMult);
1831 fIntFlowCorrelationsAllVsMPro[2]->Sumw2();
1832 fIntFlowCorrelationsAllVsMPro[2]->GetXaxis()->SetTitle("M");
1833 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[2]);
1834 fIntFlowCorrelationsAllVsMPro[3] = new TProfile("two4n4n","#LT#LT2#GT#GT_{4n|4n}",fnBinsMult,fMinMult,fMaxMult);
1835 fIntFlowCorrelationsAllVsMPro[3]->Sumw2();
1836 fIntFlowCorrelationsAllVsMPro[3]->GetXaxis()->SetTitle("M");
1837 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[3]);
1838 // 3-p correlations vs M:
1839 fIntFlowCorrelationsAllVsMPro[5] = new TProfile("three2n1n1n","#LT#LT3#GT#GT_{2n|n,n}",fnBinsMult,fMinMult,fMaxMult);
1840 fIntFlowCorrelationsAllVsMPro[5]->Sumw2();
1841 fIntFlowCorrelationsAllVsMPro[5]->GetXaxis()->SetTitle("M");
1842 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[5]);
1843 fIntFlowCorrelationsAllVsMPro[6] = new TProfile("three3n2n1n","#LT#LT3#GT#GT_{3n|2n,n}",fnBinsMult,fMinMult,fMaxMult);
1844 fIntFlowCorrelationsAllVsMPro[6]->Sumw2();
1845 fIntFlowCorrelationsAllVsMPro[6]->GetXaxis()->SetTitle("M");
1846 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[6]);
1847 fIntFlowCorrelationsAllVsMPro[7] = new TProfile("three4n2n2n","#LT#LT3#GT#GT_{4n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
1848 fIntFlowCorrelationsAllVsMPro[7]->Sumw2();
1849 fIntFlowCorrelationsAllVsMPro[7]->GetXaxis()->SetTitle("M");
1850 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[7]);
1851 fIntFlowCorrelationsAllVsMPro[8] = new TProfile("three4n3n1n","#LT#LT3#GT#GT_{4n|3n,n}",fnBinsMult,fMinMult,fMaxMult);
1852 fIntFlowCorrelationsAllVsMPro[8]->Sumw2();
1853 fIntFlowCorrelationsAllVsMPro[8]->GetXaxis()->SetTitle("M");
1854 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[8]);
1855 // 4-p correlations vs M:
1856 fIntFlowCorrelationsAllVsMPro[10] = new TProfile("four1n1n1n1n","#LT#LT4#GT#GT_{n,n|n,n}",fnBinsMult,fMinMult,fMaxMult);
1857 fIntFlowCorrelationsAllVsMPro[10]->Sumw2();
1858 fIntFlowCorrelationsAllVsMPro[10]->GetXaxis()->SetTitle("M");
1859 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[10]);
1860 fIntFlowCorrelationsAllVsMPro[11] = new TProfile("four2n1n2n1n","#LT#LT4#GT#GT_{2n,n|2n,n}",fnBinsMult,fMinMult,fMaxMult);
1861 fIntFlowCorrelationsAllVsMPro[11]->Sumw2();
1862 fIntFlowCorrelationsAllVsMPro[11]->GetXaxis()->SetTitle("M");
1863 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[11]);
1864 fIntFlowCorrelationsAllVsMPro[12] = new TProfile("four2n2n2n2n","#LT#LT4#GT#GT_{2n,2n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
1865 fIntFlowCorrelationsAllVsMPro[12]->Sumw2();
1866 fIntFlowCorrelationsAllVsMPro[12]->GetXaxis()->SetTitle("M");
1867 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[12]);
1868 fIntFlowCorrelationsAllVsMPro[13] = new TProfile("four3n1n1n1n","#LT#LT4#GT#GT_{3n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1869 fIntFlowCorrelationsAllVsMPro[13]->Sumw2();
1870 fIntFlowCorrelationsAllVsMPro[13]->GetXaxis()->SetTitle("M");
1871 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[13]);
1872 fIntFlowCorrelationsAllVsMPro[14] = new TProfile("four3n1n3n1n","#LT#LT4#GT#GT_{3n,n|3n,n}",fnBinsMult,fMinMult,fMaxMult);
1873 fIntFlowCorrelationsAllVsMPro[14]->Sumw2();
1874 fIntFlowCorrelationsAllVsMPro[14]->GetXaxis()->SetTitle("M");
1875 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[14]);
1876 fIntFlowCorrelationsAllVsMPro[15] = new TProfile("four3n1n2n2n","#LT#LT4#GT#GT_{3n,n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
1877 fIntFlowCorrelationsAllVsMPro[15]->Sumw2();
1878 fIntFlowCorrelationsAllVsMPro[15]->GetXaxis()->SetTitle("M");
1879 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[15]);
1880 fIntFlowCorrelationsAllVsMPro[16] = new TProfile("four4n2n1n1n","#LT#LT4#GT#GT_{4n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1881 fIntFlowCorrelationsAllVsMPro[16]->Sumw2();
1882 fIntFlowCorrelationsAllVsMPro[16]->GetXaxis()->SetTitle("M");
1883 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[16]);
1884 // 5-p correlations vs M:
403e3389 1885 fIntFlowCorrelationsAllVsMPro[18] = new TProfile("five2n1n1n1n1n","#LT#LT5#GT#GT_{2n,n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1886 fIntFlowCorrelationsAllVsMPro[18]->Sumw2();
1887 fIntFlowCorrelationsAllVsMPro[18]->GetXaxis()->SetTitle("M");
1888 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[18]);
1889 fIntFlowCorrelationsAllVsMPro[19] = new TProfile("five2n2n2n1n1n","#LT#LT5#GT#GT_{2n,2n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1890 fIntFlowCorrelationsAllVsMPro[19]->Sumw2();
1891 fIntFlowCorrelationsAllVsMPro[19]->GetXaxis()->SetTitle("M");
1892 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[19]);
1893 fIntFlowCorrelationsAllVsMPro[20] = new TProfile("five3n1n2n1n1n","#LT#LT5#GT#GT_{3n,n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1894 fIntFlowCorrelationsAllVsMPro[20]->Sumw2();
1895 fIntFlowCorrelationsAllVsMPro[20]->GetXaxis()->SetTitle("M");
1896 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[20]);
1897 fIntFlowCorrelationsAllVsMPro[21] = new TProfile("five4n1n1n1n1n","#LT#LT5#GT#GT_{4n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1898 fIntFlowCorrelationsAllVsMPro[21]->Sumw2();
1899 fIntFlowCorrelationsAllVsMPro[21]->GetXaxis()->SetTitle("M");
1900 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[21]);
1901 // 6-p correlations vs M:
1902 fIntFlowCorrelationsAllVsMPro[23] = new TProfile("six1n1n1n1n1n1n","#LT#LT6#GT#GT_{n,n,n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1903 fIntFlowCorrelationsAllVsMPro[23]->Sumw2();
1904 fIntFlowCorrelationsAllVsMPro[23]->GetXaxis()->SetTitle("M");
1905 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[23]);
1906 fIntFlowCorrelationsAllVsMPro[24] = new TProfile("six2n1n1n2n1n1n","#LT#LT6#GT#GT_{2n,n,n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1907 fIntFlowCorrelationsAllVsMPro[24]->Sumw2();
1908 fIntFlowCorrelationsAllVsMPro[24]->GetXaxis()->SetTitle("M");
1909 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[24]);
1910 fIntFlowCorrelationsAllVsMPro[25] = new TProfile("six2n2n1n1n1n1n","#LT#LT6#GT#GT_{2n,2n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1911 fIntFlowCorrelationsAllVsMPro[25]->Sumw2();
1912 fIntFlowCorrelationsAllVsMPro[25]->GetXaxis()->SetTitle("M");
1913 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[25]);
1914 fIntFlowCorrelationsAllVsMPro[26] = new TProfile("six3n1n1n1n1n1n","#LT#LT6#GT#GT_{3n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1915 fIntFlowCorrelationsAllVsMPro[26]->Sumw2();
1916 fIntFlowCorrelationsAllVsMPro[26]->GetXaxis()->SetTitle("M");
1917 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[26]);
1918 // 7-p correlations vs M:
1919 fIntFlowCorrelationsAllVsMPro[28] = new TProfile("seven2n1n1n1n1n1n1n","#LT#LT7#GT#GT_{2n,n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1920 fIntFlowCorrelationsAllVsMPro[28]->Sumw2();
1921 fIntFlowCorrelationsAllVsMPro[28]->GetXaxis()->SetTitle("M");
1922 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[28]);
1923 // 8-p correlations vs M:
1924 fIntFlowCorrelationsAllVsMPro[30] = new TProfile("eight1n1n1n1n1n1n1n1n","#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
1925 fIntFlowCorrelationsAllVsMPro[30]->Sumw2();
1926 fIntFlowCorrelationsAllVsMPro[30]->GetXaxis()->SetTitle("M");
1927 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[30]);
b84464d3 1928 // EXTRA correlations vs M for v3{5} study (to be improved - put them in a right order somewhere):
3435cacb 1929 fIntFlowCorrelationsAllVsMPro[32] = new TProfile("four4n2n3n3n","#LT#LT4#GT#GT_{4n,2n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1930 fIntFlowCorrelationsAllVsMPro[32]->Sumw2();
1931 fIntFlowCorrelationsAllVsMPro[32]->GetXaxis()->SetTitle("M");
1932 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[32]);
b84464d3 1933 fIntFlowCorrelationsAllVsMPro[33] = new TProfile("five3n3n2n2n2n","#LT#LT5#GT#GT_{3n,3n|2n,2n,2n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1934 fIntFlowCorrelationsAllVsMPro[33]->Sumw2();
1935 fIntFlowCorrelationsAllVsMPro[33]->GetXaxis()->SetTitle("M");
1936 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[33]);
b84464d3 1937 // EXTRA correlations vs M for Teaney-Yan study (to be improved - put them in a right order somewhere):
1938 fIntFlowCorrelationsAllVsMPro[34] = new TProfile("two5n5n","#LT#LT2#GT#GT_{5n|5n}",fnBinsMult,fMinMult,fMaxMult);
1939 fIntFlowCorrelationsAllVsMPro[34]->Sumw2();
1940 fIntFlowCorrelationsAllVsMPro[34]->GetXaxis()->SetTitle("M");
1941 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[34]);
1942 fIntFlowCorrelationsAllVsMPro[35] = new TProfile("two6n6n","#LT#LT2#GT#GT_{6n|6n}",fnBinsMult,fMinMult,fMaxMult);
1943 fIntFlowCorrelationsAllVsMPro[35]->Sumw2();
1944 fIntFlowCorrelationsAllVsMPro[35]->GetXaxis()->SetTitle("M");
1945 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[35]);
1946 fIntFlowCorrelationsAllVsMPro[36] = new TProfile("three5n3n2n","#LT#LT3#GT#GT_{5n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
1947 fIntFlowCorrelationsAllVsMPro[36]->Sumw2();
1948 fIntFlowCorrelationsAllVsMPro[36]->GetXaxis()->SetTitle("M");
1949 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[36]);
1950 fIntFlowCorrelationsAllVsMPro[37] = new TProfile("three5n4n1n","#LT#LT3#GT#GT_{5n|4n,1n}",fnBinsMult,fMinMult,fMaxMult);
1951 fIntFlowCorrelationsAllVsMPro[37]->Sumw2();
1952 fIntFlowCorrelationsAllVsMPro[37]->GetXaxis()->SetTitle("M");
1953 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[37]);
1954 fIntFlowCorrelationsAllVsMPro[38] = new TProfile("three6n3n3n","#LT#LT3#GT#GT_{6n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1955 fIntFlowCorrelationsAllVsMPro[38]->Sumw2();
1956 fIntFlowCorrelationsAllVsMPro[38]->GetXaxis()->SetTitle("M");
1957 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[38]);
1958 fIntFlowCorrelationsAllVsMPro[39] = new TProfile("three6n4n2n","#LT#LT3#GT#GT_{6n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
1959 fIntFlowCorrelationsAllVsMPro[39]->Sumw2();
1960 fIntFlowCorrelationsAllVsMPro[39]->GetXaxis()->SetTitle("M");
1961 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[39]);
1962 fIntFlowCorrelationsAllVsMPro[40] = new TProfile("three6n5n1n","#LT#LT3#GT#GT_{6n|5n,1n}",fnBinsMult,fMinMult,fMaxMult);
1963 fIntFlowCorrelationsAllVsMPro[40]->Sumw2();
1964 fIntFlowCorrelationsAllVsMPro[40]->GetXaxis()->SetTitle("M");
1965 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[40]);
1966 fIntFlowCorrelationsAllVsMPro[41] = new TProfile("four6n3n2n1n","#LT#LT4#GT#GT_{6n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
1967 fIntFlowCorrelationsAllVsMPro[41]->Sumw2();
1968 fIntFlowCorrelationsAllVsMPro[41]->GetXaxis()->SetTitle("M");
1969 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[41]);
1970 fIntFlowCorrelationsAllVsMPro[42] = new TProfile("four3n2n3n2n","#LT#LT4#GT#GT_{3n,2n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
1971 fIntFlowCorrelationsAllVsMPro[42]->Sumw2();
1972 fIntFlowCorrelationsAllVsMPro[42]->GetXaxis()->SetTitle("M");
1973 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[42]);
1974 fIntFlowCorrelationsAllVsMPro[43] = new TProfile("four4n1n3n2n","#LT#LT4#GT#GT_{4n,1n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
1975 fIntFlowCorrelationsAllVsMPro[43]->Sumw2();
1976 fIntFlowCorrelationsAllVsMPro[43]->GetXaxis()->SetTitle("M");
1977 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[43]);
1978 fIntFlowCorrelationsAllVsMPro[44] = new TProfile("four3n3n3n3n","#LT#LT4#GT#GT_{3n,3n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1979 fIntFlowCorrelationsAllVsMPro[44]->Sumw2();
1980 fIntFlowCorrelationsAllVsMPro[44]->GetXaxis()->SetTitle("M");
1981 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[44]);
1982 fIntFlowCorrelationsAllVsMPro[45] = new TProfile("four4n2n3n3n","#LT#LT4#GT#GT_{4n,2n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1983 fIntFlowCorrelationsAllVsMPro[45]->Sumw2();
1984 fIntFlowCorrelationsAllVsMPro[45]->GetXaxis()->SetTitle("M");
1985 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[45]);
1986 fIntFlowCorrelationsAllVsMPro[46] = new TProfile("four5n1n3n3n","#LT#LT4#GT#GT_{5n,1n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
1987 fIntFlowCorrelationsAllVsMPro[46]->Sumw2();
1988 fIntFlowCorrelationsAllVsMPro[46]->GetXaxis()->SetTitle("M");
1989 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[46]);
1990 fIntFlowCorrelationsAllVsMPro[47] = new TProfile("four4n2n4n2n","#LT#LT4#GT#GT_{4n,2n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
1991 fIntFlowCorrelationsAllVsMPro[47]->Sumw2();
1992 fIntFlowCorrelationsAllVsMPro[47]->GetXaxis()->SetTitle("M");
1993 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[47]);
1994 fIntFlowCorrelationsAllVsMPro[48] = new TProfile("four5n1n4n2n","#LT#LT4#GT#GT_{5n,1n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
1995 fIntFlowCorrelationsAllVsMPro[48]->Sumw2();
1996 fIntFlowCorrelationsAllVsMPro[48]->GetXaxis()->SetTitle("M");
1997 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[48]);
1998 fIntFlowCorrelationsAllVsMPro[49] = new TProfile("four5n3n1n1n","#LT#LT4#GT#GT_{5n|3n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
1999 fIntFlowCorrelationsAllVsMPro[49]->Sumw2();
2000 fIntFlowCorrelationsAllVsMPro[49]->GetXaxis()->SetTitle("M");
2001 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[49]);
2002 fIntFlowCorrelationsAllVsMPro[50] = new TProfile("four5n2n2n1n","#LT#LT4#GT#GT_{5n|2n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
2003 fIntFlowCorrelationsAllVsMPro[50]->Sumw2();
2004 fIntFlowCorrelationsAllVsMPro[50]->GetXaxis()->SetTitle("M");
2005 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[50]);
2006 fIntFlowCorrelationsAllVsMPro[51] = new TProfile("four5n1n5n1n","#LT#LT4#GT#GT_{5n,1n|5n,1n}",fnBinsMult,fMinMult,fMaxMult);
2007 fIntFlowCorrelationsAllVsMPro[51]->Sumw2();
2008 fIntFlowCorrelationsAllVsMPro[51]->GetXaxis()->SetTitle("M");
2009 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[51]);
2010 fIntFlowCorrelationsAllVsMPro[52] = new TProfile("five3n3n3n2n1n","#LT#LT5#GT#GT_{3n,3n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
2011 fIntFlowCorrelationsAllVsMPro[52]->Sumw2();
2012 fIntFlowCorrelationsAllVsMPro[52]->GetXaxis()->SetTitle("M");
2013 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[52]);
2014 fIntFlowCorrelationsAllVsMPro[53] = new TProfile("five4n2n3n2n1n","#LT#LT5#GT#GT_{4n,2n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
2015 fIntFlowCorrelationsAllVsMPro[53]->Sumw2();
2016 fIntFlowCorrelationsAllVsMPro[53]->GetXaxis()->SetTitle("M");
2017 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[53]);
2018 fIntFlowCorrelationsAllVsMPro[54] = new TProfile("five3n2n3n1n1n","#LT#LT5#GT#GT_{3n,2n|3n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
2019 fIntFlowCorrelationsAllVsMPro[54]->Sumw2();
2020 fIntFlowCorrelationsAllVsMPro[54]->GetXaxis()->SetTitle("M");
2021 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[54]);
2022 fIntFlowCorrelationsAllVsMPro[55] = new TProfile("five3n2n2n2n1n","#LT#LT5#GT#GT_{3n,2n|2n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
2023 fIntFlowCorrelationsAllVsMPro[55]->Sumw2();
2024 fIntFlowCorrelationsAllVsMPro[55]->GetXaxis()->SetTitle("M");
2025 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[55]);
2026 fIntFlowCorrelationsAllVsMPro[56] = new TProfile("five5n1n3n2n1n","#LT#LT5#GT#GT_{5n,1n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
2027 fIntFlowCorrelationsAllVsMPro[56]->Sumw2();
2028 fIntFlowCorrelationsAllVsMPro[56]->GetXaxis()->SetTitle("M");
2029 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[56]);
2030 fIntFlowCorrelationsAllVsMPro[57] = new TProfile("six3n2n1n3n2n1n","#LT#LT6#GT#GT_{3n,2n,1n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
2031 fIntFlowCorrelationsAllVsMPro[57]->Sumw2();
2032 fIntFlowCorrelationsAllVsMPro[57]->GetXaxis()->SetTitle("M");
403e3389 2033 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[57]);
2034 fIntFlowCorrelationsAllVsMPro[58] = new TProfile("four6n4n1n1n","#LT#LT4#GT#GT_{6n|4n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
2035 fIntFlowCorrelationsAllVsMPro[58]->Sumw2();
2036 fIntFlowCorrelationsAllVsMPro[58]->GetXaxis()->SetTitle("M");
2037 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[58]);
2038 fIntFlowCorrelationsAllVsMPro[59] = new TProfile("four6n2n2n2n","#LT#LT4#GT#GT_{6n|2n,2n,2n}",fnBinsMult,fMinMult,fMaxMult);
2039 fIntFlowCorrelationsAllVsMPro[59]->Sumw2();
2040 fIntFlowCorrelationsAllVsMPro[59]->GetXaxis()->SetTitle("M");
2041 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[59]);
2042 fIntFlowCorrelationsAllVsMPro[60] = new TProfile("five6n2n2n1n1n","#LT#LT5#GT#GT_{6n|2n,2n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
2043 fIntFlowCorrelationsAllVsMPro[60]->Sumw2();
2044 fIntFlowCorrelationsAllVsMPro[60]->GetXaxis()->SetTitle("M");
2045 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[60]);
2046 fIntFlowCorrelationsAllVsMPro[61] = new TProfile("five4n1n1n3n3n","#LT#LT5#GT#GT_{4n,1n,1n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
2047 fIntFlowCorrelationsAllVsMPro[61]->Sumw2();
2048 fIntFlowCorrelationsAllVsMPro[61]->GetXaxis()->SetTitle("M");
2049 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[61]);
2050 fIntFlowCorrelationsAllVsMPro[62] = new TProfile("six3n3n2n2n1n1n","#LT#LT6#GT#GT_{3n,3n|2n,2n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
2051 fIntFlowCorrelationsAllVsMPro[62]->Sumw2();
2052 fIntFlowCorrelationsAllVsMPro[62]->GetXaxis()->SetTitle("M");
2053 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[62]);
3435cacb 2054 } // end of if(fCalculateAllCorrelationsVsM)
489d5531 2055 // when particle weights are used some extra correlations appear:
403e3389 2056 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 2057 {
2058 TString intFlowExtraCorrelationsProName = "fIntFlowExtraCorrelationsPro";
2059 intFlowExtraCorrelationsProName += fAnalysisLabel->Data();
2060 fIntFlowExtraCorrelationsPro = new TProfile(intFlowExtraCorrelationsProName.Data(),"Average extra correlations for all events",100,0,100,"s");
2061 fIntFlowExtraCorrelationsPro->SetTickLength(-0.01,"Y");
2062 fIntFlowExtraCorrelationsPro->SetMarkerStyle(25);
2063 fIntFlowExtraCorrelationsPro->SetLabelSize(0.03);
2064 fIntFlowExtraCorrelationsPro->SetLabelOffset(0.01,"Y");
2065 // extra 2-p correlations:
2066 (fIntFlowExtraCorrelationsPro->GetXaxis())->SetBinLabel(1,"<<w1^3 w2 cos(n*(phi1-phi2))>>");
2067 (fIntFlowExtraCorrelationsPro->GetXaxis())->SetBinLabel(2,"<<w1 w2 w3^2 cos(n*(phi1-phi2))>>");
2068 fIntFlowProfiles->Add(fIntFlowExtraCorrelationsPro);
403e3389 2069 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 2070 // average product of correlations <2>, <4>, <6> and <8>:
403e3389 2071 TString productFlag[6] = {"#LT#LT2#GT#LT4#GT#GT","#LT#LT2#GT#LT6#GT#GT","#LT#LT2#GT#LT8#GT#GT",
2072 "#LT#LT4#GT#LT6#GT#GT","#LT#LT4#GT#LT8#GT#GT","#LT#LT6#GT#LT8#GT#GT"};
489d5531 2073 TString intFlowProductOfCorrelationsProName = "fIntFlowProductOfCorrelationsPro";
2074 intFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
2075 fIntFlowProductOfCorrelationsPro = new TProfile(intFlowProductOfCorrelationsProName.Data(),"Average products of correlations",6,0,6);
2076 fIntFlowProductOfCorrelationsPro->SetTickLength(-0.01,"Y");
2077 fIntFlowProductOfCorrelationsPro->SetMarkerStyle(25);
2078 fIntFlowProductOfCorrelationsPro->SetLabelSize(0.05);
2079 fIntFlowProductOfCorrelationsPro->SetLabelOffset(0.01,"Y");
68a3b4b1 2080 for(Int_t b=0;b<6;b++)
b3dacf6b 2081 {
68a3b4b1 2082 (fIntFlowProductOfCorrelationsPro->GetXaxis())->SetBinLabel(b+1,productFlag[b].Data());
b3dacf6b 2083 }
2084 fIntFlowProfiles->Add(fIntFlowProductOfCorrelationsPro);
ff70ca91 2085 // average product of correlations <2>, <4>, <6> and <8> versus multiplicity
2086 // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 2087 if(fCalculateCumulantsVsM)
2088 {
2089 TString intFlowProductOfCorrelationsVsMProName = "fIntFlowProductOfCorrelationsVsMPro";
2090 intFlowProductOfCorrelationsVsMProName += fAnalysisLabel->Data();
2091 for(Int_t pi=0;pi<6;pi++)
2092 {
2093 fIntFlowProductOfCorrelationsVsMPro[pi] = new TProfile(Form("%s, %s",intFlowProductOfCorrelationsVsMProName.Data(),productFlag[pi].Data()),
2094 Form("%s versus multiplicity",productFlag[pi].Data()),
2095 fnBinsMult,fMinMult,fMaxMult);
2096 fIntFlowProductOfCorrelationsVsMPro[pi]->GetXaxis()->SetTitle("M");
2097 fIntFlowProfiles->Add(fIntFlowProductOfCorrelationsVsMPro[pi]);
2098 } // end of for(Int_t pi=0;pi<6;pi++)
2099 } // end of if(fCalculateCumulantsVsM)
0328db2d 2100 // average product of correction terms for NUA:
2101 TString intFlowProductOfCorrectionTermsForNUAProName = "fIntFlowProductOfCorrectionTermsForNUAPro";
2102 intFlowProductOfCorrectionTermsForNUAProName += fAnalysisLabel->Data();
2103 fIntFlowProductOfCorrectionTermsForNUAPro = new TProfile(intFlowProductOfCorrectionTermsForNUAProName.Data(),"Average products of correction terms for NUA",27,0,27);
2104 fIntFlowProductOfCorrectionTermsForNUAPro->SetTickLength(-0.01,"Y");
2105 fIntFlowProductOfCorrectionTermsForNUAPro->SetMarkerStyle(25);
403e3389 2106 fIntFlowProductOfCorrectionTermsForNUAPro->SetLabelSize(0.03);
0328db2d 2107 fIntFlowProductOfCorrectionTermsForNUAPro->SetLabelOffset(0.01,"Y");
2108 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(1,"<<2><cos(#phi)>>");
2109 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(2,"<<2><sin(#phi)>>");
2110 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(3,"<<cos(#phi)><sin(#phi)>>");
2111 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(4,"Cov(<2>,<cos(#phi_{1}+#phi_{2})>)");
2112 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(5,"Cov(<2>,<sin(#phi_{1}+#phi_{2})>)");
2113 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(6,"Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2114 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(7,"Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2115 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(8,"Cov(<4>,<cos(#phi)>)");
2116 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(9,"Cov(<4>,<sin(#phi)>)");
2117 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(10,"Cov(<4>,<cos(#phi_{1}+#phi_{2})>)");
2118 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(11,"Cov(<4>,<sin(#phi_{1}+#phi_{2})>)");
2119 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(12,"Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2120 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(13,"Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2121 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(14,"Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2122 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(15,"Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2123 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(16,"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2124 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(17,"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2125 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(18,"Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2126 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(19,"Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2127 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(20,"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2128 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(21,"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2129 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(22,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2130 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(23,"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2131 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(24,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2132 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(25,"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2133 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(26,"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2134 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(27,"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2135 fIntFlowProfiles->Add(fIntFlowProductOfCorrectionTermsForNUAPro);
489d5531 2136 // average correction terms for non-uniform acceptance (with wrong errors!):
2137 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
2138 {
2139 TString intFlowCorrectionTermsForNUAProName = "fIntFlowCorrectionTermsForNUAPro";
2140 intFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
b92ea2b9 2141 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 2142 fIntFlowCorrectionTermsForNUAPro[sc]->SetTickLength(-0.01,"Y");
2143 fIntFlowCorrectionTermsForNUAPro[sc]->SetMarkerStyle(25);
403e3389 2144 fIntFlowCorrectionTermsForNUAPro[sc]->SetLabelSize(0.05);
489d5531 2145 fIntFlowCorrectionTermsForNUAPro[sc]->SetLabelOffset(0.01,"Y");
403e3389 2146 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(1,Form("#LT#LT%s(n(#phi_{1}))#GT#GT",sinCosFlag[sc].Data()));
2147 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(2,Form("#LT#LT%s(n(#phi_{1}+#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
2148 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(3,Form("#LT#LT%s(n(#phi_{1}-#phi_{2}-#phi_{3}))#GT#GT",sinCosFlag[sc].Data()));
2149 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(4,Form("#LT#LT%s(n(2#phi_{1}-#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
489d5531 2150 fIntFlowProfiles->Add(fIntFlowCorrectionTermsForNUAPro[sc]);
2001bc3a 2151 // versus multiplicity:
b3dacf6b 2152 if(fCalculateCumulantsVsM)
2153 {
2154 TString correctionTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
2155 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2156 {
2157 TString intFlowCorrectionTermsForNUAVsMProName = "fIntFlowCorrectionTermsForNUAVsMPro";
2158 intFlowCorrectionTermsForNUAVsMProName += fAnalysisLabel->Data();
2159 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");
2160 fIntFlowProfiles->Add(fIntFlowCorrectionTermsForNUAVsMPro[sc][ci]);
2161 }
2162 } // end of if(fCalculateCumulantsVsM)
489d5531 2163 } // end of for(Int_t sc=0;sc<2;sc++)
2164
2165 // d) Book histograms holding the final results:
2166 // average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with correct errors!):
2167 TString intFlowCorrelationsHistName = "fIntFlowCorrelationsHist";
2168 intFlowCorrelationsHistName += fAnalysisLabel->Data();
2169 fIntFlowCorrelationsHist = new TH1D(intFlowCorrelationsHistName.Data(),"Average correlations for all events",4,0,4);
2170 fIntFlowCorrelationsHist->SetTickLength(-0.01,"Y");
2171 fIntFlowCorrelationsHist->SetMarkerStyle(25);
2172 fIntFlowCorrelationsHist->SetLabelSize(0.06);
2173 fIntFlowCorrelationsHist->SetLabelOffset(0.01,"Y");
403e3389 2174 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(1,"#LT#LT2#GT#GT");
2175 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(2,"#LT#LT4#GT#GT");
2176 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(3,"#LT#LT6#GT#GT");
2177 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(4,"#LT#LT8#GT#GT");
489d5531 2178 fIntFlowResults->Add(fIntFlowCorrelationsHist);
ff70ca91 2179 // average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with correct errors!) vs M:
b3dacf6b 2180 if(fCalculateCumulantsVsM)
2181 {
2182 for(Int_t ci=0;ci<4;ci++) // correlation index
2183 {
2184 TString intFlowCorrelationsVsMHistName = "fIntFlowCorrelationsVsMHist";
2185 intFlowCorrelationsVsMHistName += fAnalysisLabel->Data();
2186 fIntFlowCorrelationsVsMHist[ci] = new TH1D(Form("%s, %s",intFlowCorrelationsVsMHistName.Data(),correlationFlag[ci].Data()),
2187 Form("%s vs multiplicity",correlationFlag[ci].Data()),
2188 fnBinsMult,fMinMult,fMaxMult);
2189 fIntFlowCorrelationsVsMHist[ci]->GetYaxis()->SetTitle(correlationFlag[ci].Data());
2190 fIntFlowCorrelationsVsMHist[ci]->GetXaxis()->SetTitle("M");
2191 fIntFlowResults->Add(fIntFlowCorrelationsVsMHist[ci]);
2192 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
2193 } // end of if(fCalculateCumulantsVsM)
489d5531 2194 // average all correlations for all events (with correct errors!):
2195 TString intFlowCorrelationsAllHistName = "fIntFlowCorrelationsAllHist";
2196 intFlowCorrelationsAllHistName += fAnalysisLabel->Data();
8ed4edc7 2197 fIntFlowCorrelationsAllHist = new TH1D(intFlowCorrelationsAllHistName.Data(),"Average correlations for all events",34,0,34);
489d5531 2198 fIntFlowCorrelationsAllHist->SetTickLength(-0.01,"Y");
2199 fIntFlowCorrelationsAllHist->SetMarkerStyle(25);
2200 fIntFlowCorrelationsAllHist->SetLabelSize(0.03);
2201 fIntFlowCorrelationsAllHist->SetLabelOffset(0.01,"Y");
2202 // 2-p correlations:
2203 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(1,"<<2>>_{n|n}");
2204 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(2,"<<2>>_{2n|2n}");
2205 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(3,"<<2>>_{3n|3n}");
2206 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(4,"<<2>>_{4n|4n}");
2207 // 3-p correlations:
2208 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(6,"<<3>>_{2n|n,n}");
2209 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(7,"<<3>>_{3n|2n,n}");
2210 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(8,"<<3>>_{4n|2n,2n}");
2211 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(9,"<<3>>_{4n|3n,n}");
2212 // 4-p correlations:
2213 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(11,"<<4>>_{n,n|n,n}");
2214 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(12,"<<4>>_{2n,n|2n,n}");
2215 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(13,"<<4>>_{2n,2n|2n,2n}");
2216 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(14,"<<4>>_{3n|n,n,n}");
2217 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(15,"<<4>>_{3n,n|3n,n}");
2218 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(16,"<<4>>_{3n,n|2n,2n}");
2219 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(17,"<<4>>_{4n|2n,n,n}");
2220 // 5-p correlations:
2221 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(19,"<<5>>_{2n|n,n,n,n}");
2222 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(20,"<<5>>_{2n,2n|2n,n,n}");
2223 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(21,"<<5>>_{3n,n|2n,n,n}");
2224 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(22,"<<5>>_{4n|n,n,n,n}");
2225 // 6-p correlations:
2226 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(24,"<<6>>_{n,n,n|n,n,n}");
2227 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(25,"<<6>>_{2n,n,n|2n,n,n}");
2228 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(26,"<<6>>_{2n,2n|n,n,n,n}");
2229 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(27,"<<6>>_{3n,n|n,n,n,n}");
2230 // 7-p correlations:
2231 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(29,"<<7>>_{2n,n,n|n,n,n,n}");
2232 // 8-p correlations:
2233 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(31,"<<8>>_{n,n,n,n|n,n,n,n}");
2234 fIntFlowResults->Add(fIntFlowCorrelationsAllHist);
2235 // average correction terms for non-uniform acceptance (with correct errors!):
2236 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
2237 {
2238 TString intFlowCorrectionTermsForNUAHistName = "fIntFlowCorrectionTermsForNUAHist";
2239 intFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
b92ea2b9 2240 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 2241 fIntFlowCorrectionTermsForNUAHist[sc]->SetTickLength(-0.01,"Y");
2242 fIntFlowCorrectionTermsForNUAHist[sc]->SetMarkerStyle(25);
403e3389 2243 fIntFlowCorrectionTermsForNUAHist[sc]->SetLabelSize(0.05);
489d5531 2244 fIntFlowCorrectionTermsForNUAHist[sc]->SetLabelOffset(0.01,"Y");
b92ea2b9 2245 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(1,Form("#LT#LT%s(n(#phi_{1}))#GT#GT",sinCosFlag[sc].Data()));
403e3389 2246 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(2,Form("#LT#LT%s(n(#phi_{1}+#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
2247 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(3,Form("#LT#LT%s(n(#phi_{1}-#phi_{2}-#phi_{3}))#GT#GT",sinCosFlag[sc].Data()));
2248 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(4,Form("#LT#LT%s(n(2#phi_{1}-#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
489d5531 2249 fIntFlowResults->Add(fIntFlowCorrectionTermsForNUAHist[sc]);
2250 } // end of for(Int_t sc=0;sc<2;sc++)
2251 // covariances (multiplied with weight dependent prefactor):
2252 TString intFlowCovariancesName = "fIntFlowCovariances";
2253 intFlowCovariancesName += fAnalysisLabel->Data();
2254 fIntFlowCovariances = new TH1D(intFlowCovariancesName.Data(),"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2255 fIntFlowCovariances->SetLabelSize(0.04);
2256 fIntFlowCovariances->SetMarkerStyle(25);
403e3389 2257 (fIntFlowCovariances->GetXaxis())->SetBinLabel(1,"Cov(#LT2#GT,#LT4#GT)");
2258 (fIntFlowCovariances->GetXaxis())->SetBinLabel(2,"Cov(#LT2#GT,#LT6#GT)");
2259 (fIntFlowCovariances->GetXaxis())->SetBinLabel(3,"Cov(#LT2#GT,#LT8#GT)");
2260 (fIntFlowCovariances->GetXaxis())->SetBinLabel(4,"Cov(#LT4#GT,#LT6#GT)");
2261 (fIntFlowCovariances->GetXaxis())->SetBinLabel(5,"Cov(#LT4#GT,#LT8#GT)");
2262 (fIntFlowCovariances->GetXaxis())->SetBinLabel(6,"Cov(#LT6#GT,#LT8#GT)");
489d5531 2263 fIntFlowResults->Add(fIntFlowCovariances);
2264 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8>:
2265 TString intFlowSumOfEventWeightsName = "fIntFlowSumOfEventWeights";
2266 intFlowSumOfEventWeightsName += fAnalysisLabel->Data();
2267 for(Int_t power=0;power<2;power++)
2268 {
2269 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 2270 fIntFlowSumOfEventWeights[power]->SetLabelSize(0.04);
489d5531 2271 fIntFlowSumOfEventWeights[power]->SetMarkerStyle(25);
2272 if(power == 0)
2273 {
403e3389 2274 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT}");
2275 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT4#GT}");
2276 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT6#GT}");
2277 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT8#GT}");
489d5531 2278 } else if (power == 1)
2279 {
403e3389 2280 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT}^{2}");
2281 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT4#GT}^{2}");
2282 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT6#GT}^{2}");
2283 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT8#GT}^{2}");
489d5531 2284 }
2285 fIntFlowResults->Add(fIntFlowSumOfEventWeights[power]);
2286 }
2287 // sum of products of event weights for correlations <2>, <4>, <6> and <8>:
2288 TString intFlowSumOfProductOfEventWeightsName = "fIntFlowSumOfProductOfEventWeights";
2289 intFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
2290 fIntFlowSumOfProductOfEventWeights = new TH1D(intFlowSumOfProductOfEventWeightsName.Data(),"Sum of product of event weights for correlations",6,0,6);
403e3389 2291 fIntFlowSumOfProductOfEventWeights->SetLabelSize(0.04);
489d5531 2292 fIntFlowSumOfProductOfEventWeights->SetMarkerStyle(25);
403e3389 2293 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT4#GT}");
2294 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT6#GT}");
2295 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT8#GT}");
2296 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LT6#GT}");
2297 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(5,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LT8#GT}");
2298 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(6,"#sum_{i=1}^{N} w_{#LT6#GT} w_{#LT8#GT}");
489d5531 2299 fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeights);
ff70ca91 2300 // final result for covariances of correlations (multiplied with weight dependent prefactor) versus M
2301 // [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 2302 if(fCalculateCumulantsVsM)
ff70ca91 2303 {
b3dacf6b 2304 TString intFlowCovariancesVsMName = "fIntFlowCovariancesVsM";
2305 intFlowCovariancesVsMName += fAnalysisLabel->Data();
2306 TString covarianceFlag[6] = {"Cov(<2>,<4>)","Cov(<2>,<6>)","Cov(<2>,<8>)","Cov(<4>,<6>)","Cov(<4>,<8>)","Cov(<6>,<8>)"};
2307 for(Int_t ci=0;ci<6;ci++)
2308 {
2309 fIntFlowCovariancesVsM[ci] = new TH1D(Form("%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2310 Form("%s vs multiplicity",covarianceFlag[ci].Data()),
2311 fnBinsMult,fMinMult,fMaxMult);
2312 fIntFlowCovariancesVsM[ci]->GetYaxis()->SetTitle(covarianceFlag[ci].Data());
2313 fIntFlowCovariancesVsM[ci]->GetXaxis()->SetTitle("M");
2314 fIntFlowResults->Add(fIntFlowCovariancesVsM[ci]);
2315 }
2316 } // end of if(fCalculateCumulantsVsM)
ff70ca91 2317 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8> versus multiplicity
2318 // [0=sum{w_{<2>}},1=sum{w_{<4>}},2=sum{w_{<6>}},3=sum{w_{<8>}}][0=linear 1,1=quadratic]:
b3dacf6b 2319 if(fCalculateCumulantsVsM)
ff70ca91 2320 {
b3dacf6b 2321 TString intFlowSumOfEventWeightsVsMName = "fIntFlowSumOfEventWeightsVsM";
2322 intFlowSumOfEventWeightsVsMName += fAnalysisLabel->Data();
2323 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>}"},
2324 {"#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}"}};
2325 for(Int_t si=0;si<4;si++)
ff70ca91 2326 {
b3dacf6b 2327 for(Int_t power=0;power<2;power++)
2328 {
2329 fIntFlowSumOfEventWeightsVsM[si][power] = new TH1D(Form("%s, %s",intFlowSumOfEventWeightsVsMName.Data(),sumFlag[power][si].Data()),
2330 Form("%s vs multiplicity",sumFlag[power][si].Data()),
2331 fnBinsMult,fMinMult,fMaxMult);
2332 fIntFlowSumOfEventWeightsVsM[si][power]->GetYaxis()->SetTitle(sumFlag[power][si].Data());
2333 fIntFlowSumOfEventWeightsVsM[si][power]->GetXaxis()->SetTitle("M");
2334 fIntFlowResults->Add(fIntFlowSumOfEventWeightsVsM[si][power]);
2335 } // end of for(Int_t power=0;power<2;power++)
2336 } // end of for(Int_t si=0;si<4;si++)
2337 } // end of if(fCalculateCumulantsVsM)
ff70ca91 2338 // sum of products of event weights for correlations <2>, <4>, <6> and <8> vs M
2339 // [0=sum{w_{<2>}w_{<4>}},1=sum{w_{<2>}w_{<6>}},2=sum{w_{<2>}w_{<8>}},
2340 // 3=sum{w_{<4>}w_{<6>}},4=sum{w_{<4>}w_{<8>}},5=sum{w_{<6>}w_{<8>}}]:
b3dacf6b 2341 if(fCalculateCumulantsVsM)
2342 {
2343 TString intFlowSumOfProductOfEventWeightsVsMName = "fIntFlowSumOfProductOfEventWeightsVsM";
2344 intFlowSumOfProductOfEventWeightsVsMName += fAnalysisLabel->Data();
2345 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>}",
2346 "#sum_{i=1}^{N} w_{<4>} w_{<6>}","#sum_{i=1}^{N} w_{<4>} w_{<8>}","#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2347 for(Int_t pi=0;pi<6;pi++)
2348 {
2349 fIntFlowSumOfProductOfEventWeightsVsM[pi] = new TH1D(Form("%s, %s",intFlowSumOfProductOfEventWeightsVsMName.Data(),sopowFlag[pi].Data()),
2350 Form("%s versus multiplicity",sopowFlag[pi].Data()),
2351 fnBinsMult,fMinMult,fMaxMult);
2352 fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetXaxis()->SetTitle("M");
2353 fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetYaxis()->SetTitle(sopowFlag[pi].Data());
2354 fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeightsVsM[pi]);
2355 } // end of for(Int_t pi=0;pi<6;pi++)
2356 } // end of if(fCalculateCumulantsVsM)
0328db2d 2357 // covariances of NUA terms (multiplied with weight dependent prefactor):
2358 TString intFlowCovariancesNUAName = "fIntFlowCovariancesNUA";
2359 intFlowCovariancesNUAName += fAnalysisLabel->Data();
2360 fIntFlowCovariancesNUA = new TH1D(intFlowCovariancesNUAName.Data(),"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2361 fIntFlowCovariancesNUA->SetLabelSize(0.04);
2362 fIntFlowCovariancesNUA->SetMarkerStyle(25);
2363 fIntFlowCovariancesNUA->GetXaxis()->SetLabelSize(0.02);
2364 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(1,"Cov(<2>,<cos(#phi)>");
2365 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(2,"Cov(<2>,<sin(#phi)>)");
2366 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(3,"Cov(<cos(#phi)>,<sin(#phi)>)");
2367 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(4,"Cov(<2>,<cos(#phi_{1}+#phi_{2})>)");
2368 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(5,"Cov(<2>,<sin(#phi_{1}+#phi_{2})>)");
2369 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(6,"Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2370 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(7,"Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2371 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(8,"Cov(<4>,<cos(#phi)>)");
2372 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(9,"Cov(<4>,<sin(#phi)>)");
2373 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(10,"Cov(<4>,<cos(#phi_{1}+#phi_{2})>)");
2374 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(11,"Cov(<4>,<sin(#phi_{1}+#phi_{2})>)");
2375 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(12,"Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2376 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(13,"Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2377 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(14,"Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2378 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(15,"Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2379 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2380 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2381 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(18,"Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2382 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(19,"Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2383 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2384 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2385 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2386 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2387 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2388 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2389 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2390 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2391 fIntFlowResults->Add(fIntFlowCovariancesNUA);
2392 // sum of linear and quadratic event weights for NUA terms:
2393 TString intFlowSumOfEventWeightsNUAName = "fIntFlowSumOfEventWeightsNUA";
2394 intFlowSumOfEventWeightsNUAName += fAnalysisLabel->Data();
2395 for(Int_t sc=0;sc<2;sc++)
2396 {
2397 for(Int_t power=0;power<2;power++)
2398 {
b92ea2b9 2399 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 2400 fIntFlowSumOfEventWeightsNUA[sc][power]->SetLabelSize(0.05);
2401 fIntFlowSumOfEventWeightsNUA[sc][power]->SetMarkerStyle(25);
2402 if(power == 0)
2403 {
2404 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(1,Form("#sum_{i=1}^{N} w_{<%s(#phi)>}",sinCosFlag[sc].Data()));
2405 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(2,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}+#phi_{2})>}",sinCosFlag[sc].Data()));
b92ea2b9 2406 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}",sinCosFlag[sc].Data()));
2407 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(4,Form("#sum_{i=1}^{N} w_{<%s(2#phi_{1}-#phi_{2})>}",sinCosFlag[sc].Data()));
0328db2d 2408 } else if(power == 1)
2409 {
2410 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(1,Form("#sum_{i=1}^{N} w_{<%s(#phi)>}^{2}",sinCosFlag[sc].Data()));
2411 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(2,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}+#phi_{2})>}^{2}",sinCosFlag[sc].Data()));
2412 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].Data()));
b92ea2b9 2413 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(4,Form("#sum_{i=1}^{N} w_{<%s(2#phi_{1}-#phi_{2})>}^{2}",sinCosFlag[sc].Data()));
0328db2d 2414 }
2415 fIntFlowResults->Add(fIntFlowSumOfEventWeightsNUA[sc][power]);
2416 }
2417 }
2418 // sum of products of event weights for NUA terms:
2419 TString intFlowSumOfProductOfEventWeightsNUAName = "fIntFlowSumOfProductOfEventWeightsNUA";
2420 intFlowSumOfProductOfEventWeightsNUAName += fAnalysisLabel->Data();
2421 fIntFlowSumOfProductOfEventWeightsNUA = new TH1D(intFlowSumOfProductOfEventWeightsNUAName.Data(),"Sum of product of event weights for NUA terms",27,0,27);
403e3389 2422 fIntFlowSumOfProductOfEventWeightsNUA->SetLabelSize(0.02);
0328db2d 2423 fIntFlowSumOfProductOfEventWeightsNUA->SetMarkerStyle(25);
62e36168 2424 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi)#GT}");
2425 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi)#GT}");
2426 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi)#GT}");
2427 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2428 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(5,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2429 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(6,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2430 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(7,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2431 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(8,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi)#GT}");
2432 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(9,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi)#GT}");
2433 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(10,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2434 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(11,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2435 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(12,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2436 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(13,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2437 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(14,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2438 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(15,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2439 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(16,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2440 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(17,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2441 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(18,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2442 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(19,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2443 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(20,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2444 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(21,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2445 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(22,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2446 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(23,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2447 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(24,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2448 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(25,"#sum_{i=1}^{N} w_{#LTsin(#phi_{1}+#phi_{2})#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2449 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(26,"#sum_{i=1}^{N} w_{#LTsin(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2450 (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 2451 fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeightsNUA);
b3dacf6b 2452 // Final results for reference Q-cumulants:
2453 TString cumulantFlag[4] = {"QC{2}","QC{4}","QC{6}","QC{8}"};
489d5531 2454 TString intFlowQcumulantsName = "fIntFlowQcumulants";
2455 intFlowQcumulantsName += fAnalysisLabel->Data();
b92ea2b9 2456 fIntFlowQcumulants = new TH1D(intFlowQcumulantsName.Data(),"Reference Q-cumulants",4,0,4);
b77b6434 2457 if(fPropagateErrorAlsoFromNIT)
b92ea2b9 2458 {
b77b6434 2459 fIntFlowQcumulants->SetTitle("Reference Q-cumulants (error from non-isotropic terms also propagated)");
b92ea2b9 2460 }
489d5531 2461 fIntFlowQcumulants->SetLabelSize(0.05);
2462 fIntFlowQcumulants->SetMarkerStyle(25);
68a3b4b1 2463 for(Int_t b=0;b<4;b++)
b3dacf6b 2464 {
68a3b4b1 2465 (fIntFlowQcumulants->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
b3dacf6b 2466 }
489d5531 2467 fIntFlowResults->Add(fIntFlowQcumulants);
b3dacf6b 2468 // Final results for reference Q-cumulants rebinned in M:
2469 if(fCalculateCumulantsVsM)
2470 {
2471 TString intFlowQcumulantsRebinnedInMName = "fIntFlowQcumulantsRebinnedInM";
2472 intFlowQcumulantsRebinnedInMName += fAnalysisLabel->Data();
2473 fIntFlowQcumulantsRebinnedInM = new TH1D(intFlowQcumulantsRebinnedInMName.Data(),"Reference Q-cumulants rebinned in M",4,0,4);
2474 fIntFlowQcumulantsRebinnedInM->SetLabelSize(0.05);
2475 fIntFlowQcumulantsRebinnedInM->SetMarkerStyle(25);
68a3b4b1 2476 for(Int_t b=0;b<4;b++)
b3dacf6b 2477 {
68a3b4b1 2478 (fIntFlowQcumulantsRebinnedInM->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
b3dacf6b 2479 }
2480 fIntFlowResults->Add(fIntFlowQcumulantsRebinnedInM);
2481 } // end of if(fCalculateCumulantsVsM)
b92ea2b9 2482 // Ratio between error squared: with/without non-isotropic terms:
2483 TString intFlowQcumulantsErrorSquaredRatioName = "fIntFlowQcumulantsErrorSquaredRatio";
2484 intFlowQcumulantsErrorSquaredRatioName += fAnalysisLabel->Data();
2485 fIntFlowQcumulantsErrorSquaredRatio = new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
2486 fIntFlowQcumulantsErrorSquaredRatio->SetLabelSize(0.05);
2487 fIntFlowQcumulantsErrorSquaredRatio->SetMarkerStyle(25);
2488 for(Int_t b=0;b<4;b++)
2489 {
2490 (fIntFlowQcumulantsErrorSquaredRatio->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
2491 }
2492 fIntFlowResults->Add(fIntFlowQcumulantsErrorSquaredRatio);
ff70ca91 2493 // final results for integrated Q-cumulants versus multiplicity:
b3dacf6b 2494 if(fCalculateCumulantsVsM)
2495 {
2496 TString intFlowQcumulantsVsMName = "fIntFlowQcumulantsVsM";
2497 intFlowQcumulantsVsMName += fAnalysisLabel->Data();
2498 for(Int_t co=0;co<4;co++) // cumulant order
2499 {
2500 fIntFlowQcumulantsVsM[co] = new TH1D(Form("%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
2501 Form("%s vs multipicity",cumulantFlag[co].Data()),
2502 fnBinsMult,fMinMult,fMaxMult);
2503 fIntFlowQcumulantsVsM[co]->GetXaxis()->SetTitle("M");
2504 fIntFlowQcumulantsVsM[co]->GetYaxis()->SetTitle(cumulantFlag[co].Data());
2505 fIntFlowResults->Add(fIntFlowQcumulantsVsM[co]);
2506 } // end of for(Int_t co=0;co<4;co++) // cumulant order
2507 } // end of if(fCalculateCumulantsVsM)
489d5531 2508 // final integrated flow estimates from Q-cumulants:
b3dacf6b 2509 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 2510 TString intFlowName = "fIntFlow";
2511 intFlowName += fAnalysisLabel->Data();
2512 // integrated flow from Q-cumulants:
b3dacf6b 2513 fIntFlow = new TH1D(intFlowName.Data(),"Reference flow estimates from Q-cumulants",4,0,4);
489d5531 2514 fIntFlow->SetLabelSize(0.05);
2515 fIntFlow->SetMarkerStyle(25);
68a3b4b1 2516 for(Int_t b=0;b<4;b++)
b3dacf6b 2517 {
68a3b4b1 2518 (fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].Data());
b3dacf6b 2519 }
ff70ca91 2520 fIntFlowResults->Add(fIntFlow);
b3dacf6b 2521 // Reference flow vs M rebinned in one huge bin:
2522 if(fCalculateCumulantsVsM)
2523 {
2524 TString intFlowRebinnedInMName = "fIntFlowRebinnedInM";
2525 intFlowRebinnedInMName += fAnalysisLabel->Data();
2526 fIntFlowRebinnedInM = new TH1D(intFlowRebinnedInMName.Data(),"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
2527 fIntFlowRebinnedInM->SetLabelSize(0.05);
2528 fIntFlowRebinnedInM->SetMarkerStyle(25);
68a3b4b1 2529 for(Int_t b=0;b<4;b++)
b3dacf6b 2530 {
68a3b4b1 2531 (fIntFlowRebinnedInM->GetXaxis())->SetBinLabel(b+1,flowFlag[b].Data());
b3dacf6b 2532 }
2533 fIntFlowResults->Add(fIntFlowRebinnedInM);
2534 }
ff70ca91 2535 // integrated flow from Q-cumulants: versus multiplicity:
b3dacf6b 2536 if(fCalculateCumulantsVsM)
2537 {
2538 TString intFlowVsMName = "fIntFlowVsM";
2539 intFlowVsMName += fAnalysisLabel->Data();
2540 for(Int_t co=0;co<4;co++) // cumulant order
2541 {
2542 fIntFlowVsM[co] = new TH1D(Form("%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
2543 Form("%s vs multipicity",flowFlag[co].Data()),
2544 fnBinsMult,fMinMult,fMaxMult);
2545 fIntFlowVsM[co]->GetXaxis()->SetTitle("M");
2546 fIntFlowVsM[co]->GetYaxis()->SetTitle(flowFlag[co].Data());
2547 fIntFlowResults->Add(fIntFlowVsM[co]);
2548 } // end of for(Int_t co=0;co<4;co++) // cumulant order
2549 } // end of if(fCalculateCumulantsVsM)
2001bc3a 2550 // quantifying detector effects effects to correlations:
2551 TString intFlowDetectorBiasName = "fIntFlowDetectorBias";
2552 intFlowDetectorBiasName += fAnalysisLabel->Data();
2553 fIntFlowDetectorBias = new TH1D(intFlowDetectorBiasName.Data(),"Quantifying detector bias",4,0,4);
2554 fIntFlowDetectorBias->SetLabelSize(0.05);
2555 fIntFlowDetectorBias->SetMarkerStyle(25);
2556 for(Int_t ci=0;ci<4;ci++)
2557 {
2558 (fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form("#frac{corrected}{measured} %s",cumulantFlag[ci].Data()));
2559 }
2560 fIntFlowResults->Add(fIntFlowDetectorBias);
2561 // quantifying detector effects to correlations versus multiplicity:
b3dacf6b 2562 if(fCalculateCumulantsVsM)
2001bc3a 2563 {
b3dacf6b 2564 TString intFlowDetectorBiasVsMName = "fIntFlowDetectorBiasVsM";
2565 intFlowDetectorBiasVsMName += fAnalysisLabel->Data();
2566 for(Int_t ci=0;ci<4;ci++) // correlation index
2567 {
2568 fIntFlowDetectorBiasVsM[ci] = new TH1D(Form("%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
2569 Form("Quantifying detector bias for %s vs multipicity",cumulantFlag[ci].Data()),
2570 fnBinsMult,fMinMult,fMaxMult);
2571 fIntFlowDetectorBiasVsM[ci]->GetXaxis()->SetTitle("M");
2572 fIntFlowDetectorBiasVsM[ci]->GetYaxis()->SetTitle("#frac{corrected}{measured}");
b77b6434 2573 fIntFlowResults->Add(fIntFlowDetectorBiasVsM[ci]);
b3dacf6b 2574 } // end of for(Int_t co=0;co<4;co++) // cumulant order
2575 } // end of if(fCalculateCumulantsVsM)
1268c371 2576
489d5531 2577} // end of AliFlowAnalysisWithQCumulants::BookEverythingForIntegratedFlow()
2578
e1d101a6 2579//=======================================================================================================================
2580
2581void AliFlowAnalysisWithQCumulants::BookEverythingForMixedHarmonics()
2582{
2583 // Book all objects for mixed harmonics.
2584
2585 // a) Book profile to hold all flags for mixed harmonics;
2586 // b) Book all objects in TList fMixedHarmonicsProfiles;
c10259fb 2587 // c) Book all objects in TList fMixedHarmonicsResults;
2588 // d) Book all objects in TList fMixedHarmonicsErrorPropagation.
e1d101a6 2589
2590 // a) Book profile to hold all flags for mixed harmonics:
2591 TString mixedHarmonicsFlagsName = "fMixedHarmonicsFlags";
2592 mixedHarmonicsFlagsName += fAnalysisLabel->Data();
2593 fMixedHarmonicsFlags = new TProfile(mixedHarmonicsFlagsName.Data(),"Flags for Mixed Harmonics",4,0,4);
2594 fMixedHarmonicsFlags->SetTickLength(-0.01,"Y");
2595 fMixedHarmonicsFlags->SetMarkerStyle(25);
2596 fMixedHarmonicsFlags->SetLabelSize(0.04);
2597 fMixedHarmonicsFlags->SetLabelOffset(0.02,"Y");
2598 fMixedHarmonicsFlags->SetStats(kFALSE);
2599 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(1,"Calculate Mixed Harmonics");
2600 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(2,"Generic Harmonic");
2601 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(3,"Calculate vs Multiplicity");
2602 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(4,"Multiplicity Weight");
2603 fMixedHarmonicsList->Add(fMixedHarmonicsFlags);
2604
2605 if(!fCalculateMixedHarmonics){return;}
2606
2607 // b) Book all objects in TList fMixedHarmonicsProfiles:
2608 // b1) 2-p correlations:
2609 TString s2pCorrelationsName = "f2pCorrelations";
2610 s2pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2611 f2pCorrelations = new TProfile(s2pCorrelationsName.Data(),Form("2-particle correlations (n = %d)",fHarmonic),6,0,6,"s");
e1d101a6 2612 f2pCorrelations->SetTickLength(-0.01,"Y");
2613 f2pCorrelations->SetMarkerStyle(25);
2614 f2pCorrelations->SetLabelSize(0.04);
2615 f2pCorrelations->SetLabelOffset(0.02,"Y");
2616 f2pCorrelations->SetStats(kFALSE);
2617 f2pCorrelations->Sumw2();
2618 f2pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
2619 f2pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
2620 f2pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
2621 f2pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
2622 f2pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
2623 f2pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
2624 fMixedHarmonicsProfiles->Add(f2pCorrelations);
2625 // b2) 3-p correlations (3+6):
2626 TString s3pCorrelationsName = "f3pCorrelations";
2627 s3pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2628 f3pCorrelations = new TProfile(s3pCorrelationsName.Data(),Form("3-particle correlations (n = %d)",fHarmonic),10,0,10,"s");
e1d101a6 2629 f3pCorrelations->SetTickLength(-0.01,"Y");
2630 f3pCorrelations->SetMarkerStyle(25);
2631 f3pCorrelations->SetLabelSize(0.04);
2632 f3pCorrelations->SetLabelOffset(0.02,"Y");
2633 f3pCorrelations->SetStats(kFALSE);
2634 f3pCorrelations->Sumw2();
2635 // 3-p correlations sensitive to two distinct harmonics (3):
2636 f3pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
2637 f3pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
2638 f3pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
2639 f3pCorrelations->GetXaxis()->SetBinLabel(4,""); // empty
2640 // 3-p correlations sensitive to three distinct harmonics (6):
2641 f3pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
2642 f3pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
2643 f3pCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
2644 f3pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
2645 f3pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
2646 f3pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
2647 fMixedHarmonicsProfiles->Add(f3pCorrelations);
2648 // b3) 4-p correlations (6+15+2+10+8):
2649 TString s4pCorrelationsName = "f4pCorrelations";
2650 s4pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2651 f4pCorrelations = new TProfile(s4pCorrelationsName.Data(),Form("4-particle correlations (n = %d)",fHarmonic),45,0,45,"s");
e1d101a6 2652 f4pCorrelations->SetTickLength(-0.01,"Y");
2653 f4pCorrelations->SetMarkerStyle(25);
2654 f4pCorrelations->SetLabelSize(0.03);
2655 f4pCorrelations->SetLabelOffset(0.02,"Y");
2656 f4pCorrelations->SetStats(kFALSE);
2657 f4pCorrelations->Sumw2();
2658 // "same harmonic" (6):
2659 f4pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2660 f4pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2661 f4pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2662 f4pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
2663 f4pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
2664 f4pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
2665 f4pCorrelations->GetXaxis()->SetBinLabel(7,""); // empty
2666 // "standard candles" (15):
2667 f4pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
2668 f4pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
2669 f4pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
2670 f4pCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
2671 f4pCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
2672 f4pCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
2673 f4pCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
2674 f4pCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
2675 f4pCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
2676 f4pCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
2677 f4pCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
2678 f4pCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
2679 f4pCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
2680 f4pCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
2681 f4pCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
2682 f4pCorrelations->GetXaxis()->SetBinLabel(23,""); // empty
2683 // 4-p correlations sensitive to two distinct harmonics (2):
2684 f4pCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2685 f4pCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2686 f4pCorrelations->GetXaxis()->SetBinLabel(26,""); // empty
2687 // 4-p correlations sensitive to three distinct harmonics (10):
2688 f4pCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
2689 f4pCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2690 f4pCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
2691 f4pCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2692 f4pCorrelations->GetXaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2693 f4pCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
2694 f4pCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
2695 f4pCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2696 f4pCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
2697 f4pCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
2698 f4pCorrelations->GetXaxis()->SetBinLabel(37,""); // empty
2699 // 4-p correlations sensitive to four distinct harmonics (8):
2700 f4pCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
2701 f4pCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
2702 f4pCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
2703 f4pCorrelations->GetXaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
2704 f4pCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
2705 f4pCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2706 f4pCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
2707 f4pCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
2708 fMixedHarmonicsProfiles->Add(f4pCorrelations);
2709 // b3) 5-p correlations (30+9+30+11+3):
2710 TString s5pCorrelationsName = "f5pCorrelations";
2711 s5pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2712 f5pCorrelations = new TProfile(s5pCorrelationsName.Data(),Form("5-particle correlations (n = %d)",fHarmonic),87,0,87,"s");
e1d101a6 2713 f5pCorrelations->SetTickLength(-0.01,"Y");
2714 f5pCorrelations->SetMarkerStyle(25);
2715 f5pCorrelations->SetLabelSize(0.02);
2716 f5pCorrelations->SetLabelOffset(0.02,"Y");
2717 f5pCorrelations->SetStats(kFALSE);
2718 f5pCorrelations->Sumw2();
2719 // "standard candles" (30):
2720 f5pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2721 f5pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2722 f5pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2723 f5pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2724 f5pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2725 f5pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2726 f5pCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2727 f5pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
2728 f5pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2729 f5pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2730 f5pCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
2731 f5pCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
2732 f5pCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
2733 f5pCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
2734 f5pCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2735 f5pCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2736 f5pCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2737 f5pCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
2738 f5pCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
2739 f5pCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
2740 f5pCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
2741 f5pCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
2742 f5pCorrelations->GetXaxis()->SetBinLabel(23,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
2743 f5pCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
2744 f5pCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
2745 f5pCorrelations->GetXaxis()->SetBinLabel(26,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
2746 f5pCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
2747 f5pCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
2748 f5pCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
2749 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 2750 f5pCorrelations->GetXaxis()->SetBinLabel(31,""); // empty
e1d101a6 2751 // 5-p correlations sensitive to two distinct harmonics (9):
2752 f5pCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2753 f5pCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2754 f5pCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2755 f5pCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2756 f5pCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2757 f5pCorrelations->GetXaxis()->SetBinLabel(37,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2758 f5pCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2759 f5pCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
2760 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 2761 f5pCorrelations->GetXaxis()->SetBinLabel(41,""); // empty
e1d101a6 2762 // 5-p correlations sensitive to three distinct harmonics (30):
2763 f5pCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2764 f5pCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2765 f5pCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2766 f5pCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2767 f5pCorrelations->GetXaxis()->SetBinLabel(46,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
2768 f5pCorrelations->GetXaxis()->SetBinLabel(47,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2769 f5pCorrelations->GetXaxis()->SetBinLabel(48,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2770 f5pCorrelations->GetXaxis()->SetBinLabel(49,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2771 f5pCorrelations->GetXaxis()->SetBinLabel(50,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2772 f5pCorrelations->GetXaxis()->SetBinLabel(51,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2773 f5pCorrelations->GetXaxis()->SetBinLabel(52,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2774 f5pCorrelations->GetXaxis()->SetBinLabel(53,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2775 f5pCorrelations->GetXaxis()->SetBinLabel(54,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2776 f5pCorrelations->GetXaxis()->SetBinLabel(55,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2777 f5pCorrelations->GetXaxis()->SetBinLabel(56,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
2778 f5pCorrelations->GetXaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
2779 f5pCorrelations->GetXaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
2780 f5pCorrelations->GetXaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
2781 f5pCorrelations->GetXaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
2782 f5pCorrelations->GetXaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2783 f5pCorrelations->GetXaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2784 f5pCorrelations->GetXaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
2785 f5pCorrelations->GetXaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
2786 f5pCorrelations->GetXaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2787 f5pCorrelations->GetXaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
2788 f5pCorrelations->GetXaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
2789 f5pCorrelations->GetXaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
2790 f5pCorrelations->GetXaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
2791 f5pCorrelations->GetXaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
2792 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 2793 f5pCorrelations->GetXaxis()->SetBinLabel(72,""); // empty
e1d101a6 2794 // 5-p correlations sensitive to four distinct harmonics (11):
2795 f5pCorrelations->GetXaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2796 f5pCorrelations->GetXaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
2797 f5pCorrelations->GetXaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2798 f5pCorrelations->GetXaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
2799 f5pCorrelations->GetXaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2800 f5pCorrelations->GetXaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
2801 f5pCorrelations->GetXaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
2802 f5pCorrelations->GetXaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
2803 f5pCorrelations->GetXaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
2804 f5pCorrelations->GetXaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
2805 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 2806 f5pCorrelations->GetXaxis()->SetBinLabel(84,""); // empty
e1d101a6 2807 // 5-p correlations sensitive to five distinct harmonics (3):
2808 f5pCorrelations->GetXaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2809 f5pCorrelations->GetXaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
2810 f5pCorrelations->GetXaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
2811 fMixedHarmonicsProfiles->Add(f5pCorrelations);
2812 // b4) 6-p correlations (??+??+??+??+??):
2813 TString s6pCorrelationsName = "f6pCorrelations";
2814 s6pCorrelationsName += fAnalysisLabel->Data();
2815 f6pCorrelations = new TProfile(s6pCorrelationsName.Data(),Form("6-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2816 f6pCorrelations->SetTickLength(-0.01,"Y");
2817 f6pCorrelations->SetMarkerStyle(25);
2818 f6pCorrelations->SetLabelSize(0.02);
2819 f6pCorrelations->SetLabelOffset(0.02,"Y");
2820 f6pCorrelations->SetStats(kFALSE);
2821 f6pCorrelations->Sumw2();
2822 //fMixedHarmonicsProfiles->Add(f6pCorrelations); // TBI
2823 // b5) 7-p correlations (??+??+??+??+??):
2824 TString s7pCorrelationsName = "f7pCorrelations";
2825 s7pCorrelationsName += fAnalysisLabel->Data();
2826 f7pCorrelations = new TProfile(s7pCorrelationsName.Data(),Form("7-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2827 f7pCorrelations->SetTickLength(-0.01,"Y");
2828 f7pCorrelations->SetMarkerStyle(25);
2829 f7pCorrelations->SetLabelSize(0.02);
2830 f7pCorrelations->SetLabelOffset(0.02,"Y");
2831 f7pCorrelations->SetStats(kFALSE);
2832 f7pCorrelations->Sumw2();
2833 //fMixedHarmonicsProfiles->Add(f7pCorrelations); // TBI
2834 // b6) 8-p correlations (??+??+??+??+??):
2835 TString s8pCorrelationsName = "f8pCorrelations";
2836 s8pCorrelationsName += fAnalysisLabel->Data();
2837 f8pCorrelations = new TProfile(s8pCorrelationsName.Data(),Form("8-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2838 f8pCorrelations->SetTickLength(-0.01,"Y");
2839 f8pCorrelations->SetMarkerStyle(25);
2840 f8pCorrelations->SetLabelSize(0.02);
2841 f8pCorrelations->SetLabelOffset(0.02,"Y");
2842 f8pCorrelations->SetStats(kFALSE);
2843 f8pCorrelations->Sumw2();
2844 //fMixedHarmonicsProfiles->Add(f8pCorrelations); // TBI
2845
2846 // c) Book all objects in TList fMixedHarmonicsResults:
2847 // QC{2}:
2848 f2pCumulants = f2pCorrelations->ProjectionX("f2pCumulants");
2849 f2pCumulants->SetTitle(Form("2-particle cumulants (n = %d)",fHarmonic));
2850 f2pCumulants->SetStats(kFALSE);
2851 f2pCumulants->SetMarkerStyle(kFullSquare);
2852 f2pCumulants->SetMarkerColor(kBlack);
2853 f2pCumulants->SetLineColor(kBlack);
2854 fMixedHarmonicsResults->Add(f2pCumulants);
2855 // QC{3}:
2856 f3pCumulants = f3pCorrelations->ProjectionX("f3pCumulants");
2857 f3pCumulants->SetTitle(Form("3-particle cumulants (n = %d)",fHarmonic));
2858 f3pCumulants->SetStats(kFALSE);
2859 f3pCumulants->SetMarkerStyle(kFullSquare);
2860 f3pCumulants->SetMarkerColor(kGreen+2);
2861 f3pCumulants->SetLineColor(kGreen+2);
2862 fMixedHarmonicsResults->Add(f3pCumulants);
2863 // QC{4}:
2864 f4pCumulants = f4pCorrelations->ProjectionX("f4pCumulants");
2865 f4pCumulants->SetTitle(Form("4-particle cumulants (n = %d)",fHarmonic));
2866 f4pCumulants->SetStats(kFALSE);
2867 f4pCumulants->SetMarkerStyle(kFullSquare);
2868 f4pCumulants->SetMarkerColor(kRed);
2869 f4pCumulants->SetLineColor(kRed);
2870 fMixedHarmonicsResults->Add(f4pCumulants);
2871 // QC{5}:
2872 f5pCumulants = f5pCorrelations->ProjectionX("f5pCumulants");
2873 f5pCumulants->SetTitle(Form("5-particle cumulants (n = %d)",fHarmonic));
2874 f5pCumulants->SetStats(kFALSE);
2875 f5pCumulants->SetMarkerStyle(kFullSquare);
2876 f5pCumulants->SetMarkerColor(kBlue);
2877 f5pCumulants->SetLineColor(kBlue);
2878 fMixedHarmonicsResults->Add(f5pCumulants);
2879
c10259fb 2880 // d) Book all objects in TList fMixedHarmonicsErrorPropagation:
2881 // Sum of linear and quadratic event weights for mixed harmonics => [0=linear 1,1=quadratic]:
2882 TString mixedHarmonicEventWeightsName = "fMixedHarmonicEventWeights";
2883 mixedHarmonicEventWeightsName += fAnalysisLabel->Data();
2884 TString powerFlag[2] = {"linear","quadratic"};
2885 for(Int_t power=0;power<2;power++)
2886 {
2887 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.);
2888 fMixedHarmonicEventWeights[power]->SetLabelSize(0.04);
2889 fMixedHarmonicEventWeights[power]->SetMarkerStyle(25);
2890 fMixedHarmonicEventWeights[power]->SetStats(kFALSE);
2891 if(power == 0)
2892 {
2893 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum w_{#LT1#GT}");
2894 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum w_{#LT2#GT}");
2895 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum w_{#LT3#GT}");
2896 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum w_{#LT4#GT}");
2897 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(5,"#sum w_{#LT5#GT}");
2898 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(6,"#sum w_{#LT6#GT}");
2899 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(7,"#sum w_{#LT7#GT}");
2900 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(8,"#sum w_{#LT8#GT}");
2901 } else if (power == 1)
2902 {
2903 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum w_{#LT1#GT}^{2}");
2904 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum w_{#LT2#GT}^{2}");
2905 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum w_{#LT3#GT}^{2}");
2906 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum w_{#LT4#GT}^{2}");
2907 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(5,"#sum w_{#LT5#GT}^{2}");
2908 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(6,"#sum w_{#LT6#GT}^{2}");
2909 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(7,"#sum w_{#LT7#GT}^{2}");
2910 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(8,"#sum w_{#LT8#GT}^{2}");
2911 }
2912 fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicEventWeights[power]);
2913 } // end of for(Int_t power=0;power<2;power++)
2914
2915 // Sums of products of event weights for mixed harmonics:
2916 TString mixedHarmonicProductOfEventWeightsName = "fMixedHarmonicProductOfEventWeights";
2917 mixedHarmonicProductOfEventWeightsName += fAnalysisLabel->Data();
2918 fMixedHarmonicProductOfEventWeights = new TH2D(mixedHarmonicProductOfEventWeightsName.Data(),"Sums of products of event weights",8,0.,8.,8,0.,8.);
2919 fMixedHarmonicProductOfEventWeights->SetStats(kFALSE);
2920 fMixedHarmonicProductOfEventWeights->GetXaxis()->SetLabelSize(0.05);
2921 fMixedHarmonicProductOfEventWeights->GetYaxis()->SetLabelSize(0.05);
2922 for(Int_t b=1;b<=8;b++)
2923 {
2924 fMixedHarmonicProductOfEventWeights->GetXaxis()->SetBinLabel(b,Form("w_{#LT%i#GT}",b));
2925 fMixedHarmonicProductOfEventWeights->GetYaxis()->SetBinLabel(b,Form("w_{#LT%i#GT}",b));
2926 }
2927 fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicProductOfEventWeights);
2928
2929 // Averages of products of mixed harmonics correlations:
2930 TString mixedHarmonicProductOfCorrelationsName = "fMixedHarmonicProductOfCorrelations";
2931 mixedHarmonicProductOfCorrelationsName += fAnalysisLabel->Data();
2932 fMixedHarmonicProductOfCorrelations = new TProfile2D(mixedHarmonicProductOfCorrelationsName.Data(),"Averages of products of mixed correlators",139,0.,139.,139,0.,139.);
2933 fMixedHarmonicProductOfCorrelations->Sumw2();
2934 fMixedHarmonicProductOfCorrelations->SetStats(kFALSE);
2935 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetLabelSize(0.015);
2936 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetLabelSize(0.015);
2937 // x-axis:
2938 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
2939 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
2940 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
2941 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
2942 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
2943 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
2944 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
2945 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
2946 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
2947 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
2948 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
2949 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
2950 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
2951 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
2952 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
2953 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2954 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2955 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2956 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
2957 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
2958 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
2959 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
2960 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(23,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
2961 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
2962 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
2963 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(26,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
2964 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
2965 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
2966 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
2967 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
2968 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
2969 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
2970 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
2971 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
2972 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
2973 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
2974 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(37,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2975 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2976 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
2977 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2978 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
2979 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2980 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2981 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
2982 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
2983 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(46,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2984 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(47,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
2985 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(48,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
2986 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(49,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
2987 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(50,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
2988 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(51,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
2989 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(52,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
2990 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(53,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
2991 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(54,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2992 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(55,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
2993 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(56,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
2994 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2995 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2996 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2997 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2998 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2999 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3000 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3001 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3002 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3003 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3004 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3005 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3006 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3007 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3008 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3009 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(72,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3010 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3011 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3012 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3013 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3014 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3015 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3016 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
3017 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
3018 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
3019 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
3020 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
3021 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(84,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
3022 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
3023 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
3024 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3025 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(88,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3026 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(89,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3027 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(90,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3028 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(91,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3029 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(92,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3030 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(93,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3031 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(94,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3032 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(95,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
3033 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(96,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3034 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(97,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3035 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(98,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3036 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(99,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3037 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(100,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3038 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(101,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3039 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(102,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3040 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(103,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3041 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(104,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3042 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(105,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3043 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(106,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3044 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(107,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3045 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(108,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3046 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(109,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3047 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(110,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3048 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(111,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3049 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(112,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3050 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(113,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3051 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(114,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3052 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(115,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3053 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(116,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3054 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(117,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3055 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(118,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3056 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(119,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3057 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(120,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3058 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(121,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
3059 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(122,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
3060 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(123,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
3061 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(124,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
3062 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(125,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
3063 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(126,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3064 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(127,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3065 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(128,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3066 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(129,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3067 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(130,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3068 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(131,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3069 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(132,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
3070 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(133,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3071 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(134,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
3072 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(135,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
3073 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(136,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
3074 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(137,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3075 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(138,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
3076 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(139,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3077 // y-axis:
3078 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
3079 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
3080 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
3081 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
3082 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
3083 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
3084 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
3085 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
3086 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
3087 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
3088 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(11,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
3089 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(12,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
3090 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(13,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
3091 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(14,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
3092 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(15,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
3093 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3094 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3095 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3096 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3097 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
3098 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
3099 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
3100 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(23,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
3101 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
3102 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
3103 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(26,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
3104 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
3105 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
3106 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
3107 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
3108 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
3109 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
3110 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
3111 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
3112 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
3113 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
3114 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(37,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3115 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3116 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
3117 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3118 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
3119 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3120 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3121 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3122 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
3123 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(46,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3124 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(47,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
3125 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(48,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
3126 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(49,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
3127 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(50,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
3128 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(51,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
3129 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(52,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3130 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(53,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
3131 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(54,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3132 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(55,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
3133 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(56,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
3134 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3135 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3136 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3137 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3138 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3139 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3140 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3141 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3142 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3143 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3144 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3145 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3146 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3147 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3148 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3149 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(72,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3150 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3151 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3152 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3153 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3154 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3155 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3156 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
3157 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
3158 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
3159 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
3160 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
3161 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(84,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
3162 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
3163 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
3164 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3165 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(88,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3166 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(89,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3167 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(90,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3168 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(91,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3169 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(92,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3170 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(93,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3171 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(94,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3172 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(95,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
3173 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(96,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3174 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(97,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3175 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(98,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3176 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(99,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3177 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(100,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3178 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(101,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3179 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(102,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3180 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(103,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3181 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(104,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3182 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(105,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3183 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(106,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3184 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(107,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3185 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(108,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3186 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(109,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3187 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(110,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3188 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(111,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3189 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(112,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3190 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(113,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3191 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(114,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3192 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(115,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3193 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(116,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3194 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(117,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3195 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(118,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3196 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(119,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3197 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(120,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3198 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(121,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
3199 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(122,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
3200 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(123,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
3201 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(124,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
3202 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(125,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
3203 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(126,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3204 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(127,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3205 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(128,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3206 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(129,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3207 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(130,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3208 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(131,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3209 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(132,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
3210 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(133,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3211 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(134,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
3212 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(135,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
3213 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(136,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
3214 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(137,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3215 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(138,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
3216 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(139,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3217 fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicProductOfCorrelations);
3218
e1d101a6 3219} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForMixedHarmonics()
3220
3221//=======================================================================================================================
489d5531 3222
489d5531 3223void AliFlowAnalysisWithQCumulants::InitializeArraysForNestedLoops()
3224{
3225 // Initialize arrays of all objects relevant for calculations with nested loops.
3226
3227 // integrated flow:
3228 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3229 {
3230 fIntFlowDirectCorrectionTermsForNUA[sc] = NULL;
3231 }
3232
3233 // differential flow:
3234 // correlations:
3235 for(Int_t t=0;t<2;t++) // type: RP or POI
3236 {
3237 for(Int_t pe=0;pe<2;pe++) // pt or eta
3238 {
3239 for(Int_t ci=0;ci<4;ci++) // correlation index
3240 {
3241 fDiffFlowDirectCorrelations[t][pe][ci] = NULL;
3242 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
3243 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3244 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
3245 // correction terms for non-uniform acceptance:
3246 for(Int_t t=0;t<2;t++) // type: RP or POI
3247 {
3248 for(Int_t pe=0;pe<2;pe++) // pt or eta
3249 {
3250 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3251 {
3252 for(Int_t cti=0;cti<9;cti++) // correction term index
3253 {
3254 fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] = NULL;
3255 }
3256 }
3257 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3258 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
3259
64e500e3 3260 // other differential correlators:
3261 for(Int_t t=0;t<2;t++) // type: RP or POI
3262 {
3263 for(Int_t pe=0;pe<2;pe++) // pt or eta
3264 {
3265 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3266 {
3267 for(Int_t ci=0;ci<1;ci++) // correlator index
3268 {
3269 fOtherDirectDiffCorrelators[t][pe][sc][ci] = NULL;
3270 }
3271 }
3272 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3273 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
489d5531 3274
3275} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForNestedLoops()
3276
e1d101a6 3277//=======================================================================================================================
489d5531 3278
c10259fb 3279void AliFlowAnalysisWithQCumulants::InitializeArraysForMixedHarmonics()
3280{
3281 // Initialize arrays of all objects relevant for mixed harmonics.
3282
3283 for(Int_t power=0;power<2;power++) // linear or quadratic
3284 {
3285 fMixedHarmonicEventWeights[power] = NULL;
3286 }
3287
3288} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForMixedHarmonics()
3289
3290//=======================================================================================================================
3291
489d5531 3292void AliFlowAnalysisWithQCumulants::BookEverythingForNestedLoops()
3293{
3294 // Book all objects relevant for calculations with nested loops.
3295
3296 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
3297 TString typeFlag[2] = {"RP","POI"}; // to be improved (should I promote this to data members?)
3298 TString ptEtaFlag[2] = {"p_{T}","#eta"}; // to be improved (should I promote this to data members?)
3299 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"}; // to be improved (should I promote this to data members?)
3300 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
3301 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
3302
3303 TString evaluateNestedLoopsName = "fEvaluateNestedLoops";
3304 evaluateNestedLoopsName += fAnalysisLabel->Data();
3305 fEvaluateNestedLoops = new TProfile(evaluateNestedLoopsName.Data(),"Flags for nested loops",4,0,4);
3306 fEvaluateNestedLoops->SetLabelSize(0.03);
e1d101a6 3307 fEvaluateNestedLoops->SetStats(kFALSE);
489d5531 3308 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(1,"fEvaluateIntFlowNestedLoops");
3309 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(2,"fEvaluateDiffFlowNestedLoops");
3310 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(3,"fCrossCheckInPtBinNo");
3311 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(4,"fCrossCheckInEtaBinNo");
3312 fEvaluateNestedLoops->Fill(0.5,(Int_t)fEvaluateIntFlowNestedLoops);
3313 fEvaluateNestedLoops->Fill(1.5,(Int_t)fEvaluateDiffFlowNestedLoops);
3314 fEvaluateNestedLoops->Fill(2.5,fCrossCheckInPtBinNo);
3315 fEvaluateNestedLoops->Fill(3.5,fCrossCheckInEtaBinNo);
3316 fNestedLoopsList->Add(fEvaluateNestedLoops);
3317 // nested loops for integrated flow:
3318 if(fEvaluateIntFlowNestedLoops)
3319 {
3320 // correlations:
3321 TString intFlowDirectCorrelationsName = "fIntFlowDirectCorrelations";
3322 intFlowDirectCorrelationsName += fAnalysisLabel->Data();
403e3389 3323 fIntFlowDirectCorrelations = new TProfile(intFlowDirectCorrelationsName.Data(),"Multiparticle correlations calculated with nested loops (for int. flow)",64,0,64,"s");
489d5531 3324 fNestedLoopsList->Add(fIntFlowDirectCorrelations);
403e3389 3325 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 3326 {
3327 TString intFlowExtraDirectCorrelationsName = "fIntFlowExtraDirectCorrelations";
3328 intFlowExtraDirectCorrelationsName += fAnalysisLabel->Data();
3329 fIntFlowExtraDirectCorrelations = new TProfile(intFlowExtraDirectCorrelationsName.Data(),"Extra multiparticle correlations calculated with nested loops (for int. flow)",100,0,100,"s");
3330 fNestedLoopsList->Add(fIntFlowExtraDirectCorrelations);
403e3389 3331 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 3332 // correction terms for non-uniform acceptance:
3333 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3334 {
3335 TString intFlowDirectCorrectionTermsForNUAName = "fIntFlowDirectCorrectionTermsForNUA";
3336 intFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
3337 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");
3338 fNestedLoopsList->Add(fIntFlowDirectCorrectionTermsForNUA[sc]);
3339 } // end of for(Int_t sc=0;sc<2;sc++)
e1d101a6 3340 // Mixed harmonics:
3341 if(fCalculateMixedHarmonics)
3342 {
3343 TString mixedHarmonicsNestedLoopsName = "fMixedHarmonicsNestedLoops";
3344 mixedHarmonicsNestedLoopsName += fAnalysisLabel->Data();
3345 fMixedHarmonicsNestedLoops = new TProfile(mixedHarmonicsNestedLoopsName.Data(),"Mixed harmonics calculated with nested loops",200,0,200); // TBI hardwired 200
3346 fNestedLoopsList->Add(fMixedHarmonicsNestedLoops);
3347 } // end of if(fCalculateMixedHarmonics)
489d5531 3348 } // end of if(fEvaluateIntFlowNestedLoops)
3349
3350 // nested loops for differential flow:
3351 if(fEvaluateDiffFlowNestedLoops)
3352 {
3353 // reduced correlations:
3354 TString diffFlowDirectCorrelationsName = "fDiffFlowDirectCorrelations";
3355 diffFlowDirectCorrelationsName += fAnalysisLabel->Data();
3356 for(Int_t t=0;t<2;t++) // type: RP or POI
3357 {
62e36168 3358 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 3359 {
3360 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
3361 {
3362 // reduced correlations:
3363 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");
3364 fDiffFlowDirectCorrelations[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
3365 fNestedLoopsList->Add(fDiffFlowDirectCorrelations[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
3366 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
3367 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3368 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
64e500e3 3369
489d5531 3370 // correction terms for non-uniform acceptance:
3371 TString diffFlowDirectCorrectionTermsForNUAName = "fDiffFlowDirectCorrectionTermsForNUA";
3372 diffFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
3373 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
3374 {
62e36168 3375 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 3376 {
3377 for(Int_t sc=0;sc<2;sc++) // sin or cos
3378 {
3379 for(Int_t cti=0;cti<9;cti++) // correction term index
3380 {
3381 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");
3382 fNestedLoopsList->Add(fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti]);
3383 }
3384 }
3385 }
64e500e3 3386 }
3387 // other differential correlators:
3388 TString otherDirectDiffCorrelatorsName = "fOtherDirectDiffCorrelators";
3389 otherDirectDiffCorrelatorsName += fAnalysisLabel->Data();
3390 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
3391 {
62e36168 3392 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 3393 {
3394 for(Int_t sc=0;sc<2;sc++) // sin or cos
3395 {
3396 for(Int_t ci=0;ci<1;ci++) // correlator index
3397 {
3398 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]);
3399 fNestedLoopsList->Add(fOtherDirectDiffCorrelators[t][pe][sc][ci]);
3400 }
3401 }
3402 }
3403 }
3b552efe 3404 // number of RPs and POIs in selected pt and eta bins for cross-checkings:
3405 TString noOfParticlesInBinName = "fNoOfParticlesInBin";
3406 fNoOfParticlesInBin = new TH1D(noOfParticlesInBinName.Data(),"Number of RPs and POIs in selected p_{T} and #eta bin",4,0,4);
489d5531 3407 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(1,"# of RPs in p_{T} bin");
3408 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(2,"# of RPs in #eta bin");
3409 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(3,"# of POIs in p_{T} bin");
3b552efe 3410 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(4,"# of POIs in #eta bin");
489d5531 3411 fNestedLoopsList->Add(fNoOfParticlesInBin);
3412 } // end of if(fEvaluateDiffFlowNestedLoops)
3413
3414} // end of AliFlowAnalysisWithQCumulants::BookEverythingForNestedLoops()
3415
e1d101a6 3416//=========================================================================================================
489d5531 3417
489d5531 3418void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations()
3419{
b84464d3 3420 // Calculate in this method all multiparticle azimuthal correlations.
3421 //
3422 // Remark 1: All multiparticle correlations are stored in TProfile fIntFlowCorrelationsAllPro;
3423 // Remark 2: There is a special TProfile fIntFlowCorrelationsPro holding results
3424 // only for same harmonic's correlations <<2>>, <<4>>, <<6>> and <<8>>;
3425 // Remark 3: Binning of fIntFlowCorrelationsAllPro is organized as follows:
3426 // --------------------------------------------------------------------------------------------------------------------
3427 // 1st bin: <2>_{1n|1n} = two1n1n = cos(1n(phi1-phi2))>
3428 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n(phi1-phi2))>
3429 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n(phi1-phi2))>
3430 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n(phi1-phi2))>
3431 // 5th bin: ---- EMPTY ----
3432 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n(2*phi1-phi2-phi3))>
3433 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n(3*phi1-2*phi2-phi3))>
3434 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n(4*phi1-2*phi2-2*phi3))>
3435 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n(4*phi1-3*phi2-phi3))>
3436 // 10th bin: ---- EMPTY ----
3437 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n(phi1+phi2-phi3-phi4))>
3438 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(n(2*phi1+phi2-2*phi3-phi4))>
3439 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(2n(phi1+phi2-phi3-phi4))>
3440 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n(3*phi1-phi2-phi3-phi4))>
3441 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n(3*phi1+phi2-3*phi3-phi4))>
3442 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n(3*phi1+phi2-2*phi3-2*phi4))>
3443 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n(4*phi1-2*phi2-phi3-phi4))>
3444 // 18th bin: ---- EMPTY ----
3445 // 19th bin: <5>_{2n,1n|1n,1n,1n} = five2n1n1n1n1n = <cos(n(2*phi1+phi2-phi3-phi4-phi5))>
3446 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n(2*phi1+2*phi2-2*phi3-phi4-phi5))>
3447 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n(3*phi1+phi2-2*phi3-phi4-phi5))>
3448 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n(4*phi1-phi2-phi3-phi4-phi5))>
3449 // 23rd bin: ---- EMPTY ----
3450 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n(phi1+phi2+phi3-phi4-phi5-phi6))>
3451 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n(2*phi1+phi2+phi3-2*phi4-phi5-phi6))>
3452 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n(2*phi1+2*phi2-phi3-phi4-phi5-phi6))>
3453 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n(3*phi1+phi2-phi3-phi4-phi5-phi6))>
3454 // 28th bin: ---- EMPTY ----
3455 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n(2*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
3456 // 30th bin: ---- EMPTY ----
3457 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
3458 // 32nd bin: ---- EMPTY ----
3459 // Extra correlations for v3{5} study:
3460 // 33rd bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
3461 // 34th bin: <5>_{3n,3n|2n,2n,2n} = five3n3n2n2n2n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
3462 // Extra correlations for Teaney-Yan study:
3463 // 35th bin: <2>_{5n|5n} = two5n5n = <cos(5n(phi1-phi2)>
3464 // 36th bin: <2>_{6n|6n} = two6n6n = <cos(6n(phi1-phi2)>
3465 // 37th bin: <3>_{5n|3n,2n} = three5n3n2n = <cos(n(5*phi1-3*phi2-2*phi3)>
3466 // 38th bin: <3>_{5n|4n,1n} = three5n4n1n = <cos(n(5*phi1-4*phi2-1*phi3)>
3467 // 39th bin: <3>_{6n|3n,3n} = three6n3n3n = <cos(n(6*phi1-3*phi2-3*phi3)>
3468 // 40th bin: <3>_{6n|4n,2n} = three6n4n2n = <cos(n(6*phi1-4*phi2-2*phi3)>
3469 // 41st bin: <3>_{6n|5n,1n} = three6n5n1n = <cos(n(6*phi1-5*phi2-1*phi3)>
3470 // 42nd bin: <4>_{6n|3n,2n,1n} = four6n3n2n1n = <cos(n(6*phi1-3*phi2-2*phi3-1*phi4)>
3471 // 43rd bin: <4>_{3n,2n|3n,2n} = four3n2n3n2n = <cos(n(3*phi1+2*phi2-3*phi3-2*phi4)>
3472 // 44th bin: <4>_{4n,1n|3n,2n} = four4n1n3n2n = <cos(n(4*phi1+1*phi2-3*phi3-2*phi4)>
3473 // 45th bin: <4>_{3n,3n|3n,3n} = four3n3n3n3n = <cos(3n*(phi1+phi2-phi3-phi4))>
3474 // 46th bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4)>
3475 // 47th bin: <4>_{5n,1n|3n,3n} = four5n1n3n3n = <cos(n(5*phi1+1*phi2-3*phi3-3*phi4)>
3476 // 48th bin: <4>_{4n,2n|4n,2n} = four4n2n4n2n = <cos(n(4*phi1+2*phi2-4*phi3-2*phi4)>
3477 // 49th bin: <4>_{5n,1n|4n,2n} = four5n1n4n2n = <cos(n(5*phi1+1*phi2-4*phi3-2*phi4)>
3478 // 50th bin: <4>_{5n|3n,1n,1n} = four5n3n1n1n = <cos(n(5*phi1-3*phi2-1*phi3-1*phi4)>
3479 // 51st bin: <4>_{5n|2n,2n,1n} = four5n2n2n1n = <cos(n(5*phi1-2*phi2-2*phi3-1*phi4)>
3480 // 52nd bin: <4>_{5n,1n|5n,1n} = four5n1n5n1n = <cos(n(5*phi1+1*phi2-5*phi3-1*phi4)>
3481 // 53rd bin: <5>_{3n,3n|3n,2n,1n} = five3n3n3n2n1n = <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
3482 // 54th bin: <5>_{4n,2n|3n,2n,1n} = five4n2n3n2n1n = <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
3483 // 55th bin: <5>_{3n,2n|3n,1n,1n} = five3n2n3n1n1n = <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
3484 // 56th bin: <5>_{3n,2n|2n,2n,1n} = five3n2n2n2n1n = <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
3485 // 57th bin: <5>_{5n,1n|3n,2n,1n} = five5n1n3n2n1n = <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
3486 // 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 3487 // Extra correlations for Teaney-Yan study (B):
3488 // 59th bin: <4>_{6n|4n,1n,1n} = four6n4n1n1n = <cos(n(6*phi1-4*phi2-1*phi3-1*phi4)>
3489 // 60th bin: <4>_{6n|2n,2n,2n} = four6n2n2n2n = <cos(n(6*phi1-2*phi2-2*phi3-2*phi4)>
3490 // 61st bin: <5>_{6n|2n,2n,1n,1n} = five6n2n2n1n1n = <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5)>
3491 // 62nd bin: <5>_{4n,1n,1n|3n,3n} = five4n1n1n3n3n = <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5)>
3492 // 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 3493 // --------------------------------------------------------------------------------------------------------------------
403e3389 3494
3495 // Multiplicity of an event:
1268c371 3496 Double_t dMult = (*fSpk)(0,0);
b84464d3 3497 // Real parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
489d5531 3498 Double_t dReQ1n = (*fReQ)(0,0);
3499 Double_t dReQ2n = (*fReQ)(1,0);
3500 Double_t dReQ3n = (*fReQ)(2,0);
3501 Double_t dReQ4n = (*fReQ)(3,0);
b84464d3 3502 Double_t dReQ5n = (*fReQ)(4,0);
8ed4edc7 3503 Double_t dReQ6n = (*fReQ)(5,0);
b84464d3 3504 // Imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
489d5531 3505 Double_t dImQ1n = (*fImQ)(0,0);
3506 Double_t dImQ2n = (*fImQ)(1,0);
3507 Double_t dImQ3n = (*fImQ)(2,0);
3508 Double_t dImQ4n = (*fImQ)(3,0);
b84464d3 3509 Double_t dImQ5n = (*fImQ)(4,0);
8ed4edc7 3510 Double_t dImQ6n = (*fImQ)(5,0);
489d5531 3511
b84464d3 3512 // Real parts of expressions involving various combinations of Q-vectors which appears
3513 // simultaneously in several equations for multiparticle correlations bellow:
3514 // Re[Q_{2n}Q_{n}^*Q_{n}^*]
3515 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n;
3516 // Re[Q_{6n}Q_{3n}^*Q_{3n}^*]
3517 Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n;
3518 // Re[Q_{4n}Q_{2n}^*Q_{2n}^*]
489d5531 3519 Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
b84464d3 3520 // Re[Q_{4n}Q_{3n}^*Q_{n}^*]
489d5531 3521 Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
b84464d3 3522 // Re[Q_{3n}Q_{2n}^*Q_{n}^*]
489d5531 3523 Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
b84464d3 3524 + dImQ3n*dImQ2n*dReQ1n;
3525 // Re[Q_{5n}Q_{3n}^*Q_{2n}^*]
3526 Double_t reQ5nQ3nstarQ2nstar = dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
3527 + dImQ5n*dImQ2n*dReQ3n;
3528 // Re[Q_{5n}Q_{4n}^*Q_{1n}^*]
3529 Double_t reQ5nQ4nstarQ1nstar = dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
3530 + dImQ5n*dImQ4n*dReQ1n;
3531 // Re[Q_{6n}Q_{5n}^*Q_{1n}^*]
3532 Double_t reQ6nQ5nstarQ1nstar = dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
3533 + dImQ6n*dImQ5n*dReQ1n;
3534 // Re[Q_{6n}Q_{4n}^*Q_{2n}^*]
3535 Double_t reQ6nQ4nstarQ2nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
3536 + dImQ6n*dImQ4n*dReQ2n;
3537 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{2n}^*]
3538 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
3539 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
3540 // Re[Q_{3n}Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3541 Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
3542 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
403e3389 3543 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
3544 Double_t reQ6nQ2nstarQ2nstarQ2nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
3545 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
b84464d3 3546 // Re[Q_{4n}Q_{2n}^*Q_{n}^*Q_{n}^*]
3547 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
3548 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);
3549 // Re[Q_{4n}Q_{2n}^*Q_{3n}^*Q_{3n}^*]
3550 Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
3551 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;
3552 // Re[Q_{4n}Q_{n}Q_{3n}^*Q_{2n}^*]
3553 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
3554 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
3555 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
3556 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
3557 // Re[Q_{5n}Q_{n}Q_{4n}^*Q_{2n}^*]
3558 Double_t reQ5nQ1nQ4nstarQ2nstar = dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
3559 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
3560 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
3561 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n;
3562 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{3n}^*]
3563 Double_t reQ5nQ1nQ3nstarQ3nstar = dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
3564 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
3565 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n;
3566 // Re[Q_{5n}Q_{3n}^*Q_{n}^*Q_{n}^*]
3567 Double_t reQ5nQ3nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
3568 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
3569 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n;
3570 // Re[Q_{5n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
3571 Double_t reQ5nQ2nstarQ2nstarQ1nstar = -pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
3572 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
403e3389 3573 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n;
3574 // Re[Q_{6n}Q_{4n}^*Q_{n}^*Q_{n}^*]
3575 Double_t reQ6nQ4nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
3576 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
3577 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n;
489d5531 3578 // |Q_{2n}|^2 |Q_{n}|^2
3579 Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
b84464d3 3580 // |Q_{4n}|^2 |Q_{2n}|^2
3581 Double_t dQ4nQ2nQ4nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.));
3582 // |Q_{3n}|^2 |Q_{2n}|^2
3583 Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.));
3584 // |Q_{5n}|^2 |Q_{n}|^2
3585 Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
53884472 3586 // |Q_{3n}|^2 |Q_{n}|^2
3587 Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
b84464d3 3588 // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3589 Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
b84464d3 3590 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));
3591 // Re[Q_{2n}Q_{2n}Q_{2n}^*Q_{n}^*Q_{n}^*]
489d5531 3592 Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
3593 * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);
b84464d3 3594 // Re[Q_{4n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3595 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
3596 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
3597 - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;
b84464d3 3598 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{n}^*Q_{n}^*]
489d5531 3599 Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
b84464d3 3600 * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
3601 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);
3602 // Re[Q_{6n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3603 Double_t reQ6nQ3nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
3604 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
3605 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
3606 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n;
3607 // Re[Q_{3n}Q_{3n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3608 Double_t reQ3nQ3nQ3nstarQ2nstarQ1nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
3609 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
3610 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);
3611 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
3612 Double_t reQ3nQ3nQ2nstarQ2nstarQ2nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.)
3613 - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
3614 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n
3615 - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.)
3616 + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);
3617 // Re[Q_{4n}Q_{2n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3618 Double_t reQ4nQ2nQ3nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
3619 * (dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
3620 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n);
3621 // Re[Q_{3n}Q_{2n}Q_{3n}^*Q_{n}^*Q_{n}^*]
3622 Double_t reQ3nQ2nQ3nstarQ1nstarQ1nstar = -(pow(dImQ3n,2.)+pow(dReQ3n,2.))
3623 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n);
3624 // Re[Q_{3n}Q_{2n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
3625 Double_t reQ3nQ2nQ2nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
3626 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
3627 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);
3628 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3629 Double_t reQ5nQ1nQ3nstarQ2nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
3630 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
3631 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
3632 // Re[Q_{2n}Q_{2n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3633 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
3634 + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
3635 * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
b84464d3 3636 - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n);
3637 // Re[Q_{3n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3638 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
3639 * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
3640 + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
489d5531 3641 // |Q_{2n}|^2 |Q_{n}|^4
b84464d3 3642 Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.);
3643 // |Q_{3n}|^2 |Q_{2n}|^2 |Q_{n}|^2
3644 Double_t dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3645 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
3646 // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3647 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3648 * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
53884472 3649 + 2.*dReQ1n*dImQ1n*dImQ2n);
3650 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*]
3651 Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
3652 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
3653 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
3654 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
3655 + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
3656 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n
3657 - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
3658 // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*]
3659 Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
3660 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
3661 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
3662 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n
3663 + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
3664 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
3665 + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n;
3666 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*]
3667 Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n
3668 - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n
3669 + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n
3670 + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n
3671 - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n
3672 + dImQ1n*dImQ2n*dImQ3n);
489d5531 3673
b84464d3 3674 // Results for multiparticle azimuthal correlations:
489d5531 3675 // 2-particle:
b84464d3 3676 Double_t two1n1n = 0.; // <cos(n(phi1-phi2))>
3677 Double_t two2n2n = 0.; // <cos(2n(phi1-phi2))>
3678 Double_t two3n3n = 0.; // <cos(3n(phi1-phi2))>
3679 Double_t two4n4n = 0.; // <cos(4n(phi1-phi2))>
489d5531 3680 if(dMult>1)
3681 {
3682 two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.));
3683 two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.));
3684 two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.));
3685 two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.));
b84464d3 3686 // Average 2-particle correlations for single event:
489d5531 3687 fIntFlowCorrelationsAllEBE->SetBinContent(1,two1n1n);
3688 fIntFlowCorrelationsAllEBE->SetBinContent(2,two2n2n);
3689 fIntFlowCorrelationsAllEBE->SetBinContent(3,two3n3n);
b84464d3 3690 fIntFlowCorrelationsAllEBE->SetBinContent(4,two4n4n);
3691 // Average 2-particle correlations for all events:
3692 fIntFlowCorrelationsAllPro->Fill(0.5,two1n1n,dMult*(dMult-1.));
3693 fIntFlowCorrelationsAllPro->Fill(1.5,two2n2n,dMult*(dMult-1.));
3694 fIntFlowCorrelationsAllPro->Fill(2.5,two3n3n,dMult*(dMult-1.));
3695 fIntFlowCorrelationsAllPro->Fill(3.5,two4n4n,dMult*(dMult-1.));
3696 // Store separetately <2>:
3697 fIntFlowCorrelationsEBE->SetBinContent(1,two1n1n); // <2>
3698 // Testing other multiplicity weights:
489d5531 3699 Double_t mWeight2p = 0.;
3700 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
3701 {
3702 mWeight2p = dMult*(dMult-1.);
3703 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
3704 {
3705 mWeight2p = 1.;
3706 } else if(!strcmp(fMultiplicityWeight->Data(),"multiplicity"))
3707 {
3708 mWeight2p = dMult;
b84464d3 3709 }
489d5531 3710 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(1,mWeight2p); // eW_<2>
3711 fIntFlowCorrelationsPro->Fill(0.5,two1n1n,mWeight2p);
b40a910e 3712 fIntFlowSquaredCorrelationsPro->Fill(0.5,two1n1n*two1n1n,mWeight2p);
3713 if(fCalculateCumulantsVsM)
3714 {
3715 fIntFlowCorrelationsVsMPro[0]->Fill(dMult+0.5,two1n1n,mWeight2p);
3716 fIntFlowSquaredCorrelationsVsMPro[0]->Fill(dMult+0.5,two1n1n*two1n1n,mWeight2p);
3717 }
3435cacb 3718 if(fCalculateAllCorrelationsVsM)
3719 {
3720 fIntFlowCorrelationsAllVsMPro[0]->Fill(dMult+0.5,two1n1n,mWeight2p);
3721 fIntFlowCorrelationsAllVsMPro[1]->Fill(dMult+0.5,two2n2n,mWeight2p);
3722 fIntFlowCorrelationsAllVsMPro[2]->Fill(dMult+0.5,two3n3n,mWeight2p);
3723 fIntFlowCorrelationsAllVsMPro[3]->Fill(dMult+0.5,two4n4n,mWeight2p);
3724 }
489d5531 3725 } // end of if(dMult>1)
3726
3727 // 3-particle:
b84464d3 3728 Double_t three2n1n1n = 0.; // <cos(n(2*phi1-phi2-phi3))>
3729 Double_t three3n2n1n = 0.; // <cos(n(3*phi1-2*phi2-phi3))>
3730 Double_t three4n2n2n = 0.; // <cos(n(4*phi1-2*phi2-2*phi3))>
3731 Double_t three4n3n1n = 0.; // <cos(n(4*phi1-3*phi2-phi3))>
489d5531 3732 if(dMult>2)
3733 {
3734 three2n1n1n = (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3735 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
3736 / (dMult*(dMult-1.)*(dMult-2.));
3737 three3n2n1n = (reQ3nQ2nstarQ1nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3738 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))
3739 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
3740 / (dMult*(dMult-1.)*(dMult-2.));
3741 three4n2n2n = (reQ4nQ2nstarQ2nstar-2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3742 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
3743 / (dMult*(dMult-1.)*(dMult-2.));
3744 three4n3n1n = (reQ4nQ3nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))
3745 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
3746 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
b84464d3 3747 / (dMult*(dMult-1.)*(dMult-2.));
3748 // Average 3-particle correlations for single event:
489d5531 3749 fIntFlowCorrelationsAllEBE->SetBinContent(6,three2n1n1n);
3750 fIntFlowCorrelationsAllEBE->SetBinContent(7,three3n2n1n);
3751 fIntFlowCorrelationsAllEBE->SetBinContent(8,three4n2n2n);
3752 fIntFlowCorrelationsAllEBE->SetBinContent(9,three4n3n1n);
b84464d3 3753 // Average 3-particle correlations for all events:
489d5531 3754 fIntFlowCorrelationsAllPro->Fill(5.5,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
3755 fIntFlowCorrelationsAllPro->Fill(6.5,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
3756 fIntFlowCorrelationsAllPro->Fill(7.5,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
3435cacb 3757 fIntFlowCorrelationsAllPro->Fill(8.5,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
b84464d3 3758 // Average 3-particle correlations vs M for all events:
3435cacb 3759 if(fCalculateAllCorrelationsVsM)
3760 {
3761 fIntFlowCorrelationsAllVsMPro[5]->Fill(dMult+0.5,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
3762 fIntFlowCorrelationsAllVsMPro[6]->Fill(dMult+0.5,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
3763 fIntFlowCorrelationsAllVsMPro[7]->Fill(dMult+0.5,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
3764 fIntFlowCorrelationsAllVsMPro[8]->Fill(dMult+0.5,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
3765 }
489d5531 3766 } // end of if(dMult>2)
3767
3768 // 4-particle:
b84464d3 3769 Double_t four1n1n1n1n = 0.; // <cos(n(phi1+phi2-phi3-phi4))>
3770 Double_t four2n2n2n2n = 0.; // <cos(2n(phi1+phi2-phi3-phi4))>
3771 Double_t four2n1n2n1n = 0.; // <cos(n(2*phi1+phi2-2*phi3-phi4))>
3772 Double_t four3n1n1n1n = 0.; // <cos(n(3*phi1-phi2-phi3-phi4))>
3773 Double_t four4n2n1n1n = 0.; // <cos(n(4*phi1-2*phi2-phi3-phi4))>
3774 Double_t four3n1n2n2n = 0.; // <cos(n(3*phi1+phi2-2*phi3-2*phi4))>
3775 Double_t four3n1n3n1n = 0.; // <cos(n(3*phi1+phi2-3*phi3-phi4))>
489d5531 3776 if(dMult>3)
3777 {
3778 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
3779 + pow(dImQ1n,2.))-2.*reQ2nQ1nstarQ1nstar+(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
3780 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
3781 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
3782 + pow(dImQ2n,2.))-2.*reQ4nQ2nstarQ2nstar+(pow(dReQ4n,2.)+pow(dImQ4n,2.)))
3783 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
3784 four2n1n2n1n = (dQ2nQ1nQ2nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar-2.*reQ2nQ1nstarQ1nstar)
3785 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3786 - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3787 + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
3788 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3789 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3790 four3n1n1n1n = (reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar-3.*reQ2nQ1nstarQ1nstar
3791 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
489d5531 3792 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
3793 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3794 four4n2n1n1n = (reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar)
3795 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3796 - (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3797 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
3798 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3799 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3800 four3n1n2n2n = (reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nstarQ2nstar-reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar)
489d5531 3801 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
b84464d3 3802 - (2.*reQ2nQ1nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
489d5531 3803 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
3804 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3805 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
3806 four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
b84464d3 3807 - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar
3808 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3809 + pow(dReQ2n,2.)+pow(dImQ2n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3810 + dMult*(dMult-6.))
3811 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3812 // Average 4-particle correlations for single event:
489d5531 3813 fIntFlowCorrelationsAllEBE->SetBinContent(11,four1n1n1n1n);
3814 fIntFlowCorrelationsAllEBE->SetBinContent(12,four2n1n2n1n);
3815 fIntFlowCorrelationsAllEBE->SetBinContent(13,four2n2n2n2n);
3816 fIntFlowCorrelationsAllEBE->SetBinContent(14,four3n1n1n1n);
3817 fIntFlowCorrelationsAllEBE->SetBinContent(15,four3n1n3n1n);
3818 fIntFlowCorrelationsAllEBE->SetBinContent(16,four3n1n2n2n);
b84464d3 3819 fIntFlowCorrelationsAllEBE->SetBinContent(17,four4n2n1n1n);
3820 // Average 4-particle correlations for all events:
489d5531 3821 fIntFlowCorrelationsAllPro->Fill(10.5,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3822 fIntFlowCorrelationsAllPro->Fill(11.5,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3823 fIntFlowCorrelationsAllPro->Fill(12.5,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3824 fIntFlowCorrelationsAllPro->Fill(13.5,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3825 fIntFlowCorrelationsAllPro->Fill(14.5,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3826 fIntFlowCorrelationsAllPro->Fill(15.5,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3827 fIntFlowCorrelationsAllPro->Fill(16.5,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3828 // Average 4-particle correlations vs M for all events:
3435cacb 3829 if(fCalculateAllCorrelationsVsM)
3830 {
3831 fIntFlowCorrelationsAllVsMPro[10]->Fill(dMult+0.5,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3832 fIntFlowCorrelationsAllVsMPro[11]->Fill(dMult+0.5,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3833 fIntFlowCorrelationsAllVsMPro[12]->Fill(dMult+0.5,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3834 fIntFlowCorrelationsAllVsMPro[13]->Fill(dMult+0.5,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3835 fIntFlowCorrelationsAllVsMPro[14]->Fill(dMult+0.5,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3836 fIntFlowCorrelationsAllVsMPro[15]->Fill(dMult+0.5,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3837 fIntFlowCorrelationsAllVsMPro[16]->Fill(dMult+0.5,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3838 }
3839 // Store separetately <4>:
489d5531 3840 fIntFlowCorrelationsEBE->SetBinContent(2,four1n1n1n1n); // <4>
b84464d3 3841 // Testing other multiplicity weights:
489d5531 3842 Double_t mWeight4p = 0.;
3843 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
3844 {
3845 mWeight4p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.);
3846 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
3847 {
3848 mWeight4p = 1.;
3849 } else if(!strcmp(fMultiplicityWeight->Data(),"multiplicity"))
3850 {
3851 mWeight4p = dMult;
b84464d3 3852 }
489d5531 3853 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(2,mWeight4p); // eW_<4>
3854 fIntFlowCorrelationsPro->Fill(1.5,four1n1n1n1n,mWeight4p);
b40a910e 3855 fIntFlowSquaredCorrelationsPro->Fill(1.5,four1n1n1n1n*four1n1n1n1n,mWeight4p);
3856 if(fCalculateCumulantsVsM)
3857 {
3858 fIntFlowCorrelationsVsMPro[1]->Fill(dMult+0.5,four1n1n1n1n,mWeight4p);
3859 fIntFlowSquaredCorrelationsVsMPro[1]->Fill(dMult+0.5,four1n1n1n1n*four1n1n1n1n,mWeight4p);
3860 }
489d5531 3861 } // end of if(dMult>3)
3862
3863 // 5-particle:
b84464d3 3864 Double_t five2n1n1n1n1n = 0.; // <cos(n(2*phi1+phi2-phi3-phi4-phi5))>
3865 Double_t five2n2n2n1n1n = 0.; // <cos(n(2*phi1+2*phi2-2*phi3-phi4-phi5))>
3866 Double_t five3n1n2n1n1n = 0.; // <cos(n(3*phi1+phi2-2*phi3-phi4-phi5))>
3867 Double_t five4n1n1n1n1n = 0.; // <cos(n(4*phi1-phi2-phi3-phi4-phi5))>
489d5531 3868 if(dMult>4)
b84464d3 3869 {
3870 five2n1n1n1n1n = (reQ2nQ1nQ1nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar+5.*reQ3nQ2nstarQ1nstar
3871 - 3.*(dMult-5.)*reQ2nQ1nstarQ1nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3872 - 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3873 + 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3874 - 3.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3875 + 6.*(2.*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult*(dMult-4.))
489d5531 3876 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 3877 five2n2n2n1n1n = (reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ3nQ1nQ2nstarQ2nstar
3878 + 3.*reQ4nQ2nstarQ2nstar+8.*reQ3nQ2nstarQ1nstar+2.*reQ4nQ3nstarQ1nstar
3879 - 2.*(dMult-6.)*reQ2nQ1nstarQ1nstar
3880 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3881 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
3882 + 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3883 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3884 + 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
489d5531 3885 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 3886 five4n1n1n1n1n = (reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ4nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nstarQ1nstarQ1nstar
3887 + 8.*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+12.*reQ3nQ2nstarQ1nstar+12.*reQ2nQ1nstarQ1nstar
3888 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3889 - 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+24.*dMult)
3890 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3891 five3n1n2n1n1n = (reQ3nQ1nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar
3892 - reQ3nQ1nQ2nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar
3893 - (2.*dMult-13.)*reQ3nQ2nstarQ1nstar+7.*reQ2nQ1nstarQ1nstar
3894 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
3895 + 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3896 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3897 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
489d5531 3898 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3899 - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
b84464d3 3900 + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
3901 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3902 // Average 5-particle correlations for single event:
489d5531 3903 fIntFlowCorrelationsAllEBE->SetBinContent(19,five2n1n1n1n1n);
3904 fIntFlowCorrelationsAllEBE->SetBinContent(20,five2n2n2n1n1n);
3905 fIntFlowCorrelationsAllEBE->SetBinContent(21,five3n1n2n1n1n);
b84464d3 3906 fIntFlowCorrelationsAllEBE->SetBinContent(22,five4n1n1n1n1n);
3907 // Average 5-particle correlations for all events:
489d5531 3908 fIntFlowCorrelationsAllPro->Fill(18.5,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3909 fIntFlowCorrelationsAllPro->Fill(19.5,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3910 fIntFlowCorrelationsAllPro->Fill(20.5,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 3911 fIntFlowCorrelationsAllPro->Fill(21.5,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3912 // Average 5-particle correlations vs M for all events:
3435cacb 3913 if(fCalculateAllCorrelationsVsM)
3914 {
3915 fIntFlowCorrelationsAllVsMPro[18]->Fill(dMult+0.5,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3916 fIntFlowCorrelationsAllVsMPro[19]->Fill(dMult+0.5,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3917 fIntFlowCorrelationsAllVsMPro[20]->Fill(dMult+0.5,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3918 fIntFlowCorrelationsAllVsMPro[21]->Fill(dMult+0.5,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3919 }
489d5531 3920 } // end of if(dMult>4)
3921
3922 // 6-particle:
b84464d3 3923 Double_t six1n1n1n1n1n1n = 0.; // <cos(n(phi1+phi2+phi3-phi4-phi5-phi6))>
3924 Double_t six2n2n1n1n1n1n = 0.; // <cos(n(2*phi1+2*phi2-phi3-phi4-phi5-phi6))>
3925 Double_t six3n1n1n1n1n1n = 0.; // <cos(n(3*phi1+phi2-phi3-phi4-phi5-phi6))>
3926 Double_t six2n1n1n2n1n1n = 0.; // <cos(n(2*phi1+phi2+phi3-2*phi4-phi5-phi6))>
489d5531 3927 if(dMult>5)
3928 {
b84464d3 3929 six1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)-6.*reQ2nQ1nQ1nstarQ1nstarQ1nstar
3930 + 4.*reQ3nQ1nstarQ1nstarQ1nstar-12.*reQ3nQ2nstarQ1nstar+18.*(dMult-4.)*reQ2nQ1nstarQ1nstar
3931 + 9.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3932 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-9.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3933 - 9.*(dMult-4.)*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3934 + 18.*(dMult*dMult-7.*dMult+10.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3935 - 6.*dMult*(dMult*dMult-9.*dMult+20.))
3936 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3937 six2n1n1n2n1n1n = (dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
3938 - 4.*reQ2nQ1nQ1nstarQ1nstarQ1nstar-2.*reQ2nQ2nQ2nstarQ1nstarQ1nstar
3939 + 4.*reQ4nQ2nstarQ1nstarQ1nstar+4.*reQ3nQ1nQ2nstarQ2nstar+4.*reQ3nQ1nstarQ1nstarQ1nstar
3940 - 8.*reQ4nQ3nstarQ1nstar-4.*reQ4nQ2nstarQ2nstar+4.*(2.*dMult-13.)*reQ3nQ2nstarQ1nstar
3941 + 2.*(7.*dMult-34.)*reQ2nQ1nstarQ1nstar+4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3942 - 4.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3943 + 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3944 + pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+(2.*dMult*dMult-27.*dMult+76.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3945 - (dMult-12.)*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3946 + 4.*(dMult*dMult-15.*dMult+34.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3947 - 2.*dMult*(dMult*dMult-17.*dMult+60.))
3948 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3949 six2n2n1n1n1n1n = (reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ1nstarQ1nstarQ1nstarQ1nstar
3950 - 8.*reQ2nQ1nQ1nstarQ1nstarQ1nstar+8.*reQ3nQ1nstarQ1nstarQ1nstar+6.*reQ4nQ2nstarQ1nstarQ1nstar
3951 + 8.*reQ3nQ1nQ2nstarQ2nstar-40.*reQ3nQ2nstarQ1nstar-8.*reQ4nQ3nstarQ1nstar-9.*reQ4nQ2nstarQ2nstar
3952 + 24.*(dMult-4.)*reQ2nQ1nstarQ1nstar+24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3953 + 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+16.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3954 + 3.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-12.*(2.*dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3955 + 12.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-48.*(dMult-3.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3956 + 24.*dMult*(dMult-5.))
3957 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3958 six3n1n1n1n1n1n = (reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ3nQ1nQ2nstarQ1nstarQ1nstar+6.*reQ4nQ2nstarQ1nstarQ1nstar
3959 - reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-4.*reQ2nQ1nQ1nstarQ1nstarQ1nstar+3.*reQ3nQ1nQ2nstarQ2nstar
3960 - 4.*(dMult-5.)*reQ3nQ1nstarQ1nstarQ1nstar-14.*reQ4nQ3nstarQ1nstar
3961 - 3.*reQ4nQ2nstarQ2nstar+4.*(3.*dMult-17.)*reQ3nQ2nstarQ1nstar+12.*(dMult-6.)*reQ2nQ1nstarQ1nstar
3962 + 12.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3963 + 8.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3964 + 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3965 - 12.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-48.*(dMult-3.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3966 + 12.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)+24.*dMult*(dMult-5.))
3967 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3968 // Average 6-particle correlations for single event:
489d5531 3969 fIntFlowCorrelationsAllEBE->SetBinContent(24,six1n1n1n1n1n1n);
3970 fIntFlowCorrelationsAllEBE->SetBinContent(25,six2n1n1n2n1n1n);
3971 fIntFlowCorrelationsAllEBE->SetBinContent(26,six2n2n1n1n1n1n);
3972 fIntFlowCorrelationsAllEBE->SetBinContent(27,six3n1n1n1n1n1n);
b84464d3 3973 // Average 6-particle correlations for all events:
489d5531 3974 fIntFlowCorrelationsAllPro->Fill(23.5,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3975 fIntFlowCorrelationsAllPro->Fill(24.5,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3976 fIntFlowCorrelationsAllPro->Fill(25.5,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3977 fIntFlowCorrelationsAllPro->Fill(26.5,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
b84464d3 3978 // Average 6-particle correlations vs M for all events:
3435cacb 3979 if(fCalculateAllCorrelationsVsM)
3980 {
3981 fIntFlowCorrelationsAllVsMPro[23]->Fill(dMult+0.5,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3982 fIntFlowCorrelationsAllVsMPro[24]->Fill(dMult+0.5,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3983 fIntFlowCorrelationsAllVsMPro[25]->Fill(dMult+0.5,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3984 fIntFlowCorrelationsAllVsMPro[26]->Fill(dMult+0.5,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3985 }
b84464d3 3986 // Store separetately <6>:
489d5531 3987 fIntFlowCorrelationsEBE->SetBinContent(3,six1n1n1n1n1n1n); // <6>
b84464d3 3988 // Testing other multiplicity weights:
489d5531 3989 Double_t mWeight6p = 0.;
3990 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
3991 {
3992 mWeight6p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.);
3993 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
3994 {
3995 mWeight6p = 1.;
3996 } else if(!strcmp(fMultiplicityWeight->Data(),"multiplicity"))
3997 {
3998 mWeight6p = dMult;
3999 }
489d5531 4000 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(3,mWeight6p); // eW_<6>
4001 fIntFlowCorrelationsPro->Fill(2.5,six1n1n1n1n1n1n,mWeight6p);
b40a910e 4002 fIntFlowSquaredCorrelationsPro->Fill(2.5,six1n1n1n1n1n1n*six1n1n1n1n1n1n,mWeight6p);
4003 if(fCalculateCumulantsVsM)
4004 {
4005 fIntFlowCorrelationsVsMPro[2]->Fill(dMult+0.5,six1n1n1n1n1n1n,mWeight6p);
4006 fIntFlowSquaredCorrelationsVsMPro[2]->Fill(dMult+0.5,six1n1n1n1n1n1n*six1n1n1n1n1n1n,mWeight6p);
4007 }
489d5531 4008 } // end of if(dMult>5)
4009
4010 // 7-particle:
b84464d3 4011 Double_t seven2n1n1n1n1n1n1n = 0.; // <cos(n(2*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
489d5531 4012 if(dMult>6)
4013 {
b84464d3 4014 seven2n1n1n1n1n1n1n = (reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-4.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)
4015 - reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-2.*reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar
4016 + 9.*reQ2nQ2nQ2nstarQ1nstarQ1nstar+20.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4017 + 2.*reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-8.*(dMult-8.)*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4018 - 18.*reQ4nQ2nstarQ1nstarQ1nstar-14.*reQ3nQ1nQ2nstarQ2nstar
4019 + 8.*(dMult-7.)*reQ3nQ1nstarQ1nstarQ1nstar+28.*reQ4nQ3nstarQ1nstar
4020 + 12.*reQ4nQ2nstarQ2nstar-8.*(5.*dMult-31.)*reQ3nQ2nstarQ1nstar
4021 + 12.*(dMult*dMult-15.*dMult+46.)*reQ2nQ1nstarQ1nstar
4022 - 16.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4023 - 6.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4024 - 3.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4025 + 12.*(2.*dMult-13.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4026 - 12.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+16.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4027 - 12.*(dMult-8.)*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4028 + 12.*(3.*dMult-14.)*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)
4029 - 24.*(3.*dMult-7.)*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4030 + 24.*dMult*(dMult-5.)*(dMult-6.))
4031 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.));
4032 // Average 7-particle correlations for single event:
4033 fIntFlowCorrelationsAllEBE->SetBinContent(29,seven2n1n1n1n1n1n1n);
4034 // Average 7-particle correlations for all events:
4035 fIntFlowCorrelationsAllPro->Fill(28.5,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4036 *(dMult-4.)*(dMult-5.)*(dMult-6.));
4037 // Average 7-particle correlations vs M for all events:
3435cacb 4038 if(fCalculateAllCorrelationsVsM)
4039 {
b84464d3 4040 fIntFlowCorrelationsAllVsMPro[28]->Fill(dMult+0.5,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4041 *(dMult-4.)*(dMult-5.)*(dMult-6.));
3435cacb 4042 }
489d5531 4043 } // end of if(dMult>6)
4044
4045 // 8-particle:
b84464d3 4046 Double_t eight1n1n1n1n1n1n1n1n = 0.; // <cos(n(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
489d5531 4047 if(dMult>7)
b84464d3 4048 {
4049 eight1n1n1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),4.)-12.*reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar
4050 + 16.*reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar+6.*reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar
4051 - 12.*reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-36.*reQ2nQ2nQ2nstarQ1nstarQ1nstar
4052 - 96.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4053 + 72.*reQ4nQ2nstarQ1nstarQ1nstar+48.*reQ3nQ1nQ2nstarQ2nstar
4054 - 64.*(dMult-6.)*reQ3nQ1nstarQ1nstarQ1nstar
4055 + 96.*(dMult-6.)*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4056 - 96.*reQ4nQ3nstarQ1nstar-36.*reQ4nQ2nstarQ2nstar
4057 + 192.*(dMult-6.)*reQ3nQ2nstarQ1nstar
4058 - 144.*(dMult-7.)*(dMult-4.)*reQ2nQ1nstarQ1nstar
4059 + 64.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4060 - 144.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4061 + 72.*(dMult-7.)*(dMult-4.)*(pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
4062 - 96.*(dMult-7.)*(dMult-6.)*(dMult-2.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4063 + 36.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4064 + 9.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4065 - 64.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4066 + 36.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4067 - 16.*(dMult-6.)*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)
4068 + 24.*dMult*(dMult-7.)*(dMult-6.)*(dMult-5.))
4069 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4070 // Average 8-particle correlations for single event:
4071 fIntFlowCorrelationsAllEBE->SetBinContent(31,eight1n1n1n1n1n1n1n1n);
4072 // Average 8-particle correlations for all events:
4073 fIntFlowCorrelationsAllPro->Fill(30.5,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4074 *(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4075 // Average 8-particle correlations vs M for all events:
3435cacb 4076 if(fCalculateAllCorrelationsVsM)
4077 {
b84464d3 4078 fIntFlowCorrelationsAllVsMPro[30]->Fill(dMult+0.5,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4079 *(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4080 }
4081 // Store separetately <8>:
489d5531 4082 fIntFlowCorrelationsEBE->SetBinContent(4,eight1n1n1n1n1n1n1n1n); // <8>
b84464d3 4083 // Testing other multiplicity weights:
489d5531 4084 Double_t mWeight8p = 0.;
4085 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
4086 {
4087 mWeight8p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.);
4088 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
4089 {
4090 mWeight8p = 1.;
4091 } else if(!strcmp(fMultiplicityWeight->Data(),"multiplicity"))
4092 {
4093 mWeight8p = dMult;
b84464d3 4094 }
489d5531 4095 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(4,mWeight8p); // eW_<8>
b40a910e 4096 fIntFlowCorrelationsPro->Fill(3.5,eight1n1n1n1n1n1n1n1n,mWeight8p);
4097 fIntFlowSquaredCorrelationsPro->Fill(3.5,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n,mWeight8p);
4098 if(fCalculateCumulantsVsM)
4099 {
4100 fIntFlowCorrelationsVsMPro[3]->Fill(dMult+0.5,eight1n1n1n1n1n1n1n1n,mWeight8p);
4101 fIntFlowSquaredCorrelationsVsMPro[3]->Fill(dMult+0.5,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n,mWeight8p);
4102 }
489d5531 4103 } // end of if(dMult>7)
4104
b84464d3 4105 // EXTRA correlations for v3{5} study:
8ed4edc7 4106 // 4-particle:
b84464d3 4107 Double_t four4n2n3n3n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
8ed4edc7 4108 if(dMult>3.)
4109 {
11d3e40e 4110 four4n2n3n3n = (reQ4nQ2nQ3nstarQ3nstar-reQ6nQ4nstarQ2nstar-reQ6nQ3nstarQ3nstar
4111 - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar
4112 + (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4113 + 2.*(2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4114 + (pow(dReQ1n,2.)+pow(dImQ1n,2.))-3.*dMult))
b84464d3 4115 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
8ed4edc7 4116 fIntFlowCorrelationsAllPro->Fill(32.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4117 // Average 4-particle correlations vs M for all events:
3435cacb 4118 if(fCalculateAllCorrelationsVsM)
4119 {
4120 fIntFlowCorrelationsAllVsMPro[32]->Fill(dMult+0.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4121 }
11d3e40e 4122 } // end of if(dMult>3.)
8ed4edc7 4123
4124 // 5-particle:
b84464d3 4125 Double_t five3n3n2n2n2n = 0.; // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
8ed4edc7 4126 if(dMult>4.)
4127 {
b84464d3 4128 five3n3n2n2n2n = (reQ3nQ3nQ2nstarQ2nstarQ2nstar-reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ4nQ2nQ3nstarQ3nstar
4129 - 6.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ6nQ3nstarQ3nstar+3.*reQ6nQ4nstarQ2nstar
4130 + 6.*reQ4nQ3nstarQ1nstar+6.*reQ4nQ2nstarQ2nstar
4131 + 12.*reQ3nQ2nstarQ1nstar+6.*reQ2nQ1nstarQ1nstar
11d3e40e 4132 - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.))
4133 + 3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4134 + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4135 + 9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4136 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
b84464d3 4137 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4138 fIntFlowCorrelationsAllPro->Fill(33.5,five3n3n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4139 if(fCalculateAllCorrelationsVsM)
4140 {
b84464d3 4141 fIntFlowCorrelationsAllVsMPro[33]->Fill(dMult+0.5,five3n3n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4142 }
11d3e40e 4143 } // end of if(dMult>4.)
8ed4edc7 4144
b84464d3 4145 // EXTRA correlations for Teaney-Yan study:
4146 // 2-particle:
4147 Double_t two5n5n = 0.; // <cos(5n(phi1-phi2))>
4148 Double_t two6n6n = 0.; // <cos(6n(phi1-phi2))>
4149 if(dMult>1)
4150 {
4151 two5n5n = (pow(dReQ5n,2.)+pow(dImQ5n,2.)-dMult)/(dMult*(dMult-1.));
4152 two6n6n = (pow(dReQ6n,2.)+pow(dImQ6n,2.)-dMult)/(dMult*(dMult-1.));
4153 // Average 2-particle correlations for all events:
4154 fIntFlowCorrelationsAllPro->Fill(34.5,two5n5n,dMult*(dMult-1.));
4155 fIntFlowCorrelationsAllPro->Fill(35.5,two6n6n,dMult*(dMult-1.));
4156 if(fCalculateAllCorrelationsVsM)
4157 {
4158 fIntFlowCorrelationsAllVsMPro[34]->Fill(dMult+0.5,two5n5n,dMult*(dMult-1.));
4159 fIntFlowCorrelationsAllVsMPro[35]->Fill(dMult+0.5,two6n6n,dMult*(dMult-1.));
4160 }
4161 } // end of if(dMult>1)
4162
4163 // 3-particle:
4164 Double_t three5n3n2n = 0.; // <cos(n(5*phi1-3*phi2-2*phi3)>
4165 Double_t three5n4n1n = 0.; // <cos(n(5*phi1-4*phi2-1*phi3)>
4166 Double_t three6n3n3n = 0.; // <cos(n(6*phi1-3*phi2-3*phi3)>
4167 Double_t three6n4n2n = 0.; // <cos(n(6*phi1-4*phi2-2*phi3)>
4168 Double_t three6n5n1n = 0.; // <cos(n(6*phi1-5*phi2-1*phi3)>
4169 if(dMult>2)
4170 {
4171 three5n3n2n = (reQ5nQ3nstarQ2nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4172 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
4173 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4174 / (dMult*(dMult-1.)*(dMult-2.));
4175 three5n4n1n = (reQ5nQ4nstarQ1nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4176 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4177 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4178 / (dMult*(dMult-1.)*(dMult-2.));
4179 three6n3n3n = (reQ6nQ3nstarQ3nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4180 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*dMult)
4181 / (dMult*(dMult-1.)*(dMult-2.));
4182 three6n4n2n = (reQ6nQ4nstarQ2nstar-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4183 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4184 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4185 / (dMult*(dMult-1.)*(dMult-2.));
4186 three6n5n1n = (reQ6nQ5nstarQ1nstar-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4187 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))
4188 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4189 / (dMult*(dMult-1.)*(dMult-2.));
4190 // Average 3-particle correlations for all events:
4191 fIntFlowCorrelationsAllPro->Fill(36.5,three5n3n2n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(5*phi1-3*phi2-2*phi3)>>
4192 fIntFlowCorrelationsAllPro->Fill(37.5,three5n4n1n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(5*phi1-4*phi2-1*phi3)>>
4193 fIntFlowCorrelationsAllPro->Fill(38.5,three6n3n3n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-3*phi2-3*phi3)>>
4194 fIntFlowCorrelationsAllPro->Fill(39.5,three6n4n2n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-4*phi2-2*phi3)>>
4195 fIntFlowCorrelationsAllPro->Fill(40.5,three6n5n1n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-5*phi2-1*phi3)>>
4196 if(fCalculateAllCorrelationsVsM)
4197 {
4198 fIntFlowCorrelationsAllVsMPro[36]->Fill(dMult+0.5,three5n3n2n,dMult*(dMult-1.)*(dMult-2.));
4199 fIntFlowCorrelationsAllVsMPro[37]->Fill(dMult+0.5,three5n4n1n,dMult*(dMult-1.)*(dMult-2.));
4200 fIntFlowCorrelationsAllVsMPro[38]->Fill(dMult+0.5,three6n3n3n,dMult*(dMult-1.)*(dMult-2.));
4201 fIntFlowCorrelationsAllVsMPro[39]->Fill(dMult+0.5,three6n4n2n,dMult*(dMult-1.)*(dMult-2.));
4202 fIntFlowCorrelationsAllVsMPro[40]->Fill(dMult+0.5,three6n5n1n,dMult*(dMult-1.)*(dMult-2.));
4203 }
4204 } // end of if(dMult>2)
4205
4206 // 4-particle:
4207 Double_t four6n3n2n1n = 0.; // <cos(n(6*phi1-3*phi2-2*phi3-1*phi4)>
4208 Double_t four3n2n3n2n = 0.; // <cos(n(3*phi1+2*phi2-3*phi3-2*phi4)>
4209 Double_t four4n1n3n2n = 0.; // <cos(n(4*phi1+1*phi2-3*phi3-2*phi4)>
4210 Double_t four3n3n3n3n = 0.; // <cos(3n(phi1+phi2-phi3-phi4))>
4211 //Double_t four4n2n3n3n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-3*phi4)> // I already have this one above
4212 Double_t four5n1n3n3n = 0.; // <cos(n(5*phi1+1*phi2-3*phi3-3*phi4)>
4213 Double_t four4n2n4n2n = 0.; // <cos(n(4*phi1+2*phi2-4*phi3-2*phi4)>
4214 Double_t four5n1n4n2n = 0.; // <cos(n(5*phi1+1*phi2-4*phi3-2*phi4)>
4215 Double_t four5n3n1n1n = 0.; // <cos(n(5*phi1-3*phi2-1*phi3-1*phi4)>
4216 Double_t four5n2n2n1n = 0.; // <cos(n(5*phi1-2*phi2-2*phi3-1*phi4)>
403e3389 4217 Double_t four5n1n5n1n = 0.; // <cos(n(5*phi1+1*phi2-5*phi3-1*phi4)>
4218 Double_t four6n4n1n1n = 0.; // <cos(n(6*phi1-4*phi2-1*phi3-1*phi4)>
4219 Double_t four6n2n2n2n = 0.; // <cos(n(6*phi1-2*phi2-2*phi3-2*phi4)>
b84464d3 4220 if(dMult>3)
4221 {
4222 four6n3n2n1n = (reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ4nstarQ2nstar-reQ6nQ3nstarQ3nstar-reQ6nQ5nstarQ1nstar
4223 - reQ5nQ3nstarQ2nstar-reQ4nQ3nstarQ1nstar-reQ3nQ2nstarQ1nstar
4224 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+pow(dReQ5n,2.)+pow(dImQ5n,2.)
4225 + pow(dReQ4n,2.)+pow(dImQ4n,2.)+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4226 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4227 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4228 four3n2n3n2n = (dQ3nQ2nQ3nstarQ2nstar-2.*reQ5nQ3nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar
4229 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
4230 -(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
4231 + dMult*(dMult-6.))
4232 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4233 four4n1n3n2n = (reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nstarQ2nstar-reQ5nQ4nstarQ1nstar-reQ4nQ3nstarQ1nstar
4234 - reQ4nQ2nstarQ2nstar-reQ3nQ2nstarQ1nstar-reQ2nQ1nstarQ1nstar
4235 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4236 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4237 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4238 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4239 four3n3n3n3n = (2.*dMult*(dMult-3.)+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ3n,2.)
4240 + pow(dImQ3n,2.))-2.*reQ6nQ3nstarQ3nstar+(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4241 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
4242 //four4n2n3n3n = ; // I already have this one above
4243 four5n1n3n3n = (reQ5nQ1nQ3nstarQ3nstar-reQ6nQ5nstarQ1nstar-reQ6nQ3nstarQ3nstar-2.*reQ5nQ3nstarQ2nstar
4244 - 2.*reQ3nQ2nstarQ1nstar+pow(dReQ6n,2.)+pow(dImQ6n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4245 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4246 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4247 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4248 four4n2n4n2n = (dQ4nQ2nQ4nstarQ2nstar-2.*reQ6nQ4nstarQ2nstar-2.*reQ4nQ2nstarQ2nstar)
4249 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4250 - ((dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4251 + (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4252 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4253 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
4254 four5n1n4n2n = (reQ5nQ1nQ4nstarQ2nstar-reQ6nQ5nstarQ1nstar-reQ6nQ4nstarQ2nstar-reQ5nQ4nstarQ1nstar
4255 - reQ5nQ3nstarQ2nstar-reQ4nQ3nstarQ1nstar-reQ2nQ1nstarQ1nstar+pow(dReQ6n,2.)+pow(dImQ6n,2.)
4256 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4257 + pow(dReQ3n,2.)+pow(dImQ3n,2.)+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4258 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4259 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4260 four5n3n1n1n = (reQ5nQ3nstarQ1nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar-reQ5nQ3nstarQ2nstar-2.*reQ4nQ3nstarQ1nstar
4261 - reQ2nQ1nstarQ1nstar+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4262 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
4263 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4264 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4265 four5n2n2n1n = (reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ4nstarQ1nstar-2.*reQ5nQ3nstarQ2nstar-reQ4nQ2nstarQ2nstar
4266 - 2.*reQ3nQ2nstarQ1nstar+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
4267 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4268 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4269 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4270 four5n1n5n1n = (dQ5nQ1nQ5nstarQ1nstar-2.*reQ6nQ5nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar
4271 + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4272 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.))
53884472 4273 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4274
4275 // TBI: Recursive formula needed:
403e3389 4276 four6n4n1n1n = (reQ6nQ4nstarQ1nstarQ1nstar
4277 - dMult*(dMult-1.)*(dMult-2.)*(three2n1n1n+2.*three5n4n1n+2.*three6n5n1n+three6n4n2n)
4278 - dMult*(dMult-1.)*(2.*two1n1n+1.*two4n4n+1.*two6n6n+1.*two2n2n+2.*two5n5n)
4279 - 1.*dMult)
4280 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
53884472 4281
403e3389 4282 four6n2n2n2n = (reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ6nQ4nstarQ2nstar-3.*reQ4nQ2nstarQ2nstar
4283 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4284 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult)
4285 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4286 // Average 4-particle correlations for all events:
4287 fIntFlowCorrelationsAllPro->Fill(41.5,four6n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4288 fIntFlowCorrelationsAllPro->Fill(42.5,four3n2n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4289 fIntFlowCorrelationsAllPro->Fill(43.5,four4n1n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4290 fIntFlowCorrelationsAllPro->Fill(44.5,four3n3n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4291 //fIntFlowCorrelationsAllPro->Fill(45.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); // I already have this one above
4292 fIntFlowCorrelationsAllPro->Fill(46.5,four5n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4293 fIntFlowCorrelationsAllPro->Fill(47.5,four4n2n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4294 fIntFlowCorrelationsAllPro->Fill(48.5,four5n1n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4295 fIntFlowCorrelationsAllPro->Fill(49.5,four5n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4296 fIntFlowCorrelationsAllPro->Fill(50.5,four5n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4297 fIntFlowCorrelationsAllPro->Fill(51.5,four5n1n5n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
403e3389 4298 fIntFlowCorrelationsAllPro->Fill(58.5,four6n4n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4299 fIntFlowCorrelationsAllPro->Fill(59.5,four6n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4300 if(fCalculateAllCorrelationsVsM)
4301 {
4302 fIntFlowCorrelationsAllVsMPro[41]->Fill(dMult+0.5,four6n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4303 fIntFlowCorrelationsAllVsMPro[42]->Fill(dMult+0.5,four3n2n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4304 fIntFlowCorrelationsAllVsMPro[43]->Fill(dMult+0.5,four4n1n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4305 fIntFlowCorrelationsAllVsMPro[44]->Fill(dMult+0.5,four3n3n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4306 //fIntFlowCorrelationsAllVsMPro[45]->Fill(dMult+0.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4307 fIntFlowCorrelationsAllVsMPro[46]->Fill(dMult+0.5,four5n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4308 fIntFlowCorrelationsAllVsMPro[47]->Fill(dMult+0.5,four4n2n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4309 fIntFlowCorrelationsAllVsMPro[48]->Fill(dMult+0.5,four5n1n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4310 fIntFlowCorrelationsAllVsMPro[49]->Fill(dMult+0.5,four5n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4311 fIntFlowCorrelationsAllVsMPro[50]->Fill(dMult+0.5,four5n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4312 fIntFlowCorrelationsAllVsMPro[51]->Fill(dMult+0.5,four5n1n5n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
403e3389 4313 fIntFlowCorrelationsAllVsMPro[58]->Fill(dMult+0.5,four6n4n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4314 fIntFlowCorrelationsAllVsMPro[59]->Fill(dMult+0.5,four6n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4315 }
4316 } // end of if(dMult>3)
4317
4318 // 5-particle:
4319 Double_t five3n3n3n2n1n = 0.; // <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
4320 Double_t five4n2n3n2n1n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
4321 Double_t five3n2n3n1n1n = 0.; // <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
4322 Double_t five3n2n2n2n1n = 0.; // <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
4323 Double_t five5n1n3n2n1n = 0.; // <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
403e3389 4324 Double_t five6n2n2n1n1n = 0.; // <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5)>
4325 Double_t five4n1n1n3n3n = 0.; // <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5)>
b84464d3 4326 if(dMult>4)
4327 {
4328 five3n3n3n2n1n = (reQ3nQ3nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar
4329 + reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+3.*reQ6nQ3nstarQ3nstar+4.*reQ5nQ3nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar
4330 - 2.*(dMult-6.)*reQ3nQ2nstarQ1nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4331 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4332 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4333 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(3.*dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4334 - pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4335 + 2.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4336 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4337 five4n2n3n2n1n = (reQ4nQ2nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
4338 - reQ4nQ2nQ3nstarQ3nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar
4339 - reQ3nQ1nQ2nstarQ2nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4340 + 3.*reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ5nQ4nstarQ1nstar
4341 + 3.*reQ5nQ3nstarQ2nstar-(dMult-7.)*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+7.*reQ3nQ2nstarQ1nstar
4342 + 4.*reQ2nQ1nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4343 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4344 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4345 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4346 + 2.*(dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+(dMult-12.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4347 - 2.*dMult*(dMult-12.))
4348 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4349 five3n2n3n1n1n = (reQ3nQ2nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-2.*reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nstarQ1nstarQ1nstar
4350 - 2.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ5nQ4nstarQ1nstar+3.*reQ5nQ3nstarQ2nstar+6.*reQ4nQ3nstarQ1nstar
4351 + 2.*reQ4nQ2nstarQ2nstar+9.*reQ3nQ2nstarQ1nstar-(dMult-8.)*reQ2nQ1nstarQ1nstar
4352 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4353 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4354 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4355 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-12.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4356 + 2.*(dMult-9.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
4357 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4358 five3n2n2n2n1n = (reQ3nQ2nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
4359 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+reQ5nQ4nstarQ1nstar
4360 + 4.*reQ5nQ3nstarQ2nstar+reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar-2.*(dMult-6.)*reQ3nQ2nstarQ1nstar
4361 + 4.*reQ2nQ1nstarQ1nstar-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4362 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4363 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4364 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4365 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4366 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4367 five5n1n3n2n1n = (reQ5nQ1nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ3nstarQ3nstar
4368 - reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
4369 + 3.*reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+4.*reQ5nQ4nstarQ1nstar
4370 - (dMult-7.)*reQ5nQ3nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+6.*reQ3nQ2nstarQ1nstar
4371 + 3.*reQ2nQ1nstarQ1nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4372 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4373 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4374 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4375 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4376 + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4377 - 2.*dMult*(dMult-12.))
e1d101a6 4378 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
53884472 4379 // Peter Jochumzsen:
4380 five6n2n2n1n1n = (reQ6nQ2nstarQ2nstarQ1nstarQ1nstar
4381 - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.)
4382 - 14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.)
4383 - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.)
4384 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)
4385 - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
4386 - 6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.)
4387 + 2.*reQ2nQ1nstarQ1nstar + 8.*reQ3nQ2nstarQ1nstar
4388 + 5.*reQ6nQ4nstarQ2nstar - reQ6nQ4nstarQ1nstarQ1nstar
4389 + 2.*reQ6nQ3nstarQ3nstar - reQ6nQ2nstarQ2nstarQ2nstar
4390 + 4.*reQ4nQ2nstarQ2nstar - 2.*reQ4nQ2nstarQ1nstarQ1nstar
4391 + 2.*reQ5nQ4nstarQ1nstar - 2.*reQ5nQ2nstarQ2nstarQ1nstar
4392 + 4.*reQ4nQ3nstarQ1nstar + 4.*reQ5nQ3nstarQ2nstar
4393 + 4.*reQ6nQ5nstarQ1nstar - 4.*reQ6nQ3nstarQ2nstarQ1nstar + 24.*dMult)
e1d101a6 4394 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4395 // Peter Jochumzsen:
4396 five4n1n1n3n3n = (reQ4nQ1nQ1nQ3nstarQ3nstar-16.*pow(dReQ1n,2.)-16.*pow(dImQ1n,2.)
4397 - 10.*pow(dReQ2n,2.)-10.*pow(dImQ2n,2.)-12.*pow(dReQ3n,2.)-12.*pow(dImQ3n,2.)
4398 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)-4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
4399 - 2.*pow(dReQ6n,2.)-2.*pow(dImQ6n,2.)+6.*reQ2nQ1nstarQ1nstar
4400 - 1.*reQ6nQ4nstarQ1nstarQ1nstar-1.*reQ4nQ2nQ3nstarQ3nstar
4401 + 1.*reQ6nQ4nstarQ2nstar-2.*reQ5nQ1nQ3nstarQ3nstar
4402 + 2.*reQ4nQ2nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar
4403 - 2.*reQ3nQ1nstarQ1nstarQ1nstar+10.*reQ3nQ2nstarQ1nstar
4404 + 2.*reQ6nQ5nstarQ1nstar+2.*reQ6nQ3nstarQ3nstar
4405 - 4.*reQ4nQ1nQ3nstarQ2nstar+4.*reQ5nQ4nstarQ1nstar
4406 + 4.*reQ5nQ3nstarQ2nstar + 24.*dMult)
4407 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4408 // Average 5-particle correlations for all events:
4409 fIntFlowCorrelationsAllPro->Fill(52.5,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4410 fIntFlowCorrelationsAllPro->Fill(53.5,five4n2n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4411 fIntFlowCorrelationsAllPro->Fill(54.5,five3n2n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4412 fIntFlowCorrelationsAllPro->Fill(55.5,five3n2n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4413 fIntFlowCorrelationsAllPro->Fill(56.5,five5n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4414 fIntFlowCorrelationsAllPro->Fill(60.5,five6n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4415 fIntFlowCorrelationsAllPro->Fill(61.5,five4n1n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4416 if(fCalculateAllCorrelationsVsM)
4417 {
4418 fIntFlowCorrelationsAllVsMPro[52]->Fill(dMult+0.5,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4419 fIntFlowCorrelationsAllVsMPro[53]->Fill(dMult+0.5,five4n2n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4420 fIntFlowCorrelationsAllVsMPro[54]->Fill(dMult+0.5,five3n2n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4421 fIntFlowCorrelationsAllVsMPro[55]->Fill(dMult+0.5,five3n2n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4422 fIntFlowCorrelationsAllVsMPro[56]->Fill(dMult+0.5,five5n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4423 fIntFlowCorrelationsAllVsMPro[60]->Fill(dMult+0.5,five6n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4424 fIntFlowCorrelationsAllVsMPro[61]->Fill(dMult+0.5,five4n1n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4425 }
4426 } // end of if(dMult>4)
4427
4428 // 6-particle:
4429 Double_t six3n2n1n3n2n1n = 0.; // <cos(n(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
4430 Double_t six3n3n2n2n1n1n = 0.; // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-1*phi5-1*phi6)>
4431 if(dMult>5.)
4432 {
4433 six3n2n1n3n2n1n = (dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar-2.*reQ3nQ3nQ3nstarQ2nstarQ1nstar
4434 - 2.*reQ3nQ2nQ2nstarQ2nstarQ1nstar-2.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4435 - 2.*reQ3nQ2nQ3nstarQ1nstarQ1nstar-2.*reQ4nQ2nQ3nstarQ2nstarQ1nstar
4436 - 2.*reQ5nQ1nQ3nstarQ2nstarQ1nstar+4.*reQ6nQ3nstarQ2nstarQ1nstar
4437 + 2.*reQ5nQ1nQ4nstarQ2nstar+2.*reQ5nQ1nQ3nstarQ3nstar
4438 + 2.*reQ4nQ2nQ3nstarQ3nstar+6.*reQ4nQ1nQ3nstarQ2nstar
4439 + 2.*reQ5nQ3nstarQ1nstarQ1nstar+2.*reQ5nQ2nstarQ2nstarQ1nstar
4440 + 6.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ4nQ2nstarQ1nstarQ1nstar
4441 - 4.*reQ6nQ5nstarQ1nstar-4.*reQ6nQ4nstarQ2nstar-6.*reQ5nQ4nstarQ1nstar
4442 - 4.*reQ6nQ3nstarQ3nstar+2.*(dMult-11.)*reQ5nQ3nstarQ2nstar
4443 + 2.*(dMult-13.)*reQ4nQ3nstarQ1nstar-8.*reQ4nQ2nstarQ2nstar
4444 + 2.*(5.*dMult-32.)*reQ3nQ2nstarQ1nstar+2.*reQ3nQ1nstarQ1nstarQ1nstar
4445 + 2.*(dMult-13.)*reQ2nQ1nstarQ1nstar
4446 - (dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4447 + (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4448 + (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4449 - (dMult-11.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4450 - (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4451 + 4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-(dMult-12.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4452 - (dMult-16.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)
4453 + (dMult*dMult-19.*dMult+68.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4454 + (dMult*dMult-19.*dMult+72.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4455 + pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4456 + (dMult*dMult-20.*dMult+80.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4457 - dMult*(dMult-12.)*(dMult-10.))
4458 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4459
4460 // Peter Jochumzsen:
4461 six3n3n2n2n1n1n = (reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar
4462 + (80.-16.*dMult)*pow(dReQ1n,2.)+(80.-16.*dMult)*pow(dImQ1n,2.)
4463 + (78.-16.*dMult)*pow(dReQ2n,2.)+(78.-16.*dMult)*pow(dImQ2n,2.)
4464 + (72.-16.*dMult)*pow(dReQ3n,2.)+(72.-16.*dMult)*pow(dImQ3n,2.)
4465 + 14.*pow(dReQ4n,2.)+14.*pow(dImQ4n,2.)
4466 + 8.*pow(dReQ5n,2.)+8.*pow(dImQ5n,2.)
4467 + 6.*pow(dReQ6n,2.)+6.*pow(dImQ6n,2.)
4468 + 1.*reQ6nQ2nstarQ2nstarQ2nstar - 1.*reQ6nQ2nstarQ2nstarQ1nstarQ1nstar
4469 - 76.*reQ3nQ2nstarQ1nstar + 4.*reQ3nQ1nstarQ1nstarQ1nstar
4470 - 8.*reQ3nQ2nstarQ1nstar + 8.*dQ2nQ1nQ2nstarQ1nstar
4471 + 4.*reQ5nQ2nstarQ2nstarQ1nstar - 2.*reQ6nQ3nstarQ3nstar
4472 + 4.*reQ6nQ3nstarQ2nstarQ1nstar - 4.*reQ5nQ4nstarQ1nstar
4473 + 16.*dMult*reQ3nQ2nstarQ1nstar - 2.*reQ4nQ2nstarQ2nstar
4474 - 4.*reQ3nQ3nQ3nstarQ2nstarQ1nstar -8.*reQ4nQ3nstarQ1nstar
4475 - 10.*reQ4nQ2nstarQ2nstar + 4.*reQ4nQ2nstarQ1nstarQ1nstar
4476 - 12.*reQ4nQ3nstarQ1nstar + 8.*dQ3nQ1nQ3nstarQ1nstar
4477 + 8.*reQ3nQ1nQ2nstarQ2nstar - 4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4478 + 5.*reQ4nQ2nQ3nstarQ3nstar+2.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4479 + 4.*reQ5nQ1nQ3nstarQ3nstar+2.*pow(pow(dReQ3n,2.)+pow(dImQ3n,2.),2.)
4480 - 6.*reQ6nQ3nstarQ3nstar - 14.*reQ2nQ1nstarQ1nstar
4481 - 1.*reQ3nQ3nQ2nstarQ2nstarQ2nstar-4.*reQ3nQ2nQ2nstarQ2nstarQ1nstar
4482 - 1.*reQ4nQ1nQ1nQ3nstarQ3nstar-8.*reQ5nQ3nstarQ2nstar
4483 + 2.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.) - 10.*reQ2nQ1nstarQ1nstar
4484 - 4.*reQ6nQ5nstarQ1nstar-5.*reQ6nQ4nstarQ2nstar
4485 + 1.*reQ6nQ4nstarQ1nstarQ1nstar-8.*reQ5nQ3nstarQ2nstar
4486 + 4.*reQ4nQ1nQ3nstarQ2nstar+8.*dQ3nQ2nQ3nstarQ2nstar
4487 - 120.*dMult + 16.*dMult*dMult)
4488 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4489
4490 // Average 6-particle correlations for all events:
4491 fIntFlowCorrelationsAllPro->Fill(57.5,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4492 fIntFlowCorrelationsAllPro->Fill(62.5,six3n3n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4493 if(fCalculateAllCorrelationsVsM)
4494 {
4495 fIntFlowCorrelationsAllVsMPro[57]->Fill(dMult+0.5,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4496 fIntFlowCorrelationsAllVsMPro[62]->Fill(dMult+0.5,six3n3n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4497 }
4498 } // end of if(dMult>5.)
4499
4500} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations()
4501
4502//=====================================================================================================
4503
4504void AliFlowAnalysisWithQCumulants::CalculateMixedHarmonics()
4505{
4506 // Calculate in this method all multi-particle azimuthal correlations in mixed harmonics.
4507 // (Remark: For completeness sake, we also calculate here again correlations in the same harmonic.)
4508
4509 // a) Access Q-vectors and multiplicity of current event;
c10259fb 4510 // b) Determine multiplicity weights and fill some histos;
e1d101a6 4511 // c) Calculate 2-p correlations;
4512 // d) Calculate 3-p correlations;
4513 // e) Calculate 4-p correlations;
4514 // f) Calculate 5-p correlations;
4515 // g) Calculate 6-p correlations;
4516 // h) Calculate 7-p correlations;
c10259fb 4517 // i) Calculate 8-p correlations.
e1d101a6 4518
4519 // a) Access Q-vectors and multiplicity of current event:
4520 // Multiplicity of an event:
4521 Double_t dMult = (*fSpk)(0,0);
4522 // Real parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
4523 Double_t dReQ1n = (*fReQ)(0,0);
4524 Double_t dReQ2n = (*fReQ)(1,0);
4525 Double_t dReQ3n = (*fReQ)(2,0);
4526 Double_t dReQ4n = (*fReQ)(3,0);
4527 Double_t dReQ5n = (*fReQ)(4,0);
4528 Double_t dReQ6n = (*fReQ)(5,0);
4529 Double_t dReQ7n = (*fReQ)(6,0);
4530 Double_t dReQ8n = (*fReQ)(7,0);
4531 Double_t dReQ9n = (*fReQ)(8,0);
4532 Double_t dReQ10n = (*fReQ)(9,0);
4533 Double_t dReQ11n = (*fReQ)(10,0);
4534 Double_t dReQ12n = (*fReQ)(11,0);
4535 // Imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
4536 Double_t dImQ1n = (*fImQ)(0,0);
4537 Double_t dImQ2n = (*fImQ)(1,0);
4538 Double_t dImQ3n = (*fImQ)(2,0);
4539 Double_t dImQ4n = (*fImQ)(3,0);
4540 Double_t dImQ5n = (*fImQ)(4,0);
4541 Double_t dImQ6n = (*fImQ)(5,0);
4542 Double_t dImQ7n = (*fImQ)(6,0);
4543 Double_t dImQ8n = (*fImQ)(7,0);
4544 Double_t dImQ9n = (*fImQ)(8,0);
4545 Double_t dImQ10n = (*fImQ)(9,0);
4546 Double_t dImQ11n = (*fImQ)(10,0);
4547 Double_t dImQ12n = (*fImQ)(11,0);
c10259fb 4548 // All mixed correlators:
4549 Double_t allMixedCorrelators[139] = {0.};
e1d101a6 4550
4551 // Real parts of expressions involving various combinations of Q-vectors which appears
4552 // simultaneously in several equations for multiparticle correlations bellow:
4553 // Re[Q_{2n}Q_{n}^*Q_{n}^*]
4554 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n;
4555 // Re[Q_{6n}Q_{3n}^*Q_{3n}^*]
4556 Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n;
4557 // Re[Q_{4n}Q_{2n}^*Q_{2n}^*]
4558 Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
4559 // Re[Q_{4n}Q_{3n}^*Q_{n}^*]
4560 Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
4561 // Re[Q_{3n}Q_{2n}^*Q_{n}^*]
4562 Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
4563 + dImQ3n*dImQ2n*dReQ1n;
4564 // Re[Q_{5n}Q_{3n}^*Q_{2n}^*]
4565 Double_t reQ5nQ3nstarQ2nstar = dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
4566 + dImQ5n*dImQ2n*dReQ3n;
4567 // Re[Q_{5n}Q_{4n}^*Q_{1n}^*]
4568 Double_t reQ5nQ4nstarQ1nstar = dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
4569 + dImQ5n*dImQ4n*dReQ1n;
4570 // Re[Q_{6n}Q_{5n}^*Q_{1n}^*]
4571 Double_t reQ6nQ5nstarQ1nstar = dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
4572 + dImQ6n*dImQ5n*dReQ1n;
4573 // Re[Q_{6n}Q_{4n}^*Q_{2n}^*]
4574 Double_t reQ6nQ4nstarQ2nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
4575 + dImQ6n*dImQ4n*dReQ2n;
4576 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{2n}^*]
4577 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
4578 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
4579 // Re[Q_{3n}Q_{n}^*Q_{n}^*Q_{n}^*]
4580 Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
4581 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
4582 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
4583 Double_t reQ6nQ2nstarQ2nstarQ2nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
4584 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
4585 // Re[Q_{4n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4586 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
4587 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);
4588 // Re[Q_{4n}Q_{2n}^*Q_{3n}^*Q_{3n}^*]
4589 Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
4590 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;
4591 // Re[Q_{4n}Q_{n}Q_{3n}^*Q_{2n}^*]
4592 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
4593 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
4594 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
4595 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
4596
4597 // Re[Q_{5n}Q_{n}Q_{4n}^*Q_{2n}^*]
4598 Double_t reQ5nQ1nQ4nstarQ2nstar = dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
4599 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
4600 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
4601 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n;
4602 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{3n}^*]
4603 Double_t reQ5nQ1nQ3nstarQ3nstar = dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
4604 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
4605 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n;
4606 // Re[Q_{5n}Q_{3n}^*Q_{n}^*Q_{n}^*]
4607 Double_t reQ5nQ3nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
4608 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
4609 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n;
4610 // Re[Q_{5n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
4611 Double_t reQ5nQ2nstarQ2nstarQ1nstar = -pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
4612 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
4613 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n;
4614 // Re[Q_{6n}Q_{4n}^*Q_{n}^*Q_{n}^*]
4615 Double_t reQ6nQ4nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
4616 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
4617 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n;
4618 /*// |Q_{2n}|^2 |Q_{n}|^2
4619 Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
4620 // |Q_{4n}|^2 |Q_{2n}|^2
4621 Double_t dQ4nQ2nQ4nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.));
4622 // |Q_{3n}|^2 |Q_{2n}|^2
4623 Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.));
4624 // |Q_{5n}|^2 |Q_{n}|^2
4625 Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
4626 // |Q_{3n}|^2 |Q_{n}|^2
4627 Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));*/
4628 // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*]
4629 /*Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
4630 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));*/
4631 // Re[Q_{2n}Q_{2n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4632 /*Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
4633 * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);*/
4634 /*// Re[Q_{4n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4635 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
4636 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
4637 - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;*/
4638 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4639 /*Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
4640 * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
4641 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);*/
4642 // Re[Q_{6n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4643 Double_t reQ6nQ3nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
4644 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
4645 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
4646 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n;
4647 // Re[Q_{3n}Q_{3n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4648 /*Double_t reQ3nQ3nQ3nstarQ2nstarQ1nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
4649 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
4650 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);*/
4651 /*// Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
4652 Double_t reQ3nQ3nQ2nstarQ2nstarQ2nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.)
4653 - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
4654 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n
4655 - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.)
4656 + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);*/
4657 // Re[Q_{4n}Q_{2n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4658 /*Double_t reQ4nQ2nQ3nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
4659 * (dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
4660 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n);*/
4661 // Re[Q_{3n}Q_{2n}Q_{3n}^*Q_{n}^*Q_{n}^*]
4662 /*Double_t reQ3nQ2nQ3nstarQ1nstarQ1nstar = -(pow(dImQ3n,2.)+pow(dReQ3n,2.))
4663 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n);*/
4664 // Re[Q_{3n}Q_{2n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
4665 /*Double_t reQ3nQ2nQ2nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
4666 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
4667 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);*/
4668/* // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4669 Double_t reQ5nQ1nQ3nstarQ2nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
4670 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
4671 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
4672 */
4673 /*
4674 // Re[Q_{2n}Q_{2n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4675 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
4676 + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
4677 * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
4678 - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n);
4679 // Re[Q_{3n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4680 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
4681 * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
4682 + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
4683 */
4684 // |Q_{2n}|^2 |Q_{n}|^4
4685 //Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.);
4686 /*
4687 // |Q_{3n}|^2 |Q_{2n}|^2 |Q_{n}|^2
4688 Double_t dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4689 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
4690 // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4691 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4692 * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
4693 + 2.*dReQ1n*dImQ1n*dImQ2n);
4694 */
4695 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*]
4696 /*Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
4697 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
4698 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
4699 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
4700 + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
4701 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n
4702 - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
4703 */
4704 // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*]
4705 /*
4706 Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
4707 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
4708 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
4709 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n
4710 + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
4711 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
4712 + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n;*/
4713 /*
4714 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*]
4715 Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n
4716 - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n
4717 + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n
4718 + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n
4719 - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n
4720 + dImQ1n*dImQ2n*dImQ3n);
4721 */
4722
c10259fb 4723 // b) Determine multiplicity weights and fill some histos:
e1d101a6 4724 Double_t d2pMultiplicityWeight = 0.; // weight for <2>_{...} to get <<2>>_{...}
4725 Double_t d3pMultiplicityWeight = 0.; // weight for <3>_{...} to get <<3>>_{...}
4726 Double_t d4pMultiplicityWeight = 0.; // weight for <4>_{...} to get <<4>>_{...}
4727 Double_t d5pMultiplicityWeight = 0.; // weight for <5>_{...} to get <<5>>_{...}
c10259fb 4728 Double_t d6pMultiplicityWeight = 0.; // weight for <6>_{...} to get <<6>>_{...}
e1d101a6 4729 Double_t d7pMultiplicityWeight = 0.; // weight for <7>_{...} to get <<7>>_{...}
c10259fb 4730 Double_t d8pMultiplicityWeight = 0.; // weight for <8>_{...} to get <<8>>_{...}
e1d101a6 4731 if(!strcmp(fMultiplicityWeight->Data(),"combinations")) // default multiplicity weight
4732 {
4733 d2pMultiplicityWeight = dMult*(dMult-1.);
4734 d3pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.);
4735 d4pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.);
4736 d5pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.);
c10259fb 4737 d6pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.);
e1d101a6 4738 d7pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.);
c10259fb 4739 d8pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.);
e1d101a6 4740 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
4741 {
4742 d2pMultiplicityWeight = 1.;
4743 d3pMultiplicityWeight = 1.;
4744 d4pMultiplicityWeight = 1.;
4745 d5pMultiplicityWeight = 1.;
c10259fb 4746 d6pMultiplicityWeight = 1.;
e1d101a6 4747 d7pMultiplicityWeight = 1.;
c10259fb 4748 d8pMultiplicityWeight = 1.;
e1d101a6 4749 } else if(!strcmp(fMultiplicityWeight->Data(),"multiplicity"))
4750 {
4751 d2pMultiplicityWeight = dMult;
4752 d3pMultiplicityWeight = dMult;
4753 d4pMultiplicityWeight = dMult;
4754 d5pMultiplicityWeight = dMult;
c10259fb 4755 d6pMultiplicityWeight = dMult;
e1d101a6 4756 d7pMultiplicityWeight = dMult;
c10259fb 4757 d8pMultiplicityWeight = dMult;
4758 }
4759 for(Int_t p=0;p<=1;p++) // power (0=linear,1=quadratic)
4760 {
4761 fMixedHarmonicEventWeights[p]->Fill(0.5,pow(dMult,p+1));
4762 fMixedHarmonicEventWeights[p]->Fill(1.5,pow(d2pMultiplicityWeight,p+1));
4763 fMixedHarmonicEventWeights[p]->Fill(2.5,pow(d3pMultiplicityWeight,p+1));
4764 fMixedHarmonicEventWeights[p]->Fill(3.5,pow(d4pMultiplicityWeight,p+1));
4765 fMixedHarmonicEventWeights[p]->Fill(4.5,pow(d5pMultiplicityWeight,p+1));
4766 fMixedHarmonicEventWeights[p]->Fill(5.5,pow(d6pMultiplicityWeight,p+1));
4767 fMixedHarmonicEventWeights[p]->Fill(6.5,pow(d7pMultiplicityWeight,p+1));
4768 fMixedHarmonicEventWeights[p]->Fill(7.5,pow(d8pMultiplicityWeight,p+1));
4769 } // end of for(Int_t p=0;p<=1;p++) // power (0=linear,1=quadratic)
4770 fMixedHarmonicProductOfEventWeights->Fill(0.5,0.5,dMult*dMult);
4771 fMixedHarmonicProductOfEventWeights->Fill(0.5,1.5,dMult*d2pMultiplicityWeight);
4772 fMixedHarmonicProductOfEventWeights->Fill(0.5,2.5,dMult*d3pMultiplicityWeight);
4773 fMixedHarmonicProductOfEventWeights->Fill(0.5,3.5,dMult*d4pMultiplicityWeight);
4774 fMixedHarmonicProductOfEventWeights->Fill(0.5,4.5,dMult*d5pMultiplicityWeight);
4775 fMixedHarmonicProductOfEventWeights->Fill(0.5,5.5,dMult*d6pMultiplicityWeight);
4776 fMixedHarmonicProductOfEventWeights->Fill(0.5,6.5,dMult*d7pMultiplicityWeight);
4777 fMixedHarmonicProductOfEventWeights->Fill(0.5,7.5,dMult*d8pMultiplicityWeight);
4778 fMixedHarmonicProductOfEventWeights->Fill(1.5,1.5,d2pMultiplicityWeight*d2pMultiplicityWeight);
4779 fMixedHarmonicProductOfEventWeights->Fill(1.5,2.5,d2pMultiplicityWeight*d3pMultiplicityWeight);
4780 fMixedHarmonicProductOfEventWeights->Fill(1.5,3.5,d2pMultiplicityWeight*d4pMultiplicityWeight);
4781 fMixedHarmonicProductOfEventWeights->Fill(1.5,4.5,d2pMultiplicityWeight*d5pMultiplicityWeight);
4782 fMixedHarmonicProductOfEventWeights->Fill(1.5,5.5,d2pMultiplicityWeight*d6pMultiplicityWeight);
4783 fMixedHarmonicProductOfEventWeights->Fill(1.5,6.5,d2pMultiplicityWeight*d7pMultiplicityWeight);
4784 fMixedHarmonicProductOfEventWeights->Fill(1.5,7.5,d2pMultiplicityWeight*d8pMultiplicityWeight);
4785 fMixedHarmonicProductOfEventWeights->Fill(2.5,2.5,d3pMultiplicityWeight*d3pMultiplicityWeight);
4786 fMixedHarmonicProductOfEventWeights->Fill(2.5,3.5,d3pMultiplicityWeight*d4pMultiplicityWeight);
4787 fMixedHarmonicProductOfEventWeights->Fill(2.5,4.5,d3pMultiplicityWeight*d5pMultiplicityWeight);
4788 fMixedHarmonicProductOfEventWeights->Fill(2.5,5.5,d3pMultiplicityWeight*d6pMultiplicityWeight);
4789 fMixedHarmonicProductOfEventWeights->Fill(2.5,6.5,d3pMultiplicityWeight*d7pMultiplicityWeight);
4790 fMixedHarmonicProductOfEventWeights->Fill(2.5,7.5,d3pMultiplicityWeight*d8pMultiplicityWeight);
4791 fMixedHarmonicProductOfEventWeights->Fill(3.5,3.5,d4pMultiplicityWeight*d4pMultiplicityWeight);
4792 fMixedHarmonicProductOfEventWeights->Fill(3.5,4.5,d4pMultiplicityWeight*d5pMultiplicityWeight);
4793 fMixedHarmonicProductOfEventWeights->Fill(3.5,5.5,d4pMultiplicityWeight*d6pMultiplicityWeight);
4794 fMixedHarmonicProductOfEventWeights->Fill(3.5,6.5,d4pMultiplicityWeight*d7pMultiplicityWeight);
4795 fMixedHarmonicProductOfEventWeights->Fill(3.5,7.5,d4pMultiplicityWeight*d8pMultiplicityWeight);
4796 fMixedHarmonicProductOfEventWeights->Fill(4.5,4.5,d5pMultiplicityWeight*d5pMultiplicityWeight);
4797 fMixedHarmonicProductOfEventWeights->Fill(4.5,5.5,d5pMultiplicityWeight*d6pMultiplicityWeight);
4798 fMixedHarmonicProductOfEventWeights->Fill(4.5,6.5,d5pMultiplicityWeight*d7pMultiplicityWeight);
4799 fMixedHarmonicProductOfEventWeights->Fill(4.5,7.5,d5pMultiplicityWeight*d8pMultiplicityWeight);
4800 fMixedHarmonicProductOfEventWeights->Fill(5.5,5.5,d6pMultiplicityWeight*d6pMultiplicityWeight);
4801 fMixedHarmonicProductOfEventWeights->Fill(5.5,6.5,d6pMultiplicityWeight*d7pMultiplicityWeight);
4802 fMixedHarmonicProductOfEventWeights->Fill(5.5,7.5,d6pMultiplicityWeight*d8pMultiplicityWeight);
4803 fMixedHarmonicProductOfEventWeights->Fill(6.5,6.5,d7pMultiplicityWeight*d7pMultiplicityWeight);
4804 fMixedHarmonicProductOfEventWeights->Fill(6.5,7.5,d7pMultiplicityWeight*d8pMultiplicityWeight);
4805 fMixedHarmonicProductOfEventWeights->Fill(7.5,7.5,d8pMultiplicityWeight*d8pMultiplicityWeight);
4806
e1d101a6 4807 // c) Calculate 2-p correlations:
4808 Double_t two1n1n = 0.; // <2>_{1n|1n} = <cos(1n(phi1-phi2))>
4809 Double_t two2n2n = 0.; // <2>_{2n|2n} = <cos(2n(phi1-phi2))>
4810 Double_t two3n3n = 0.; // <2>_{3n|3n} = <cos(3n(phi1-phi2))>
4811 Double_t two4n4n = 0.; // <2>_{4n|4n} = <cos(4n(phi1-phi2))>
4812 Double_t two5n5n = 0.; // <2>_{5n|5n} = <cos(5n(phi1-phi2))>
4813 Double_t two6n6n = 0.; // <2>_{6n|6n} = <cos(6n(phi1-phi2))>
4814 if(dMult>1.)
4815 {
4816 two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.));
4817 two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.));
4818 two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.));
4819 two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.));
4820 two5n5n = (pow(dReQ5n,2.)+pow(dImQ5n,2.)-dMult)/(dMult*(dMult-1.));
4821 two6n6n = (pow(dReQ6n,2.)+pow(dImQ6n,2.)-dMult)/(dMult*(dMult-1.));
4822 f2pCorrelations->Fill(0.5,two1n1n,d2pMultiplicityWeight);
4823 f2pCorrelations->Fill(1.5,two2n2n,d2pMultiplicityWeight);
4824 f2pCorrelations->Fill(2.5,two3n3n,d2pMultiplicityWeight);
4825 f2pCorrelations->Fill(3.5,two4n4n,d2pMultiplicityWeight);
4826 f2pCorrelations->Fill(4.5,two5n5n,d2pMultiplicityWeight);
4827 f2pCorrelations->Fill(5.5,two6n6n,d2pMultiplicityWeight);
c10259fb 4828 allMixedCorrelators[0]=two1n1n;
4829 allMixedCorrelators[1]=two2n2n;
4830 allMixedCorrelators[2]=two3n3n;
4831 allMixedCorrelators[3]=two4n4n;
4832 allMixedCorrelators[4]=two5n5n;
4833 allMixedCorrelators[5]=two6n6n;
e1d101a6 4834 } // end of if(dMult>1.)
4835
4836 // d) Calculate 3-p correlations:
4837 // d1) Two distinct harmonics (3):
4838 Double_t three2n1n1n = 0.; // <3>_{2n|1n,1n} = <cos(n(2*phi1-1*phi2-1*phi3))>
4839 Double_t three4n2n2n = 0.; // <3>_{4n|2n,2n} = <cos(n(4*phi1-2*phi2-2*phi3))>
4840 Double_t three6n3n3n = 0.; // <3>_{6n|3n,3n} = <cos(n(6*phi1-3*phi2-3*phi3))>
4841 // d2) Three distinct harmonics (6):
4842 Double_t three3n2n1n = 0.; // <3>_{3n|2n,1n} = <cos(n(3*phi1-2*phi2-1*phi3))>
4843 Double_t three4n3n1n = 0.; // <3>_{4n|3n,1n} = <cos(n(4*phi1-3*phi2-1*phi3))>
4844 Double_t three5n3n2n = 0.; // <3>_{5n|3n,2n} = <cos(n(5*phi1-3*phi2-2*phi3))>
4845 Double_t three5n4n1n = 0.; // <3>_{5n|4n,1n} = <cos(n(5*phi1-4*phi2-1*phi3))>
4846 Double_t three6n4n2n = 0.; // <3>_{6n|4n,2n} = <cos(n(6*phi1-4*phi2-2*phi3))>
4847 Double_t three6n5n1n = 0.; // <3>_{6n|5n,1n} = <cos(n(6*phi1-5*phi2-1*phi3))>
4848 if(dMult>2.)
4849 {
4850 three2n1n1n = (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n
4851 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4852 / (dMult*(dMult-1.)*(dMult-2.));
4853 three4n2n2n = (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
4854 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
4855 / (dMult*(dMult-1.)*(dMult-2.));
4856 three6n3n3n = (reQ6nQ3nstarQ3nstar
c10259fb 4857 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
e1d101a6 4858 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*dMult)
4859 / (dMult*(dMult-1.)*(dMult-2.));
4860 three3n2n1n = (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
4861 + dImQ3n*dImQ2n*dReQ1n-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4862 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4863 / (dMult*(dMult-1.)*(dMult-2.));
4864 three4n3n1n = (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
4865 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4866 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4867 / (dMult*(dMult-1.)*(dMult-2.));
4868 three5n3n2n = (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
4869 + dImQ5n*dImQ2n*dReQ3n-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4870 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
4871 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4872 / (dMult*(dMult-1.)*(dMult-2.));
4873 three5n4n1n = (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
4874 + dImQ5n*dImQ4n*dReQ1n-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4875 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4876 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4877 / (dMult*(dMult-1.)*(dMult-2.));
4878 three6n4n2n = (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
4879 + dImQ6n*dImQ4n*dReQ2n-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4880 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4881 / (dMult*(dMult-1.)*(dMult-2.));
4882 three6n5n1n = (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
4883 + dImQ6n*dImQ5n*dReQ1n-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4884 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))
4885 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4886 / (dMult*(dMult-1.)*(dMult-2.));
4887 f3pCorrelations->Fill(0.5,three2n1n1n,d3pMultiplicityWeight);
4888 f3pCorrelations->Fill(1.5,three4n2n2n,d3pMultiplicityWeight);
4889 f3pCorrelations->Fill(2.5,three6n3n3n,d3pMultiplicityWeight);
4890 //f3pCorrelations->Fill(3.5,0.,d3pMultiplicityWeight); // empty TBI
4891 f3pCorrelations->Fill(4.5,three3n2n1n,d3pMultiplicityWeight);
4892 f3pCorrelations->Fill(5.5,three4n3n1n,d3pMultiplicityWeight);
4893 f3pCorrelations->Fill(6.5,three5n3n2n,d3pMultiplicityWeight);
4894 f3pCorrelations->Fill(7.5,three5n4n1n,d3pMultiplicityWeight);
4895 f3pCorrelations->Fill(8.5,three6n4n2n,d3pMultiplicityWeight);
4896 f3pCorrelations->Fill(9.5,three6n5n1n,d3pMultiplicityWeight);
c10259fb 4897 allMixedCorrelators[6]=three2n1n1n;
4898 allMixedCorrelators[7]=three4n2n2n;
4899 allMixedCorrelators[8]=three6n3n3n;
4900 allMixedCorrelators[9]=three3n2n1n;
4901 allMixedCorrelators[10]=three4n3n1n;
4902 allMixedCorrelators[11]=three5n3n2n;
4903 allMixedCorrelators[12]=three5n4n1n;
4904 allMixedCorrelators[13]=three6n4n2n;
4905 allMixedCorrelators[14]=three6n5n1n;
e1d101a6 4906 } // end of if(dMult>2.)
4907
4908 // e) Calculate 4-p correlations:
4909 // e1) Single harmonic (6):
4910 Double_t four1n1n1n1n = 0.; // <4>_{1n,1n|1n,1n} = <cos(1*n(phi1+phi2-phi3-phi4))>
4911 Double_t four2n2n2n2n = 0.; // <4>_{2n,2n|2n,2n} = <cos(2*n(phi1+phi2-phi3-phi4))>
4912 Double_t four3n3n3n3n = 0.; // <4>_{3n,3n|3n,3n} = <cos(3*n(phi1+phi2-phi3-phi4))>
4913 Double_t four4n4n4n4n = 0.; // <4>_{4n,4n|4n,4n} = <cos(4*n(phi1+phi2-phi3-phi4))>
4914 Double_t four5n5n5n5n = 0.; // <4>_{5n,5n|5n,5n} = <cos(5*n(phi1+phi2-phi3-phi4))>
4915 Double_t four6n6n6n6n = 0.; // <4>_{6n,6n|6n,6n} = <cos(6*n(phi1+phi2-phi3-phi4))>
4916 // e2) "Standard candles" (15):
4917 Double_t four2n1n2n1n = 0.; // <4>_{2n,1n|2n,1n} = <cos(n(2*phi1+1*phi2-2*phi3-1*phi4))>
4918 Double_t four3n1n3n1n = 0.; // <4>_{3n,1n|3n,1n} = <cos(n(3*phi1+1*phi2-3*phi3-1*phi4))>
4919 Double_t four3n2n3n2n = 0.; // <4>_{3n,2n|3n,2n} = <cos(n(3*phi1+2*phi2-3*phi3-2*phi4))>
4920 Double_t four4n1n4n1n = 0.; // <4>_{4n,1n|4n,1n} = <cos(n(4*phi1+1*phi2-4*phi3-1*phi4))>
4921 Double_t four4n2n4n2n = 0.; // <4>_{4n,2n|4n,2n} = <cos(n(4*phi1+2*phi2-4*phi3-2*phi4))>
4922 Double_t four4n3n4n3n = 0.; // <4>_{4n,3n|4n,3n} = <cos(n(4*phi1+3*phi2-4*phi3-3*phi4))>
4923 Double_t four5n1n5n1n = 0.; // <4>_{5n,1n|5n,1n} = <cos(n(5*phi1+1*phi2-5*phi3-1*phi4))>
4924 Double_t four5n2n5n2n = 0.; // <4>_{5n,2n|5n,2n} = <cos(n(5*phi1+2*phi2-5*phi3-2*phi4))>
4925 Double_t four5n3n5n3n = 0.; // <4>_{5n,3n|5n,3n} = <cos(n(5*phi1+3*phi2-5*phi3-3*phi4))>
4926 Double_t four5n4n5n4n = 0.; // <4>_{5n,4n|5n,4n} = <cos(n(5*phi1+4*phi2-5*phi3-4*phi4))>
4927 Double_t four6n1n6n1n = 0.; // <4>_{6n,1n|6n,1n} = <cos(n(6*phi1+1*phi2-6*phi3-1*phi4))>
4928 Double_t four6n2n6n2n = 0.; // <4>_{6n,2n|6n,2n} = <cos(n(6*phi1+2*phi2-6*phi3-2*phi4))>
4929 Double_t four6n3n6n3n = 0.; // <4>_{6n,3n|6n,3n} = <cos(n(6*phi1+3*phi2-6*phi3-3*phi4))>
4930 Double_t four6n4n6n4n = 0.; // <4>_{6n,4n|6n,4n} = <cos(n(6*phi1+4*phi2-6*phi3-4*phi4))>
4931 Double_t four6n5n6n5n = 0.; // <4>_{6n,5n|6n,5n} = <cos(n(6*phi1+5*phi2-6*phi3-5*phi4))>
4932 // e3) Two distinct harmonics (2):
4933 Double_t four3n1n1n1n = 0.; // <4>_{3n|1n,1n,1n} = <cos(n(3*phi1-1*phi2-1*phi3-1*phi4))>
4934 Double_t four6n2n2n2n = 0.; // <4>_{6n|2n,2n,2n} = <cos(n(6*phi1-2*phi2-2*phi3-2*phi4))>
4935 // e4) Three distinct harmonics (10):
4936 Double_t four3n1n2n2n = 0.; // <4>_{3n,1n|2n,2n} = <cos(n(3*phi1+1*phi2-2*phi3-2*phi4))>
4937 Double_t four4n2n1n1n = 0.; // <4>_{4n|2n,1n,1n} = <cos(n(4*phi1-2*phi2-1*phi3-1*phi4))>
4938 Double_t four4n2n3n3n = 0.; // <4>_{4n,2n|3n,3n} = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
4939 Double_t four5n2n2n1n = 0.; // <4>_{5n|2n,2n,1n} = <cos(n(5*phi1-2*phi2-2*phi3-1*phi4))>
4940 Double_t four5n3n1n1n = 0.; // <4>_{5n|3n,1n,1n} = <cos(n(5*phi1-3*phi2-1*phi3-1*phi4))>
4941 Double_t four5n1n3n3n = 0.; // <4>_{5n,1n|3n,3n} = <cos(n(5*phi1+1*phi2-3*phi3-3*phi4))>
4942 Double_t four5n3n4n4n = 0.; // <4>_{5n,3n|4n,4n} = <cos(n(5*phi1+3*phi2-4*phi3-4*phi4))>
4943 Double_t four6n4n1n1n = 0.; // <4>_{6n|4n,1n,1n} = <cos(n(6*phi1-4*phi2-1*phi3-1*phi4))>
4944 Double_t four6n2n4n4n = 0.; // <4>_{6n,2n|4n,4n} = <cos(n(6*phi1+2*phi2-4*phi3-4*phi4))>
4945 Double_t four6n4n5n5n = 0.; // <4>_{6n,4n|5n,5n} = <cos(n(6*phi1+4*phi2-5*phi3-5*phi4))>
4946 // e5) Four distinct harmonics (8):
4947 Double_t four4n1n3n2n = 0.; // <4>_{4n,1n|3n,2n} = <cos(n(4*phi1+1*phi2-3*phi3-2*phi4))>
4948 Double_t four5n1n4n2n = 0.; // <4>_{5n,1n|4n,2n} = <cos(n(5*phi1+1*phi2-4*phi3-2*phi4))>
4949 Double_t four5n2n4n3n = 0.; // <4>_{5n,2n|4n,3n} = <cos(n(5*phi1+2*phi2-4*phi3-3*phi4))>
4950 Double_t four6n1n4n3n = 0.; // <4>_{6n,1n|4n,3n} = <cos(n(6*phi1+1*phi2-4*phi3-3*phi4))>
4951 Double_t four6n1n5n2n = 0.; // <4>_{6n,1n|5n,2n} = <cos(n(6*phi1+1*phi2-5*phi3-2*phi4))>
4952 Double_t four6n3n2n1n = 0.; // <4>_{6n|3n,2n,1n} = <cos(n(6*phi1-3*phi2-2*phi3-1*phi4))>
4953 Double_t four6n2n5n3n = 0.; // <4>_{6n,2n|5n,3n} = <cos(n(6*phi1+2*phi2-5*phi3-3*phi4))>
4954 Double_t four6n3n5n4n = 0.; // <4>_{6n,3n|5n,4n} = <cos(n(6*phi1+3*phi2-5*phi3-4*phi4))>
4955 if(dMult>3.)
4956 {
4957 // Single harmonic (6):
4958 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
4959 + pow(dImQ1n,2.))-2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
4960 + (pow(dReQ2n,2.)+pow(dImQ2n,2.)))
4961 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
4962 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
4963 + pow(dImQ2n,2.))-2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
4964 + (pow(dReQ4n,2.)+pow(dImQ4n,2.)))
4965 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
4966 four3n3n3n3n = (2.*dMult*(dMult-3.)+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ3n,2.)
4967 + pow(dImQ3n,2.))-2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
4968 + (pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4969 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
4970 four4n4n4n4n = (2.*dMult*(dMult-3.)+pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ4n,2.)
4971 + pow(dImQ4n,2.))-2.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
4972 + (pow(dReQ8n,2.)+pow(dImQ8n,2.)))
4973 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
4974 four5n5n5n5n = (2.*dMult*(dMult-3.)+pow((pow(dReQ5n,2.)+pow(dImQ5n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ5n,2.)
4975 + pow(dImQ5n,2.))-2.*(pow(dReQ5n,2.)*dReQ10n+2.*dReQ5n*dImQ5n*dImQ10n-pow(dImQ5n,2.)*dReQ10n)
4976 + (pow(dReQ10n,2.)+pow(dImQ10n,2.)))
4977 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
4978 four6n6n6n6n = (2.*dMult*(dMult-3.)+pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ6n,2.)
4979 + pow(dImQ6n,2.))-2.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
4980 + (pow(dReQ12n,2.)+pow(dImQ12n,2.)))
4981 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
4982 // "Standard candles" (15):
4983 four2n1n2n1n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4984 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
4985 + dImQ3n*dImQ2n*dReQ1n)-2.*(pow(dReQ1n,2.)*dReQ2n
4986 + 2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n))
4987 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4988 - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4989 + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
4990 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4991 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
4992 four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4993 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
4994 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
4995 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4996 + pow(dReQ2n,2.)+pow(dImQ2n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4997 + dMult*(dMult-6.))
4998 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4999 four3n2n3n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5000 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5001 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5002 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5003 - (dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
5004 + dMult*(dMult-6.))
5005 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5006 four4n1n4n1n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5007 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ1n*dImQ4n+dImQ5n*dImQ1n*dReQ4n)
5008 - 2.*(dReQ3n*dReQ4n*dReQ1n+dImQ3n*dImQ4n*dReQ1n+dReQ3n*dImQ4n*dImQ1n-dImQ3n*dImQ1n*dReQ4n)
5009 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)
5010 - (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
5011 + dMult*(dMult-6.))
5012 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5013 four4n2n4n2n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5014 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
5015 + dImQ6n*dImQ4n*dReQ2n)-2.*(pow(dReQ2n,2.)*dReQ4n
5016 + 2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n))
5017 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5018 - ((dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5019 + (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
5020 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5021 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5022 four4n3n4n3n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5023 - 2.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ3n*dImQ4n+dImQ7n*dImQ3n*dReQ4n)
5024 - 2.*(dReQ1n*dReQ4n*dReQ3n+dImQ1n*dImQ4n*dReQ3n+dReQ1n*dImQ4n*dImQ3n-dImQ1n*dImQ3n*dReQ4n)
5025 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5026 - (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
5027 + dMult*(dMult-6.))
5028 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5029 four5n1n5n1n = (((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5030 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5031 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5032 + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5033 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.))
5034 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5035 four5n2n5n2n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5036 - 2.*(dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ2n*dImQ5n+dImQ7n*dImQ2n*dReQ5n)
5037 - 2.*(dReQ3n*dReQ5n*dReQ2n+dImQ3n*dImQ5n*dReQ2n+dReQ3n*dImQ5n*dImQ2n-dImQ3n*dImQ2n*dReQ5n)
5038 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)
5039 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
5040 + dMult*(dMult-6.))
5041 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5042 four5n3n5n3n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5043 - 2.*(dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
5044 - 2.*(dReQ2n*dReQ5n*dReQ3n+dImQ2n*dImQ5n*dReQ3n+dReQ2n*dImQ5n*dImQ3n-dImQ2n*dImQ3n*dReQ5n)
5045 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5046 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
5047 + dMult*(dMult-6.))
5048 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5049 four5n4n5n4n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5050 - 2.*(dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ4n*dImQ5n+dImQ9n*dImQ4n*dReQ5n)
5051 - 2.*(dReQ1n*dReQ5n*dReQ4n+dImQ1n*dImQ5n*dReQ4n+dReQ1n*dImQ5n*dImQ4n-dImQ1n*dImQ4n*dReQ5n)
5052 + pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5053 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
5054 + dMult*(dMult-6.))
5055 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5056 four6n1n6n1n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5057 - 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ1n*dImQ6n+dImQ7n*dImQ1n*dReQ6n)
5058 - 2.*(dReQ5n*dReQ6n*dReQ1n+dImQ5n*dImQ6n*dReQ1n+dReQ5n*dImQ6n*dImQ1n-dImQ5n*dImQ1n*dReQ6n)
5059 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5060 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
5061 + dMult*(dMult-6.))
5062 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5063 four6n2n6n2n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5064 - 2.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
5065 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5066 + pow(dReQ8n,2.)+pow(dImQ8n,2.)-(dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5067 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5068 + dMult*(dMult-6.))
5069 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5070 four6n3n6n3n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5071 - 2.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n
5072 + dImQ9n*dImQ6n*dReQ3n)-2.*(pow(dReQ3n,2.)*dReQ6n
5073 + 2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n))
5074 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5075 - ((dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5076 + (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-(pow(dReQ9n,2.)+pow(dImQ9n,2.)))
5077 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5078 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5079 four6n4n6n4n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5080 - 2.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
5081 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5082 + pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5083 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
5084 + dMult*(dMult-6.))
5085 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5086 four6n5n6n5n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5087 - 2.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ5n*dImQ6n+dImQ11n*dImQ5n*dReQ6n)
5088 - 2.*(dReQ1n*dReQ6n*dReQ5n+dImQ1n*dImQ6n*dReQ5n+dReQ1n*dImQ6n*dImQ5n-dImQ1n*dImQ5n*dReQ6n)
5089 + pow(dReQ11n,2.)+pow(dImQ11n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5090 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
5091 + dMult*(dMult-6.))
5092 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5093 // Two distinct harmonics (2):
5094 four3n1n1n1n = (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
5095 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3)
5096 - 3.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5097 - 3.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5098 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5099 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5100 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5101 four6n2n2n2n = (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
5102 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3)
5103 - 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5104 - 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5105 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5106 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult)
5107 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5108 // Three distinct harmonics (10):
5109 four3n1n2n2n = ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5110 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
5111 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5112 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5113 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n))
5114 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5115 - (2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5116 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5117 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5118 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5119 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5120 four4n2n1n1n = ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5121 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n)
5122 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5123 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5124 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n))
5125 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5126 - ((pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5127 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5128 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5129 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5130 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5131 four4n2n3n3n = ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
5132 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n
5133 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5134 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5135 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5136 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5137 + (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5138 + 2.*(2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5139 + (pow(dReQ1n,2.)+pow(dImQ1n,2.))-3.*dMult))
5140 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5141 four5n2n2n1n = (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
5142 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
5143 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n
5144 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5145 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5146 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5147 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5148 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
5149 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5150 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5151 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5152 four5n3n1n1n = (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
5153 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
5154 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n
5155 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5156 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5157 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5158 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5159 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5160 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5161 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5162 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5163 four5n1n3n3n = (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
5164 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
5165 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n
5166 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5167 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5168 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5169 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5170 + pow(dReQ6n,2.)+pow(dImQ6n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5171 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5172 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5173 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5174 four5n3n4n4n = ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ5n*dReQ3n-dImQ5n*dImQ3n)
5175 + 2.*dReQ4n*dImQ4n*(dReQ5n*dImQ3n+dImQ5n*dReQ3n)
5176 - (dReQ8n*dReQ3n*dReQ5n-dReQ8n*dImQ3n*dImQ5n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
5177 - (pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5178 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5179 - 2.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
5180 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5181 + 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5182 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5183 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5184 four6n4n1n1n = (-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
5185 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
5186 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n
5187 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5188 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5189 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5190 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5191 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5192 + pow(dReQ4n,2.)+pow(dImQ4n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5193 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5194 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5195 four6n2n4n4n = ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
5196 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n)
5197 - (pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5198 - (dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
5199 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n))
5200 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5201 - (2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5202 - (pow(dReQ8n,2.)+pow(dImQ8n,2.))-2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5203 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
5204 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5205 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5206 four6n4n5n5n = ((pow(dReQ5n,2.)-pow(dImQ5n,2.))*(dReQ6n*dReQ4n-dImQ6n*dImQ4n)
5207 + 2.*dReQ5n*dImQ5n*(dReQ6n*dImQ4n+dImQ6n*dReQ4n)
5208 - (dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
5209 - (pow(dReQ5n,2.)*dReQ10n+2.*dReQ5n*dImQ5n*dImQ10n-pow(dImQ5n,2.)*dReQ10n)
5210 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5211 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5212 + pow(dReQ10n,2.)+pow(dImQ10n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5213 + 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5214 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5215 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5216 // Four distinct harmonics (8):
5217 four4n1n3n2n = (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5218 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5219 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5220 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n
5221 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5222 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5223 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5224 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5225 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5226 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5227 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5228 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5229 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5230 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5231 four5n1n4n2n = (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
5232 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
5233 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n+dImQ1n*dImQ2n*dReQ4n*dReQ5n
5234 + dReQ1n*dReQ2n*dReQ4n*dReQ5n
5235 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5236 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5237 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5238 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5239 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5240 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5241 + pow(dReQ6n,2.)+pow(dImQ6n,2.)
5242 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5243 + pow(dReQ3n,2.)+pow(dImQ3n,2.)+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5244 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5245 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5246 four5n2n4n3n = (dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
5247 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
5248 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
5249 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n
5250 - (dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
5251 - (dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
5252 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5253 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5254 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5255 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5256 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5257 + 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5258 + 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5259 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5260 four6n1n4n3n = (dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
5261 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
5262 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n+dImQ1n*dImQ3n*dReQ4n*dReQ6n
5263 + dReQ1n*dReQ3n*dReQ4n*dReQ6n
5264 - (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
5265 - (dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
5266 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5267 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5268 - (dReQ4n*dReQ1n*dReQ3n-dReQ4n*dImQ1n*dImQ3n+dImQ4n*dReQ1n*dImQ3n+dImQ4n*dImQ1n*dReQ3n)
5269 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5270 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5271 + 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5272 + pow(dReQ2n,2.)+pow(dImQ2n,2.)+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5273 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5274 four6n1n5n2n = (dImQ1n*dImQ2n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ1n*dReQ2n
5275 + dImQ2n*dImQ6n*dReQ1n*dReQ5n-dImQ1n*dImQ6n*dReQ2n*dReQ5n
5276 - dImQ2n*dImQ5n*dReQ1n*dReQ6n+dImQ1n*dImQ5n*dReQ2n*dReQ6n+dImQ1n*dImQ2n*dReQ5n*dReQ6n
5277 + dReQ1n*dReQ2n*dReQ5n*dReQ6n
5278 - (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
5279 - (dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
5280 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5281 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5282 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5283 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5284 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5285 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
5286 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5287 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5288 four6n3n2n1n = (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
5289 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
5290 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
5291 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n
5292 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5293 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5294 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5295 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5296 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5297 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5298 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5299 + pow(dReQ4n,2.)+pow(dImQ4n,2.)+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5300 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5301 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5302 four6n2n5n3n = (dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
5303 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
5304 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n+dImQ2n*dImQ3n*dReQ5n*dReQ6n
5305 + dReQ2n*dReQ3n*dReQ5n*dReQ6n
5306 - (dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
5307 - (dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n+dImQ8n*dImQ5n*dReQ3n)
5308 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5309 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5310 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5311 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5312 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5313 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5314 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5315 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5316 four6n3n5n4n = (dImQ3n*dImQ4n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ3n*dReQ4n
5317 + dImQ4n*dImQ6n*dReQ3n*dReQ5n-dImQ3n*dImQ6n*dReQ4n*dReQ5n
5318 - dImQ4n*dImQ5n*dReQ3n*dReQ6n+dImQ3n*dImQ5n*dReQ4n*dReQ6n+dImQ3n*dImQ4n*dReQ5n*dReQ6n
5319 + dReQ3n*dReQ4n*dReQ5n*dReQ6n
5320 - (dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
5321 - (dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ5n*dImQ4n+dImQ9n*dImQ5n*dReQ4n)
5322 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5323 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5324 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5325 - (dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
5326 + pow(dReQ9n,2.)+pow(dImQ9n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5327 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5328 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5329 + pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5330 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5331 f4pCorrelations->Fill(0.5,four1n1n1n1n,d4pMultiplicityWeight);
5332 f4pCorrelations->Fill(1.5,four2n2n2n2n,d4pMultiplicityWeight);
5333 f4pCorrelations->Fill(2.5,four3n3n3n3n,d4pMultiplicityWeight);
5334 f4pCorrelations->Fill(3.5,four4n4n4n4n,d4pMultiplicityWeight);
5335 f4pCorrelations->Fill(4.5,four5n5n5n5n,d4pMultiplicityWeight);
5336 f4pCorrelations->Fill(5.5,four6n6n6n6n,d4pMultiplicityWeight);
5337 //f4pCorrelations->Fill(6.5,0.,d4pMultiplicityWeight); // empty
5338 f4pCorrelations->Fill(7.5,four2n1n2n1n,d4pMultiplicityWeight);
5339 f4pCorrelations->Fill(8.5,four3n1n3n1n,d4pMultiplicityWeight);
5340 f4pCorrelations->Fill(9.5,four3n2n3n2n,d4pMultiplicityWeight);
5341 f4pCorrelations->Fill(10.5,four4n1n4n1n,d4pMultiplicityWeight);
5342 f4pCorrelations->Fill(11.5,four4n2n4n2n,d4pMultiplicityWeight);
5343 f4pCorrelations->Fill(12.5,four4n3n4n3n,d4pMultiplicityWeight);
5344 f4pCorrelations->Fill(13.5,four5n1n5n1n,d4pMultiplicityWeight);
5345 f4pCorrelations->Fill(14.5,four5n2n5n2n,d4pMultiplicityWeight);
5346 f4pCorrelations->Fill(15.5,four5n3n5n3n,d4pMultiplicityWeight);
5347 f4pCorrelations->Fill(16.5,four5n4n5n4n,d4pMultiplicityWeight);
5348 f4pCorrelations->Fill(17.5,four6n1n6n1n,d4pMultiplicityWeight);
5349 f4pCorrelations->Fill(18.5,four6n2n6n2n,d4pMultiplicityWeight);
5350 f4pCorrelations->Fill(19.5,four6n3n6n3n,d4pMultiplicityWeight);
5351 f4pCorrelations->Fill(20.5,four6n4n6n4n,d4pMultiplicityWeight);
5352 f4pCorrelations->Fill(21.5,four6n5n6n5n,d4pMultiplicityWeight);
5353 //f4pCorrelations->Fill(22.5,0.,d4pMultiplicityWeight); // empty
5354 f4pCorrelations->Fill(23.5,four3n1n1n1n,d4pMultiplicityWeight);
5355 f4pCorrelations->Fill(24.5,four6n2n2n2n,d4pMultiplicityWeight);
5356 //f4pCorrelations->Fill(25.5,0.,d4pMultiplicityWeight); // empty
5357 f4pCorrelations->Fill(26.5,four3n1n2n2n,d4pMultiplicityWeight);
5358 f4pCorrelations->Fill(27.5,four4n2n1n1n,d4pMultiplicityWeight);
5359 f4pCorrelations->Fill(28.5,four4n2n3n3n,d4pMultiplicityWeight);
5360 f4pCorrelations->Fill(29.5,four5n2n2n1n,d4pMultiplicityWeight);
5361 f4pCorrelations->Fill(30.5,four5n3n1n1n,d4pMultiplicityWeight);
5362 f4pCorrelations->Fill(31.5,four5n1n3n3n,d4pMultiplicityWeight);
5363 f4pCorrelations->Fill(32.5,four5n3n4n4n,d4pMultiplicityWeight);
5364 f4pCorrelations->Fill(33.5,four6n4n1n1n,d4pMultiplicityWeight);
5365 f4pCorrelations->Fill(34.5,four6n2n4n4n,d4pMultiplicityWeight);
5366 f4pCorrelations->Fill(35.5,four6n4n5n5n,d4pMultiplicityWeight);
5367 //f4pCorrelations->Fill(36.5,0.,d4pMultiplicityWeight); // empty
5368 f4pCorrelations->Fill(37.5,four4n1n3n2n,d4pMultiplicityWeight);
5369 f4pCorrelations->Fill(38.5,four5n1n4n2n,d4pMultiplicityWeight);
5370 f4pCorrelations->Fill(39.5,four5n2n4n3n,d4pMultiplicityWeight);
5371 f4pCorrelations->Fill(40.5,four6n1n4n3n,d4pMultiplicityWeight);
5372 f4pCorrelations->Fill(41.5,four6n1n5n2n,d4pMultiplicityWeight);
5373 f4pCorrelations->Fill(42.5,four6n3n2n1n,d4pMultiplicityWeight);
5374 f4pCorrelations->Fill(43.5,four6n2n5n3n,d4pMultiplicityWeight);
5375 f4pCorrelations->Fill(44.5,four6n3n5n4n,d4pMultiplicityWeight);
c10259fb 5376 allMixedCorrelators[15]=four1n1n1n1n;
5377 allMixedCorrelators[16]=four2n2n2n2n;
5378 allMixedCorrelators[17]=four3n3n3n3n;
5379 allMixedCorrelators[18]=four4n4n4n4n;
5380 allMixedCorrelators[19]=four5n5n5n5n;
5381 allMixedCorrelators[20]=four6n6n6n6n;
5382 allMixedCorrelators[21]=four2n1n2n1n;
5383 allMixedCorrelators[22]=four3n1n3n1n;
5384 allMixedCorrelators[23]=four3n2n3n2n;
5385 allMixedCorrelators[24]=four4n1n4n1n;
5386 allMixedCorrelators[25]=four4n2n4n2n;
5387 allMixedCorrelators[26]=four4n3n4n3n;
5388 allMixedCorrelators[27]=four5n1n5n1n;
5389 allMixedCorrelators[28]=four5n2n5n2n;
5390 allMixedCorrelators[29]=four5n3n5n3n;
5391 allMixedCorrelators[30]=four5n4n5n4n;
5392 allMixedCorrelators[31]=four6n1n6n1n;
5393 allMixedCorrelators[32]=four6n2n6n2n;
5394 allMixedCorrelators[33]=four6n3n6n3n;
5395 allMixedCorrelators[34]=four6n4n6n4n;
5396 allMixedCorrelators[35]=four6n5n6n5n;
5397 allMixedCorrelators[36]=four3n1n1n1n;
5398 allMixedCorrelators[37]=four6n2n2n2n;
5399 allMixedCorrelators[38]=four3n1n2n2n;
5400 allMixedCorrelators[39]=four4n2n1n1n;
5401 allMixedCorrelators[40]=four4n2n3n3n;
5402 allMixedCorrelators[41]=four5n2n2n1n;
5403 allMixedCorrelators[42]=four5n3n1n1n;
5404 allMixedCorrelators[43]=four5n1n3n3n;
5405 allMixedCorrelators[44]=four5n3n4n4n;
5406 allMixedCorrelators[45]=four6n4n1n1n;
5407 allMixedCorrelators[46]=four6n2n4n4n;
5408 allMixedCorrelators[47]=four6n4n5n5n;
5409 allMixedCorrelators[48]=four4n1n3n2n;
5410 allMixedCorrelators[49]=four5n1n4n2n;
5411 allMixedCorrelators[50]=four5n2n4n3n;
5412 allMixedCorrelators[51]=four6n1n4n3n;
5413 allMixedCorrelators[52]=four6n1n5n2n;
5414 allMixedCorrelators[53]=four6n3n2n1n;
5415 allMixedCorrelators[54]=four6n2n5n3n;
5416 allMixedCorrelators[55]=four6n3n5n4n;
e1d101a6 5417 } // end of if(dMult>3.)
5418
5419 // f) Calculate 5-p correlations:
5420 // f1) "Standard candles" (30):
5421 Double_t five3n2n3n1n1n = 0.; // <5>_{3n,2n|3n,1n,1n} = <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5))>
5422 Double_t five4n1n2n2n1n = 0.; // <5>_{4n,1n|2n,2n,1n} = <cos(n(4*phi1+1*phi2-2*phi3-2*phi4-1*phi5))>
5423 Double_t five4n2n3n2n1n = 0.; // <5>_{4n,2n|3n,2n,1n} = <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5))>
5424 Double_t five4n3n3n2n2n = 0.; // <5>_{4n,3n|3n,2n,2n} = <cos(n(4*phi1+3*phi2-3*phi3-2*phi4-2*phi5))>
5425 Double_t five4n2n4n1n1n = 0.; // <5>_{4n,2n|4n,1n,1n} = <cos(n(4*phi1+2*phi2-4*phi3-1*phi4-1*phi5))>
5426 Double_t five4n3n4n2n1n = 0.; // <5>_{4n,3n|4n,2n,1n} = <cos(n(4*phi1+3*phi2-4*phi3-2*phi4-1*phi5))>
5427 Double_t five5n1n3n2n1n = 0.; // <5>_{5n,1n|3n,2n,1n} = <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5))>
5428 Double_t five5n2n5n1n1n = 0.; // <5>_{5n,2n|5n,1n,1n} = <cos(n(5*phi1+2*phi2-5*phi3-1*phi4-1*phi5))>
5429 Double_t five5n2n4n2n1n = 0.; // <5>_{5n,2n|4n,2n,1n} = <cos(n(5*phi1+2*phi2-4*phi3-2*phi4-1*phi5))>
5430 Double_t five5n3n4n3n1n = 0.; // <5>_{5n,3n|4n,3n,1n} = <cos(n(5*phi1+3*phi2-4*phi3-3*phi4-1*phi5))>
5431 Double_t five5n4n4n3n2n = 0.; // <5>_{5n,4n|4n,3n,2n} = <cos(n(5*phi1+4*phi2-4*phi3-3*phi4-2*phi5))>
5432 Double_t five5n3n5n2n1n = 0.; // <5>_{5n,3n|5n,2n,1n} = <cos(n(5*phi1+3*phi2-5*phi3-2*phi4-1*phi5))>
5433 Double_t five5n4n5n2n2n = 0.; // <5>_{5n,4n|5n,2n,2n} = <cos(n(5*phi1+4*phi2-5*phi3-2*phi4-2*phi5))>
5434 Double_t five5n4n5n3n1n = 0.; // <5>_{5n,4n|5n,3n,1n} = <cos(n(5*phi1+4*phi2-5*phi3-3*phi4-1*phi5))>
5435 Double_t five6n1n3n3n1n = 0.; // <5>_{6n,1n|3n,3n,1n} = <cos(n(6*phi1+1*phi2-3*phi3-3*phi4-1*phi5))>
5436 Double_t five6n2n3n3n2n = 0.; // <5>_{6n,2n|3n,3n,2n} = <cos(n(6*phi1+2*phi2-3*phi3-3*phi4-2*phi5))>
5437 Double_t five6n1n4n2n1n = 0.; // <5>_{6n,1n|4n,2n,1n} = <cos(n(6*phi1+1*phi2-4*phi3-2*phi4-1*phi5))>
5438 Double_t five6n3n4n3n2n = 0.; // <5>_{6n,3n|4n,3n,2n} = <cos(n(6*phi1+3*phi2-4*phi3-3*phi4-2*phi5))>
5439 Double_t five6n4n4n3n3n = 0.; // <5>_{6n,4n|4n,3n,3n} = <cos(n(6*phi1+4*phi2-4*phi3-3*phi4-3*phi5))>
5440 Double_t five6n2n5n2n1n = 0.; // <5>_{6n,2n|5n,2n,1n} = <cos(n(6*phi1+2*phi2-5*phi3-2*phi4-1*phi5))>
5441 Double_t five6n3n5n3n1n = 0.; // <5>_{6n,3n|5n,3n,1n} = <cos(n(6*phi1+3*phi2-5*phi3-3*phi4-1*phi5))>
5442 Double_t five6n4n5n4n1n = 0.; // <5>_{6n,4n|5n,4n,1n} = <cos(n(6*phi1+4*phi2-5*phi3-4*phi4-1*phi5))>
5443 Double_t five6n5n5n3n3n = 0.; // <5>_{6n,5n|5n,3n,3n} = <cos(n(6*phi1+5*phi2-5*phi3-3*phi4-3*phi5))>
5444 Double_t five6n2n6n1n1n = 0.; // <5>_{6n,2n|6n,1n,1n} = <cos(n(6*phi1+2*phi2-6*phi3-1*phi4-1*phi5))>
5445 Double_t five6n3n6n2n1n = 0.; // <5>_{6n,3n|6n,2n,1n} = <cos(n(6*phi1+3*phi2-6*phi3-2*phi4-1*phi5))>
5446 Double_t five6n4n6n2n2n = 0.; // <5>_{6n,4n|6n,2n,2n} = <cos(n(6*phi1+4*phi2-6*phi3-2*phi4-2*phi5))>
5447 Double_t five6n4n6n3n1n = 0.; // <5>_{6n,4n|6n,3n,1n} = <cos(n(6*phi1+4*phi2-6*phi3-3*phi4-1*phi5))>
5448 Double_t five6n5n5n4n2n = 0.; // <5>_{6n,5n|5n,4n,2n} = <cos(n(6*phi1+5*phi2-5*phi3-4*phi4-2*phi5))>
5449 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
5450 Double_t five6n5n6n4n1n = 0.; // <5>_{6n,5n|6n,4n,1n} = <cos(n(6*phi1+5*phi2-6*phi3-4*phi4-1*phi5))>
5451 // f2) Two distinct harmonics (9):
5452 Double_t five2n1n1n1n1n = 0.; // <5>_{2n,1n|1n,1n,1n} = <cos(n(2*phi1+1*phi2-1*phi3-1*phi4-1*phi5))>
5453 Double_t five2n2n2n1n1n = 0.; // <5>_{2n,2n|2n,1n,1n} = <cos(n(2*phi1+2*phi2-2*phi3-1*phi4-1*phi5))>
5454 Double_t five3n3n2n2n2n = 0.; // <5>_{3n,3n|2n,2n,2n} = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
5455 Double_t five4n1n1n1n1n = 0.; // <5>_{4n|1n,1n,1n,1n} = <cos(n(4*phi1-1*phi2-1*phi3-1*phi4-1*phi5))>
5456 Double_t five4n2n2n2n2n = 0.; // <5>_{4n,2n|2n,2n,2n} = <cos(n(4*phi1+2*phi2-2*phi3-2*phi4-2*phi5))>
5457 Double_t five4n4n4n2n2n = 0.; // <5>_{4n,4n|4n,2n,2n} = <cos(n(4*phi1+4*phi2-4*phi3-2*phi4-2*phi5))>
5458 Double_t five6n3n3n3n3n = 0.; // <5>_{6n,3n|3n,3n,3n} = <cos(n(6*phi1+3*phi2-3*phi3-3*phi4-3*phi5))>
5459 Double_t five6n6n4n4n4n = 0.; // <5>_{6n,6n|4n,4n,4n} = <cos(n(6*phi1+6*phi2-4*phi3-4*phi4-4*phi5))>
5460 Double_t five6n6n6n3n3n = 0.; // <5>_{6n,6n|6n,3n,3n} = <cos(n(6*phi1+6*phi2-6*phi3-3*phi4-3*phi5))>
5461 // f3) Three distinct harmonics (30):
5462 Double_t five3n1n2n1n1n = 0.; // <5>_{3n,1n|2n,1n,1n} = <cos(n(3*phi1+1*phi2-2*phi3-1*phi4-1*phi5))>
5463 Double_t five3n2n2n2n1n = 0.; // <5>_{3n,2n|2n,2n,1n} = <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5))>
5464 Double_t five3n3n3n2n1n = 0.; // <5>_{3n,3n|3n,2n,1n} = <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5))>
5465 Double_t five4n1n3n1n1n = 0.; // <5>_{4n,1n|3n,1n,1n} = <cos(n(4*phi1+1*phi2-3*phi3-1*phi4-1*phi5))>
5466 Double_t five4n1n1n3n3n = 0.; // <5>_{4n,1n,1n|3n,3n} = <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5))>
5467 Double_t five4n3n3n3n1n = 0.; // <5>_{4n,3n|3n,3n,1n} = <cos(n(4*phi1+3*phi2-3*phi3-3*phi4-1*phi5))>
5468 Double_t five4n4n3n3n2n = 0.; // <5>_{4n,4n|3n,3n,2n} = <cos(n(4*phi1+4*phi2-3*phi3-3*phi4-2*phi5))>
5469 Double_t five4n4n4n3n1n = 0.; // <5>_{4n,4n|4n,3n,1n} = <cos(n(4*phi1+4*phi2-4*phi3-3*phi4-1*phi5))>
5470 Double_t five5n2n1n1n1n = 0.; // <5>_{5n|2n,1n,1n,1n} = <cos(n(5*phi1-2*phi2-1*phi3-1*phi4-1*phi5))>
5471 Double_t five5n1n2n2n2n = 0.; // <5>_{5n,1n|2n,2n,2n} = <cos(n(5*phi1+1*phi2-2*phi3-2*phi4-2*phi5))>
5472 Double_t five5n2n3n2n2n = 0.; // <5>_{5n,2n|3n,2n,2n} = <cos(n(5*phi1+2*phi2-3*phi3-2*phi4-2*phi5))>
5473 Double_t five5n3n3n3n2n = 0.; // <5>_{5n,3n|3n,3n,2n} = <cos(n(5*phi1+3*phi2-3*phi3-3*phi4-2*phi5))>
5474 Double_t five5n1n4n1n1n = 0.; // <5>_{5n,1n|4n,1n,1n} = <cos(n(5*phi1+1*phi2-4*phi3-1*phi4-1*phi5))>
5475 Double_t five5n4n3n3n3n = 0.; // <5>_{5n,4n|3n,3n,3n} = <cos(n(5*phi1+4*phi2-3*phi3-3*phi4-3*phi5))>
5476 Double_t five5n4n4n4n1n = 0.; // <5>_{5n,4n|4n,4n,1n} = <cos(n(5*phi1+4*phi2-4*phi3-4*phi4-1*phi5))>
5477 Double_t five5n5n4n3n3n = 0.; // <5>_{5n,5n|4n,3n,3n} = <cos(n(5*phi1+5*phi2-4*phi3-3*phi4-3*phi5))>
5478 Double_t five5n5n4n4n2n = 0.; // <5>_{5n,5n|4n,4n,2n} = <cos(n(5*phi1+5*phi2-4*phi3-4*phi4-2*phi5))>
5479 Double_t five5n5n5n3n2n = 0.; // <5>_{5n,5n|5n,3n,2n} = <cos(n(5*phi1+5*phi2-5*phi3-3*phi4-2*phi5))>
5480 Double_t five5n5n5n4n1n = 0.; // <5>_{5n,5n|5n,4n,1n} = <cos(n(5*phi1+5*phi2-5*phi3-4*phi4-1*phi5))>
5481 Double_t five6n2n2n1n1n = 0.; // <5>_{6n|2n,2n,1n,1n} = <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5))>
5482 Double_t five6n3n1n1n1n = 0.; // <5>_{6n|3n,1n,1n,1n} = <cos(n(6*phi1-3*phi2-1*phi3-1*phi4-1*phi5))>
5483 Double_t five6n1n1n4n4n = 0.; // <5>_{6n,1n,1n|4n,4n} = <cos(n(6*phi1+1*phi2+1*phi3-4*phi4-4*phi5))>
5484 Double_t five6n1n5n1n1n = 0.; // <5>_{6n,1n|5n,1n,1n} = <cos(n(6*phi1+1*phi2-5*phi3-1*phi4-1*phi5))>
5485 Double_t five6n2n4n2n2n = 0.; // <5>_{6n,2n|4n,2n,2n} = <cos(n(6*phi1+2*phi2-4*phi3-2*phi4-2*phi5))>
5486 Double_t five6n4n4n4n2n = 0.; // <5>_{6n,4n|4n,4n,2n} = <cos(n(6*phi1+4*phi2-4*phi3-4*phi4-2*phi5))>
5487 Double_t five6n2n2n5n5n = 0.; // <5>_{6n,2n,2n|5n,5n} = <cos(n(6*phi1+2*phi2+2*phi3-5*phi4-5*phi5))>
5488 Double_t five6n5n5n5n1n = 0.; // <5>_{6n,5n|5n,5n,1n} = <cos(n(6*phi1+5*phi2-5*phi3-5*phi4-1*phi5))>
5489 Double_t five6n6n5n5n2n = 0.; // <5>_{6n,6n|5n,5n,2n} = <cos(n(6*phi1+6*phi2-5*phi3-5*phi4-2*phi5))>
5490 Double_t five6n6n6n4n2n = 0.; // <5>_{6n,6n|6n,4n,2n} = <cos(n(6*phi1+6*phi2-6*phi3-4*phi4-2*phi5))>
5491 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
5492 // Four distinct harmonics (11):
5493 Double_t five5n2n3n3n1n = 0.; // <5>_{5n,2n|3n,3n,1n} = <cos(n(5*phi1+2*phi2-3*phi3-3*phi4-1*phi5))>
5494 Double_t five5n1n1n4n3n = 0.; // <5>_{5n,1n,1n|4n,3n} = <cos(n(5*phi1+1*phi2+1*phi3-4*phi4-3*phi5))>
5495 Double_t five5n3n4n2n2n = 0.; // <5>_{5n,3n|4n,2n,2n} = <cos(n(5*phi1+3*phi2-4*phi3-2*phi4-2*phi5))>
5496 Double_t five5n2n1n4n4n = 0.; // <5>_{5n,2n,1n|4n,4n} = <cos(n(5*phi1+2*phi2+1*phi3-4*phi4-4*phi5))>
5497 Double_t five6n1n3n2n2n = 0.; // <5>_{6n,1n|3n,2n,2n} = <cos(n(6*phi1+1*phi2-3*phi3-2*phi4-2*phi5))>
5498 Double_t five6n3n4n4n1n = 0.; // <5>_{6n,3n|4n,4n,1n} = <cos(n(6*phi1+3*phi2-4*phi3-4*phi4-1*phi5))>
5499 Double_t five6n1n1n5n3n = 0.; // <5>_{6n,1n,1n|5n,3n} = <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
5500 Double_t five6n3n5n2n2n = 0.; // <5>_{6n,3n|5n,2n,2n} = <cos(n(6*phi1+3*phi2-5*phi3-2*phi4-2*phi5))>
5501 Double_t five6n5n4n4n3n = 0.; // <5>_{6n,5n|4n,4n,3n} = <cos(n(6*phi1+5*phi2-4*phi3-4*phi4-3*phi5))>
5502 Double_t five6n3n1n5n5n = 0.; // <5>_{6n,3n,1n|5n,5n} = <cos(n(6*phi1+3*phi2+1*phi3-5*phi4-5*phi5))>
5503 Double_t five6n6n5n4n3n = 0.; // <5>_{6n,6n|5n,4n,3n} = <cos(n(6*phi1+6*phi2-5*phi3-4*phi4-3*phi5))>
5504 // Five distinct harmonics (3):
5505 Double_t five6n2n4n3n1n = 0.; // <5>_{6n,2n|4n,3n,1n} = <cos(n(6*phi1+2*phi2-4*phi3-3*phi4-1*phi5))>
5506 Double_t five6n2n1n5n4n = 0.; // <5>_{6n,2n,1n|5n,4n} = <cos(n(6*phi1+2*phi2+1*phi3-5*phi4-4*phi5))>
5507 Double_t five6n4n5n3n2n = 0.; // <5>_{6n,4n|5n,3n,2n} = <cos(n(6*phi1+4*phi2-5*phi3-3*phi4-2*phi5))>
5508 if(dMult>4.)
5509 {
5510 five3n2n3n1n1n = (-(pow(dImQ3n,2.)+pow(dReQ3n,2.))
5511 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n)
5512 - (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
5513 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
5514 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n)
5515 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5516 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5517 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5518 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5519 - (dReQ3n*pow(dReQ1n,3.)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
5520 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2.)-dImQ3n*pow(dImQ1n,3.))
5521 - 2.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5522 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5523 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5524 + 3.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5525 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5526 + 2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5527 + 9.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5528 - (dMult-8.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5529 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5530 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5531 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5532 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-12.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5533 + 2.*(dMult-9.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
5534 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5535 five4n1n2n2n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))
5536 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
5537 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5538 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5539 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5540 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5541 - 2.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
5542 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
5543 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
5544 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
5545 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
5546 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5547 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5548 + (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5549 + 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5550 + 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5551 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5552 + 3.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5553 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5554 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5555 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5556 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5557 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5558 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5559 - 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5560 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5561 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5562 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5563 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5564 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
5565 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5566 five4n2n3n2n1n = ((pow(dImQ2n,2.)+pow(dReQ2n,2.))*(dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
5567 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n)
5568 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
5569 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
5570 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
5571 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
5572 - (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
5573 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
5574 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
5575 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n)
5576 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
5577 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
5578 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5579 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5580 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5581 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5582 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
5583 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
5584 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5585 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5586 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5587 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5588 + (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5589 + pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n
5590 + dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n
5591 + 3.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5592 - (dMult-7.)*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5593 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5594 + 7.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5595 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5596 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5597 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5598 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5599 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5600 + 2.*(dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+(dMult-12.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5601 - 2.*dMult*(dMult-12.))
5602 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5603
5604 // *********************************************************************
5605 Double_t reQ7nQ3nstarQ2nstarQ2nstar = (dReQ7n*dReQ3n+dImQ7n*dImQ3n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
5606 + 2.*dReQ2n*dImQ2n*(dImQ7n*dReQ3n-dReQ7n*dImQ3n);
5607 Double_t reQ5nQ2nQ4nstarQ3nstar = dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
5608 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
5609 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
5610 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n;
5611 Double_t reQ7nQ4nstarQ3nstar = dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n
5612 + dImQ7n*dImQ4n*dReQ3n;
5613
5614
5615 Double_t reQ7nQ5nstarQ2nstar = dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n
5616 + dImQ7n*dImQ5n*dReQ2n;
5617
5618 // <5>_{6n,4n|4n,3n,3n}:
5619 Double_t reQ10nQ4nstarQ3nstarQ3nstar = (dReQ10n*dReQ4n+dImQ10n*dImQ4n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5620 + 2.*dReQ3n*dImQ3n*(dImQ10n*dReQ4n-dReQ10n*dImQ4n);
5621 Double_t reQ7nQ3nQ6nstarQ4nstar = dImQ3n*dImQ4n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ3n*dReQ4n
5622 + dImQ4n*dImQ7n*dReQ3n*dReQ6n-dImQ3n*dImQ7n*dReQ4n*dReQ6n
5623 - dImQ4n*dImQ6n*dReQ3n*dReQ7n+dImQ3n*dImQ6n*dReQ4n*dReQ7n
5624 + dImQ3n*dImQ4n*dReQ6n*dReQ7n+dReQ3n*dReQ4n*dReQ6n*dReQ7n;
5625 Double_t reQ10nQ7nstarQ3nstar = dReQ10n*dReQ7n*dReQ3n-dReQ10n*dImQ7n*dImQ3n+dImQ10n*dReQ7n*dImQ3n
5626 + dImQ10n*dImQ7n*dReQ3n;
5627 Double_t reQ10nQ6nstarQ4nstar = dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n
5628 + dImQ10n*dImQ6n*dReQ4n;
5629 Double_t reQ6nQ1nQ4nstarQ3nstar = dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
5630 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
5631 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
5632 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n;
5633 Double_t reQ7nQ6nstarQ1nstar = dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n
5634 + dImQ7n*dImQ6n*dReQ1n;
5635 // <5>_{6n,5n|5n,3n,3n}:
5636 /*Double_t reQ11nQ5nstarQ3nstarQ3nstar = (dReQ11n*dReQ5n+dImQ11n*dImQ5n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5637 + 2.*dReQ3n*dImQ3n*(dImQ11n*dReQ5n-dReQ11n*dImQ5n); */
5638 Double_t reQ6nQ2nQ5nstarQ3nstar = dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
5639 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
5640 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
5641 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n;
5642 Double_t reQ8nQ3nQ6nstarQ5nstar = dImQ3n*dImQ5n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ3n*dReQ5n
5643 + dImQ5n*dImQ8n*dReQ3n*dReQ6n-dImQ3n*dImQ8n*dReQ5n*dReQ6n
5644 - dImQ5n*dImQ6n*dReQ3n*dReQ8n+dImQ3n*dImQ6n*dReQ5n*dReQ8n
5645 + dImQ3n*dImQ5n*dReQ6n*dReQ8n+dReQ3n*dReQ5n*dReQ6n*dReQ8n;
5646 Double_t reQ11nQ6nstarQ5nstar = dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n
5647 + dImQ11n*dImQ6n*dReQ5n;
5648 Double_t reQ8nQ6nstarQ2nstar = dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n
5649 + dImQ8n*dImQ6n*dReQ2n;
5650 Double_t reQ11nQ8nstarQ3nstar = dReQ11n*dReQ8n*dReQ3n-dReQ11n*dImQ8n*dImQ3n+dImQ11n*dReQ8n*dImQ3n
5651 + dImQ11n*dImQ8n*dReQ3n;
5652 Double_t reQ8nQ5nstarQ3nstar = dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n
5653 + dImQ8n*dImQ5n*dReQ3n;
5654 // <5>_{5n,2n|5n,1n,1n}
5655 Double_t reQ7nQ5nstarQ1nstarQ1nstar = (dReQ7n*dReQ5n+dImQ7n*dImQ5n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5656 + 2.*dReQ1n*dImQ1n*(dImQ7n*dReQ5n-dReQ7n*dImQ5n);
5657 Double_t reQ6nQ1nQ5nstarQ2nstar = dImQ1n*dImQ2n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ1n*dReQ2n
5658 + dImQ2n*dImQ6n*dReQ1n*dReQ5n-dImQ1n*dImQ6n*dReQ2n*dReQ5n
5659 - dImQ2n*dImQ5n*dReQ1n*dReQ6n+dImQ1n*dImQ5n*dReQ2n*dReQ6n
5660 + dImQ1n*dImQ2n*dReQ5n*dReQ6n+dReQ1n*dReQ2n*dReQ5n*dReQ6n;
5661 // <5>_{5n,4n|5n,2n,2n}
5662 Double_t reQ9nQ5nstarQ2nstarQ2nstar = (dReQ9n*dReQ5n+dImQ9n*dImQ5n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
5663 + 2.*dReQ2n*dImQ2n*(dImQ9n*dReQ5n-dReQ9n*dImQ5n);
5664 Double_t reQ7nQ2nQ5nstarQ4nstar = dImQ2n*dImQ4n*dImQ5n*dImQ7n+dImQ5n*dImQ7n*dReQ2n*dReQ4n
5665 + dImQ4n*dImQ7n*dReQ2n*dReQ5n-dImQ2n*dImQ7n*dReQ4n*dReQ5n
5666 - dImQ4n*dImQ5n*dReQ2n*dReQ7n+dImQ2n*dImQ5n*dReQ4n*dReQ7n
5667 + dImQ2n*dImQ4n*dReQ5n*dReQ7n+dReQ2n*dReQ4n*dReQ5n*dReQ7n;
5668 Double_t reQ9nQ5nstarQ4nstar = dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ5n*dImQ4n
5669 + dImQ9n*dImQ5n*dReQ4n;
5670 Double_t reQ9nQ7nstarQ2nstar = dReQ9n*dReQ7n*dReQ2n-dReQ9n*dImQ7n*dImQ2n+dImQ9n*dReQ7n*dImQ2n
5671 + dImQ9n*dImQ7n*dReQ2n;
5672 // <5>_{6n,2n|6n,1n,1n}
5673 Double_t reQ8nQ6nstarQ1nstarQ1nstar = (dReQ8n*dReQ6n+dImQ8n*dImQ6n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5674 + 2.*dReQ1n*dImQ1n*(dImQ8n*dReQ6n-dReQ8n*dImQ6n);
5675 Double_t reQ7nQ1nQ6nstarQ2nstar = dImQ1n*dImQ2n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ1n*dReQ2n
5676 + dImQ2n*dImQ7n*dReQ1n*dReQ6n-dImQ1n*dImQ7n*dReQ2n*dReQ6n
5677 - dImQ2n*dImQ6n*dReQ1n*dReQ7n+dImQ1n*dImQ6n*dReQ2n*dReQ7n
5678 + dImQ1n*dImQ2n*dReQ6n*dReQ7n+dReQ1n*dReQ2n*dReQ6n*dReQ7n;
5679 Double_t reQ8nQ7nstarQ1nstar = dReQ8n*dReQ7n*dReQ1n-dReQ8n*dImQ7n*dImQ1n+dImQ8n*dReQ7n*dImQ1n
5680 + dImQ8n*dImQ7n*dReQ1n;
5681 // <5>_{5n,2n|4n,2n,1n}
5682 Double_t reQ5nQ2nQ4nstarQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5683 * (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5684 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n);
5685 Double_t reQ7nQ4nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ4n*dReQ7n-dReQ4n*dReQ7n*dImQ1n*dImQ2n
5686 - dReQ2n*dReQ7n*dImQ1n*dImQ4n-dReQ1n*dReQ7n*dImQ2n*dImQ4n
5687 + dReQ2n*dReQ4n*dImQ1n*dImQ7n+dReQ1n*dReQ4n*dImQ2n*dImQ7n
5688 + dReQ1n*dReQ2n*dImQ4n*dImQ7n-dImQ1n*dImQ2n*dImQ4n*dImQ7n;
5689 // <5>_{4n,3n|4n,2n,1n}:
c10259fb 5690 Double_t reQ4nQ3nQ4nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5691 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5692 * (pow(dReQ4n,2.)+pow(dImQ4n,2.));
e1d101a6 5693 /*
5694 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5695 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5696 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5697 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
5698 */
5699 // <5>_{5n,3n|4n,3n,1n}:
5700 Double_t reQ5nQ3nQ4nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5701 * (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5702 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n);
c10259fb 5703 Double_t reQ5nQ3nQ4nstarQ4nstar = dReQ3n*pow(dReQ4n,2.)*dReQ5n+2.*dReQ4n*dReQ5n*dImQ3n*dImQ4n
5704 - dReQ3n*dReQ5n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ3n*dImQ5n
5705 + 2.*dReQ3n*dReQ4n*dImQ4n*dImQ5n+dImQ3n*pow(dImQ4n,2.)*dImQ5n;
e1d101a6 5706 Double_t reQ7nQ1nQ5nstarQ3nstar = dImQ1n*dImQ3n*dImQ5n*dImQ7n+dImQ5n*dImQ7n*dReQ1n*dReQ3n
5707 + dImQ3n*dImQ7n*dReQ1n*dReQ5n-dImQ1n*dImQ7n*dReQ3n*dReQ5n
5708 - dImQ3n*dImQ5n*dReQ1n*dReQ7n+dImQ1n*dImQ5n*dReQ3n*dReQ7n
5709 + dImQ1n*dImQ3n*dReQ5n*dReQ7n+dReQ1n*dReQ3n*dReQ5n*dReQ7n;
c10259fb 5710 Double_t reQ8nQ4nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ4n*dReQ8n-dReQ4n*dReQ8n*dImQ1n*dImQ3n
5711 - dReQ3n*dReQ8n*dImQ1n*dImQ4n-dReQ1n*dReQ8n*dImQ3n*dImQ4n
5712 + dReQ3n*dReQ4n*dImQ1n*dImQ8n+dReQ1n*dReQ4n*dImQ3n*dImQ8n
5713 + dReQ1n*dReQ3n*dImQ4n*dImQ8n-dImQ1n*dImQ3n*dImQ4n*dImQ8n;
e1d101a6 5714 Double_t reQ8nQ4nstarQ4nstar = pow(dReQ4n,2.)*dReQ8n-dReQ8n*pow(dImQ4n,2.)+2.*dReQ4n*dImQ4n*dImQ8n;
5715 // <5>_{5n,4n|4n,3n,2n}:
5716 Double_t reQ5nQ4nQ4nstarQ3nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5717 * (dReQ2n*dReQ3n*dReQ5n-dReQ5n*dImQ2n*dImQ3n
5718 + dReQ3n*dImQ2n*dImQ5n+dReQ2n*dImQ3n*dImQ5n);
5719 Double_t reQ6nQ3nQ5nstarQ4nstar = dImQ4n*dImQ3n*dImQ6n*dImQ5n+dImQ6n*dImQ5n*dReQ4n*dReQ3n
5720 + dImQ3n*dImQ5n*dReQ4n*dReQ6n-dImQ4n*dImQ5n*dReQ3n*dReQ6n
5721 - dImQ3n*dImQ6n*dReQ4n*dReQ5n+dImQ4n*dImQ6n*dReQ3n*dReQ5n
5722 + dImQ4n*dImQ3n*dReQ6n*dReQ5n+dReQ4n*dReQ3n*dReQ6n*dReQ5n;
c10259fb 5723 Double_t reQ9nQ4nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ4n*dReQ9n-dReQ4n*dReQ9n*dImQ2n*dImQ3n
5724 - dReQ3n*dReQ9n*dImQ2n*dImQ4n-dReQ2n*dReQ9n*dImQ3n*dImQ4n
5725 + dReQ3n*dReQ4n*dImQ2n*dImQ9n+dReQ2n*dReQ4n*dImQ3n*dImQ9n
5726 + dReQ2n*dReQ3n*dImQ4n*dImQ9n-dImQ2n*dImQ3n*dImQ4n*dImQ9n;
e1d101a6 5727 Double_t reQ9nQ6nstarQ3nstar = dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n
5728 + dImQ9n*dImQ6n*dReQ3n;
5729 // <5>_{5n,3n|5n,2n,1n}:
c10259fb 5730 Double_t reQ5nQ3nQ5nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5731 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5732 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
5733 Double_t reQ8nQ5nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ5n*dReQ8n-dReQ5n*dReQ8n*dImQ1n*dImQ2n
5734 - dReQ2n*dReQ8n*dImQ1n*dImQ5n-dReQ1n*dReQ8n*dImQ2n*dImQ5n
5735 + dReQ2n*dReQ5n*dImQ1n*dImQ8n+dReQ1n*dReQ5n*dImQ2n*dImQ8n
5736 + dReQ1n*dReQ2n*dImQ5n*dImQ8n-dImQ1n*dImQ2n*dImQ5n*dImQ8n;
e1d101a6 5737 // <5>_{5n,4n|5n,3n,1n}:
c10259fb 5738 Double_t reQ5nQ4nQ5nstarQ3nstarQ1nstar = (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5739 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n)
5740 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
e1d101a6 5741 Double_t reQ8nQ1nQ5nstarQ4nstar = dImQ4n*dImQ1n*dImQ8n*dImQ5n+dImQ8n*dImQ5n*dReQ4n*dReQ1n
5742 + dImQ1n*dImQ5n*dReQ4n*dReQ8n-dImQ4n*dImQ5n*dReQ1n*dReQ8n
5743 - dImQ1n*dImQ8n*dReQ4n*dReQ5n+dImQ4n*dImQ8n*dReQ1n*dReQ5n
5744 + dImQ4n*dImQ1n*dReQ8n*dReQ5n+dReQ4n*dReQ1n*dReQ8n*dReQ5n;
c10259fb 5745 Double_t reQ9nQ5nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ5n*dReQ9n-dReQ5n*dReQ9n*dImQ1n*dImQ3n
5746 - dReQ3n*dReQ9n*dImQ1n*dImQ5n-dReQ1n*dReQ9n*dImQ3n*dImQ5n
5747 + dReQ3n*dReQ5n*dImQ1n*dImQ9n+dReQ1n*dReQ5n*dImQ3n*dImQ9n
5748 + dReQ1n*dReQ3n*dImQ5n*dImQ9n-dImQ1n*dImQ3n*dImQ5n*dImQ9n;
e1d101a6 5749 Double_t reQ9nQ8nstarQ1nstar = dReQ9n*dReQ8n*dReQ1n-dReQ9n*dImQ8n*dImQ1n+dImQ9n*dReQ8n*dImQ1n
5750 + dImQ9n*dImQ8n*dReQ1n;
5751 // <5>_{6n,1n|4n,2n,1n}:
c10259fb 5752 Double_t reQ6nQ1nQ4nstarQ2nstarQ1nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5753 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5754 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
e1d101a6 5755 // <5>_{6n,3n|4n,3n,2n}:
c10259fb 5756 Double_t reQ6nQ3nQ4nstarQ3nstarQ2nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5757 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5758 * (pow(dReQ3n,2.)+pow(dImQ3n,2.));
e1d101a6 5759 Double_t reQ7nQ2nQ6nstarQ3nstar = dImQ3n*dImQ2n*dImQ7n*dImQ6n+dImQ7n*dImQ6n*dReQ3n*dReQ2n
5760 + dImQ2n*dImQ6n*dReQ3n*dReQ7n-dImQ3n*dImQ6n*dReQ2n*dReQ7n
5761 - dImQ2n*dImQ7n*dReQ3n*dReQ6n+dImQ3n*dImQ7n*dReQ2n*dReQ6n
5762 + dImQ3n*dImQ2n*dReQ7n*dReQ6n+dReQ3n*dReQ2n*dReQ7n*dReQ6n;
5763 // <5>_{6n,2n|5n,2n,1n}:
5764 Double_t reQ6nQ2nQ5nstarQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5765 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5766 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5767 // <5>_{6n,3n|5n,3n,1n}:
5768 Double_t reQ6nQ3nQ5nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5769 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5770 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5771 Double_t reQ8nQ1nQ6nstarQ3nstar = dImQ3n*dImQ1n*dImQ8n*dImQ6n+dImQ8n*dImQ6n*dReQ3n*dReQ1n
5772 + dImQ1n*dImQ6n*dReQ3n*dReQ8n-dImQ3n*dImQ6n*dReQ1n*dReQ8n
5773 - dImQ1n*dImQ8n*dReQ3n*dReQ6n+dImQ3n*dImQ8n*dReQ1n*dReQ6n
5774 + dImQ3n*dImQ1n*dReQ8n*dReQ6n+dReQ3n*dReQ1n*dReQ8n*dReQ6n;
5775 // <5>_{6n,4n|5n,4n,1n}:
5776 Double_t reQ6nQ4nQ5nstarQ4nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5777 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5778 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
c10259fb 5779 Double_t reQ6nQ4nQ5nstarQ5nstar = dReQ4n*pow(dReQ5n,2.)*dReQ6n+2.*dReQ5n*dReQ6n*dImQ4n*dImQ5n
5780 - dReQ4n*dReQ6n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ4n*dImQ6n
5781 + 2.*dReQ4n*dReQ5n*dImQ5n*dImQ6n+dImQ4n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 5782 Double_t reQ9nQ1nQ6nstarQ4nstar = dImQ4n*dImQ1n*dImQ9n*dImQ6n+dImQ9n*dImQ6n*dReQ4n*dReQ1n
5783 + dImQ1n*dImQ6n*dReQ4n*dReQ9n-dImQ4n*dImQ6n*dReQ1n*dReQ9n
5784 - dImQ1n*dImQ9n*dReQ4n*dReQ6n+dImQ4n*dImQ9n*dReQ1n*dReQ6n
c10259fb 5785 + dImQ4n*dImQ1n*dReQ9n*dReQ6n+dReQ4n*dReQ1n*dReQ9n*dReQ6n;
5786 Double_t reQ10nQ5nstarQ4nstarQ1nstar = dReQ1n*dReQ4n*dReQ5n*dReQ10n-dReQ5n*dReQ10n*dImQ1n*dImQ4n
5787 - dReQ4n*dReQ10n*dImQ1n*dImQ5n-dReQ1n*dReQ10n*dImQ4n*dImQ5n
5788 + dReQ4n*dReQ5n*dImQ1n*dImQ10n+dReQ1n*dReQ5n*dImQ4n*dImQ10n
5789 + dReQ1n*dReQ4n*dImQ5n*dImQ10n-dImQ1n*dImQ4n*dImQ5n*dImQ10n;
e1d101a6 5790 Double_t reQ10nQ9nstarQ1nstar = dReQ10n*dReQ9n*dReQ1n-dReQ10n*dImQ9n*dImQ1n+dImQ10n*dReQ9n*dImQ1n
5791 + dImQ10n*dImQ9n*dReQ1n;
5792 Double_t reQ10nQ5nstarQ5nstar = pow(dReQ5n,2.)*dReQ10n-dReQ10n*pow(dImQ5n,2.)+2.*dReQ5n*dImQ5n*dImQ10n;
5793 // <5>_{6n,3n|6n,2n,1n}:
c10259fb 5794 Double_t reQ6nQ3nQ6nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5795 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5796 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5797 Double_t reQ9nQ6nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ6n*dReQ9n-dReQ6n*dReQ9n*dImQ1n*dImQ2n
5798 - dReQ2n*dReQ9n*dImQ1n*dImQ6n-dReQ1n*dReQ9n*dImQ2n*dImQ6n
5799 + dReQ2n*dReQ6n*dImQ1n*dImQ9n+dReQ1n*dReQ6n*dImQ2n*dImQ9n
5800 + dReQ1n*dReQ2n*dImQ6n*dImQ9n-dImQ1n*dImQ2n*dImQ6n*dImQ9n;
e1d101a6 5801 // <5>_{6n,4n|6n,3n,1n}:
c10259fb 5802 Double_t reQ6nQ4nQ6nstarQ3nstarQ1nstar = (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5803 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n)
5804 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5805 Double_t reQ10nQ6nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ6n*dReQ10n-dReQ6n*dReQ10n*dImQ1n*dImQ3n
5806 - dReQ3n*dReQ10n*dImQ1n*dImQ6n-dReQ1n*dReQ10n*dImQ3n*dImQ6n
5807 + dReQ3n*dReQ6n*dImQ1n*dImQ10n+dReQ1n*dReQ6n*dImQ3n*dImQ10n
5808 + dReQ1n*dReQ3n*dImQ6n*dImQ10n-dImQ1n*dImQ3n*dImQ6n*dImQ10n;
e1d101a6 5809 // <5>_{6n,5n|5n,4n,2n}:
c10259fb 5810 Double_t reQ6nQ5nQ5nstarQ4nstarQ2nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5811 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5812 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
e1d101a6 5813 Double_t reQ7nQ4nQ6nstarQ5nstar = dImQ5n*dImQ4n*dImQ7n*dImQ6n+dImQ7n*dImQ6n*dReQ5n*dReQ4n
5814 + dImQ4n*dImQ6n*dReQ5n*dReQ7n-dImQ5n*dImQ6n*dReQ4n*dReQ7n
5815 - dImQ4n*dImQ7n*dReQ5n*dReQ6n+dImQ5n*dImQ7n*dReQ4n*dReQ6n
5816 + dImQ5n*dImQ4n*dReQ7n*dReQ6n+dReQ5n*dReQ4n*dReQ7n*dReQ6n;
5817 Double_t reQ9nQ2nQ6nstarQ5nstar = dImQ5n*dImQ2n*dImQ9n*dImQ6n+dImQ9n*dImQ6n*dReQ5n*dReQ2n
5818 + dImQ2n*dImQ6n*dReQ5n*dReQ9n-dImQ5n*dImQ6n*dReQ2n*dReQ9n
5819 - dImQ2n*dImQ9n*dReQ5n*dReQ6n+dImQ5n*dImQ9n*dReQ2n*dReQ6n
5820 + dImQ5n*dImQ2n*dReQ9n*dReQ6n+dReQ5n*dReQ2n*dReQ9n*dReQ6n;
c10259fb 5821 Double_t reQ11nQ5nstarQ4nstarQ2nstar = dReQ2n*dReQ4n*dReQ5n*dReQ11n-dReQ5n*dReQ11n*dImQ2n*dImQ4n
5822 - dReQ4n*dReQ11n*dImQ2n*dImQ5n-dReQ2n*dReQ11n*dImQ4n*dImQ5n
5823 + dReQ4n*dReQ5n*dImQ2n*dImQ11n+dReQ2n*dReQ5n*dImQ4n*dImQ11n
5824 + dReQ2n*dReQ4n*dImQ5n*dImQ11n-dImQ2n*dImQ4n*dImQ5n*dImQ11n;
e1d101a6 5825 Double_t reQ11nQ9nstarQ2nstar = dReQ11n*dReQ9n*dReQ2n-dReQ11n*dImQ9n*dImQ2n+dImQ11n*dReQ9n*dImQ2n
5826 + dImQ11n*dImQ9n*dReQ2n;
5827 Double_t reQ11nQ7nstarQ4nstar = dReQ11n*dReQ7n*dReQ4n-dReQ11n*dImQ7n*dImQ4n+dImQ11n*dReQ7n*dImQ4n
5828 + dImQ11n*dImQ7n*dReQ4n;
5829 // <5>_{6n,5n|6n,3n,2n}:
c10259fb 5830 Double_t reQ6nQ5nQ6nstarQ3nstarQ2nstar = (dReQ2n*dReQ3n*dReQ5n-dReQ5n*dImQ2n*dImQ3n
5831 + dReQ3n*dImQ2n*dImQ5n+dReQ2n*dImQ3n*dImQ5n)
5832 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5833 Double_t reQ11nQ6nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ6n*dReQ11n-dReQ6n*dReQ11n*dImQ2n*dImQ3n
5834 - dReQ3n*dReQ11n*dImQ2n*dImQ6n-dReQ2n*dReQ11n*dImQ3n*dImQ6n
5835 + dReQ3n*dReQ6n*dImQ2n*dImQ11n+dReQ2n*dReQ6n*dImQ3n*dImQ11n
5836 + dReQ2n*dReQ3n*dImQ6n*dImQ11n-dImQ2n*dImQ3n*dImQ6n*dImQ11n;
e1d101a6 5837 // <5>_{6n,5n|6n,4n,1n}:
c10259fb 5838 Double_t reQ6nQ5nQ6nstarQ4nstarQ1nstar = (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5839 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n)
5840 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
e1d101a6 5841 Double_t reQ10nQ1nQ6nstarQ5nstar = dImQ5n*dImQ1n*dImQ10n*dImQ6n+dImQ10n*dImQ6n*dReQ5n*dReQ1n
5842 + dImQ1n*dImQ6n*dReQ5n*dReQ10n-dImQ5n*dImQ6n*dReQ1n*dReQ10n
5843 - dImQ1n*dImQ10n*dReQ5n*dReQ6n+dImQ5n*dImQ10n*dReQ1n*dReQ6n
5844 + dImQ5n*dImQ1n*dReQ10n*dReQ6n+dReQ5n*dReQ1n*dReQ10n*dReQ6n;
5845 Double_t reQ11nQ10nstarQ1nstar = dReQ11n*dReQ10n*dReQ1n-dReQ11n*dImQ10n*dImQ1n+dImQ11n*dReQ10n*dImQ1n
5846 + dImQ11n*dImQ10n*dReQ1n;
c10259fb 5847 Double_t reQ11nQ6nstarQ4nstarQ1nstar = dReQ1n*dReQ4n*dReQ6n*dReQ11n-dReQ6n*dReQ11n*dImQ1n*dImQ4n
5848 - dReQ4n*dReQ11n*dImQ1n*dImQ6n-dReQ1n*dReQ11n*dImQ4n*dImQ6n
5849 + dReQ4n*dReQ6n*dImQ1n*dImQ11n+dReQ1n*dReQ6n*dImQ4n*dImQ11n
5850 + dReQ1n*dReQ4n*dImQ6n*dImQ11n-dImQ1n*dImQ4n*dImQ6n*dImQ11n;
e1d101a6 5851 // <5>_{4n,1n|3n,1n,1n}:
5852 Double_t reQ4nQ1nQ3nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
5853 * (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5854 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n);
5855 Double_t reQ4nQ1nQ4nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
5856 Double_t reQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
5857 // <5>_{4n,3n|3n,3n,1n}:
5858 Double_t reQ4nQ3nQ3nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5859 * (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n));
5860 Double_t reQ7nQ3nstarQ3nstarQ1nstar = (dReQ7n*dReQ1n+dImQ7n*dImQ1n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5861 + 2.*dReQ3n*dImQ3n*(dImQ7n*dReQ1n-dReQ7n*dImQ1n);
5862 // <5>_{4n,4n|4n,3n,1n}:
5863 Double_t reQ4nQ4nQ4nstarQ3nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
c10259fb 5864 * reQ4nQ3nstarQ1nstar;
5865 Double_t reQ7nQ1nQ4nstarQ4nstar = dReQ1n*pow(dReQ4n,2.)*dReQ7n+2.*dReQ4n*dReQ7n*dImQ1n*dImQ4n
5866 - dReQ1n*dReQ7n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ1n*dImQ7n
5867 + 2.*dReQ1n*dReQ4n*dImQ4n*dImQ7n+dImQ1n*pow(dImQ4n,2.)*dImQ7n;
e1d101a6 5868 // <5>_{5n,2n|3n,2n,2n}:
5869 Double_t reQ5nQ2nQ3nstarQ2nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
c10259fb 5870 * reQ5nQ3nstarQ2nstar;
e1d101a6 5871 // <5>_{5n,3n|3n,3n,2n}:
5872 Double_t reQ5nQ3nQ3nstarQ3nstarQ2nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
5873 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
5874 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
5875 Double_t reQ8nQ3nstarQ3nstarQ2nstar = (dReQ8n*dReQ2n+dImQ8n*dImQ2n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5876 + 2.*dReQ3n*dImQ3n*(dImQ8n*dReQ2n-dReQ8n*dImQ2n);
5877 /*
5878 Double_t reQ5nQ1nQ3nstarQ2nstar = dImQ2n*dImQ1n*dImQ5n*dImQ3n+dImQ5n*dImQ3n*dReQ2n*dReQ1n
5879 + dImQ1n*dImQ3n*dReQ2n*dReQ5n-dImQ2n*dImQ3n*dReQ1n*dReQ5n
5880 - dImQ1n*dImQ5n*dReQ2n*dReQ3n+dImQ2n*dImQ5n*dReQ1n*dReQ3n
5881 + dImQ2n*dImQ1n*dReQ5n*dReQ3n+dReQ2n*dReQ1n*dReQ5n*dReQ3n;
5882 */
5883 // <5>_{5n,1n|4n,1n,1n}:
5884 Double_t reQ5nQ1nQ4nstarQ1nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
5885 * (dImQ1n*dImQ5n*dReQ4n+dImQ4n*dImQ5n*dReQ1n
5886 - dImQ4n*dImQ1n*dReQ5n+dReQ4n*dReQ1n*dReQ5n);
5887 // <5>_{5n,4n|4n,4n,1n}:
5888 Double_t reQ5nQ4nQ4nstarQ4nstarQ1nstar = (pow(dImQ4n,2.)+pow(dReQ4n,2.))
5889 * (dImQ4n*dImQ5n*dReQ1n+dImQ1n*dImQ5n*dReQ4n
5890 - dImQ1n*dImQ4n*dReQ5n+dReQ1n*dReQ4n*dReQ5n);
5891 Double_t reQ9nQ4nstarQ4nstarQ1nstar = (dReQ9n*dReQ1n+dImQ9n*dImQ1n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
5892 + 2.*dReQ4n*dImQ4n*(dImQ9n*dReQ1n-dReQ9n*dImQ1n);
5893 // <5>_{5n,5n|5n,3n,2n}:
5894 Double_t reQ5nQ5nQ5nstarQ3nstarQ2nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
5895 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
5896 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
c10259fb 5897 Double_t reQ7nQ3nQ5nstarQ5nstar = dReQ3n*pow(dReQ5n,2.)*dReQ7n+2.*dReQ5n*dReQ7n*dImQ3n*dImQ5n
5898 - dReQ3n*dReQ7n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ3n*dImQ7n
5899 + 2.*dReQ3n*dReQ5n*dImQ5n*dImQ7n+dImQ3n*pow(dImQ5n,2.)*dImQ7n;
5900 Double_t reQ8nQ2nQ5nstarQ5nstar = dReQ2n*pow(dReQ5n,2.)*dReQ8n+2.*dReQ5n*dReQ8n*dImQ2n*dImQ5n
5901 - dReQ2n*dReQ8n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ2n*dImQ8n
5902 + 2.*dReQ2n*dReQ5n*dImQ5n*dImQ8n+dImQ2n*pow(dImQ5n,2.)*dImQ8n;
5903 Double_t reQ10nQ5nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ5n*dReQ10n-dReQ5n*dReQ10n*dImQ2n*dImQ3n
5904 - dReQ3n*dReQ10n*dImQ2n*dImQ5n-dReQ2n*dReQ10n*dImQ3n*dImQ5n
5905 + dReQ3n*dReQ5n*dImQ2n*dImQ10n+dReQ2n*dReQ5n*dImQ3n*dImQ10n
5906 + dReQ2n*dReQ3n*dImQ5n*dImQ10n-dImQ2n*dImQ3n*dImQ5n*dImQ10n;
e1d101a6 5907 Double_t reQ10nQ8nstarQ2nstar = dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n
5908 + dImQ10n*dImQ8n*dReQ2n;
5909 // <5>_{5n,5n|5n,4n,1n}:
5910 Double_t reQ5nQ5nQ5nstarQ4nstarQ1nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
5911 * (dImQ4n*dImQ5n*dReQ1n+dImQ1n*dImQ5n*dReQ4n
5912 - dImQ1n*dImQ4n*dReQ5n+dReQ1n*dReQ4n*dReQ5n);
c10259fb 5913 Double_t reQ9nQ1nQ5nstarQ5nstar = dReQ1n*pow(dReQ5n,2.)*dReQ9n+2.*dReQ5n*dReQ9n*dImQ1n*dImQ5n
5914 - dReQ1n*dReQ9n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ1n*dImQ9n
5915 + 2.*dReQ1n*dReQ5n*dImQ5n*dImQ9n+dImQ1n*pow(dImQ5n,2.)*dImQ9n;
e1d101a6 5916 // <5>_{6n,1n|5n,1n,1n}:
5917 Double_t reQ6nQ1nQ5nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
5918 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5919 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5920 // <5>_{6n,5n|5n,5n,1n}:
5921 Double_t reQ6nQ5nQ5nstarQ5nstarQ1nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
5922 * (dImQ5n*dImQ6n*dReQ1n+dImQ1n*dImQ6n*dReQ5n
5923 - dImQ1n*dImQ5n*dReQ6n+dReQ1n*dReQ5n*dReQ6n);
5924 Double_t reQ11nQ5nstarQ5nstarQ1nstar = (dReQ11n*dReQ1n+dImQ11n*dImQ1n)*(pow(dReQ5n,2)-pow(dImQ5n,2))
5925 + 2.*dReQ5n*dImQ5n*(dImQ11n*dReQ1n-dReQ11n*dImQ1n);
5926 // <5>_{6n,6n|6n,5n,1n}:
5927 Double_t reQ6nQ6nQ6nstarQ5nstarQ1nstar = (pow(dReQ6n,2.)+pow(dImQ6n,2.))
c10259fb 5928 * reQ6nQ5nstarQ1nstar;
5929 Double_t reQ7nQ5nQ6nstarQ6nstar = dReQ5n*pow(dReQ6n,2.)*dReQ7n+2.*dReQ6n*dReQ7n*dImQ5n*dImQ6n
5930 - dReQ5n*dReQ7n*pow(dImQ6n,2.)-pow(dReQ6n,2.)*dImQ5n*dImQ7n
5931 + 2.*dReQ5n*dReQ6n*dImQ6n*dImQ7n+dImQ5n*pow(dImQ6n,2.)*dImQ7n;
5932 Double_t reQ11nQ1nQ6nstarQ6nstar = dReQ1n*pow(dReQ6n,2.)*dReQ11n+2.*dReQ6n*dReQ11n*dImQ1n*dImQ6n
5933 - dReQ1n*dReQ11n*pow(dImQ6n,2.)-pow(dReQ6n,2.)*dImQ1n*dImQ11n
5934 + 2.*dReQ1n*dReQ6n*dImQ6n*dImQ11n+dImQ1n*pow(dImQ6n,2.)*dImQ11n;
e1d101a6 5935 Double_t reQ12nQ6nstarQ6nstar = pow(dReQ6n,2.)*dReQ12n-dReQ12n*pow(dImQ6n,2.)+2.*dReQ6n*dImQ6n*dImQ12n;
5936 Double_t reQ12nQ11nstarQ1nstar = dReQ12n*dReQ11n*dReQ1n-dReQ12n*dImQ11n*dImQ1n+dImQ12n*dReQ11n*dImQ1n
5937 + dImQ12n*dImQ11n*dReQ1n;
c10259fb 5938 Double_t reQ12nQ6nstarQ5nstarQ1nstar = dReQ1n*dReQ5n*dReQ6n*dReQ12n-dReQ6n*dReQ12n*dImQ1n*dImQ5n
5939 - dReQ5n*dReQ12n*dImQ1n*dImQ6n-dReQ1n*dReQ12n*dImQ5n*dImQ6n
5940 + dReQ5n*dReQ6n*dImQ1n*dImQ12n+dReQ1n*dReQ6n*dImQ5n*dImQ12n
5941 + dReQ1n*dReQ5n*dImQ6n*dImQ12n-dImQ1n*dImQ5n*dImQ6n*dImQ12n;
e1d101a6 5942 Double_t reQ12nQ7nstarQ5nstar = dReQ12n*dReQ7n*dReQ5n-dReQ12n*dImQ7n*dImQ5n+dImQ12n*dReQ7n*dImQ5n
5943 + dImQ12n*dImQ7n*dReQ5n;
5944 // <5>_{6n,2n|4n,3n,1n}:
c10259fb 5945 Double_t reQ6nQ2nQ4nstarQ3nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ4n*dReQ6n+dReQ3n*dReQ4n*dReQ6n*dImQ1n*dImQ2n
5946 - dReQ2n*dReQ4n*dReQ6n*dImQ1n*dImQ3n+dReQ1n*dReQ4n*dReQ6n*dImQ2n*dImQ3n
5947 - dReQ2n*dReQ3n*dReQ6n*dImQ1n*dImQ4n+dReQ1n*dReQ3n*dReQ6n*dImQ2n*dImQ4n
5948 - dReQ1n*dReQ2n*dReQ6n*dImQ3n*dImQ4n-dReQ6n*dImQ1n*dImQ2n*dImQ3n*dImQ4n
5949 + dReQ2n*dReQ3n*dReQ4n*dImQ1n*dImQ6n-dReQ1n*dReQ3n*dReQ4n*dImQ2n*dImQ6n
5950 + dReQ1n*dReQ2n*dReQ4n*dImQ3n*dImQ6n+dReQ4n*dImQ1n*dImQ2n*dImQ3n*dImQ6n
5951 + dReQ1n*dReQ2n*dReQ3n*dImQ4n*dImQ6n+dReQ3n*dImQ1n*dImQ2n*dImQ4n*dImQ6n
5952 - dReQ2n*dImQ1n*dImQ3n*dImQ4n*dImQ6n+dReQ1n*dImQ2n*dImQ3n*dImQ4n*dImQ6n;
5953 Double_t reQ6nQ2nQ4nstarQ4nstar = dReQ2n*pow(dReQ4n,2.)*dReQ6n+2.*dReQ4n*dReQ6n*dImQ2n*dImQ4n
5954 - dReQ2n*dReQ6n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ2n*dImQ6n
5955 + 2.*dReQ2n*dReQ4n*dImQ4n*dImQ6n+dImQ2n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 5956 // <5>_{6n,2n,1n|5n,4n}:
c10259fb 5957 Double_t reQ6nQ2nQ1nQ5nstarQ4nstar = dReQ1n*dReQ2n*dReQ4n*dReQ6n*dReQ5n - dReQ4n*dReQ6n*dReQ5n*dImQ1n*dImQ2n
5958 + dReQ2n*dReQ6n*dReQ5n*dImQ1n*dImQ4n + dReQ1n*dReQ6n*dReQ5n*dImQ2n*dImQ4n
5959 - dReQ2n*dReQ4n*dReQ5n*dImQ1n*dImQ6n - dReQ1n*dReQ4n*dReQ5n*dImQ2n*dImQ6n
5960 + dReQ1n*dReQ2n*dReQ5n*dImQ4n*dImQ6n - dReQ5n*dImQ1n*dImQ2n*dImQ4n*dImQ6n
5961 + dReQ2n*dReQ4n*dReQ6n*dImQ1n*dImQ5n + dReQ1n*dReQ4n*dReQ6n*dImQ2n*dImQ5n
5962 - dReQ1n*dReQ2n*dReQ6n*dImQ4n*dImQ5n + dReQ6n*dImQ1n*dImQ2n*dImQ4n*dImQ5n
5963 + dReQ1n*dReQ2n*dReQ4n*dImQ6n*dImQ5n - dReQ4n*dImQ1n*dImQ2n*dImQ6n*dImQ5n
5964 + dReQ2n*dImQ1n*dImQ4n*dImQ6n*dImQ5n + dReQ1n*dImQ2n*dImQ4n*dImQ6n*dImQ5n;
e1d101a6 5965
5966 // <5>_{6n,4n|5n,3n,2n}:
c10259fb 5967 Double_t reQ6nQ4nQ5nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ4n*dReQ5n*dReQ6n - dReQ4n*dReQ5n*dReQ6n*dImQ2n*dImQ3n
5968 + dReQ3n*dReQ5n*dReQ6n*dImQ2n*dImQ4n + dReQ2n*dReQ5n*dReQ6n*dImQ3n*dImQ4n
5969 - dReQ3n*dReQ4n*dReQ6n*dImQ2n*dImQ5n - dReQ2n*dReQ4n*dReQ6n*dImQ3n*dImQ5n
5970 + dReQ2n*dReQ3n*dReQ6n*dImQ4n*dImQ5n - dReQ6n*dImQ2n*dImQ3n*dImQ4n*dImQ5n
5971 + dReQ3n*dReQ4n*dReQ5n*dImQ2n*dImQ6n + dReQ2n*dReQ4n*dReQ5n*dImQ3n*dImQ6n
5972 - dReQ2n*dReQ3n*dReQ5n*dImQ4n*dImQ6n + dReQ5n*dImQ2n*dImQ3n*dImQ4n*dImQ6n
5973 + dReQ2n*dReQ3n*dReQ4n*dImQ5n*dImQ6n - dReQ4n*dImQ2n*dImQ3n*dImQ5n*dImQ6n
5974 + dReQ3n*dImQ2n*dImQ4n*dImQ5n*dImQ6n + dReQ2n*dImQ3n*dImQ4n*dImQ5n*dImQ6n;
e1d101a6 5975 Double_t reQ8nQ2nQ6nstarQ4nstar = dImQ4n*dImQ2n*dImQ8n*dImQ6n+dImQ8n*dImQ6n*dReQ4n*dReQ2n
5976 + dImQ2n*dImQ6n*dReQ4n*dReQ8n-dImQ4n*dImQ6n*dReQ2n*dReQ8n
5977 - dImQ2n*dImQ8n*dReQ4n*dReQ6n+dImQ4n*dImQ8n*dReQ2n*dReQ6n
5978 + dImQ4n*dImQ2n*dReQ8n*dReQ6n+dReQ4n*dReQ2n*dReQ8n*dReQ6n;
5979
5980 // <5>_{4n,4n|3n,3n,2n}:
c10259fb 5981 Double_t reQ4nQ4nQ3nstarQ3nstarQ2nstar = dReQ2n*pow(dReQ3n,2.)*pow(dReQ4n,2.)-2.*dReQ3n*pow(dReQ4n,2.)*dImQ2n*dImQ3n
5982 - dReQ2n*pow(dReQ4n,2.)*pow(dImQ3n,2.)+2.*pow(dReQ3n,2.)*dReQ4n*dImQ2n*dImQ4n
5983 + 4.*dReQ2n*dReQ3n*dReQ4n*dImQ3n*dImQ4n - 2.*dReQ4n*dImQ2n*pow(dImQ3n,2.)*dImQ4n
5984 - dReQ2n*pow(dReQ3n,2.)*pow(dImQ4n,2.) + 2.*dReQ3n*dImQ2n*dImQ3n*pow(dImQ4n,2.)
5985 + dReQ2n*pow(dImQ3n,2.)*pow(dImQ4n,2.);
5986
e1d101a6 5987 // <5>_{5n|2n,1n,1n,1n}:
c10259fb 5988 Double_t reQ5nQ2nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,3.)*dReQ2n*dReQ5n-3.*dReQ1n*dReQ2n*dReQ5n*pow(dImQ1n,2.)
5989 - 3.*pow(dReQ1n,2.)*dReQ5n*dImQ1n*dImQ2n+dReQ5n*pow(dImQ1n,3.)*dImQ2n
5990 + 3.*pow(dReQ1n,2.)*dReQ2n*dImQ1n*dImQ5n-dReQ2n*pow(dImQ1n,3.)*dImQ5n
5991 + pow(dReQ1n,3.)*dImQ2n*dImQ5n-3.*dReQ1n*pow(dImQ1n,2.)*dImQ2n*dImQ5n;
e1d101a6 5992
5993 // <5>_{5n,1n|2n,2n,2n}:
c10259fb 5994 Double_t reQ5nQ1nQ2nstarQ2nstarQ2nstar = dReQ1n*pow(dReQ2n,3.)*dReQ5n+3.*pow(dReQ2n,2.)*dReQ5n*dImQ1n*dImQ2n
5995 - 3.*dReQ1n*dReQ2n*dReQ5n*pow(dImQ2n,2.)-dReQ5n*dImQ1n*pow(dImQ2n,3.)
5996 - pow(dReQ2n,3.)*dImQ1n*dImQ5n+3.*dReQ1n*pow(dReQ2n,2.)*dImQ2n*dImQ5n
5997 + 3.*dReQ2n*dImQ1n*pow(dImQ2n,2.)*dImQ5n-dReQ1n*pow(dImQ2n,3.)*dImQ5n;
e1d101a6 5998
5999
6000 // <5>_{5n,4n|3n,3n,3n}:
c10259fb 6001 Double_t reQ5nQ4nQ3nstarQ3nstarQ3nstar = dReQ4n*pow(dReQ3n,3.)*dReQ5n+3.*pow(dReQ3n,2.)*dReQ5n*dImQ4n*dImQ3n
6002 - 3.*dReQ4n*dReQ3n*dReQ5n*pow(dImQ3n,2.)-dReQ5n*dImQ4n*pow(dImQ3n,3.)
6003 - pow(dReQ3n,3.)*dImQ4n*dImQ5n+3.*dReQ4n*pow(dReQ3n,2.)*dImQ3n*dImQ5n
6004 + 3.*dReQ3n*dImQ4n*pow(dImQ3n,2.)*dImQ5n-dReQ4n*pow(dImQ3n,3.)*dImQ5n;
e1d101a6 6005
6006 Double_t reQ9nQ3nstarQ3nstarQ3nstar = dReQ9n*pow(dReQ3n,3)-3.*dReQ3n*dReQ9n*pow(dImQ3n,2)
6007 + 3.*dImQ3n*dImQ9n*pow(dReQ3n,2)-dImQ9n*pow(dImQ3n,3);
6008 // <5>_{5n,5n|4n,3n,3n}:
c10259fb 6009 Double_t reQ5nQ5nQ4nstarQ3nstarQ3nstar = dReQ4n*pow(dReQ3n,2.)*pow(dReQ5n,2.) - 2.*dReQ3n*pow(dReQ5n,2.)*dImQ4n*dImQ3n
6010 - dReQ4n*pow(dReQ5n,2.)*pow(dImQ3n,2.) + 2.*pow(dReQ3n,2.)*dReQ5n*dImQ4n*dImQ5n
6011 + 4.*dReQ4n*dReQ3n*dReQ5n*dImQ3n*dImQ5n - 2.*dReQ5n*dImQ4n*pow(dImQ3n,2.)*dImQ5n
6012 - dReQ4n*pow(dReQ3n,2.)*pow(dImQ5n,2.) + 2.*dReQ3n*dImQ4n*dImQ3n*pow(dImQ5n,2.)
6013 + dReQ4n*pow(dImQ3n,2.)*pow(dImQ5n,2.);
e1d101a6 6014
6015 // <5>_{5n,5n|4n,4n,2n}:
c10259fb 6016 Double_t reQ5nQ5nQ4nstarQ4nstarQ2nstar = dReQ2n*pow(dReQ4n,2.)*pow(dReQ5n,2.) - 2.*dReQ4n*pow(dReQ5n,2.)*dImQ2n*dImQ4n
6017 - dReQ2n*pow(dReQ5n,2.)*pow(dImQ4n,2.) + 2.*pow(dReQ4n,2.)*dReQ5n*dImQ2n*dImQ5n
6018 + 4.*dReQ2n*dReQ4n*dReQ5n*dImQ4n*dImQ5n - 2.*dReQ5n*dImQ2n*pow(dImQ4n,2.)*dImQ5n
6019 - dReQ2n*pow(dReQ4n,2.)*pow(dImQ5n,2.) + 2.*dReQ4n*dImQ2n*dImQ4n*pow(dImQ5n,2.)
6020 + dReQ2n*pow(dImQ4n,2.)*pow(dImQ5n,2.);
e1d101a6 6021 Double_t reQ10nQ4nstarQ4nstarQ2nstar = (dReQ10n*dReQ2n+dImQ10n*dImQ2n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6022 + 2.*dReQ4n*dImQ4n*(dImQ10n*dReQ2n-dReQ10n*dImQ2n);
6023 // <5>_{6n|3n,1n,1n,1n}:
c10259fb 6024 Double_t reQ6nQ3nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,3.)*dReQ3n*dReQ6n-3.*dReQ1n*dReQ3n*dReQ6n*pow(dImQ1n,2.)
6025 - 3.*pow(dReQ1n,2.)*dReQ6n*dImQ1n*dImQ3n+dReQ6n*pow(dImQ1n,3.)*dImQ3n
6026 + 3.*pow(dReQ1n,2.)*dReQ3n*dImQ1n*dImQ6n-dReQ3n*pow(dImQ1n,3.)*dImQ6n
6027 + pow(dReQ1n,3.)*dImQ3n*dImQ6n-3.*dReQ1n*pow(dImQ1n,2.)*dImQ3n*dImQ6n;
e1d101a6 6028 // <5>_{6n,1n,1n|4n,4n}:
c10259fb 6029 Double_t reQ6nQ1nQ1nQ4nstarQ4nstar = pow(dReQ1n,2.)*pow(dReQ4n,2.)*dReQ6n - pow(dReQ4n,2.)*dReQ6n*pow(dImQ1n,2.)
6030 + 4.*dReQ1n*dReQ4n*dReQ6n*dImQ1n*dImQ4n - pow(dReQ1n,2.)*dReQ6n*pow(dImQ4n,2.)
6031 + dReQ6n*pow(dImQ1n,2.)*pow(dImQ4n,2.) - 2.*dReQ1n*pow(dReQ4n,2.)*dImQ1n*dImQ6n
6032 + 2.*pow(dReQ1n,2.)*dReQ4n*dImQ4n*dImQ6n - 2.*dReQ4n*pow(dImQ1n,2.)*dImQ4n*dImQ6n
6033 + 2.*dReQ1n*dImQ1n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6034
6035
6036 // <5>_{6n,2n,2n|5n,5n}:
c10259fb 6037 Double_t reQ6nQ2nQ2nQ5nstarQ5nstar = pow(dReQ2n,2.)*pow(dReQ5n,2.)*dReQ6n - pow(dReQ5n,2.)*dReQ6n*pow(dImQ2n,2.)
6038 + 4.*dReQ2n*dReQ5n*dReQ6n*dImQ2n*dImQ5n - pow(dReQ2n,2.)*dReQ6n*pow(dImQ5n,2.)
6039 + dReQ6n*pow(dImQ2n,2.)*pow(dImQ5n,2.) - 2.*dReQ2n*pow(dReQ5n,2.)*dImQ2n*dImQ6n
6040 + 2.*pow(dReQ2n,2.)*dReQ5n*dImQ5n*dImQ6n - 2.*dReQ5n*pow(dImQ2n,2.)*dImQ5n*dImQ6n
6041 + 2.*dReQ2n*dImQ2n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 6042 Double_t reQ10nQ6nstarQ2nstarQ2nstar = (dReQ10n*dReQ6n+dImQ10n*dImQ6n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
6043 + 2.*dReQ2n*dImQ2n*(dImQ10n*dReQ6n-dReQ10n*dImQ6n);
6044 // <5>_{6n,6n|5n,5n,2n}:
c10259fb 6045 Double_t reQ6nQ6nQ5nstarQ5nstarQ2nstar = dReQ2n*pow(dReQ5n,2.)*pow(dReQ6n,2.) - 2.*dReQ5n*pow(dReQ6n,2.)*dImQ2n*dImQ5n
6046 - dReQ2n*pow(dReQ6n,2.)*pow(dImQ5n,2.) + 2.*pow(dReQ5n,2.)*dReQ6n*dImQ2n*dImQ6n
6047 + 4.*dReQ2n*dReQ5n*dReQ6n*dImQ5n*dImQ6n - 2.*dReQ6n*dImQ2n*pow(dImQ5n,2.)*dImQ6n
6048 - dReQ2n*pow(dReQ5n,2.)*pow(dImQ6n,2.) + 2.*dReQ5n*dImQ2n*dImQ5n*pow(dImQ6n,2.)
6049 + dReQ2n*pow(dImQ5n,2.)*pow(dImQ6n,2.);
e1d101a6 6050 Double_t reQ10nQ2nQ6nstarQ6nstar = dImQ2n*pow(dImQ6n,2.)*dImQ10n+2.*dImQ6n*dImQ10n*dReQ2n*dReQ6n
6051 - dImQ2n*dImQ10n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ2n*dReQ10n
6052 + 2.*dImQ2n*dImQ6n*dReQ6n*dReQ10n+dReQ2n*pow(dReQ6n,2.)*dReQ10n;
e1d101a6 6053 Double_t reQ12nQ5nstarQ5nstarQ2nstar = (dReQ12n*dReQ2n+dImQ12n*dImQ2n)*(pow(dReQ5n,2)-pow(dImQ5n,2))
6054 + 2.*dReQ5n*dImQ5n*(dImQ12n*dReQ2n-dReQ12n*dImQ2n);
e1d101a6 6055 Double_t reQ12nQ10nstarQ2nstar = dReQ12n*dReQ10n*dReQ2n-dReQ12n*dImQ10n*dImQ2n+dImQ12n*dReQ10n*dImQ2n
6056 + dImQ12n*dImQ10n*dReQ2n;
e1d101a6 6057 // <5>_{5n,2n|3n,3n,1n}:
c10259fb 6058 Double_t reQ5nQ2nQ3nstarQ3nstarQ1nstar = dReQ1n*dReQ2n*pow(dReQ3n,2.)*dReQ5n + pow(dReQ3n,2.)*dReQ5n*dImQ1n*dImQ2n
6059 - 2.*dReQ2n*dReQ3n*dReQ5n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ2n*dImQ3n
6060 - dReQ1n*dReQ2n*dReQ5n*pow(dImQ3n,2.) - dReQ5n*dImQ1n*dImQ2n*pow(dImQ3n,2.)
6061 + dReQ2n*pow(dReQ3n,2.)*dImQ1n*dImQ5n - dReQ1n*pow(dReQ3n,2.)*dImQ2n*dImQ5n
6062 + 2.*dReQ1n*dReQ2n*dReQ3n*dImQ3n*dImQ5n + 2.*dReQ3n*dImQ1n*dImQ2n*dImQ3n*dImQ5n
6063 - dReQ2n*dImQ1n*pow(dImQ3n,2.)*dImQ5n + dReQ1n*dImQ2n*pow(dImQ3n,2.)*dImQ5n;
e1d101a6 6064 // <5>_{5n,1n,1n|4n,3n}:
c10259fb 6065 Double_t reQ5nQ1nQ1nQ4nstarQ3nstar = pow(dReQ1n,2.)*dReQ3n*dReQ4n*dReQ5n - dReQ3n*dReQ4n*dReQ5n*pow(dImQ1n,2.)
6066 + 2.*dReQ1n*dReQ4n*dReQ5n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ1n*dImQ4n
6067 - pow(dReQ1n,2.)*dReQ5n*dImQ3n*dImQ4n + dReQ5n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
6068 - 2.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ5n + pow(dReQ1n,2.)*dReQ4n*dImQ3n*dImQ5n
6069 - dReQ4n*pow(dImQ1n,2.)*dImQ3n*dImQ5n + pow(dReQ1n,2.)*dReQ3n*dImQ4n*dImQ5n
e1d101a6 6070 - dReQ3n*pow(dImQ1n,2.)*dImQ4n*dImQ5n + 2.*dReQ1n*dImQ1n*dImQ3n*dImQ4n*dImQ5n;
6071 // <5>_{5n,3n|4n,2n,2n}:
c10259fb 6072 Double_t reQ5nQ3nQ4nstarQ2nstarQ2nstar = dReQ4n*dReQ3n*pow(dReQ2n,2.)*dReQ5n + pow(dReQ2n,2.)*dReQ5n*dImQ4n*dImQ3n
6073 - 2.*dReQ3n*dReQ2n*dReQ5n*dImQ4n*dImQ2n + 2.*dReQ4n*dReQ2n*dReQ5n*dImQ3n*dImQ2n
6074 - dReQ4n*dReQ3n*dReQ5n*pow(dImQ2n,2.) - dReQ5n*dImQ4n*dImQ3n*pow(dImQ2n,2.)
6075 + dReQ3n*pow(dReQ2n,2.)*dImQ4n*dImQ5n - dReQ4n*pow(dReQ2n,2.)*dImQ3n*dImQ5n
6076 + 2.*dReQ4n*dReQ3n*dReQ2n*dImQ2n*dImQ5n + 2.*dReQ2n*dImQ4n*dImQ3n*dImQ2n*dImQ5n
6077 - dReQ3n*dImQ4n*pow(dImQ2n,2.)*dImQ5n + dReQ4n*dImQ3n*pow(dImQ2n,2.)*dImQ5n;
e1d101a6 6078 Double_t reQ8nQ4nstarQ2nstarQ2nstar = (dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
6079 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n);
6080 // <5>_{5n,2n,1n|4n,4n}:
c10259fb 6081 Double_t reQ5nQ2nQ1nQ4nstarQ4nstar = dReQ1n*dReQ2n*pow(dReQ4n,2.)*dReQ5n - pow(dReQ4n,2.)*dReQ5n*dImQ1n*dImQ2n
6082 + 2.*dReQ2n*dReQ4n*dReQ5n*dImQ1n*dImQ4n + 2.*dReQ1n*dReQ4n*dReQ5n*dImQ2n*dImQ4n
6083 - dReQ1n*dReQ2n*dReQ5n*pow(dImQ4n,2.) + dReQ5n*dImQ1n*dImQ2n*pow(dImQ4n,2.)
6084 - dReQ2n*pow(dReQ4n,2.)*dImQ1n*dImQ5n - dReQ1n*pow(dReQ4n,2.)*dImQ2n*dImQ5n
6085 + 2.*dReQ1n*dReQ2n*dReQ4n*dImQ4n*dImQ5n - 2.*dReQ4n*dImQ1n*dImQ2n*dImQ4n*dImQ5n
6086 + dReQ2n*dImQ1n*pow(dImQ4n,2.)*dImQ5n + dReQ1n*dImQ2n*pow(dImQ4n,2.)*dImQ5n;
e1d101a6 6087 // <5>_{6n,1n|3n,2n,2n}:
c10259fb 6088 Double_t reQ6nQ1nQ3nstarQ2nstarQ2nstar = dReQ3n*dReQ1n*pow(dReQ2n,2.)*dReQ6n + pow(dReQ2n,2.)*dReQ6n*dImQ3n*dImQ1n
6089 - 2.*dReQ1n*dReQ2n*dReQ6n*dImQ3n*dImQ2n + 2.*dReQ3n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
6090 - dReQ3n*dReQ1n*dReQ6n*pow(dImQ2n,2.) - dReQ6n*dImQ3n*dImQ1n*pow(dImQ2n,2.)
6091 + dReQ1n*pow(dReQ2n,2.)*dImQ3n*dImQ6n - dReQ3n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
6092 + 2.*dReQ3n*dReQ1n*dReQ2n*dImQ2n*dImQ6n + 2.*dReQ2n*dImQ3n*dImQ1n*dImQ2n*dImQ6n
6093 - dReQ1n*dImQ3n*pow(dImQ2n,2.)*dImQ6n + dReQ3n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
e1d101a6 6094
6095 // <5>_{6n,3n|4n,4n,1n}:
c10259fb 6096 Double_t reQ6nQ3nQ4nstarQ4nstarQ1nstar = dReQ1n*dReQ3n*pow(dReQ4n,2.)*dReQ6n + pow(dReQ4n,2.)*dReQ6n*dImQ1n*dImQ3n
6097 - 2.*dReQ3n*dReQ4n*dReQ6n*dImQ1n*dImQ4n + 2.*dReQ1n*dReQ4n*dReQ6n*dImQ3n*dImQ4n
6098 - dReQ1n*dReQ3n*dReQ6n*pow(dImQ4n,2.) - dReQ6n*dImQ1n*dImQ3n*pow(dImQ4n,2.)
6099 + dReQ3n*pow(dReQ4n,2.)*dImQ1n*dImQ6n - dReQ1n*pow(dReQ4n,2.)*dImQ3n*dImQ6n
6100 + 2.*dReQ1n*dReQ3n*dReQ4n*dImQ4n*dImQ6n + 2.*dReQ4n*dImQ1n*dImQ3n*dImQ4n*dImQ6n
6101 - dReQ3n*dImQ1n*pow(dImQ4n,2.)*dImQ6n + dReQ1n*dImQ3n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6102
6103 // five6n1n1n5n3n = 0.; // <5>_{6n,1n,1n|5n,3n} = <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
c10259fb 6104 Double_t reQ6nQ1nQ1nQ5nstarQ3nstar = pow(dReQ1n,2.)*dReQ3n*dReQ5n*dReQ6n - dReQ3n*dReQ5n*dReQ6n*pow(dImQ1n,2.)
6105 + 2.*dReQ1n*dReQ5n*dReQ6n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ6n*dImQ1n*dImQ5n
6106 - pow(dReQ1n,2.)*dReQ6n*dImQ3n*dImQ5n + dReQ6n*pow(dImQ1n,2.)*dImQ3n*dImQ5n
6107 - 2.*dReQ1n*dReQ3n*dReQ5n*dImQ1n*dImQ6n + pow(dReQ1n,2.)*dReQ5n*dImQ3n*dImQ6n
6108 - dReQ5n*pow(dImQ1n,2.)*dImQ3n*dImQ6n + pow(dReQ1n,2.)*dReQ3n*dImQ5n*dImQ6n
e1d101a6 6109 - dReQ3n*pow(dImQ1n,2.)*dImQ5n*dImQ6n + 2.*dReQ1n*dImQ1n*dImQ3n*dImQ5n*dImQ6n;
6110
6111 // <5>_{6n,3n|5n,2n,2n}:
c10259fb 6112 Double_t reQ6nQ3nQ5nstarQ2nstarQ2nstar = dReQ5n*dReQ3n*pow(dReQ2n,2.)*dReQ6n + pow(dReQ2n,2.)*dReQ6n*dImQ5n*dImQ3n
6113 - 2.*dReQ3n*dReQ2n*dReQ6n*dImQ5n*dImQ2n + 2.*dReQ5n*dReQ2n*dReQ6n*dImQ3n*dImQ2n
6114 - dReQ5n*dReQ3n*dReQ6n*pow(dImQ2n,2.) - dReQ6n*dImQ5n*dImQ3n*pow(dImQ2n,2.)
6115 + dReQ3n*pow(dReQ2n,2.)*dImQ5n*dImQ6n - dReQ5n*pow(dReQ2n,2.)*dImQ3n*dImQ6n
6116 + 2.*dReQ5n*dReQ3n*dReQ2n*dImQ2n*dImQ6n + 2.*dReQ2n*dImQ5n*dImQ3n*dImQ2n*dImQ6n
6117 - dReQ3n*dImQ5n*pow(dImQ2n,2.)*dImQ6n + dReQ5n*dImQ3n*pow(dImQ2n,2.)*dImQ6n;
e1d101a6 6118
6119 // <5>_{6n,5n|4n,4n,3n}:
c10259fb 6120 Double_t reQ6nQ5nQ4nstarQ4nstarQ3nstar = dReQ3n*dReQ5n*pow(dReQ4n,2.)*dReQ6n + pow(dReQ4n,2.)*dReQ6n*dImQ3n*dImQ5n
6121 - 2.*dReQ5n*dReQ4n*dReQ6n*dImQ3n*dImQ4n + 2.*dReQ3n*dReQ4n*dReQ6n*dImQ5n*dImQ4n
6122 - dReQ3n*dReQ5n*dReQ6n*pow(dImQ4n,2.) - dReQ6n*dImQ3n*dImQ5n*pow(dImQ4n,2.)
6123 + dReQ5n*pow(dReQ4n,2.)*dImQ3n*dImQ6n - dReQ3n*pow(dReQ4n,2.)*dImQ5n*dImQ6n
6124 + 2.*dReQ3n*dReQ5n*dReQ4n*dImQ4n*dImQ6n + 2.*dReQ4n*dImQ3n*dImQ5n*dImQ4n*dImQ6n
6125 - dReQ5n*dImQ3n*pow(dImQ4n,2.)*dImQ6n + dReQ3n*dImQ5n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6126 Double_t reQ11nQ4nstarQ4nstarQ3nstar = (dReQ11n*dReQ3n+dImQ11n*dImQ3n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6127 + 2.*dReQ4n*dImQ4n*(dImQ11n*dReQ3n-dReQ11n*dImQ3n);
6128
c10259fb 6129 // <5>_{6n,3n,1n|5n,5n}:
6130 Double_t reQ6nQ3nQ1nQ5nstarQ5nstar = dReQ1n*dReQ3n*pow(dReQ5n,2.)*dReQ6n - pow(dReQ5n,2.)*dReQ6n*dImQ1n*dImQ3n
6131 + 2.*dReQ3n*dReQ5n*dReQ6n*dImQ1n*dImQ5n + 2.*dReQ1n*dReQ5n*dReQ6n*dImQ3n*dImQ5n
6132 - dReQ1n*dReQ3n*dReQ6n*pow(dImQ5n,2.) + dReQ6n*dImQ1n*dImQ3n*pow(dImQ5n,2.)
6133 - dReQ3n*pow(dReQ5n,2.)*dImQ1n*dImQ6n - dReQ1n*pow(dReQ5n,2.)*dImQ3n*dImQ6n
6134 + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ5n*dImQ6n - 2.*dReQ5n*dImQ1n*dImQ3n*dImQ5n*dImQ6n
6135 + dReQ3n*dImQ1n*pow(dImQ5n,2.)*dImQ6n + dReQ1n*dImQ3n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 6136
6137 // <5>_{6n,6n|5n,4n,3n}:
c10259fb 6138 Double_t reQ6nQ6nQ5nstarQ4nstarQ3nstar = dReQ3n*dReQ4n*dReQ5n*pow(dReQ6n,2.) - dReQ5n*pow(dReQ6n,2.)*dImQ3n*dImQ4n
6139 - dReQ4n*pow(dReQ6n,2.)*dImQ3n*dImQ5n - dReQ3n*pow(dReQ6n,2.)*dImQ4n*dImQ5n
6140 + 2.*dReQ4n*dReQ5n*dReQ6n*dImQ3n*dImQ6n + 2.*dReQ3n*dReQ5n*dReQ6n*dImQ4n*dImQ6n
6141 + 2.*dReQ3n*dReQ4n*dReQ6n*dImQ5n*dImQ6n - 2.*dReQ6n*dImQ3n*dImQ4n*dImQ5n*dImQ6n
6142 - dReQ3n*dReQ4n*dReQ5n*pow(dImQ6n,2.) + dReQ5n*dImQ3n*dImQ4n*pow(dImQ6n,2.)
6143 + dReQ4n*dImQ3n*dImQ5n*pow(dImQ6n,2.) + dReQ3n*dImQ4n*dImQ5n*pow(dImQ6n,2.);
e1d101a6 6144
6145
6146 Double_t reQ8nQ4nQ6nstarQ6nstar = dImQ4n*pow(dImQ6n,2.)*dImQ8n+2.*dImQ6n*dImQ8n*dReQ4n*dReQ6n
6147 - dImQ4n*dImQ8n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ4n*dReQ8n
6148 + 2.*dImQ4n*dImQ6n*dReQ6n*dReQ8n+dReQ4n*pow(dReQ6n,2.)*dReQ8n;
6149
6150
6151 Double_t reQ9nQ3nQ6nstarQ6nstar = dImQ3n*pow(dImQ6n,2.)*dImQ9n+2.*dImQ6n*dImQ9n*dReQ3n*dReQ6n
6152 - dImQ3n*dImQ9n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ3n*dReQ9n
6153 + 2.*dImQ3n*dImQ6n*dReQ6n*dReQ9n+dReQ3n*pow(dReQ6n,2.)*dReQ9n;
6154
6155
c10259fb 6156 Double_t reQ12nQ5nstarQ4nstarQ3nstar = dReQ3n*dReQ5n*dReQ4n*dReQ12n-dReQ4n*dReQ12n*dImQ3n*dImQ5n
6157 - dReQ5n*dReQ12n*dImQ3n*dImQ4n-dReQ3n*dReQ12n*dImQ5n*dImQ4n
6158 + dReQ5n*dReQ4n*dImQ3n*dImQ12n+dReQ3n*dReQ4n*dImQ5n*dImQ12n
6159 + dReQ3n*dReQ5n*dImQ4n*dImQ12n-dImQ3n*dImQ5n*dImQ4n*dImQ12n;
e1d101a6 6160 Double_t reQ12nQ9nstarQ3nstar = dReQ12n*dReQ9n*dReQ3n-dReQ12n*dImQ9n*dImQ3n+dImQ12n*dReQ9n*dImQ3n
6161 + dImQ12n*dImQ9n*dReQ3n;
e1d101a6 6162 Double_t reQ12nQ8nstarQ4nstar = dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n
6163 + dImQ12n*dImQ8n*dReQ4n;
6164
6165
6166 five4n3n3n2n2n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))
6167 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
6168 - ((dReQ7n*dReQ3n+dImQ7n*dImQ3n)*(pow(dReQ2n,2.)-pow(dImQ2n,2.))
6169 + 2.*dReQ2n*dImQ2n*(dImQ7n*dReQ3n-dReQ7n*dImQ3n))
6170 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
6171 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6172 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
6173 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
6174 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
6175 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
6176 - 2.*(dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
6177 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
6178 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
6179 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n)
6180 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6181 + 1.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6182 + 3.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6183 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
6184 + 2.*(dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
6185 + 2.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6186 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6187 + 6.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6188 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6189 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6190 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6191 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6192 - 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6193 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6194 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6195 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6196 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6197 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6198 - 2.*dMult*(dMult-12.))
6199 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6200 five4n2n4n1n1n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))
6201 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6202 - reQ6nQ4nstarQ1nstarQ1nstar
6203 - reQ4nQ2nstarQ1nstarQ1nstar
6204 - 2.*reQ4nQ1nQ3nstarQ2nstar
6205 - 2.*reQ5nQ1nQ4nstarQ2nstar
6206 + 2.*reQ3nQ2nstarQ1nstar
6207 + reQ6nQ4nstarQ2nstar
6208 + 3.*reQ4nQ2nstarQ2nstar
6209 + 2.*reQ5nQ3nstarQ2nstar
6210 + 2.*reQ6nQ5nstarQ1nstar
6211 + 2.*reQ6nQ4nstarQ2nstar
6212 + 6.*reQ4nQ3nstarQ1nstar
6213 + 6.*reQ5nQ4nstarQ1nstar
6214 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6215 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6216 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6217 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6218 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6219 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6220 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6221 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6222 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6223 // to be polished:
6224 five4n3n4n2n1n = (reQ4nQ3nQ4nstarQ2nstarQ1nstar
6225 - reQ5nQ2nQ4nstarQ3nstar
6226 - reQ6nQ1nQ4nstarQ3nstar
6227 - reQ4nQ1nQ3nstarQ2nstar
6228 - reQ7nQ4nstarQ2nstarQ1nstar
6229 - reQ4nQ2nstarQ1nstarQ1nstar
6230 - reQ4nQ2nQ3nstarQ3nstar
6231 + reQ4nQ3nstarQ1nstar
6232 + reQ7nQ4nstarQ3nstar
6233 + 3.*reQ4nQ3nstarQ1nstar
6234 + 2.*reQ7nQ4nstarQ3nstar
6235 + reQ5nQ3nstarQ2nstar
6236 + reQ7nQ5nstarQ2nstar
6237 + reQ6nQ3nstarQ3nstar
6238 + reQ4nQ3nstarQ1nstar
6239 + reQ7nQ6nstarQ1nstar
6240 + reQ2nQ1nstarQ1nstar
6241 - (dMult-6.)*reQ3nQ2nstarQ1nstar
6242 + 3.*reQ5nQ4nstarQ1nstar
6243 + reQ4nQ3nstarQ1nstar
6244 + 2.*reQ4nQ2nstarQ2nstar
6245 + 3.*reQ6nQ4nstarQ2nstar
6246 + reQ3nQ2nstarQ1nstar
6247 + reQ4nQ2nstarQ2nstar
6248 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6249 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6250 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6251 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6252 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6253 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6254 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6255 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6256 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6257 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6258 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6259 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6260 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6261 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6262 five5n1n3n2n1n = ((pow(dImQ1n,2.)+pow(dReQ1n,2.))*(dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
6263 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n)
6264 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6265 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6266 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6267 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6268 - (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
6269 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
6270 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
6271 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n)
6272 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
6273 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
6274 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
6275 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
6276 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
6277 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
6278 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
6279 - (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
6280 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
6281 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n)
6282 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
6283 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
6284 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
6285 + 3.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
6286 + dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n
6287 + pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n
6288 + 4.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
6289 - (dMult-7.)*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6290 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6291 + pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
6292 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6293 + 3.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6294 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6295 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6296 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6297 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6298 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6299 + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6300 - 2.*dMult*(dMult-12.))
6301 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6302 // to be polished:
6303 five5n2n5n1n1n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6304 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6305 - reQ7nQ5nstarQ1nstarQ1nstar
6306 - reQ5nQ3nstarQ1nstarQ1nstar
6307 - 2.*reQ5nQ1nQ4nstarQ2nstar
6308 - 2.*reQ6nQ1nQ5nstarQ2nstar
6309 + 2.*reQ4nQ3nstarQ1nstar
6310 + reQ7nQ5nstarQ2nstar
6311 + 3.*reQ5nQ3nstarQ2nstar
6312 + 2.*reQ6nQ4nstarQ2nstar
6313 + 2.*reQ7nQ6nstarQ1nstar
6314 + 2.*reQ7nQ5nstarQ2nstar
6315 + 6.*reQ5nQ4nstarQ1nstar
6316 + 6.*reQ6nQ5nstarQ1nstar
6317 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6318 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6319 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6320 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))-4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6321 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6322 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6323 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6324 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6325 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6326 // to be polished:
6327 five5n2n4n2n1n = (reQ5nQ2nQ4nstarQ2nstarQ1nstar
6328 - reQ5nQ2nQ4nstarQ3nstar
6329 - reQ6nQ1nQ5nstarQ2nstar
6330 - reQ5nQ2nstarQ2nstarQ1nstar
6331 - reQ7nQ4nstarQ2nstarQ1nstar
6332 - reQ4nQ1nQ3nstarQ2nstar
6333 - reQ5nQ1nQ4nstarQ2nstar
6334 + reQ2nQ1nstarQ1nstar
6335 + reQ7nQ5nstarQ2nstar
6336 + 3.*reQ5nQ3nstarQ2nstar
6337 + 2.*reQ7nQ5nstarQ2nstar
6338 + reQ5nQ3nstarQ2nstar
6339 + reQ7nQ4nstarQ3nstar
6340 + reQ6nQ5nstarQ1nstar
6341 + reQ2nQ1nstarQ1nstar
6342 + reQ7nQ6nstarQ1nstar
6343 + reQ3nQ2nstarQ1nstar
6344 - (dMult-6.)*reQ5nQ4nstarQ1nstar
6345 + 3.*reQ3nQ2nstarQ1nstar
6346 + reQ2nQ1nstarQ1nstar
6347 + 2.*reQ4nQ2nstarQ2nstar
6348 + 3.*reQ6nQ4nstarQ2nstar
6349 + reQ4nQ3nstarQ1nstar
6350 + reQ4nQ2nstarQ2nstar
6351 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6352 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6353 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6354 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6355 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6356 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6357 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6358 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6359 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6360 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6361 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6362 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6363 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
6364 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6365 // to be polished:
6366 five5n3n4n3n1n = (reQ5nQ3nQ4nstarQ3nstarQ1nstar
6367 - reQ5nQ3nQ4nstarQ4nstar
6368 - reQ7nQ1nQ5nstarQ3nstar
6369 - reQ5nQ3nstarQ1nstarQ1nstar
6370 - reQ8nQ4nstarQ3nstarQ1nstar
6371 - reQ4nQ1nQ3nstarQ2nstar
6372 - reQ5nQ2nQ4nstarQ3nstar
6373 + reQ3nQ2nstarQ1nstar
6374 + reQ8nQ5nstarQ3nstar
6375 + 3.*reQ5nQ3nstarQ2nstar
6376 + 2.*reQ8nQ5nstarQ3nstar
6377 + reQ5nQ4nstarQ1nstar
6378 + reQ8nQ4nstarQ4nstar
6379 + reQ7nQ5nstarQ2nstar
6380 + reQ3nQ2nstarQ1nstar
6381 + reQ8nQ7nstarQ1nstar
6382 + reQ2nQ1nstarQ1nstar
6383 - (dMult-6.)*reQ5nQ4nstarQ1nstar
6384 + 3.*reQ4nQ3nstarQ1nstar
6385 + reQ3nQ2nstarQ1nstar
6386 + 2.*reQ4nQ3nstarQ1nstar
6387 + 3.*reQ7nQ4nstarQ3nstar
6388 + reQ4nQ2nstarQ2nstar
6389 + reQ4nQ3nstarQ1nstar
6390 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6391 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6392 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6393 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6394 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6395 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6396 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6397 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6398 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6399 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6400 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6401 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6402 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6403 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6404 // to be polished:
6405 five5n4n4n3n2n = (reQ5nQ4nQ4nstarQ3nstarQ2nstar
6406 - reQ6nQ3nQ5nstarQ4nstar
6407 - reQ7nQ2nQ5nstarQ4nstar
6408 - reQ5nQ1nQ4nstarQ2nstar
6409 - reQ9nQ4nstarQ3nstarQ2nstar
6410 - reQ4nQ1nQ3nstarQ2nstar
6411 - reQ5nQ2nQ4nstarQ3nstar
6412 + reQ4nQ2nstarQ2nstar
6413 + reQ9nQ5nstarQ4nstar
6414 + 3.*reQ5nQ4nstarQ1nstar
6415 + 2.*reQ9nQ5nstarQ4nstar
6416 + reQ6nQ5nstarQ1nstar
6417 + reQ9nQ6nstarQ3nstar
6418 + reQ7nQ5nstarQ2nstar
6419 + reQ4nQ2nstarQ2nstar
6420 + reQ9nQ7nstarQ2nstar
6421 + reQ2nQ1nstarQ1nstar
6422 - (dMult-6.)*reQ5nQ3nstarQ2nstar
6423 + 3.*reQ6nQ4nstarQ2nstar
6424 + reQ4nQ2nstarQ2nstar
6425 + 2.*reQ4nQ3nstarQ1nstar
6426 + 3.*reQ7nQ4nstarQ3nstar
6427 + reQ3nQ2nstarQ1nstar
6428 + reQ4nQ3nstarQ1nstar
6429 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6430 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6431 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6432 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6433 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6434 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6435 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6436 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6437 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6438 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6439 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6440 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6441 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6442 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6443 // to be polished:
6444 five5n3n5n2n1n = (reQ5nQ3nQ5nstarQ2nstarQ1nstar
6445 - reQ6nQ2nQ5nstarQ3nstar
6446 - reQ7nQ1nQ5nstarQ3nstar
6447 - reQ5nQ1nQ3nstarQ3nstar
6448 - reQ8nQ5nstarQ2nstarQ1nstar
6449 - reQ5nQ2nstarQ2nstarQ1nstar
6450 - reQ5nQ2nQ4nstarQ3nstar
6451 + reQ5nQ4nstarQ1nstar
6452 + reQ8nQ5nstarQ3nstar
6453 + 3.*reQ5nQ3nstarQ2nstar
6454 + 2.*reQ8nQ5nstarQ3nstar
6455 + reQ6nQ3nstarQ3nstar
6456 + reQ8nQ6nstarQ2nstar
6457 + reQ7nQ4nstarQ3nstar
6458 + reQ5nQ4nstarQ1nstar
6459 + reQ8nQ7nstarQ1nstar
6460 + reQ3nQ2nstarQ1nstar
6461 - (dMult-6.)*reQ3nQ2nstarQ1nstar
6462 + 3.*reQ6nQ5nstarQ1nstar
6463 + reQ5nQ4nstarQ1nstar
6464 + 2.*reQ5nQ3nstarQ2nstar
6465 + 3.*reQ7nQ5nstarQ2nstar
6466 + reQ4nQ2nstarQ2nstar
6467 + reQ5nQ3nstarQ2nstar
6468 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6469 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6470 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6471 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6472 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6473 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6474 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6475 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6476 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6477 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6478 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6479 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6480 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6481 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6482 // to be polished:
6483 five5n4n5n2n2n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6484 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
6485 - reQ9nQ5nstarQ2nstarQ2nstar
6486 - reQ5nQ2nstarQ2nstarQ1nstar
6487 - 2.*reQ5nQ2nQ4nstarQ3nstar
6488 - 2.*reQ7nQ2nQ5nstarQ4nstar
6489 + 2.*reQ3nQ2nstarQ1nstar
6490 + reQ9nQ5nstarQ4nstar
6491 + 3.*reQ5nQ4nstarQ1nstar
6492 + 2.*reQ7nQ4nstarQ3nstar
6493 + 2.*reQ9nQ7nstarQ2nstar
6494 + 2.*reQ9nQ5nstarQ4nstar
6495 + 6.*reQ5nQ3nstarQ2nstar
6496 + 6.*reQ7nQ5nstarQ2nstar
6497 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6498 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6499 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6500 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6501 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6502 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6503 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6504 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6505 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6506 // to be polished:
6507 five5n4n5n3n1n = (reQ5nQ4nQ5nstarQ3nstarQ1nstar
6508 - reQ6nQ3nQ5nstarQ4nstar
6509 - reQ8nQ1nQ5nstarQ4nstar
6510 - reQ5nQ1nQ4nstarQ2nstar
6511 - reQ9nQ5nstarQ3nstarQ1nstar
6512 - reQ5nQ3nstarQ1nstarQ1nstar
6513 - reQ5nQ3nQ4nstarQ4nstar
6514 + reQ5nQ4nstarQ1nstar
6515 + reQ9nQ5nstarQ4nstar
6516 + 3.*reQ5nQ4nstarQ1nstar
6517 + 2.*reQ9nQ5nstarQ4nstar
6518 + reQ6nQ4nstarQ2nstar
6519 + reQ9nQ6nstarQ3nstar
6520 + reQ8nQ4nstarQ4nstar
6521 + reQ5nQ4nstarQ1nstar
6522 + reQ9nQ8nstarQ1nstar
6523 + reQ2nQ1nstarQ1nstar
6524 - (dMult-6.)*reQ4nQ3nstarQ1nstar
6525 + 3.*reQ6nQ5nstarQ1nstar
6526 + reQ5nQ4nstarQ1nstar
6527 + 2.*reQ5nQ3nstarQ2nstar
6528 + 3.*reQ8nQ5nstarQ3nstar
6529 + reQ4nQ3nstarQ1nstar
6530 + reQ5nQ3nstarQ2nstar
6531 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6532 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6533 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6534 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6535 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6536 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6537 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6538 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6539 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6540 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6541 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6542 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6543 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6544 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6545 five6n1n3n3n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))
6546 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6547 - 2.*(dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
6548 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
6549 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
6550 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n)
6551 - 2.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6552 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6553 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6554 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6555 - (-pow(dImQ3n,2.)*dImQ1n*dImQ7n+dImQ1n*dImQ7n*pow(dReQ3n,2.)
6556 + 2.*dImQ3n*dImQ7n*dReQ3n*dReQ1n-2.*dImQ3n*dImQ1n*dReQ3n*dReQ7n
6557 - pow(dImQ3n,2.)*dReQ1n*dReQ7n+pow(dReQ3n,2.)*dReQ1n*dReQ7n)
6558 - ((pow(dReQ3n,2.)-pow(dImQ3n,2.))*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)
6559 + 2.*dReQ3n*dImQ3n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6560 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6561 + (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6562 + 2.*(dReQ7n*dReQ3n*dReQ4n-dReQ7n*dImQ3n*dImQ4n+dImQ7n*dReQ3n*dImQ4n+dImQ7n*dImQ3n*dReQ4n)
6563 + 2.*(dReQ6n*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)+dImQ6n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6564 + 3.*(dReQ6n*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)+dImQ6n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6565 + 4.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6566 + 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6567 + 6.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
6568 + 2.*(dReQ5n*dReQ3n*dReQ2n-dReQ5n*dImQ3n*dImQ2n+dImQ5n*dReQ3n*dImQ2n+dImQ5n*dImQ3n*dReQ2n)
6569 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6570 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6571 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6572 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6573 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6574 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6575 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+(dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6576 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6577 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6578 five6n2n3n3n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))
6579 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6580 - 2.*(dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
6581 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
6582 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
6583 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n)
6584 - 2.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6585 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6586 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6587 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6588 - (-pow(dImQ3n,2.)*dImQ2n*dImQ8n+dImQ2n*dImQ8n*pow(dReQ3n,2.)
6589 + 2.*dImQ3n*dImQ8n*dReQ3n*dReQ2n-2.*dImQ3n*dImQ2n*dReQ3n*dReQ8n
6590 - pow(dImQ3n,2.)*dReQ2n*dReQ8n+pow(dReQ3n,2.)*dReQ2n*dReQ8n)
6591 - ((pow(dReQ3n,2.)-pow(dImQ3n,2.))*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)
6592 + 2.*dReQ3n*dImQ3n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6593 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6594 + (dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6595 + 2.*(dReQ8n*dReQ3n*dReQ5n-dReQ8n*dImQ3n*dImQ5n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
6596 + 2.*(dReQ6n*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)+dImQ6n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6597 + 3.*(dReQ6n*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)+dImQ6n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6598 + 4.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6599 + 2.*(dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6600 + 6.*(dReQ5n*dReQ3n*dReQ2n-dReQ5n*dImQ3n*dImQ2n+dImQ5n*dReQ3n*dImQ2n+dImQ5n*dImQ3n*dReQ2n)
6601 + 2.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
6602 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6603 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6604 - 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6605 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6606 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6607 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6608 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6609 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6610 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6611 // to be polished:
6612 five6n1n4n2n1n = (reQ6nQ1nQ4nstarQ2nstarQ1nstar
6613 - reQ6nQ1nQ4nstarQ3nstar
6614 - reQ6nQ1nQ5nstarQ2nstar
6615 - reQ6nQ3nstarQ2nstarQ1nstar
6616 - reQ7nQ4nstarQ2nstarQ1nstar
6617 - reQ5nQ1nQ4nstarQ2nstar
6618 - reQ6nQ4nstarQ1nstarQ1nstar
6619 + reQ2nQ1nstarQ1nstar
6620 + reQ7nQ6nstarQ1nstar
6621 + 3.*reQ6nQ5nstarQ1nstar
6622 + 2.*reQ7nQ6nstarQ1nstar
6623 + reQ6nQ3nstarQ3nstar
6624 + reQ7nQ4nstarQ3nstar
6625 + reQ6nQ5nstarQ1nstar
6626 + reQ2nQ1nstarQ1nstar
6627 + reQ7nQ5nstarQ2nstar
6628 + reQ5nQ3nstarQ2nstar
6629 - (dMult-6.)*reQ6nQ4nstarQ2nstar
6630 + 3.*reQ3nQ2nstarQ1nstar
6631 + reQ2nQ1nstarQ1nstar
6632 + 2.*reQ4nQ3nstarQ1nstar
6633 + 3.*reQ5nQ4nstarQ1nstar
6634 + reQ5nQ4nstarQ1nstar
6635 + reQ4nQ3nstarQ1nstar
6636 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6637 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6638 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6639 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6640 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6641 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6642 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6643 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6644 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6645 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6646 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6647 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6648 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
6649 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6650 // to be polished:
6651 five6n3n4n3n2n = (reQ6nQ3nQ4nstarQ3nstarQ2nstar
6652 - reQ6nQ3nQ5nstarQ4nstar
6653 - reQ7nQ2nQ6nstarQ3nstar
6654 - reQ6nQ3nstarQ2nstarQ1nstar
6655 - reQ9nQ4nstarQ3nstarQ2nstar
6656 - reQ4nQ2nQ3nstarQ3nstar
6657 - reQ6nQ1nQ4nstarQ3nstar
6658 + reQ3nQ2nstarQ1nstar
6659 + reQ9nQ6nstarQ3nstar
6660 + 3.*reQ6nQ3nstarQ3nstar
6661 + 2.*reQ9nQ6nstarQ3nstar
6662 + reQ6nQ5nstarQ1nstar
6663 + reQ9nQ5nstarQ4nstar
6664 + reQ7nQ6nstarQ1nstar
6665 + reQ3nQ2nstarQ1nstar
6666 + reQ9nQ7nstarQ2nstar
6667 + reQ3nQ2nstarQ1nstar
6668 - (dMult-6.)*reQ6nQ4nstarQ2nstar
6669 + 3.*reQ5nQ3nstarQ2nstar
6670 + reQ3nQ2nstarQ1nstar
6671 + 2.*reQ4nQ3nstarQ1nstar
6672 + 3.*reQ7nQ4nstarQ3nstar
6673 + reQ4nQ3nstarQ1nstar
6674 + reQ4nQ3nstarQ1nstar
6675 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6676 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6677 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6678 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6679 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6680 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6681 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6682 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6683 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6684 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6685 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6686 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6687 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6688 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6689 five6n4n4n3n3n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))
6690 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6691 - ((dReQ10n*dReQ4n+dImQ10n*dImQ4n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
6692 + 2.*dReQ3n*dImQ3n*(dImQ10n*dReQ4n-dReQ10n*dImQ4n))
6693 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
6694 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
6695 - 2.*(dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
6696 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
6697 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
6698 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n)
6699 - 2.*(dImQ3n*dImQ4n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ3n*dReQ4n
6700 + dImQ4n*dImQ7n*dReQ3n*dReQ6n-dImQ3n*dImQ7n*dReQ4n*dReQ6n
6701 - dImQ4n*dImQ6n*dReQ3n*dReQ7n+dImQ3n*dImQ6n*dReQ4n*dReQ7n
6702 + dImQ3n*dImQ4n*dReQ6n*dReQ7n+dReQ3n*dReQ4n*dReQ6n*dReQ7n)
6703 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6704 + 1.*(dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n+dImQ10n*dImQ6n*dReQ4n)
6705 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
6706 + 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6707 + 2.*(dReQ10n*dReQ7n*dReQ3n-dReQ10n*dImQ7n*dImQ3n+dImQ10n*dReQ7n*dImQ3n+dImQ10n*dImQ7n*dReQ3n)
6708 + 2.*(dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n+dImQ10n*dImQ6n*dReQ4n)
6709 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6710 + 6.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6711 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6712 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6713 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6714 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6715 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6716 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6717 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6718 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6719 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6720 // to be polished:
6721 five6n2n5n2n1n = (reQ6nQ2nQ5nstarQ2nstarQ1nstar
6722 - reQ6nQ2nQ5nstarQ3nstar
6723 - reQ7nQ1nQ6nstarQ2nstar
6724 - reQ6nQ3nstarQ2nstarQ1nstar
6725 - reQ8nQ5nstarQ2nstarQ1nstar
6726 - reQ5nQ1nQ4nstarQ2nstar
6727 - reQ6nQ1nQ5nstarQ2nstar
6728 + reQ2nQ1nstarQ1nstar
6729 + reQ8nQ6nstarQ2nstar
6730 + 3.*reQ6nQ4nstarQ2nstar
6731 + 2.*reQ8nQ6nstarQ2nstar
6732 + reQ6nQ3nstarQ3nstar
6733 + reQ8nQ5nstarQ3nstar
6734 + reQ7nQ6nstarQ1nstar
6735 + reQ2nQ1nstarQ1nstar
6736 + reQ8nQ7nstarQ1nstar
6737 + reQ4nQ3nstarQ1nstar
6738 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6739 + 3.*reQ3nQ2nstarQ1nstar
6740 + reQ2nQ1nstarQ1nstar
6741 + 2.*reQ5nQ3nstarQ2nstar
6742 + 3.*reQ7nQ5nstarQ2nstar
6743 + reQ5nQ4nstarQ1nstar
6744 + reQ5nQ3nstarQ2nstar
6745 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6746 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6747 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6748 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6749 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6750 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6751 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6752 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6753 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6754 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6755 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6756 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6757 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
6758 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6759 // to be polished:
6760 five6n3n5n3n1n = (reQ6nQ3nQ5nstarQ3nstarQ1nstar
6761 - reQ6nQ3nQ5nstarQ4nstar
6762 - reQ8nQ1nQ6nstarQ3nstar
6763 - reQ6nQ3nstarQ2nstarQ1nstar
6764 - reQ9nQ5nstarQ3nstarQ1nstar
6765 - reQ5nQ1nQ3nstarQ3nstar
6766 - reQ6nQ2nQ5nstarQ3nstar
6767 + reQ3nQ2nstarQ1nstar
6768 + reQ9nQ6nstarQ3nstar
6769 + 3.*reQ6nQ3nstarQ3nstar
6770 + 2.*reQ9nQ6nstarQ3nstar
6771 + reQ6nQ4nstarQ2nstar
6772 + reQ9nQ5nstarQ4nstar
6773 + reQ8nQ6nstarQ2nstar
6774 + reQ3nQ2nstarQ1nstar
6775 + reQ9nQ8nstarQ1nstar
6776 + reQ3nQ2nstarQ1nstar
6777 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6778 + 3.*reQ4nQ3nstarQ1nstar
6779 + reQ3nQ2nstarQ1nstar
6780 + 2.*reQ5nQ3nstarQ2nstar
6781 + 3.*reQ8nQ5nstarQ3nstar
6782 + reQ5nQ3nstarQ2nstar
6783 + reQ5nQ3nstarQ2nstar
6784 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6785 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6786 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6787 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6788 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6789 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6790 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6791 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6792 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6793 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6794 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6795 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6796 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6797 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6798 // to be polished:
6799 five6n4n5n4n1n = (reQ6nQ4nQ5nstarQ4nstarQ1nstar
6800 - reQ6nQ4nQ5nstarQ5nstar
6801 - reQ9nQ1nQ6nstarQ4nstar
6802 - reQ6nQ4nstarQ1nstarQ1nstar
6803 - reQ10nQ5nstarQ4nstarQ1nstar
6804 - reQ5nQ1nQ4nstarQ2nstar
6805 - reQ6nQ3nQ5nstarQ4nstar
6806 + reQ4nQ3nstarQ1nstar
6807 + reQ10nQ6nstarQ4nstar
6808 + 3.*reQ6nQ4nstarQ2nstar
6809 + 2.*reQ10nQ6nstarQ4nstar
6810 + reQ6nQ5nstarQ1nstar
6811 + reQ10nQ5nstarQ5nstar
6812 + reQ9nQ6nstarQ3nstar
6813 + reQ4nQ3nstarQ1nstar
6814 + reQ10nQ9nstarQ1nstar
6815 + reQ2nQ1nstarQ1nstar
6816 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6817 + 3.*reQ5nQ4nstarQ1nstar
6818 + reQ4nQ3nstarQ1nstar
6819 + 2.*reQ5nQ4nstarQ1nstar
6820 + 3.*reQ9nQ5nstarQ4nstar
6821 + reQ5nQ3nstarQ2nstar
6822 + reQ5nQ4nstarQ1nstar
6823 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6824 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6825 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6826 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
6827 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6828 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6829 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6830 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6831 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6832 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6833 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6834 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6835 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6836 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6837 five6n5n5n3n3n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6838 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6839 - ((dReQ11n*dReQ5n+dImQ11n*dImQ5n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
6840 + 2.*dReQ3n*dImQ3n*(dImQ11n*dReQ5n-dReQ11n*dImQ5n))
6841 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
6842 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
6843 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
6844 - 2.*(dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
6845 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
6846 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
6847 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n)
6848 - 2.*(dImQ3n*dImQ5n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ3n*dReQ5n
6849 + dImQ5n*dImQ8n*dReQ3n*dReQ6n-dImQ3n*dImQ8n*dReQ5n*dReQ6n
6850 - dImQ5n*dImQ6n*dReQ3n*dReQ8n+dImQ3n*dImQ6n*dReQ5n*dReQ8n
6851 + dImQ3n*dImQ5n*dReQ6n*dReQ8n+dReQ3n*dReQ5n*dReQ6n*dReQ8n)
6852 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6853 + 1.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n+dImQ11n*dImQ6n*dReQ5n)
6854 + 3.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
6855 + 2.*(dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6856 + 2.*(dReQ11n*dReQ8n*dReQ3n-dReQ11n*dImQ8n*dImQ3n+dImQ11n*dReQ8n*dImQ3n+dImQ11n*dImQ8n*dReQ3n)
6857 + 2.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n+dImQ11n*dImQ6n*dReQ5n)
6858 + 6.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6859 + 6.*(dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n+dImQ8n*dImQ5n*dReQ3n)
6860 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6861 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6862 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6863 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))-4.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6864 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6865 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6866 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6867 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6868 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6869 // to be polished:
6870 five6n2n6n1n1n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))
6871 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6872 - reQ8nQ6nstarQ1nstarQ1nstar
6873 - reQ6nQ4nstarQ1nstarQ1nstar
6874 - 2.*reQ6nQ1nQ5nstarQ2nstar
6875 - 2.*reQ7nQ1nQ6nstarQ2nstar
6876 + 2.*reQ5nQ4nstarQ1nstar
6877 + reQ8nQ6nstarQ2nstar
6878 + 3.*reQ6nQ4nstarQ2nstar
6879 + 2.*reQ7nQ5nstarQ2nstar
6880 + 2.*reQ8nQ7nstarQ1nstar
6881 + 2.*reQ8nQ6nstarQ2nstar
6882 + 6.*reQ6nQ5nstarQ1nstar
6883 + 6.*reQ7nQ6nstarQ1nstar
6884 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6885 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6886 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6887 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6888 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6889 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6890 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6891 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
6892 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6893 five6n3n6n2n1n = (reQ6nQ3nQ6nstarQ2nstarQ1nstar
6894 - reQ7nQ2nQ6nstarQ3nstar
6895 - reQ8nQ1nQ6nstarQ3nstar
6896 - reQ6nQ1nQ4nstarQ3nstar
6897 - reQ9nQ6nstarQ2nstarQ1nstar
6898 - reQ6nQ3nstarQ2nstarQ1nstar
6899 - reQ6nQ2nQ5nstarQ3nstar
6900 + reQ6nQ5nstarQ1nstar
6901 + reQ9nQ6nstarQ3nstar
6902 + 3.*reQ6nQ3nstarQ3nstar
6903 + 2.*reQ9nQ6nstarQ3nstar
6904 + reQ7nQ4nstarQ3nstar
6905 + reQ9nQ7nstarQ2nstar
6906 + reQ8nQ5nstarQ3nstar
6907 + reQ6nQ5nstarQ1nstar
6908 + reQ9nQ8nstarQ1nstar
6909 + reQ4nQ3nstarQ1nstar
6910 - (dMult-6.)*reQ3nQ2nstarQ1nstar
6911 + 3.*reQ7nQ6nstarQ1nstar
6912 + reQ6nQ5nstarQ1nstar
6913 + 2.*reQ6nQ4nstarQ2nstar
6914 + 3.*reQ8nQ6nstarQ2nstar
6915 + reQ5nQ3nstarQ2nstar
6916 + reQ6nQ4nstarQ2nstar
6917 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6918 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6919 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6920 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6921 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6922 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6923 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6924 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6925 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6926 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6927 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6928 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6929 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
6930 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6931 five6n4n6n2n2n = (-(pow(dImQ6n,2.)+pow(dReQ6n,2.))
6932 * (-2.*dImQ2n*dImQ4n*dReQ2n+pow(dImQ2n,2.)*dReQ4n-pow(dReQ2n,2.)*dReQ4n)
6933 - (-pow(dImQ2n,2.)*dImQ6n*dImQ10n+dImQ6n*dImQ10n*pow(dReQ2n,2.)
6934 + 2.*dImQ2n*dImQ10n*dReQ2n*dReQ6n-2.*dImQ2n*dImQ6n*dReQ2n*dReQ10n
6935 - pow(dImQ2n,2.)*dReQ6n*dReQ10n+pow(dReQ2n,2.)*dReQ6n*dReQ10n)
6936 - 2.*(dImQ2n*dImQ4n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ2n*dReQ4n
6937 + dImQ4n*dImQ8n*dReQ2n*dReQ6n-dImQ2n*dImQ8n*dReQ4n*dReQ6n
6938 - dImQ4n*dImQ6n*dReQ2n*dReQ8n+dImQ2n*dImQ6n*dReQ4n*dReQ8n
6939 + dImQ2n*dImQ4n*dReQ6n*dReQ8n+dReQ2n*dReQ4n*dReQ6n*dReQ8n)
6940 - (dReQ6n*pow(dReQ2n,3.)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2.)
6941 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2.)-dImQ6n*pow(dImQ2n,3.))
6942 - 2.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
6943 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
6944 + 2.*(dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n+dImQ10n*dImQ8n*dReQ2n)
6945 + 3.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
6946 + 6.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
6947 + 2.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
6948 + 9.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
6949 - (dMult-8.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6950 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6951 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6952 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))-4.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6953 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-12.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6954 + 2.*(dMult-9.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
6955 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6956 // to be polished:
6957 five6n4n6n3n1n = (reQ6nQ4nQ6nstarQ3nstarQ1nstar
6958 - reQ7nQ3nQ6nstarQ4nstar
6959 - reQ9nQ1nQ6nstarQ4nstar
6960 - reQ6nQ1nQ4nstarQ3nstar
6961 - reQ10nQ6nstarQ3nstarQ1nstar
6962 - reQ6nQ3nstarQ2nstarQ1nstar
6963 - reQ6nQ3nQ5nstarQ4nstar
6964 + reQ6nQ5nstarQ1nstar
6965 + reQ10nQ6nstarQ4nstar
6966 + 3.*reQ6nQ4nstarQ2nstar
6967 + 2.*reQ10nQ6nstarQ4nstar
6968 + reQ7nQ4nstarQ3nstar
6969 + reQ10nQ7nstarQ3nstar
6970 + reQ9nQ5nstarQ4nstar
6971 + reQ6nQ5nstarQ1nstar
6972 + reQ10nQ9nstarQ1nstar
6973 + reQ3nQ2nstarQ1nstar
6974 - (dMult-6.)*reQ4nQ3nstarQ1nstar
6975 + 3.*reQ7nQ6nstarQ1nstar
6976 + reQ6nQ5nstarQ1nstar
6977 + 2.*reQ6nQ3nstarQ3nstar
6978 + 3.*reQ9nQ6nstarQ3nstar
6979 + reQ5nQ3nstarQ2nstar
6980 + reQ6nQ3nstarQ3nstar
6981 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6982 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6983 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6984 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
6985 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6986 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6987 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6988 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6989 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6990 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6991 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6992 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6993 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
6994 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6995 // to be polished:
6996 five6n5n5n4n2n = (reQ6nQ5nQ5nstarQ4nstarQ2nstar
6997 - reQ7nQ4nQ6nstarQ5nstar
6998 - reQ9nQ2nQ6nstarQ5nstar
6999 - reQ6nQ1nQ5nstarQ2nstar
7000 - reQ11nQ5nstarQ4nstarQ2nstar
7001 - reQ5nQ1nQ4nstarQ2nstar
7002 - reQ6nQ3nQ5nstarQ4nstar
7003 + reQ5nQ3nstarQ2nstar
7004 + reQ11nQ6nstarQ5nstar
7005 + 3.*reQ6nQ5nstarQ1nstar
7006 + 2.*reQ11nQ6nstarQ5nstar
7007 + reQ7nQ6nstarQ1nstar
7008 + reQ11nQ7nstarQ4nstar
7009 + reQ9nQ6nstarQ3nstar
7010 + reQ5nQ3nstarQ2nstar
7011 + reQ11nQ9nstarQ2nstar
7012 + reQ2nQ1nstarQ1nstar
7013 - (dMult-6.)*reQ6nQ4nstarQ2nstar
7014 + 3.*reQ7nQ5nstarQ2nstar
7015 + reQ5nQ3nstarQ2nstar
7016 + 2.*reQ5nQ4nstarQ1nstar
7017 + 3.*reQ9nQ5nstarQ4nstar
7018 + reQ4nQ3nstarQ1nstar
7019 + reQ5nQ4nstarQ1nstar
7020 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7021 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7022 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7023 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7024 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7025 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7026 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7027 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7028 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7029 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7030 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7031 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7032 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7033 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7034 // to be polished:
7035 five6n5n6n3n2n = (reQ6nQ5nQ6nstarQ3nstarQ2nstar
7036 - reQ8nQ3nQ6nstarQ5nstar
7037 - reQ9nQ2nQ6nstarQ5nstar
7038 - reQ6nQ2nQ5nstarQ3nstar
7039 - reQ11nQ6nstarQ3nstarQ2nstar
7040 - reQ6nQ3nstarQ2nstarQ1nstar
7041 - reQ6nQ3nQ5nstarQ4nstar
7042 + reQ6nQ4nstarQ2nstar
7043 + reQ11nQ6nstarQ5nstar
7044 + 3.*reQ6nQ5nstarQ1nstar
7045 + 2.*reQ11nQ6nstarQ5nstar
7046 + reQ8nQ5nstarQ3nstar
7047 + reQ11nQ8nstarQ3nstar
7048 + reQ9nQ5nstarQ4nstar
7049 + reQ6nQ4nstarQ2nstar
7050 + reQ11nQ9nstarQ2nstar
7051 + reQ3nQ2nstarQ1nstar
7052 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7053 + 3.*reQ8nQ6nstarQ2nstar
7054 + reQ6nQ4nstarQ2nstar
7055 + 2.*reQ6nQ3nstarQ3nstar
7056 + 3.*reQ9nQ6nstarQ3nstar
7057 + reQ4nQ3nstarQ1nstar
7058 + reQ6nQ3nstarQ3nstar
7059 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7060 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7061 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7062 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7063 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7064 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7065 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7066 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7067 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7068 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7069 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7070 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7071 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7072 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7073 // to be polished:
7074 five6n5n6n4n1n = (reQ6nQ5nQ6nstarQ4nstarQ1nstar
7075 - reQ7nQ4nQ6nstarQ5nstar
7076 - reQ10nQ1nQ6nstarQ5nstar
7077 - reQ6nQ1nQ5nstarQ2nstar
7078 - reQ11nQ6nstarQ4nstarQ1nstar
7079 - reQ6nQ4nstarQ1nstarQ1nstar
7080 - reQ6nQ4nQ5nstarQ5nstar
7081 + reQ6nQ5nstarQ1nstar
7082 + reQ11nQ6nstarQ5nstar
7083 + 3.*reQ6nQ5nstarQ1nstar
7084 + 2.*reQ11nQ6nstarQ5nstar
7085 + reQ7nQ5nstarQ2nstar
7086 + reQ11nQ7nstarQ4nstar
7087 + reQ10nQ5nstarQ5nstar
7088 + reQ6nQ5nstarQ1nstar
7089 + reQ11nQ10nstarQ1nstar
7090 + reQ2nQ1nstarQ1nstar
7091 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7092 + 3.*reQ7nQ6nstarQ1nstar
7093 + reQ6nQ5nstarQ1nstar
7094 + 2.*reQ6nQ4nstarQ2nstar
7095 + 3.*reQ10nQ6nstarQ4nstar
7096 + reQ5nQ4nstarQ1nstar
7097 + reQ6nQ4nstarQ2nstar
7098 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7099 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7100 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7101 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7102 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7103 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7104 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7105 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7106 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7107 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7108 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7109 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7110 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7111 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7112 // f2) Two distinct harmonics (9):
7113 five2n1n1n1n1n = ((dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
7114 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3))
7115 - (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7116 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7117 + 5.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7118 - 3.*(dMult-5.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7119 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7120 - 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7121 + 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7122 - 3.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
7123 + 6.*(2.*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult*(dMult-4.))
7124 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7125 five2n2n2n1n1n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.))+2.*dImQ2n*dReQ1n*dImQ1n)
7126 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7127 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7128 - 2.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7129 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7130 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7131 + 8.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7132 + 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7133 - 2.*(dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7134 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7135 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7136 + 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7137 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7138 + 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7139 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7140 five3n3n2n2n2n = (pow(dReQ2n,3.)*pow(dReQ3n,2.)-3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
7141 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n-2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n
7142 - pow(dReQ2n,3.)*pow(dImQ3n,2.)+3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.)
7143 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7144 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7145 - 3.*((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7146 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7147 - 6.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7148 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7149 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7150 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7151 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7152 + 6.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7153 + 12.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7154 + 6.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7155 - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7156 + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7157 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
7158 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7159 five4n1n1n1n1n = (pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
7160 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n-4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n
7161 - 6.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7162 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7163 - 4.*(dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7164 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7165 + 8.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7166 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7167 + 12.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7168 + 12.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7169 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7170 - 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+24.*dMult)
7171 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7172 five4n2n2n2n2n = ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(pow(dReQ2n,3)-3.*dReQ2n*pow(dImQ2n,2))
7173 + (dReQ4n*dImQ2n+dReQ2n*dImQ4n)*(3.*dImQ2n*pow(dReQ2n,2)-pow(dImQ2n,3))
7174 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7175 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7176 + 5.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7177 - 3.*(dMult-5.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7178 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7179 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7180 + 3.*(dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7181 - 3.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7182 + 6.*(2.*dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult*(dMult-4.))
7183 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7184 five4n4n4n2n2n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(dReQ4n*(pow(dReQ2n,2.)-pow(dImQ2n,2.))+2.*dImQ4n*dReQ2n*dImQ2n)
7185 - ((dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
7186 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n))
7187 - 2.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7188 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7189 + 3.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7190 + 8.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7191 + 2.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7192 - 2.*(dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7193 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))-4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7194 - pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)
7195 + 2.*(3.*dMult-10.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7196 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7197 + 4.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
7198 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7199 five6n3n3n3n3n = ((dReQ6n*dReQ3n-dImQ6n*dImQ3n)*(pow(dReQ3n,3)-3.*dReQ3n*pow(dImQ3n,2))
7200 + (dReQ6n*dImQ3n+dReQ3n*dImQ6n)*(3.*dImQ3n*pow(dReQ3n,2)-pow(dImQ3n,3))
7201 - (dReQ9n*pow(dReQ3n,3)-3.*dReQ3n*dReQ9n*pow(dImQ3n,2)
7202 + 3.*dImQ3n*dImQ9n*pow(dReQ3n,2)-dImQ9n*pow(dImQ3n,3))
7203 + 5.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
7204 - 3.*(dMult-5.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7205 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7206 - 3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7207 + 3.*(dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7208 - 3.*pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)
7209 + 6.*(2.*dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-6.*dMult*(dMult-4.))
7210 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7211 five6n6n4n4n4n = (pow(dReQ4n,3.)*pow(dReQ6n,2.)-3.*dReQ4n*pow(dReQ6n,2.)*pow(dImQ4n,2.)
7212 + 6.*pow(dReQ4n,2.)*dReQ6n*dImQ4n*dImQ6n-2.*dReQ6n*pow(dImQ4n,3.)*dImQ6n
7213 - pow(dReQ4n,3.)*pow(dImQ6n,2.)+3.*dReQ4n*pow(dImQ4n,2.)*pow(dImQ6n,2.)
7214 - (dReQ12n*pow(dReQ4n,3)-3.*dReQ4n*dReQ12n*pow(dImQ4n,2)
7215 + 3.*dImQ4n*dImQ12n*pow(dReQ4n,2)-dImQ12n*pow(dImQ4n,3))
7216 - 3.*((dReQ8n*dReQ4n-dImQ8n*dImQ4n)*(dReQ6n*dReQ6n-dImQ6n*dImQ6n)
7217 + 2.*(dReQ8n*dImQ4n+dImQ8n*dReQ4n)*dReQ6n*dImQ6n)
7218 - 6.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7219 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7220 + 2.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
7221 + 3.*(dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n+dImQ12n*dImQ8n*dReQ4n)
7222 + 6.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7223 + 6.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7224 + 12.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7225 + 6.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7226 - 2.*((pow(dReQ12n,2.)+pow(dImQ12n,2.))+3.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7227 + 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+9.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7228 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-12.*dMult))
7229 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7230 five6n6n6n3n3n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(dReQ6n*(pow(dReQ3n,2.)-pow(dImQ3n,2.))+2.*dImQ6n*dReQ3n*dImQ3n)
7231 - ((dReQ12n*dReQ6n+dImQ12n*dImQ6n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
7232 + 2.*dReQ3n*dImQ3n*(dImQ12n*dReQ6n-dReQ12n*dImQ6n))
7233 - 2.*((pow(dReQ6n,2.)-pow(dImQ6n,2.))*(dReQ9n*dReQ3n-dImQ9n*dImQ3n)
7234 + 2.*dReQ6n*dImQ6n*(dReQ9n*dImQ3n+dImQ9n*dReQ3n))
7235 + 3.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
7236 + 8.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
7237 + 2.*(dReQ12n*(dReQ9n*dReQ3n-dImQ9n*dImQ3n)+dImQ12n*(dReQ9n*dImQ3n+dImQ9n*dReQ3n))
7238 - 2.*(dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7239 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))-4.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7240 - pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)
7241 + 2.*(3.*dMult-10.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7242 - 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7243 + 4.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-4.*dMult*(dMult-6.))
7244 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7245 // f3) Three distinct harmonics (30):
7246 five3n1n2n1n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
7247 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
7248 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7249 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7250 - (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7251 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7252 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7253 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7254 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7255 + pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
7256 - (2.*dMult-13.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
7257 + dImQ3n*dImQ2n*dReQ1n)
7258 + 7.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7259 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7260 + 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7261 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7262 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7263 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7264 - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
7265 + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7266 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7267 five3n2n2n2n1n = ((pow(dImQ2n,2.)+pow(dReQ2n,2.))*(dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
7268 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n)
7269 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
7270 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
7271 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
7272 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
7273 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
7274 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
7275 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
7276 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7277 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7278 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7279 + (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7280 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7281 + dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
7282 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7283 - 2.*(dMult-6.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7284 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7285 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7286 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7287 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7288 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7289 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7290 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7291 five3n3n3n2n1n = ((pow(dImQ3n,2.)+pow(dReQ3n,2.))*(dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
7292 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n)
7293 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
7294 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
7295 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
7296 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
7297 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7298 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
7299 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
7300 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7301 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7302 + dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n
7303 + dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n
7304 + 3.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7305 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7306 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7307 - 2.*(dMult-6.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7308 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7309 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7310 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7311 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(3.*dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7312 - pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7313 + 2.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7314 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7315 five4n1n3n1n1n = (reQ4nQ1nQ3nstarQ1nstarQ1nstar
7316 - reQ4nQ1nQ3nstarQ2nstar
7317 - reQ4nQ1nQ4nstarQ1nstar
7318 - reQ4nQ2nstarQ1nstarQ1nstar
7319 - reQ5nQ3nstarQ1nstarQ1nstar
7320 - reQ3nQ1nQ3nstarQ1nstar
7321 - dMult*reQ4nQ3nstarQ1nstar
7322 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7323 + reQ5nQ4nstarQ1nstar
7324 + 3.*reQ4nQ3nstarQ1nstar
7325 + 2.*reQ5nQ4nstarQ1nstar
7326 + reQ4nQ2nstarQ2nstar
7327 + reQ5nQ3nstarQ2nstar
7328 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7329 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7330 + reQ5nQ4nstarQ1nstar
7331 + reQ3nQ2nstarQ1nstar
7332 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7333 + 3.*reQ2nQ1nstarQ1nstar
7334 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7335 + 2.*reQ3nQ2nstarQ1nstar
7336 + 3.*reQ4nQ3nstarQ1nstar
7337 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7338 + reQ3nQ2nstarQ1nstar
7339 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7340 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7341 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7342 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7343 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7344 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7345 - 2.*dMult*dMult
7346 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7347 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7348 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7349 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7350 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7351 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
7352 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7353 five4n1n1n3n3n = // calculated by Peter Jochumzsen
7354 (pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
7355 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
7356 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
7357 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n+2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
7358 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n+2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n
7359 + 6.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7360 - 1.*(-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
7361 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
7362 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n)
7363 - 1.*((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7364 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7365 + 1.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7366 - 2.*(dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7367 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
7368 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
7369 + 2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7370 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7371 - 2.*(dReQ3n*pow(dReQ1n,3.)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
7372 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2.)-dImQ3n*pow(dImQ1n,3.))
7373 + 10.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7374 + 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
7375 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7376 - 4.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
7377 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
7378 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
7379 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
7380 + 4.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7381 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7382 - 16.*pow(dReQ1n,2.)-16.*pow(dImQ1n,2.)
7383 - 10.*pow(dReQ2n,2.)-10.*pow(dImQ2n,2.)-12.*pow(dReQ3n,2.)-12.*pow(dImQ3n,2.)
7384 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)-4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
7385 - 2.*pow(dReQ6n,2.)-2.*pow(dImQ6n,2.)+24.*dMult)
7386 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7387 // to be polished:
7388 five4n3n3n3n1n = (reQ4nQ3nQ3nstarQ3nstarQ1nstar
7389 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7390 - reQ6nQ1nQ4nstarQ3nstar
7391 - dMult*reQ4nQ3nstarQ1nstar
7392 - reQ7nQ3nstarQ3nstarQ1nstar
7393 - reQ3nQ1nQ3nstarQ1nstar
7394 - reQ4nQ2nQ3nstarQ3nstar
7395 + reQ3nQ2nstarQ1nstar
7396 + reQ7nQ4nstarQ3nstar
7397 + 3.*reQ4nQ3nstarQ1nstar
7398 + 2.*reQ7nQ4nstarQ3nstar
7399 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7400 + reQ7nQ4nstarQ3nstar
7401 + reQ6nQ4nstarQ2nstar
7402 + reQ3nQ2nstarQ1nstar
7403 + reQ7nQ6nstarQ1nstar
7404 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7405 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7406 + 3.*reQ4nQ3nstarQ1nstar
7407 + reQ3nQ2nstarQ1nstar
7408 + 2.*dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7409 + 3.*reQ6nQ3nstarQ3nstar
7410 + reQ3nQ2nstarQ1nstar
7411 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7412 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7413 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7414 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7415 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7416 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7417 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7418 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7419 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7420 - 2.*dMult*dMult
7421 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7422 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7423 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7424 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
7425 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7426
7427 // to be polished:
7428 five4n4n3n3n2n = (reQ4nQ4nQ3nstarQ3nstarQ2nstar
7429 - reQ5nQ3nQ4nstarQ4nstar-reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ4nstarQ4nstar
7430 - reQ4nQ1nQ3nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar
7431 - reQ8nQ3nstarQ3nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
7432 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ8nQ4nstarQ4nstar)
7433 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ6nQ4nstarQ2nstar
7434 + reQ8nQ6nstarQ2nstar+reQ8nQ5nstarQ3nstar+reQ8nQ5nstarQ3nstar
7435 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
7436 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
7437 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7438 + 2.*(reQ6nQ3nstarQ3nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
7439 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar)
7440 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7441 - 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.))
7442 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
7443 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7444 - 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.))
7445 + 24.*dMult)
7446 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7447
7448 /*
7449 // correct recursive formula, not needed for the time being.
7450 five4n4n3n3n2n = (reQ4nQ4nQ3nstarQ3nstarQ2nstar
7451 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
7452 * (2.*four4n2n3n3n+4.*four4n1n3n2n+1.*four8n3n3n2n+1.*four6n2n4n4n+2.*four5n3n4n4n)
7453 - dMult*(dMult-1.)*(dMult-2.)
7454 * (4.*three4n3n1n+2.*three4n2n2n+2.*three5n3n2n+1.*three6n3n3n+1.*three8n4n4n
7455 + 4.*three3n2n1n+2.*three2n1n1n+1.*three8n6n2n+2.*three8n5n3n+2.*three6n4n2n+4.*three5n4n1n)
7456 - dMult*(dMult-1.)
7457 * (1.*two2n2n+2.*two3n3n+2.*two4n4n+2.*two5n5n+1.*two6n6n+4.*two1n1n+2.*two2n2n+1.*two8n8n)
7458 - dMult)
7459 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7460 */
7461
7462 // to be polished:
7463 five4n4n4n3n1n = (reQ4nQ4nQ4nstarQ3nstarQ1nstar
7464 - reQ5nQ3nQ4nstarQ4nstar
7465 - reQ7nQ1nQ4nstarQ4nstar
7466 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7467 - reQ8nQ4nstarQ3nstarQ1nstar
7468 - dMult*reQ4nQ3nstarQ1nstar
7469 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7470 + reQ4nQ3nstarQ1nstar
7471 + reQ8nQ4nstarQ4nstar
7472 + 3.*dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7473 + 2.*reQ8nQ4nstarQ4nstar
7474 + reQ5nQ4nstarQ1nstar
7475 + reQ8nQ5nstarQ3nstar
7476 + reQ7nQ4nstarQ3nstar
7477 + reQ4nQ3nstarQ1nstar
7478 + reQ8nQ7nstarQ1nstar
7479 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7480 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7481 + 3.*reQ5nQ4nstarQ1nstar
7482 + reQ4nQ3nstarQ1nstar
7483 + 2.*reQ4nQ3nstarQ1nstar
7484 + 3.*reQ7nQ4nstarQ3nstar
7485 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7486 + reQ4nQ3nstarQ1nstar
7487 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7488 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7489 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7490 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7491 - 2.*dMult*dMult
7492 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7493 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7494 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7495 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7496 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7497 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7498 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7499 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
7500 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7501 // to be polished:
7502 five5n2n1n1n1n = (reQ5nQ2nstarQ1nstarQ1nstarQ1nstar
7503 - reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
7504 - reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar
7505 - reQ3nQ1nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar
7506 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
7507 + reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar
7508 + reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7509 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7510 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7511 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7512 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7513 + 2.*(reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
7514 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7515 - 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.))
7516 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7517 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7518 - 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.))
7519 + 24.*dMult)
7520 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7521 // to be polished:
7522 five5n1n2n2n2n = (reQ5nQ1nQ2nstarQ2nstarQ2nstar
7523 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar
7524 - reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
7525 - reQ6nQ2nstarQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
7526 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ6nQ5nstarQ1nstar)
7527 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7528 + reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
7529 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7530 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7531 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7532 + 2.*(reQ4nQ2nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ4nQ2nstarQ2nstar)
7533 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7534 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7535 - 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.))
7536 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7537 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7538 - 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.))
7539 + 24.*dMult)
7540 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7541 // to be polished:
7542 five5n2n3n2n2n = (reQ5nQ2nQ3nstarQ2nstarQ2nstar
7543 - reQ5nQ2nQ4nstarQ3nstar
7544 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7545 - reQ5nQ2nstarQ2nstarQ1nstar
7546 - reQ7nQ3nstarQ2nstarQ2nstar
7547 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7548 - dMult*reQ5nQ3nstarQ2nstar
7549 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7550 + reQ7nQ5nstarQ2nstar
7551 + 3.*reQ5nQ3nstarQ2nstar
7552 + 2.*reQ7nQ5nstarQ2nstar
7553 + reQ5nQ4nstarQ1nstar
7554 + reQ7nQ4nstarQ3nstar
7555 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7556 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7557 + reQ7nQ5nstarQ2nstar
7558 + reQ3nQ2nstarQ1nstar
7559 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7560 + 3.*reQ4nQ2nstarQ2nstar
7561 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7562 + 2.*reQ3nQ2nstarQ1nstar
7563 + 3.*reQ5nQ3nstarQ2nstar
7564 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7565 + reQ3nQ2nstarQ1nstar
7566 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7567 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7568 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7569 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7570 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7571 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7572 - 2.*dMult*dMult
7573 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7574 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7575 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7576 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7577 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7578 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
7579 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7580 // to be polished:
7581 five5n3n3n3n2n = (reQ5nQ3nQ3nstarQ3nstarQ2nstar
7582 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7583 - reQ6nQ2nQ5nstarQ3nstar
7584 - dMult*reQ5nQ3nstarQ2nstar
7585 - reQ8nQ3nstarQ3nstarQ2nstar
7586 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7587 - reQ5nQ1nQ3nstarQ3nstar
7588 + reQ3nQ2nstarQ1nstar
7589 + reQ8nQ5nstarQ3nstar
7590 + 3.*reQ5nQ3nstarQ2nstar
7591 + 2.*reQ8nQ5nstarQ3nstar
7592 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7593 + reQ8nQ5nstarQ3nstar
7594 + reQ6nQ5nstarQ1nstar
7595 + reQ3nQ2nstarQ1nstar
7596 + reQ8nQ6nstarQ2nstar
7597 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7598 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7599 + 3.*reQ5nQ3nstarQ2nstar
7600 + reQ3nQ2nstarQ1nstar
7601 + 2.*dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7602 + 3.*reQ6nQ3nstarQ3nstar
7603 + reQ3nQ2nstarQ1nstar
7604 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7605 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7606 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7607 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7608 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7609 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7610 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7611 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7612 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7613 - 2.*dMult*dMult
7614 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7615 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7616 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7617 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
7618 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7619 // to be polished:
7620 five5n1n4n1n1n = (reQ5nQ1nQ4nstarQ1nstarQ1nstar
7621 - reQ5nQ1nQ4nstarQ2nstar
7622 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7623 - reQ5nQ3nstarQ1nstarQ1nstar
7624 - reQ6nQ4nstarQ1nstarQ1nstar
7625 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7626 - dMult*reQ5nQ4nstarQ1nstar
7627 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7628 + reQ6nQ5nstarQ1nstar
7629 + 3.*reQ5nQ4nstarQ1nstar
7630 + 2.*reQ6nQ5nstarQ1nstar
7631 + reQ5nQ3nstarQ2nstar
7632 + reQ6nQ4nstarQ2nstar
7633 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7634 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7635 + reQ6nQ5nstarQ1nstar
7636 + reQ4nQ3nstarQ1nstar
7637 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7638 + 3.*reQ2nQ1nstarQ1nstar
7639 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7640 + 2.*reQ4nQ3nstarQ1nstar
7641 + 3.*reQ5nQ4nstarQ1nstar
7642 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7643 + reQ4nQ3nstarQ1nstar
7644 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7645 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7646 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7647 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7648 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7649 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7650 - 2.*dMult*dMult
7651 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7652 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7653 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7654 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7655 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7656 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
7657 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7658 // to be polished:
7659 five5n4n3n3n3n = (reQ5nQ4nQ3nstarQ3nstarQ3nstar
7660 - reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar
7661 - reQ5nQ1nQ3nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar
7662 - reQ9nQ3nstarQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar
7663 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ9nQ5nstarQ4nstar)
7664 + reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
7665 + reQ9nQ6nstarQ3nstar+reQ9nQ6nstarQ3nstar+reQ9nQ6nstarQ3nstar
7666 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7667 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7668 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7669 + 2.*(reQ6nQ3nstarQ3nstar+reQ6nQ3nstarQ3nstar+reQ6nQ3nstarQ3nstar)
7670 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
7671 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7672 - 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.))
7673 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
7674 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7675 - 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.))
7676 + 24.*dMult)
7677 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7678 // to be polished:
7679 five5n4n4n4n1n = (reQ5nQ4nQ4nstarQ4nstarQ1nstar
7680 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7681 - reQ8nQ1nQ5nstarQ4nstar
7682 - dMult*reQ5nQ4nstarQ1nstar
7683 - reQ9nQ4nstarQ4nstarQ1nstar
7684 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7685 - reQ5nQ3nQ4nstarQ4nstar
7686 + reQ4nQ3nstarQ1nstar
7687 + reQ9nQ5nstarQ4nstar
7688 + 3.*reQ5nQ4nstarQ1nstar
7689 + 2.*reQ9nQ5nstarQ4nstar
7690 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7691 + reQ9nQ5nstarQ4nstar
7692 + reQ8nQ5nstarQ3nstar
7693 + reQ4nQ3nstarQ1nstar
7694 + reQ9nQ8nstarQ1nstar
7695 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7696 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7697 + 3.*reQ5nQ4nstarQ1nstar
7698 + reQ4nQ3nstarQ1nstar
7699 + 2.*dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7700 + 3.*reQ8nQ4nstarQ4nstar
7701 + reQ4nQ3nstarQ1nstar
7702 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7703 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7704 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7705 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7706 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7707 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7708 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7709 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7710 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7711 - 2.*dMult*dMult
7712 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7713 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7714 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7715 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
7716 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7717 // to be polished:
7718 five5n5n4n3n3n = (reQ5nQ5nQ4nstarQ3nstarQ3nstar
7719 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar
7720 - reQ5nQ2nQ4nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
7721 - reQ10nQ4nstarQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
7722 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
7723 + reQ6nQ5nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar
7724 + reQ10nQ7nstarQ3nstar+reQ10nQ6nstarQ4nstar+reQ10nQ7nstarQ3nstar
7725 + reQ6nQ5nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7726 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
7727 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
7728 + 2.*(reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar+reQ6nQ3nstarQ3nstar)
7729 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
7730 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7731 - 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.))
7732 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
7733 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7734 - 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.))
7735 + 24.*dMult)
7736 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7737 // to be polished:
7738 five5n5n4n4n2n = (reQ5nQ5nQ4nstarQ4nstarQ2nstar
7739 - reQ6nQ4nQ5nstarQ5nstar-reQ6nQ4nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar
7740 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar
7741 - reQ10nQ4nstarQ4nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar
7742 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ10nQ5nstarQ5nstar)
7743 + reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ8nQ5nstarQ3nstar
7744 + reQ10nQ8nstarQ2nstar+reQ10nQ6nstarQ4nstar+reQ10nQ6nstarQ4nstar
7745 + reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
7746 + reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
7747 + reQ8nQ5nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7748 + 2.*(reQ8nQ4nstarQ4nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar)
7749 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
7750 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7751 - 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.))
7752 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
7753 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7754 - 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.))
7755 + 24.*dMult)
7756 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7757 // to be polished:
7758 five5n5n5n3n2n = (reQ5nQ5nQ5nstarQ3nstarQ2nstar
7759 - reQ7nQ3nQ5nstarQ5nstar
7760 - reQ8nQ2nQ5nstarQ5nstar
7761 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7762 - reQ10nQ5nstarQ3nstarQ2nstar
7763 - dMult*reQ5nQ3nstarQ2nstar
7764 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7765 + reQ5nQ3nstarQ2nstar
7766 + reQ10nQ5nstarQ5nstar
7767 + 3.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7768 + 2.*reQ10nQ5nstarQ5nstar
7769 + reQ7nQ5nstarQ2nstar
7770 + reQ10nQ7nstarQ3nstar
7771 + reQ8nQ5nstarQ3nstar
7772 + reQ5nQ3nstarQ2nstar
7773 + reQ10nQ8nstarQ2nstar
7774 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7775 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7776 + 3.*reQ7nQ5nstarQ2nstar
7777 + reQ5nQ3nstarQ2nstar
7778 + 2.*reQ5nQ3nstarQ2nstar
7779 + 3.*reQ8nQ5nstarQ3nstar
7780 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7781 + reQ5nQ3nstarQ2nstar
7782 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7783 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7784 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7785 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7786 - 2.*dMult*dMult
7787 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7788 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7789 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7790 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7791 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7792 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7793 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7794 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7795 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7796 // to be polished:
7797 five5n5n5n4n1n = (reQ5nQ5nQ5nstarQ4nstarQ1nstar
7798 - reQ6nQ4nQ5nstarQ5nstar
7799 - reQ9nQ1nQ5nstarQ5nstar
7800 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7801 - reQ10nQ5nstarQ4nstarQ1nstar
7802 - dMult*reQ5nQ4nstarQ1nstar
7803 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7804 + reQ5nQ4nstarQ1nstar
7805 + reQ10nQ5nstarQ5nstar
7806 + 3.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7807 + 2.*reQ10nQ5nstarQ5nstar
7808 + reQ6nQ5nstarQ1nstar
7809 + reQ10nQ6nstarQ4nstar
7810 + reQ9nQ5nstarQ4nstar
7811 + reQ5nQ4nstarQ1nstar
7812 + reQ10nQ9nstarQ1nstar
7813 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7814 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7815 + 3.*reQ6nQ5nstarQ1nstar
7816 + reQ5nQ4nstarQ1nstar
7817 + 2.*reQ5nQ4nstarQ1nstar
7818 + 3.*reQ9nQ5nstarQ4nstar
7819 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7820 + reQ5nQ4nstarQ1nstar
7821 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7822 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7823 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7824 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7825 - 2.*dMult*dMult
7826 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7827 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7828 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7829 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7830 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7831 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7832 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7833 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7834 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7835 five6n2n2n1n1n = // calculated by Peter Jochumzsen
7836 (pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
7837 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
7838 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
7839 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n+2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
7840 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n-2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n
7841 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7842 + 8.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7843 + 5.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7844 - (-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
7845 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
7846 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n)
7847 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7848 - (dReQ6n*pow(dReQ2n,3.)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2.)
7849 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2.)-dImQ6n*pow(dImQ2n,3.))
7850 + 4.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7851 - 2.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
7852 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7853 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7854 - 2.*(-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
7855 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
7856 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
7857 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7858 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7859 + 4.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
7860 - 4.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
7861 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
7862 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
7863 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
7864 - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.)-14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.)
7865 - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.)-6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)
7866 - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)-6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.)+24.*dMult)
7867 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7868 // to be polished:
7869 five6n3n1n1n1n = (reQ6nQ3nstarQ1nstarQ1nstarQ1nstar
7870 - reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar
7871 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ4nstarQ1nstarQ1nstar
7872 - reQ3nQ1nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar
7873 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar)
7874 + reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
7875 + reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7876 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7877 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7878 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7879 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7880 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
7881 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7882 - 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.))
7883 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7884 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7885 - 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.))
7886 + 24.*dMult)
53884472 7887 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
e1d101a6 7888
7889
7890 // to be polished:
7891 five6n1n1n4n4n = (reQ6nQ1nQ1nQ4nstarQ4nstar
7892 - reQ6nQ2nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar
7893 - reQ6nQ1nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
7894 - reQ8nQ6nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
7895 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ8nQ4nstarQ4nstar)
7896 + reQ4nQ2nstarQ2nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar // ?? 1st term
7897 + reQ8nQ7nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ8nQ7nstarQ1nstar
7898 + reQ4nQ2nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7899 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
7900 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
7901 + 2.*(reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7902 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
7903 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7904 - 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.))
7905 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
7906 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7907 - 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.))
7908 + 24.*dMult)
53884472 7909 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
403e3389 7910
e1d101a6 7911 // to be polished:
7912 five6n1n5n1n1n = (reQ6nQ1nQ5nstarQ1nstarQ1nstar
7913 - reQ6nQ1nQ5nstarQ2nstar
7914 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7915 - reQ6nQ4nstarQ1nstarQ1nstar
7916 - reQ7nQ5nstarQ1nstarQ1nstar
7917 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7918 - dMult*reQ6nQ5nstarQ1nstar
7919 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7920 + reQ7nQ6nstarQ1nstar
7921 + 3.*reQ6nQ5nstarQ1nstar
7922 + 2.*reQ7nQ6nstarQ1nstar
7923 + reQ6nQ4nstarQ2nstar
7924 + reQ7nQ5nstarQ2nstar
7925 + dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7926 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7927 + reQ7nQ6nstarQ1nstar
7928 + reQ5nQ4nstarQ1nstar
7929 - (dMult-6.)*reQ6nQ5nstarQ1nstar
7930 + 3.*reQ2nQ1nstarQ1nstar
7931 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7932 + 2.*reQ5nQ4nstarQ1nstar
7933 + 3.*reQ6nQ5nstarQ1nstar
7934 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7935 + reQ5nQ4nstarQ1nstar
7936 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7937 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7938 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7939 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7940 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7941 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7942 - 2.*dMult*dMult
7943 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7944 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7945 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7946 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7947 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7948 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
7949 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7950 five6n2n4n2n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
7951 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
7952 - ((dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
7953 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n))
7954 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7955 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7956 - ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7957 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7958 + 4.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7959 + pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n
7960 - (2.*dMult-13.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
7961 + dImQ6n*dImQ4n*dReQ2n)
7962 + 7.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7963 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7964 + 2.*(dMult-5.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7965 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7966 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7967 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7968 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7969 + 2.*(3.*dMult-11.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
7970 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7971 five6n4n4n4n2n = ((pow(dImQ4n,2.)+pow(dReQ4n,2.))*(dImQ4n*dImQ6n*dReQ2n+dImQ2n*dImQ6n*dReQ4n
7972 - dImQ2n*dImQ4n*dReQ6n+dReQ2n*dReQ4n*dReQ6n)
7973 - (-pow(dImQ4n,2.)*dImQ2n*dImQ10n+dImQ2n*dImQ10n*pow(dReQ4n,2.)
7974 + 2.*dImQ4n*dImQ10n*dReQ4n*dReQ2n-2.*dImQ4n*dImQ2n*dReQ4n*dReQ10n
7975 - pow(dImQ4n,2.)*dReQ2n*dReQ10n+pow(dReQ4n,2.)*dReQ2n*dReQ10n)
7976 - (dImQ2n*dImQ4n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ2n*dReQ4n
7977 + dImQ4n*dImQ8n*dReQ2n*dReQ6n-dImQ2n*dImQ8n*dReQ4n*dReQ6n
7978 - dImQ4n*dImQ6n*dReQ2n*dReQ8n+dImQ2n*dImQ6n*dReQ4n*dReQ8n
7979 + dImQ2n*dImQ4n*dReQ6n*dReQ8n+dReQ2n*dReQ4n*dReQ6n*dReQ8n)
7980 - ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7981 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7982 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7983 + (dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n+dImQ10n*dImQ8n*dReQ2n)
7984 + 4.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
7985 + dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n)
7986 + 3.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7987 - 2.*(dMult-6.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7988 + 4.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7989 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7990 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))+2.*(dMult-5.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7991 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7992 - pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7993 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
7994 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7995 // to be polished:
7996 five6n2n2n5n5n = (reQ6nQ2nQ2nQ5nstarQ5nstar
7997 - reQ6nQ4nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar
7998 - reQ6nQ2nQ5nstarQ3nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
7999 - reQ10nQ6nstarQ2nstarQ2nstar-reQ6nQ2nQ5nstarQ3nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8000 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
8001 + reQ5nQ4nstarQ1nstar+reQ8nQ5nstarQ3nstar+reQ8nQ5nstarQ3nstar
8002 + reQ10nQ8nstarQ2nstar+reQ10nQ6nstarQ4nstar+reQ10nQ8nstarQ2nstar
8003 + reQ5nQ4nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8004 + reQ8nQ5nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8005 + reQ8nQ5nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8006 + 2.*(reQ8nQ6nstarQ2nstar+reQ8nQ6nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8007 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
8008 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8009 - 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.))
8010 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8011 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8012 - 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.))
8013 + 24.*dMult)
8014 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8015 // to be polished:
8016 five6n5n5n5n1n = (reQ6nQ5nQ5nstarQ5nstarQ1nstar
8017 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8018 - reQ10nQ1nQ6nstarQ5nstar
8019 - dMult*reQ6nQ5nstarQ1nstar
8020 - reQ11nQ5nstarQ5nstarQ1nstar
8021 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8022 - reQ6nQ4nQ5nstarQ5nstar
8023 + reQ5nQ4nstarQ1nstar
8024 + reQ11nQ6nstarQ5nstar
8025 + 3.*reQ6nQ5nstarQ1nstar
8026 + 2.*reQ11nQ6nstarQ5nstar
8027 + dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8028 + reQ11nQ6nstarQ5nstar
8029 + reQ10nQ6nstarQ4nstar
8030 + reQ5nQ4nstarQ1nstar
8031 + reQ11nQ10nstarQ1nstar
8032 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8033 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8034 + 3.*reQ6nQ5nstarQ1nstar
8035 + reQ5nQ4nstarQ1nstar
8036 + 2.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8037 + 3.*reQ10nQ5nstarQ5nstar
8038 + reQ5nQ4nstarQ1nstar
8039 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8040 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8041 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8042 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8043 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
8044 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8045 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8046 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8047 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8048 - 2.*dMult*dMult
8049 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8050 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8051 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8052 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
8053 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8054 // to be polished:
8055 five6n6n5n5n2n = (reQ6nQ6nQ5nstarQ5nstarQ2nstar
8056 - reQ7nQ5nQ6nstarQ6nstar-reQ7nQ5nQ6nstarQ6nstar-reQ10nQ2nQ6nstarQ6nstar
8057 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ4nQ5nstarQ5nstar
8058 - reQ12nQ5nstarQ5nstarQ2nstar-reQ6nQ4nQ5nstarQ5nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8059 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ12nQ6nstarQ6nstar)
8060 + reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ10nQ6nstarQ4nstar
8061 + reQ12nQ10nstarQ2nstar+reQ12nQ7nstarQ5nstar+reQ12nQ7nstarQ5nstar
8062 + reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ5nQ4nstarQ1nstar
8063 + reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ5nQ4nstarQ1nstar
8064 + reQ10nQ6nstarQ4nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8065 + 2.*(reQ10nQ5nstarQ5nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar)
8066 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar)
8067 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8068 - 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.))
8069 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ10n,2.)+pow(dImQ10n,2.))
8070 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8071 - 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.))
8072 + 24.*dMult)
8073 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8074 five6n6n6n4n2n = ((pow(dImQ6n,2.)+pow(dReQ6n,2.))*(dImQ4n*dImQ6n*dReQ2n+dImQ2n*dImQ6n*dReQ4n
8075 - dImQ2n*dImQ4n*dReQ6n+dReQ2n*dReQ4n*dReQ6n)
8076 - (dReQ2n*dReQ4n*dReQ6n*dReQ12n-dReQ6n*dReQ12n*dImQ2n*dImQ4n
8077 - dReQ4n*dReQ12n*dImQ2n*dImQ6n-dReQ2n*dReQ12n*dImQ4n*dImQ6n
8078 + dReQ4n*dReQ6n*dImQ2n*dImQ12n+dReQ2n*dReQ6n*dImQ4n*dImQ12n
8079 + dReQ2n*dReQ4n*dImQ6n*dImQ12n-dImQ2n*dImQ4n*dImQ6n*dImQ12n)
8080 - (dImQ2n*pow(dImQ6n,2.)*dImQ10n+2.*dImQ6n*dImQ10n*dReQ2n*dReQ6n
8081 - dImQ2n*dImQ10n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ2n*dReQ10n
8082 + 2.*dImQ2n*dImQ6n*dReQ6n*dReQ10n+dReQ2n*pow(dReQ6n,2.)*dReQ10n)
8083 - ((dReQ8n*dReQ4n-dImQ8n*dImQ4n)*(dReQ6n*dReQ6n-dImQ6n*dImQ6n)
8084 + 2.*(dReQ8n*dImQ4n+dImQ8n*dReQ4n)*dReQ6n*dImQ6n)
8085 + dReQ12n*dReQ10n*dReQ2n-dReQ12n*dImQ10n*dImQ2n+dImQ12n*dReQ10n*dImQ2n+dImQ12n*dImQ10n*dReQ2n
8086 + dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n+dImQ12n*dImQ8n*dReQ4n
8087 + 3.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
8088 + 4.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
8089 + 4.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8090 - 2.*(dMult-6.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
8091 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8092 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8093 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))-2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8094 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))+2.*(3.*dMult-10.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8095 - pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8096 + 2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8097 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8098 // to be polished (and TBI swap with the one above):
8099 five6n6n6n5n1n = (reQ6nQ6nQ6nstarQ5nstarQ1nstar
8100 - reQ7nQ5nQ6nstarQ6nstar
8101 - reQ11nQ1nQ6nstarQ6nstar
8102 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8103 - reQ12nQ6nstarQ5nstarQ1nstar
8104 - dMult*reQ6nQ5nstarQ1nstar
8105 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8106 + reQ6nQ5nstarQ1nstar
8107 + reQ12nQ6nstarQ6nstar
8108 + 3.*dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8109 + 2.*reQ12nQ6nstarQ6nstar
8110 + reQ7nQ6nstarQ1nstar
8111 + reQ12nQ7nstarQ5nstar
8112 + reQ11nQ6nstarQ5nstar
8113 + reQ6nQ5nstarQ1nstar
8114 + reQ12nQ11nstarQ1nstar
8115 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8116 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8117 + 3.*reQ7nQ6nstarQ1nstar
8118 + reQ6nQ5nstarQ1nstar
8119 + 2.*reQ6nQ5nstarQ1nstar
8120 + 3.*reQ11nQ6nstarQ5nstar
8121 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8122 + reQ6nQ5nstarQ1nstar
8123 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8124 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8125 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8126 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))
8127 - 2.*dMult*dMult
8128 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
8129 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8130 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
8131 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8132 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8133 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8134 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8135 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
8136 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8137 // Four distinct harmonics (11):
8138 // to be polished:
8139 five5n2n3n3n1n = (reQ5nQ2nQ3nstarQ3nstarQ1nstar
8140 - reQ5nQ2nQ4nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar-reQ6nQ1nQ5nstarQ2nstar
8141 - reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar
8142 - reQ7nQ3nstarQ3nstarQ1nstar-reQ4nQ2nQ3nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
8143 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar)
8144 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ6nQ5nstarQ1nstar
8145 + reQ7nQ6nstarQ1nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar
8146 + reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8147 + reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8148 + reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
8149 + 2.*(reQ6nQ3nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8150 + 2.*(reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8151 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8152 - 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.))
8153 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8154 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8155 - 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.))
8156 + 24.*dMult)
8157 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8158 // to be polished:
8159 five5n1n1n4n3n = (reQ5nQ1nQ1nQ4nstarQ3nstar
8160 - reQ5nQ2nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar
8161 - reQ5nQ1nQ4nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8162 - reQ7nQ5nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar-reQ3nQ1nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar
8163 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ7nQ4nstarQ3nstar)
8164 + reQ4nQ2nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
8165 + reQ7nQ6nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ7nQ6nstarQ1nstar
8166 + reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8167 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8168 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8169 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8170 + 2.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8171 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8172 - 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.))
8173 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8174 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8175 - 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.))
8176 + 24.*dMult)
8177 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8178 // to be polished:
8179 five5n3n4n2n2n = (reQ5nQ3nQ4nstarQ2nstarQ2nstar
8180 - reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ5nstarQ3nstar-reQ6nQ2nQ5nstarQ3nstar
8181 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8182 - reQ8nQ4nstarQ2nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar
8183 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ8nQ5nstarQ3nstar)
8184 + reQ5nQ4nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8185 + reQ8nQ6nstarQ2nstar+reQ8nQ4nstarQ4nstar+reQ8nQ6nstarQ2nstar
8186 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8187 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8188 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8189 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8190 + 2.*(reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8191 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8192 - 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.))
8193 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8194 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8195 - 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.))
8196 + 24.*dMult)
8197 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 8198
e1d101a6 8199 // to be polished!!!:
8200 five5n2n1n4n4n = (reQ5nQ2nQ1nQ4nstarQ4nstar
8201 - reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar
8202 - reQ5nQ1nQ4nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar
8203 - reQ8nQ5nstarQ2nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8204 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ8nQ4nstarQ4nstar)
8205 + reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ7nQ4nstarQ3nstar
8206 + reQ8nQ7nstarQ1nstar+reQ8nQ5nstarQ3nstar+reQ8nQ6nstarQ2nstar
8207 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8208 + reQ6nQ4nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ5nQ3nstarQ2nstar
8209 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8210 + 2.*(reQ7nQ5nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8211 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar)
8212 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8213 - 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.))
8214 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8215 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8216 - 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.))
8217 + 24.*dMult)
8218 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
403e3389 8219
e1d101a6 8220
8221 // to be polished:
8222 five6n1n3n2n2n = (reQ6nQ1nQ3nstarQ2nstarQ2nstar
8223 - reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8224 - reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ2nstarQ2nstarQ2nstar-reQ6nQ3nstarQ2nstarQ1nstar
8225 - reQ7nQ3nstarQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
8226 + 2.*(reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ7nQ6nstarQ1nstar)
8227 + reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8228 + reQ7nQ5nstarQ2nstar+reQ7nQ4nstarQ3nstar+reQ7nQ5nstarQ2nstar
8229 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8230 + reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar
8231 + reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar
8232 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8233 + 2.*(reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8234 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8235 - 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.))
8236 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8237 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8238 - 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.))
8239 + 24.*dMult)
8240 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8241
8242
8243 // to be polished:
8244 five6n3n4n4n1n = (reQ6nQ3nQ4nstarQ4nstarQ1nstar
8245 - reQ8nQ1nQ6nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar
8246 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ2nQ4nstarQ4nstar-reQ6nQ4nstarQ1nstarQ1nstar
8247 - reQ9nQ4nstarQ4nstarQ1nstar-reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ4nQ1nQ3nstarQ2nstar
8248 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ9nQ6nstarQ3nstar)
8249 + reQ8nQ6nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8250 + reQ9nQ5nstarQ4nstar+reQ9nQ8nstarQ1nstar+reQ9nQ5nstarQ4nstar
8251 + reQ8nQ5nstarQ3nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8252 + reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar
8253 + reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar
8254 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ8nQ4nstarQ4nstar)
8255 + 2.*(reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8256 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8257 - 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.))
8258 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8259 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8260 - 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.))
8261 + 24.*dMult)
8262 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8263
8264 // to be polished:
8265 five6n1n1n5n3n = (reQ6nQ1nQ1nQ5nstarQ3nstar
8266 - reQ6nQ2nQ5nstarQ3nstar-reQ7nQ1nQ5nstarQ3nstar-reQ7nQ1nQ5nstarQ3nstar
8267 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ1nQ5nstarQ2nstar
8268 - reQ8nQ6nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar-reQ3nQ1nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8269 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ8nQ5nstarQ3nstar)
8270 + reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar
8271 + reQ8nQ7nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ8nQ7nstarQ1nstar
8272 + reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8273 + reQ7nQ4nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8274 + reQ7nQ4nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8275 + 2.*(reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8276 + 2.*(reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8277 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8278 - 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.))
8279 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8280 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8281 - 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.))
8282 + 24.*dMult)
8283 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8284 // to be polished:
8285 five6n3n5n2n2n = (reQ6nQ3nQ5nstarQ2nstarQ2nstar
8286 - reQ6nQ3nQ5nstarQ4nstar-reQ7nQ2nQ6nstarQ3nstar-reQ7nQ2nQ6nstarQ3nstar
8287 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ2nstarQ2nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8288 - reQ9nQ5nstarQ2nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar
8289 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ9nQ6nstarQ3nstar)
8290 + reQ6nQ4nstarQ2nstar+reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar
8291 + reQ9nQ7nstarQ2nstar+reQ9nQ5nstarQ4nstar+reQ9nQ7nstarQ2nstar
8292 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8293 + reQ7nQ4nstarQ3nstar+reQ4nQ2nstarQ2nstar+reQ5nQ4nstarQ1nstar
8294 + reQ7nQ4nstarQ3nstar+reQ4nQ2nstarQ2nstar+reQ5nQ4nstarQ1nstar
8295 + 2.*(reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8296 + 2.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8297 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8298 - 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.))
8299 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8300 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8301 - 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.))
8302 + 24.*dMult)
8303 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8304
8305 // to be polished
8306 five6n5n4n4n3n = (reQ6nQ5nQ4nstarQ4nstarQ3nstar
8307 - reQ7nQ4nQ6nstarQ5nstar-reQ7nQ4nQ6nstarQ5nstar-reQ8nQ3nQ6nstarQ5nstar
8308 - reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ2nQ4nstarQ4nstar
8309 - reQ11nQ4nstarQ4nstarQ3nstar-reQ5nQ3nQ4nstarQ4nstar-reQ5nQ2nQ4nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
8310 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ11nQ6nstarQ5nstar)
8311 + reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar
8312 + reQ11nQ8nstarQ3nstar+reQ11nQ7nstarQ4nstar+reQ11nQ7nstarQ4nstar
8313 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
8314 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
8315 + reQ8nQ5nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
8316 + 2.*(reQ8nQ4nstarQ4nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar)
8317 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
8318 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8319 - 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.))
8320 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8321 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8322 - 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.))
8323 + 24.*dMult)
8324 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8325 // to be polished:
8326 five6n3n1n5n5n = (reQ6nQ3nQ1nQ5nstarQ5nstar
8327 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar-reQ9nQ1nQ5nstarQ5nstar
8328 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ3nQ5nstarQ4nstar
8329 - reQ10nQ6nstarQ3nstarQ1nstar-reQ6nQ3nQ5nstarQ4nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ1nQ5nstarQ2nstar
8330 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
8331 + reQ5nQ4nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ9nQ5nstarQ4nstar
8332 + reQ10nQ9nstarQ1nstar+reQ10nQ6nstarQ4nstar+reQ10nQ7nstarQ3nstar
8333 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
8334 + reQ7nQ5nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ6nQ4nstarQ2nstar
8335 + reQ9nQ5nstarQ4nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8336 + 2.*(reQ9nQ6nstarQ3nstar+reQ7nQ6nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8337 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar)
8338 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8339 - 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.))
8340 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ9n,2.)+pow(dImQ9n,2.))
8341 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8342 - 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.))
8343 + 24.*dMult)
8344 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8345 // to be polished:
8346 five6n6n5n4n3n = (reQ6nQ6nQ5nstarQ4nstarQ3nstar
8347 - reQ7nQ5nQ6nstarQ6nstar-reQ8nQ4nQ6nstarQ6nstar-reQ9nQ3nQ6nstarQ6nstar
8348 - reQ6nQ2nQ5nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar
8349 - reQ12nQ5nstarQ4nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ2nQ5nstarQ3nstar
8350 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ12nQ6nstarQ6nstar)
8351 + reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ9nQ6nstarQ3nstar
8352 + reQ12nQ9nstarQ3nstar+reQ12nQ7nstarQ5nstar+reQ12nQ8nstarQ4nstar
8353 + reQ7nQ6nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8354 + reQ8nQ6nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8355 + reQ9nQ6nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ5nQ3nstarQ2nstar
8356 + 2.*(reQ9nQ5nstarQ4nstar+reQ8nQ5nstarQ3nstar+reQ7nQ4nstarQ3nstar)
8357 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar)
8358 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8359 - 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.))
8360 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ9n,2.)+pow(dImQ9n,2.))
8361 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8362 - 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.))
8363 + 24.*dMult)
8364 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8365 // Five distinct harmonics (3):
8366
8367 // to be polished:
8368 five6n2n4n3n1n = (reQ6nQ2nQ4nstarQ3nstarQ1nstar
8369 - reQ6nQ2nQ4nstarQ4nstar-reQ6nQ2nQ5nstarQ3nstar-reQ7nQ1nQ6nstarQ2nstar
8370 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8371 - reQ8nQ4nstarQ3nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
8372 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ8nQ6nstarQ2nstar)
8373 + 1.*(reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ7nQ6nstarQ1nstar)
8374 + 1.*(reQ8nQ7nstarQ1nstar+reQ8nQ4nstarQ4nstar+reQ8nQ5nstarQ3nstar)
8375 + 1.*(reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8376 + 1.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8377 + 1.*(reQ7nQ5nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar)
8378 + 2.*(reQ7nQ4nstarQ3nstar+reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8379 + 2.*(reQ4nQ2nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar) // 3 - 1
8380 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8381 - 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.))
8382 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8383 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8384 - 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.))
8385 + 24.*dMult)
8386 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8387
8388
8389 // to be polished:
8390 five6n2n1n5n4n = (reQ6nQ2nQ1nQ5nstarQ4nstar
8391 - reQ6nQ3nQ5nstarQ4nstar-reQ7nQ2nQ5nstarQ4nstar-reQ8nQ1nQ5nstarQ4nstar
8392 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8393 - reQ9nQ6nstarQ2nstarQ1nstar-reQ6nQ2nQ4nstarQ4nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8394 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ9nQ5nstarQ4nstar)
8395 + reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ8nQ5nstarQ3nstar
8396 + reQ9nQ8nstarQ1nstar+reQ9nQ6nstarQ3nstar+reQ9nQ7nstarQ2nstar
8397 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8398 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8399 + reQ8nQ4nstarQ4nstar+reQ4nQ2nstarQ2nstar+reQ6nQ4nstarQ2nstar
8400 + 2.*(reQ8nQ6nstarQ2nstar+reQ7nQ6nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8401 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar)
8402 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8403 - 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.))
8404 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8405 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8406 - 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.))
8407 + 24.*dMult)
8408 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8409
8410
8411
8412 // to be polished:
8413 five6n4n5n3n2n = (reQ6nQ4nQ5nstarQ3nstarQ2nstar
8414 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ6nstarQ4nstar-reQ8nQ2nQ6nstarQ4nstar
8415 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8416 - reQ10nQ5nstarQ3nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ4nQ1nQ3nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar
8417 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+reQ10nQ6nstarQ4nstar)
8418 + 1.*(reQ6nQ5nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar)
8419 + 1.*(reQ10nQ8nstarQ2nstar+reQ10nQ5nstarQ5nstar+reQ10nQ7nstarQ3nstar)
8420 + 1.*(reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8421 + 1.*(reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar)
8422 + 1.*(reQ8nQ4nstarQ4nstar+reQ4nQ3nstarQ1nstar+reQ5nQ4nstarQ1nstar)
8423 + 2.*(reQ8nQ5nstarQ3nstar+reQ7nQ5nstarQ2nstar+reQ5nQ3nstarQ2nstar)
8424 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar) // 3 - 1
8425 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8426 - 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.))
8427 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8428 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8429 - 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.))
8430 + 24.*dMult)
8431 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8432
8433
8434
8435 f5pCorrelations->Fill(0.5,five3n2n3n1n1n,d5pMultiplicityWeight);
8436 f5pCorrelations->Fill(1.5,five4n1n2n2n1n,d5pMultiplicityWeight);
8437 f5pCorrelations->Fill(2.5,five4n2n3n2n1n,d5pMultiplicityWeight);
8438 f5pCorrelations->Fill(3.5,five4n3n3n2n2n,d5pMultiplicityWeight);
8439 f5pCorrelations->Fill(4.5,five4n2n4n1n1n,d5pMultiplicityWeight);
8440 f5pCorrelations->Fill(5.5,five4n3n4n2n1n,d5pMultiplicityWeight);
8441 f5pCorrelations->Fill(6.5,five5n1n3n2n1n,d5pMultiplicityWeight);
8442 f5pCorrelations->Fill(7.5,five5n2n5n1n1n,d5pMultiplicityWeight);
8443 f5pCorrelations->Fill(8.5,five5n2n4n2n1n,d5pMultiplicityWeight);
8444 f5pCorrelations->Fill(9.5,five5n3n4n3n1n,d5pMultiplicityWeight);
8445 f5pCorrelations->Fill(10.5,five5n4n4n3n2n,d5pMultiplicityWeight);
8446 f5pCorrelations->Fill(11.5,five5n3n5n2n1n,d5pMultiplicityWeight);
8447 f5pCorrelations->Fill(12.5,five5n4n5n2n2n,d5pMultiplicityWeight);
8448 f5pCorrelations->Fill(13.5,five5n4n5n3n1n,d5pMultiplicityWeight);
8449 f5pCorrelations->Fill(14.5,five6n1n3n3n1n,d5pMultiplicityWeight);
8450 f5pCorrelations->Fill(15.5,five6n2n3n3n2n,d5pMultiplicityWeight);
8451 f5pCorrelations->Fill(16.5,five6n1n4n2n1n,d5pMultiplicityWeight);
8452 f5pCorrelations->Fill(17.5,five6n3n4n3n2n,d5pMultiplicityWeight);
8453 f5pCorrelations->Fill(18.5,five6n4n4n3n3n,d5pMultiplicityWeight);
8454 f5pCorrelations->Fill(19.5,five6n2n5n2n1n,d5pMultiplicityWeight);
8455 f5pCorrelations->Fill(20.5,five6n3n5n3n1n,d5pMultiplicityWeight);
8456 f5pCorrelations->Fill(21.5,five6n4n5n4n1n,d5pMultiplicityWeight);
8457 f5pCorrelations->Fill(22.5,five6n5n5n3n3n,d5pMultiplicityWeight);
8458 f5pCorrelations->Fill(23.5,five6n2n6n1n1n,d5pMultiplicityWeight);
8459 f5pCorrelations->Fill(24.5,five6n3n6n2n1n,d5pMultiplicityWeight);
8460 f5pCorrelations->Fill(25.5,five6n4n6n2n2n,d5pMultiplicityWeight);
8461 f5pCorrelations->Fill(26.5,five6n4n6n3n1n,d5pMultiplicityWeight);
8462 f5pCorrelations->Fill(27.5,five6n5n5n4n2n,d5pMultiplicityWeight);
8463 f5pCorrelations->Fill(28.5,five6n5n6n3n2n,d5pMultiplicityWeight);
8464 f5pCorrelations->Fill(29.5,five6n5n6n4n1n,d5pMultiplicityWeight);
8465 //f5pCorrelations->Fill(30.5,-44.,d5pMultiplicityWeight);
8466 f5pCorrelations->Fill(31.5,five2n1n1n1n1n,d5pMultiplicityWeight);
8467 f5pCorrelations->Fill(32.5,five2n2n2n1n1n,d5pMultiplicityWeight);
8468 f5pCorrelations->Fill(33.5,five3n3n2n2n2n,d5pMultiplicityWeight);
8469 f5pCorrelations->Fill(34.5,five4n1n1n1n1n,d5pMultiplicityWeight);
8470 f5pCorrelations->Fill(35.5,five4n2n2n2n2n,d5pMultiplicityWeight);
8471 f5pCorrelations->Fill(36.5,five4n4n4n2n2n,d5pMultiplicityWeight);
8472 f5pCorrelations->Fill(37.5,five6n3n3n3n3n,d5pMultiplicityWeight);
8473 f5pCorrelations->Fill(38.5,five6n6n4n4n4n,d5pMultiplicityWeight);
8474 f5pCorrelations->Fill(39.5,five6n6n6n3n3n,d5pMultiplicityWeight);
8475 //f5pCorrelations->Fill(40.5,-44.,d5pMultiplicityWeight);
8476 f5pCorrelations->Fill(41.5,five3n1n2n1n1n,d5pMultiplicityWeight);
8477 f5pCorrelations->Fill(42.5,five3n2n2n2n1n,d5pMultiplicityWeight);
8478 f5pCorrelations->Fill(43.5,five3n3n3n2n1n,d5pMultiplicityWeight);
8479 f5pCorrelations->Fill(44.5,five4n1n3n1n1n,d5pMultiplicityWeight);
8480 f5pCorrelations->Fill(45.5,five4n1n1n3n3n,d5pMultiplicityWeight);
8481 f5pCorrelations->Fill(46.5,five4n3n3n3n1n,d5pMultiplicityWeight);
8482 f5pCorrelations->Fill(47.5,five4n4n3n3n2n,d5pMultiplicityWeight);
8483 f5pCorrelations->Fill(48.5,five4n4n4n3n1n,d5pMultiplicityWeight);
8484 f5pCorrelations->Fill(49.5,five5n2n1n1n1n,d5pMultiplicityWeight);
8485 f5pCorrelations->Fill(50.5,five5n1n2n2n2n,d5pMultiplicityWeight);
8486 f5pCorrelations->Fill(51.5,five5n2n3n2n2n,d5pMultiplicityWeight);
8487 f5pCorrelations->Fill(52.5,five5n3n3n3n2n,d5pMultiplicityWeight);
8488 f5pCorrelations->Fill(53.5,five5n1n4n1n1n,d5pMultiplicityWeight);
8489 f5pCorrelations->Fill(54.5,five5n4n3n3n3n,d5pMultiplicityWeight);
8490 f5pCorrelations->Fill(55.5,five5n4n4n4n1n,d5pMultiplicityWeight);
8491 f5pCorrelations->Fill(56.5,five5n5n4n3n3n,d5pMultiplicityWeight);
8492 f5pCorrelations->Fill(57.5,five5n5n4n4n2n,d5pMultiplicityWeight);
8493 f5pCorrelations->Fill(58.5,five5n5n5n3n2n,d5pMultiplicityWeight);
8494 f5pCorrelations->Fill(59.5,five5n5n5n4n1n,d5pMultiplicityWeight);
8495 f5pCorrelations->Fill(60.5,five6n2n2n1n1n,d5pMultiplicityWeight);
8496 f5pCorrelations->Fill(61.5,five6n3n1n1n1n,d5pMultiplicityWeight);
8497 f5pCorrelations->Fill(62.5,five6n1n1n4n4n,d5pMultiplicityWeight);
8498 f5pCorrelations->Fill(63.5,five6n1n5n1n1n,d5pMultiplicityWeight);
8499 f5pCorrelations->Fill(64.5,five6n2n4n2n2n,d5pMultiplicityWeight);
8500 f5pCorrelations->Fill(65.5,five6n4n4n4n2n,d5pMultiplicityWeight);
8501 f5pCorrelations->Fill(66.5,five6n2n2n5n5n,d5pMultiplicityWeight);
8502 f5pCorrelations->Fill(67.5,five6n5n5n5n1n,d5pMultiplicityWeight);
8503 f5pCorrelations->Fill(68.5,five6n6n5n5n2n,d5pMultiplicityWeight);
8504 f5pCorrelations->Fill(69.5,five6n6n6n4n2n,d5pMultiplicityWeight);
8505 f5pCorrelations->Fill(70.5,five6n6n6n5n1n,d5pMultiplicityWeight);
8506 //f5pCorrelations->Fill(71.5,-44.,d5pMultiplicityWeight);
8507 f5pCorrelations->Fill(72.5,five5n2n3n3n1n,d5pMultiplicityWeight);
8508 f5pCorrelations->Fill(73.5,five5n1n1n4n3n,d5pMultiplicityWeight);
8509 f5pCorrelations->Fill(74.5,five5n3n4n2n2n,d5pMultiplicityWeight);
8510 f5pCorrelations->Fill(75.5,five5n2n1n4n4n,d5pMultiplicityWeight);
8511 f5pCorrelations->Fill(76.5,five6n1n3n2n2n,d5pMultiplicityWeight);
8512 f5pCorrelations->Fill(77.5,five6n3n4n4n1n,d5pMultiplicityWeight);
8513 f5pCorrelations->Fill(78.5,five6n1n1n5n3n,d5pMultiplicityWeight);
8514 f5pCorrelations->Fill(79.5,five6n3n5n2n2n,d5pMultiplicityWeight);
8515 f5pCorrelations->Fill(80.5,five6n5n4n4n3n,d5pMultiplicityWeight);
8516 f5pCorrelations->Fill(81.5,five6n3n1n5n5n,d5pMultiplicityWeight);
8517 f5pCorrelations->Fill(82.5,five6n6n5n4n3n,d5pMultiplicityWeight);
8518 //f5pCorrelations->Fill(83.5,-44.,d5pMultiplicityWeight);
8519 f5pCorrelations->Fill(84.5,five6n2n4n3n1n,d5pMultiplicityWeight);
8520 f5pCorrelations->Fill(85.5,five6n2n1n5n4n,d5pMultiplicityWeight);
8521 f5pCorrelations->Fill(86.5,five6n4n5n3n2n,d5pMultiplicityWeight);
c10259fb 8522 allMixedCorrelators[56]=five3n2n3n1n1n;
8523 allMixedCorrelators[57]=five4n1n2n2n1n;
8524 allMixedCorrelators[58]=five4n2n3n2n1n;
8525 allMixedCorrelators[59]=five4n3n3n2n2n;
8526 allMixedCorrelators[60]=five4n2n4n1n1n;
8527 allMixedCorrelators[61]=five4n3n4n2n1n;
8528 allMixedCorrelators[62]=five5n1n3n2n1n;
8529 allMixedCorrelators[63]=five5n2n5n1n1n;
8530 allMixedCorrelators[64]=five5n2n4n2n1n;
8531 allMixedCorrelators[65]=five5n3n4n3n1n;
8532 allMixedCorrelators[66]=five5n4n4n3n2n;
8533 allMixedCorrelators[67]=five5n3n5n2n1n;
8534 allMixedCorrelators[68]=five5n4n5n2n2n;
8535 allMixedCorrelators[69]=five5n4n5n3n1n;
8536 allMixedCorrelators[70]=five6n1n3n3n1n;
8537 allMixedCorrelators[71]=five6n2n3n3n2n;
8538 allMixedCorrelators[72]=five6n1n4n2n1n;
8539 allMixedCorrelators[73]=five6n3n4n3n2n;
8540 allMixedCorrelators[74]=five6n4n4n3n3n;
8541 allMixedCorrelators[75]=five6n2n5n2n1n;
8542 allMixedCorrelators[76]=five6n3n5n3n1n;
8543 allMixedCorrelators[77]=five6n4n5n4n1n;
8544 allMixedCorrelators[78]=five6n5n5n3n3n;
8545 allMixedCorrelators[79]=five6n2n6n1n1n;
8546 allMixedCorrelators[80]=five6n3n6n2n1n;
8547 allMixedCorrelators[81]=five6n4n6n2n2n;
8548 allMixedCorrelators[82]=five6n4n6n3n1n;
8549 allMixedCorrelators[83]=five6n5n5n4n2n;
8550 allMixedCorrelators[84]=five6n5n6n3n2n;
8551 allMixedCorrelators[85]=five6n5n6n4n1n;
8552 allMixedCorrelators[86]=five2n1n1n1n1n;
8553 allMixedCorrelators[87]=five2n2n2n1n1n;
8554 allMixedCorrelators[88]=five3n3n2n2n2n;
8555 allMixedCorrelators[89]=five4n1n1n1n1n;
8556 allMixedCorrelators[90]=five4n2n2n2n2n;
8557 allMixedCorrelators[91]=five4n4n4n2n2n;
8558 allMixedCorrelators[92]=five6n3n3n3n3n;
8559 allMixedCorrelators[93]=five6n6n4n4n4n;
8560 allMixedCorrelators[94]=five6n6n6n3n3n;
8561 allMixedCorrelators[95]=five3n1n2n1n1n;
8562 allMixedCorrelators[96]=five3n2n2n2n1n;
8563 allMixedCorrelators[97]=five3n3n3n2n1n;
8564 allMixedCorrelators[98]=five4n1n3n1n1n;
8565 allMixedCorrelators[99]=five4n1n1n3n3n;
8566 allMixedCorrelators[100]=five4n3n3n3n1n;
8567 allMixedCorrelators[101]=five4n4n3n3n2n;
8568 allMixedCorrelators[102]=five4n4n4n3n1n;
8569 allMixedCorrelators[103]=five5n2n1n1n1n;
8570 allMixedCorrelators[104]=five5n1n2n2n2n;
8571 allMixedCorrelators[105]=five5n2n3n2n2n;
8572 allMixedCorrelators[106]=five5n3n3n3n2n;
8573 allMixedCorrelators[107]=five5n1n4n1n1n;
8574 allMixedCorrelators[108]=five5n4n3n3n3n;
8575 allMixedCorrelators[109]=five5n4n4n4n1n;
8576 allMixedCorrelators[110]=five5n5n4n3n3n;
8577 allMixedCorrelators[111]=five5n5n4n4n2n;
8578 allMixedCorrelators[112]=five5n5n5n3n2n;
8579 allMixedCorrelators[113]=five5n5n5n4n1n;
8580 allMixedCorrelators[114]=five6n2n2n1n1n;
8581 allMixedCorrelators[115]=five6n3n1n1n1n;
8582 allMixedCorrelators[116]=five6n1n1n4n4n;
8583 allMixedCorrelators[117]=five6n1n5n1n1n;
8584 allMixedCorrelators[118]=five6n2n4n2n2n;
8585 allMixedCorrelators[119]=five6n4n4n4n2n;
8586 allMixedCorrelators[120]=five6n2n2n5n5n;
8587 allMixedCorrelators[121]=five6n5n5n5n1n;
8588 allMixedCorrelators[122]=five6n6n5n5n2n;
8589 allMixedCorrelators[123]=five6n6n6n4n2n;
8590 allMixedCorrelators[124]=five6n6n6n5n1n;
8591 allMixedCorrelators[125]=five5n2n3n3n1n;
8592 allMixedCorrelators[126]=five5n1n1n4n3n;
8593 allMixedCorrelators[127]=five5n3n4n2n2n;
8594 allMixedCorrelators[128]=five5n2n1n4n4n;
8595 allMixedCorrelators[129]=five6n1n3n2n2n;
8596 allMixedCorrelators[130]=five6n3n4n4n1n;
8597 allMixedCorrelators[131]=five6n1n1n5n3n;
8598 allMixedCorrelators[132]=five6n3n5n2n2n;
8599 allMixedCorrelators[133]=five6n5n4n4n3n;
8600 allMixedCorrelators[134]=five6n3n1n5n5n;
8601 allMixedCorrelators[135]=five6n6n5n4n3n;
8602 allMixedCorrelators[136]=five6n2n4n3n1n;
8603 allMixedCorrelators[137]=five6n2n1n5n4n;
8604 allMixedCorrelators[138]=five6n4n5n3n2n;
e1d101a6 8605 } // end of if(dMult>4.)
b84464d3 8606
c10259fb 8607 // Products of mixed harmonics:
8608 Double_t dwx=0.;
8609 Double_t dwy=0.;
8610 for(Int_t x=1;x<=139;x++)
8611 {
8612 if(x>=1 && x<7)
8613 {
8614 dwx=d2pMultiplicityWeight;
8615 } else if(x>=7 && x<16)
8616 {
8617 dwx=d3pMultiplicityWeight;
8618 } else if(x>=16 && x<57)
8619 {
8620 dwx=d4pMultiplicityWeight;
8621 } else if(x>=57 && x<140)
8622 {
8623 dwx=d5pMultiplicityWeight;
8624 }
8625 for(Int_t y=x+1;y<=139;y++)
8626 {
8627 if(y>=1 && y<7)
8628 {
8629 dwy=d2pMultiplicityWeight;
8630 } else if(y>=7 && y<16)
8631 {
8632 dwy=d3pMultiplicityWeight;
8633 } else if(y>=16 && y<57)
8634 {
8635 dwy=d4pMultiplicityWeight;
8636 } else if(y>=57 && y<140)
8637 {
8638 dwy=d5pMultiplicityWeight;
8639 }
8640 fMixedHarmonicProductOfCorrelations->Fill(x-0.5,y-0.5,allMixedCorrelators[x-1]*allMixedCorrelators[y-1],dwx*dwy);
8641 } // end of for(Int_t y=x+1;y<=139;y++)
8642 } // end of for(Int_t x=1;x<=139;x++)
e1d101a6 8643
8644} // end of void AliFlowAnalysisWithQCumulants::CalculateMixedHarmonics()
489d5531 8645
e1d101a6 8646//===================================================================================================================
8647
8648void AliFlowAnalysisWithQCumulants::CalculateCumulantsMixedHarmonics()
8649{
8650 // Calculate in this method all multi-particle cumulants for azimuthal correlations in mixed harmonics.
8651 // (Remark: For completeness sake, we also calculate here again cumulants in the same harmonic.)
8652
8653 // a) Calculate 2-p cumulants;
8654 // b) Calculate 3-p cumulants;
8655 // c) Calculate 4-p cumulants;
8656 // d) Calculate 5-p cumulants.
8657
8658 // a) Calculate 2-p cumulants:
8659 for(Int_t b=1;b<=6;b++)
8660 {
8661 f2pCumulants->SetBinContent(b,f2pCorrelations->GetBinContent(b));
c10259fb 8662 Double_t dSumWLinear = 0.; // sum of linear event weights
8663 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
8664 Double_t dSpread = 0.; // weighted and biased estimator for sigma
8665 Double_t dError = 0.; // weighted and unbiased estimator for error
8666 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8667 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8668 dSpread = f2pCorrelations->GetBinError(b);
8669 if(pow(dSumWLinear,2.)>dSumWQuadratic)
8670 {
8671 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
8672 f2pCumulants->SetBinError(b,dError);
8673 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 8674 } // end of for(Int_t b=1;b<=6;b++)
8675
8676 // b) Calculate 3-p cumulants:
8677 for(Int_t b=1;b<=10;b++)
8678 {
8679 f3pCumulants->SetBinContent(b,f3pCorrelations->GetBinContent(b));
c10259fb 8680 Double_t dSumWLinear = 0.; // sum of linear event weights
8681 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
8682 Double_t dSpread = 0.; // weighted and biased estimator for sigma
8683 Double_t dError = 0.; // weighted and unbiased estimator for sigma
8684 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(3);
8685 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(3);
8686 dSpread = f3pCorrelations->GetBinError(b);
8687 if(pow(dSumWLinear,2.)>dSumWQuadratic)
8688 {
8689 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
8690 f3pCumulants->SetBinError(b,dError);
8691 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 8692 } // end of for(Int_t b=1;b<=10;b++)
8693
8694 // c) Calculate 4-p cumulants:
8695 // c1) "Single harmonic":
8696 for(Int_t b=1;b<=6;b++)
8697 {
8698 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b)-2.*pow(f2pCorrelations->GetBinContent(b),2.));
c10259fb 8699 Double_t dSumWLinearTwo = 0.; // sum of linear event weights for <2>
8700 Double_t dSumWQuadraticTwo = 0.; // sum of quadratic event weights <2>
8701 Double_t dSpreadTwo = 0.; // weighted and biased estimator for sigma of <2>
8702 Double_t dSumWLinearFour = 0.; // sum of linear event weights for <4>
8703 Double_t dSumWQuadraticFour = 0.; // sum of quadratic event weights <4>
8704 Double_t dSpreadFour = 0.; // weighted and biased estimator for sigma of <4>
8705 dSumWLinearTwo = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8706 dSumWQuadraticTwo = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8707 dSpreadTwo = f2pCorrelations->GetBinError(b);
8708 dSumWLinearFour = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8709 dSumWQuadraticFour = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8710 dSpreadFour = f4pCorrelations->GetBinError(b);
8711 if(pow(dSumWLinearTwo,2.)>dSumWQuadraticTwo && pow(dSumWLinearFour,2.)>dSumWQuadraticFour)
8712 {
8713 Double_t dError = 16.*pow(f2pCorrelations->GetBinContent(b),2.)
8714 * pow((pow(dSumWQuadraticTwo,0.5)/dSumWLinearTwo)*dSpreadTwo*pow(pow(dSumWLinearTwo,2.)/(pow(dSumWLinearTwo,2.)-dSumWQuadraticTwo),0.5),2.)
8715 + pow((pow(dSumWQuadraticFour,0.5)/dSumWLinearFour)*dSpreadFour*pow(pow(dSumWLinearFour,2.)/(pow(dSumWLinearFour,2.)-dSumWQuadraticFour),0.5),2.)
8716 - 8.*f2pCorrelations->GetBinContent(b)
8717 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8718 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(b,b+15))
8719 - f2pCorrelations->GetBinContent(b)*f4pCorrelations->GetBinContent(b))
8720 / (dSumWLinearTwo*dSumWLinearFour-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8721 if(dError>0.)
8722 {
8723 f4pCumulants->SetBinError(b,pow(dError,0.5));
8724 }
8725 } // end of if(pow(dSumWLinearTwo,2.)>dSumWQuadraticTwo && pow(dSumWLinearFour,2.)>dSumWQuadraticFour)
e1d101a6 8726 } // end of for(Int_t b=1;b<=6;b++)
8727 // c2) "Standard candles":
c10259fb 8728 // <4>_{2n,1n|2n,1n}:
e1d101a6 8729 f4pCumulants->SetBinContent(8,f4pCorrelations->GetBinContent(8)-f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1));
c10259fb 8730 {
8731 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8732 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8733 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8734 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
8735 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
8736 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
8737 Double_t dSumWLinearFour2n1n2n1n = 0.; // sum of linear event weights for <4>
8738 Double_t dSumWQuadraticFour2n1n2n1n = 0.; // sum of quadratic event weights <4>
8739 Double_t dSpreadFour2n1n2n1n = 0.; // weighted and biased estimator for sigma of <4>
8740 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8741 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8742 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
8743 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8744 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8745 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
8746 dSumWLinearFour2n1n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8747 dSumWQuadraticFour2n1n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8748 dSpreadFour2n1n2n1n = f4pCorrelations->GetBinError(8);
8749 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
8750 pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
8751 pow(dSumWLinearFour2n1n2n1n,2.)>dSumWQuadraticFour2n1n2n1n)
8752 {
8753 Double_t dError = pow(f2pCorrelations->GetBinContent(2),2.)
8754 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
8755 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
8756 + pow(f2pCorrelations->GetBinContent(1),2.)
8757 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
8758 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
8759 + pow((pow(dSumWQuadraticFour2n1n2n1n,0.5)/dSumWLinearFour2n1n2n1n)
8760 * dSpreadFour2n1n2n1n*pow(pow(dSumWLinearFour2n1n2n1n,2.)/(pow(dSumWLinearFour2n1n2n1n,2.)-dSumWQuadraticFour2n1n2n1n),0.5),2.)
8761 + 2.*f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1)
8762 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8763 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,2))
8764 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2))
8765 / (dSumWLinearTwo1n1n*dSumWLinearTwo2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8766 - 2.*f2pCorrelations->GetBinContent(2)
8767 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8768 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,22))
8769 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(8))
8770 / (dSumWLinearTwo1n1n*dSumWLinearFour2n1n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8771 - 2.*f2pCorrelations->GetBinContent(1)
8772 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8773 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,22))
8774 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(8))
8775 / (dSumWLinearTwo2n2n*dSumWLinearFour2n1n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8776 if(dError>0.)
8777 {
8778 f4pCumulants->SetBinError(8,pow(dError,0.5));
8779 }
8780 } // end of if(...)
8781 } // end of {
8782 // <4>_{3n,1n|3n,1n}:
e1d101a6 8783 f4pCumulants->SetBinContent(9,f4pCorrelations->GetBinContent(9)-f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1));
c10259fb 8784 {
8785 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8786 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8787 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8788 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
8789 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
8790 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
8791 Double_t dSumWLinearFour3n1n3n1n = 0.; // sum of linear event weights for <4>
8792 Double_t dSumWQuadraticFour3n1n3n1n = 0.; // sum of quadratic event weights <4>
8793 Double_t dSpreadFour3n1n3n1n = 0.; // weighted and biased estimator for sigma of <4>
8794 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8795 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8796 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
8797 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8798 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8799 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
8800 dSumWLinearFour3n1n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8801 dSumWQuadraticFour3n1n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8802 dSpreadFour3n1n3n1n = f4pCorrelations->GetBinError(9);
8803 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
8804 pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
8805 pow(dSumWLinearFour3n1n3n1n,2.)>dSumWQuadraticFour3n1n3n1n)
8806 {
8807 Double_t dError = pow(f2pCorrelations->GetBinContent(3),2.)
8808 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
8809 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
8810 + pow(f2pCorrelations->GetBinContent(1),2.)
8811 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
8812 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
8813 + pow((pow(dSumWQuadraticFour3n1n3n1n,0.5)/dSumWLinearFour3n1n3n1n)
8814 * dSpreadFour3n1n3n1n*pow(pow(dSumWLinearFour3n1n3n1n,2.)/(pow(dSumWLinearFour3n1n3n1n,2.)-dSumWQuadraticFour3n1n3n1n),0.5),2.)
8815 + 2.*f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1)
8816 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8817 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,3))
8818 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3))
8819 / (dSumWLinearTwo1n1n*dSumWLinearTwo3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8820 - 2.*f2pCorrelations->GetBinContent(3)
8821 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8822 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,23))
8823 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(9))
8824 / (dSumWLinearTwo1n1n*dSumWLinearFour3n1n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8825 - 2.*f2pCorrelations->GetBinContent(1)
8826 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8827 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,23))
8828 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(9))
8829 / (dSumWLinearTwo3n3n*dSumWLinearFour3n1n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8830 if(dError>0.)
8831 {
8832 f4pCumulants->SetBinError(9,pow(dError,0.5));
8833 }
8834 } // end of if(...)
8835 } // end of {
8836 // <4>_{3n,2n|3n,2n}:
e1d101a6 8837 f4pCumulants->SetBinContent(10,f4pCorrelations->GetBinContent(10)-f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2));
c10259fb 8838 {
8839 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
8840 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
8841 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
8842 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
8843 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
8844 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
8845 Double_t dSumWLinearFour3n2n3n2n = 0.; // sum of linear event weights for <4>
8846 Double_t dSumWQuadraticFour3n2n3n2n = 0.; // sum of quadratic event weights <4>
8847 Double_t dSpreadFour3n2n3n2n = 0.; // weighted and biased estimator for sigma of <4>
8848 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8849 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8850 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
8851 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8852 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8853 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
8854 dSumWLinearFour3n2n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8855 dSumWQuadraticFour3n2n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8856 dSpreadFour3n2n3n2n = f4pCorrelations->GetBinError(10);
8857 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
8858 pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
8859 pow(dSumWLinearFour3n2n3n2n,2.)>dSumWQuadraticFour3n2n3n2n)
8860 {
8861 Double_t dError = pow(f2pCorrelations->GetBinContent(3),2.)
8862 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
8863 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
8864 + pow(f2pCorrelations->GetBinContent(2),2.)
8865 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
8866 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
8867 + pow((pow(dSumWQuadraticFour3n2n3n2n,0.5)/dSumWLinearFour3n2n3n2n)
8868 * dSpreadFour3n2n3n2n*pow(pow(dSumWLinearFour3n2n3n2n,2.)/(pow(dSumWLinearFour3n2n3n2n,2.)-dSumWQuadraticFour3n2n3n2n),0.5),2.)
8869 + 2.*f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2)
8870 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8871 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,3))
8872 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3))
8873 / (dSumWLinearTwo2n2n*dSumWLinearTwo3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8874 - 2.*f2pCorrelations->GetBinContent(3)
8875 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8876 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,24))
8877 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(10))
8878 / (dSumWLinearTwo2n2n*dSumWLinearFour3n2n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8879 - 2.*f2pCorrelations->GetBinContent(2)
8880 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8881 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,24))
8882 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(10))
8883 / (dSumWLinearTwo3n3n*dSumWLinearFour3n2n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8884 if(dError>0.)
8885 {
8886 f4pCumulants->SetBinError(10,pow(dError,0.5));
8887 }
8888 } // end of if(...)
8889 } // end of {
8890 // <4>_{4n,1n|4n,1n}
e1d101a6 8891 f4pCumulants->SetBinContent(11,f4pCorrelations->GetBinContent(11)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(1));
c10259fb 8892 {
8893 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8894 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8895 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8896 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
8897 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
8898 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
8899 Double_t dSumWLinearFour4n1n4n1n = 0.; // sum of linear event weights for <4>
8900 Double_t dSumWQuadraticFour4n1n4n1n = 0.; // sum of quadratic event weights <4>
8901 Double_t dSpreadFour4n1n4n1n = 0.; // weighted and biased estimator for sigma of <4>
8902 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8903 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8904 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
8905 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8906 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8907 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
8908 dSumWLinearFour4n1n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8909 dSumWQuadraticFour4n1n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8910 dSpreadFour4n1n4n1n = f4pCorrelations->GetBinError(11);
8911 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
8912 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
8913 pow(dSumWLinearFour4n1n4n1n,2.)>dSumWQuadraticFour4n1n4n1n)
8914 {
8915 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
8916 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
8917 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
8918 + pow(f2pCorrelations->GetBinContent(1),2.)
8919 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
8920 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
8921 + pow((pow(dSumWQuadraticFour4n1n4n1n,0.5)/dSumWLinearFour4n1n4n1n)
8922 * dSpreadFour4n1n4n1n*pow(pow(dSumWLinearFour4n1n4n1n,2.)/(pow(dSumWLinearFour4n1n4n1n,2.)-dSumWQuadraticFour4n1n4n1n),0.5),2.)
8923 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(1)
8924 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8925 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,4))
8926 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4))
8927 / (dSumWLinearTwo1n1n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8928 - 2.*f2pCorrelations->GetBinContent(4)
8929 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8930 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,25))
8931 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(11))
8932 / (dSumWLinearTwo1n1n*dSumWLinearFour4n1n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8933 - 2.*f2pCorrelations->GetBinContent(1)
8934 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8935 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,25))
8936 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(11))
8937 / (dSumWLinearTwo4n4n*dSumWLinearFour4n1n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8938 if(dError>0.)
8939 {
8940 f4pCumulants->SetBinError(11,pow(dError,0.5));
8941 }
8942 } // end of if(...)
8943 } // end of {
8944 // <4>_{4n,2n|4n,2n}
e1d101a6 8945 f4pCumulants->SetBinContent(12,f4pCorrelations->GetBinContent(12)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(2));
c10259fb 8946 {
8947 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
8948 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
8949 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
8950 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
8951 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
8952 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
8953 Double_t dSumWLinearFour4n2n4n2n = 0.; // sum of linear event weights for <4>
8954 Double_t dSumWQuadraticFour4n2n4n2n = 0.; // sum of quadratic event weights <4>
8955 Double_t dSpreadFour4n2n4n2n = 0.; // weighted and biased estimator for sigma of <4>
8956 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8957 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8958 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
8959 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8960 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8961 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
8962 dSumWLinearFour4n2n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8963 dSumWQuadraticFour4n2n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8964 dSpreadFour4n2n4n2n = f4pCorrelations->GetBinError(12);
8965 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
8966 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
8967 pow(dSumWLinearFour4n2n4n2n,2.)>dSumWQuadraticFour4n2n4n2n)
8968 {
8969 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
8970 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
8971 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
8972 + pow(f2pCorrelations->GetBinContent(2),2.)
8973 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
8974 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
8975 + pow((pow(dSumWQuadraticFour4n2n4n2n,0.5)/dSumWLinearFour4n2n4n2n)
8976 * dSpreadFour4n2n4n2n*pow(pow(dSumWLinearFour4n2n4n2n,2.)/(pow(dSumWLinearFour4n2n4n2n,2.)-dSumWQuadraticFour4n2n4n2n),0.5),2.)
8977 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(2)
8978 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8979 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,4))
8980 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4))
8981 / (dSumWLinearTwo2n2n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8982 - 2.*f2pCorrelations->GetBinContent(4)
8983 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8984 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,25))
8985 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(12))
8986 / (dSumWLinearTwo2n2n*dSumWLinearFour4n2n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8987 - 2.*f2pCorrelations->GetBinContent(2)
8988 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8989 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,25))
8990 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(12))
8991 / (dSumWLinearTwo4n4n*dSumWLinearFour4n2n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8992 if(dError>0.)
8993 {
8994 f4pCumulants->SetBinError(12,pow(dError,0.5));
8995 }
8996 } // end of if(...)
8997 } // end of {
8998 // <4>_{4n,3n|4n,3n}
e1d101a6 8999 f4pCumulants->SetBinContent(13,f4pCorrelations->GetBinContent(13)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(3));
c10259fb 9000 {
9001 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9002 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9003 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9004 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9005 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9006 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9007 Double_t dSumWLinearFour4n3n4n3n = 0.; // sum of linear event weights for <4>
9008 Double_t dSumWQuadraticFour4n3n4n3n = 0.; // sum of quadratic event weights <4>
9009 Double_t dSpreadFour4n3n4n3n = 0.; // weighted and biased estimator for sigma of <4>
9010 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9011 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9012 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9013 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9014 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9015 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9016 dSumWLinearFour4n3n4n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9017 dSumWQuadraticFour4n3n4n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9018 dSpreadFour4n3n4n3n = f4pCorrelations->GetBinError(13);
9019 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9020 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9021 pow(dSumWLinearFour4n3n4n3n,2.)>dSumWQuadraticFour4n3n4n3n)
9022 {
9023 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9024 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9025 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9026 + pow(f2pCorrelations->GetBinContent(3),2.)
9027 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9028 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9029 + pow((pow(dSumWQuadraticFour4n3n4n3n,0.5)/dSumWLinearFour4n3n4n3n)
9030 * dSpreadFour4n3n4n3n*pow(pow(dSumWLinearFour4n3n4n3n,2.)/(pow(dSumWLinearFour4n3n4n3n,2.)-dSumWQuadraticFour4n3n4n3n),0.5),2.)
9031 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(3)
9032 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9033 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,4))
9034 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4))
9035 / (dSumWLinearTwo3n3n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9036 - 2.*f2pCorrelations->GetBinContent(4)
9037 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9038 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,26))
9039 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(13))
9040 / (dSumWLinearTwo3n3n*dSumWLinearFour4n3n4n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9041 - 2.*f2pCorrelations->GetBinContent(3)
9042 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9043 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,26))
9044 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(13))
9045 / (dSumWLinearTwo4n4n*dSumWLinearFour4n3n4n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9046 if(dError>0.)
9047 {
9048 f4pCumulants->SetBinError(13,pow(dError,0.5));
9049 }
9050 } // end of if(...)
9051 } // end of {
9052 // <4>_{5n,1n|5n,1n}
e1d101a6 9053 f4pCumulants->SetBinContent(14,f4pCorrelations->GetBinContent(14)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1));
c10259fb 9054 {
9055 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9056 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9057 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9058 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9059 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9060 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9061 Double_t dSumWLinearFour5n1n5n1n = 0.; // sum of linear event weights for <4>
9062 Double_t dSumWQuadraticFour5n1n5n1n = 0.; // sum of quadratic event weights <4>
9063 Double_t dSpreadFour5n1n5n1n = 0.; // weighted and biased estimator for sigma of <4>
9064 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9065 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9066 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9067 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9068 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9069 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9070 dSumWLinearFour5n1n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9071 dSumWQuadraticFour5n1n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9072 dSpreadFour5n1n5n1n = f4pCorrelations->GetBinError(14);
9073 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9074 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9075 pow(dSumWLinearFour5n1n5n1n,2.)>dSumWQuadraticFour5n1n5n1n)
9076 {
9077 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9078 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9079 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9080 + pow(f2pCorrelations->GetBinContent(1),2.)
9081 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9082 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9083 + pow((pow(dSumWQuadraticFour5n1n5n1n,0.5)/dSumWLinearFour5n1n5n1n)
9084 * dSpreadFour5n1n5n1n*pow(pow(dSumWLinearFour5n1n5n1n,2.)/(pow(dSumWLinearFour5n1n5n1n,2.)-dSumWQuadraticFour5n1n5n1n),0.5),2.)
9085 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)
9086 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9087 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,5))
9088 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5))
9089 / (dSumWLinearTwo1n1n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9090 - 2.*f2pCorrelations->GetBinContent(5)
9091 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9092 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,28))
9093 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(14))
9094 / (dSumWLinearTwo1n1n*dSumWLinearFour5n1n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9095 - 2.*f2pCorrelations->GetBinContent(1)
9096 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9097 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,28))
9098 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(14))
9099 / (dSumWLinearTwo5n5n*dSumWLinearFour5n1n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9100 if(dError>0.)
9101 {
9102 f4pCumulants->SetBinError(14,pow(dError,0.5));
9103 }
9104 } // end of if(...)
9105 } // end of {
9106 // <4>_{5n,2n|5n,2n}
e1d101a6 9107 f4pCumulants->SetBinContent(15,f4pCorrelations->GetBinContent(15)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2));
c10259fb 9108 {
9109 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9110 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9111 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9112 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9113 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9114 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9115 Double_t dSumWLinearFour5n2n5n2n = 0.; // sum of linear event weights for <4>
9116 Double_t dSumWQuadraticFour5n2n5n2n = 0.; // sum of quadratic event weights <4>
9117 Double_t dSpreadFour5n2n5n2n = 0.; // weighted and biased estimator for sigma of <4>
9118 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9119 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9120 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9121 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9122 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9123 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9124 dSumWLinearFour5n2n5n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9125 dSumWQuadraticFour5n2n5n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9126 dSpreadFour5n2n5n2n = f4pCorrelations->GetBinError(15);
9127 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9128 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9129 pow(dSumWLinearFour5n2n5n2n,2.)>dSumWQuadraticFour5n2n5n2n)
9130 {
9131 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9132 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9133 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9134 + pow(f2pCorrelations->GetBinContent(2),2.)
9135 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9136 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9137 + pow((pow(dSumWQuadraticFour5n2n5n2n,0.5)/dSumWLinearFour5n2n5n2n)
9138 * dSpreadFour5n2n5n2n*pow(pow(dSumWLinearFour5n2n5n2n,2.)/(pow(dSumWLinearFour5n2n5n2n,2.)-dSumWQuadraticFour5n2n5n2n),0.5),2.)
9139 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)
9140 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9141 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,5))
9142 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5))
9143 / (dSumWLinearTwo2n2n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9144 - 2.*f2pCorrelations->GetBinContent(5)
9145 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9146 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,29))
9147 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(15))
9148 / (dSumWLinearTwo2n2n*dSumWLinearFour5n2n5n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9149 - 2.*f2pCorrelations->GetBinContent(2)
9150 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9151 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,29))
9152 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(15))
9153 / (dSumWLinearTwo5n5n*dSumWLinearFour5n2n5n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9154 if(dError>0.)
9155 {
9156 f4pCumulants->SetBinError(15,pow(dError,0.5));
9157 }
9158 } // end of if(...)
9159 } // end of {
9160 // <4>_{5n,3n|5n,3n}
e1d101a6 9161 f4pCumulants->SetBinContent(16,f4pCorrelations->GetBinContent(16)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3));
c10259fb 9162 {
9163 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9164 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9165 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9166 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9167 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9168 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9169 Double_t dSumWLinearFour5n3n5n3n = 0.; // sum of linear event weights for <4>
9170 Double_t dSumWQuadraticFour5n3n5n3n = 0.; // sum of quadratic event weights <4>
9171 Double_t dSpreadFour5n3n5n3n = 0.; // weighted and biased estimator for sigma of <4>
9172 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9173 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9174 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9175 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9176 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9177 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9178 dSumWLinearFour5n3n5n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9179 dSumWQuadraticFour5n3n5n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9180 dSpreadFour5n3n5n3n = f4pCorrelations->GetBinError(16);
9181 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9182 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9183 pow(dSumWLinearFour5n3n5n3n,2.)>dSumWQuadraticFour5n3n5n3n)
9184 {
9185 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9186 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9187 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9188 + pow(f2pCorrelations->GetBinContent(3),2.)
9189 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9190 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9191 + pow((pow(dSumWQuadraticFour5n3n5n3n,0.5)/dSumWLinearFour5n3n5n3n)
9192 * dSpreadFour5n3n5n3n*pow(pow(dSumWLinearFour5n3n5n3n,2.)/(pow(dSumWLinearFour5n3n5n3n,2.)-dSumWQuadraticFour5n3n5n3n),0.5),2.)
9193 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)
9194 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9195 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,5))
9196 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5))
9197 / (dSumWLinearTwo3n3n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9198 - 2.*f2pCorrelations->GetBinContent(5)
9199 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9200 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,30))
9201 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(16))
9202 / (dSumWLinearTwo3n3n*dSumWLinearFour5n3n5n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9203 - 2.*f2pCorrelations->GetBinContent(3)
9204 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9205 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,30))
9206 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(16))
9207 / (dSumWLinearTwo5n5n*dSumWLinearFour5n3n5n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9208 if(dError>0.)
9209 {
9210 f4pCumulants->SetBinError(16,pow(dError,0.5));
9211 }
9212 } // end of if(...)
9213 } // end of {
9214 // <4>_{5n,4n|5n,4n}
e1d101a6 9215 f4pCumulants->SetBinContent(17,f4pCorrelations->GetBinContent(17)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4));
c10259fb 9216 {
9217 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9218 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9219 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9220 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9221 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9222 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9223 Double_t dSumWLinearFour5n4n5n4n = 0.; // sum of linear event weights for <4>
9224 Double_t dSumWQuadraticFour5n4n5n4n = 0.; // sum of quadratic event weights <4>
9225 Double_t dSpreadFour5n4n5n4n = 0.; // weighted and biased estimator for sigma of <4>
9226 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9227 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9228 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9229 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9230 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9231 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9232 dSumWLinearFour5n4n5n4n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9233 dSumWQuadraticFour5n4n5n4n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9234 dSpreadFour5n4n5n4n = f4pCorrelations->GetBinError(17);
9235 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9236 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9237 pow(dSumWLinearFour5n4n5n4n,2.)>dSumWQuadraticFour5n4n5n4n)
9238 {
9239 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9240 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9241 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9242 + pow(f2pCorrelations->GetBinContent(4),2.)
9243 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9244 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9245 + pow((pow(dSumWQuadraticFour5n4n5n4n,0.5)/dSumWLinearFour5n4n5n4n)
9246 * dSpreadFour5n4n5n4n*pow(pow(dSumWLinearFour5n4n5n4n,2.)/(pow(dSumWLinearFour5n4n5n4n,2.)-dSumWQuadraticFour5n4n5n4n),0.5),2.)
9247 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4)
9248 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9249 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,5))
9250 - f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(5))
9251 / (dSumWLinearTwo4n4n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9252 - 2.*f2pCorrelations->GetBinContent(5)
9253 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9254 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,31))
9255 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(17))
9256 / (dSumWLinearTwo4n4n*dSumWLinearFour5n4n5n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9257 - 2.*f2pCorrelations->GetBinContent(4)
9258 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9259 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,31))
9260 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(17))
9261 / (dSumWLinearTwo5n5n*dSumWLinearFour5n4n5n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9262 if(dError>0.)
9263 {
9264 f4pCumulants->SetBinError(17,pow(dError,0.5));
9265 }
9266 } // end of if(...)
9267 } // end of {
9268 // <4>_{6n,1n|6n,1n}
e1d101a6 9269 f4pCumulants->SetBinContent(18,f4pCorrelations->GetBinContent(18)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1));
c10259fb 9270 {
9271 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9272 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9273 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9274 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9275 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9276 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9277 Double_t dSumWLinearFour6n1n6n1n = 0.; // sum of linear event weights for <4>
9278 Double_t dSumWQuadraticFour6n1n6n1n = 0.; // sum of quadratic event weights <4>
9279 Double_t dSpreadFour6n1n6n1n = 0.; // weighted and biased estimator for sigma of <4>
9280 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9281 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9282 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9283 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9284 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9285 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9286 dSumWLinearFour6n1n6n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9287 dSumWQuadraticFour6n1n6n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9288 dSpreadFour6n1n6n1n = f4pCorrelations->GetBinError(18);
9289 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9290 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9291 pow(dSumWLinearFour6n1n6n1n,2.)>dSumWQuadraticFour6n1n6n1n)
9292 {
9293 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9294 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9295 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9296 + pow(f2pCorrelations->GetBinContent(1),2.)
9297 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9298 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9299 + pow((pow(dSumWQuadraticFour6n1n6n1n,0.5)/dSumWLinearFour6n1n6n1n)
9300 * dSpreadFour6n1n6n1n*pow(pow(dSumWLinearFour6n1n6n1n,2.)/(pow(dSumWLinearFour6n1n6n1n,2.)-dSumWQuadraticFour6n1n6n1n),0.5),2.)
9301 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)
9302 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9303 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,6))
9304 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6))
9305 / (dSumWLinearTwo1n1n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9306 - 2.*f2pCorrelations->GetBinContent(6)
9307 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9308 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,32))
9309 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(18))
9310 / (dSumWLinearTwo1n1n*dSumWLinearFour6n1n6n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9311 - 2.*f2pCorrelations->GetBinContent(1)
9312 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9313 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,32))
9314 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(18))
9315 / (dSumWLinearTwo6n6n*dSumWLinearFour6n1n6n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9316 if(dError>0.)
9317 {
9318 f4pCumulants->SetBinError(18,pow(dError,0.5));
9319 }
9320 } // end of if(...)
9321 } // end of {
9322 // <4>_{6n,2n|6n,2n}
e1d101a6 9323 f4pCumulants->SetBinContent(19,f4pCorrelations->GetBinContent(19)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2));
c10259fb 9324 {
9325 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9326 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9327 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9328 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9329 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9330 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9331 Double_t dSumWLinearFour6n2n6n2n = 0.; // sum of linear event weights for <4>
9332 Double_t dSumWQuadraticFour6n2n6n2n = 0.; // sum of quadratic event weights <4>
9333 Double_t dSpreadFour6n2n6n2n = 0.; // weighted and biased estimator for sigma of <4>
9334 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9335 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9336 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9337 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9338 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9339 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9340 dSumWLinearFour6n2n6n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9341 dSumWQuadraticFour6n2n6n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9342 dSpreadFour6n2n6n2n = f4pCorrelations->GetBinError(19);
9343 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9344 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9345 pow(dSumWLinearFour6n2n6n2n,2.)>dSumWQuadraticFour6n2n6n2n)
9346 {
9347 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9348 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9349 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9350 + pow(f2pCorrelations->GetBinContent(2),2.)
9351 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9352 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9353 + pow((pow(dSumWQuadraticFour6n2n6n2n,0.5)/dSumWLinearFour6n2n6n2n)
9354 * dSpreadFour6n2n6n2n*pow(pow(dSumWLinearFour6n2n6n2n,2.)/(pow(dSumWLinearFour6n2n6n2n,2.)-dSumWQuadraticFour6n2n6n2n),0.5),2.)
9355 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2)
9356 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9357 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,6))
9358 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6))
9359 / (dSumWLinearTwo2n2n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9360 - 2.*f2pCorrelations->GetBinContent(6)
9361 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9362 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,33))
9363 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(19))
9364 / (dSumWLinearTwo2n2n*dSumWLinearFour6n2n6n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9365 - 2.*f2pCorrelations->GetBinContent(2)
9366 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9367 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,33))
9368 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(19))
9369 / (dSumWLinearTwo6n6n*dSumWLinearFour6n2n6n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9370 if(dError>0.)
9371 {
9372 f4pCumulants->SetBinError(19,pow(dError,0.5));
9373 }
9374 } // end of if(...)
9375 } // end of {
9376 // <4>_{6n,3n|6n,3n}
e1d101a6 9377 f4pCumulants->SetBinContent(20,f4pCorrelations->GetBinContent(20)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3));
c10259fb 9378 {
9379 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9380 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9381 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9382 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9383 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9384 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9385 Double_t dSumWLinearFour6n3n6n3n = 0.; // sum of linear event weights for <4>
9386 Double_t dSumWQuadraticFour6n3n6n3n = 0.; // sum of quadratic event weights <4>
9387 Double_t dSpreadFour6n3n6n3n = 0.; // weighted and biased estimator for sigma of <4>
9388 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9389 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9390 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9391 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9392 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9393 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9394 dSumWLinearFour6n3n6n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9395 dSumWQuadraticFour6n3n6n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9396 dSpreadFour6n3n6n3n = f4pCorrelations->GetBinError(20);
9397 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9398 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9399 pow(dSumWLinearFour6n3n6n3n,2.)>dSumWQuadraticFour6n3n6n3n)
9400 {
9401 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9402 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9403 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9404 + pow(f2pCorrelations->GetBinContent(3),2.)
9405 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9406 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9407 + pow((pow(dSumWQuadraticFour6n3n6n3n,0.5)/dSumWLinearFour6n3n6n3n)
9408 * dSpreadFour6n3n6n3n*pow(pow(dSumWLinearFour6n3n6n3n,2.)/(pow(dSumWLinearFour6n3n6n3n,2.)-dSumWQuadraticFour6n3n6n3n),0.5),2.)
9409 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)
9410 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9411 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,6))
9412 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6))
9413 / (dSumWLinearTwo3n3n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9414 - 2.*f2pCorrelations->GetBinContent(6)
9415 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9416 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,34))
9417 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(20))
9418 / (dSumWLinearTwo3n3n*dSumWLinearFour6n3n6n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9419 - 2.*f2pCorrelations->GetBinContent(3)
9420 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9421 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,34))
9422 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(20))
9423 / (dSumWLinearTwo6n6n*dSumWLinearFour6n3n6n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9424 if(dError>0.)
9425 {
9426 f4pCumulants->SetBinError(20,pow(dError,0.5));
9427 }
9428 } // end of if(...)
9429 } // end of {
9430 // <4>_{6n,4n|6n,4n}
e1d101a6 9431 f4pCumulants->SetBinContent(21,f4pCorrelations->GetBinContent(21)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4));
c10259fb 9432 {
9433 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9434 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9435 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9436 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9437 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9438 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9439 Double_t dSumWLinearFour6n4n6n4n = 0.; // sum of linear event weights for <4>
9440 Double_t dSumWQuadraticFour6n4n6n4n = 0.; // sum of quadratic event weights <4>
9441 Double_t dSpreadFour6n4n6n4n = 0.; // weighted and biased estimator for sigma of <4>
9442 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9443 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9444 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9445 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9446 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9447 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9448 dSumWLinearFour6n4n6n4n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9449 dSumWQuadraticFour6n4n6n4n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9450 dSpreadFour6n4n6n4n = f4pCorrelations->GetBinError(21);
9451 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9452 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9453 pow(dSumWLinearFour6n4n6n4n,2.)>dSumWQuadraticFour6n4n6n4n)
9454 {
9455 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9456 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9457 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9458 + pow(f2pCorrelations->GetBinContent(4),2.)
9459 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9460 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9461 + pow((pow(dSumWQuadraticFour6n4n6n4n,0.5)/dSumWLinearFour6n4n6n4n)
9462 * dSpreadFour6n4n6n4n*pow(pow(dSumWLinearFour6n4n6n4n,2.)/(pow(dSumWLinearFour6n4n6n4n,2.)-dSumWQuadraticFour6n4n6n4n),0.5),2.)
9463 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4)
9464 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9465 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,6))
9466 - f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(6))
9467 / (dSumWLinearTwo4n4n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9468 - 2.*f2pCorrelations->GetBinContent(6)
9469 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9470 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,35))
9471 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(21))
9472 / (dSumWLinearTwo4n4n*dSumWLinearFour6n4n6n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9473 - 2.*f2pCorrelations->GetBinContent(4)
9474 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9475 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,35))
9476 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(21))
9477 / (dSumWLinearTwo6n6n*dSumWLinearFour6n4n6n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9478 if(dError>0.)
9479 {
9480 f4pCumulants->SetBinError(21,pow(dError,0.5));
9481 }
9482 } // end of if(...)
9483 } // end of {
9484 // <4>_{6n,5n|6n,5n}
e1d101a6 9485 f4pCumulants->SetBinContent(22,f4pCorrelations->GetBinContent(22)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5));
c10259fb 9486 {
9487 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9488 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9489 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9490 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9491 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9492 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9493 Double_t dSumWLinearFour6n5n6n5n = 0.; // sum of linear event weights for <4>
9494 Double_t dSumWQuadraticFour6n5n6n5n = 0.; // sum of quadratic event weights <4>
9495 Double_t dSpreadFour6n5n6n5n = 0.; // weighted and biased estimator for sigma of <4>
9496 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9497 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9498 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9499 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9500 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9501 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9502 dSumWLinearFour6n5n6n5n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9503 dSumWQuadraticFour6n5n6n5n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9504 dSpreadFour6n5n6n5n = f4pCorrelations->GetBinError(22);
9505 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9506 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9507 pow(dSumWLinearFour6n5n6n5n,2.)>dSumWQuadraticFour6n5n6n5n)
9508 {
9509 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9510 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9511 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9512 + pow(f2pCorrelations->GetBinContent(5),2.)
9513 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9514 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9515 + pow((pow(dSumWQuadraticFour6n5n6n5n,0.5)/dSumWLinearFour6n5n6n5n)
9516 * dSpreadFour6n5n6n5n*pow(pow(dSumWLinearFour6n5n6n5n,2.)/(pow(dSumWLinearFour6n5n6n5n,2.)-dSumWQuadraticFour6n5n6n5n),0.5),2.)
9517 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5)
9518 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9519 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,6))
9520 - f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6))
9521 / (dSumWLinearTwo5n5n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9522 - 2.*f2pCorrelations->GetBinContent(6)
9523 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9524 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,36))
9525 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(22))
9526 / (dSumWLinearTwo5n5n*dSumWLinearFour6n5n6n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9527 - 2.*f2pCorrelations->GetBinContent(5)
9528 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9529 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,36))
9530 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(22))
9531 / (dSumWLinearTwo6n6n*dSumWLinearFour6n5n6n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9532 if(dError>0.)
9533 {
9534 f4pCumulants->SetBinError(22,pow(dError,0.5));
9535 }
9536 } // end of if(...)
9537 } // end of {
9538
e1d101a6 9539 // c3) "Two distinct harmonics":
9540 for(Int_t b=24;b<=25;b++)
9541 {
9542 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9543 Double_t dSumWLinear = 0.; // sum of linear event weights
9544 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9545 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9546 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9547 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9548 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9549 dSpread = f4pCorrelations->GetBinError(b);
9550 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9551 {
9552 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9553 f4pCumulants->SetBinError(b,dError);
9554 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9555 } // end of for(Int_t b=24;b<=25;b++)
9556 // c4) "Three distinct harmonics":
9557 for(Int_t b=27;b<=36;b++)
9558 {
9559 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9560 Double_t dSumWLinear = 0.; // sum of linear event weights
9561 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9562 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9563 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9564 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9565 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9566 dSpread = f4pCorrelations->GetBinError(b);
9567 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9568 {
9569 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9570 f4pCumulants->SetBinError(b,dError);
9571 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9572 } // end of for(Int_t b=27;b<=36;b++)
9573 // c5) "Four distinct harmonics":
9574 for(Int_t b=38;b<=45;b++)
9575 {
9576 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9577 Double_t dSumWLinear = 0.; // sum of linear event weights
9578 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9579 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9580 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9581 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9582 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9583 dSpread = f4pCorrelations->GetBinError(b);
9584 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9585 {
9586 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9587 f4pCumulants->SetBinError(b,dError);
9588 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9589 } // end of for(Int_t b=38;b<=45;b++)
9590
9591 // d) Calculate 5-p cumulants:
9592 // d1) "Standard candles":
9593 f5pCumulants->SetBinContent(1,f5pCorrelations->GetBinContent(1)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3));
c10259fb 9594 {
9595 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9596 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9597 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9598 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
9599 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
9600 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
9601 Double_t dSumWLinearFive3n2n3n1n1n = 0.; // sum of linear event weights for <4>
9602 Double_t dSumWQuadraticFive3n2n3n1n1n = 0.; // sum of quadratic event weights <4>
9603 Double_t dSpreadFive3n2n3n1n1n = 0.; // weighted and biased estimator for sigma of <4>
9604 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9605 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9606 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9607 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9608 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9609 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
9610 dSumWLinearFive3n2n3n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9611 dSumWQuadraticFive3n2n3n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9612 dSpreadFive3n2n3n1n1n = f5pCorrelations->GetBinError(1);
9613 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9614 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
9615 pow(dSumWLinearFive3n2n3n1n1n,2.)>dSumWQuadraticFive3n2n3n1n1n)
9616 {
9617 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
9618 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9619 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9620 + pow(f2pCorrelations->GetBinContent(3),2.)
9621 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
9622 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
9623 + pow((pow(dSumWQuadraticFive3n2n3n1n1n,0.5)/dSumWLinearFive3n2n3n1n1n)
9624 * dSpreadFive3n2n3n1n1n*pow(pow(dSumWLinearFive3n2n3n1n1n,2.)/(pow(dSumWLinearFive3n2n3n1n1n,2.)-dSumWQuadraticFive3n2n3n1n1n),0.5),2.)
9625 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3)
9626 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9627 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,7))
9628 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(1))
9629 / (dSumWLinearTwo3n3n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9630 - 2.*f3pCorrelations->GetBinContent(1)
9631 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9632 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,57))
9633 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(1))
9634 / (dSumWLinearTwo3n3n*dSumWLinearFive3n2n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9635 - 2.*f2pCorrelations->GetBinContent(3)
9636 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9637 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,57))
9638 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(1))
9639 / (dSumWLinearThree2n1n1n*dSumWLinearFive3n2n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9640 if(dError>0.)
9641 {
9642 f5pCumulants->SetBinError(1,pow(dError,0.5));
9643 }
9644 } // end of if(...)
9645 } // end of {
9646
e1d101a6 9647 f5pCumulants->SetBinContent(2,f5pCorrelations->GetBinContent(2)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1));
c10259fb 9648 {
9649 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9650 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9651 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9652 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
9653 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
9654 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
9655 Double_t dSumWLinearFive4n1n2n2n1n = 0.; // sum of linear event weights for <4>
9656 Double_t dSumWQuadraticFive4n1n2n2n1n = 0.; // sum of quadratic event weights <4>
9657 Double_t dSpreadFive4n1n2n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9658 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9659 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9660 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9661 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9662 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9663 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
9664 dSumWLinearFive4n1n2n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9665 dSumWQuadraticFive4n1n2n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9666 dSpreadFive4n1n2n2n1n = f5pCorrelations->GetBinError(2);
9667 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9668 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
9669 pow(dSumWLinearFive4n1n2n2n1n,2.)>dSumWQuadraticFive4n1n2n2n1n)
9670 {
9671 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
9672 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9673 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9674 + pow(f2pCorrelations->GetBinContent(1),2.)
9675 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
9676 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
9677 + pow((pow(dSumWQuadraticFive4n1n2n2n1n,0.5)/dSumWLinearFive4n1n2n2n1n)
9678 * dSpreadFive4n1n2n2n1n*pow(pow(dSumWLinearFive4n1n2n2n1n,2.)/(pow(dSumWLinearFive4n1n2n2n1n,2.)-dSumWQuadraticFive4n1n2n2n1n),0.5),2.)
9679 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1)
9680 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9681 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,8))
9682 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(2))
9683 / (dSumWLinearTwo1n1n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9684 - 2.*f3pCorrelations->GetBinContent(2)
9685 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9686 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,58))
9687 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(2))
9688 / (dSumWLinearTwo1n1n*dSumWLinearFive4n1n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9689 - 2.*f2pCorrelations->GetBinContent(1)
9690 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9691 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,58))
9692 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(2))
9693 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n1n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9694 if(dError>0.)
9695 {
9696 f5pCumulants->SetBinError(2,pow(dError,0.5));
9697 }
9698 } // end of if(...)
9699 } // end of {
e1d101a6 9700 f5pCumulants->SetBinContent(3,f5pCorrelations->GetBinContent(3)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2));
c10259fb 9701 {
9702 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9703 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9704 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9705 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
9706 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
9707 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
9708 Double_t dSumWLinearFive4n2n3n2n1n = 0.; // sum of linear event weights for <4>
9709 Double_t dSumWQuadraticFive4n2n3n2n1n = 0.; // sum of quadratic event weights <4>
9710 Double_t dSpreadFive4n2n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9711 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9712 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9713 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9714 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9715 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9716 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
9717 dSumWLinearFive4n2n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9718 dSumWQuadraticFive4n2n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9719 dSpreadFive4n2n3n2n1n = f5pCorrelations->GetBinError(3);
9720 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9721 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
9722 pow(dSumWLinearFive4n2n3n2n1n,2.)>dSumWQuadraticFive4n2n3n2n1n)
9723 {
9724 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
9725 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9726 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9727 + pow(f2pCorrelations->GetBinContent(2),2.)
9728 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
9729 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
9730 + pow((pow(dSumWQuadraticFive4n2n3n2n1n,0.5)/dSumWLinearFive4n2n3n2n1n)
9731 * dSpreadFive4n2n3n2n1n*pow(pow(dSumWLinearFive4n2n3n2n1n,2.)/(pow(dSumWLinearFive4n2n3n2n1n,2.)-dSumWQuadraticFive4n2n3n2n1n),0.5),2.)
9732 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2)
9733 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9734 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,11))
9735 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(6))
9736 / (dSumWLinearTwo2n2n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9737 - 2.*f3pCorrelations->GetBinContent(6)
9738 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9739 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,59))
9740 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(3))
9741 / (dSumWLinearTwo2n2n*dSumWLinearFive4n2n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9742 - 2.*f2pCorrelations->GetBinContent(2)
9743 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9744 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,59))
9745 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(3))
9746 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n2n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9747 if(dError>0.)
9748 {
9749 f5pCumulants->SetBinError(3,pow(dError,0.5));
9750 }
9751 } // end of if(...)
9752 } // end of {
e1d101a6 9753 f5pCumulants->SetBinContent(4,f5pCorrelations->GetBinContent(4)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3));
c10259fb 9754 {
9755 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9756 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9757 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9758 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
9759 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
9760 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
9761 Double_t dSumWLinearFive4n3n3n2n2n = 0.; // sum of linear event weights for <4>
9762 Double_t dSumWQuadraticFive4n3n3n2n2n = 0.; // sum of quadratic event weights <4>
9763 Double_t dSpreadFive4n3n3n2n2n = 0.; // weighted and biased estimator for sigma of <4>
9764 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9765 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9766 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9767 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9768 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9769 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
9770 dSumWLinearFive4n3n3n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9771 dSumWQuadraticFive4n3n3n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9772 dSpreadFive4n3n3n2n2n = f5pCorrelations->GetBinError(4);
9773 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9774 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
9775 pow(dSumWLinearFive4n3n3n2n2n,2.)>dSumWQuadraticFive4n3n3n2n2n)
9776 {
9777 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
9778 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9779 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9780 + pow(f2pCorrelations->GetBinContent(3),2.)
9781 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
9782 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
9783 + pow((pow(dSumWQuadraticFive4n3n3n2n2n,0.5)/dSumWLinearFive4n3n3n2n2n)
9784 * dSpreadFive4n3n3n2n2n*pow(pow(dSumWLinearFive4n3n3n2n2n,2.)/(pow(dSumWLinearFive4n3n3n2n2n,2.)-dSumWQuadraticFive4n3n3n2n2n),0.5),2.)
9785 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3)
9786 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9787 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,8))
9788 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(2))
9789 / (dSumWLinearTwo3n3n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9790 - 2.*f3pCorrelations->GetBinContent(2)
9791 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9792 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,60))
9793 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(4))
9794 / (dSumWLinearTwo3n3n*dSumWLinearFive4n3n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9795 - 2.*f2pCorrelations->GetBinContent(3)
9796 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9797 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,60))
9798 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(4))
9799 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n3n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9800 if(dError>0.)
9801 {
9802 f5pCumulants->SetBinError(4,pow(dError,0.5));
9803 }
9804 } // end of if(...)
9805 } // end of {
e1d101a6 9806 f5pCumulants->SetBinContent(5,f5pCorrelations->GetBinContent(5)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4));
c10259fb 9807 {
9808 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9809 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9810 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9811 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
9812 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
9813 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
9814 Double_t dSumWLinearFive4n2n4n1n1n = 0.; // sum of linear event weights for <4>
9815 Double_t dSumWQuadraticFive4n2n4n1n1n = 0.; // sum of quadratic event weights <4>
9816 Double_t dSpreadFive4n2n4n1n1n = 0.; // weighted and biased estimator for sigma of <4>
9817 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9818 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9819 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9820 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9821 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9822 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
9823 dSumWLinearFive4n2n4n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9824 dSumWQuadraticFive4n2n4n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9825 dSpreadFive4n2n4n1n1n = f5pCorrelations->GetBinError(5);
9826 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9827 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
9828 pow(dSumWLinearFive4n2n4n1n1n,2.)>dSumWQuadraticFive4n2n4n1n1n)
9829 {
9830 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
9831 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9832 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9833 + pow(f2pCorrelations->GetBinContent(4),2.)
9834 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
9835 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
9836 + pow((pow(dSumWQuadraticFive4n2n4n1n1n,0.5)/dSumWLinearFive4n2n4n1n1n)
9837 * dSpreadFive4n2n4n1n1n*pow(pow(dSumWLinearFive4n2n4n1n1n,2.)/(pow(dSumWLinearFive4n2n4n1n1n,2.)-dSumWQuadraticFive4n2n4n1n1n),0.5),2.)
9838 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4)
9839 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9840 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,7))
9841 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(1))
9842 / (dSumWLinearTwo4n4n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9843 - 2.*f3pCorrelations->GetBinContent(1)
9844 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9845 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,61))
9846 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(5))
9847 / (dSumWLinearTwo4n4n*dSumWLinearFive4n2n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9848 - 2.*f2pCorrelations->GetBinContent(4)
9849 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9850 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,61))
9851 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(5))
9852 / (dSumWLinearThree2n1n1n*dSumWLinearFive4n2n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9853 if(dError>0.)
9854 {
9855 f5pCumulants->SetBinError(5,pow(dError,0.5));
9856 }
9857 } // end of if(...)
9858 } // end of {
e1d101a6 9859 f5pCumulants->SetBinContent(6,f5pCorrelations->GetBinContent(6)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4));
c10259fb 9860 {
9861 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9862 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9863 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9864 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
9865 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
9866 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
9867 Double_t dSumWLinearFive4n3n4n2n1n = 0.; // sum of linear event weights for <4>
9868 Double_t dSumWQuadraticFive4n3n4n2n1n = 0.; // sum of quadratic event weights <4>
9869 Double_t dSpreadFive4n3n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9870 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9871 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9872 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9873 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9874 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9875 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
9876 dSumWLinearFive4n3n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9877 dSumWQuadraticFive4n3n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9878 dSpreadFive4n3n4n2n1n = f5pCorrelations->GetBinError(6);
9879 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9880 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
9881 pow(dSumWLinearFive4n3n4n2n1n,2.)>dSumWQuadraticFive4n3n4n2n1n)
9882 {
9883 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
9884 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9885 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9886 + pow(f2pCorrelations->GetBinContent(4),2.)
9887 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
9888 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
9889 + pow((pow(dSumWQuadraticFive4n3n4n2n1n,0.5)/dSumWLinearFive4n3n4n2n1n)
9890 * dSpreadFive4n3n4n2n1n*pow(pow(dSumWLinearFive4n3n4n2n1n,2.)/(pow(dSumWLinearFive4n3n4n2n1n,2.)-dSumWQuadraticFive4n3n4n2n1n),0.5),2.)
9891 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4)
9892 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9893 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,10))
9894 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(5))
9895 / (dSumWLinearTwo4n4n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9896 - 2.*f3pCorrelations->GetBinContent(5)
9897 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9898 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,62))
9899 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(6))
9900 / (dSumWLinearTwo4n4n*dSumWLinearFive4n3n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9901 - 2.*f2pCorrelations->GetBinContent(4)
9902 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9903 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,62))
9904 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(6))
9905 / (dSumWLinearThree3n2n1n*dSumWLinearFive4n3n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9906 if(dError>0.)
9907 {
9908 f5pCumulants->SetBinError(6,pow(dError,0.5));
9909 }
9910 } // end of if(...)
9911 } // end of {
e1d101a6 9912 f5pCumulants->SetBinContent(7,f5pCorrelations->GetBinContent(7)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(1));
c10259fb 9913 {
9914 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9915 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9916 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9917 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
9918 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
9919 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
9920 Double_t dSumWLinearFive5n1n3n2n1n = 0.; // sum of linear event weights for <4>
9921 Double_t dSumWQuadraticFive5n1n3n2n1n = 0.; // sum of quadratic event weights <4>
9922 Double_t dSpreadFive5n1n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9923 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9924 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9925 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9926 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9927 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9928 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
9929 dSumWLinearFive5n1n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9930 dSumWQuadraticFive5n1n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9931 dSpreadFive5n1n3n2n1n = f5pCorrelations->GetBinError(7);
9932 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9933 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
9934 pow(dSumWLinearFive5n1n3n2n1n,2.)>dSumWQuadraticFive5n1n3n2n1n)
9935 {
9936 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
9937 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9938 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9939 + pow(f2pCorrelations->GetBinContent(1),2.)
9940 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
9941 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
9942 + pow((pow(dSumWQuadraticFive5n1n3n2n1n,0.5)/dSumWLinearFive5n1n3n2n1n)
9943 * dSpreadFive5n1n3n2n1n*pow(pow(dSumWLinearFive5n1n3n2n1n,2.)/(pow(dSumWLinearFive5n1n3n2n1n,2.)-dSumWQuadraticFive5n1n3n2n1n),0.5),2.)
9944 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(1)
9945 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9946 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,12))
9947 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(7))
9948 / (dSumWLinearTwo1n1n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9949 - 2.*f3pCorrelations->GetBinContent(7)
9950 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9951 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,63))
9952 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(7))
9953 / (dSumWLinearTwo1n1n*dSumWLinearFive5n1n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9954 - 2.*f2pCorrelations->GetBinContent(1)
9955 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9956 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,63))
9957 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(7))
9958 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n1n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9959 if(dError>0.)
9960 {
9961 f5pCumulants->SetBinError(7,pow(dError,0.5));
9962 }
9963 } // end of if(...)
9964 } // end of {
e1d101a6 9965 f5pCumulants->SetBinContent(8,f5pCorrelations->GetBinContent(8)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5));
c10259fb 9966 {
9967 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9968 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9969 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9970 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
9971 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
9972 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
9973 Double_t dSumWLinearFive5n2n5n1n1n = 0.; // sum of linear event weights for <4>
9974 Double_t dSumWQuadraticFive5n2n5n1n1n = 0.; // sum of quadratic event weights <4>
9975 Double_t dSpreadFive5n2n5n1n1n = 0.; // weighted and biased estimator for sigma of <4>
9976 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9977 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9978 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9979 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9980 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9981 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
9982 dSumWLinearFive5n2n5n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9983 dSumWQuadraticFive5n2n5n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9984 dSpreadFive5n2n5n1n1n = f5pCorrelations->GetBinError(8);
9985 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9986 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
9987 pow(dSumWLinearFive5n2n5n1n1n,2.)>dSumWQuadraticFive5n2n5n1n1n)
9988 {
9989 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
9990 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9991 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9992 + pow(f2pCorrelations->GetBinContent(5),2.)
9993 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
9994 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
9995 + pow((pow(dSumWQuadraticFive5n2n5n1n1n,0.5)/dSumWLinearFive5n2n5n1n1n)
9996 * dSpreadFive5n2n5n1n1n*pow(pow(dSumWLinearFive5n2n5n1n1n,2.)/(pow(dSumWLinearFive5n2n5n1n1n,2.)-dSumWQuadraticFive5n2n5n1n1n),0.5),2.)
9997 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5)
9998 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9999 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,7))
10000 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(1))
10001 / (dSumWLinearTwo5n5n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10002 - 2.*f3pCorrelations->GetBinContent(1)
10003 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10004 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,64))
10005 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(8))
10006 / (dSumWLinearTwo5n5n*dSumWLinearFive5n2n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10007 - 2.*f2pCorrelations->GetBinContent(5)
10008 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10009 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,64))
10010 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(8))
10011 / (dSumWLinearThree2n1n1n*dSumWLinearFive5n2n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10012 if(dError>0.)
10013 {
10014 f5pCumulants->SetBinError(8,pow(dError,0.5));
10015 }
10016 } // end of if(...)
10017 } // end of {
e1d101a6 10018 f5pCumulants->SetBinContent(9,f5pCorrelations->GetBinContent(9)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(2));
c10259fb 10019 {
10020 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10021 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10022 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10023 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
10024 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
10025 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
10026 Double_t dSumWLinearFive5n2n4n2n1n = 0.; // sum of linear event weights for <4>
10027 Double_t dSumWQuadraticFive5n2n4n2n1n = 0.; // sum of quadratic event weights <4>
10028 Double_t dSpreadFive5n2n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10029 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10030 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10031 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10032 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10033 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10034 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
10035 dSumWLinearFive5n2n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10036 dSumWQuadraticFive5n2n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10037 dSpreadFive5n2n4n2n1n = f5pCorrelations->GetBinError(9);
10038 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10039 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
10040 pow(dSumWLinearFive5n2n4n2n1n,2.)>dSumWQuadraticFive5n2n4n2n1n)
10041 {
10042 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
10043 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10044 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10045 + pow(f2pCorrelations->GetBinContent(2),2.)
10046 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
10047 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
10048 + pow((pow(dSumWQuadraticFive5n2n4n2n1n,0.5)/dSumWLinearFive5n2n4n2n1n)
10049 * dSpreadFive5n2n4n2n1n*pow(pow(dSumWLinearFive5n2n4n2n1n,2.)/(pow(dSumWLinearFive5n2n4n2n1n,2.)-dSumWQuadraticFive5n2n4n2n1n),0.5),2.)
10050 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(2)
10051 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10052 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,13))
10053 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(8))
10054 / (dSumWLinearTwo2n2n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10055 - 2.*f3pCorrelations->GetBinContent(8)
10056 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10057 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,65))
10058 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(9))
10059 / (dSumWLinearTwo2n2n*dSumWLinearFive5n2n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10060 - 2.*f2pCorrelations->GetBinContent(2)
10061 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10062 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,65))
10063 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(9))
10064 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n2n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10065 if(dError>0.)
10066 {
10067 f5pCumulants->SetBinError(9,pow(dError,0.5));
10068 }
10069 } // end of if(...)
10070 } // end of {
e1d101a6 10071 f5pCumulants->SetBinContent(10,f5pCorrelations->GetBinContent(10)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(3));
c10259fb 10072 {
10073 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10074 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10075 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10076 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
10077 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
10078 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
10079 Double_t dSumWLinearFive5n3n4n3n1n = 0.; // sum of linear event weights for <4>
10080 Double_t dSumWQuadraticFive5n3n4n3n1n = 0.; // sum of quadratic event weights <4>
10081 Double_t dSpreadFive5n3n4n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10082 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10083 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10084 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10085 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10086 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10087 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
10088 dSumWLinearFive5n3n4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10089 dSumWQuadraticFive5n3n4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10090 dSpreadFive5n3n4n3n1n = f5pCorrelations->GetBinError(10);
10091 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10092 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
10093 pow(dSumWLinearFive5n3n4n3n1n,2.)>dSumWQuadraticFive5n3n4n3n1n)
10094 {
10095 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
10096 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10097 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10098 + pow(f2pCorrelations->GetBinContent(3),2.)
10099 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
10100 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
10101 + pow((pow(dSumWQuadraticFive5n3n4n3n1n,0.5)/dSumWLinearFive5n3n4n3n1n)
10102 * dSpreadFive5n3n4n3n1n*pow(pow(dSumWLinearFive5n3n4n3n1n,2.)/(pow(dSumWLinearFive5n3n4n3n1n,2.)-dSumWQuadraticFive5n3n4n3n1n),0.5),2.)
10103 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(3)
10104 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10105 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,13))
10106 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(8))
10107 / (dSumWLinearTwo3n3n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10108 - 2.*f3pCorrelations->GetBinContent(8)
10109 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10110 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,66))
10111 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(10))
10112 / (dSumWLinearTwo3n3n*dSumWLinearFive5n3n4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10113 - 2.*f2pCorrelations->GetBinContent(3)
10114 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10115 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,66))
10116 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(10))
10117 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n3n4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10118 if(dError>0.)
10119 {
10120 f5pCumulants->SetBinError(10,pow(dError,0.5));
10121 }
10122 } // end of if(...)
10123 } // end of {
e1d101a6 10124 f5pCumulants->SetBinContent(11,f5pCorrelations->GetBinContent(11)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(4));
c10259fb 10125 {
10126 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10127 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10128 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10129 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
10130 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
10131 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
10132 Double_t dSumWLinearFive5n4n4n3n2n = 0.; // sum of linear event weights for <4>
10133 Double_t dSumWQuadraticFive5n4n4n3n2n = 0.; // sum of quadratic event weights <4>
10134 Double_t dSpreadFive5n4n4n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10135 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10136 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10137 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10138 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10139 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10140 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
10141 dSumWLinearFive5n4n4n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10142 dSumWQuadraticFive5n4n4n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10143 dSpreadFive5n4n4n3n2n = f5pCorrelations->GetBinError(11);
10144 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10145 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
10146 pow(dSumWLinearFive5n4n4n3n2n,2.)>dSumWQuadraticFive5n4n4n3n2n)
10147 {
10148 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
10149 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10150 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10151 + pow(f2pCorrelations->GetBinContent(4),2.)
10152 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
10153 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
10154 + pow((pow(dSumWQuadraticFive5n4n4n3n2n,0.5)/dSumWLinearFive5n4n4n3n2n)
10155 * dSpreadFive5n4n4n3n2n*pow(pow(dSumWLinearFive5n4n4n3n2n,2.)/(pow(dSumWLinearFive5n4n4n3n2n,2.)-dSumWQuadraticFive5n4n4n3n2n),0.5),2.)
10156 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(4)
10157 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10158 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,12))
10159 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(7))
10160 / (dSumWLinearTwo4n4n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10161 - 2.*f3pCorrelations->GetBinContent(7)
10162 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10163 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,67))
10164 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(11))
10165 / (dSumWLinearTwo4n4n*dSumWLinearFive5n4n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10166 - 2.*f2pCorrelations->GetBinContent(4)
10167 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10168 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,67))
10169 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(11))
10170 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n4n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10171 if(dError>0.)
10172 {
10173 f5pCumulants->SetBinError(11,pow(dError,0.5));
10174 }
10175 } // end of if(...)
10176 } // end of {
e1d101a6 10177 f5pCumulants->SetBinContent(12,f5pCorrelations->GetBinContent(12)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(5));
c10259fb 10178 {
10179 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10180 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10181 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10182 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
10183 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
10184 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
10185 Double_t dSumWLinearFive5n3n5n2n1n = 0.; // sum of linear event weights for <4>
10186 Double_t dSumWQuadraticFive5n3n5n2n1n = 0.; // sum of quadratic event weights <4>
10187 Double_t dSpreadFive5n3n5n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10188 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10189 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10190 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10191 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10192 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10193 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
10194 dSumWLinearFive5n3n5n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10195 dSumWQuadraticFive5n3n5n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10196 dSpreadFive5n3n5n2n1n = f5pCorrelations->GetBinError(12);
10197 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10198 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
10199 pow(dSumWLinearFive5n3n5n2n1n,2.)>dSumWQuadraticFive5n3n5n2n1n)
10200 {
10201 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
10202 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10203 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10204 + pow(f2pCorrelations->GetBinContent(5),2.)
10205 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
10206 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
10207 + pow((pow(dSumWQuadraticFive5n3n5n2n1n,0.5)/dSumWLinearFive5n3n5n2n1n)
10208 * dSpreadFive5n3n5n2n1n*pow(pow(dSumWLinearFive5n3n5n2n1n,2.)/(pow(dSumWLinearFive5n3n5n2n1n,2.)-dSumWQuadraticFive5n3n5n2n1n),0.5),2.)
10209 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(5)
10210 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10211 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,10))
10212 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(5))
10213 / (dSumWLinearTwo5n5n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10214 - 2.*f3pCorrelations->GetBinContent(5)
10215 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10216 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,68))
10217 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(12))
10218 / (dSumWLinearTwo5n5n*dSumWLinearFive5n3n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10219 - 2.*f2pCorrelations->GetBinContent(5)
10220 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10221 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,68))
10222 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(12))
10223 / (dSumWLinearThree3n2n1n*dSumWLinearFive5n3n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10224 if(dError>0.)
10225 {
10226 f5pCumulants->SetBinError(12,pow(dError,0.5));
10227 }
10228 } // end of if(...)
10229 } // end of {
e1d101a6 10230 f5pCumulants->SetBinContent(13,f5pCorrelations->GetBinContent(13)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5));
c10259fb 10231 {
10232 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10233 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10234 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10235 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
10236 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
10237 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
10238 Double_t dSumWLinearFive5n4n5n2n2n = 0.; // sum of linear event weights for <4>
10239 Double_t dSumWQuadraticFive5n4n5n2n2n = 0.; // sum of quadratic event weights <4>
10240 Double_t dSpreadFive5n4n5n2n2n = 0.; // weighted and biased estimator for sigma of <4>
10241 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10242 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10243 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10244 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10245 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10246 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
10247 dSumWLinearFive5n4n5n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10248 dSumWQuadraticFive5n4n5n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10249 dSpreadFive5n4n5n2n2n = f5pCorrelations->GetBinError(13);
10250 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10251 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
10252 pow(dSumWLinearFive5n4n5n2n2n,2.)>dSumWQuadraticFive5n4n5n2n2n)
10253 {
10254 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
10255 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10256 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10257 + pow(f2pCorrelations->GetBinContent(5),2.)
10258 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
10259 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
10260 + pow((pow(dSumWQuadraticFive5n4n5n2n2n,0.5)/dSumWLinearFive5n4n5n2n2n)
10261 * dSpreadFive5n4n5n2n2n*pow(pow(dSumWLinearFive5n4n5n2n2n,2.)/(pow(dSumWLinearFive5n4n5n2n2n,2.)-dSumWQuadraticFive5n4n5n2n2n),0.5),2.)
10262 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5)
10263 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10264 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,8))
10265 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(2))
10266 / (dSumWLinearTwo5n5n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10267 - 2.*f3pCorrelations->GetBinContent(2)
10268 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10269 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,69))
10270 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(13))
10271 / (dSumWLinearTwo5n5n*dSumWLinearFive5n4n5n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10272 - 2.*f2pCorrelations->GetBinContent(5)
10273 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10274 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,69))
10275 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(13))
10276 / (dSumWLinearThree4n2n2n*dSumWLinearFive5n4n5n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10277 if(dError>0.)
10278 {
10279 f5pCumulants->SetBinError(13,pow(dError,0.5));
10280 }
10281 } // end of if(...)
10282 } // end of {
e1d101a6 10283 f5pCumulants->SetBinContent(14,f5pCorrelations->GetBinContent(14)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5));
c10259fb 10284 {
10285 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10286 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10287 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10288 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
10289 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
10290 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
10291 Double_t dSumWLinearFive5n4n5n3n1n = 0.; // sum of linear event weights for <4>
10292 Double_t dSumWQuadraticFive5n4n5n3n1n = 0.; // sum of quadratic event weights <4>
10293 Double_t dSpreadFive5n4n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10294 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10295 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10296 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10297 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10298 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10299 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
10300 dSumWLinearFive5n4n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10301 dSumWQuadraticFive5n4n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10302 dSpreadFive5n4n5n3n1n = f5pCorrelations->GetBinError(14);
10303 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10304 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
10305 pow(dSumWLinearFive5n4n5n3n1n,2.)>dSumWQuadraticFive5n4n5n3n1n)
10306 {
10307 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
10308 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10309 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10310 + pow(f2pCorrelations->GetBinContent(5),2.)
10311 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
10312 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
10313 + pow((pow(dSumWQuadraticFive5n4n5n3n1n,0.5)/dSumWLinearFive5n4n5n3n1n)
10314 * dSpreadFive5n4n5n3n1n*pow(pow(dSumWLinearFive5n4n5n3n1n,2.)/(pow(dSumWLinearFive5n4n5n3n1n,2.)-dSumWQuadraticFive5n4n5n3n1n),0.5),2.)
10315 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5)
10316 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10317 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,11))
10318 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(6))
10319 / (dSumWLinearTwo5n5n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10320 - 2.*f3pCorrelations->GetBinContent(6)
10321 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10322 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,70))
10323 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(14))
10324 / (dSumWLinearTwo5n5n*dSumWLinearFive5n4n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10325 - 2.*f2pCorrelations->GetBinContent(5)
10326 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10327 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,70))
10328 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(14))
10329 / (dSumWLinearThree4n3n1n*dSumWLinearFive5n4n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10330 if(dError>0.)
10331 {
10332 f5pCumulants->SetBinError(14,pow(dError,0.5));
10333 }
10334 } // end of if(...)
10335 } // end of {
e1d101a6 10336 f5pCumulants->SetBinContent(15,f5pCorrelations->GetBinContent(15)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1));
c10259fb 10337 {
10338 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10339 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10340 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10341 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10342 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10343 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10344 Double_t dSumWLinearFive6n1n3n3n1n = 0.; // sum of linear event weights for <4>
10345 Double_t dSumWQuadraticFive6n1n3n3n1n = 0.; // sum of quadratic event weights <4>
10346 Double_t dSpreadFive6n1n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10347 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10348 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10349 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10350 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10351 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10352 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10353 dSumWLinearFive6n1n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10354 dSumWQuadraticFive6n1n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10355 dSpreadFive6n1n3n3n1n = f5pCorrelations->GetBinError(15);
10356 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10357 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10358 pow(dSumWLinearFive6n1n3n3n1n,2.)>dSumWQuadraticFive6n1n3n3n1n)
10359 {
10360 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10361 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10362 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10363 + pow(f2pCorrelations->GetBinContent(1),2.)
10364 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10365 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10366 + pow((pow(dSumWQuadraticFive6n1n3n3n1n,0.5)/dSumWLinearFive6n1n3n3n1n)
10367 * dSpreadFive6n1n3n3n1n*pow(pow(dSumWLinearFive6n1n3n3n1n,2.)/(pow(dSumWLinearFive6n1n3n3n1n,2.)-dSumWQuadraticFive6n1n3n3n1n),0.5),2.)
10368 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1)
10369 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10370 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,9))
10371 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(3))
10372 / (dSumWLinearTwo1n1n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10373 - 2.*f3pCorrelations->GetBinContent(3)
10374 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10375 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,71))
10376 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(15))
10377 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10378 - 2.*f2pCorrelations->GetBinContent(1)
10379 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10380 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,71))
10381 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(15))
10382 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n1n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10383 if(dError>0.)
10384 {
10385 f5pCumulants->SetBinError(15,pow(dError,0.5));
10386 }
10387 } // end of if(...)
10388 } // end of {
e1d101a6 10389 f5pCumulants->SetBinContent(16,f5pCorrelations->GetBinContent(16)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2));
c10259fb 10390 {
10391 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10392 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10393 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10394 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10395 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10396 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10397 Double_t dSumWLinearFive6n2n3n3n2n = 0.; // sum of linear event weights for <4>
10398 Double_t dSumWQuadraticFive6n2n3n3n2n = 0.; // sum of quadratic event weights <4>
10399 Double_t dSpreadFive6n2n3n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10400 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10401 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10402 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10403 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10404 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10405 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10406 dSumWLinearFive6n2n3n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10407 dSumWQuadraticFive6n2n3n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10408 dSpreadFive6n2n3n3n2n = f5pCorrelations->GetBinError(16);
10409 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10410 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10411 pow(dSumWLinearFive6n2n3n3n2n,2.)>dSumWQuadraticFive6n2n3n3n2n)
10412 {
10413 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10414 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10415 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10416 + pow(f2pCorrelations->GetBinContent(2),2.)
10417 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10418 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10419 + pow((pow(dSumWQuadraticFive6n2n3n3n2n,0.5)/dSumWLinearFive6n2n3n3n2n)
10420 * dSpreadFive6n2n3n3n2n*pow(pow(dSumWLinearFive6n2n3n3n2n,2.)/(pow(dSumWLinearFive6n2n3n3n2n,2.)-dSumWQuadraticFive6n2n3n3n2n),0.5),2.)
10421 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2)
10422 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10423 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,9))
10424 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(3))
10425 / (dSumWLinearTwo2n2n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10426 - 2.*f3pCorrelations->GetBinContent(3)
10427 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10428 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,72))
10429 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(16))
10430 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10431 - 2.*f2pCorrelations->GetBinContent(2)
10432 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10433 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,72))
10434 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(16))
10435 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n2n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10436 if(dError>0.)
10437 {
10438 f5pCumulants->SetBinError(16,pow(dError,0.5));
10439 }
10440 } // end of if(...)
10441 } // end of {
e1d101a6 10442 f5pCumulants->SetBinContent(17,f5pCorrelations->GetBinContent(17)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(1));
c10259fb 10443 {
10444 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10445 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10446 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10447 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
10448 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
10449 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
10450 Double_t dSumWLinearFive6n1n4n2n1n = 0.; // sum of linear event weights for <4>
10451 Double_t dSumWQuadraticFive6n1n4n2n1n = 0.; // sum of quadratic event weights <4>
10452 Double_t dSpreadFive6n1n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10453 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10454 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10455 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10456 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10457 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10458 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
10459 dSumWLinearFive6n1n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10460 dSumWQuadraticFive6n1n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10461 dSpreadFive6n1n4n2n1n = f5pCorrelations->GetBinError(17);
10462 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10463 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
10464 pow(dSumWLinearFive6n1n4n2n1n,2.)>dSumWQuadraticFive6n1n4n2n1n)
10465 {
10466 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
10467 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10468 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10469 + pow(f2pCorrelations->GetBinContent(1),2.)
10470 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
10471 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
10472 + pow((pow(dSumWQuadraticFive6n1n4n2n1n,0.5)/dSumWLinearFive6n1n4n2n1n)
10473 * dSpreadFive6n1n4n2n1n*pow(pow(dSumWLinearFive6n1n4n2n1n,2.)/(pow(dSumWLinearFive6n1n4n2n1n,2.)-dSumWQuadraticFive6n1n4n2n1n),0.5),2.)
10474 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(1)
10475 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10476 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,14))
10477 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(9))
10478 / (dSumWLinearTwo1n1n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10479 - 2.*f3pCorrelations->GetBinContent(9)
10480 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10481 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,73))
10482 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(17))
10483 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10484 - 2.*f2pCorrelations->GetBinContent(1)
10485 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10486 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,73))
10487 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(17))
10488 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n1n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10489 if(dError>0.)
10490 {
10491 f5pCumulants->SetBinError(17,pow(dError,0.5));
10492 }
10493 } // end of if(...)
10494 } // end of {
e1d101a6 10495 f5pCumulants->SetBinContent(18,f5pCorrelations->GetBinContent(18)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(3));
c10259fb 10496 {
10497 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10498 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10499 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10500 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
10501 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
10502 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
10503 Double_t dSumWLinearFive6n3n4n3n2n = 0.; // sum of linear event weights for <4>
10504 Double_t dSumWQuadraticFive6n3n4n3n2n = 0.; // sum of quadratic event weights <4>
10505 Double_t dSpreadFive6n3n4n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10506 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10507 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10508 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10509 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10510 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10511 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
10512 dSumWLinearFive6n3n4n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10513 dSumWQuadraticFive6n3n4n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10514 dSpreadFive6n3n4n3n2n = f5pCorrelations->GetBinError(18);
10515 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10516 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
10517 pow(dSumWLinearFive6n3n4n3n2n,2.)>dSumWQuadraticFive6n3n4n3n2n)
10518 {
10519 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
10520 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10521 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10522 + pow(f2pCorrelations->GetBinContent(3),2.)
10523 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
10524 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
10525 + pow((pow(dSumWQuadraticFive6n3n4n3n2n,0.5)/dSumWLinearFive6n3n4n3n2n)
10526 * dSpreadFive6n3n4n3n2n*pow(pow(dSumWLinearFive6n3n4n3n2n,2.)/(pow(dSumWLinearFive6n3n4n3n2n,2.)-dSumWQuadraticFive6n3n4n3n2n),0.5),2.)
10527 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(3)
10528 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10529 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,14))
10530 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(9))
10531 / (dSumWLinearTwo3n3n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10532 - 2.*f3pCorrelations->GetBinContent(9)
10533 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10534 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,74))
10535 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(18))
10536 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10537 - 2.*f2pCorrelations->GetBinContent(3)
10538 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10539 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,74))
10540 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(18))
10541 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n3n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10542 if(dError>0.)
10543 {
10544 f5pCumulants->SetBinError(18,pow(dError,0.5));
10545 }
10546 } // end of if(...)
10547 } // end of {
e1d101a6 10548 f5pCumulants->SetBinContent(19,f5pCorrelations->GetBinContent(19)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4));
c10259fb 10549 {
10550 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10551 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10552 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10553 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10554 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10555 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10556 Double_t dSumWLinearFive6n4n4n3n3n = 0.; // sum of linear event weights for <4>
10557 Double_t dSumWQuadraticFive6n4n4n3n3n = 0.; // sum of quadratic event weights <4>
10558 Double_t dSpreadFive6n4n4n3n3n = 0.; // weighted and biased estimator for sigma of <4>
10559 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10560 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10561 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10562 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10563 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10564 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10565 dSumWLinearFive6n4n4n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10566 dSumWQuadraticFive6n4n4n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10567 dSpreadFive6n4n4n3n3n = f5pCorrelations->GetBinError(19);
10568 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10569 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10570 pow(dSumWLinearFive6n4n4n3n3n,2.)>dSumWQuadraticFive6n4n4n3n3n)
10571 {
10572 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10573 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10574 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10575 + pow(f2pCorrelations->GetBinContent(4),2.)
10576 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10577 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10578 + pow((pow(dSumWQuadraticFive6n4n4n3n3n,0.5)/dSumWLinearFive6n4n4n3n3n)
10579 * dSpreadFive6n4n4n3n3n*pow(pow(dSumWLinearFive6n4n4n3n3n,2.)/(pow(dSumWLinearFive6n4n4n3n3n,2.)-dSumWQuadraticFive6n4n4n3n3n),0.5),2.)
10580 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4)
10581 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10582 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,9))
10583 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(3))
10584 / (dSumWLinearTwo4n4n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10585 - 2.*f3pCorrelations->GetBinContent(3)
10586 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10587 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,75))
10588 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(19))
10589 / (dSumWLinearTwo4n4n*dSumWLinearFive6n4n4n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10590 - 2.*f2pCorrelations->GetBinContent(4)
10591 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10592 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,75))
10593 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(19))
10594 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n4n4n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10595 if(dError>0.)
10596 {
10597 f5pCumulants->SetBinError(19,pow(dError,0.5));
10598 }
10599 } // end of if(...)
10600 } // end of {
e1d101a6 10601 f5pCumulants->SetBinContent(20,f5pCorrelations->GetBinContent(20)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(2));
c10259fb 10602 {
10603 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10604 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10605 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10606 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10607 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10608 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10609 Double_t dSumWLinearFive6n2n5n2n1n = 0.; // sum of linear event weights for <4>
10610 Double_t dSumWQuadraticFive6n2n5n2n1n = 0.; // sum of quadratic event weights <4>
10611 Double_t dSpreadFive6n2n5n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10612 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10613 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10614 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10615 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10616 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10617 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10618 dSumWLinearFive6n2n5n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10619 dSumWQuadraticFive6n2n5n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10620 dSpreadFive6n2n5n2n1n = f5pCorrelations->GetBinError(20);
10621 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10622 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10623 pow(dSumWLinearFive6n2n5n2n1n,2.)>dSumWQuadraticFive6n2n5n2n1n)
10624 {
10625 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10626 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10627 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10628 + pow(f2pCorrelations->GetBinContent(2),2.)
10629 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10630 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10631 + pow((pow(dSumWQuadraticFive6n2n5n2n1n,0.5)/dSumWLinearFive6n2n5n2n1n)
10632 * dSpreadFive6n2n5n2n1n*pow(pow(dSumWLinearFive6n2n5n2n1n,2.)/(pow(dSumWLinearFive6n2n5n2n1n,2.)-dSumWQuadraticFive6n2n5n2n1n),0.5),2.)
10633 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(2)
10634 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10635 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,15))
10636 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(10))
10637 / (dSumWLinearTwo2n2n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10638 - 2.*f3pCorrelations->GetBinContent(10)
10639 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10640 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,76))
10641 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(20))
10642 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10643 - 2.*f2pCorrelations->GetBinContent(2)
10644 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10645 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,76))
10646 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(20))
10647 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n2n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10648 if(dError>0.)
10649 {
10650 f5pCumulants->SetBinError(20,pow(dError,0.5));
10651 }
10652 } // end of if(...)
10653 } // end of {
e1d101a6 10654 f5pCumulants->SetBinContent(21,f5pCorrelations->GetBinContent(21)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(3));
c10259fb 10655 {
10656 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10657 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10658 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10659 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10660 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10661 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10662 Double_t dSumWLinearFive6n3n5n3n1n = 0.; // sum of linear event weights for <4>
10663 Double_t dSumWQuadraticFive6n3n5n3n1n = 0.; // sum of quadratic event weights <4>
10664 Double_t dSpreadFive6n3n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10665 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10666 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10667 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10668 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10669 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10670 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10671 dSumWLinearFive6n3n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10672 dSumWQuadraticFive6n3n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10673 dSpreadFive6n3n5n3n1n = f5pCorrelations->GetBinError(21);
10674 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10675 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10676 pow(dSumWLinearFive6n3n5n3n1n,2.)>dSumWQuadraticFive6n3n5n3n1n)
10677 {
10678 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10679 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10680 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10681 + pow(f2pCorrelations->GetBinContent(3),2.)
10682 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10683 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10684 + pow((pow(dSumWQuadraticFive6n3n5n3n1n,0.5)/dSumWLinearFive6n3n5n3n1n)
10685 * dSpreadFive6n3n5n3n1n*pow(pow(dSumWLinearFive6n3n5n3n1n,2.)/(pow(dSumWLinearFive6n3n5n3n1n,2.)-dSumWQuadraticFive6n3n5n3n1n),0.5),2.)
10686 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(3)
10687 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10688 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,15))
10689 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(10))
10690 / (dSumWLinearTwo3n3n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10691 - 2.*f3pCorrelations->GetBinContent(10)
10692 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10693 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,77))
10694 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(21))
10695 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10696 - 2.*f2pCorrelations->GetBinContent(3)
10697 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10698 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,77))
10699 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(21))
10700 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10701 if(dError>0.)
10702 {
10703 f5pCumulants->SetBinError(21,pow(dError,0.5));
10704 }
10705 } // end of if(...)
10706 } // end of {
e1d101a6 10707 f5pCumulants->SetBinContent(22,f5pCorrelations->GetBinContent(22)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(4));
c10259fb 10708 {
10709 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10710 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10711 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10712 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10713 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10714 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10715 Double_t dSumWLinearFive6n3n5n3n1n = 0.; // sum of linear event weights for <4>
10716 Double_t dSumWQuadraticFive6n3n5n3n1n = 0.; // sum of quadratic event weights <4>
10717 Double_t dSpreadFive6n3n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10718 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10719 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10720 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10721 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10722 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10723 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10724 dSumWLinearFive6n3n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10725 dSumWQuadraticFive6n3n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10726 dSpreadFive6n3n5n3n1n = f5pCorrelations->GetBinError(22);
10727 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10728 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10729 pow(dSumWLinearFive6n3n5n3n1n,2.)>dSumWQuadraticFive6n3n5n3n1n)
10730 {
10731 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10732 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10733 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10734 + pow(f2pCorrelations->GetBinContent(4),2.)
10735 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10736 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10737 + pow((pow(dSumWQuadraticFive6n3n5n3n1n,0.5)/dSumWLinearFive6n3n5n3n1n)
10738 * dSpreadFive6n3n5n3n1n*pow(pow(dSumWLinearFive6n3n5n3n1n,2.)/(pow(dSumWLinearFive6n3n5n3n1n,2.)-dSumWQuadraticFive6n3n5n3n1n),0.5),2.)
10739 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(4)
10740 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10741 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,15))
10742 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(10))
10743 / (dSumWLinearTwo4n4n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10744 - 2.*f3pCorrelations->GetBinContent(10)
10745 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10746 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,78))
10747 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(22))
10748 / (dSumWLinearTwo4n4n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10749 - 2.*f2pCorrelations->GetBinContent(4)
10750 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10751 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,78))
10752 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(22))
10753 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10754 if(dError>0.)
10755 {
10756 f5pCumulants->SetBinError(22,pow(dError,0.5));
10757 }
10758 } // end of if(...)
10759 } // end of {
e1d101a6 10760 f5pCumulants->SetBinContent(23,f5pCorrelations->GetBinContent(23)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5));
c10259fb 10761 {
10762 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10763 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10764 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10765 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10766 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10767 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10768 Double_t dSumWLinearFive6n5n5n3n3n = 0.; // sum of linear event weights for <4>
10769 Double_t dSumWQuadraticFive6n5n5n3n3n = 0.; // sum of quadratic event weights <4>
10770 Double_t dSpreadFive6n5n5n3n3n = 0.; // weighted and biased estimator for sigma of <4>
10771 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10772 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10773 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10774 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10775 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10776 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10777 dSumWLinearFive6n5n5n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10778 dSumWQuadraticFive6n5n5n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10779 dSpreadFive6n5n5n3n3n = f5pCorrelations->GetBinError(23);
10780 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10781 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10782 pow(dSumWLinearFive6n5n5n3n3n,2.)>dSumWQuadraticFive6n5n5n3n3n)
10783 {
10784 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10785 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10786 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10787 + pow(f2pCorrelations->GetBinContent(5),2.)
10788 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10789 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10790 + pow((pow(dSumWQuadraticFive6n5n5n3n3n,0.5)/dSumWLinearFive6n5n5n3n3n)
10791 * dSpreadFive6n5n5n3n3n*pow(pow(dSumWLinearFive6n5n5n3n3n,2.)/(pow(dSumWLinearFive6n5n5n3n3n,2.)-dSumWQuadraticFive6n5n5n3n3n),0.5),2.)
10792 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5)
10793 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10794 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,9))
10795 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(3))
10796 / (dSumWLinearTwo5n5n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10797 - 2.*f3pCorrelations->GetBinContent(3)
10798 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10799 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,79))
10800 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(23))
10801 / (dSumWLinearTwo5n5n*dSumWLinearFive6n5n5n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10802 - 2.*f2pCorrelations->GetBinContent(5)
10803 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10804 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,79))
10805 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(23))
10806 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n5n5n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10807 if(dError>0.)
10808 {
10809 f5pCumulants->SetBinError(23,pow(dError,0.5));
10810 }
10811 } // end of if(...)
10812 } // end of {
e1d101a6 10813 f5pCumulants->SetBinContent(24,f5pCorrelations->GetBinContent(24)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6));
c10259fb 10814 {
10815 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
10816 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
10817 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
10818 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
10819 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
10820 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
10821 Double_t dSumWLinearFive6n2n6n1n1n = 0.; // sum of linear event weights for <4>
10822 Double_t dSumWQuadraticFive6n2n6n1n1n = 0.; // sum of quadratic event weights <4>
10823 Double_t dSpreadFive6n2n6n1n1n = 0.; // weighted and biased estimator for sigma of <4>
10824 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10825 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10826 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
10827 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10828 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10829 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
10830 dSumWLinearFive6n2n6n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10831 dSumWQuadraticFive6n2n6n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10832 dSpreadFive6n2n6n1n1n = f5pCorrelations->GetBinError(24);
10833 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
10834 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
10835 pow(dSumWLinearFive6n2n6n1n1n,2.)>dSumWQuadraticFive6n2n6n1n1n)
10836 {
10837 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
10838 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
10839 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
10840 + pow(f2pCorrelations->GetBinContent(6),2.)
10841 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
10842 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
10843 + pow((pow(dSumWQuadraticFive6n2n6n1n1n,0.5)/dSumWLinearFive6n2n6n1n1n)
10844 * dSpreadFive6n2n6n1n1n*pow(pow(dSumWLinearFive6n2n6n1n1n,2.)/(pow(dSumWLinearFive6n2n6n1n1n,2.)-dSumWQuadraticFive6n2n6n1n1n),0.5),2.)
10845 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6)
10846 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10847 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,7))
10848 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(1))
10849 / (dSumWLinearTwo6n6n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10850 - 2.*f3pCorrelations->GetBinContent(1)
10851 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10852 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,80))
10853 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(24))
10854 / (dSumWLinearTwo6n6n*dSumWLinearFive6n2n6n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10855 - 2.*f2pCorrelations->GetBinContent(6)
10856 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10857 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,80))
10858 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(24))
10859 / (dSumWLinearThree2n1n1n*dSumWLinearFive6n2n6n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10860 if(dError>0.)
10861 {
10862 f5pCumulants->SetBinError(24,pow(dError,0.5));
10863 }
10864 } // end of if(...)
10865 } // end of {
e1d101a6 10866 f5pCumulants->SetBinContent(25,f5pCorrelations->GetBinContent(25)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6));
c10259fb 10867 {
10868 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
10869 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
10870 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
10871 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
10872 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
10873 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
10874 Double_t dSumWLinearFive6n3n6n2n1n = 0.; // sum of linear event weights for <4>
10875 Double_t dSumWQuadraticFive6n3n6n2n1n = 0.; // sum of quadratic event weights <4>
10876 Double_t dSpreadFive6n3n6n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10877 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10878 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10879 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
10880 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10881 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10882 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
10883 dSumWLinearFive6n3n6n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10884 dSumWQuadraticFive6n3n6n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10885 dSpreadFive6n3n6n2n1n = f5pCorrelations->GetBinError(25);
10886 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
10887 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
10888 pow(dSumWLinearFive6n3n6n2n1n,2.)>dSumWQuadraticFive6n3n6n2n1n)
10889 {
10890 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
10891 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
10892 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
10893 + pow(f2pCorrelations->GetBinContent(6),2.)
10894 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
10895 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
10896 + pow((pow(dSumWQuadraticFive6n3n6n2n1n,0.5)/dSumWLinearFive6n3n6n2n1n)
10897 * dSpreadFive6n3n6n2n1n*pow(pow(dSumWLinearFive6n3n6n2n1n,2.)/(pow(dSumWLinearFive6n3n6n2n1n,2.)-dSumWQuadraticFive6n3n6n2n1n),0.5),2.)
10898 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6)
10899 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10900 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,10))
10901 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(5))
10902 / (dSumWLinearTwo6n6n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10903 - 2.*f3pCorrelations->GetBinContent(5)
10904 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10905 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,81))
10906 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(25))
10907 / (dSumWLinearTwo6n6n*dSumWLinearFive6n3n6n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10908 - 2.*f2pCorrelations->GetBinContent(6)
10909 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10910 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,81))
10911 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(25))
10912 / (dSumWLinearThree3n2n1n*dSumWLinearFive6n3n6n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10913 if(dError>0.)
10914 {
10915 f5pCumulants->SetBinError(25,pow(dError,0.5));
10916 }
10917 } // end of if(...)
10918 } // end of {
e1d101a6 10919 f5pCumulants->SetBinContent(26,f5pCorrelations->GetBinContent(26)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6));
c10259fb 10920 {
10921 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
10922 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
10923 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
10924 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
10925 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
10926 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
10927 Double_t dSumWLinearFive6n4n6n2n2n = 0.; // sum of linear event weights for <4>
10928 Double_t dSumWQuadraticFive6n4n6n2n2n = 0.; // sum of quadratic event weights <4>
10929 Double_t dSpreadFive6n4n6n2n2n = 0.; // weighted and biased estimator for sigma of <4>
10930 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10931 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10932 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
10933 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10934 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10935 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
10936 dSumWLinearFive6n4n6n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10937 dSumWQuadraticFive6n4n6n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10938 dSpreadFive6n4n6n2n2n = f5pCorrelations->GetBinError(26);
10939 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
10940 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
10941 pow(dSumWLinearFive6n4n6n2n2n,2.)>dSumWQuadraticFive6n4n6n2n2n)
10942 {
10943 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
10944 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
10945 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
10946 + pow(f2pCorrelations->GetBinContent(6),2.)
10947 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
10948 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
10949 + pow((pow(dSumWQuadraticFive6n4n6n2n2n,0.5)/dSumWLinearFive6n4n6n2n2n)
10950 * dSpreadFive6n4n6n2n2n*pow(pow(dSumWLinearFive6n4n6n2n2n,2.)/(pow(dSumWLinearFive6n4n6n2n2n,2.)-dSumWQuadraticFive6n4n6n2n2n),0.5),2.)
10951 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6)
10952 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10953 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,8))
10954 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(2))
10955 / (dSumWLinearTwo6n6n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10956 - 2.*f3pCorrelations->GetBinContent(2)
10957 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10958 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,82))
10959 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(26))
10960 / (dSumWLinearTwo6n6n*dSumWLinearFive6n4n6n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10961 - 2.*f2pCorrelations->GetBinContent(6)
10962 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10963 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,82))
10964 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(26))
10965 / (dSumWLinearThree4n2n2n*dSumWLinearFive6n4n6n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10966 if(dError>0.)
10967 {
10968 f5pCumulants->SetBinError(26,pow(dError,0.5));
10969 }
10970 } // end of if(...)
10971 } // end of {
e1d101a6 10972 f5pCumulants->SetBinContent(27,f5pCorrelations->GetBinContent(27)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(6));
c10259fb 10973 {
10974 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
10975 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
10976 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
10977 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
10978 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
10979 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
10980 Double_t dSumWLinearFive6n4n6n3n1n = 0.; // sum of linear event weights for <4>
10981 Double_t dSumWQuadraticFive6n4n6n3n1n = 0.; // sum of quadratic event weights <4>
10982 Double_t dSpreadFive6n4n6n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10983 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10984 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10985 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
10986 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10987 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10988 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
10989 dSumWLinearFive6n4n6n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10990 dSumWQuadraticFive6n4n6n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10991 dSpreadFive6n4n6n3n1n = f5pCorrelations->GetBinError(27);
10992 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
10993 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
10994 pow(dSumWLinearFive6n4n6n3n1n,2.)>dSumWQuadraticFive6n4n6n3n1n)
10995 {
10996 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
10997 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
10998 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
10999 + pow(f2pCorrelations->GetBinContent(6),2.)
11000 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11001 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11002 + pow((pow(dSumWQuadraticFive6n4n6n3n1n,0.5)/dSumWLinearFive6n4n6n3n1n)
11003 * dSpreadFive6n4n6n3n1n*pow(pow(dSumWLinearFive6n4n6n3n1n,2.)/(pow(dSumWLinearFive6n4n6n3n1n,2.)-dSumWQuadraticFive6n4n6n3n1n),0.5),2.)
11004 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(6)
11005 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11006 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,11))
11007 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(6))
11008 / (dSumWLinearTwo6n6n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11009 - 2.*f3pCorrelations->GetBinContent(6)
11010 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11011 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,83))
11012 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(27))
11013 / (dSumWLinearTwo6n6n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11014 - 2.*f2pCorrelations->GetBinContent(6)
11015 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11016 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,83))
11017 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(27))
11018 / (dSumWLinearThree4n3n1n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11019 if(dError>0.)
11020 {
11021 f5pCumulants->SetBinError(27,pow(dError,0.5));
11022 }
11023 } // end of if(...)
11024 } // end of {
e1d101a6 11025 f5pCumulants->SetBinContent(28,f5pCorrelations->GetBinContent(28)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(5));
c10259fb 11026 {
11027 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
11028 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
11029 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
11030 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
11031 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
11032 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
11033 Double_t dSumWLinearFive6n4n6n3n1n = 0.; // sum of linear event weights for <4>
11034 Double_t dSumWQuadraticFive6n4n6n3n1n = 0.; // sum of quadratic event weights <4>
11035 Double_t dSpreadFive6n4n6n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11036 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11037 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11038 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
11039 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11040 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11041 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
11042 dSumWLinearFive6n4n6n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11043 dSumWQuadraticFive6n4n6n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11044 dSpreadFive6n4n6n3n1n = f5pCorrelations->GetBinError(28);
11045 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
11046 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
11047 pow(dSumWLinearFive6n4n6n3n1n,2.)>dSumWQuadraticFive6n4n6n3n1n)
11048 {
11049 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
11050 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
11051 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
11052 + pow(f2pCorrelations->GetBinContent(5),2.)
11053 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
11054 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
11055 + pow((pow(dSumWQuadraticFive6n4n6n3n1n,0.5)/dSumWLinearFive6n4n6n3n1n)
11056 * dSpreadFive6n4n6n3n1n*pow(pow(dSumWLinearFive6n4n6n3n1n,2.)/(pow(dSumWLinearFive6n4n6n3n1n,2.)-dSumWQuadraticFive6n4n6n3n1n),0.5),2.)
11057 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(5)
11058 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11059 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,14))
11060 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(9))
11061 / (dSumWLinearTwo5n5n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11062 - 2.*f3pCorrelations->GetBinContent(9)
11063 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11064 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,84))
11065 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(28))
11066 / (dSumWLinearTwo5n5n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11067 - 2.*f2pCorrelations->GetBinContent(5)
11068 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11069 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,84))
11070 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(28))
11071 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11072 if(dError>0.)
11073 {
11074 f5pCumulants->SetBinError(28,pow(dError,0.5));
11075 }
11076 } // end of if(...)
11077 } // end of {
e1d101a6 11078 f5pCumulants->SetBinContent(29,f5pCorrelations->GetBinContent(29)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(6));
c10259fb 11079 {
11080 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11081 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11082 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11083 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
11084 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
11085 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
11086 Double_t dSumWLinearFive6n5n6n3n2n = 0.; // sum of linear event weights for <4>
11087 Double_t dSumWQuadraticFive6n5n6n3n2n = 0.; // sum of quadratic event weights <4>
11088 Double_t dSpreadFive6n5n6n3n2n = 0.; // weighted and biased estimator for sigma of <4>
11089 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11090 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11091 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11092 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11093 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11094 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
11095 dSumWLinearFive6n5n6n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11096 dSumWQuadraticFive6n5n6n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11097 dSpreadFive6n5n6n3n2n = f5pCorrelations->GetBinError(29);
11098 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11099 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
11100 pow(dSumWLinearFive6n5n6n3n2n,2.)>dSumWQuadraticFive6n5n6n3n2n)
11101 {
11102 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
11103 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11104 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11105 + pow(f2pCorrelations->GetBinContent(6),2.)
11106 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
11107 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
11108 + pow((pow(dSumWQuadraticFive6n5n6n3n2n,0.5)/dSumWLinearFive6n5n6n3n2n)
11109 * dSpreadFive6n5n6n3n2n*pow(pow(dSumWLinearFive6n5n6n3n2n,2.)/(pow(dSumWLinearFive6n5n6n3n2n,2.)-dSumWQuadraticFive6n5n6n3n2n),0.5),2.)
11110 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(6)
11111 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11112 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,12))
11113 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(7))
11114 / (dSumWLinearTwo6n6n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11115 - 2.*f3pCorrelations->GetBinContent(7)
11116 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11117 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,85))
11118 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(29))
11119 / (dSumWLinearTwo6n6n*dSumWLinearFive6n5n6n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11120 - 2.*f2pCorrelations->GetBinContent(6)
11121 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11122 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,85))
11123 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(29))
11124 / (dSumWLinearThree5n3n2n*dSumWLinearFive6n5n6n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11125 if(dError>0.)
11126 {
11127 f5pCumulants->SetBinError(29,pow(dError,0.5));
11128 }
11129 } // end of if(...)
11130 } // end of {
e1d101a6 11131 f5pCumulants->SetBinContent(30,f5pCorrelations->GetBinContent(30)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(6));
c10259fb 11132 {
11133 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11134 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11135 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11136 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
11137 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
11138 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
11139 Double_t dSumWLinearFive6n5n6n4n1n = 0.; // sum of linear event weights for <4>
11140 Double_t dSumWQuadraticFive6n5n6n4n1n = 0.; // sum of quadratic event weights <4>
11141 Double_t dSpreadFive6n5n6n4n1n = 0.; // weighted and biased estimator for sigma of <4>
11142 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11143 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11144 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11145 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11146 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11147 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
11148 dSumWLinearFive6n5n6n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11149 dSumWQuadraticFive6n5n6n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11150 dSpreadFive6n5n6n4n1n = f5pCorrelations->GetBinError(30);
11151 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11152 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
11153 pow(dSumWLinearFive6n5n6n4n1n,2.)>dSumWQuadraticFive6n5n6n4n1n)
11154 {
11155 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
11156 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11157 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11158 + pow(f2pCorrelations->GetBinContent(6),2.)
11159 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
11160 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
11161 + pow((pow(dSumWQuadraticFive6n5n6n4n1n,0.5)/dSumWLinearFive6n5n6n4n1n)
11162 * dSpreadFive6n5n6n4n1n*pow(pow(dSumWLinearFive6n5n6n4n1n,2.)/(pow(dSumWLinearFive6n5n6n4n1n,2.)-dSumWQuadraticFive6n5n6n4n1n),0.5),2.)
11163 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(6)
11164 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11165 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,13))
11166 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(8))
11167 / (dSumWLinearTwo6n6n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11168 - 2.*f3pCorrelations->GetBinContent(8)
11169 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11170 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,86))
11171 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(30))
11172 / (dSumWLinearTwo6n6n*dSumWLinearFive6n5n6n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11173 - 2.*f2pCorrelations->GetBinContent(6)
11174 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11175 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,86))
11176 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(30))
11177 / (dSumWLinearThree5n4n1n*dSumWLinearFive6n5n6n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11178 if(dError>0.)
11179 {
11180 f5pCumulants->SetBinError(30,pow(dError,0.5));
11181 }
11182 } // end of if(...)
11183 } // end of {
e1d101a6 11184 // d2) "Two distinct harmonics":
11185 f5pCumulants->SetBinContent(32,f5pCorrelations->GetBinContent(32)-3.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(1));
c10259fb 11186 {
11187 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11188 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11189 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11190 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11191 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11192 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11193 Double_t dSumWLinearFive2n1n1n1n1n = 0.; // sum of linear event weights for <4>
11194 Double_t dSumWQuadraticFive2n1n1n1n1n = 0.; // sum of quadratic event weights <4>
11195 Double_t dSpreadFive2n1n1n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11196 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11197 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11198 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11199 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11200 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11201 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11202 dSumWLinearFive2n1n1n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11203 dSumWQuadraticFive2n1n1n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11204 dSpreadFive2n1n1n1n1n = f5pCorrelations->GetBinError(32);
11205 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11206 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11207 pow(dSumWLinearFive2n1n1n1n1n,2.)>dSumWQuadraticFive2n1n1n1n1n)
11208 {
11209 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(1),2.)
11210 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11211 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11212 + 9.*pow(f2pCorrelations->GetBinContent(1),2.)
11213 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11214 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11215 + pow((pow(dSumWQuadraticFive2n1n1n1n1n,0.5)/dSumWLinearFive2n1n1n1n1n)
11216 * dSpreadFive2n1n1n1n1n*pow(pow(dSumWLinearFive2n1n1n1n1n,2.)/(pow(dSumWLinearFive2n1n1n1n1n,2.)-dSumWQuadraticFive2n1n1n1n1n),0.5),2.)
11217 + 9.*2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(1)
11218 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11219 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,7))
11220 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(1))
11221 / (dSumWLinearTwo1n1n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11222 - 3.*2.*f3pCorrelations->GetBinContent(1)
11223 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11224 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,87))
11225 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(32))
11226 / (dSumWLinearTwo1n1n*dSumWLinearFive2n1n1n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11227 - 3.*2.*f2pCorrelations->GetBinContent(1)
11228 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11229 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,87))
11230 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(32))
11231 / (dSumWLinearThree2n1n1n*dSumWLinearFive2n1n1n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11232 if(dError>0.)
11233 {
11234 f5pCumulants->SetBinError(32,pow(dError,0.5));
11235 }
11236 } // end of if(...)
11237 } // end of {
e1d101a6 11238 f5pCumulants->SetBinContent(33,f5pCorrelations->GetBinContent(33)-2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2));
c10259fb 11239 {
11240 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11241 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11242 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11243 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11244 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11245 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11246 Double_t dSumWLinearFive2n2n2n1n1n = 0.; // sum of linear event weights for <4>
11247 Double_t dSumWQuadraticFive2n2n2n1n1n = 0.; // sum of quadratic event weights <4>
11248 Double_t dSpreadFive2n2n2n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11249 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11250 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11251 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11252 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11253 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11254 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11255 dSumWLinearFive2n2n2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11256 dSumWQuadraticFive2n2n2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11257 dSpreadFive2n2n2n1n1n = f5pCorrelations->GetBinError(33);
11258 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11259 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11260 pow(dSumWLinearFive2n2n2n1n1n,2.)>dSumWQuadraticFive2n2n2n1n1n)
11261 {
11262 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(1),2.)
11263 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11264 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11265 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11266 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11267 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11268 + pow((pow(dSumWQuadraticFive2n2n2n1n1n,0.5)/dSumWLinearFive2n2n2n1n1n)
11269 * dSpreadFive2n2n2n1n1n*pow(pow(dSumWLinearFive2n2n2n1n1n,2.)/(pow(dSumWLinearFive2n2n2n1n1n,2.)-dSumWQuadraticFive2n2n2n1n1n),0.5),2.)
11270 + 4.*2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2)
11271 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11272 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,7))
11273 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(1))
11274 / (dSumWLinearTwo2n2n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11275 - 2.*2.*f3pCorrelations->GetBinContent(1)
11276 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11277 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,88))
11278 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(33))
11279 / (dSumWLinearTwo2n2n*dSumWLinearFive2n2n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11280 - 2.*2.*f2pCorrelations->GetBinContent(2)
11281 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11282 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,88))
11283 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(33))
11284 / (dSumWLinearThree2n1n1n*dSumWLinearFive2n2n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11285 if(dError>0.)
11286 {
11287 f5pCumulants->SetBinError(33,pow(dError,0.5));
11288 }
11289 } // end of if(...)
11290 } // end of {
11291 f5pCumulants->SetBinContent(34,f5pCorrelations->GetBinContent(34));
11292 {
11293 Double_t dSumWLinear = 0.; // sum of linear event weights
11294 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11295 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11296 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11297 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11298 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11299 dSpread = f5pCorrelations->GetBinError(34);
11300 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11301 {
11302 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11303 f5pCumulants->SetBinError(34,dError);
11304 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11305 }
11306 f5pCumulants->SetBinContent(35,f5pCorrelations->GetBinContent(35));
11307 {
11308 Double_t dSumWLinear = 0.; // sum of linear event weights
11309 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11310 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11311 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11312 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11313 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11314 dSpread = f5pCorrelations->GetBinError(35);
11315 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11316 {
11317 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11318 f5pCumulants->SetBinError(35,dError);
11319 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11320 }
e1d101a6 11321 f5pCumulants->SetBinContent(36,f5pCorrelations->GetBinContent(36)-3.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(2));
c10259fb 11322 {
11323 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11324 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11325 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11326 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11327 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11328 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11329 Double_t dSumWLinearFive4n2n2n2n2n = 0.; // sum of linear event weights for <4>
11330 Double_t dSumWQuadraticFive4n2n2n2n2n = 0.; // sum of quadratic event weights <4>
11331 Double_t dSpreadFive4n2n2n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11332 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11333 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11334 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11335 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11336 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11337 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11338 dSumWLinearFive4n2n2n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11339 dSumWQuadraticFive4n2n2n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11340 dSpreadFive4n2n2n2n2n = f5pCorrelations->GetBinError(36);
11341 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11342 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11343 pow(dSumWLinearFive4n2n2n2n2n,2.)>dSumWQuadraticFive4n2n2n2n2n)
11344 {
11345 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(2),2.)
11346 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11347 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11348 + 9.*pow(f2pCorrelations->GetBinContent(2),2.)
11349 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11350 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11351 + pow((pow(dSumWQuadraticFive4n2n2n2n2n,0.5)/dSumWLinearFive4n2n2n2n2n)
11352 * dSpreadFive4n2n2n2n2n*pow(pow(dSumWLinearFive4n2n2n2n2n,2.)/(pow(dSumWLinearFive4n2n2n2n2n,2.)-dSumWQuadraticFive4n2n2n2n2n),0.5),2.)
11353 + 9.*2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(2)
11354 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11355 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,8))
11356 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(2))
11357 / (dSumWLinearTwo2n2n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11358 - 3.*2.*f3pCorrelations->GetBinContent(2)
11359 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11360 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,91))
11361 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(36))
11362 / (dSumWLinearTwo2n2n*dSumWLinearFive4n2n2n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11363 - 3.*2.*f2pCorrelations->GetBinContent(2)
11364 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11365 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,91))
11366 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(36))
11367 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n2n2n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11368 if(dError>0.)
11369 {
11370 f5pCumulants->SetBinError(36,pow(dError,0.5));
11371 }
11372 } // end of if(...)
11373 } // end of {
e1d101a6 11374 f5pCumulants->SetBinContent(37,f5pCorrelations->GetBinContent(37)-2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4));
c10259fb 11375 {
11376 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
11377 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
11378 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
11379 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11380 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11381 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11382 Double_t dSumWLinearFive4n4n4n2n2n = 0.; // sum of linear event weights for <4>
11383 Double_t dSumWQuadraticFive4n4n4n2n2n = 0.; // sum of quadratic event weights <4>
11384 Double_t dSpreadFive4n4n4n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11385 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11386 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11387 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
11388 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11389 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11390 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11391 dSumWLinearFive4n4n4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11392 dSumWQuadraticFive4n4n4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11393 dSpreadFive4n4n4n2n2n = f5pCorrelations->GetBinError(37);
11394 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
11395 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11396 pow(dSumWLinearFive4n4n4n2n2n,2.)>dSumWQuadraticFive4n4n4n2n2n)
11397 {
11398 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(2),2.)
11399 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
11400 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
11401 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
11402 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11403 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11404 + pow((pow(dSumWQuadraticFive4n4n4n2n2n,0.5)/dSumWLinearFive4n4n4n2n2n)
11405 * dSpreadFive4n4n4n2n2n*pow(pow(dSumWLinearFive4n4n4n2n2n,2.)/(pow(dSumWLinearFive4n4n4n2n2n,2.)-dSumWQuadraticFive4n4n4n2n2n),0.5),2.)
11406 + 4.*2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4)
11407 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11408 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,8))
11409 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(2))
11410 / (dSumWLinearTwo4n4n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11411 - 2.*2.*f3pCorrelations->GetBinContent(2)
11412 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11413 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,92))
11414 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(37))
11415 / (dSumWLinearTwo4n4n*dSumWLinearFive4n4n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11416 - 2.*2.*f2pCorrelations->GetBinContent(4)
11417 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11418 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,92))
11419 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(37))
11420 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n4n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11421 if(dError>0.)
11422 {
11423 f5pCumulants->SetBinError(37,pow(dError,0.5));
11424 }
11425 } // end of if(...)
11426 } // end of {
e1d101a6 11427 f5pCumulants->SetBinContent(38,f5pCorrelations->GetBinContent(38)-3.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(3));
c10259fb 11428 {
11429 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11430 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11431 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11432 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
11433 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
11434 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
11435 Double_t dSumWLinearFive6n3n3n3n3n = 0.; // sum of linear event weights for <4>
11436 Double_t dSumWQuadraticFive6n3n3n3n3n = 0.; // sum of quadratic event weights <4>
11437 Double_t dSpreadFive6n3n3n3n3n = 0.; // weighted and biased estimator for sigma of <4>
11438 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11439 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11440 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11441 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11442 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11443 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
11444 dSumWLinearFive6n3n3n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11445 dSumWQuadraticFive6n3n3n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11446 dSpreadFive6n3n3n3n3n = f5pCorrelations->GetBinError(38);
11447 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11448 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
11449 pow(dSumWLinearFive6n3n3n3n3n,2.)>dSumWQuadraticFive6n3n3n3n3n)
11450 {
11451 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(3),2.)
11452 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11453 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11454 + 9.*pow(f2pCorrelations->GetBinContent(3),2.)
11455 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
11456 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
11457 + pow((pow(dSumWQuadraticFive6n3n3n3n3n,0.5)/dSumWLinearFive6n3n3n3n3n)
11458 * dSpreadFive6n3n3n3n3n*pow(pow(dSumWLinearFive6n3n3n3n3n,2.)/(pow(dSumWLinearFive6n3n3n3n3n,2.)-dSumWQuadraticFive6n3n3n3n3n),0.5),2.)
11459 + 9.*2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(3)
11460 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11461 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,9))
11462 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(3))
11463 / (dSumWLinearTwo3n3n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11464 - 3.*2.*f3pCorrelations->GetBinContent(3)
11465 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11466 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,93))
11467 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(38))
11468 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n3n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11469 - 3.*2.*f2pCorrelations->GetBinContent(3)
11470 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11471 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,93))
11472 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(38))
11473 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n3n3n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11474 if(dError>0.)
11475 {
11476 f5pCumulants->SetBinError(38,pow(dError,0.5));
11477 }
11478 } // end of if(...)
11479 } // end of {
11480 f5pCumulants->SetBinContent(39,f5pCorrelations->GetBinContent(39));
11481 {
11482 Double_t dSumWLinear = 0.; // sum of linear event weights
11483 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11484 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11485 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11486 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11487 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11488 dSpread = f5pCorrelations->GetBinError(39);
11489 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11490 {
11491 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11492 f5pCumulants->SetBinError(39,dError);
11493 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11494 }
e1d101a6 11495 f5pCumulants->SetBinContent(40,f5pCorrelations->GetBinContent(40)-2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6));
c10259fb 11496 {
11497 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11498 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11499 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11500 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
11501 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
11502 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
11503 Double_t dSumWLinearFive6n6n6n3n3n = 0.; // sum of linear event weights for <4>
11504 Double_t dSumWQuadraticFive6n6n6n3n3n = 0.; // sum of quadratic event weights <4>
11505 Double_t dSpreadFive6n6n6n3n3n = 0.; // weighted and biased estimator for sigma of <4>
11506 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11507 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11508 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11509 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11510 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11511 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
11512 dSumWLinearFive6n6n6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11513 dSumWQuadraticFive6n6n6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11514 dSpreadFive6n6n6n3n3n = f5pCorrelations->GetBinError(40);
11515 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11516 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
11517 pow(dSumWLinearFive6n6n6n3n3n,2.)>dSumWQuadraticFive6n6n6n3n3n)
11518 {
11519 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(3),2.)
11520 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11521 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11522 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
11523 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
11524 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
11525 + pow((pow(dSumWQuadraticFive6n6n6n3n3n,0.5)/dSumWLinearFive6n6n6n3n3n)
11526 * dSpreadFive6n6n6n3n3n*pow(pow(dSumWLinearFive6n6n6n3n3n,2.)/(pow(dSumWLinearFive6n6n6n3n3n,2.)-dSumWQuadraticFive6n6n6n3n3n),0.5),2.)
11527 + 4.*2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6)
11528 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11529 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,9))
11530 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(3))
11531 / (dSumWLinearTwo6n6n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11532 - 2.*2.*f3pCorrelations->GetBinContent(3)
11533 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11534 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,95))
11535 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(40))
11536 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11537 - 2.*2.*f2pCorrelations->GetBinContent(6)
11538 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11539 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,95))
11540 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(40))
11541 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n6n6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11542 if(dError>0.)
11543 {
11544 f5pCumulants->SetBinError(40,pow(dError,0.5));
11545 }
11546 } // end of if(...)
11547 } // end of {
11548
e1d101a6 11549 // d2) "Three distinct harmonics":
11550 f5pCumulants->SetBinContent(42,f5pCorrelations->GetBinContent(42)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1));
c10259fb 11551 {
11552 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11553 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11554 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11555 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11556 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11557 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11558 Double_t dSumWLinearFive3n1n2n1n1n = 0.; // sum of linear event weights for <4>
11559 Double_t dSumWQuadraticFive3n1n2n1n1n = 0.; // sum of quadratic event weights <4>
11560 Double_t dSpreadFive3n1n2n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11561 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11562 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11563 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11564 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11565 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11566 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11567 dSumWLinearFive3n1n2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11568 dSumWQuadraticFive3n1n2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11569 dSpreadFive3n1n2n1n1n = f5pCorrelations->GetBinError(42);
11570 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11571 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11572 pow(dSumWLinearFive3n1n2n1n1n,2.)>dSumWQuadraticFive3n1n2n1n1n)
11573 {
11574 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11575 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11576 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11577 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
11578 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11579 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11580 + pow((pow(dSumWQuadraticFive3n1n2n1n1n,0.5)/dSumWLinearFive3n1n2n1n1n)
11581 * dSpreadFive3n1n2n1n1n*pow(pow(dSumWLinearFive3n1n2n1n1n,2.)/(pow(dSumWLinearFive3n1n2n1n1n,2.)-dSumWQuadraticFive3n1n2n1n1n),0.5),2.)
11582 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)
11583 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11584 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,10))
11585 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(5))
11586 / (dSumWLinearTwo1n1n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11587 - 2.*2.*f3pCorrelations->GetBinContent(5)
11588 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11589 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,96))
11590 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(42))
11591 / (dSumWLinearTwo1n1n*dSumWLinearFive3n1n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11592 - 2.*2.*f2pCorrelations->GetBinContent(1)
11593 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11594 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,96))
11595 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(42))
11596 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n1n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11597 if(dError>0.)
11598 {
11599 f5pCumulants->SetBinError(42,pow(dError,0.5));
11600 }
11601 } // end of if(...)
11602 } // end of {
e1d101a6 11603 f5pCumulants->SetBinContent(43,f5pCorrelations->GetBinContent(43)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2));
c10259fb 11604 {
11605 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11606 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11607 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11608 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11609 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11610 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11611 Double_t dSumWLinearFive3n2n2n2n1n = 0.; // sum of linear event weights for <4>
11612 Double_t dSumWQuadraticFive3n2n2n2n1n = 0.; // sum of quadratic event weights <4>
11613 Double_t dSpreadFive3n2n2n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11614 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11615 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11616 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11617 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11618 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11619 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11620 dSumWLinearFive3n2n2n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11621 dSumWQuadraticFive3n2n2n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11622 dSpreadFive3n2n2n2n1n = f5pCorrelations->GetBinError(43);
11623 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11624 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11625 pow(dSumWLinearFive3n2n2n2n1n,2.)>dSumWQuadraticFive3n2n2n2n1n)
11626 {
11627 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11628 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11629 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11630 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11631 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11632 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11633 + pow((pow(dSumWQuadraticFive3n2n2n2n1n,0.5)/dSumWLinearFive3n2n2n2n1n)
11634 * dSpreadFive3n2n2n2n1n*pow(pow(dSumWLinearFive3n2n2n2n1n,2.)/(pow(dSumWLinearFive3n2n2n2n1n,2.)-dSumWQuadraticFive3n2n2n2n1n),0.5),2.)
11635 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)
11636 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11637 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,10))
11638 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(5))
11639 / (dSumWLinearTwo2n2n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11640 - 2.*2.*f3pCorrelations->GetBinContent(5)
11641 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11642 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,97))
11643 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(43))
11644 / (dSumWLinearTwo2n2n*dSumWLinearFive3n2n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11645 - 2.*2.*f2pCorrelations->GetBinContent(2)
11646 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11647 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,97))
11648 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(43))
11649 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n2n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11650 if(dError>0.)
11651 {
11652 f5pCumulants->SetBinError(43,pow(dError,0.5));
11653 }
11654 } // end of if(...)
11655 } // end of {
e1d101a6 11656 f5pCumulants->SetBinContent(44,f5pCorrelations->GetBinContent(44)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3));
c10259fb 11657 {
11658 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11659 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11660 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11661 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11662 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11663 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11664 Double_t dSumWLinearFive3n3n3n2n1n = 0.; // sum of linear event weights for <4>
11665 Double_t dSumWQuadraticFive3n3n3n2n1n = 0.; // sum of quadratic event weights <4>
11666 Double_t dSpreadFive3n3n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11667 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11668 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11669 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11670 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11671 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11672 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11673 dSumWLinearFive3n3n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11674 dSumWQuadraticFive3n3n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11675 dSpreadFive3n3n3n2n1n = f5pCorrelations->GetBinError(44);
11676 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11677 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11678 pow(dSumWLinearFive3n3n3n2n1n,2.)>dSumWQuadraticFive3n3n3n2n1n)
11679 {
11680 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11681 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11682 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11683 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
11684 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11685 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11686 + pow((pow(dSumWQuadraticFive3n3n3n2n1n,0.5)/dSumWLinearFive3n3n3n2n1n)
11687 * dSpreadFive3n3n3n2n1n*pow(pow(dSumWLinearFive3n3n3n2n1n,2.)/(pow(dSumWLinearFive3n3n3n2n1n,2.)-dSumWQuadraticFive3n3n3n2n1n),0.5),2.)
11688 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)
11689 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11690 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,10))
11691 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(5))
11692 / (dSumWLinearTwo3n3n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11693 - 2.*2.*f3pCorrelations->GetBinContent(5)
11694 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11695 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,98))
11696 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(44))
11697 / (dSumWLinearTwo3n3n*dSumWLinearFive3n3n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11698 - 2.*2.*f2pCorrelations->GetBinContent(3)
11699 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11700 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,98))
11701 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(44))
11702 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n3n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11703 if(dError>0.)
11704 {
11705 f5pCumulants->SetBinError(44,pow(dError,0.5));
11706 }
11707 } // end of if(...)
11708 } // end of {
e1d101a6 11709 f5pCumulants->SetBinContent(45,f5pCorrelations->GetBinContent(45)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1));
c10259fb 11710 {
11711 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11712 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11713 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11714 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11715 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11716 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11717 Double_t dSumWLinearFive4n1n3n1n1n = 0.; // sum of linear event weights for <4>
11718 Double_t dSumWQuadraticFive4n1n3n1n1n = 0.; // sum of quadratic event weights <4>
11719 Double_t dSpreadFive4n1n3n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11720 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11721 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11722 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11723 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11724 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11725 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11726 dSumWLinearFive4n1n3n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11727 dSumWQuadraticFive4n1n3n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11728 dSpreadFive4n1n3n1n1n = f5pCorrelations->GetBinError(45);
11729 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11730 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11731 pow(dSumWLinearFive4n1n3n1n1n,2.)>dSumWQuadraticFive4n1n3n1n1n)
11732 {
11733 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11734 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11735 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11736 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
11737 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11738 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11739 + pow((pow(dSumWQuadraticFive4n1n3n1n1n,0.5)/dSumWLinearFive4n1n3n1n1n)
11740 * dSpreadFive4n1n3n1n1n*pow(pow(dSumWLinearFive4n1n3n1n1n,2.)/(pow(dSumWLinearFive4n1n3n1n1n,2.)-dSumWQuadraticFive4n1n3n1n1n),0.5),2.)
11741 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)
11742 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11743 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,11))
11744 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(6))
11745 / (dSumWLinearTwo1n1n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11746 - 2.*2.*f3pCorrelations->GetBinContent(6)
11747 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11748 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,99))
11749 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(45))
11750 / (dSumWLinearTwo1n1n*dSumWLinearFive4n1n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11751 - 2.*2.*f2pCorrelations->GetBinContent(1)
11752 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11753 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,99))
11754 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(45))
11755 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n1n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11756 if(dError>0.)
11757 {
11758 f5pCumulants->SetBinError(45,pow(dError,0.5));
11759 }
11760 } // end of if(...)
11761 } // end of {
11762 f5pCumulants->SetBinContent(46,f5pCorrelations->GetBinContent(46));
11763 {
11764 Double_t dSumWLinear = 0.; // sum of linear event weights
11765 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11766 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11767 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11768 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11769 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11770 dSpread = f5pCorrelations->GetBinError(46);
11771 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11772 {
11773 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11774 f5pCumulants->SetBinError(46,dError);
11775 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11776 }
e1d101a6 11777 f5pCumulants->SetBinContent(47,f5pCorrelations->GetBinContent(47)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3));
c10259fb 11778 {
11779 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11780 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11781 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11782 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11783 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11784 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11785 Double_t dSumWLinearFive4n3n3n3n1n = 0.; // sum of linear event weights for <4>
11786 Double_t dSumWQuadraticFive4n3n3n3n1n = 0.; // sum of quadratic event weights <4>
11787 Double_t dSpreadFive4n3n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11788 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11789 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11790 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11791 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11792 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11793 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11794 dSumWLinearFive4n3n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11795 dSumWQuadraticFive4n3n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11796 dSpreadFive4n3n3n3n1n = f5pCorrelations->GetBinError(47);
11797 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11798 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11799 pow(dSumWLinearFive4n3n3n3n1n,2.)>dSumWQuadraticFive4n3n3n3n1n)
11800 {
11801 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11802 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11803 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11804 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
11805 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11806 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11807 + pow((pow(dSumWQuadraticFive4n3n3n3n1n,0.5)/dSumWLinearFive4n3n3n3n1n)
11808 * dSpreadFive4n3n3n3n1n*pow(pow(dSumWLinearFive4n3n3n3n1n,2.)/(pow(dSumWLinearFive4n3n3n3n1n,2.)-dSumWQuadraticFive4n3n3n3n1n),0.5),2.)
11809 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)
11810 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11811 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,11))
11812 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(6))
11813 / (dSumWLinearTwo3n3n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11814 - 2.*2.*f3pCorrelations->GetBinContent(6)
11815 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11816 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,101))
11817 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(47))
11818 / (dSumWLinearTwo3n3n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11819 - 2.*2.*f2pCorrelations->GetBinContent(3)
11820 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11821 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,101))
11822 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(47))
11823 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11824 if(dError>0.)
11825 {
11826 f5pCumulants->SetBinError(47,pow(dError,0.5));
11827 }
11828 } // end of if(...)
11829 } // end of {
11830 f5pCumulants->SetBinContent(48,f5pCorrelations->GetBinContent(48));
11831 {
11832 Double_t dSumWLinear = 0.; // sum of linear event weights
11833 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11834 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11835 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11836 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11837 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11838 dSpread = f5pCorrelations->GetBinError(48);
11839 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11840 {
11841 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11842 f5pCumulants->SetBinError(48,dError);
11843 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11844 }
e1d101a6 11845 f5pCumulants->SetBinContent(49,f5pCorrelations->GetBinContent(49)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4));
c10259fb 11846 {
11847 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
11848 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
11849 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
11850 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11851 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11852 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11853 Double_t dSumWLinearFive4n3n3n3n1n = 0.; // sum of linear event weights for <4>
11854 Double_t dSumWQuadraticFive4n3n3n3n1n = 0.; // sum of quadratic event weights <4>
11855 Double_t dSpreadFive4n3n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11856 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11857 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11858 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
11859 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11860 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11861 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11862 dSumWLinearFive4n3n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11863 dSumWQuadraticFive4n3n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11864 dSpreadFive4n3n3n3n1n = f5pCorrelations->GetBinError(49);
11865 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
11866 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11867 pow(dSumWLinearFive4n3n3n3n1n,2.)>dSumWQuadraticFive4n3n3n3n1n)
11868 {
11869 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11870 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
11871 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
11872 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
11873 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11874 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11875 + pow((pow(dSumWQuadraticFive4n3n3n3n1n,0.5)/dSumWLinearFive4n3n3n3n1n)
11876 * dSpreadFive4n3n3n3n1n*pow(pow(dSumWLinearFive4n3n3n3n1n,2.)/(pow(dSumWLinearFive4n3n3n3n1n,2.)-dSumWQuadraticFive4n3n3n3n1n),0.5),2.)
11877 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4)
11878 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11879 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,11))
11880 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(6))
11881 / (dSumWLinearTwo4n4n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11882 - 2.*2.*f3pCorrelations->GetBinContent(6)
11883 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11884 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,103))
11885 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(49))
11886 / (dSumWLinearTwo4n4n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11887 - 2.*2.*f2pCorrelations->GetBinContent(4)
11888 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11889 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,103))
11890 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(49))
11891 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11892 if(dError>0.)
11893 {
11894 f5pCumulants->SetBinError(49,pow(dError,0.5));
11895 }
11896 } // end of if(...)
11897 } // end of {
11898 f5pCumulants->SetBinContent(50,f5pCorrelations->GetBinContent(50));
11899 {
11900 Double_t dSumWLinear = 0.; // sum of linear event weights
11901 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11902 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11903 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11904 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11905 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11906 dSpread = f5pCorrelations->GetBinError(50);
11907 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11908 {
11909 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11910 f5pCumulants->SetBinError(50,dError);
11911 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11912 }
11913 f5pCumulants->SetBinContent(51,f5pCorrelations->GetBinContent(51));
11914 {
11915 Double_t dSumWLinear = 0.; // sum of linear event weights
11916 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11917 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11918 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11919 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11920 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11921 dSpread = f5pCorrelations->GetBinError(51);
11922 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11923 {
11924 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11925 f5pCumulants->SetBinError(51,dError);
11926 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11927 }
e1d101a6 11928 f5pCumulants->SetBinContent(52,f5pCorrelations->GetBinContent(52)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(2));
c10259fb 11929 {
11930 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11931 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11932 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11933 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
11934 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
11935 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
11936 Double_t dSumWLinearFive5n2n3n2n2n = 0.; // sum of linear event weights for <4>
11937 Double_t dSumWQuadraticFive5n2n3n2n2n = 0.; // sum of quadratic event weights <4>
11938 Double_t dSpreadFive5n2n3n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11939 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11940 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11941 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11942 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11943 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11944 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
11945 dSumWLinearFive5n2n3n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11946 dSumWQuadraticFive5n2n3n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11947 dSpreadFive5n2n3n2n2n = f5pCorrelations->GetBinError(52);
11948 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11949 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
11950 pow(dSumWLinearFive5n2n3n2n2n,2.)>dSumWQuadraticFive5n2n3n2n2n)
11951 {
11952 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
11953 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11954 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11955 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11956 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
11957 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
11958 + pow((pow(dSumWQuadraticFive5n2n3n2n2n,0.5)/dSumWLinearFive5n2n3n2n2n)
11959 * dSpreadFive5n2n3n2n2n*pow(pow(dSumWLinearFive5n2n3n2n2n,2.)/(pow(dSumWLinearFive5n2n3n2n2n,2.)-dSumWQuadraticFive5n2n3n2n2n),0.5),2.)
11960 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(2)
11961 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11962 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,12))
11963 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(7))
11964 / (dSumWLinearTwo2n2n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11965 - 2.*2.*f3pCorrelations->GetBinContent(7)
11966 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11967 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,106))
11968 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(52))
11969 / (dSumWLinearTwo2n2n*dSumWLinearFive5n2n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11970 - 2.*2.*f2pCorrelations->GetBinContent(2)
11971 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11972 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,106))
11973 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(52))
11974 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n2n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11975 if(dError>0.)
11976 {
11977 f5pCumulants->SetBinError(52,pow(dError,0.5));
11978 }
11979 } // end of if(...)
11980 } // end of {
e1d101a6 11981 f5pCumulants->SetBinContent(53,f5pCorrelations->GetBinContent(53)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(3));
c10259fb 11982 {
11983 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11984 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11985 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11986 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
11987 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
11988 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
11989 Double_t dSumWLinearFive5n3n3n3n2n = 0.; // sum of linear event weights for <4>
11990 Double_t dSumWQuadraticFive5n3n3n3n2n = 0.; // sum of quadratic event weights <4>
11991 Double_t dSpreadFive5n3n3n3n2n = 0.; // weighted and biased estimator for sigma of <4>
11992 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11993 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11994 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11995 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11996 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11997 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
11998 dSumWLinearFive5n3n3n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11999 dSumWQuadraticFive5n3n3n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12000 dSpreadFive5n3n3n3n2n = f5pCorrelations->GetBinError(53);
12001 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
12002 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12003 pow(dSumWLinearFive5n3n3n3n2n,2.)>dSumWQuadraticFive5n3n3n3n2n)
12004 {
12005 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12006 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
12007 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
12008 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
12009 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12010 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12011 + pow((pow(dSumWQuadraticFive5n3n3n3n2n,0.5)/dSumWLinearFive5n3n3n3n2n)
12012 * dSpreadFive5n3n3n3n2n*pow(pow(dSumWLinearFive5n3n3n3n2n,2.)/(pow(dSumWLinearFive5n3n3n3n2n,2.)-dSumWQuadraticFive5n3n3n3n2n),0.5),2.)
12013 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(3)
12014 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12015 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,12))
12016 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(7))
12017 / (dSumWLinearTwo3n3n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12018 - 2.*2.*f3pCorrelations->GetBinContent(7)
12019 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12020 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,107))
12021 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(53))
12022 / (dSumWLinearTwo3n3n*dSumWLinearFive5n3n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12023 - 2.*2.*f2pCorrelations->GetBinContent(3)
12024 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12025 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,107))
12026 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(53))
12027 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n3n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12028 if(dError>0.)
12029 {
12030 f5pCumulants->SetBinError(53,pow(dError,0.5));
12031 }
12032 } // end of if(...)
12033 } // end of {
12034 f5pCumulants->SetBinContent(54,f5pCorrelations->GetBinContent(54)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(1));
12035 {
12036 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
12037 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
12038 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
12039 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12040 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12041 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12042 Double_t dSumWLinearFive5n1n4n1n1n = 0.; // sum of linear event weights for <4>
12043 Double_t dSumWQuadraticFive5n1n4n1n1n = 0.; // sum of quadratic event weights <4>
12044 Double_t dSpreadFive5n1n4n1n1n = 0.; // weighted and biased estimator for sigma of <4>
12045 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12046 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12047 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
12048 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12049 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12050 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12051 dSumWLinearFive5n1n4n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12052 dSumWQuadraticFive5n1n4n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12053 dSpreadFive5n1n4n1n1n = f5pCorrelations->GetBinError(54);
12054 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
12055 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12056 pow(dSumWLinearFive5n1n4n1n1n,2.)>dSumWQuadraticFive5n1n4n1n1n)
12057 {
12058 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12059 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
12060 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
12061 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
12062 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12063 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12064 + pow((pow(dSumWQuadraticFive5n1n4n1n1n,0.5)/dSumWLinearFive5n1n4n1n1n)
12065 * dSpreadFive5n1n4n1n1n*pow(pow(dSumWLinearFive5n1n4n1n1n,2.)/(pow(dSumWLinearFive5n1n4n1n1n,2.)-dSumWQuadraticFive5n1n4n1n1n),0.5),2.)
12066 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(1)
12067 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12068 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,13))
12069 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(8))
12070 / (dSumWLinearTwo1n1n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12071 - 2.*2.*f3pCorrelations->GetBinContent(8)
12072 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12073 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,108))
12074 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(54))
12075 / (dSumWLinearTwo1n1n*dSumWLinearFive5n1n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12076 - 2.*2.*f2pCorrelations->GetBinContent(1)
12077 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12078 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,108))
12079 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(54))
12080 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n1n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12081 if(dError>0.)
12082 {
12083 f5pCumulants->SetBinError(54,pow(dError,0.5));
12084 }
12085 } // end of if(...)
12086 } // end of {
12087
12088 f5pCumulants->SetBinContent(55,f5pCorrelations->GetBinContent(55));
12089 {
12090 Double_t dSumWLinear = 0.; // sum of linear event weights
12091 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12092 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12093 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12094 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12095 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12096 dSpread = f5pCorrelations->GetBinError(55);
12097 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12098 {
12099 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12100 f5pCumulants->SetBinError(55,dError);
12101 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12102 }
12103 f5pCumulants->SetBinContent(56,f5pCorrelations->GetBinContent(56)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(4));
12104 {
12105 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12106 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12107 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12108 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12109 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12110 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12111 Double_t dSumWLinearFive5n4n4n4n1n = 0.; // sum of linear event weights for <4>
12112 Double_t dSumWQuadraticFive5n4n4n4n1n = 0.; // sum of quadratic event weights <4>
12113 Double_t dSpreadFive5n4n4n4n1n = 0.; // weighted and biased estimator for sigma of <4>
12114 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12115 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12116 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12117 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12118 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12119 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12120 dSumWLinearFive5n4n4n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12121 dSumWQuadraticFive5n4n4n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12122 dSpreadFive5n4n4n4n1n = f5pCorrelations->GetBinError(56);
12123 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12124 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12125 pow(dSumWLinearFive5n4n4n4n1n,2.)>dSumWQuadraticFive5n4n4n4n1n)
12126 {
12127 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12128 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12129 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12130 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12131 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12132 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12133 + pow((pow(dSumWQuadraticFive5n4n4n4n1n,0.5)/dSumWLinearFive5n4n4n4n1n)
12134 * dSpreadFive5n4n4n4n1n*pow(pow(dSumWLinearFive5n4n4n4n1n,2.)/(pow(dSumWLinearFive5n4n4n4n1n,2.)-dSumWQuadraticFive5n4n4n4n1n),0.5),2.)
12135 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(4)
12136 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12137 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,13))
12138 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(8))
12139 / (dSumWLinearTwo4n4n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12140 - 2.*2.*f3pCorrelations->GetBinContent(8)
12141 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12142 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,110))
12143 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(56))
12144 / (dSumWLinearTwo4n4n*dSumWLinearFive5n4n4n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12145 - 2.*2.*f2pCorrelations->GetBinContent(4)
12146 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12147 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,110))
12148 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(56))
12149 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n4n4n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12150 if(dError>0.)
12151 {
12152 f5pCumulants->SetBinError(56,pow(dError,0.5));
12153 }
12154 } // end of if(...)
12155 } // end of {
12156 f5pCumulants->SetBinContent(57,f5pCorrelations->GetBinContent(57));
12157 {
12158 Double_t dSumWLinear = 0.; // sum of linear event weights
12159 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12160 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12161 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12162 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12163 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12164 dSpread = f5pCorrelations->GetBinError(57);
12165 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12166 {
12167 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12168 f5pCumulants->SetBinError(57,dError);
12169 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12170 }
12171 f5pCumulants->SetBinContent(58,f5pCorrelations->GetBinContent(58));
12172 {
12173 Double_t dSumWLinear = 0.; // sum of linear event weights
12174 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12175 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12176 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12177 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12178 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12179 dSpread = f5pCorrelations->GetBinError(58);
12180 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12181 {
12182 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12183 f5pCumulants->SetBinError(58,dError);
12184 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12185 }
e1d101a6 12186 f5pCumulants->SetBinContent(59,f5pCorrelations->GetBinContent(59)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(5));
c10259fb 12187 {
12188 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12189 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12190 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12191 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12192 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12193 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12194 Double_t dSumWLinearFive5n5n5n3n2n = 0.; // sum of linear event weights for <4>
12195 Double_t dSumWQuadraticFive5n5n5n3n2n = 0.; // sum of quadratic event weights <4>
12196 Double_t dSpreadFive5n5n5n3n2n = 0.; // weighted and biased estimator for sigma of <4>
12197 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12198 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12199 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12200 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12201 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12202 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12203 dSumWLinearFive5n5n5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12204 dSumWQuadraticFive5n5n5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12205 dSpreadFive5n5n5n3n2n = f5pCorrelations->GetBinError(59);
12206 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12207 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12208 pow(dSumWLinearFive5n5n5n3n2n,2.)>dSumWQuadraticFive5n5n5n3n2n)
12209 {
12210 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12211 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12212 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12213 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12214 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12215 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12216 + pow((pow(dSumWQuadraticFive5n5n5n3n2n,0.5)/dSumWLinearFive5n5n5n3n2n)
12217 * dSpreadFive5n5n5n3n2n*pow(pow(dSumWLinearFive5n5n5n3n2n,2.)/(pow(dSumWLinearFive5n5n5n3n2n,2.)-dSumWQuadraticFive5n5n5n3n2n),0.5),2.)
12218 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(5)
12219 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12220 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,12))
12221 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(7))
12222 / (dSumWLinearTwo5n5n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12223 - 2.*2.*f3pCorrelations->GetBinContent(7)
12224 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12225 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,113))
12226 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(59))
12227 / (dSumWLinearTwo5n5n*dSumWLinearFive5n5n5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12228 - 2.*2.*f2pCorrelations->GetBinContent(5)
12229 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12230 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,113))
12231 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(59))
12232 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n5n5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12233 if(dError>0.)
12234 {
12235 f5pCumulants->SetBinError(59,pow(dError,0.5));
12236 }
12237 } // end of if(...)
12238 } // end of {
e1d101a6 12239 f5pCumulants->SetBinContent(60,f5pCorrelations->GetBinContent(60)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(5));
c10259fb 12240 {
12241 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12242 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12243 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12244 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12245 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12246 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12247 Double_t dSumWLinearFive5n5n5n4n1n = 0.; // sum of linear event weights for <4>
12248 Double_t dSumWQuadraticFive5n5n5n4n1n = 0.; // sum of quadratic event weights <4>
12249 Double_t dSpreadFive5n5n5n4n1n = 0.; // weighted and biased estimator for sigma of <4>
12250 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12251 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12252 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12253 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12254 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12255 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12256 dSumWLinearFive5n5n5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12257 dSumWQuadraticFive5n5n5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12258 dSpreadFive5n5n5n4n1n = f5pCorrelations->GetBinError(60);
12259 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12260 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12261 pow(dSumWLinearFive5n5n5n4n1n,2.)>dSumWQuadraticFive5n5n5n4n1n)
12262 {
12263 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12264 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12265 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12266 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12267 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12268 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12269 + pow((pow(dSumWQuadraticFive5n5n5n4n1n,0.5)/dSumWLinearFive5n5n5n4n1n)
12270 * dSpreadFive5n5n5n4n1n*pow(pow(dSumWLinearFive5n5n5n4n1n,2.)/(pow(dSumWLinearFive5n5n5n4n1n,2.)-dSumWQuadraticFive5n5n5n4n1n),0.5),2.)
12271 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(5)
12272 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12273 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,13))
12274 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(8))
12275 / (dSumWLinearTwo5n5n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12276 - 2.*2.*f3pCorrelations->GetBinContent(8)
12277 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12278 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,114))
12279 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(60))
12280 / (dSumWLinearTwo5n5n*dSumWLinearFive5n5n5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12281 - 2.*2.*f2pCorrelations->GetBinContent(5)
12282 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12283 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,114))
12284 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(60))
12285 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n5n5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12286 if(dError>0.)
12287 {
12288 f5pCumulants->SetBinError(60,pow(dError,0.5));
12289 }
12290 } // end of if(...)
12291 } // end of {
12292 f5pCumulants->SetBinContent(61,f5pCorrelations->GetBinContent(61));
12293 {
12294 Double_t dSumWLinear = 0.; // sum of linear event weights
12295 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12296 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12297 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12298 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12299 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12300 dSpread = f5pCorrelations->GetBinError(61);
12301 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12302 {
12303 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12304 f5pCumulants->SetBinError(61,dError);
12305 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12306 }
12307 f5pCumulants->SetBinContent(62,f5pCorrelations->GetBinContent(62));
12308 {
12309 Double_t dSumWLinear = 0.; // sum of linear event weights
12310 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12311 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12312 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12313 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12314 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12315 dSpread = f5pCorrelations->GetBinError(62);
12316 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12317 {
12318 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12319 f5pCumulants->SetBinError(62,dError);
12320 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12321 }
12322 f5pCumulants->SetBinContent(63,f5pCorrelations->GetBinContent(63));
12323 {
12324 Double_t dSumWLinear = 0.; // sum of linear event weights
12325 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12326 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12327 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12328 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12329 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12330 dSpread = f5pCorrelations->GetBinError(63);
12331 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12332 {
12333 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12334 f5pCumulants->SetBinError(63,dError);
12335 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12336 }
e1d101a6 12337 f5pCumulants->SetBinContent(64,f5pCorrelations->GetBinContent(64)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(1));
c10259fb 12338 {
12339 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
12340 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
12341 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
12342 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12343 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12344 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12345 Double_t dSumWLinearFive6n1n5n1n1n = 0.; // sum of linear event weights for <4>
12346 Double_t dSumWQuadraticFive6n1n5n1n1n = 0.; // sum of quadratic event weights <4>
12347 Double_t dSpreadFive6n1n5n1n1n = 0.; // weighted and biased estimator for sigma of <4>
12348 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12349 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12350 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
12351 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12352 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12353 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12354 dSumWLinearFive6n1n5n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12355 dSumWQuadraticFive6n1n5n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12356 dSpreadFive6n1n5n1n1n = f5pCorrelations->GetBinError(64);
12357 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
12358 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12359 pow(dSumWLinearFive6n1n5n1n1n,2.)>dSumWQuadraticFive6n1n5n1n1n)
12360 {
12361 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12362 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
12363 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
12364 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
12365 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12366 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12367 + pow((pow(dSumWQuadraticFive6n1n5n1n1n,0.5)/dSumWLinearFive6n1n5n1n1n)
12368 * dSpreadFive6n1n5n1n1n*pow(pow(dSumWLinearFive6n1n5n1n1n,2.)/(pow(dSumWLinearFive6n1n5n1n1n,2.)-dSumWQuadraticFive6n1n5n1n1n),0.5),2.)
12369 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(1)
12370 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12371 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,15))
12372 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(10))
12373 / (dSumWLinearTwo1n1n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12374 - 2.*2.*f3pCorrelations->GetBinContent(10)
12375 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12376 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,118))
12377 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(64))
12378 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12379 - 2.*2.*f2pCorrelations->GetBinContent(1)
12380 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12381 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,118))
12382 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(64))
12383 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n1n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12384 if(dError>0.)
12385 {
12386 f5pCumulants->SetBinError(64,pow(dError,0.5));
12387 }
12388 } // end of if(...)
12389 } // end of {
e1d101a6 12390 f5pCumulants->SetBinContent(65,f5pCorrelations->GetBinContent(65)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(2));
c10259fb 12391 {
12392 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
12393 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
12394 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
12395 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12396 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12397 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12398 Double_t dSumWLinearFive6n2n4n2n2n = 0.; // sum of linear event weights for <4>
12399 Double_t dSumWQuadraticFive6n2n4n2n2n = 0.; // sum of quadratic event weights <4>
12400 Double_t dSpreadFive6n2n4n2n2n = 0.; // weighted and biased estimator for sigma of <4>
12401 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12402 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12403 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
12404 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12405 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12406 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12407 dSumWLinearFive6n2n4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12408 dSumWQuadraticFive6n2n4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12409 dSpreadFive6n2n4n2n2n = f5pCorrelations->GetBinError(65);
12410 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
12411 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12412 pow(dSumWLinearFive6n2n4n2n2n,2.)>dSumWQuadraticFive6n2n4n2n2n)
12413 {
12414 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12415 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
12416 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
12417 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
12418 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12419 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12420 + pow((pow(dSumWQuadraticFive6n2n4n2n2n,0.5)/dSumWLinearFive6n2n4n2n2n)
12421 * dSpreadFive6n2n4n2n2n*pow(pow(dSumWLinearFive6n2n4n2n2n,2.)/(pow(dSumWLinearFive6n2n4n2n2n,2.)-dSumWQuadraticFive6n2n4n2n2n),0.5),2.)
12422 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(2)
12423 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12424 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,14))
12425 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(9))
12426 / (dSumWLinearTwo2n2n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12427 - 2.*2.*f3pCorrelations->GetBinContent(9)
12428 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12429 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,119))
12430 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(65))
12431 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12432 - 2.*2.*f2pCorrelations->GetBinContent(2)
12433 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12434 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,119))
12435 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(65))
12436 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n2n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12437 if(dError>0.)
12438 {
12439 f5pCumulants->SetBinError(65,pow(dError,0.5));
12440 }
12441 } // end of if(...)
12442 } // end of {
12443 f5pCumulants->SetBinContent(66,f5pCorrelations->GetBinContent(66)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(4));
12444 {
12445 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12446 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12447 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12448 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12449 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12450 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12451 Double_t dSumWLinearFive6n4n4n4n2n = 0.; // sum of linear event weights for <4>
12452 Double_t dSumWQuadraticFive6n4n4n4n2n = 0.; // sum of quadratic event weights <4>
12453 Double_t dSpreadFive6n4n4n4n2n = 0.; // weighted and biased estimator for sigma of <4>
12454 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12455 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12456 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12457 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12458 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12459 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12460 dSumWLinearFive6n4n4n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12461 dSumWQuadraticFive6n4n4n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12462 dSpreadFive6n4n4n4n2n = f5pCorrelations->GetBinError(66);
12463 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12464 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12465 pow(dSumWLinearFive6n4n4n4n2n,2.)>dSumWQuadraticFive6n4n4n4n2n)
12466 {
12467 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12468 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12469 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12470 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12471 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12472 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12473 + pow((pow(dSumWQuadraticFive6n4n4n4n2n,0.5)/dSumWLinearFive6n4n4n4n2n)
12474 * dSpreadFive6n4n4n4n2n*pow(pow(dSumWLinearFive6n4n4n4n2n,2.)/(pow(dSumWLinearFive6n4n4n4n2n,2.)-dSumWQuadraticFive6n4n4n4n2n),0.5),2.)
12475 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(4)
12476 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12477 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,14))
12478 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(9))
12479 / (dSumWLinearTwo4n4n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12480 - 2.*2.*f3pCorrelations->GetBinContent(9)
12481 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12482 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,120))
12483 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(66))
12484 / (dSumWLinearTwo4n4n*dSumWLinearFive6n4n4n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12485 - 2.*2.*f2pCorrelations->GetBinContent(4)
12486 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12487 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,120))
12488 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(66))
12489 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n4n4n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12490 if(dError>0.)
12491 {
12492 f5pCumulants->SetBinError(66,pow(dError,0.5));
12493 }
12494 } // end of if(...)
12495 } // end of {
12496 f5pCumulants->SetBinContent(67,f5pCorrelations->GetBinContent(67));
12497 {
12498 Double_t dSumWLinear = 0.; // sum of linear event weights
12499 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12500 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12501 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12502 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12503 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12504 dSpread = f5pCorrelations->GetBinError(67);
12505 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12506 {
12507 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12508 f5pCumulants->SetBinError(67,dError);
12509 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12510 }
e1d101a6 12511 f5pCumulants->SetBinContent(68,f5pCorrelations->GetBinContent(68)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(5));
c10259fb 12512 {
12513 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12514 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12515 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12516 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12517 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12518 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12519 Double_t dSumWLinearFive6n5n5n5n1n = 0.; // sum of linear event weights for <4>
12520 Double_t dSumWQuadraticFive6n5n5n5n1n = 0.; // sum of quadratic event weights <4>
12521 Double_t dSpreadFive6n5n5n5n1n = 0.; // weighted and biased estimator for sigma of <4>
12522 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12523 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12524 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12525 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12526 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12527 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12528 dSumWLinearFive6n5n5n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12529 dSumWQuadraticFive6n5n5n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12530 dSpreadFive6n5n5n5n1n = f5pCorrelations->GetBinError(68);
12531 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12532 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12533 pow(dSumWLinearFive6n5n5n5n1n,2.)>dSumWQuadraticFive6n5n5n5n1n)
12534 {
12535 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12536 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12537 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12538 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12539 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12540 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12541 + pow((pow(dSumWQuadraticFive6n5n5n5n1n,0.5)/dSumWLinearFive6n5n5n5n1n)
12542 * dSpreadFive6n5n5n5n1n*pow(pow(dSumWLinearFive6n5n5n5n1n,2.)/(pow(dSumWLinearFive6n5n5n5n1n,2.)-dSumWQuadraticFive6n5n5n5n1n),0.5),2.)
12543 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(5)
12544 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12545 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,15))
12546 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(10))
12547 / (dSumWLinearTwo5n5n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12548 - 2.*2.*f3pCorrelations->GetBinContent(10)
12549 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12550 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,122))
12551 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(68))
12552 / (dSumWLinearTwo5n5n*dSumWLinearFive6n5n5n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12553 - 2.*2.*f2pCorrelations->GetBinContent(5)
12554 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12555 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,122))
12556 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(68))
12557 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n5n5n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12558 if(dError>0.)
12559 {
12560 f5pCumulants->SetBinError(68,pow(dError,0.5));
12561 }
12562 } // end of if(...)
12563 } // end of {
12564 f5pCumulants->SetBinContent(69,f5pCorrelations->GetBinContent(69));
12565 {
12566 Double_t dSumWLinear = 0.; // sum of linear event weights
12567 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12568 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12569 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12570 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12571 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12572 dSpread = f5pCorrelations->GetBinError(69);
12573 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12574 {
12575 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12576 f5pCumulants->SetBinError(69,dError);
12577 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12578 }
e1d101a6 12579 f5pCumulants->SetBinContent(70,f5pCorrelations->GetBinContent(70)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(6));
c10259fb 12580 {
12581 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
12582 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
12583 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
12584 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12585 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12586 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12587 Double_t dSumWLinearFive6n6n6n4n2n = 0.; // sum of linear event weights for <4>
12588 Double_t dSumWQuadraticFive6n6n6n4n2n = 0.; // sum of quadratic event weights <4>
12589 Double_t dSpreadFive6n6n6n4n2n = 0.; // weighted and biased estimator for sigma of <4>
12590 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12591 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12592 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
12593 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12594 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12595 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12596 dSumWLinearFive6n6n6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12597 dSumWQuadraticFive6n6n6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12598 dSpreadFive6n6n6n4n2n = f5pCorrelations->GetBinError(70);
12599 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
12600 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12601 pow(dSumWLinearFive6n6n6n4n2n,2.)>dSumWQuadraticFive6n6n6n4n2n)
12602 {
12603 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12604 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
12605 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
12606 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
12607 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12608 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12609 + pow((pow(dSumWQuadraticFive6n6n6n4n2n,0.5)/dSumWLinearFive6n6n6n4n2n)
12610 * dSpreadFive6n6n6n4n2n*pow(pow(dSumWLinearFive6n6n6n4n2n,2.)/(pow(dSumWLinearFive6n6n6n4n2n,2.)-dSumWQuadraticFive6n6n6n4n2n),0.5),2.)
12611 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(6)
12612 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12613 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,14))
12614 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(9))
12615 / (dSumWLinearTwo6n6n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12616 - 2.*2.*f3pCorrelations->GetBinContent(9)
12617 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12618 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,124))
12619 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(70))
12620 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12621 - 2.*2.*f2pCorrelations->GetBinContent(6)
12622 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12623 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,124))
12624 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(70))
12625 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n6n6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12626 if(dError>0.)
12627 {
12628 f5pCumulants->SetBinError(70,pow(dError,0.5));
12629 }
12630 } // end of if(...)
12631 } // end of {
12632
12633
12634
12635
12636
e1d101a6 12637 f5pCumulants->SetBinContent(71,f5pCorrelations->GetBinContent(71)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(6));
c10259fb 12638 {
12639 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
12640 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
12641 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
12642 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12643 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12644 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12645 Double_t dSumWLinearFive6n6n6n5n1n = 0.; // sum of linear event weights for <4>
12646 Double_t dSumWQuadraticFive6n6n6n5n1n = 0.; // sum of quadratic event weights <4>
12647 Double_t dSpreadFive6n6n6n5n1n = 0.; // weighted and biased estimator for sigma of <4>
12648 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12649 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12650 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
12651 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12652 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12653 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12654 dSumWLinearFive6n6n6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12655 dSumWQuadraticFive6n6n6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12656 dSpreadFive6n6n6n5n1n = f5pCorrelations->GetBinError(71);
12657 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
12658 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12659 pow(dSumWLinearFive6n6n6n5n1n,2.)>dSumWQuadraticFive6n6n6n5n1n)
12660 {
12661 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12662 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
12663 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
12664 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
12665 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12666 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12667 + pow((pow(dSumWQuadraticFive6n6n6n5n1n,0.5)/dSumWLinearFive6n6n6n5n1n)
12668 * dSpreadFive6n6n6n5n1n*pow(pow(dSumWLinearFive6n6n6n5n1n,2.)/(pow(dSumWLinearFive6n6n6n5n1n,2.)-dSumWQuadraticFive6n6n6n5n1n),0.5),2.)
12669 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(6)
12670 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12671 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,15))
12672 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(10))
12673 / (dSumWLinearTwo6n6n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12674 - 2.*2.*f3pCorrelations->GetBinContent(10)
12675 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12676 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,125))
12677 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(71))
12678 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12679 - 2.*2.*f2pCorrelations->GetBinContent(6)
12680 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12681 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,125))
12682 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(71))
12683 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n6n6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12684 if(dError>0.)
12685 {
12686 f5pCumulants->SetBinError(71,pow(dError,0.5));
12687 }
12688 } // end of if(...)
12689 } // end of {
e1d101a6 12690 // d3) "Four distinct harmonics":
12691 for(Int_t b=73;b<=83;b++)
12692 {
12693 f5pCumulants->SetBinContent(b,f5pCorrelations->GetBinContent(b));
c10259fb 12694 Double_t dSumWLinear = 0.; // sum of linear event weights
12695 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12696 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12697 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12698 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12699 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12700 dSpread = f5pCorrelations->GetBinError(b);
12701 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12702 {
12703 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12704 f5pCumulants->SetBinError(b,dError);
12705 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 12706 } // end of for(Int_t b=73;b<=83;b++)
12707 // d4) "Five distinct harmonics":
12708 for(Int_t b=85;b<=87;b++)
12709 {
12710 f5pCumulants->SetBinContent(b,f5pCorrelations->GetBinContent(b));
c10259fb 12711 Double_t dSumWLinear = 0.; // sum of linear event weights
12712 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12713 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12714 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12715 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12716 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12717 dSpread = f5pCorrelations->GetBinError(b);
12718 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12719 {
12720 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12721 f5pCumulants->SetBinError(b,dError);
12722 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 12723 } // end of for(Int_t b=85;b<=87;b++)
12724
12725} // end of void AliFlowAnalysisWithQCumulants::CalculateCumulantsMixedHarmonics()
12726
12727//===================================================================================================================
489d5531 12728
e5834fcb 12729void AliFlowAnalysisWithQCumulants::StorePhiDistributionForOneEvent(AliFlowEventSimple *anEvent)
12730{
12731 // Store phi distribution for one event to illustrate flow.
12732
12733 if(fPhiDistributionForOneEvent->GetEntries()>0){return;} // store only phi distribution for one event
12734
12735 Double_t vMin = fPhiDistributionForOneEventSettings[0];
12736 Double_t vMax = fPhiDistributionForOneEventSettings[1];
12737 Double_t refMultMin = fPhiDistributionForOneEventSettings[2];
12738 Double_t refMultMax = fPhiDistributionForOneEventSettings[3];
12739
12740 Double_t vEBE = 0.;
12741 Double_t cumulant4thEBE = fIntFlowCorrelationsEBE->GetBinContent(2)-2.*pow(fIntFlowCorrelationsEBE->GetBinContent(1),2.);
12742 if(cumulant4thEBE<0.)
12743 {
12744 vEBE = pow(-1.*cumulant4thEBE,0.25);
12745 if((vEBE>vMin && vEBE<vMax) && (fReferenceMultiplicityEBE>refMultMin && fReferenceMultiplicityEBE<refMultMax))
12746 {
3958eee6 12747 fPhiDistributionForOneEvent->SetTitle(Form("v_{%i} = %f",fHarmonic,vEBE));
e5834fcb 12748 for(Int_t p=0;p<anEvent->NumberOfTracks();p++)
12749 {
12750 if(anEvent->GetTrack(p)->InRPSelection())
12751 {
12752 fPhiDistributionForOneEvent->Fill(anEvent->GetTrack(p)->Phi());
12753 }
12754 } // end of for(Int_t p=0;p<anEvent->NumberOfTracks();p++)
3958eee6 12755 } else
12756 {
12757 fPhiDistributionForOneEvent->SetTitle(Form("v_{%i} = %f, out of specified boundaries",fHarmonic,vEBE));
12758 }
12759
e5834fcb 12760 } // end of if(cumulant4thEBE<0.)
12761
12762} // end of void AliFlowAnalysisWithQCumulants::StorePhiDistributionForOneEvent(AliFlowEventSimple *anEvent)
12763
e1d101a6 12764//===================================================================================================================
489d5531 12765
12766void AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrelations()
12767{
0328db2d 12768 // Calculate averages of products of correlations for integrated flow.
489d5531 12769
2001bc3a 12770 // multiplicity:
1268c371 12771 Double_t dMult = (*fSpk)(0,0);
2001bc3a 12772
489d5531 12773 Int_t counter = 0;
12774
12775 for(Int_t ci1=1;ci1<4;ci1++)
12776 {
12777 for(Int_t ci2=ci1+1;ci2<=4;ci2++)
12778 {
ff70ca91 12779 fIntFlowProductOfCorrelationsPro->Fill(0.5+counter,
12780 fIntFlowCorrelationsEBE->GetBinContent(ci1)*
12781 fIntFlowCorrelationsEBE->GetBinContent(ci2),
12782 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
12783 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
12784 // products versus multiplicity: // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 12785 if(fCalculateCumulantsVsM)
12786 {
12787 fIntFlowProductOfCorrelationsVsMPro[counter]->Fill(dMult+0.5, // to be improved: dMult => sum of weights ?
12788 fIntFlowCorrelationsEBE->GetBinContent(ci1)*
12789 fIntFlowCorrelationsEBE->GetBinContent(ci2),
12790 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
12791 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
12792 } // end of if(fCalculateCumulantsVsM)
ff70ca91 12793 counter++;
489d5531 12794 }
12795 }
12796
12797} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrelations()
12798
12799
e1d101a6 12800//=======================================================================================================================
489d5531 12801
12802
0328db2d 12803void AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrectionTermsForNUA()
12804{
12805 // Calculate averages of products of correction terms for NUA.
12806
12807 // a) Binning of fIntFlowProductOfCorrectionTermsForNUAPro is organized as follows:
12808 // 1st bin: <<2><cos(phi)>>
12809 // 2nd bin: <<2><sin(phi)>>
12810 // 3rd bin: <<cos(phi)><sin(phi)>>
12811 // 4th bin: <<2><cos(phi1+phi2)>>
12812 // 5th bin: <<2><sin(phi1+phi2)>>
12813 // 6th bin: <<2><cos(phi1-phi2-phi3)>>
12814 // 7th bin: <<2><sin(phi1-phi2-phi3)>>
12815 // 8th bin: <<4><cos(phi1)>>
12816 // 9th bin: <<4><sin(phi1)>>
12817 // 10th bin: <<4><cos(phi1+phi2)>>
12818 // 11th bin: <<4><sin(phi1+phi2)>>
12819 // 12th bin: <<4><cos(phi1-phi2-phi3)>>
12820 // 13th bin: <<4><sin(phi1-phi2-phi3)>>
12821 // 14th bin: <<cos(phi1)><cos(phi1+phi2)>>
12822 // 15th bin: <<cos(phi1)><sin(phi1+phi2)>>
12823 // 16th bin: <<cos(phi1)><cos(phi1-phi2-phi3)>>
12824 // 17th bin: <<cos(phi1)><sin(phi1-phi2-phi3)>>
12825 // 18th bin: <<sin(phi1)><cos(phi1+phi2)>>
12826 // 19th bin: <<sin(phi1)><sin(phi1+phi2)>>
12827 // 20th bin: <<sin(phi1)><cos(phi1-phi2-phi3)>>
12828 // 21st bin: <<sin(phi1)><sin(phi1-phi2-phi3)>>
12829 // 22nd bin: <<cos(phi1+phi2)><sin(phi1+phi2)>>
12830 // 23rd bin: <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>
12831 // 24th bin: <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>
12832 // 25th bin: <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>
12833 // 26th bin: <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>
12834 // 27th bin: <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>
12835
12836 // <<2><cos(phi)>>:
12837 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(0.5,
12838 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1),
12839 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12840 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
12841 // <<2><sin(phi)>>:
12842 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(1.5,
12843 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
12844 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12845 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
12846 // <<cos(phi)><sin(phi)>>:
12847 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(2.5,
12848 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
12849 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
12850 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
12851 // <<2><cos(phi1+phi2)>>:
12852 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(3.5,
12853 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
12854 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12855 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
12856 // <<2><sin(phi1+phi2)>>:
12857 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(4.5,
12858 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
12859 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12860 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
12861 // <<2><cos(phi1-phi2-phi3)>>:
12862 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(5.5,
12863 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
12864 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12865 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
12866 // <<2><sin(phi1-phi2-phi3)>>:
12867 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(6.5,
12868 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
12869 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12870 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
12871 // <<4><cos(phi1)>>:
12872 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(7.5,
12873 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1),
12874 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
12875 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
12876 // <<4><sin(phi1)>>:
12877 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(8.5,
12878 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
12879 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
12880 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
12881 // <<4><cos(phi1+phi2)>>:
12882 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(9.5,
12883 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
12884 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
12885 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
12886 // <<4><sin(phi1+phi2)>>:
12887 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(10.5,
12888 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
12889 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
12890 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
12891 // <<4><cos(phi1-phi2-phi3)>>:
12892 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(11.5,
12893 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
12894 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
12895 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
12896 // <<4><sin(phi1-phi2-phi3)>>:
12897 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(12.5,
12898 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
12899 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
12900 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
12901 // <<cos(phi1)><cos(phi1+phi2)>>:
12902 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(13.5,
12903 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
12904 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
12905 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
12906 // <<cos(phi1)><sin(phi1+phi2)>>:
12907 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(14.5,
12908 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
12909 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
12910 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
12911 // <<cos(phi1)><cos(phi1-phi2-phi3)>>:
12912 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(15.5,
12913 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
12914 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
12915 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
12916 // <<cos(phi1)><sin(phi1-phi2-phi3)>>:
12917 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(16.5,
12918 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
12919 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
12920 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
12921 // <<sin(phi1)><cos(phi1+phi2)>>:
12922 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(17.5,
12923 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
12924 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
12925 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
12926 // <<sin(phi1)><sin(phi1+phi2)>>:
12927 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(18.5,
12928 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
12929 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
12930 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
12931 // <<sin(phi1)><cos(phi1-phi2-phi3)>>:
12932 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(19.5,
12933 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
12934 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
12935 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
12936 // <<sin(phi1)><sin(phi1-phi2-phi3)>>:
12937 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(20.5,
12938 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
12939 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
12940 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
12941 // <<cos(phi1+phi2)><sin(phi1+phi2)>>:
12942 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(21.5,
12943 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
12944 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
12945 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
12946 // <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>:
12947 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(22.5,
12948 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
12949 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
12950 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
12951 // <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>:
12952 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(23.5,
12953 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
12954 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
12955 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
12956 // <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>:
12957 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(24.5,
12958 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
12959 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)
12960 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
12961 // <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>:
12962 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(25.5,
12963 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
12964 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)
12965 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
12966 // <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>:
12967 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(26.5,
12968 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
12969 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)
12970 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
12971
12972} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrectionTermsForNUA()
12973
e1d101a6 12974//=======================================================================================================================
0328db2d 12975
489d5531 12976void AliFlowAnalysisWithQCumulants::CalculateCovariancesIntFlow()
12977{
12978 // a) Calculate unbiased estimators Cov(<2>,<4>), Cov(<2>,<6>), Cov(<2>,<8>), Cov(<4>,<6>), Cov(<4>,<8>) and Cov(<6>,<8>)
12979 // for covariances V_(<2>,<4>), V_(<2>,<6>), V_(<2>,<8>), V_(<4>,<6>), V_(<4>,<8>) and V_(<6>,<8>).
12980 // b) Store in histogram fIntFlowCovariances for instance the following:
12981 //
12982 // 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)]
12983 //
12984 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<4>} is event weight for <4>.
12985 // c) Binning of fIntFlowCovariances is organized as follows:
12986 //
12987 // 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)]
12988 // 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)]
12989 // 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)]
12990 // 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)]
12991 // 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)]
12992 // 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 12993 //
489d5531 12994
b3dacf6b 12995 // Average 2-, 4-, 6- and 8-particle correlations for all events:
489d5531 12996 Double_t correlation[4] = {0.};
12997 for(Int_t ci=0;ci<4;ci++)
12998 {
12999 correlation[ci] = fIntFlowCorrelationsPro->GetBinContent(ci+1);
13000 }
b3dacf6b 13001 // Average products of 2-, 4-, 6- and 8-particle correlations:
489d5531 13002 Double_t productOfCorrelations[4][4] = {{0.}};
13003 Int_t productOfCorrelationsLabel = 1;
b3dacf6b 13004 // Denominators in the expressions for the unbiased estimator for covariance:
489d5531 13005 Double_t denominator[4][4] = {{0.}};
13006 Int_t sumOfProductOfEventWeightsLabel1 = 1;
b3dacf6b 13007 // Weight dependent prefactor which multiply unbiased estimators for covariances:
489d5531 13008 Double_t wPrefactor[4][4] = {{0.}};
13009 Int_t sumOfProductOfEventWeightsLabel2 = 1;
13010 for(Int_t c1=0;c1<4;c1++)
13011 {
13012 for(Int_t c2=c1+1;c2<4;c2++)
13013 {
13014 productOfCorrelations[c1][c2] = fIntFlowProductOfCorrelationsPro->GetBinContent(productOfCorrelationsLabel);
b3dacf6b 13015 if(TMath::Abs(fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)) > 1.e-44 && TMath::Abs(fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1)) > 1.e-44)
13016 {
13017 denominator[c1][c2] = 1.-(fIntFlowSumOfProductOfEventWeights->GetBinContent(sumOfProductOfEventWeightsLabel1))
13018 / (fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)
13019 * fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1));
13020 wPrefactor[c1][c2] = fIntFlowSumOfProductOfEventWeights->GetBinContent(sumOfProductOfEventWeightsLabel2)
13021 / (fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)
13022 * fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1));
489d5531 13023 }
b3dacf6b 13024 productOfCorrelationsLabel++; // to be improved - do I need here all 3 counters?
489d5531 13025 sumOfProductOfEventWeightsLabel1++;
13026 sumOfProductOfEventWeightsLabel2++;
b3dacf6b 13027 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13028 } // end of for(Int_t c1=0;c1<4;c1++)
489d5531 13029
489d5531 13030 Int_t covarianceLabel = 1;
13031 for(Int_t c1=0;c1<4;c1++)
13032 {
13033 for(Int_t c2=c1+1;c2<4;c2++)
13034 {
b3dacf6b 13035 if(TMath::Abs(denominator[c1][c2]) > 1.e-44)
489d5531 13036 {
b3dacf6b 13037 // Covariances:
489d5531 13038 Double_t cov = (productOfCorrelations[c1][c2]-correlation[c1]*correlation[c2])/denominator[c1][c2];
b3dacf6b 13039 // Covariances multiplied with weight dependent prefactor:
489d5531 13040 Double_t wCov = cov * wPrefactor[c1][c2];
13041 fIntFlowCovariances->SetBinContent(covarianceLabel,wCov);
13042 }
13043 covarianceLabel++;
b3dacf6b 13044 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13045 } // end of for(Int_t c1=0;c1<4;c1++)
489d5531 13046
b3dacf6b 13047 // Versus multiplicity:
13048 if(!fCalculateCumulantsVsM){return;}
9da1a4f3 13049 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
13050 for(Int_t b=1;b<=nBins;b++)
13051 {
b3dacf6b 13052 // Average 2-, 4-, 6- and 8-particle correlations for all events:
9da1a4f3 13053 Double_t correlationVsM[4] = {0.};
13054 for(Int_t ci=0;ci<4;ci++)
13055 {
13056 correlationVsM[ci] = fIntFlowCorrelationsVsMPro[ci]->GetBinContent(b);
13057 } // end of for(Int_t ci=0;ci<4;ci++)
b3dacf6b 13058 // Average products of 2-, 4-, 6- and 8-particle correlations:
9da1a4f3 13059 Double_t productOfCorrelationsVsM[4][4] = {{0.}};
13060 Int_t productOfCorrelationsLabelVsM = 1;
b3dacf6b 13061 // Denominators in the expressions for the unbiased estimator for covariance:
9da1a4f3 13062 Double_t denominatorVsM[4][4] = {{0.}};
13063 Int_t sumOfProductOfEventWeightsLabel1VsM = 1;
b3dacf6b 13064 // Weight dependent prefactor which multiply unbiased estimators for covariances:
9da1a4f3 13065 Double_t wPrefactorVsM[4][4] = {{0.}};
13066 Int_t sumOfProductOfEventWeightsLabel2VsM = 1;
13067 for(Int_t c1=0;c1<4;c1++)
13068 {
13069 for(Int_t c2=c1+1;c2<4;c2++)
13070 {
13071 productOfCorrelationsVsM[c1][c2] = fIntFlowProductOfCorrelationsVsMPro[productOfCorrelationsLabelVsM-1]->GetBinContent(b);
b3dacf6b 13072 if(TMath::Abs(fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)) > 1.e-44 && TMath::Abs(fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b)) > 1.e-44)
13073 {
13074 denominatorVsM[c1][c2] = 1.-(fIntFlowSumOfProductOfEventWeightsVsM[sumOfProductOfEventWeightsLabel1VsM-1]->GetBinContent(b))
13075 / (fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)
13076 * fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b));
13077 wPrefactorVsM[c1][c2] = fIntFlowSumOfProductOfEventWeightsVsM[sumOfProductOfEventWeightsLabel2VsM-1]->GetBinContent(b)
13078 / (fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)
13079 * fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b));
9da1a4f3 13080 }
13081 productOfCorrelationsLabelVsM++;
13082 sumOfProductOfEventWeightsLabel1VsM++;
13083 sumOfProductOfEventWeightsLabel2VsM++;
13084 } // end of for(Int_t c1=0;c1<4;c1++)
13085 } // end of for(Int_t c2=c1+1;c2<4;c2++)
b3dacf6b 13086
9da1a4f3 13087 Int_t covarianceLabelVsM = 1;
13088 for(Int_t c1=0;c1<4;c1++)
13089 {
13090 for(Int_t c2=c1+1;c2<4;c2++)
13091 {
b3dacf6b 13092 if(TMath::Abs(denominatorVsM[c1][c2]) > 1.e-44)
9da1a4f3 13093 {
b3dacf6b 13094 // Covariances:
9da1a4f3 13095 Double_t covVsM = (productOfCorrelationsVsM[c1][c2]-correlationVsM[c1]*correlationVsM[c2])/denominatorVsM[c1][c2];
b3dacf6b 13096 // Covariances multiplied with weight dependent prefactor:
9da1a4f3 13097 Double_t wCovVsM = covVsM * wPrefactorVsM[c1][c2];
13098 fIntFlowCovariancesVsM[covarianceLabelVsM-1]->SetBinContent(b,wCovVsM);
13099 }
13100 covarianceLabelVsM++;
b3dacf6b 13101 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13102 } // end of for(Int_t c1=0;c1<4;c1++)
9da1a4f3 13103 } // end of for(Int_t b=1;b<=nBins;b++)
13104
489d5531 13105} // end of AliFlowAnalysisWithQCumulants::CalculateCovariancesIntFlow()
13106
e1d101a6 13107//=======================================================================================================================
489d5531 13108
0328db2d 13109void AliFlowAnalysisWithQCumulants::CalculateCovariancesNUAIntFlow()
13110{
13111 // a) Calculate unbiased estimators Cov(*,*) for true covariances V_(*,*) for NUA terms.
13112 // b) Store in histogram fIntFlowCovariancesNUA for instance the following:
13113 //
13114 // 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)]
13115 //
13116 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<cos(phi)>} is event weight for <cos(phi)>.
13117 // c) Binning of fIntFlowCovariancesNUA is organized as follows:
13118 //
13119 // 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)]
13120 // 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)]
13121 // 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)]
13122 // ...
13123
13124 // Cov(<2>,<cos(phi)>):
13125 Double_t product1 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(1); // <<2><cos(phi)>>
13126 Double_t term1st1 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13127 Double_t term2nd1 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi)>>
13128 Double_t sumOfW1st1 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13129 Double_t sumOfW2nd1 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi)>}
13130 Double_t sumOfWW1 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(1); // W_{<2>} * W_{<cos(phi)>}
13131 // numerator in the expression for the the unbiased estimator for covariance:
13132 Double_t numerator1 = product1 - term1st1*term2nd1;
13133 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13134 Double_t denominator1 = 0.;
13135 if(TMath::Abs(sumOfW1st1*sumOfW2nd1)>0.)
13136 {
13137 denominator1 = 1.-sumOfWW1/(sumOfW1st1*sumOfW2nd1);
13138 if(TMath::Abs(denominator1)>0.)
13139 {
13140 // covariance:
13141 Double_t covariance1 = numerator1/denominator1;
13142 // weight dependent prefactor for covariance:
13143 Double_t wPrefactor1 = sumOfWW1/(sumOfW1st1*sumOfW2nd1);
13144 // finally, store "weighted" covariance:
13145 fIntFlowCovariancesNUA->SetBinContent(1,wPrefactor1*covariance1);
13146 } // end of if(TMath::Abs(denominator)>0.)
13147 } // end of if(TMath::Abs(sumOfW1st1*sumOfW2nd1)>0.)
13148
0328db2d 13149 // Cov(<2>,<sin(phi)>):
13150 Double_t product2 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(2); // <<2><sin(phi)>>
13151 Double_t term1st2 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13152 Double_t term2nd2 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi)>>
13153 Double_t sumOfW1st2 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13154 Double_t sumOfW2nd2 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi)>}
13155 Double_t sumOfWW2 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(2); // W_{<2>} * W_{<sin(phi)>}
13156 // numerator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13157 Double_t numerator2 = product2 - term1st2*term2nd2;
0328db2d 13158 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13159 Double_t denominator2 = 0.;
13160 if(TMath::Abs(sumOfW1st2*sumOfW2nd2)>0.)
13161 {
13162 denominator2 = 1.-sumOfWW2/(sumOfW1st2*sumOfW2nd2);
13163 if(TMath::Abs(denominator2)>0.)
13164 {
13165 // covariance:
13166 Double_t covariance2 = numerator2/denominator2;
13167 // weight dependent prefactor for covariance:
13168 Double_t wPrefactor2 = sumOfWW2/(sumOfW1st2*sumOfW2nd2);
13169 // finally, store "weighted" covariance:
13170 fIntFlowCovariancesNUA->SetBinContent(2,wPrefactor2*covariance2);
13171 } // end of if(TMath::Abs(denominator2)>0.)
13172 } // end of if(TMath::Abs(sumOfW1st2*sumOfW2nd2)>0.)
0328db2d 13173
13174 // Cov(<cos(phi)>,<sin(phi)>):
13175 Double_t product3 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(3); // <<cos(phi)><sin(phi)>>
13176 Double_t term1st3 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi)>>
13177 Double_t term2nd3 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi)>>
13178 Double_t sumOfW1st3 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi)>}
13179 Double_t sumOfW2nd3 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi)>}
13180 Double_t sumOfWW3 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(3); // W_{<cos(phi)>} * W_{<sin(phi)>}
13181 // numerator in the expression for the the unbiased estimator for covariance:
13182 Double_t numerator3 = product3 - term1st3*term2nd3;
13183 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13184 Double_t denominator3 = 0;
13185 if(TMath::Abs(sumOfW1st3*sumOfW2nd3)>0.)
13186 {
13187 denominator3 = 1.-sumOfWW3/(sumOfW1st3*sumOfW2nd3);
13188 if(TMath::Abs(denominator3)>0.)
13189 {
13190 // covariance:
13191 Double_t covariance3 = numerator3/denominator3;
13192 // weight dependent prefactor for covariance:
13193 Double_t wPrefactor3 = sumOfWW3/(sumOfW1st3*sumOfW2nd3);
13194 // finally, store "weighted" covariance:
13195 fIntFlowCovariancesNUA->SetBinContent(3,wPrefactor3*covariance3);
13196 } // end of if(TMath::Abs(denominator3)>0.)
13197 } // end of if(TMath::Abs(sumOfW1st3*sumOfW2nd3)>0.)
0328db2d 13198
13199 // Cov(<2>,<cos(phi1+phi2)>):
13200 Double_t product4 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(4); // <<2><cos(phi1+phi2)>>
13201 Double_t term1st4 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13202 Double_t term2nd4 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13203 Double_t sumOfW1st4 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13204 Double_t sumOfW2nd4 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13205 Double_t sumOfWW4 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(4); // W_{<2>} * W_{<cos(phi1+phi2)>}
13206 // numerator in the expression for the the unbiased estimator for covariance:
13207 Double_t numerator4 = product4 - term1st4*term2nd4;
13208 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13209 Double_t denominator4 = 0.;
13210 if(TMath::Abs(sumOfW1st4*sumOfW2nd4)>0.)
13211 {
13212 denominator4 = 1.-sumOfWW4/(sumOfW1st4*sumOfW2nd4);
13213 if(TMath::Abs(denominator4)>0.)
13214 {
13215 // covariance:
13216 Double_t covariance4 = numerator4/denominator4;
13217 // weight dependent prefactor for covariance:
13218 Double_t wPrefactor4 = sumOfWW4/(sumOfW1st4*sumOfW2nd4);
13219 // finally, store "weighted" covariance:
13220 fIntFlowCovariancesNUA->SetBinContent(4,wPrefactor4*covariance4);
13221 } // end of if(TMath::Abs(denominator4)>0.)
13222 } // end of if(TMath::Abs(sumOfW1st4*sumOfW2nd4)>0.)
13223
0328db2d 13224 // Cov(<2>,<sin(phi1+phi2)>):
13225 Double_t product5 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(5); // <<2><sin(phi1+phi2)>>
13226 Double_t term1st5 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13227 Double_t term2nd5 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13228 Double_t sumOfW1st5 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13229 Double_t sumOfW2nd5 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13230 Double_t sumOfWW5 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(5); // W_{<2>} * W_{<sin(phi1+phi2)>}
13231 // numerator in the expression for the the unbiased estimator for covariance:
13232 Double_t numerator5 = product5 - term1st5*term2nd5;
13233 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13234 Double_t denominator5 = 0.;
13235 if(TMath::Abs(sumOfW1st5*sumOfW2nd5)>0.)
13236 {
13237 denominator5 = 1.-sumOfWW5/(sumOfW1st5*sumOfW2nd5);
13238 if(TMath::Abs(denominator5)>0.)
13239 {
13240 // covariance:
13241 Double_t covariance5 = numerator5/denominator5;
13242 // weight dependent prefactor for covariance:
13243 Double_t wPrefactor5 = sumOfWW5/(sumOfW1st5*sumOfW2nd5);
13244 // finally, store "weighted" covariance:
13245 fIntFlowCovariancesNUA->SetBinContent(5,wPrefactor5*covariance5);
13246 } // end of if(TMath::Abs(denominator5)>0.)
13247 } // end of if(TMath::Abs(sumOfW1st5*sumOfW2nd5)>0.)
13248
0328db2d 13249 // Cov(<2>,<cos(phi1-phi2-phi3)>):
13250 Double_t product6 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(6); // <<2><cos(phi1-phi2-phi3)>>
13251 Double_t term1st6 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13252 Double_t term2nd6 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13253 Double_t sumOfW1st6 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13254 Double_t sumOfW2nd6 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13255 Double_t sumOfWW6 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(6); // W_{<2>} * W_{<cos(phi1-phi2-phi3)>}
13256 // numerator in the expression for the the unbiased estimator for covariance:
13257 Double_t numerator6 = product6 - term1st6*term2nd6;
13258 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13259 Double_t denominator6 = 0.;
13260 if(TMath::Abs(sumOfW1st6*sumOfW2nd6)>0.)
13261 {
13262 denominator6 = 1.-sumOfWW6/(sumOfW1st6*sumOfW2nd6);
13263 if(TMath::Abs(denominator6)>0.)
13264 {
13265 // covariance:
13266 Double_t covariance6 = numerator6/denominator6;
13267 // weight dependent prefactor for covariance:
13268 Double_t wPrefactor6 = sumOfWW6/(sumOfW1st6*sumOfW2nd6);
13269 // finally, store "weighted" covariance:
13270 fIntFlowCovariancesNUA->SetBinContent(6,wPrefactor6*covariance6);
13271 } // end of if(TMath::Abs(denominator6)>0.)
13272 } // end of if(TMath::Abs(sumOfW1st6*sumOfW2nd6)>0.)
13273
0328db2d 13274 // Cov(<2>,<sin(phi1-phi2-phi3)>):
13275 Double_t product7 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(7); // <<2><sin(phi1-phi2-phi3)>>
13276 Double_t term1st7 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13277 Double_t term2nd7 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13278 Double_t sumOfW1st7 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13279 Double_t sumOfW2nd7 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13280 Double_t sumOfWW7 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(7); // W_{<2>} * W_{<sin(phi1-phi2-phi3)>}
13281 // numerator in the expression for the the unbiased estimator for covariance:
13282 Double_t numerator7 = product7 - term1st7*term2nd7;
13283 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13284 Double_t denominator7 = 0.;
13285 if(TMath::Abs(sumOfW1st7*sumOfW2nd7)>0.)
13286 {
13287 denominator7 = 1.-sumOfWW7/(sumOfW1st7*sumOfW2nd7);
13288 if(TMath::Abs(denominator7)>0.)
13289 {
13290 // covariance:
13291 Double_t covariance7 = numerator7/denominator7;
13292 // weight dependent prefactor for covariance:
13293 Double_t wPrefactor7 = sumOfWW7/(sumOfW1st7*sumOfW2nd7);
13294 // finally, store "weighted" covariance:
13295 fIntFlowCovariancesNUA->SetBinContent(7,wPrefactor7*covariance7);
13296 } // end of if(TMath::Abs(denominator7)>0.)
13297 } // end of if(TMath::Abs(sumOfW1st7*sumOfW2nd7)>0.)
13298
0328db2d 13299 // Cov(<4>,<cos(phi1>):
13300 Double_t product8 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(8); // <<4><cos(phi1)>>
13301 Double_t term1st8 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13302 Double_t term2nd8 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13303 Double_t sumOfW1st8 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13304 Double_t sumOfW2nd8 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13305 Double_t sumOfWW8 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(8); // W_{<4>} * W_{<cos(phi1)>}
13306 // numerator in the expression for the the unbiased estimator for covariance:
13307 Double_t numerator8 = product8 - term1st8*term2nd8;
13308 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13309 Double_t denominator8 = 0.;
13310 if(TMath::Abs(sumOfW1st8*sumOfW2nd8)>0.)
13311 {
13312 denominator8 = 1.-sumOfWW8/(sumOfW1st8*sumOfW2nd8);
13313 if(TMath::Abs(denominator8)>0.)
13314 {
13315 // covariance:
13316 Double_t covariance8 = numerator8/denominator8;
13317 // weight dependent prefactor for covariance:
13318 Double_t wPrefactor8 = sumOfWW8/(sumOfW1st8*sumOfW2nd8);
13319 // finally, store "weighted" covariance:
13320 fIntFlowCovariancesNUA->SetBinContent(8,wPrefactor8*covariance8);
13321 } // end of if(TMath::Abs(denominator8)>0.)
13322 } // end of if(TMath::Abs(sumOfW1st8*sumOfW2nd8)>0.)
13323
0328db2d 13324 // Cov(<4>,<sin(phi1)>):
13325 Double_t product9 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(9); // <<4><sin(phi1)>>
13326 Double_t term1st9 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13327 Double_t term2nd9 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13328 Double_t sumOfW1st9 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13329 Double_t sumOfW2nd9 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13330 Double_t sumOfWW9 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(9); // W_{<4>} * W_{<sin(phi1)>}
13331 // numerator in the expression for the the unbiased estimator for covariance:
13332 Double_t numerator9 = product9 - term1st9*term2nd9;
13333 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13334 Double_t denominator9 = 0.;
13335 if(TMath::Abs(sumOfW1st9*sumOfW2nd9)>0.)
13336 {
13337 denominator9 = 1.-sumOfWW9/(sumOfW1st9*sumOfW2nd9);
13338 if(TMath::Abs(denominator9)>0.)
13339 {
13340 // covariance:
13341 Double_t covariance9 = numerator9/denominator9;
13342 // weight dependent prefactor for covariance:
13343 Double_t wPrefactor9 = sumOfWW9/(sumOfW1st9*sumOfW2nd9);
13344 // finally, store "weighted" covariance:
13345 fIntFlowCovariancesNUA->SetBinContent(9,wPrefactor9*covariance9);
13346 }
13347 } // end of if(TMath::Abs(sumOfW1st9*sumOfW2nd9)>0.)
13348
0328db2d 13349 // Cov(<4>,<cos(phi1+phi2)>):
13350 Double_t product10 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(10); // <<4><cos(phi1+phi2)>>
13351 Double_t term1st10 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13352 Double_t term2nd10 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13353 Double_t sumOfW1st10 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13354 Double_t sumOfW2nd10 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13355 Double_t sumOfWW10 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(10); // W_{<4>} * W_{<cos(phi1+phi2)>}
13356 // numerator in the expression for the the unbiased estimator for covariance:
13357 Double_t numerator10 = product10 - term1st10*term2nd10;
13358 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13359 Double_t denominator10 = 0.;
13360 if(TMath::Abs(sumOfW1st10*sumOfW2nd10)>0.)
13361 {
13362 denominator10 = 1.-sumOfWW10/(sumOfW1st10*sumOfW2nd10);
13363 if(TMath::Abs(denominator10)>0.)
13364 {
13365 // covariance:
13366 Double_t covariance10 = numerator10/denominator10;
13367 // weight dependent prefactor for covariance:
13368 Double_t wPrefactor10 = sumOfWW10/(sumOfW1st10*sumOfW2nd10);
13369 // finally, store "weighted" covariance:
13370 fIntFlowCovariancesNUA->SetBinContent(10,wPrefactor10*covariance10);
13371 } // end of if(TMath::Abs(denominator10)>0.)
13372 } // end of if(TMath::Abs(sumOfW1st10*sumOfW2nd10)>0.)
13373
0328db2d 13374 // Cov(<4>,<sin(phi1+phi2)>):
13375 Double_t product11 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(11); // <<4><sin(phi1+phi2)>>
13376 Double_t term1st11 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13377 Double_t term2nd11 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13378 Double_t sumOfW1st11 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13379 Double_t sumOfW2nd11 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13380 Double_t sumOfWW11 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(11); // W_{<4>} * W_{<sin(phi1+phi2)>}
13381 // numerator in the expression for the the unbiased estimator for covariance:
13382 Double_t numerator11 = product11 - term1st11*term2nd11;
13383 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13384 Double_t denominator11 = 0.;
13385 if(TMath::Abs(sumOfW1st11*sumOfW2nd11)>0.)
13386 {
13387 denominator11 = 1.-sumOfWW11/(sumOfW1st11*sumOfW2nd11);
13388 if(TMath::Abs(denominator11)>0.)
13389 {
13390 // covariance:
13391 Double_t covariance11 = numerator11/denominator11;
13392 // weight dependent prefactor for covariance:
13393 Double_t wPrefactor11 = sumOfWW11/(sumOfW1st11*sumOfW2nd11);
13394 // finally, store "weighted" covariance:
13395 fIntFlowCovariancesNUA->SetBinContent(11,wPrefactor11*covariance11);
13396 } // end of if(TMath::Abs(denominator11)>0.)
13397 } // end of if(TMath::Abs(sumOfW1st11*sumOfW2nd11)>0.)
0328db2d 13398
13399 // Cov(<4>,<cos(phi1-phi2-phi3)>):
13400 Double_t product12 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(12); // <<4><cos(phi1-phi2-phi3)>>
13401 Double_t term1st12 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13402 Double_t term2nd12 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13403 Double_t sumOfW1st12 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13404 Double_t sumOfW2nd12 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13405 Double_t sumOfWW12 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(12); // W_{<4>} * W_{<cos(phi1-phi2-phi3)>}
13406 // numerator in the expression for the the unbiased estimator for covariance:
13407 Double_t numerator12 = product12 - term1st12*term2nd12;
13408 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13409 Double_t denominator12 = 0.;
13410 if(TMath::Abs(sumOfW1st12*sumOfW2nd12)>0.)
13411 {
13412 denominator12 = 1.-sumOfWW12/(sumOfW1st12*sumOfW2nd12);
13413 if(TMath::Abs(denominator12)>0.)
13414 {
13415 // covariance:
13416 Double_t covariance12 = numerator12/denominator12;
13417 // weight dependent prefactor for covariance:
13418 Double_t wPrefactor12 = sumOfWW12/(sumOfW1st12*sumOfW2nd12);
13419 // finally, store "weighted" covariance:
13420 fIntFlowCovariancesNUA->SetBinContent(12,wPrefactor12*covariance12);
13421 } // end of if(TMath::Abs(denominator12)>0.)
13422 } // end of if(TMath::Abs(sumOfW1st12*sumOfW2nd12)>0.)
0328db2d 13423
13424 // Cov(<4>,<sin(phi1-phi2-phi3)>):
13425 Double_t product13 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(13); // <<4><sin(phi1-phi2-phi3)>>
13426 Double_t term1st13 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13427 Double_t term2nd13 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13428 Double_t sumOfW1st13 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13429 Double_t sumOfW2nd13 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13430 Double_t sumOfWW13 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(13); // W_{<4>} * W_{<sin(phi1-phi2-phi3)>}
13431 // numerator in the expression for the the unbiased estimator for covariance:
13432 Double_t numerator13 = product13 - term1st13*term2nd13;
13433 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13434 Double_t denominator13 = 0.;
13435 if(TMath::Abs(sumOfW1st13*sumOfW2nd13)>0.)
13436 {
13437 denominator13 = 1.-sumOfWW13/(sumOfW1st13*sumOfW2nd13);
13438 if(TMath::Abs(denominator13)>0.)
13439 {
13440 // covariance:
13441 Double_t covariance13 = numerator13/denominator13;
13442 // weight dependent prefactor for covariance:
13443 Double_t wPrefactor13 = sumOfWW13/(sumOfW1st13*sumOfW2nd13);
13444 // finally, store "weighted" covariance:
13445 fIntFlowCovariancesNUA->SetBinContent(13,wPrefactor13*covariance13);
13446 } // end of if(TMath::Abs(denominator13)>0.)
13447 } // end of if(TMath::Abs(sumOfW1st13*sumOfW2nd13)>0.)
0328db2d 13448
13449 // Cov(<cos(phi1)>,<cos(phi1+phi2)>):
13450 Double_t product14 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(14); // <<cos(phi1)><cos(phi1+phi2)>>
13451 Double_t term1st14 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13452 Double_t term2nd14 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13453 Double_t sumOfW1st14 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13454 Double_t sumOfW2nd14 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13455 Double_t sumOfWW14 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(14); // W_{<cos(phi1)>} * W_{<cos(phi1+phi2)>}
13456 // numerator in the expression for the the unbiased estimator for covariance:
13457 Double_t numerator14 = product14 - term1st14*term2nd14;
13458 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13459 Double_t denominator14 = 0.;
13460 if(TMath::Abs(sumOfW1st14*sumOfW2nd14)>0.)
13461 {
13462 denominator14 = 1.-sumOfWW14/(sumOfW1st14*sumOfW2nd14);
13463 if(TMath::Abs(denominator14)>0.)
13464 {
13465 // covariance:
13466 Double_t covariance14 = numerator14/denominator14;
13467 // weight dependent prefactor for covariance:
13468 Double_t wPrefactor14 = sumOfWW14/(sumOfW1st14*sumOfW2nd14);
13469 // finally, store "weighted" covariance:
13470 fIntFlowCovariancesNUA->SetBinContent(14,wPrefactor14*covariance14);
13471 } // end of if(TMath::Abs(denominator14)>0.)
13472 } // end of if(TMath::Abs(sumOfW1st14*sumOfW2nd14)>0.)
0328db2d 13473
13474 // Cov(<cos(phi1)>,<sin(phi1+phi2)>):
13475 Double_t product15 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(15); // <<cos(phi1)><sin(phi1+phi2)>>
13476 Double_t term1st15 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13477 Double_t term2nd15 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13478 Double_t sumOfW1st15 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13479 Double_t sumOfW2nd15 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13480 Double_t sumOfWW15 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(15); // W_{<cos(phi1)>} * W_{<sin(phi1+phi2)>}
13481 // numerator in the expression for the the unbiased estimator for covariance:
13482 Double_t numerator15 = product15 - term1st15*term2nd15;
13483 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13484 Double_t denominator15 = 0.;
13485 if(TMath::Abs(sumOfW1st15*sumOfW2nd15)>0.)
13486 {
13487 denominator15 = 1.-sumOfWW15/(sumOfW1st15*sumOfW2nd15);
13488 if(TMath::Abs(denominator15)>0.)
13489 {
13490 // covariance:
13491 Double_t covariance15 = numerator15/denominator15;
13492 // weight dependent prefactor for covariance:
13493 Double_t wPrefactor15 = sumOfWW15/(sumOfW1st15*sumOfW2nd15);
13494 // finally, store "weighted" covariance:
13495 fIntFlowCovariancesNUA->SetBinContent(15,wPrefactor15*covariance15);
13496 } // end of if(TMath::Abs(denominator15)>0.)
13497 } // end of if(TMath::Abs(sumOfW1st15*sumOfW2nd15)>0.)
13498
0328db2d 13499 // Cov(<cos(phi1)>,<cos(phi1-phi2-phi3)>):
13500 Double_t product16 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(16); // <<cos(phi1)><cos(phi1-phi2-phi3)>>
13501 Double_t term1st16 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13502 Double_t term2nd16 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13503 Double_t sumOfW1st16 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13504 Double_t sumOfW2nd16 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13505 Double_t sumOfWW16 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(16); // W_{<cos(phi1)>} * W_{<cos(phi1-phi2-phi3)>}
13506 // numerator in the expression for the the unbiased estimator for covariance:
13507 Double_t numerator16 = product16 - term1st16*term2nd16;
13508 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13509 Double_t denominator16 = 0.;
13510 if(TMath::Abs(sumOfW1st16*sumOfW2nd16)>0.)
13511 {
13512 denominator16 = 1.-sumOfWW16/(sumOfW1st16*sumOfW2nd16);
13513 if(TMath::Abs(denominator16)>0.)
13514 {
13515 // covariance:
13516 Double_t covariance16 = numerator16/denominator16;
13517 // weight dependent prefactor for covariance:
13518 Double_t wPrefactor16 = sumOfWW16/(sumOfW1st16*sumOfW2nd16);
13519 // finally, store "weighted" covariance:
13520 fIntFlowCovariancesNUA->SetBinContent(16,wPrefactor16*covariance16);
13521 } // end of if(TMath::Abs(denominator16)>0.)
13522 } // end ofif(TMath::Abs(sumOfW1st16*sumOfW2nd16)>0.)
13523
0328db2d 13524 // Cov(<cos(phi1)>,<sin(phi1-phi2-phi3)>):
13525 Double_t product17 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(17); // <<cos(phi1)><sin(phi1-phi2-phi3)>>
13526 Double_t term1st17 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13527 Double_t term2nd17 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13528 Double_t sumOfW1st17 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13529 Double_t sumOfW2nd17 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13530 Double_t sumOfWW17 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(17); // W_{<cos(phi1)>} * W_{<sin(phi1-phi2-phi3)>}
13531 // numerator in the expression for the the unbiased estimator for covariance:
13532 Double_t numerator17 = product17 - term1st17*term2nd17;
13533 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13534 Double_t denominator17 = 0.;
13535 if(TMath::Abs(sumOfW1st17*sumOfW2nd17)>0.)
13536 {
13537 denominator17 = 1.-sumOfWW17/(sumOfW1st17*sumOfW2nd17);
13538 if(TMath::Abs(denominator17)>0.)
13539 {
13540 // covariance:
13541 Double_t covariance17 = numerator17/denominator17;
13542 // weight dependent prefactor for covariance:
13543 Double_t wPrefactor17 = sumOfWW17/(sumOfW1st17*sumOfW2nd17);
13544 // finally, store "weighted" covariance:
13545 fIntFlowCovariancesNUA->SetBinContent(17,wPrefactor17*covariance17);
13546 } // end of if(TMath::Abs(denominator17)>0.)
13547 } // end of if(TMath::Abs(sumOfW1st17*sumOfW2nd17)>0.)
0328db2d 13548
13549 // Cov(<sin(phi1)>,<cos(phi1+phi2)>):
13550 Double_t product18 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(18); // <<sin(phi1)><cos(phi1+phi2)>>
13551 Double_t term1st18 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13552 Double_t term2nd18 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13553 Double_t sumOfW1st18 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13554 Double_t sumOfW2nd18 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13555 Double_t sumOfWW18 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(18); // W_{<sin(phi1)>} * W_{<cos(phi1+phi2)>}
13556 // numerator in the expression for the the unbiased estimator for covariance:
13557 Double_t numerator18 = product18 - term1st18*term2nd18;
13558 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13559 Double_t denominator18 = 0.;
13560 if(TMath::Abs(sumOfW1st18*sumOfW2nd18)>0.)
13561 {
13562 denominator18 = 1.-sumOfWW18/(sumOfW1st18*sumOfW2nd18);
13563 if(TMath::Abs(denominator18)>0.)
13564 {
13565 // covariance:
13566 Double_t covariance18 = numerator18/denominator18;
13567 // weight dependent prefactor for covariance:
13568 Double_t wPrefactor18 = sumOfWW18/(sumOfW1st18*sumOfW2nd18);
13569 // finally, store "weighted" covariance:
13570 fIntFlowCovariancesNUA->SetBinContent(18,wPrefactor18*covariance18);
13571 } // end of if(TMath::Abs(denominator18)>0.)
13572 } // end of if(TMath::Abs(sumOfW1st18*sumOfW2nd18)>0.)
0328db2d 13573
13574 // Cov(<sin(phi1)>,<sin(phi1+phi2)>):
13575 Double_t product19 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(19); // <<sin(phi1)><sin(phi1+phi2)>>
13576 Double_t term1st19 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13577 Double_t term2nd19 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13578 Double_t sumOfW1st19 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13579 Double_t sumOfW2nd19 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13580 Double_t sumOfWW19 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(19); // W_{<sin(phi1)>} * W_{<sin(phi1+phi2)>}
13581 // numerator in the expression for the the unbiased estimator for covariance:
13582 Double_t numerator19 = product19 - term1st19*term2nd19;
13583 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13584 Double_t denominator19 = 0.;
13585 if(TMath::Abs(sumOfW1st19*sumOfW2nd19)>0.)
13586 {
13587 denominator19 = 1.-sumOfWW19/(sumOfW1st19*sumOfW2nd19);
13588 if(TMath::Abs(denominator19)>0.)
13589 {
13590 // covariance:
13591 Double_t covariance19 = numerator19/denominator19;
13592 // weight dependent prefactor for covariance:
13593 Double_t wPrefactor19 = sumOfWW19/(sumOfW1st19*sumOfW2nd19);
13594 // finally, store "weighted" covariance:
13595 fIntFlowCovariancesNUA->SetBinContent(19,wPrefactor19*covariance19);
13596 } // end of if(TMath::Abs(denominator19)>0.)
13597 } // end of if(TMath::Abs(sumOfW1st19*sumOfW2nd19)>0.)
13598
0328db2d 13599 // Cov(<sin(phi1)>,<cos(phi1-phi2-phi3)>):
13600 Double_t product20 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(20); // <<sin(phi1)><cos(phi1-phi2-phi3)>>
13601 Double_t term1st20 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13602 Double_t term2nd20 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13603 Double_t sumOfW1st20 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13604 Double_t sumOfW2nd20 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13605 Double_t sumOfWW20 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(20); // W_{<sin(phi1)>} * W_{<cos(phi1-phi2-phi3)>}
13606 // numerator in the expression for the the unbiased estimator for covariance:
13607 Double_t numerator20 = product20 - term1st20*term2nd20;
13608 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13609 Double_t denominator20 = 0.;
13610 if(TMath::Abs(sumOfW1st20*sumOfW2nd20)>0.)
13611 {
13612 denominator20 = 1.-sumOfWW20/(sumOfW1st20*sumOfW2nd20);
13613 if(TMath::Abs(denominator20)>0.)
13614 {
13615 // covariance:
13616 Double_t covariance20 = numerator20/denominator20;
13617 // weight dependent prefactor for covariance:
13618 Double_t wPrefactor20 = sumOfWW20/(sumOfW1st20*sumOfW2nd20);
13619 // finally, store "weighted" covariance:
13620 fIntFlowCovariancesNUA->SetBinContent(20,wPrefactor20*covariance20);
13621 } // end of if(TMath::Abs(denominator20)>0.)
13622 } // end of if(TMath::Abs(sumOfW1st20*sumOfW2nd20)>0.)
0328db2d 13623
13624 // Cov(<sin(phi1)>,<sin(phi1-phi2-phi3)>):
13625 Double_t product21 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(21); // <<sin(phi1)><sin(phi1-phi2-phi3)>>
13626 Double_t term1st21 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13627 Double_t term2nd21 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13628 Double_t sumOfW1st21 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13629 Double_t sumOfW2nd21 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13630 Double_t sumOfWW21 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(21); // W_{<sin(phi1)>} * W_{<sin(phi1-phi2-phi3)>}
13631 // numerator in the expression for the the unbiased estimator for covariance:
13632 Double_t numerator21 = product21 - term1st21*term2nd21;
13633 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13634 Double_t denominator21 = 0.;
13635 if(TMath::Abs(sumOfW1st21*sumOfW2nd21)>0.)
13636 {
13637 denominator21 = 1.-sumOfWW21/(sumOfW1st21*sumOfW2nd21);
13638 if(TMath::Abs(denominator21)>0.)
13639 {
13640 // covariance:
13641 Double_t covariance21 = numerator21/denominator21;
13642 // weight dependent prefactor for covariance:
13643 Double_t wPrefactor21 = sumOfWW21/(sumOfW1st21*sumOfW2nd21);
13644 // finally, store "weighted" covariance:
13645 fIntFlowCovariancesNUA->SetBinContent(21,wPrefactor21*covariance21);
13646 } // end of if(TMath::Abs(denominator21)>0.)
13647 } // end of if(TMath::Abs(sumOfW1st21*sumOfW2nd21)>0.)
0328db2d 13648
13649 // Cov(<cos(phi1+phi2)>,<sin(phi1+phi2)>):
13650 Double_t product22 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(22); // <<cos(phi1+phi2)><sin(phi1+phi2)>>
13651 Double_t term1st22 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13652 Double_t term2nd22 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13653 Double_t sumOfW1st22 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13654 Double_t sumOfW2nd22 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13655 Double_t sumOfWW22 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(22); // W_{<cos(phi1+phi2)>} * W_{<sin(phi1+phi2)>}
13656 // numerator in the expression for the the unbiased estimator for covariance:
13657 Double_t numerator22 = product22 - term1st22*term2nd22;
13658 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13659 Double_t denominator22 = 0.;
13660 if(TMath::Abs(sumOfW1st22*sumOfW2nd22)>0.)
13661 {
13662 denominator22 = 1.-sumOfWW22/(sumOfW1st22*sumOfW2nd22);
13663 if(TMath::Abs(denominator22)>0.)
13664 {
13665 // covariance:
13666 Double_t covariance22 = numerator22/denominator22;
13667 // weight dependent prefactor for covariance:
13668 Double_t wPrefactor22 = sumOfWW22/(sumOfW1st22*sumOfW2nd22);
13669 // finally, store "weighted" covariance:
13670 fIntFlowCovariancesNUA->SetBinContent(22,wPrefactor22*covariance22);
13671 } // end of if(TMath::Abs(denominator22)>0.)
13672 } // end of if(TMath::Abs(sumOfW1st22*sumOfW2nd22)>0.)
0328db2d 13673
13674 // Cov(<cos(phi1+phi2)>,<cos(phi1-phi2-phi3)>):
13675 Double_t product23 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(23); // <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>
13676 Double_t term1st23 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13677 Double_t term2nd23 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13678 Double_t sumOfW1st23 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13679 Double_t sumOfW2nd23 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13680 Double_t sumOfWW23 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(23); // W_{<cos(phi1+phi2)>} * W_{<cos(phi1-phi2-phi3)>}
13681 // numerator in the expression for the the unbiased estimator for covariance:
13682 Double_t numerator23 = product23 - term1st23*term2nd23;
13683 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13684 Double_t denominator23 = 0.;
13685 if(TMath::Abs(sumOfW1st23*sumOfW2nd23)>0.)
13686 {
13687 denominator23 = 1.-sumOfWW23/(sumOfW1st23*sumOfW2nd23);
13688 if(TMath::Abs(denominator23)>0.)
13689 {
13690 // covariance:
13691 Double_t covariance23 = numerator23/denominator23;
13692 // weight dependent prefactor for covariance:
13693 Double_t wPrefactor23 = sumOfWW23/(sumOfW1st23*sumOfW2nd23);
13694 // finally, store "weighted" covariance:
13695 fIntFlowCovariancesNUA->SetBinContent(23,wPrefactor23*covariance23);
13696 } // end of if(TMath::Abs(denominator23)>0.)
13697 } // end of if(TMath::Abs(sumOfW1st23*sumOfW2nd23)>0.)
13698
0328db2d 13699 // Cov(<cos(phi1+phi2)>,<sin(phi1-phi2-phi3)>):
13700 Double_t product24 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(24); // <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>
13701 Double_t term1st24 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13702 Double_t term2nd24 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13703 Double_t sumOfW1st24 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13704 Double_t sumOfW2nd24 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13705 Double_t sumOfWW24 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(24); // W_{<cos(phi1+phi2)>} * W_{<sin(phi1-phi2-phi3)>}
13706 // numerator in the expression for the the unbiased estimator for covariance:
13707 Double_t numerator24 = product24 - term1st24*term2nd24;
13708 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13709 Double_t denominator24 = 0.;
13710 if(TMath::Abs(sumOfW1st24*sumOfW2nd24)>0.)
13711 {
13712 denominator24 = 1.-sumOfWW24/(sumOfW1st24*sumOfW2nd24);
13713 if(TMath::Abs(denominator24)>0.)
13714 {
13715 // covariance:
13716 Double_t covariance24 = numerator24/denominator24;
13717 // weight dependent prefactor for covariance:
13718 Double_t wPrefactor24 = sumOfWW24/(sumOfW1st24*sumOfW2nd24);
13719 // finally, store "weighted" covariance:
13720 fIntFlowCovariancesNUA->SetBinContent(24,wPrefactor24*covariance24);
13721 } // end of if(TMath::Abs(denominator24)>0.)
13722 } // end of if(TMath::Abs(sumOfW1st24*sumOfW2nd24)>0.)
0328db2d 13723
13724 // Cov(<sin(phi1+phi2)>,<cos(phi1-phi2-phi3)>):
13725 Double_t product25 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(25); // <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>
13726 Double_t term1st25 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13727 Double_t term2nd25 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13728 Double_t sumOfW1st25 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13729 Double_t sumOfW2nd25 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13730 Double_t sumOfWW25 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(25); // W_{<sin(phi1+phi2)>} * W_{<cos(phi1-phi2-phi3)>}
13731 // numerator in the expression for the the unbiased estimator for covariance:
13732 Double_t numerator25 = product25 - term1st25*term2nd25;
13733 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13734 Double_t denominator25 = 0.;
13735 if(TMath::Abs(sumOfW1st25*sumOfW2nd25)>0.)
13736 {
13737 denominator25 = 1.-sumOfWW25/(sumOfW1st25*sumOfW2nd25);
13738 if(TMath::Abs(denominator25)>0.)
13739 {
13740 // covariance:
13741 Double_t covariance25 = numerator25/denominator25;
13742 // weight dependent prefactor for covariance:
13743 Double_t wPrefactor25 = sumOfWW25/(sumOfW1st25*sumOfW2nd25);
13744 // finally, store "weighted" covariance:
13745 fIntFlowCovariancesNUA->SetBinContent(25,wPrefactor25*covariance25);
13746 } // end of if(TMath::Abs(denominator25)>0.)
13747 } // end of if(TMath::Abs(sumOfW1st25*sumOfW2nd25)>0.)
13748
0328db2d 13749 // Cov(<sin(phi1+phi2)>,<sin(phi1-phi2-phi3)>):
13750 Double_t product26 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(26); // <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>
13751 Double_t term1st26 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13752 Double_t term2nd26 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13753 Double_t sumOfW1st26 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13754 Double_t sumOfW2nd26 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13755 Double_t sumOfWW26 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(26); // W_{<sin(phi1+phi2)>} * W_{<sin(phi1-phi2-phi3)>}
13756 // numerator in the expression for the the unbiased estimator for covariance:
13757 Double_t numerator26 = product26 - term1st26*term2nd26;
13758 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13759 Double_t denominator26 = 0.;
13760 if(TMath::Abs(sumOfW1st26*sumOfW2nd26)>0.)
13761 {
13762 denominator26 = 1.-sumOfWW26/(sumOfW1st26*sumOfW2nd26);
13763 if(TMath::Abs(denominator26)>0.)
13764 {
13765 // covariance:
13766 Double_t covariance26 = numerator26/denominator26;
13767 // weight dependent prefactor for covariance:
13768 Double_t wPrefactor26 = sumOfWW26/(sumOfW1st26*sumOfW2nd26);
13769 // finally, store "weighted" covariance:
13770 fIntFlowCovariancesNUA->SetBinContent(26,wPrefactor26*covariance26);
13771 } // end of if(TMath::Abs(denominator26)>0.)
13772 } // end of if(TMath::Abs(sumOfW1st26*sumOfW2nd26)>0.)
13773
0328db2d 13774 // Cov(<cos(phi1-phi2-phi3)>,<sin(phi1-phi2-phi3)>):
13775 Double_t product27 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(27); // <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>
b92ea2b9 13776 Double_t term1st27 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
0328db2d 13777 Double_t term2nd27 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
b92ea2b9 13778 Double_t sumOfW1st27 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
0328db2d 13779 Double_t sumOfW2nd27 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13780 Double_t sumOfWW27 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(27); // W_{<cos(phi1-phi2-phi3)>} * W_{<sin(phi1-phi2-phi3)>}
13781 // numerator in the expression for the the unbiased estimator for covariance:
13782 Double_t numerator27 = product27 - term1st27*term2nd27;
13783 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13784 Double_t denominator27 = 0.;
13785 if(TMath::Abs(sumOfW1st27*sumOfW2nd27)>0.)
13786 {
13787 denominator27 = 1.-sumOfWW27/(sumOfW1st27*sumOfW2nd27);
13788 if(TMath::Abs(denominator27)>0.)
13789 {
13790 // covariance:
13791 Double_t covariance27 = numerator27/denominator27;
13792 // weight dependent prefactor for covariance:
13793 Double_t wPrefactor27 = sumOfWW27/(sumOfW1st27*sumOfW2nd27);
13794 // finally, store "weighted" covariance:
13795 fIntFlowCovariancesNUA->SetBinContent(27,wPrefactor27*covariance27);
13796 } // end of if(TMath::Abs(denominator27)>0.)
13797 } // end of if(TMath::Abs(sumOfW1st27*sumOfW2nd27)>0.)
13798
0328db2d 13799} // end of AliFlowAnalysisWithQCumulants::CalculateCovariancesNUAIntFlow()
13800
e1d101a6 13801//=======================================================================================================================
0328db2d 13802
489d5531 13803void AliFlowAnalysisWithQCumulants::FinalizeCorrelationsIntFlow()
13804{
13805 // From profile fIntFlowCorrelationsPro access measured correlations and spread,
13806 // correctly calculate the statistical errors and store the final results and
13807 // statistical errors for correlations in histogram fIntFlowCorrelationsHist.
13808 //
13809 // Remark: Statistical error of correlation is calculated as:
13810 //
13811 // statistical error = termA * spread * termB:
13812 // termA = sqrt{sum_{i=1}^{N} w^2}/(sum_{i=1}^{N} w)
13813 // termB = 1/sqrt(1-termA^2)
b3dacf6b 13814 //
13815
489d5531 13816 for(Int_t ci=1;ci<=4;ci++) // correlation index
13817 {
b40a910e 13818 if(fIntFlowCorrelationsPro->GetBinEffectiveEntries(ci) < 2 || fIntFlowSquaredCorrelationsPro->GetBinEffectiveEntries(ci) < 2)
13819 {
13820 fIntFlowCorrelationsPro->SetBinError(ci,0.);
13821 fIntFlowSquaredCorrelationsPro->SetBinError(ci,0.);
13822 continue;
13823 }
489d5531 13824 Double_t correlation = fIntFlowCorrelationsPro->GetBinContent(ci);
b40a910e 13825 Double_t squaredCorrelation = fIntFlowSquaredCorrelationsPro->GetBinContent(ci);
13826 Double_t spread = 0.;
13827 if(squaredCorrelation-correlation*correlation >= 0.)
13828 {
13829 spread = pow(squaredCorrelation-correlation*correlation,0.5);
13830 } else
13831 {
13832 cout<<endl;
13833 cout<<Form(" WARNING: Imaginary 'spread' for %d-particle correlation!!!! ",2*ci)<<endl;
13834 cout<<endl;
13835 }
489d5531 13836 Double_t sumOfLinearEventWeights = fIntFlowSumOfEventWeights[0]->GetBinContent(ci);
13837 Double_t sumOfQuadraticEventWeights = fIntFlowSumOfEventWeights[1]->GetBinContent(ci);
13838 Double_t termA = 0.;
13839 Double_t termB = 0.;
b3dacf6b 13840 if(TMath::Abs(sumOfLinearEventWeights) > 0.) // to be improved - shall I omitt here Abs() ?
489d5531 13841 {
13842 termA = pow(sumOfQuadraticEventWeights,0.5)/sumOfLinearEventWeights;
13843 } else
13844 {
b3dacf6b 13845 cout<<endl;
13846 cout<<" WARNING (QC): sumOfLinearEventWeights == 0 in method FinalizeCorrelationsIntFlow() !!!!"<<endl;
13847 cout<<" (for "<<2*ci<<"-particle correlation)"<<endl;
13848 cout<<endl;
489d5531 13849 }
13850 if(1.-pow(termA,2.) > 0.)
13851 {
13852 termB = 1./pow(1-pow(termA,2.),0.5);
13853 } else
13854 {
b3dacf6b 13855 cout<<endl;
13856 cout<<" WARNING (QC): 1.-pow(termA,2.) <= 0 in method FinalizeCorrelationsIntFlow() !!!!"<<endl;
13857 cout<<" (for "<<2*ci<<"-particle correlation)"<<endl;
13858 cout<<endl;
489d5531 13859 }
13860 Double_t statisticalError = termA * spread * termB;
13861 fIntFlowCorrelationsHist->SetBinContent(ci,correlation);
13862 fIntFlowCorrelationsHist->SetBinError(ci,statisticalError);
ff70ca91 13863 } // end of for(Int_t ci=1;ci<=4;ci++) // correlation index
13864
b3dacf6b 13865 // Versus multiplicity:
13866 if(!fCalculateCumulantsVsM){return;}
ff70ca91 13867 for(Int_t ci=0;ci<=3;ci++) // correlation index
13868 {
13869 Int_t nBins = fIntFlowCorrelationsVsMPro[ci]->GetNbinsX();
13870 for(Int_t b=1;b<=nBins;b++) // looping over multiplicity bins
13871 {
b40a910e 13872 if(fIntFlowCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b) < 2 || fIntFlowSquaredCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b) < 2)
13873 {
13874 fIntFlowCorrelationsVsMPro[ci]->SetBinError(b,0.);
13875 fIntFlowSquaredCorrelationsVsMPro[ci]->SetBinError(b,0.);
13876 continue;
13877 }
ff70ca91 13878 Double_t correlationVsM = fIntFlowCorrelationsVsMPro[ci]->GetBinContent(b);
b40a910e 13879 Double_t squaredCorrelationVsM = fIntFlowSquaredCorrelationsVsMPro[ci]->GetBinContent(b);
13880 Double_t spreadVsM = 0.;
13881 if(squaredCorrelationVsM-correlationVsM*correlationVsM >= 0.)
13882 {
13883 spreadVsM = pow(squaredCorrelationVsM-correlationVsM*correlationVsM,0.5);
13884 } else
13885 {
13886 cout<<endl;
13887 cout<<Form(" WARNING (QC): Imaginary 'spreadVsM' for ci = %d, bin = %d, entries = %f !!!!",
13888 ci,b,fIntFlowCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b))<<endl;
13889 cout<<endl;
13890 }
ff70ca91 13891 Double_t sumOfLinearEventWeightsVsM = fIntFlowSumOfEventWeightsVsM[ci][0]->GetBinContent(b);
13892 Double_t sumOfQuadraticEventWeightsVsM = fIntFlowSumOfEventWeightsVsM[ci][1]->GetBinContent(b);
13893 Double_t termAVsM = 0.;
13894 Double_t termBVsM = 0.;
b40a910e 13895 if(sumOfLinearEventWeightsVsM > 0.)
ff70ca91 13896 {
13897 termAVsM = pow(sumOfQuadraticEventWeightsVsM,0.5)/sumOfLinearEventWeightsVsM;
b3dacf6b 13898 }
ff70ca91 13899 if(1.-pow(termAVsM,2.) > 0.)
13900 {
13901 termBVsM = 1./pow(1-pow(termAVsM,2.),0.5);
b3dacf6b 13902 }
ff70ca91 13903 Double_t statisticalErrorVsM = termAVsM * spreadVsM * termBVsM;
13904 fIntFlowCorrelationsVsMHist[ci]->SetBinContent(b,correlationVsM);
13905 fIntFlowCorrelationsVsMHist[ci]->SetBinError(b,statisticalErrorVsM);
13906 } // end of for(Int_t b=1;b<=nBins;b++)
13907 } // end of for(Int_t ci=1;ci<=4;ci++) // correlation index
13908
489d5531 13909} // end of AliFlowAnalysisWithQCumulants::FinalizeCorrelationsIntFlow()
13910
e1d101a6 13911//=======================================================================================================================
489d5531 13912
489d5531 13913void AliFlowAnalysisWithQCumulants::FillAverageMultiplicities(Int_t nRP)
13914{
b77b6434 13915 // Fill profile fAverageMultiplicity to hold average multiplicities and
13916 // number of events for events with nRP>=0, nRP>=1, ... , and nRP>=8
489d5531 13917
13918 // Binning of fAverageMultiplicity is organized as follows:
13919 // 1st bin: all events (including the empty ones)
13920 // 2nd bin: event with # of RPs greater or equal to 1
13921 // 3rd bin: event with # of RPs greater or equal to 2
13922 // 4th bin: event with # of RPs greater or equal to 3
13923 // 5th bin: event with # of RPs greater or equal to 4
13924 // 6th bin: event with # of RPs greater or equal to 5
13925 // 7th bin: event with # of RPs greater or equal to 6
13926 // 8th bin: event with # of RPs greater or equal to 7
13927 // 9th bin: event with # of RPs greater or equal to 8
13928
489d5531 13929 if(nRP<0)
13930 {
b77b6434 13931 cout<<endl;
13932 cout<<" WARNING (QC): nRP<0 in in AFAWQC::FAM() !!!!"<<endl;
13933 cout<<endl;
489d5531 13934 exit(0);
13935 }
13936
13937 for(Int_t i=0;i<9;i++)
13938 {
b77b6434 13939 if(nRP>=i){fAvMultiplicity->Fill(i+0.5,nRP,1);}
489d5531 13940 }
13941
13942} // end of AliFlowAnalysisWithQCumulants::FillAverageMultiplicities(nRP)
13943
e1d101a6 13944//=======================================================================================================================
489d5531 13945
489d5531 13946void AliFlowAnalysisWithQCumulants::CalculateCumulantsIntFlow()
b3dacf6b 13947{
b92ea2b9 13948 // a) Calculate Q-cumulants from the measured multiparticle correlations;
13949 // b) Propagate the statistical errors from measured multiparticle correlations to statistical errors of Q-cumulants;
13950 // c) Remark: Q-cumulants calculated in this method are biased by non-uniform acceptance of detector !!!!
13951 // Method CalculateQcumulantsCorrectedForNUAIntFlow() is called afterwards to correct for this bias;
13952 // d) Store the results and statistical error of Q-cumulants in histogram fIntFlowQcumulants.
13953 // Binning of fIntFlowQcumulants is organized as follows:
489d5531 13954 //
b3dacf6b 13955 // 1st bin: QC{2}
13956 // 2nd bin: QC{4}
13957 // 3rd bin: QC{6}
13958 // 4th bin: QC{8}
13959 //
489d5531 13960
b3dacf6b 13961 // Correlations:
489d5531 13962 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
13963 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
13964 Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
13965 Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
b3dacf6b 13966 // Statistical errors of average 2-, 4-, 6- and 8-particle azimuthal correlations:
489d5531 13967 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1); // statistical error of <2>
13968 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2); // statistical error of <4>
13969 Double_t sixError = fIntFlowCorrelationsHist->GetBinError(3); // statistical error of <6>
13970 Double_t eightError = fIntFlowCorrelationsHist->GetBinError(4); // statistical error of <8>
b3dacf6b 13971 // Covariances (multiplied by prefactor depending on weights - see comments in CalculateCovariancesIntFlow()):
8e1cefdd 13972 Double_t wCov24 = 0.; // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
13973 Double_t wCov26 = 0.; // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
13974 Double_t wCov28 = 0.; // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
13975 Double_t wCov46 = 0.; // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
13976 Double_t wCov48 = 0.; // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
13977 Double_t wCov68 = 0.; // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
13978 if(!fForgetAboutCovariances)
13979 {
13980 wCov24 = fIntFlowCovariances->GetBinContent(1); // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
13981 wCov26 = fIntFlowCovariances->GetBinContent(2); // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
13982 wCov28 = fIntFlowCovariances->GetBinContent(3); // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
13983 wCov46 = fIntFlowCovariances->GetBinContent(4); // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
13984 wCov48 = fIntFlowCovariances->GetBinContent(5); // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
13985 wCov68 = fIntFlowCovariances->GetBinContent(6); // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
13986 }
489d5531 13987 // Q-cumulants:
13988 Double_t qc2 = 0.; // QC{2}
13989 Double_t qc4 = 0.; // QC{4}
13990 Double_t qc6 = 0.; // QC{6}
13991 Double_t qc8 = 0.; // QC{8}
b3dacf6b 13992 if(TMath::Abs(two) > 0.){qc2 = two;}
13993 if(TMath::Abs(four) > 0.){qc4 = four-2.*pow(two,2.);}
13994 if(TMath::Abs(six) > 0.){qc6 = six-9.*two*four+12.*pow(two,3.);}
13995 if(TMath::Abs(eight) > 0.){qc8 = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);}
13996 // Statistical errors of Q-cumulants:
489d5531 13997 Double_t qc2Error = 0.;
13998 Double_t qc4Error = 0.;
13999 Double_t qc6Error = 0.;
b3dacf6b 14000 Double_t qc8Error = 0.;
14001 // Squared statistical errors of Q-cumulants:
489d5531 14002 //Double_t qc2ErrorSquared = 0.;
14003 Double_t qc4ErrorSquared = 0.;
14004 Double_t qc6ErrorSquared = 0.;
b3dacf6b 14005 Double_t qc8ErrorSquared = 0.;
14006 // Statistical error of QC{2}:
14007 qc2Error = twoError;
14008 // Statistical error of QC{4}:
489d5531 14009 qc4ErrorSquared = 16.*pow(two,2.)*pow(twoError,2)+pow(fourError,2.)
14010 - 8.*two*wCov24;
14011 if(qc4ErrorSquared>0.)
14012 {
14013 qc4Error = pow(qc4ErrorSquared,0.5);
14014 } else
14015 {
b3dacf6b 14016 cout<<" WARNING (QC): Statistical error of QC{4} is imaginary !!!!"<<endl;
14017 }
14018 // Statistical error of QC{6}:
489d5531 14019 qc6ErrorSquared = 81.*pow(4.*pow(two,2.)-four,2.)*pow(twoError,2.)
14020 + 81.*pow(two,2.)*pow(fourError,2.)
14021 + pow(sixError,2.)
14022 - 162.*two*(4.*pow(two,2.)-four)*wCov24
14023 + 18.*(4.*pow(two,2.)-four)*wCov26
b3dacf6b 14024 - 18.*two*wCov46;
489d5531 14025 if(qc6ErrorSquared>0.)
14026 {
14027 qc6Error = pow(qc6ErrorSquared,0.5);
14028 } else
14029 {
b3dacf6b 14030 cout<<" WARNING (QC): Statistical error of QC{6} is imaginary !!!!"<<endl;
14031 }
14032 // Statistical error of QC{8}:
489d5531 14033 qc8ErrorSquared = 256.*pow(36.*pow(two,3.)-18.*four*two+six,2.)*pow(twoError,2.)
14034 + 1296.*pow(4.*pow(two,2.)-four,2.)*pow(fourError,2.)
14035 + 256.*pow(two,2.)*pow(sixError,2.)
14036 + pow(eightError,2.)
14037 - 1152.*(36.*pow(two,3.)-18.*four*two+six)*(4.*pow(two,2.)-four)*wCov24
14038 + 512.*two*(36.*pow(two,3.)-18.*four*two+six)*wCov26
14039 - 32.*(36.*pow(two,3.)-18.*four*two+six)*wCov28
14040 - 1152.*two*(4.*pow(two,2.)-four)*wCov46
14041 + 72.*(4.*pow(two,2.)-four)*wCov48
14042 - 32.*two*wCov68;
14043 if(qc8ErrorSquared>0.)
14044 {
14045 qc8Error = pow(qc8ErrorSquared,0.5);
14046 } else
14047 {
b3dacf6b 14048 cout<<"WARNING (QC): Statistical error of QC{8} is imaginary !!!!"<<endl;
489d5531 14049 }
b3dacf6b 14050 // Store the results and statistical errors for Q-cumulants:
14051 if(TMath::Abs(qc2)>0.)
14052 {
14053 fIntFlowQcumulants->SetBinContent(1,qc2);
14054 fIntFlowQcumulants->SetBinError(1,qc2Error);
14055 }
14056 if(TMath::Abs(qc4)>0.)
14057 {
14058 fIntFlowQcumulants->SetBinContent(2,qc4);
14059 fIntFlowQcumulants->SetBinError(2,qc4Error);
14060 }
14061 if(TMath::Abs(qc6)>0.)
14062 {
14063 fIntFlowQcumulants->SetBinContent(3,qc6);
14064 fIntFlowQcumulants->SetBinError(3,qc6Error);
14065 }
14066 if(TMath::Abs(qc8)>0.)
14067 {
14068 fIntFlowQcumulants->SetBinContent(4,qc8);
14069 fIntFlowQcumulants->SetBinError(4,qc8Error);
14070 }
14071
14072 // Versus multiplicity:
14073 if(!fCalculateCumulantsVsM){return;}
9da1a4f3 14074 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
b3dacf6b 14075 Double_t value[4] = {0.}; // QCs vs M
14076 Double_t error[4] = {0.}; // error of QCs vs M
14077 Double_t dSum1[4] = {0.}; // sum value_i/(error_i)^2
14078 Double_t dSum2[4] = {0.}; // sum 1/(error_i)^2
9da1a4f3 14079 for(Int_t b=1;b<=nBins;b++)
14080 {
b3dacf6b 14081 // Correlations:
9da1a4f3 14082 two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>>
14083 four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>>
14084 six = fIntFlowCorrelationsVsMHist[2]->GetBinContent(b); // <<6>>
14085 eight = fIntFlowCorrelationsVsMHist[3]->GetBinContent(b); // <<8>>
b3dacf6b 14086 // Statistical errors of average 2-, 4-, 6- and 8-particle azimuthal correlations:
9da1a4f3 14087 twoError = fIntFlowCorrelationsVsMHist[0]->GetBinError(b); // statistical error of <2>
14088 fourError = fIntFlowCorrelationsVsMHist[1]->GetBinError(b); // statistical error of <4>
14089 sixError = fIntFlowCorrelationsVsMHist[2]->GetBinError(b); // statistical error of <6>
14090 eightError = fIntFlowCorrelationsVsMHist[3]->GetBinError(b); // statistical error of <8>
b3dacf6b 14091 // Covariances (multiplied by prefactor depending on weights - see comments in CalculateCovariancesIntFlow()):
8e1cefdd 14092 if(!fForgetAboutCovariances)
14093 {
14094 wCov24 = fIntFlowCovariancesVsM[0]->GetBinContent(b); // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14095 wCov26 = fIntFlowCovariancesVsM[1]->GetBinContent(b); // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14096 wCov28 = fIntFlowCovariancesVsM[2]->GetBinContent(b); // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14097 wCov46 = fIntFlowCovariancesVsM[3]->GetBinContent(b); // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14098 wCov48 = fIntFlowCovariancesVsM[4]->GetBinContent(b); // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14099 wCov68 = fIntFlowCovariancesVsM[5]->GetBinContent(b); // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
14100 }
9da1a4f3 14101 // Q-cumulants:
14102 qc2 = 0.; // QC{2}
14103 qc4 = 0.; // QC{4}
14104 qc6 = 0.; // QC{6}
14105 qc8 = 0.; // QC{8}
b3dacf6b 14106 if(TMath::Abs(two) > 0.){qc2 = two;}
14107 if(TMath::Abs(four) > 0.){qc4 = four-2.*pow(two,2.);}
14108 if(TMath::Abs(six) > 0.){qc6 = six-9.*two*four+12.*pow(two,3.);}
14109 if(TMath::Abs(eight) > 0.){qc8 = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);}
14110 // Statistical errors of Q-cumulants:
9da1a4f3 14111 qc2Error = 0.;
14112 qc4Error = 0.;
14113 qc6Error = 0.;
b3dacf6b 14114 qc8Error = 0.;
14115 // Squared statistical errors of Q-cumulants:
9da1a4f3 14116 //Double_t qc2ErrorSquared = 0.;
14117 qc4ErrorSquared = 0.;
14118 qc6ErrorSquared = 0.;
b3dacf6b 14119 qc8ErrorSquared = 0.;
14120 // Statistical error of QC{2}:
14121 qc2Error = twoError;
14122 // Statistical error of QC{4}:
9da1a4f3 14123 qc4ErrorSquared = 16.*pow(two,2.)*pow(twoError,2)+pow(fourError,2.)
14124 - 8.*two*wCov24;
14125 if(qc4ErrorSquared>0.)
14126 {
14127 qc4Error = pow(qc4ErrorSquared,0.5);
14128 } else
14129 {
14130 // cout<<"WARNING: Statistical error of QC{4} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
b3dacf6b 14131 }
14132 // Statistical error of QC{6}:
9da1a4f3 14133 qc6ErrorSquared = 81.*pow(4.*pow(two,2.)-four,2.)*pow(twoError,2.)
14134 + 81.*pow(two,2.)*pow(fourError,2.)
14135 + pow(sixError,2.)
14136 - 162.*two*(4.*pow(two,2.)-four)*wCov24
14137 + 18.*(4.*pow(two,2.)-four)*wCov26
b3dacf6b 14138 - 18.*two*wCov46;
9da1a4f3 14139 if(qc6ErrorSquared>0.)
14140 {
14141 qc6Error = pow(qc6ErrorSquared,0.5);
14142 } else
14143 {
14144 // cout<<"WARNING: Statistical error of QC{6} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
b3dacf6b 14145 }
14146 // Statistical error of QC{8}:
9da1a4f3 14147 qc8ErrorSquared = 256.*pow(36.*pow(two,3.)-18.*four*two+six,2.)*pow(twoError,2.)
14148 + 1296.*pow(4.*pow(two,2.)-four,2.)*pow(fourError,2.)
14149 + 256.*pow(two,2.)*pow(sixError,2.)
14150 + pow(eightError,2.)
14151 - 1152.*(36.*pow(two,3.)-18.*four*two+six)*(4.*pow(two,2.)-four)*wCov24
14152 + 512.*two*(36.*pow(two,3.)-18.*four*two+six)*wCov26
14153 - 32.*(36.*pow(two,3.)-18.*four*two+six)*wCov28
14154 - 1152.*two*(4.*pow(two,2.)-four)*wCov46
14155 + 72.*(4.*pow(two,2.)-four)*wCov48
14156 - 32.*two*wCov68;
14157 if(qc8ErrorSquared>0.)
14158 {
14159 qc8Error = pow(qc8ErrorSquared,0.5);
14160 } else
14161 {
14162 // cout<<"WARNING: Statistical error of QC{8} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
14163 }
b3dacf6b 14164 // Store the results and statistical errors for Q-cumulants:
14165 if(TMath::Abs(qc2)>0.)
14166 {
14167 fIntFlowQcumulantsVsM[0]->SetBinContent(b,qc2);
14168 fIntFlowQcumulantsVsM[0]->SetBinError(b,qc2Error);
14169 }
14170 if(TMath::Abs(qc4)>0.)
14171 {
14172 fIntFlowQcumulantsVsM[1]->SetBinContent(b,qc4);
14173 fIntFlowQcumulantsVsM[1]->SetBinError(b,qc4Error);
14174 }
14175 if(TMath::Abs(qc6)>0.)
14176 {
14177 fIntFlowQcumulantsVsM[2]->SetBinContent(b,qc6);
14178 fIntFlowQcumulantsVsM[2]->SetBinError(b,qc6Error);
14179 }
14180 if(TMath::Abs(qc8)>0.)
14181 {
14182 fIntFlowQcumulantsVsM[3]->SetBinContent(b,qc8);
14183 fIntFlowQcumulantsVsM[3]->SetBinError(b,qc8Error);
14184 }
14185 // Rebin in M:
14186 for(Int_t co=0;co<4;co++)
14187 {
b40a910e 14188 if(fIntFlowCorrelationsVsMPro[co]->GetBinEffectiveEntries(b)<2){continue;}
b3dacf6b 14189 value[co] = fIntFlowQcumulantsVsM[co]->GetBinContent(b);
14190 error[co] = fIntFlowQcumulantsVsM[co]->GetBinError(b);
14191 if(error[co]>0.)
14192 {
14193 dSum1[co]+=value[co]/(error[co]*error[co]);
14194 dSum2[co]+=1./(error[co]*error[co]);
14195 }
14196 } // end of for(Int_t co=0;co<4;co++)
9da1a4f3 14197 } // end of for(Int_t b=1;b<=nBins;b++)
b3dacf6b 14198 // Store rebinned Q-cumulants:
14199 for(Int_t co=0;co<4;co++)
14200 {
14201 if(dSum2[co]>0.)
14202 {
14203 fIntFlowQcumulantsRebinnedInM->SetBinContent(co+1,dSum1[co]/dSum2[co]);
14204 fIntFlowQcumulantsRebinnedInM->SetBinError(co+1,pow(1./dSum2[co],0.5));
14205 }
14206 } // end of for(Int_t co=0;co<4;co++)
14207
489d5531 14208} // end of AliFlowAnalysisWithQCumulants::CalculateCumulantsIntFlow()
14209
489d5531 14210//================================================================================================================================
14211
b92ea2b9 14212void AliFlowAnalysisWithQCumulants::CalculateReferenceFlow()
489d5531 14213{
b92ea2b9 14214 // a) Calculate the final results for reference flow estimates from Q-cumulants;
14215 // b) Propagate the statistical errors to reference flow estimates from statistical error of Q-cumulants;
0328db2d 14216 // c) Store the results and statistical errors of reference flow estimates in histogram fIntFlow.
489d5531 14217 // Binning of fIntFlow is organized as follows:
14218 //
b3dacf6b 14219 // 1st bin: v{2,QC}
14220 // 2nd bin: v{4,QC}
14221 // 3rd bin: v{6,QC}
14222 // 4th bin: v{8,QC}
14223 //
489d5531 14224
b3dacf6b 14225 // Reference flow estimates:
489d5531 14226 Double_t v2 = 0.; // v{2,QC}
14227 Double_t v4 = 0.; // v{4,QC}
14228 Double_t v6 = 0.; // v{6,QC}
14229 Double_t v8 = 0.; // v{8,QC}
b3dacf6b 14230 // Reference flow's statistical errors:
14231 Double_t v2Error = 0.; // v{2,QC} stat. error
14232 Double_t v4Error = 0.; // v{4,QC} stat. error
14233 Double_t v6Error = 0.; // v{6,QC} stat. error
14234 Double_t v8Error = 0.; // v{8,QC} stat. error
14235
b92ea2b9 14236 // Q-cumulants:
14237 Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); // QC{2}
14238 Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); // QC{4}
14239 Double_t qc6 = fIntFlowQcumulants->GetBinContent(3); // QC{6}
14240 Double_t qc8 = fIntFlowQcumulants->GetBinContent(4); // QC{8}
14241 // Q-cumulants's statistical errors:
14242 Double_t qc2Error = fIntFlowQcumulants->GetBinError(1); // QC{2} stat. error
14243 Double_t qc4Error = fIntFlowQcumulants->GetBinError(2); // QC{4} stat. error
14244 Double_t qc6Error = fIntFlowQcumulants->GetBinError(3); // QC{6} stat. error
14245 Double_t qc8Error = fIntFlowQcumulants->GetBinError(4); // QC{8} stat. error
14246 // Calculate reference flow estimates from Q-cumulants:
1268c371 14247 if(qc2>=0.){v2 = pow(qc2,0.5);}
b92ea2b9 14248 if(qc4<=0.){v4 = pow(-1.*qc4,1./4.);}
14249 if(qc6>=0.){v6 = pow((1./4.)*qc6,1./6.);}
14250 if(qc8<=0.){v8 = pow((-1./33.)*qc8,1./8.);}
14251 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14252 if(qc2>0.){v2Error = (1./2.)*pow(qc2,-0.5)*qc2Error;}
b92ea2b9 14253 if(qc4<0.){v4Error = (1./4.)*pow(-qc4,-3./4.)*qc4Error;}
14254 if(qc6>0.){v6Error = (1./6.)*pow(2.,-1./3.)*pow(qc6,-5./6.)*qc6Error;}
14255 if(qc8<0.){v8Error = (1./8.)*pow(33.,-1./8.)*pow(-qc8,-7./8.)*qc8Error;}
14256 // Print warnings for the 'wrong sign' cumulants:
14257 if(TMath::Abs(v2) < 1.e-44)
14258 {
14259 cout<<" WARNING: Wrong sign QC{2}, couldn't calculate v{2,QC} !!!!"<<endl;
14260 }
14261 if(TMath::Abs(v4) < 1.e-44)
14262 {
14263 cout<<" WARNING: Wrong sign QC{4}, couldn't calculate v{4,QC} !!!!"<<endl;
14264 }
14265 if(TMath::Abs(v6) < 1.e-44)
14266 {
14267 cout<<" WARNING: Wrong sign QC{6}, couldn't calculate v{6,QC} !!!!"<<endl;
14268 }
14269 if(TMath::Abs(v8) < 1.e-44)
14270 {
14271 cout<<" WARNING: Wrong sign QC{8}, couldn't calculate v{8,QC} !!!!"<<endl;
14272 }
14273 // Store the results and statistical errors of integrated flow estimates:
14274 fIntFlow->SetBinContent(1,v2);
14275 fIntFlow->SetBinError(1,v2Error);
14276 fIntFlow->SetBinContent(2,v4);
14277 fIntFlow->SetBinError(2,v4Error);
14278 fIntFlow->SetBinContent(3,v6);
14279 fIntFlow->SetBinError(3,v6Error);
14280 fIntFlow->SetBinContent(4,v8);
14281 fIntFlow->SetBinError(4,v8Error);
14282
14283 // Versus multiplicity:
14284 if(!fCalculateCumulantsVsM){return;}
14285 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
14286 for(Int_t b=1;b<=nBins;b++)
9da1a4f3 14287 {
14288 // Q-cumulants:
b92ea2b9 14289 Double_t qc2VsM = fIntFlowQcumulantsVsM[0]->GetBinContent(b); // QC{2}
14290 Double_t qc4VsM = fIntFlowQcumulantsVsM[1]->GetBinContent(b); // QC{4}
14291 Double_t qc6VsM = fIntFlowQcumulantsVsM[2]->GetBinContent(b); // QC{6}
14292 Double_t qc8VsM = fIntFlowQcumulantsVsM[3]->GetBinContent(b); // QC{8}
b3dacf6b 14293 // Q-cumulants's statistical errors:
b92ea2b9 14294 Double_t qc2ErrorVsM = fIntFlowQcumulantsVsM[0]->GetBinError(b); // QC{2} stat. error
14295 Double_t qc4ErrorVsM = fIntFlowQcumulantsVsM[1]->GetBinError(b); // QC{4} stat. error
14296 Double_t qc6ErrorVsM = fIntFlowQcumulantsVsM[2]->GetBinError(b); // QC{6} stat. error
14297 Double_t qc8ErrorVsM = fIntFlowQcumulantsVsM[3]->GetBinError(b); // QC{8} stat. error
b3dacf6b 14298 // Reference flow estimates:
b92ea2b9 14299 Double_t v2VsM = 0.; // v{2,QC}
14300 Double_t v4VsM = 0.; // v{4,QC}
14301 Double_t v6VsM = 0.; // v{6,QC}
14302 Double_t v8VsM = 0.; // v{8,QC}
14303 // Reference flow estimates errors:
14304 Double_t v2ErrorVsM = 0.; // v{2,QC} stat. error
14305 Double_t v4ErrorVsM = 0.; // v{4,QC} stat. error
14306 Double_t v6ErrorVsM = 0.; // v{6,QC} stat. error
14307 Double_t v8ErrorVsM = 0.; // v{8,QC} stat. error
b3dacf6b 14308 // Calculate reference flow estimates from Q-cumulants:
1268c371 14309 if(qc2VsM>=0.){v2VsM = pow(qc2VsM,0.5);}
b92ea2b9 14310 if(qc4VsM<=0.){v4VsM = pow(-1.*qc4VsM,1./4.);}
14311 if(qc6VsM>=0.){v6VsM = pow((1./4.)*qc6VsM,1./6.);}
14312 if(qc8VsM<=0.){v8VsM = pow((-1./33.)*qc8VsM,1./8.);}
b3dacf6b 14313 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14314 if(qc2VsM>0.){v2ErrorVsM = (1./2.)*pow(qc2VsM,-0.5)*qc2ErrorVsM;}
b92ea2b9 14315 if(qc4VsM<0.){v4ErrorVsM = (1./4.)*pow(-qc4VsM,-3./4.)*qc4ErrorVsM;}
14316 if(qc6VsM>0.){v6ErrorVsM = (1./6.)*pow(2.,-1./3.)*pow(qc6VsM,-5./6.)*qc6ErrorVsM;}
14317 if(qc8VsM<0.){v8ErrorVsM = (1./8.)*pow(33.,-1./8.)*pow(-qc8VsM,-7./8.)*qc8ErrorVsM;}
b3dacf6b 14318 // Store the results and statistical errors of integrated flow estimates:
b92ea2b9 14319 fIntFlowVsM[0]->SetBinContent(b,v2VsM);
14320 fIntFlowVsM[0]->SetBinError(b,v2ErrorVsM);
14321 fIntFlowVsM[1]->SetBinContent(b,v4VsM);
14322 fIntFlowVsM[1]->SetBinError(b,v4ErrorVsM);
14323 fIntFlowVsM[2]->SetBinContent(b,v6VsM);
14324 fIntFlowVsM[2]->SetBinError(b,v6ErrorVsM);
14325 fIntFlowVsM[3]->SetBinContent(b,v8VsM);
14326 fIntFlowVsM[3]->SetBinError(b,v8ErrorVsM);
14327 } // end of for(Int_t b=1;b<=nBins;b++)
14328
14329 // 'Rebinned in M' calculation: // to be improved - this can be implemented better:
14330 // Reference flow estimates:
14331 Double_t v2RebinnedInM = 0.; // v{2,QC}
14332 Double_t v4RebinnedInM = 0.; // v{4,QC}
14333 Double_t v6RebinnedInM = 0.; // v{6,QC}
14334 Double_t v8RebinnedInM = 0.; // v{8,QC}
14335 // Reference flow's statistical errors:
14336 Double_t v2ErrorRebinnedInM = 0.; // v{2,QC} stat. error
14337 Double_t v4ErrorRebinnedInM = 0.; // v{4,QC} stat. error
14338 Double_t v6ErrorRebinnedInM = 0.; // v{6,QC} stat. error
14339 Double_t v8ErrorRebinnedInM = 0.; // v{8,QC} stat. error
14340 // Q-cumulants:
14341 Double_t qc2RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(1); // QC{2}
14342 Double_t qc4RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(2); // QC{4}
14343 Double_t qc6RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(3); // QC{6}
14344 Double_t qc8RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(4); // QC{8}
14345 // Q-cumulants's statistical errors:
14346 Double_t qc2ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(1); // QC{2} stat. error
14347 Double_t qc4ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(2); // QC{4} stat. error
14348 Double_t qc6ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(3); // QC{6} stat. error
14349 Double_t qc8ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(4); // QC{8} stat. error
14350 // Calculate reference flow estimates from Q-cumulants:
1268c371 14351 if(qc2RebinnedInM>=0.){v2RebinnedInM = pow(qc2RebinnedInM,0.5);}
b92ea2b9 14352 if(qc4RebinnedInM<=0.){v4RebinnedInM = pow(-1.*qc4RebinnedInM,1./4.);}
14353 if(qc6RebinnedInM>=0.){v6RebinnedInM = pow((1./4.)*qc6RebinnedInM,1./6.);}
14354 if(qc8RebinnedInM<=0.){v8RebinnedInM = pow((-1./33.)*qc8RebinnedInM,1./8.);}
14355 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14356 if(qc2RebinnedInM>0.){v2ErrorRebinnedInM = (1./2.)*pow(qc2RebinnedInM,-0.5)*qc2ErrorRebinnedInM;}
b92ea2b9 14357 if(qc4RebinnedInM<0.){v4ErrorRebinnedInM = (1./4.)*pow(-qc4RebinnedInM,-3./4.)*qc4ErrorRebinnedInM;}
14358 if(qc6RebinnedInM>0.){v6ErrorRebinnedInM = (1./6.)*pow(2.,-1./3.)*pow(qc6RebinnedInM,-5./6.)*qc6ErrorRebinnedInM;}
14359 if(qc8RebinnedInM<0.){v8ErrorRebinnedInM = (1./8.)*pow(33.,-1./8.)*pow(-qc8RebinnedInM,-7./8.)*qc8ErrorRebinnedInM;}
14360 // Print warnings for the 'wrong sign' cumulants:
14361 if(TMath::Abs(v2RebinnedInM) < 1.e-44)
14362 {
14363 cout<<" WARNING: Wrong sign QC{2} rebinned in M, couldn't calculate v{2,QC} !!!!"<<endl;
14364 }
14365 if(TMath::Abs(v4RebinnedInM) < 1.e-44)
14366 {
14367 cout<<" WARNING: Wrong sign QC{4} rebinned in M, couldn't calculate v{4,QC} !!!!"<<endl;
14368 }
14369 if(TMath::Abs(v6RebinnedInM) < 1.e-44)
14370 {
14371 cout<<" WARNING: Wrong sign QC{6} rebinned in M, couldn't calculate v{6,QC} !!!!"<<endl;
14372 }
14373 if(TMath::Abs(v8RebinnedInM) < 1.e-44)
14374 {
14375 cout<<" WARNING: Wrong sign QC{8} rebinned in M, couldn't calculate v{8,QC} !!!!"<<endl;
14376 }
14377 // Store the results and statistical errors of integrated flow estimates:
14378 fIntFlowRebinnedInM->SetBinContent(1,v2RebinnedInM);
14379 fIntFlowRebinnedInM->SetBinError(1,v2ErrorRebinnedInM);
14380 fIntFlowRebinnedInM->SetBinContent(2,v4RebinnedInM);
14381 fIntFlowRebinnedInM->SetBinError(2,v4ErrorRebinnedInM);
14382 fIntFlowRebinnedInM->SetBinContent(3,v6RebinnedInM);
14383 fIntFlowRebinnedInM->SetBinError(3,v6ErrorRebinnedInM);
14384 fIntFlowRebinnedInM->SetBinContent(4,v8RebinnedInM);
14385 fIntFlowRebinnedInM->SetBinError(4,v8ErrorRebinnedInM);
14386
14387} // end of AliFlowAnalysisWithQCumulants::CalculateReferenceFlow()
489d5531 14388
489d5531 14389//================================================================================================================================
14390
489d5531 14391void AliFlowAnalysisWithQCumulants::FillCommonHistResultsIntFlow()
14392{
0dd3b008 14393 // Fill in AliFlowCommonHistResults histograms relevant for reference flow.
489d5531 14394
0dd3b008 14395 // There are two possibilities here:
14396 // a) Store minimum bias reference flow - use SetMinimumBiasReferenceFlow(kTRUE). This result is
14397 // biased by the interplay between nonflow correlations and multiplicity fluctuations and is
14398 // also stored in local histogram fIntFlow;
14399 // b) Store reference flow obtained from flow analysis performed at fixed multiplicity and
14400 // rebinned only at the end of the day - use SetMinimumBiasReferenceFlow(kFALSE). This result
14401 // is also stored in local histogram fIntFlowRebinnedInM.
489d5531 14402
0dd3b008 14403 // Reference flow estimates:
14404 Double_t v[4] = {0.};
14405 // Statistical errors of reference flow estimates:
14406 Double_t vError[4] = {0.};
489d5531 14407
0dd3b008 14408 for(Int_t b=0;b<4;b++)
14409 {
14410 if(fMinimumBiasReferenceFlow)
14411 {
14412 v[b] = fIntFlow->GetBinContent(b+1);
14413 vError[b] = fIntFlow->GetBinError(b+1);
14414 } else
14415 {
14416 v[b] = fIntFlowRebinnedInM->GetBinContent(b+1);
14417 vError[b] = fIntFlowRebinnedInM->GetBinError(b+1);
14418 }
14419 } // end of for(Int_t b=0;b<4;b++)
14420
14421 // Fill AliFlowCommonHistResults histogram:
14422 fCommonHistsResults2nd->FillIntegratedFlow(v[0],vError[0]); // to be improved (hardwired 2nd in the name)
14423 fCommonHistsResults4th->FillIntegratedFlow(v[1],vError[1]); // to be improved (hardwired 4th in the name)
403e3389 14424 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)) // to be improved (calculate also 6th and 8th order)
489d5531 14425 {
0dd3b008 14426 fCommonHistsResults6th->FillIntegratedFlow(v[2],vError[2]); // to be improved (hardwired 6th in the name)
14427 fCommonHistsResults8th->FillIntegratedFlow(v[3],vError[3]); // to be improved (hardwired 8th in the name)
489d5531 14428 }
14429
14430} // end of AliFlowAnalysisWithQCumulants::FillCommonHistResultsIntFlow()
14431
489d5531 14432//================================================================================================================================
14433
489d5531 14434void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelationsUsingParticleWeights()
14435{
14436 // Calculate all correlations needed for integrated flow using particle weights.
14437
14438 // Remark 1: When particle weights are used the binning of fIntFlowCorrelationAllPro is organized as follows:
14439 //
14440 // 1st bin: <2>_{1n|1n} = two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
14441 // 2nd bin: <2>_{2n|2n} = two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
14442 // 3rd bin: <2>_{3n|3n} = two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
14443 // 4th bin: <2>_{4n|4n} = two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
14444 // 5th bin: ---- EMPTY ----
14445 // 6th bin: <3>_{2n|1n,1n} = three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
14446 // 7th bin: <3>_{3n|2n,1n} = ...
14447 // 8th bin: <3>_{4n|2n,2n} = ...
14448 // 9th bin: <3>_{4n|3n,1n} = ...
14449 // 10th bin: ---- EMPTY ----
14450 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
14451 // 12th bin: <4>_{2n,1n|2n,1n} = ...
14452 // 13th bin: <4>_{2n,2n|2n,2n} = ...
14453 // 14th bin: <4>_{3n|1n,1n,1n} = ...
14454 // 15th bin: <4>_{3n,1n|3n,1n} = ...
14455 // 16th bin: <4>_{3n,1n|2n,2n} = ...
14456 // 17th bin: <4>_{4n|2n,1n,1n} = ...
14457 // 18th bin: ---- EMPTY ----
14458 // 19th bin: <5>_{2n|1n,1n,1n,1n} = ...
14459 // 20th bin: <5>_{2n,2n|2n,1n,1n} = ...
14460 // 21st bin: <5>_{3n,1n|2n,1n,1n} = ...
14461 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = ...
14462 // 23rd bin: ---- EMPTY ----
14463 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = ...
14464 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = ...
14465 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = ...
14466 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = ...
14467 // 28th bin: ---- EMPTY ----
14468 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = ...
14469 // 30th bin: ---- EMPTY ----
14470 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = ...
14471
14472 // Remark 2: When particle weights are used there are some extra correlations. They are stored in
14473 // fIntFlowExtraCorrelationsPro binning of which is organized as follows:
14474
14475 // 1st bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
14476 // 2nd bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
14477
14478 // multiplicity (number of particles used to determine the reaction plane)
1268c371 14479 Double_t dMult = (*fSpk)(0,0);
489d5531 14480
14481 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
14482 Double_t dReQ1n1k = (*fReQ)(0,1);
14483 Double_t dReQ2n2k = (*fReQ)(1,2);
14484 Double_t dReQ3n3k = (*fReQ)(2,3);
14485 Double_t dReQ4n4k = (*fReQ)(3,4);
14486 Double_t dReQ1n3k = (*fReQ)(0,3);
14487 Double_t dImQ1n1k = (*fImQ)(0,1);
14488 Double_t dImQ2n2k = (*fImQ)(1,2);
14489 Double_t dImQ3n3k = (*fImQ)(2,3);
14490 Double_t dImQ4n4k = (*fImQ)(3,4);
14491 Double_t dImQ1n3k = (*fImQ)(0,3);
14492
14493 // dMs are variables introduced in order to simplify some Eqs. bellow:
14494 //..............................................................................................
1268c371 14495 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
14496 Double_t dM22 = (*fSpk)(1,2)-(*fSpk)(0,4); // dM22 = sum_{i,j=1,i!=j}^M w_i^2 w_j^2
14497 Double_t dM33 = (*fSpk)(1,3)-(*fSpk)(0,6); // dM33 = sum_{i,j=1,i!=j}^M w_i^3 w_j^3
14498 Double_t dM44 = (*fSpk)(1,4)-(*fSpk)(0,8); // dM44 = sum_{i,j=1,i!=j}^M w_i^4 w_j^4
14499 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
14500 Double_t dM211 = (*fSpk)(0,2)*(*fSpk)(1,1)-2.*(*fSpk)(0,3)*(*fSpk)(0,1)
14501 - (*fSpk)(1,2)+2.*(*fSpk)(0,4); // dM211 = sum_{i,j,k=1,i!=j!=k}^M w_i^2 w_j w_k
14502 Double_t dM1111 = (*fSpk)(3,1)-6.*(*fSpk)(0,2)*(*fSpk)(1,1)
14503 + 8.*(*fSpk)(0,3)*(*fSpk)(0,1)
14504 + 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 14505 //..............................................................................................
14506
14507 // 2-particle correlations:
14508 Double_t two1n1nW1W1 = 0.; // <w1 w2 cos(n*(phi1-phi2))>
14509 Double_t two2n2nW2W2 = 0.; // <w1^2 w2^2 cos(2n*(phi1-phi2))>
14510 Double_t two3n3nW3W3 = 0.; // <w1^3 w2^3 cos(3n*(phi1-phi2))>
14511 Double_t two4n4nW4W4 = 0.; // <w1^4 w2^4 cos(4n*(phi1-phi2))>
14512 if(dMult>1)
14513 {
14514 if(dM11)
14515 {
1268c371 14516 two1n1nW1W1 = (pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSpk)(0,2))/dM11;
489d5531 14517 // average correlation <w1 w2 cos(n*(phi1-phi2))> for single event:
14518 fIntFlowCorrelationsEBE->SetBinContent(1,two1n1nW1W1);
14519 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(1,dM11);
14520 // average correlation <w1 w2 cos(n*(phi1-phi2))> for all events:
b40a910e 14521 fIntFlowCorrelationsPro->Fill(0.5,two1n1nW1W1,dM11);
14522 // average squared correlation <w1 w2 cos(n*(phi1-phi2))> for all events:
14523 fIntFlowSquaredCorrelationsPro->Fill(0.5,two1n1nW1W1*two1n1nW1W1,dM11);
489d5531 14524 fIntFlowCorrelationsAllPro->Fill(0.5,two1n1nW1W1,dM11);
14525 }
14526 if(dM22)
14527 {
1268c371 14528 two2n2nW2W2 = (pow(dReQ2n2k,2)+pow(dImQ2n2k,2)-(*fSpk)(0,4))/dM22;
489d5531 14529 // ...
14530 // average correlation <w1^2 w2^2 cos(2n*(phi1-phi2))> for all events:
14531 fIntFlowCorrelationsAllPro->Fill(1.5,two2n2nW2W2,dM22);
14532 }
14533 if(dM33)
14534 {
1268c371 14535 two3n3nW3W3 = (pow(dReQ3n3k,2)+pow(dImQ3n3k,2)-(*fSpk)(0,6))/dM33;
489d5531 14536 // ...
14537 // average correlation <w1^3 w2^3 cos(3n*(phi1-phi2))> for all events:
14538 fIntFlowCorrelationsAllPro->Fill(2.5,two3n3nW3W3,dM33);
14539 }
14540 if(dM44)
14541 {
1268c371 14542 two4n4nW4W4 = (pow(dReQ4n4k,2)+pow(dImQ4n4k,2)-(*fSpk)(0,8))/dM44;
489d5531 14543 // ...
14544 // average correlation <w1^4 w2^4 cos(4n*(phi1-phi2))> for all events:
14545 fIntFlowCorrelationsAllPro->Fill(3.5,two4n4nW4W4,dM44);
14546 }
14547 } // end of if(dMult>1)
14548
14549 // extra 2-particle correlations:
14550 Double_t two1n1nW3W1 = 0.; // <w1^3 w2 cos(n*(phi1-phi2))>
14551 Double_t two1n1nW1W1W2 = 0.; // <w1 w2 w3^2 cos(n*(phi1-phi2))>
14552 if(dMult>1)
14553 {
14554 if(dM31)
14555 {
1268c371 14556 two1n1nW3W1 = (dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k-(*fSpk)(0,4))/dM31;
489d5531 14557 fIntFlowExtraCorrelationsPro->Fill(0.5,two1n1nW3W1,dM31);
14558 }
14559 if(dM211)
14560 {
1268c371 14561 two1n1nW1W1W2 = ((*fSpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSpk)(0,2))
489d5531 14562 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k
1268c371 14563 - (*fSpk)(0,4)))/dM211;
489d5531 14564 fIntFlowExtraCorrelationsPro->Fill(1.5,two1n1nW1W1W2,dM211);
14565 }
14566 } // end of if(dMult>1)
14567 //..............................................................................................
14568
14569 //..............................................................................................
14570 // 3-particle correlations:
14571 Double_t three2n1n1nW2W1W1 = 0.; // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
14572
14573 if(dMult>2)
14574 {
14575 if(dM211)
14576 {
14577 three2n1n1nW2W1W1 = (pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k
14578 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
14579 - pow(dReQ2n2k,2)-pow(dImQ2n2k,2)
1268c371 14580 + 2.*(*fSpk)(0,4))/dM211;
489d5531 14581 fIntFlowCorrelationsAllPro->Fill(5.5,three2n1n1nW2W1W1,dM211);
14582 }
14583 } // end of if(dMult>2)
14584 //..............................................................................................
14585
14586 //..............................................................................................
14587 // 4-particle correlations:
14588 Double_t four1n1n1n1nW1W1W1W1 = 0.; // <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
14589 if(dMult>3)
14590 {
14591 if(dM1111)
14592 {
14593 four1n1n1n1nW1W1W1W1 = (pow(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.),2)
14594 - 2.*(pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k)
14595 + 8.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
14596 + (pow(dReQ2n2k,2)+pow(dImQ2n2k,2))
1268c371 14597 - 4.*(*fSpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
14598 - 6.*(*fSpk)(0,4)+2.*(*fSpk)(1,2))/dM1111;
489d5531 14599
14600 // average correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for single event:
14601 fIntFlowCorrelationsEBE->SetBinContent(2,four1n1n1n1nW1W1W1W1);
14602 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(2,dM1111);
14603 // average correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for all events:
14604 fIntFlowCorrelationsPro->Fill(1.5,four1n1n1n1nW1W1W1W1,dM1111);
b40a910e 14605 // average squared correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for all events:
14606 fIntFlowSquaredCorrelationsPro->Fill(1.5,four1n1n1n1nW1W1W1W1*four1n1n1n1nW1W1W1W1,dM1111);
489d5531 14607 fIntFlowCorrelationsAllPro->Fill(10.5,four1n1n1n1nW1W1W1W1,dM1111);
14608 }
14609 } // end of if(dMult>3)
14610 //..............................................................................................
14611
14612} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelationsUsingParticleWeights()
14613
e1d101a6 14614//=======================================================================================================================
489d5531 14615
489d5531 14616void AliFlowAnalysisWithQCumulants::InitializeArraysForIntFlow()
14617{
14618 // Initialize all arrays used to calculate integrated flow.
14619
14620 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14621 {
14622 fIntFlowCorrectionTermsForNUAEBE[sc] = NULL;
0328db2d 14623 fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc] = NULL;
489d5531 14624 fIntFlowCorrectionTermsForNUAPro[sc] = NULL;
14625 fIntFlowCorrectionTermsForNUAHist[sc] = NULL;
b92ea2b9 14626 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2001bc3a 14627 {
14628 fIntFlowCorrectionTermsForNUAVsMPro[sc][ci] = NULL;
14629 }
0328db2d 14630 for(Int_t power=0;power<2;power++) // linear or quadratic
14631 {
14632 fIntFlowSumOfEventWeightsNUA[sc][power] = NULL;
14633 }
489d5531 14634 }
14635 for(Int_t power=0;power<2;power++) // linear or quadratic
14636 {
14637 fIntFlowSumOfEventWeights[power] = NULL;
14638 }
b3dacf6b 14639 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 14640 {
14641 fPrintFinalResults[i] = kTRUE;
14642 }
ff70ca91 14643 for(Int_t ci=0;ci<4;ci++) // correlation index or cumulant order
14644 {
14645 fIntFlowCorrelationsVsMPro[ci] = NULL;
b40a910e 14646 fIntFlowSquaredCorrelationsVsMPro[ci] = NULL;
ff70ca91 14647 fIntFlowCorrelationsVsMHist[ci] = NULL;
14648 fIntFlowQcumulantsVsM[ci] = NULL;
14649 fIntFlowVsM[ci] = NULL;
2001bc3a 14650 fIntFlowDetectorBiasVsM[ci] = NULL;
ff70ca91 14651 for(Int_t lc=0;lc<2;lc++)
14652 {
14653 fIntFlowSumOfEventWeightsVsM[ci][lc] = NULL;
14654 }
14655 }
14656 for(Int_t pi=0;pi<6;pi++) // product or covariance index
14657 {
14658 fIntFlowProductOfCorrelationsVsMPro[pi] = NULL;
14659 fIntFlowCovariancesVsM[pi] = NULL;
14660 fIntFlowSumOfProductOfEventWeightsVsM[pi] = NULL;
14661 }
403e3389 14662 for(Int_t ci=0;ci<64;ci++) // correlation index for all correlations vs M profiles (to be improved - hardwired 64)
3435cacb 14663 {
14664 fIntFlowCorrelationsAllVsMPro[ci] = NULL;
14665 }
14666
489d5531 14667} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForIntFlow()
14668
e1d101a6 14669//=======================================================================================================================
489d5531 14670
489d5531 14671void AliFlowAnalysisWithQCumulants::InitializeArraysForDiffFlow()
14672{
14673 // Initialize all arrays needed to calculate differential flow.
14674 // a) Initialize lists holding profiles;
14675 // b) Initialize lists holding histograms;
14676 // c) Initialize event-by-event quantities;
14677 // d) Initialize profiles;
14678 // e) Initialize histograms holding final results.
14679
14680 // a) Initialize lists holding profiles;
14681 for(Int_t t=0;t<2;t++) // type (RP, POI)
14682 {
14683 for(Int_t pe=0;pe<2;pe++) // pt or eta
14684 {
14685 fDiffFlowCorrelationsProList[t][pe] = NULL;
14686 fDiffFlowProductOfCorrelationsProList[t][pe] = NULL;
14687 fDiffFlowCorrectionsProList[t][pe] = NULL;
14688 }
1268c371 14689 // 2D:
14690 f2DDiffFlowCorrelationsProList[t] = NULL;
489d5531 14691 }
14692
14693 // b) Initialize lists holding histograms;
14694 for(Int_t t=0;t<2;t++) // type (RP, POI)
14695 {
14696 for(Int_t pe=0;pe<2;pe++) // pt or eta
14697 {
14698 fDiffFlowCorrelationsHistList[t][pe] = NULL;
14699 for(Int_t power=0;power<2;power++)
14700 {
14701 fDiffFlowSumOfEventWeightsHistList[t][pe][power] = NULL;
14702 } // end of for(Int_t power=0;power<2;power++)
14703 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe] = NULL;
14704 fDiffFlowCorrectionsHistList[t][pe] = NULL;
14705 fDiffFlowCovariancesHistList[t][pe] = NULL;
14706 fDiffFlowCumulantsHistList[t][pe] = NULL;
1268c371 14707 fDiffFlowDetectorBiasHistList[t][pe] = NULL;
489d5531 14708 fDiffFlowHistList[t][pe] = NULL;
14709 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
14710 } // enf of for(Int_t t=0;t<2;t++) // type (RP, POI)
14711
14712 // c) Initialize event-by-event quantities:
14713 // 1D:
14714 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
14715 {
14716 for(Int_t pe=0;pe<2;pe++) // pt or eta
14717 {
14718 for(Int_t m=0;m<4;m++) // multiple of harmonic
14719 {
14720 for(Int_t k=0;k<9;k++) // power of weight
14721 {
14722 fReRPQ1dEBE[t][pe][m][k] = NULL;
14723 fImRPQ1dEBE[t][pe][m][k] = NULL;
14724 fs1dEBE[t][pe][k] = NULL; // to be improved (this doesn't need to be within loop over m)
14725 }
14726 }
14727 }
14728 }
14729 // 1D:
14730 for(Int_t t=0;t<2;t++) // type (RP or POI)
14731 {
14732 for(Int_t pe=0;pe<2;pe++) // pt or eta
14733 {
14734 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14735 {
14736 for(Int_t cti=0;cti<9;cti++) // correction term index
14737 {
14738 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti] = NULL;
14739 }
14740 }
14741 }
14742 }
14743 // 2D:
14744 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
14745 {
14746 for(Int_t m=0;m<4;m++) // multiple of harmonic
14747 {
14748 for(Int_t k=0;k<9;k++) // power of weight
14749 {
14750 fReRPQ2dEBE[t][m][k] = NULL;
14751 fImRPQ2dEBE[t][m][k] = NULL;
14752 fs2dEBE[t][k] = NULL; // to be improved (this doesn't need to be within loop over m)
14753 }
14754 }
14755 }
14756
14757 // d) Initialize profiles:
14758 for(Int_t t=0;t<2;t++) // type: RP or POI
14759 {
14760 for(Int_t pe=0;pe<2;pe++) // pt or eta
14761 {
14762 for(Int_t ci=0;ci<4;ci++) // correlation index
14763 {
14764 fDiffFlowCorrelationsPro[t][pe][ci] = NULL;
b40a910e 14765 fDiffFlowSquaredCorrelationsPro[t][pe][ci] = NULL;
489d5531 14766 } // end of for(Int_t ci=0;ci<4;ci++)
14767 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14768 {
14769 for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14770 {
14771 fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2] = NULL;
14772 } // end of for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14773 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14774 // correction terms for nua:
14775 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14776 {
14777 for(Int_t cti=0;cti<9;cti++) // correction term index
14778 {
14779 fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] = NULL;
14780 }
14781 }
64e500e3 14782 // other differential correlators:
14783 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14784 {
14785 for(Int_t ci=0;ci<1;ci++) // correction term index
14786 {
14787 fOtherDiffCorrelators[t][pe][sc][ci] = NULL;
14788 }
14789 }
489d5531 14790 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
1268c371 14791 for(Int_t ci=0;ci<4;ci++) // correlation index
14792 {
14793 f2DDiffFlowCorrelationsPro[t][ci] = NULL;
14794 }
489d5531 14795 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
14796
14797 // e) Initialize histograms holding final results.
14798 for(Int_t t=0;t<2;t++) // type: RP or POI
14799 {
14800 for(Int_t pe=0;pe<2;pe++) // pt or eta
14801 {
14802 for(Int_t ci=0;ci<4;ci++) // correlation index
14803 {
14804 fDiffFlowCorrelationsHist[t][pe][ci] = NULL;
14805 fDiffFlowCumulants[t][pe][ci] = NULL;
1268c371 14806 fDiffFlowDetectorBias[t][pe][ci] = NULL;
489d5531 14807 fDiffFlow[t][pe][ci] = NULL;
14808 } // end of for(Int_t ci=0;ci<4;ci++)
14809 for(Int_t covarianceIndex=0;covarianceIndex<5;covarianceIndex++)
14810 {
14811 fDiffFlowCovariances[t][pe][covarianceIndex] = NULL;
14812 } // end of for(Int_t covarianceIndex=0;covarianceIndex<5;covarianceIndex++)
14813 // correction terms for nua:
14814 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14815 {
14816 for(Int_t cti=0;cti<9;cti++) // correction term index
14817 {
14818 fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] = NULL;
14819 }
14820 }
14821 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
1268c371 14822 for(Int_t ci=0;ci<4;ci++) // correlation index
14823 {
14824 f2DDiffFlowCumulants[t][ci] = NULL;
14825 f2DDiffFlow[t][ci] = NULL;
14826 }
489d5531 14827 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
14828
14829 // sum of event weights for reduced correlations:
14830 for(Int_t t=0;t<2;t++) // type = RP or POI
14831 {
14832 for(Int_t pe=0;pe<2;pe++) // pt or eta
14833 {
14834 for(Int_t p=0;p<2;p++) // power of weight is 1 or 2
14835 {
14836 for(Int_t ew=0;ew<4;ew++) // event weight index for reduced correlations
14837 {
14838 fDiffFlowSumOfEventWeights[t][pe][p][ew] = NULL;
14839 }
14840 }
14841 }
14842 }
14843 // product of event weights for both types of correlations:
14844 for(Int_t t=0;t<2;t++) // type = RP or POI
14845 {
14846 for(Int_t pe=0;pe<2;pe++) // pt or eta
14847 {
14848 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14849 {
14850 for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14851 {
14852 fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] = NULL;
14853 }
14854 }
14855 }
14856 }
1268c371 14857
14858} // end of AliFlowAnalysisWithQCumulants::InitializeArraysForDiffFlow()
14859
e1d101a6 14860//=======================================================================================================================
489d5531 14861
1268c371 14862void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulants(TString type, TString ptOrEta)
14863{
14864 // Calculate differential flow cumulants from measured multiparticle correlations.
489d5531 14865
1268c371 14866 // REMARK: Cumulants calculated in this method are NOT corrected for non-uniform acceptance.
14867 // This correction, if enabled via setter SetApplyCorrectionForNUA(Bool_t), is applied
14868 // in the method CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
489d5531 14869
1268c371 14870 Int_t t = 0;
14871 Int_t pe = 0;
14872
14873 if(type == "RP")
14874 {
14875 t = 0;
14876 } else if(type == "POI")
14877 {
14878 t = 1;
14879 }
14880
14881 if(ptOrEta == "Pt")
14882 {
14883 pe = 0;
14884 } else if(ptOrEta == "Eta")
14885 {
14886 pe = 1;
14887 }
14888
14889 // Common:
14890 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 14891
1268c371 14892 // Correlation <<2>>:
14893 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1);
14894 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1);
489d5531 14895
1268c371 14896 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
489d5531 14897 {
1268c371 14898 // Reduced correlations:
14899 Double_t twoPrime = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b); // <<2'>>
14900 Double_t twoPrimeError = fDiffFlowCorrelationsHist[t][pe][0]->GetBinError(b); // stat. error of <<2'>>
14901 Double_t fourPrime = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b); // <<4'>>
14902 Double_t fourPrimeError = fDiffFlowCorrelationsHist[t][pe][1]->GetBinError(b); // stat. error of <<4'>>
14903 // Covariances:
14904 Double_t wCovTwoTwoReduced = fDiffFlowCovariances[t][pe][0]->GetBinContent(b); // Cov(<2>,<2'>) * prefactor(<2>,<2'>)
14905 Double_t wCovTwoFourReduced = fDiffFlowCovariances[t][pe][1]->GetBinContent(b); // Cov(<2>,<4'>) * prefactor(<2>,<4'>)
14906 Double_t wCovTwoReducedFourReduced = fDiffFlowCovariances[t][pe][4]->GetBinContent(b); // Cov(<2'>,<4'>) * prefactor(<2'>,<4'>)
14907 // QC{2'}:
14908 Double_t qc2Prime = twoPrime; // QC{2'}
14909 Double_t qc2PrimeError = twoPrimeError; // stat. error of QC{2'}
14910 fDiffFlowCumulants[t][pe][0]->SetBinContent(b,qc2Prime);
14911 fDiffFlowCumulants[t][pe][0]->SetBinError(b,qc2PrimeError);
14912 // QC{4'}:
14913 Double_t qc4Prime = fourPrime - 2.*twoPrime*two; // QC{4'} = <<4'>> - 2*<<2'>><<2>>
14914 Double_t qc4PrimeError = 0.; // stat. error of QC{4'}
14915 Double_t qc4PrimeErrorSquared = 4.*pow(twoPrime,2.)*pow(twoError,2.)
14916 + 4.*pow(two,2.)*pow(twoPrimeError,2.)
14917 + pow(fourPrimeError,2.)
14918 + 8.*two*twoPrime*wCovTwoTwoReduced
14919 - 4.*twoPrime*wCovTwoFourReduced
14920 - 4.*two*wCovTwoReducedFourReduced;
14921 if(qc4PrimeErrorSquared>0.)
14922 {
14923 qc4PrimeError = pow(qc4PrimeErrorSquared,0.5);
489d5531 14924 }
1268c371 14925 fDiffFlowCumulants[t][pe][1]->SetBinContent(b,qc4Prime);
14926 fDiffFlowCumulants[t][pe][1]->SetBinError(b,qc4PrimeError);
489d5531 14927 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 14928
1268c371 14929} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulants(TString type, Bool_t useParticleWeights, TString eventWeights);
489d5531 14930
e1d101a6 14931//=======================================================================================================================
489d5531 14932
1268c371 14933void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCumulants(TString type)
489d5531 14934{
1268c371 14935 // Calculate 2D differential cumulants.
489d5531 14936
1268c371 14937 // Remark: correction for detector effects and error propagation not implemented yet for 2D differential cumulants.
489d5531 14938
1268c371 14939 Int_t t = 0;
489d5531 14940
14941 if(type == "RP")
14942 {
1268c371 14943 t = 0;
489d5531 14944 } else if(type == "POI")
14945 {
1268c371 14946 t = 1;
14947 }
14948
14949 // Reference correlation <<2>>:
14950 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1);
489d5531 14951
1268c371 14952 // Looping over all (pt,eta) bins and calculating differential flow cumulants:
14953 for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 14954 {
14955 for(Int_t e=1;e<=fnBinsEta;e++)
14956 {
1268c371 14957 // Reduced correlations:
14958 Double_t twoPrime = f2DDiffFlowCorrelationsPro[t][0]->GetBinContent(f2DDiffFlowCorrelationsPro[t][0]->GetBin(p,e)); // <<2'>>(pt,eta)
14959 Double_t fourPrime = f2DDiffFlowCorrelationsPro[t][1]->GetBinContent(f2DDiffFlowCorrelationsPro[t][1]->GetBin(p,e)); // <<4'>>(pt,eta)
14960 // Cumulants:
14961 Double_t qc2Prime = twoPrime; // QC{2'} = <<2'>>
14962 f2DDiffFlowCumulants[t][0]->SetBinContent(f2DDiffFlowCumulants[t][0]->GetBin(p,e),qc2Prime);
14963 Double_t qc4Prime = fourPrime - 2.*twoPrime*two; // QC{4'} = <<4'>> - 2*<<2'>><<2>>
14964 f2DDiffFlowCumulants[t][1]->SetBinContent(f2DDiffFlowCumulants[t][1]->GetBin(p,e),qc4Prime);
489d5531 14965 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
489d5531 14966 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
14967
1268c371 14968} // end of void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCumulants(TString type)
489d5531 14969
e1d101a6 14970//=======================================================================================================================
489d5531 14971
489d5531 14972void AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(TString type)
14973{
1268c371 14974 // Calculate final results for integrated flow of RPs and POIs.
489d5531 14975
1268c371 14976 // to be improved - check if the integrated flow calculation here is actually correct
14977
14978 Int_t t = 0; // RP = 0, POI = 1
489d5531 14979
14980 if(type == "RP")
14981 {
1268c371 14982 t = 0;
489d5531 14983 } else if(type == "POI")
14984 {
1268c371 14985 t = 1;
14986 }
489d5531 14987
489d5531 14988 // pt yield:
14989 TH1F *yield2ndPt = NULL;
14990 TH1F *yield4thPt = NULL;
14991 TH1F *yield6thPt = NULL;
14992 TH1F *yield8thPt = NULL;
14993
14994 if(type == "POI")
14995 {
dd442cd2 14996 if(fFillMultipleControlHistograms)
14997 {
14998 yield2ndPt = (TH1F*)(fCommonHists2nd->GetHistPtPOI())->Clone();
14999 yield4thPt = (TH1F*)(fCommonHists4th->GetHistPtPOI())->Clone();
15000 yield6thPt = (TH1F*)(fCommonHists6th->GetHistPtPOI())->Clone();
15001 yield8thPt = (TH1F*)(fCommonHists8th->GetHistPtPOI())->Clone();
15002 } else
15003 {
15004 yield2ndPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15005 yield4thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15006 yield6thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15007 yield8thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15008 }
489d5531 15009 }
15010 else if(type == "RP")
15011 {
dd442cd2 15012 if(fFillMultipleControlHistograms)
15013 {
15014 yield2ndPt = (TH1F*)(fCommonHists2nd->GetHistPtRP())->Clone();
15015 yield4thPt = (TH1F*)(fCommonHists4th->GetHistPtRP())->Clone();
15016 yield6thPt = (TH1F*)(fCommonHists6th->GetHistPtRP())->Clone();
15017 yield8thPt = (TH1F*)(fCommonHists8th->GetHistPtRP())->Clone();
15018 } else
15019 {
15020 yield2ndPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15021 yield4thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15022 yield6thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15023 yield8thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15024 }
489d5531 15025 }
15026
0d11c335 15027 if(!yield2ndPt){return;}
15028 if(!yield4thPt){return;}
15029 if(!yield6thPt){return;}
15030 if(!yield8thPt){return;}
15031
489d5531 15032 Int_t nBinsPt = yield2ndPt->GetNbinsX();
15033
15034 TH1D *flow2ndPt = NULL;
15035 TH1D *flow4thPt = NULL;
15036 TH1D *flow6thPt = NULL;
15037 TH1D *flow8thPt = NULL;
15038
15039 // to be improved (hardwired pt index)
15040 flow2ndPt = (TH1D*)fDiffFlow[t][0][0]->Clone();
15041 flow4thPt = (TH1D*)fDiffFlow[t][0][1]->Clone();
15042 flow6thPt = (TH1D*)fDiffFlow[t][0][2]->Clone();
15043 flow8thPt = (TH1D*)fDiffFlow[t][0][3]->Clone();
0d11c335 15044
15045 if(!flow2ndPt){return;}
15046 if(!flow4thPt){return;}
15047 if(!flow6thPt){return;}
15048 if(!flow8thPt){return;}
489d5531 15049
15050 Double_t dvn2nd = 0., dvn4th = 0., dvn6th = 0., dvn8th = 0.; // differential flow
15051 Double_t dErrvn2nd = 0., dErrvn4th = 0., dErrvn6th = 0., dErrvn8th = 0.; // error on differential flow
15052
15053 Double_t dVn2nd = 0., dVn4th = 0., dVn6th = 0., dVn8th = 0.; // integrated flow
15054 Double_t dErrVn2nd = 0., dErrVn4th = 0., dErrVn6th = 0., dErrVn8th = 0.; // error on integrated flow
15055
15056 Double_t dYield2nd = 0., dYield4th = 0., dYield6th = 0., dYield8th = 0.; // pt yield
15057 Double_t dSum2nd = 0., dSum4th = 0., dSum6th = 0., dSum8th = 0.; // needed for normalizing integrated flow
15058
15059 // looping over pt bins:
15060 for(Int_t p=1;p<nBinsPt+1;p++)
15061 {
15062 dvn2nd = flow2ndPt->GetBinContent(p);
15063 dvn4th = flow4thPt->GetBinContent(p);
15064 dvn6th = flow6thPt->GetBinContent(p);
15065 dvn8th = flow8thPt->GetBinContent(p);
15066
15067 dErrvn2nd = flow2ndPt->GetBinError(p);
15068 dErrvn4th = flow4thPt->GetBinError(p);
15069 dErrvn6th = flow6thPt->GetBinError(p);
15070 dErrvn8th = flow8thPt->GetBinError(p);
15071
15072 dYield2nd = yield2ndPt->GetBinContent(p);
15073 dYield4th = yield4thPt->GetBinContent(p);
15074 dYield6th = yield6thPt->GetBinContent(p);
15075 dYield8th = yield8thPt->GetBinContent(p);
15076
15077 dVn2nd += dvn2nd*dYield2nd;
15078 dVn4th += dvn4th*dYield4th;
15079 dVn6th += dvn6th*dYield6th;
15080 dVn8th += dvn8th*dYield8th;
15081
15082 dSum2nd += dYield2nd;
15083 dSum4th += dYield4th;
15084 dSum6th += dYield6th;
15085 dSum8th += dYield8th;
15086
15087 dErrVn2nd += dYield2nd*dYield2nd*dErrvn2nd*dErrvn2nd; // ro be improved (check this relation)
15088 dErrVn4th += dYield4th*dYield4th*dErrvn4th*dErrvn4th;
15089 dErrVn6th += dYield6th*dYield6th*dErrvn6th*dErrvn6th;
15090 dErrVn8th += dYield8th*dYield8th*dErrvn8th*dErrvn8th;
15091
15092 } // end of for(Int_t p=1;p<nBinsPt+1;p++)
15093
15094 // normalizing the results for integrated flow:
15095 if(dSum2nd)
15096 {
15097 dVn2nd /= dSum2nd;
15098 dErrVn2nd /= (dSum2nd*dSum2nd);
15099 dErrVn2nd = TMath::Sqrt(dErrVn2nd);
15100 }
15101 if(dSum4th)
15102 {
15103 dVn4th /= dSum4th;
15104 dErrVn4th /= (dSum4th*dSum4th);
15105 dErrVn4th = TMath::Sqrt(dErrVn4th);
15106 }
15107 //if(dSum6th) dVn6th/=dSum6th;
15108 //if(dSum8th) dVn8th/=dSum8th;
15109
15110 // storing the results for integrated flow in common histos: (to be improved: new method for this?)
15111 if(type == "POI")
15112 {
15113 fCommonHistsResults2nd->FillIntegratedFlowPOI(dVn2nd,dErrVn2nd);
15114 fCommonHistsResults4th->FillIntegratedFlowPOI(dVn4th,dErrVn4th);
15115 fCommonHistsResults6th->FillIntegratedFlowPOI(dVn6th,0.); // to be improved (errors)
15116 fCommonHistsResults8th->FillIntegratedFlowPOI(dVn8th,0.); // to be improved (errors)
15117 }
15118 else if (type == "RP")
15119 {
15120 fCommonHistsResults2nd->FillIntegratedFlowRP(dVn2nd,dErrVn2nd);
15121 fCommonHistsResults4th->FillIntegratedFlowRP(dVn4th,dErrVn4th);
15122 fCommonHistsResults6th->FillIntegratedFlowRP(dVn6th,0.); // to be improved (errors)
15123 fCommonHistsResults8th->FillIntegratedFlowRP(dVn8th,0.); // to be improved (errors)
15124 }
15125
15126 delete flow2ndPt;
15127 delete flow4thPt;
15128 //delete flow6thPt;
15129 //delete flow8thPt;
15130
15131 delete yield2ndPt;
15132 delete yield4thPt;
15133 delete yield6thPt;
15134 delete yield8thPt;
15135
15136} // end of AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(TString type)
15137
e1d101a6 15138//=======================================================================================================================
489d5531 15139
489d5531 15140void AliFlowAnalysisWithQCumulants::InitializeArraysForDistributions()
15141{
15142 // Initialize all arrays used for distributions.
15143
15144 // a) Initialize arrays of histograms used to hold distributions of correlations;
15145 // b) Initialize array to hold min and max values of correlations.
15146
15147 // a) Initialize arrays of histograms used to hold distributions of correlations:
15148 for(Int_t di=0;di<4;di++) // distribution index
15149 {
15150 fDistributions[di] = NULL;
15151 }
15152
15153 // b) Initialize default min and max values of correlations:
15154 // (Remark: The default values bellow were chosen for v2=5% and M=500)
15155 fMinValueOfCorrelation[0] = -0.01; // <2>_min
15156 fMaxValueOfCorrelation[0] = 0.04; // <2>_max
15157 fMinValueOfCorrelation[1] = -0.00002; // <4>_min
15158 fMaxValueOfCorrelation[1] = 0.00015; // <4>_max
15159 fMinValueOfCorrelation[2] = -0.0000003; // <6>_min
15160 fMaxValueOfCorrelation[2] = 0.0000006; // <6>_max
15161 fMinValueOfCorrelation[3] = -0.000000006; // <8>_min
15162 fMaxValueOfCorrelation[3] = 0.000000003; // <8>_max
15163
15164} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForDistributions()
15165
e1d101a6 15166//=======================================================================================================================
489d5531 15167
e5834fcb 15168void AliFlowAnalysisWithQCumulants::InitializeArraysForVarious()
15169{
15170 // Initialize all arrays used for various unclassified objects.
15171
15172 for(Int_t p=0;p<4;p++) // [v_min,v_max,refMult_min,refMult_max]
15173 {
15174 fPhiDistributionForOneEventSettings[p] = 0.;
15175 }
15176
15177} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForVarious()
15178
e1d101a6 15179//=======================================================================================================================
489d5531 15180
15181void AliFlowAnalysisWithQCumulants::BookEverythingForDistributions()
15182{
15183 // a) Book profile to hold all flags for distributions of correlations;
15184 // b) Book all histograms to hold distributions of correlations.
15185
15186 TString correlationIndex[4] = {"<2>","<4>","<6>","<8>"}; // to be improved (should I promote this to data members?)
15187
15188 // a) Book profile to hold all flags for distributions of correlations:
15189 TString distributionsFlagsName = "fDistributionsFlags";
15190 distributionsFlagsName += fAnalysisLabel->Data();
15191 fDistributionsFlags = new TProfile(distributionsFlagsName.Data(),"Flags for Distributions of Correlations",9,0,9);
15192 fDistributionsFlags->SetTickLength(-0.01,"Y");
15193 fDistributionsFlags->SetMarkerStyle(25);
15194 fDistributionsFlags->SetLabelSize(0.05);
15195 fDistributionsFlags->SetLabelOffset(0.02,"Y");
e1d101a6 15196 fDistributionsFlags->SetStats(kFALSE);
489d5531 15197 fDistributionsFlags->GetXaxis()->SetBinLabel(1,"Store or not?");
15198 fDistributionsFlags->GetXaxis()->SetBinLabel(2,"<2>_{min}");
15199 fDistributionsFlags->GetXaxis()->SetBinLabel(3,"<2>_{max}");
15200 fDistributionsFlags->GetXaxis()->SetBinLabel(4,"<4>_{min}");
15201 fDistributionsFlags->GetXaxis()->SetBinLabel(5,"<4>_{max}");
15202 fDistributionsFlags->GetXaxis()->SetBinLabel(6,"<6>_{min}");
15203 fDistributionsFlags->GetXaxis()->SetBinLabel(7,"<6>_{max}");
15204 fDistributionsFlags->GetXaxis()->SetBinLabel(8,"<8>_{min}");
15205 fDistributionsFlags->GetXaxis()->SetBinLabel(9,"<8>_{max}");
15206 fDistributionsList->Add(fDistributionsFlags);
15207
15208 // b) Book all histograms to hold distributions of correlations.
15209 if(fStoreDistributions)
15210 {
15211 TString distributionsName = "fDistributions";
15212 distributionsName += fAnalysisLabel->Data();
15213 for(Int_t di=0;di<4;di++) // distribution index
15214 {
15215 fDistributions[di] = new TH1D(Form("Distribution of %s",correlationIndex[di].Data()),Form("Distribution of %s",correlationIndex[di].Data()),10000,fMinValueOfCorrelation[di],fMaxValueOfCorrelation[di]);
15216 fDistributions[di]->SetXTitle(correlationIndex[di].Data());
15217 fDistributionsList->Add(fDistributions[di]);
15218 } // end of for(Int_t di=0;di<4;di++) // distribution index
15219 } // end of if(fStoreDistributions)
15220
15221} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForDistributions()
15222
e1d101a6 15223//=======================================================================================================================
489d5531 15224
e5834fcb 15225void AliFlowAnalysisWithQCumulants::BookEverythingForVarious()
15226{
15227 // Book all objects for various unclassified quantities.
15228
15229 if(!fStorePhiDistributionForOneEvent){return;}
15230
15231 // a) Book histogram holding phi distribution for single event to illustrate flow.
15232
15233 // a) Book histogram holding phi distribution for single event to illustrate flow:
15234 fPhiDistributionForOneEvent = new TH1D("fPhiDistributionForOneEvent","",360,0.,TMath::TwoPi());
15235 fPhiDistributionForOneEvent->GetXaxis()->SetTitle("#phi");
15236 fVariousList->Add(fPhiDistributionForOneEvent);
15237
15238} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForVarious()
15239
e1d101a6 15240//=======================================================================================================================
489d5531 15241
15242void AliFlowAnalysisWithQCumulants::StoreFlagsForDistributions()
15243{
15244 // Store all flags for distributiuons of correlations in profile fDistributionsFlags.
15245
15246 if(!fDistributionsFlags)
15247 {
15248 cout<<"WARNING: fDistributionsFlags is NULL in AFAWQC::SDF() !!!!"<<endl;
15249 exit(0);
15250 }
15251
15252 fDistributionsFlags->Fill(0.5,(Int_t)fStoreDistributions); // histos with distributions of correlations stored or not in the output file
15253 // store min and max values of correlations:
15254 for(Int_t di=0;di<4;di++) // distribution index
15255 {
15256 fDistributionsFlags->Fill(1.5+2.*(Double_t)di,fMinValueOfCorrelation[di]);
15257 fDistributionsFlags->Fill(2.5+2.*(Double_t)di,fMaxValueOfCorrelation[di]);
15258 }
15259
15260} // end of void AliFlowAnalysisWithQCumulants::StoreFlagsForDistributions()
15261
e1d101a6 15262//=======================================================================================================================
489d5531 15263
489d5531 15264void AliFlowAnalysisWithQCumulants::StoreDistributionsOfCorrelations()
15265{
15266 // Store distributions of correlations.
15267
15268 if(!(fIntFlowCorrelationsEBE && fIntFlowEventWeightsForCorrelationsEBE))
15269 {
15270 cout<<"WARNING: fIntFlowCorrelationsEBE && fIntFlowEventWeightsForCorrelationsEBE"<<endl;
15271 cout<<" is NULL in AFAWQC::SDOC() !!!!"<<endl;
15272 exit(0);
15273 }
15274
15275 for(Int_t di=0;di<4;di++) // distribution index
15276 {
15277 if(!fDistributions[di])
15278 {
15279 cout<<"WARNING: fDistributions[di] is NULL in AFAWQC::SDOC() !!!!"<<endl;
15280 cout<<"di = "<<di<<endl;
15281 exit(0);
15282 } else
15283 {
15284 fDistributions[di]->Fill(fIntFlowCorrelationsEBE->GetBinContent(di+1),fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(di+1));
15285 }
15286 } // end of for(Int_t di=0;di<4;di++) // distribution index
15287
15288} // end of void AliFlowAnalysisWithQCumulants::StoreDistributionsOfCorrelations()
15289
e1d101a6 15290//=======================================================================================================================
489d5531 15291
489d5531 15292void AliFlowAnalysisWithQCumulants::BookAndNestAllLists()
15293{
15294 // Book and nest all lists nested in the base list fHistList.
15295 // a) Book and nest lists for integrated flow;
15296 // b) Book and nest lists for differential flow;
15297 // c) Book and nest list for particle weights;
15298 // d) Book and nest list for distributions;
e5834fcb 15299 // e) Book and nest list for various unclassified objects;
e1d101a6 15300 // f) Book and nest list for other differential correlators;
15301 // g) Book and nest list for nested loops;
15302 // h) Book and nest lists for mixed harmonics.
489d5531 15303
15304 // a) Book and nest all lists for integrated flow:
1268c371 15305 // Base list for integrated flow:
489d5531 15306 fIntFlowList = new TList();
15307 fIntFlowList->SetName("Integrated Flow");
15308 fIntFlowList->SetOwner(kTRUE);
15309 fHistList->Add(fIntFlowList);
1268c371 15310 // List holding profiles:
489d5531 15311 fIntFlowProfiles = new TList();
15312 fIntFlowProfiles->SetName("Profiles");
15313 fIntFlowProfiles->SetOwner(kTRUE);
15314 fIntFlowList->Add(fIntFlowProfiles);
3435cacb 15315 // List holding all profiles with results for correlations vs M:
15316 if(fCalculateAllCorrelationsVsM)
15317 {
15318 fIntFlowAllCorrelationsVsM = new TList();
15319 fIntFlowAllCorrelationsVsM->SetName("Correlations vs M");
15320 fIntFlowAllCorrelationsVsM->SetOwner(kTRUE);
15321 fIntFlowProfiles->Add(fIntFlowAllCorrelationsVsM);
15322 } // end of if(fCalculateAllCorrelationsVsM)
1268c371 15323 // List holding histograms with results:
489d5531 15324 fIntFlowResults = new TList();
15325 fIntFlowResults->SetName("Results");
15326 fIntFlowResults->SetOwner(kTRUE);
15327 fIntFlowList->Add(fIntFlowResults);
15328
1268c371 15329 // b) Book and nest lists for differential flow:
15330 this->BookAndNestListsForDifferentialFlow();
15331
15332 // c) Book and nest list for particle weights:
15333 fWeightsList->SetName("Weights");
15334 fWeightsList->SetOwner(kTRUE);
15335 fHistList->Add(fWeightsList);
15336
15337 // d) Book and nest list for distributions:
15338 fDistributionsList = new TList();
15339 fDistributionsList->SetName("Distributions");
15340 fDistributionsList->SetOwner(kTRUE);
15341 fHistList->Add(fDistributionsList);
15342
15343 // e) Book and nest list for various unclassified objects:
15344 if(fStorePhiDistributionForOneEvent)
15345 {
15346 fVariousList = new TList();
15347 fVariousList->SetName("Various");
15348 fVariousList->SetOwner(kTRUE);
15349 fHistList->Add(fVariousList);
15350 }
15351
64e500e3 15352 // f) Book and nest list for other differential correlators:
15353 fOtherDiffCorrelatorsList = new TList();
15354 fOtherDiffCorrelatorsList->SetName("Other differential correlators");
15355 fOtherDiffCorrelatorsList->SetOwner(kTRUE);
62e36168 15356 if(fCalculateDiffFlow){fHistList->Add(fOtherDiffCorrelatorsList);} // TBI: Use another flag here instead of fCalculateDiffFlow
64e500e3 15357
15358 // g) Book and nest list for nested loops:
1268c371 15359 fNestedLoopsList = new TList();
15360 fNestedLoopsList->SetName("Nested Loops");
15361 fNestedLoopsList->SetOwner(kTRUE);
15362 fHistList->Add(fNestedLoopsList);
e1d101a6 15363
15364 // h) Book and nest lists for mixed harmonics:
15365 // Base list for mixed harmonics:
15366 fMixedHarmonicsList = new TList();
15367 fMixedHarmonicsList->SetName("Mixed Harmonics");
15368 fMixedHarmonicsList->SetOwner(kTRUE);
15369 fHistList->Add(fMixedHarmonicsList);
15370 // List holding profiles:
15371 fMixedHarmonicsProfiles = new TList();
15372 fMixedHarmonicsProfiles->SetName("Profiles");
15373 fMixedHarmonicsProfiles->SetOwner(kTRUE);
15374 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsProfiles);}
15375 // List holding histograms with results:
15376 fMixedHarmonicsResults = new TList();
15377 fMixedHarmonicsResults->SetName("Results");
15378 fMixedHarmonicsResults->SetOwner(kTRUE);
15379 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsResults);}
c10259fb 15380 // List holding objects for statistical error propagation of mixed harmonics:
15381 fMixedHarmonicsErrorPropagation = new TList();
15382 fMixedHarmonicsErrorPropagation->SetName("Error Propagation");
15383 fMixedHarmonicsErrorPropagation->SetOwner(kTRUE);
15384 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsErrorPropagation);}
e1d101a6 15385
1268c371 15386} // end of void AliFlowAnalysisWithQCumulants::BookAndNestAllLists()
15387
e1d101a6 15388//=======================================================================================================================
1268c371 15389
15390void AliFlowAnalysisWithQCumulants::BookAndNestListsForDifferentialFlow()
15391{
15392 // Book and nest lists for differential flow.
15393
15394 // Base list for differential flow objects:
489d5531 15395 fDiffFlowList = new TList();
15396 fDiffFlowList->SetName("Differential Flow");
15397 fDiffFlowList->SetOwner(kTRUE);
15398 fHistList->Add(fDiffFlowList);
1268c371 15399
15400 // Local flags:
15401 TString typeFlag[2] = {"RP","POI"};
15402 TString ptEtaFlag[2] = {"p_{T}","#eta"};
15403 TString powerFlag[2] = {"linear","quadratic"};
15404
15405 // 2D:
15406 if(fCalculate2DDiffFlow)
15407 {
15408 fDiffFlow2D = new TList();
15409 fDiffFlow2D->SetName("2D");
15410 fDiffFlow2D->SetOwner(kTRUE);
15411 fDiffFlowList->Add(fDiffFlow2D);
15412 for(Int_t t=0;t<2;t++)
15413 {
15414 f2DDiffFlowCorrelationsProList[t] = new TList();
15415 f2DDiffFlowCorrelationsProList[t]->SetOwner(kTRUE);
15416 f2DDiffFlowCorrelationsProList[t]->SetName(Form("Profiles with 2D correlations (%s)",typeFlag[t].Data()));
15417 fDiffFlow2D->Add(f2DDiffFlowCorrelationsProList[t]);
15418 } // end of for(Int_t t=0;t<2;t++)
15419 } // end of if(fCalculate2DDiffFlow)
15420
15421 // What follows bellow in this method is relevant only for 1D differential flow:
15422 if(!fCalculateDiffFlow){return;}
15423
15424 // List holding profiles:
489d5531 15425 fDiffFlowProfiles = new TList();
15426 fDiffFlowProfiles->SetName("Profiles");
15427 fDiffFlowProfiles->SetOwner(kTRUE);
15428 fDiffFlowList->Add(fDiffFlowProfiles);
1268c371 15429 // List holding histograms with results:
489d5531 15430 fDiffFlowResults = new TList();
15431 fDiffFlowResults->SetName("Results");
15432 fDiffFlowResults->SetOwner(kTRUE);
15433 fDiffFlowList->Add(fDiffFlowResults);
1268c371 15434 // Flags used for naming nested lists in list fDiffFlowProfiles and fDiffFlowResults:
489d5531 15435 TList list;
15436 list.SetOwner(kTRUE);
1268c371 15437 // Nested lists in fDiffFlowProfiles (~/Differential Flow/Profiles):
489d5531 15438 for(Int_t t=0;t<2;t++) // type: RP or POI
15439 {
62e36168 15440 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 15441 {
15442 // list holding profiles with correlations:
15443 fDiffFlowCorrelationsProList[t][pe] = (TList*)list.Clone();
15444 fDiffFlowCorrelationsProList[t][pe]->SetName(Form("Profiles with correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15445 fDiffFlowProfiles->Add(fDiffFlowCorrelationsProList[t][pe]);
15446 // list holding profiles with products of correlations:
15447 fDiffFlowProductOfCorrelationsProList[t][pe] = (TList*)list.Clone();
15448 fDiffFlowProductOfCorrelationsProList[t][pe]->SetName(Form("Profiles with products of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15449 fDiffFlowProfiles->Add(fDiffFlowProductOfCorrelationsProList[t][pe]);
15450 // list holding profiles with corrections:
15451 fDiffFlowCorrectionsProList[t][pe] = (TList*)list.Clone();
15452 fDiffFlowCorrectionsProList[t][pe]->SetName(Form("Profiles with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15453 fDiffFlowProfiles->Add(fDiffFlowCorrectionsProList[t][pe]);
15454 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
15455 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15456 // nested lists in fDiffFlowResults (~/Differential Flow/Results):
15457 for(Int_t t=0;t<2;t++) // type: RP or POI
15458 {
62e36168 15459 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 15460 {
15461 // list holding histograms with correlations:
15462 fDiffFlowCorrelationsHistList[t][pe] = (TList*)list.Clone();
15463 fDiffFlowCorrelationsHistList[t][pe]->SetName(Form("Correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15464 fDiffFlowResults->Add(fDiffFlowCorrelationsHistList[t][pe]);
15465 // list holding histograms with corrections:
15466 fDiffFlowCorrectionsHistList[t][pe] = (TList*)list.Clone();
15467 fDiffFlowCorrectionsHistList[t][pe]->SetName(Form("Histograms with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15468 fDiffFlowResults->Add(fDiffFlowCorrectionsHistList[t][pe]);
15469 for(Int_t power=0;power<2;power++)
15470 {
15471 // list holding histograms with sums of event weights:
15472 fDiffFlowSumOfEventWeightsHistList[t][pe][power] = (TList*)list.Clone();
15473 fDiffFlowSumOfEventWeightsHistList[t][pe][power]->SetName(Form("Sum of %s event weights (%s, %s)",powerFlag[power].Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15474 fDiffFlowResults->Add(fDiffFlowSumOfEventWeightsHistList[t][pe][power]);
15475 } // end of for(Int_t power=0;power<2;power++)
15476 // list holding histograms with sums of products of event weights:
15477 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe] = (TList*)list.Clone();
15478 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]->SetName(Form("Sum of products of event weights (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15479 fDiffFlowResults->Add(fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]);
15480 // list holding histograms with covariances of correlations:
15481 fDiffFlowCovariancesHistList[t][pe] = (TList*)list.Clone();
15482 fDiffFlowCovariancesHistList[t][pe]->SetName(Form("Covariances of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15483 fDiffFlowResults->Add(fDiffFlowCovariancesHistList[t][pe]);
15484 // list holding histograms with differential Q-cumulants:
15485 fDiffFlowCumulantsHistList[t][pe] = (TList*)list.Clone();
15486 fDiffFlowCumulantsHistList[t][pe]->SetName(Form("Differential Q-cumulants (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15487 fDiffFlowResults->Add(fDiffFlowCumulantsHistList[t][pe]);
1268c371 15488 // list holding histograms which quantify detector bias to differential Q-cumulants:
15489 fDiffFlowDetectorBiasHistList[t][pe] = (TList*)list.Clone();
15490 fDiffFlowDetectorBiasHistList[t][pe]->SetName(Form("Detector bias (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15491 fDiffFlowResults->Add(fDiffFlowDetectorBiasHistList[t][pe]);
489d5531 15492 // list holding histograms with differential flow estimates from Q-cumulants:
15493 fDiffFlowHistList[t][pe] = (TList*)list.Clone();
15494 fDiffFlowHistList[t][pe]->SetName(Form("Differential flow (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15495 fDiffFlowResults->Add(fDiffFlowHistList[t][pe]);
15496 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
15497 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15498
1268c371 15499} // end of void AliFlowAnalysisWithQCumulants::BookAndNestListsForDifferentialFlow()
489d5531 15500
e1d101a6 15501//=======================================================================================================================
489d5531 15502
489d5531 15503void AliFlowAnalysisWithQCumulants::FillCommonHistResultsDiffFlow(TString type)
15504{
1268c371 15505 // Fill common result histograms for differential flow.
489d5531 15506
1268c371 15507 Int_t t = 0;
489d5531 15508
15509 if(type == "RP")
15510 {
1268c371 15511 t = 0;
489d5531 15512 } else if(type == "POI")
15513 {
1268c371 15514 t = 1;
489d5531 15515 }
1268c371 15516
15517 // to be improved - check all pointers used in this method
489d5531 15518
15519 if(!(fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th))
15520 {
15521 cout<<"WARNING: fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th"<<endl;
15522 cout<<" is NULL in AFAWQC::FCHRIF() !!!!"<<endl;
15523 exit(0);
15524 }
15525
15526 // pt:
15527 for(Int_t p=1;p<=fnBinsPt;p++)
15528 {
15529 Double_t v2 = fDiffFlow[t][0][0]->GetBinContent(p);
15530 Double_t v4 = fDiffFlow[t][0][1]->GetBinContent(p);
15531 Double_t v6 = fDiffFlow[t][0][2]->GetBinContent(p);
15532 Double_t v8 = fDiffFlow[t][0][3]->GetBinContent(p);
15533
15534 Double_t v2Error = fDiffFlow[t][0][0]->GetBinError(p);
15535 Double_t v4Error = fDiffFlow[t][0][1]->GetBinError(p);
15536 //Double_t v6Error = fFinalFlow1D[t][pW][nua][0][2]->GetBinError(p);
15537 //Double_t v8Error = fFinalFlow1D[t][pW][nua][0][3]->GetBinError(p);
15538
15539 if(type == "RP")
15540 {
15541 fCommonHistsResults2nd->FillDifferentialFlowPtRP(p,v2,v2Error);
15542 fCommonHistsResults4th->FillDifferentialFlowPtRP(p,v4,v4Error);
15543 fCommonHistsResults6th->FillDifferentialFlowPtRP(p,v6,0.);
15544 fCommonHistsResults8th->FillDifferentialFlowPtRP(p,v8,0.);
15545 } else if(type == "POI")
15546 {
15547 fCommonHistsResults2nd->FillDifferentialFlowPtPOI(p,v2,v2Error);
15548 fCommonHistsResults4th->FillDifferentialFlowPtPOI(p,v4,v4Error);
15549 fCommonHistsResults6th->FillDifferentialFlowPtPOI(p,v6,0.);
15550 fCommonHistsResults8th->FillDifferentialFlowPtPOI(p,v8,0.);
15551 }
15552 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
15553
15554 // eta:
62e36168 15555 if(!fCalculateDiffFlowVsEta){return;}
489d5531 15556 for(Int_t e=1;e<=fnBinsEta;e++)
15557 {
15558 Double_t v2 = fDiffFlow[t][1][0]->GetBinContent(e);
15559 Double_t v4 = fDiffFlow[t][1][1]->GetBinContent(e);
15560 Double_t v6 = fDiffFlow[t][1][2]->GetBinContent(e);
15561 Double_t v8 = fDiffFlow[t][1][3]->GetBinContent(e);
15562
15563 Double_t v2Error = fDiffFlow[t][1][0]->GetBinError(e);
15564 Double_t v4Error = fDiffFlow[t][1][1]->GetBinError(e);
15565 //Double_t v6Error = fDiffFlow[t][1][2]->GetBinError(e);
15566 //Double_t v8Error = fDiffFlow[t][1][3]->GetBinError(e);
15567
15568 if(type == "RP")
15569 {
15570 fCommonHistsResults2nd->FillDifferentialFlowEtaRP(e,v2,v2Error);
15571 fCommonHistsResults4th->FillDifferentialFlowEtaRP(e,v4,v4Error);
15572 fCommonHistsResults6th->FillDifferentialFlowEtaRP(e,v6,0.);
15573 fCommonHistsResults8th->FillDifferentialFlowEtaRP(e,v8,0.);
15574 } else if(type == "POI")
15575 {
15576 fCommonHistsResults2nd->FillDifferentialFlowEtaPOI(e,v2,v2Error);
15577 fCommonHistsResults4th->FillDifferentialFlowEtaPOI(e,v4,v4Error);
15578 fCommonHistsResults6th->FillDifferentialFlowEtaPOI(e,v6,0.);
15579 fCommonHistsResults8th->FillDifferentialFlowEtaPOI(e,v8,0.);
15580 }
15581 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
15582
15583} // end of void AliFlowAnalysisWithQCumulants::FillCommonHistResultsDiffFlow(TString type, Bool_t useParticleWeights, TString eventWeights, Bool_t correctedForNUA)
15584
e1d101a6 15585//=======================================================================================================================
489d5531 15586
1268c371 15587void AliFlowAnalysisWithQCumulants::CommonConstants(TString method)
489d5531 15588{
1268c371 15589 // Access and store common constants.
15590
15591 // a) If this method was called in Init() access common constants from AliFlowCommonConstants;
15592 // b) If this method was called in Init() book and fill TProfile to hold constants accessed in a);
15593 // c) If this method was called in Finish() access common constants from TProfile booked and filled in b).
15594
15595 if(method == "Init")
15596 {
15597 // a) If this method was called in Init() access common constants from AliFlowCommonConstants:
15598 fnBinsPhi = AliFlowCommonConstants::GetMaster()->GetNbinsPhi();
15599 fPhiMin = AliFlowCommonConstants::GetMaster()->GetPhiMin();
15600 fPhiMax = AliFlowCommonConstants::GetMaster()->GetPhiMax();
15601 if(fnBinsPhi){fPhiBinWidth = (fPhiMax-fPhiMin)/fnBinsPhi;}
15602 fnBinsPt = AliFlowCommonConstants::GetMaster()->GetNbinsPt();
15603 fPtMin = AliFlowCommonConstants::GetMaster()->GetPtMin();
15604 fPtMax = AliFlowCommonConstants::GetMaster()->GetPtMax();
15605 if(fnBinsPt){fPtBinWidth = (fPtMax-fPtMin)/fnBinsPt;}
15606 fnBinsEta = AliFlowCommonConstants::GetMaster()->GetNbinsEta();
15607 fEtaMin = AliFlowCommonConstants::GetMaster()->GetEtaMin();
15608 fEtaMax = AliFlowCommonConstants::GetMaster()->GetEtaMax();
15609 if(fnBinsEta){fEtaBinWidth = (fEtaMax-fEtaMin)/fnBinsEta;}
15610
15611 // b) If this method was called in Init() book and fill TProfile to hold constants accessed in a):
15612 TString fCommonConstantsName = "fCommonConstants";
15613 fCommonConstantsName += fAnalysisLabel->Data();
15614 fCommonConstants = new TProfile(fCommonConstantsName.Data(),"Common constants",9,0.,9.);
15615 fCommonConstants->SetLabelSize(0.05);
15616 fCommonConstants->GetXaxis()->SetBinLabel(1,"nBins (#phi)");
15617 fCommonConstants->Fill(0.5,fnBinsPhi);
15618 fCommonConstants->GetXaxis()->SetBinLabel(2,"#phi_{min}");
15619 fCommonConstants->Fill(1.5,fPhiMin);
15620 fCommonConstants->GetXaxis()->SetBinLabel(3,"#phi_{max}");
15621 fCommonConstants->Fill(2.5,fPhiMax);
15622 fCommonConstants->GetXaxis()->SetBinLabel(4,"nBins (p_{t})");
15623 fCommonConstants->Fill(3.5,fnBinsPt);
15624 fCommonConstants->GetXaxis()->SetBinLabel(5,"(p_{t})_{min}");
15625 fCommonConstants->Fill(4.5,fPtMin);
15626 fCommonConstants->GetXaxis()->SetBinLabel(6,"(p_{t})_{max}");
15627 fCommonConstants->Fill(5.5,fPtMax);
15628 fCommonConstants->GetXaxis()->SetBinLabel(7,"nBins (#eta)");
15629 fCommonConstants->Fill(6.5,fnBinsEta);
15630 fCommonConstants->GetXaxis()->SetBinLabel(8,"#eta_{min}");
15631 fCommonConstants->Fill(7.5,fEtaMin);
15632 fCommonConstants->GetXaxis()->SetBinLabel(9,"#eta_{max}");
15633 fCommonConstants->Fill(8.5,fEtaMax);
15634 fHistList->Add(fCommonConstants);
15635 } // end of if(method == "Init")
15636 else if(method == "Finish")
15637 {
15638 // c) If this method was called in Finish() access common constants from TProfile booked and filled in b):
15639 if(!fCommonConstants)
15640 {
15641 printf("\n WARNING (QC): fCommonConstants is NULL in AFAWQC::AC(\"%s\") !!!!\n\n",method.Data());
15642 exit(0);
15643 }
15644 fnBinsPhi = (Int_t)fCommonConstants->GetBinContent(1);
15645 fPhiMin = fCommonConstants->GetBinContent(2);
15646 fPhiMax = fCommonConstants->GetBinContent(3);
15647 if(fnBinsPhi){fPhiBinWidth = (fPhiMax-fPhiMin)/fnBinsPhi;}
15648 fnBinsPt = (Int_t)fCommonConstants->GetBinContent(4);
15649 fPtMin = fCommonConstants->GetBinContent(5);
15650 fPtMax = fCommonConstants->GetBinContent(6);
15651 if(fnBinsPt){fPtBinWidth = (fPtMax-fPtMin)/fnBinsPt;}
15652 fnBinsEta = (Int_t)fCommonConstants->GetBinContent(7);
15653 fEtaMin = fCommonConstants->GetBinContent(8);
15654 fEtaMax = fCommonConstants->GetBinContent(9);
15655 if(fnBinsEta){fEtaBinWidth = (fEtaMax-fEtaMin)/fnBinsEta;}
15656 } // end of else if(method == "Finish")
15657
15658} // end of void AliFlowAnalysisWithQCumulants::CommonConstants(TString method)
489d5531 15659
e1d101a6 15660//=======================================================================================================================
489d5531 15661
489d5531 15662void AliFlowAnalysisWithQCumulants::CrossCheckSettings()
15663{
1268c371 15664 // a) Cross check if the choice for multiplicity weights make sense.
489d5531 15665
15666 // a) Cross check if the choice for multiplicity weights make sense:
15667 if(strcmp(fMultiplicityWeight->Data(),"combinations") &&
15668 strcmp(fMultiplicityWeight->Data(),"unit") &&
15669 strcmp(fMultiplicityWeight->Data(),"multiplicity"))
15670 {
15671 cout<<"WARNING (QC): Multiplicity weight can be either \"combinations\", \"unit\""<<endl;
15672 cout<<" or \"multiplicity\". Certainly not \""<<fMultiplicityWeight->Data()<<"\"."<<endl;
15673 exit(0);
15674 }
15675
15676} // end of void AliFlowAnalysisWithQCumulants::CrossCheckSettings()
15677
e1d101a6 15678//=======================================================================================================================
489d5531 15679
489d5531 15680void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeights()
15681{
0328db2d 15682 // Calculate sum of linear and quadratic event weights for correlations.
2001bc3a 15683
15684 // multiplicity:
1268c371 15685 Double_t dMult = (*fSpk)(0,0);
9f33751d 15686
489d5531 15687 for(Int_t p=0;p<2;p++) // power-1
15688 {
15689 for(Int_t ci=0;ci<4;ci++) // correlation index
15690 {
15691 fIntFlowSumOfEventWeights[p]->Fill(ci+0.5,pow(fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci+1),p+1));
b3dacf6b 15692 if(fCalculateCumulantsVsM)
15693 {
15694 fIntFlowSumOfEventWeightsVsM[ci][p]->Fill(dMult+0.5,pow(fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci+1),p+1)); // to be improved: dMult => sum of weights?
15695 }
489d5531 15696 }
15697 }
15698
15699} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeights()
15700
e1d101a6 15701//=======================================================================================================================
489d5531 15702
0328db2d 15703void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeightsNUA()
489d5531 15704{
0328db2d 15705 // Calculate sum of linear and quadratic event weights for NUA terms.
15706
15707 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
489d5531 15708 {
0328db2d 15709 for(Int_t p=0;p<2;p++) // power-1
15710 {
b92ea2b9 15711 for(Int_t ci=0;ci<4;ci++) // nua term index
0328db2d 15712 {
15713 fIntFlowSumOfEventWeightsNUA[sc][p]->Fill(ci+0.5,pow(fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc]->GetBinContent(ci+1),p+1));
489d5531 15714 }
0328db2d 15715 }
15716 }
15717
15718} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeightsNUA()
489d5531 15719
e1d101a6 15720//=======================================================================================================================
0328db2d 15721
0328db2d 15722void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeights()
15723{
ff70ca91 15724 // Calculate sum of product of event weights for correlations.
2001bc3a 15725
15726 // multiplicity:
1268c371 15727 Double_t dMult = (*fSpk)(0,0);
2001bc3a 15728
489d5531 15729 Int_t counter = 0;
15730
15731 for(Int_t ci1=1;ci1<4;ci1++)
15732 {
15733 for(Int_t ci2=ci1+1;ci2<=4;ci2++)
15734 {
ff70ca91 15735 fIntFlowSumOfProductOfEventWeights->Fill(0.5+counter,
15736 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
b3dacf6b 15737 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
15738 if(fCalculateCumulantsVsM)
15739 {
15740 fIntFlowSumOfProductOfEventWeightsVsM[counter]->Fill(dMult+0.5, // to be improved: dMult => sum of weights?
15741 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
15742 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
15743 } // end of if(fCalculateCumulantsVsM)
ff70ca91 15744 counter++;
489d5531 15745 }
15746 }
15747
0328db2d 15748} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeights()
15749
e1d101a6 15750//=======================================================================================================================
0328db2d 15751
0328db2d 15752void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeightsNUA()
15753{
15754 // Calculate sum of product of event weights for NUA terms.
15755
15756 // w_{<2>} * w_{<cos(#phi)>}:
15757 fIntFlowSumOfProductOfEventWeightsNUA->Fill(0.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15758 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
15759 // w_{<2>} * w_{<sin(#phi)>}:
15760 fIntFlowSumOfProductOfEventWeightsNUA->Fill(1.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15761 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15762 // w_{<cos(#phi)> * w_{<sin(#phi)>}:
15763 fIntFlowSumOfProductOfEventWeightsNUA->Fill(2.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15764 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15765 // w_{<2>} * w{<cos(phi1+phi2)>}
15766 fIntFlowSumOfProductOfEventWeightsNUA->Fill(3.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15767 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15768 // w_{<2>} * w{<sin(phi1+phi2)>}
15769 fIntFlowSumOfProductOfEventWeightsNUA->Fill(4.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15770 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15771 // w_{<2>} * w{<cos(phi1-phi2-phi3)>}
15772 fIntFlowSumOfProductOfEventWeightsNUA->Fill(5.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15773 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15774 // w_{<2>} * w{<sin(phi1-phi2-phi3)>}
15775 fIntFlowSumOfProductOfEventWeightsNUA->Fill(6.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15776 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15777 // w_{<4>} * w{<cos(phi1)>}
15778 fIntFlowSumOfProductOfEventWeightsNUA->Fill(7.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15779 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
15780 // w_{<4>} * w{<sin(phi1)>}
15781 fIntFlowSumOfProductOfEventWeightsNUA->Fill(8.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15782 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15783 // w_{<4>} * w{<cos(phi1+phi2)>}
15784 fIntFlowSumOfProductOfEventWeightsNUA->Fill(9.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15785 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15786 // w_{<4>} * w{<sin(phi1+phi2)>}
15787 fIntFlowSumOfProductOfEventWeightsNUA->Fill(10.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15788 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15789 // w_{<4>} * w{<cos(phi1-phi2-phi3)>}
15790 fIntFlowSumOfProductOfEventWeightsNUA->Fill(11.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15791 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15792 // w_{<4>} * w{<sin(phi1-phi2-phi3)>}
15793 fIntFlowSumOfProductOfEventWeightsNUA->Fill(12.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15794 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15795 // w_{<cos(phi1)>} * w{<cos(phi1+phi2)>}
15796 fIntFlowSumOfProductOfEventWeightsNUA->Fill(13.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15797 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15798 // w_{<cos(phi1)>} * w{<sin(phi1+phi2)>}
15799 fIntFlowSumOfProductOfEventWeightsNUA->Fill(14.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15800 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15801 // w_{<cos(phi1)>} * w{<cos(phi1-phi2-phi3)>}
15802 fIntFlowSumOfProductOfEventWeightsNUA->Fill(15.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15803 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15804 // w_{<cos(phi1)>} * w{<sin(phi1-phi2-phi3)>}
15805 fIntFlowSumOfProductOfEventWeightsNUA->Fill(16.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15806 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15807 // w_{<sin(phi1)>} * w{<cos(phi1+phi2)>}
15808 fIntFlowSumOfProductOfEventWeightsNUA->Fill(17.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15809 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15810 // w_{<sin(phi1)>} * w{<sin(phi1+phi2)>}
15811 fIntFlowSumOfProductOfEventWeightsNUA->Fill(18.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15812 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15813 // w_{<sin(phi1)>} * w{<cos(phi1-phi2-phi3)>}
15814 fIntFlowSumOfProductOfEventWeightsNUA->Fill(19.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15815 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15816 // w_{<sin(phi1)>} * w{<sin(phi1-phi2-phi3)>}
15817 fIntFlowSumOfProductOfEventWeightsNUA->Fill(20.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15818 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15819 // w_{<cos(phi1+phi2)>} * w{<sin(phi1+phi2))>}
15820 fIntFlowSumOfProductOfEventWeightsNUA->Fill(21.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15821 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15822 // w_{<cos(phi1+phi2)>} * w{<cos(phi1-phi2-phi3)>}
15823 fIntFlowSumOfProductOfEventWeightsNUA->Fill(22.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15824 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15825 // w_{<cos(phi1+phi2)>} * w{<sin(phi1-phi2-phi3)>}
15826 fIntFlowSumOfProductOfEventWeightsNUA->Fill(23.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15827 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15828 // w_{<sin(phi1+phi2)>} * w{<cos(phi1-phi2-phi3)>}
15829 fIntFlowSumOfProductOfEventWeightsNUA->Fill(24.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)*
15830 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15831 // w_{<sin(phi1+phi2)>} * w{<sin(phi1-phi2-phi3)>}
15832 fIntFlowSumOfProductOfEventWeightsNUA->Fill(25.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)*
15833 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15834 // w_{<cos(phi1-phi2-phi3)>} * w{<sin(phi1-phi2-phi3)>}
15835 fIntFlowSumOfProductOfEventWeightsNUA->Fill(26.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)*
15836 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15837
15838} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowIntFlowSumOfProductOfEventWeightsNUA()
489d5531 15839
e1d101a6 15840//=======================================================================================================================
489d5531 15841
489d5531 15842void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelations(TString type, TString ptOrEta)
15843{
1268c371 15844 // Calculate reduced correlations for RPs or POIs for all pt and eta bins.
489d5531 15845
1268c371 15846 // Multiplicity:
15847 Double_t dMult = (*fSpk)(0,0);
489d5531 15848
15849 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
15850 Double_t dReQ1n = (*fReQ)(0,0);
15851 Double_t dReQ2n = (*fReQ)(1,0);
15852 //Double_t dReQ3n = (*fReQ)(2,0);
15853 //Double_t dReQ4n = (*fReQ)(3,0);
15854 Double_t dImQ1n = (*fImQ)(0,0);
15855 Double_t dImQ2n = (*fImQ)(1,0);
15856 //Double_t dImQ3n = (*fImQ)(2,0);
15857 //Double_t dImQ4n = (*fImQ)(3,0);
15858
15859 // reduced correlations are stored in fDiffFlowCorrelationsPro[0=RP,1=POI][0=pt,1=eta][correlation index]. Correlation index runs as follows:
15860 //
15861 // 0: <<2'>>
15862 // 1: <<4'>>
15863 // 2: <<6'>>
15864 // 3: <<8'>>
15865
ea239361 15866 //Int_t t = 0; // type flag
2a98ceb8 15867 Int_t pe = 0; // ptEta flag
489d5531 15868
15869 if(type == "RP")
15870 {
ea239361 15871 //t = 0;
489d5531 15872 } else if(type == "POI")
15873 {
ea239361 15874 //t = 1;
489d5531 15875 }
15876
15877 if(ptOrEta == "Pt")
15878 {
15879 pe = 0;
15880 } else if(ptOrEta == "Eta")
15881 {
15882 pe = 1;
15883 }
15884
15885 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
15886 Double_t minPtEta[2] = {fPtMin,fEtaMin};
15887 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
15888 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
15889
15890 // looping over all bins and calculating reduced correlations:
15891 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
15892 {
15893 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
15894 Double_t p1n0kRe = 0.;
15895 Double_t p1n0kIm = 0.;
15896
15897 // number of POIs in particular pt or eta bin:
15898 Double_t mp = 0.;
15899
15900 // 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):
15901 Double_t q1n0kRe = 0.;
15902 Double_t q1n0kIm = 0.;
15903 Double_t q2n0kRe = 0.;
15904 Double_t q2n0kIm = 0.;
15905
15906 // number of particles which are both RPs and POIs in particular pt or eta bin:
15907 Double_t mq = 0.;
15908
15909 if(type == "POI")
15910 {
15911 // q_{m*n,0}:
15912 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
15913 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
15914 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
15915 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
15916 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
15917 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
15918 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
15919 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
15920
15921 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
15922 }
15923 else if(type == "RP")
15924 {
15925 // q_{m*n,0}:
15926 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
15927 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
15928 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
15929 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
15930 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
15931 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
15932 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
15933 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
15934
15935 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
15936 }
15937
15938 if(type == "POI")
15939 {
15940 // p_{m*n,0}:
15941 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
15942 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
15943 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
15944 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
15945
15946 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
15947
ea239361 15948 //t = 1; // typeFlag = RP or POI
489d5531 15949 }
15950 else if(type == "RP")
15951 {
15952 // p_{m*n,0} = q_{m*n,0}:
15953 p1n0kRe = q1n0kRe;
15954 p1n0kIm = q1n0kIm;
15955
15956 mp = mq;
15957
ea239361 15958 //t = 0; // typeFlag = RP or POI
489d5531 15959 }
15960
1268c371 15961 // 2'-particle correlation for particular pt or eta bin:
489d5531 15962 Double_t two1n1nPtEta = 0.;
b40a910e 15963 Double_t mWeight2pPrime = 0.; // multiplicity weight for <2'>
489d5531 15964 if(mp*dMult-mq)
15965 {
15966 two1n1nPtEta = (p1n0kRe*dReQ1n+p1n0kIm*dImQ1n-mq)
15967 / (mp*dMult-mq);
b40a910e 15968 // determine multiplicity weight:
15969 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
15970 {
15971 mWeight2pPrime = mp*dMult-mq;
15972 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
15973 {
15974 mWeight2pPrime = 1.;
15975 }
489d5531 15976 if(type == "POI") // to be improved (I do not this if)
15977 {
15978 // fill profile to get <<2'>> for POIs
b40a910e 15979 fDiffFlowCorrelationsPro[1][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta,mWeight2pPrime);
15980 // fill profile to get <<2'>^2> for POIs
15981 fDiffFlowSquaredCorrelationsPro[1][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta*two1n1nPtEta,mWeight2pPrime);
489d5531 15982 // histogram to store <2'> for POIs e-b-e (needed in some other methods):
15983 fDiffFlowCorrelationsEBE[1][pe][0]->SetBinContent(b,two1n1nPtEta);
b40a910e 15984 fDiffFlowEventWeightsForCorrelationsEBE[1][pe][0]->SetBinContent(b,mWeight2pPrime);
489d5531 15985 }
15986 else if(type == "RP") // to be improved (I do not this if)
15987 {
15988 // profile to get <<2'>> for RPs:
b40a910e 15989 fDiffFlowCorrelationsPro[0][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta,mWeight2pPrime);
15990 // profile to get <<2'>^2> for RPs:
15991 fDiffFlowSquaredCorrelationsPro[0][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta*two1n1nPtEta,mWeight2pPrime);
489d5531 15992 // histogram to store <2'> for RPs e-b-e (needed in some other methods):
15993 fDiffFlowCorrelationsEBE[0][pe][0]->SetBinContent(b,two1n1nPtEta);
b40a910e 15994 fDiffFlowEventWeightsForCorrelationsEBE[0][pe][0]->SetBinContent(b,mWeight2pPrime);
489d5531 15995 }
15996 } // end of if(mp*dMult-mq)
15997
15998 // 4'-particle correlation:
15999 Double_t four1n1n1n1nPtEta = 0.;
b40a910e 16000 Double_t mWeight4pPrime = 0.; // multiplicity weight for <4'>
489d5531 16001 if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16002 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
16003 {
16004 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16005 - q2n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
16006 - 2.*q2n0kIm*dReQ1n*dImQ1n
16007 - p1n0kRe*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
16008 + p1n0kIm*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
16009 - 2.*dMult*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16010 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*mq
16011 + 6.*(q1n0kRe*dReQ1n+q1n0kIm*dImQ1n)
16012 + 1.*(q2n0kRe*dReQ2n+q2n0kIm*dImQ2n)
16013 + 2.*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16014 + 2.*mq*dMult
16015 - 6.*mq)
16016 / ((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16017 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.));
b40a910e 16018 // determine multiplicity weight:
16019 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
16020 {
16021 mWeight4pPrime = (mp-mq)*dMult*(dMult-1.)*(dMult-2.) + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16022 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
16023 {
16024 mWeight4pPrime = 1.;
16025 }
489d5531 16026 if(type == "POI")
16027 {
16028 // profile to get <<4'>> for POIs:
b40a910e 16029 fDiffFlowCorrelationsPro[1][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta,mWeight4pPrime);
16030 // profile to get <<4'>^2> for POIs:
16031 fDiffFlowSquaredCorrelationsPro[1][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta*four1n1n1n1nPtEta,mWeight4pPrime);
489d5531 16032 // histogram to store <4'> for POIs e-b-e (needed in some other methods):
16033 fDiffFlowCorrelationsEBE[1][pe][1]->SetBinContent(b,four1n1n1n1nPtEta);
b40a910e 16034 fDiffFlowEventWeightsForCorrelationsEBE[1][pe][1]->SetBinContent(b,mWeight4pPrime);
489d5531 16035 }
16036 else if(type == "RP")
16037 {
16038 // profile to get <<4'>> for RPs:
b40a910e 16039 fDiffFlowCorrelationsPro[0][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta,mWeight4pPrime);
16040 // profile to get <<4'>^2> for RPs:
16041 fDiffFlowSquaredCorrelationsPro[0][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta*four1n1n1n1nPtEta,mWeight4pPrime);
489d5531 16042 // histogram to store <4'> for RPs e-b-e (needed in some other methods):
16043 fDiffFlowCorrelationsEBE[0][pe][1]->SetBinContent(b,four1n1n1n1nPtEta);
b40a910e 16044 fDiffFlowEventWeightsForCorrelationsEBE[0][pe][1]->SetBinContent(b,mWeight4pPrime);
489d5531 16045 }
16046 } // end of if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16047 // +mq*(dMult-1.)*(dMult-2.)*(dMult-3.))
16048
16049 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16050
16051
16052} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelations(TString type, TString ptOrEta);
16053
e1d101a6 16054//=======================================================================================================================
489d5531 16055
64e500e3 16056void AliFlowAnalysisWithQCumulants::CalculateOtherDiffCorrelators(TString type, TString ptOrEta)
16057{
16058 // Calculate other differential correlators for RPs or POIs for all pt and eta bins.
16059
16060 // Multiplicity:
16061 Double_t dMult = (*fSpk)(0,0);
16062
16063 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16064 Double_t dReQ1n = (*fReQ)(0,0);
16065 Double_t dReQ2n = (*fReQ)(1,0);
16066 Double_t dReQ3n = (*fReQ)(2,0);
16067 //Double_t dReQ4n = (*fReQ)(3,0);
16068 Double_t dImQ1n = (*fImQ)(0,0);
16069 Double_t dImQ2n = (*fImQ)(1,0);
16070 Double_t dImQ3n = (*fImQ)(2,0);
16071 //Double_t dImQ4n = (*fImQ)(3,0);
16072
16073 // 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]
16074 // Correlation index runs as follows:
16075 //
16076 // 0: <exp[in(psi1-3phi2+2phi3)]>
16077
16078 Int_t t = 0; // type flag
16079 Int_t pe = 0; // ptEta flag
16080
16081 if(type == "RP")
16082 {
16083 t = 0;
16084 } else if(type == "POI")
16085 {
16086 t = 1;
16087 }
16088
16089 if(ptOrEta == "Pt")
16090 {
16091 pe = 0;
16092 } else if(ptOrEta == "Eta")
16093 {
16094 pe = 1;
16095 }
16096
16097 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16098 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16099 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16100 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16101
16102 // looping over all bins and calculating reduced correlations:
16103 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16104 {
16105 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
16106 Double_t p1n0kRe = 0.;
16107 Double_t p1n0kIm = 0.;
16108
16109 // number of POIs in particular pt or eta bin:
16110 Double_t mp = 0.;
16111
16112 // 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):
16113 Double_t q1n0kRe = 0.;
16114 Double_t q1n0kIm = 0.;
16115 Double_t q2n0kRe = 0.;
16116 Double_t q2n0kIm = 0.;
16117 Double_t q3n0kRe = 0.;
16118 Double_t q3n0kIm = 0.;
16119
16120 // number of particles which are both RPs and POIs in particular pt or eta bin:
16121 Double_t mq = 0.;
16122
16123 if(type == "POI")
16124 {
16125 // q_{m*n,0}:
16126 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
16127 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
16128 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
16129 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
16130 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
16131 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
16132 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
16133 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
16134 q3n0kRe = fReRPQ1dEBE[2][pe][2][0]->GetBinContent(fReRPQ1dEBE[2][pe][2][0]->GetBin(b))
16135 * fReRPQ1dEBE[2][pe][2][0]->GetBinEntries(fReRPQ1dEBE[2][pe][2][0]->GetBin(b));
16136 q3n0kIm = fImRPQ1dEBE[2][pe][2][0]->GetBinContent(fImRPQ1dEBE[2][pe][2][0]->GetBin(b))
16137 * fImRPQ1dEBE[2][pe][2][0]->GetBinEntries(fImRPQ1dEBE[2][pe][2][0]->GetBin(b));
16138
16139 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16140 }
16141 else if(type == "RP")
16142 {
16143 // q_{m*n,0}:
16144 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
16145 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
16146 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
16147 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
16148 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
16149 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
16150 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
16151 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
16152 q3n0kRe = fReRPQ1dEBE[0][pe][2][0]->GetBinContent(fReRPQ1dEBE[0][pe][2][0]->GetBin(b))
16153 * fReRPQ1dEBE[0][pe][2][0]->GetBinEntries(fReRPQ1dEBE[0][pe][2][0]->GetBin(b));
16154 q3n0kIm = fImRPQ1dEBE[0][pe][2][0]->GetBinContent(fImRPQ1dEBE[0][pe][2][0]->GetBin(b))
16155 * fImRPQ1dEBE[0][pe][2][0]->GetBinEntries(fImRPQ1dEBE[0][pe][2][0]->GetBin(b));
16156
16157 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16158 }
16159
16160 if(type == "POI")
16161 {
16162 // p_{m*n,0}:
16163 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
16164 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
16165 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
16166 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
16167
16168 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16169
16170 t = 1; // typeFlag = RP or POI
16171 }
16172 else if(type == "RP")
16173 {
16174 // p_{m*n,0} = q_{m*n,0}:
16175 p1n0kRe = q1n0kRe;
16176 p1n0kIm = q1n0kIm;
16177
16178 mp = mq;
16179
16180 t = 0; // typeFlag = RP or POI
16181 }
16182
16183 // 3'-particle correlators:
16184 // Taeney-Yan correlator:
16185 Double_t dTaeneyYan = 0.;
16186 Double_t mWeightTaeneyYan = 0.; // multiplicity weight for Taeney-Yan correlator
16187 if((mp*dMult-2.*mq)*(dMult-1.) > 0.) // to be improved - is this condition fully justified?
16188 {
16189 dTaeneyYan = (dReQ3n*(p1n0kRe*dReQ2n-p1n0kIm*dImQ2n)+dImQ3n*(p1n0kIm*dReQ2n+p1n0kRe*dImQ2n)
16190 - p1n0kRe*dReQ1n - p1n0kIm*dImQ1n
16191 - q2n0kRe*dReQ2n - q2n0kIm*dImQ2n
16192 - q3n0kRe*dReQ3n - q3n0kIm*dImQ3n
16193 + 2.*mq)
16194 / ((mp*dMult-2.*mq)*(dMult-1.));
16195 // determine multiplicity weight:
16196 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
16197 {
16198 mWeightTaeneyYan = (mp*dMult-2.*mq)*(dMult-1.);
16199 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
16200 {
16201 mWeightTaeneyYan = 1.;
16202 }
16203 // Fill profiles:
16204 fOtherDiffCorrelators[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dTaeneyYan,mWeightTaeneyYan);
16205 } // end of if((mp*dMult-2.*mq)*(dMult-1.) > 0.)
16206
16207 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16208
16209} // end of void AliFlowAnalysisWithQCumulants::CalculateOtherDiffCorrelators(TString type, TString ptOrEta)
16210
e1d101a6 16211//=======================================================================================================================
64e500e3 16212
1268c371 16213void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCorrelations(TString type)
16214{
16215 // Calculate all reduced correlations needed for 2D differential flow for each (pt,eta) bin.
16216
16217 // Multiplicity:
16218 Double_t dMult = (*fSpk)(0,0);
16219 // Real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16220 Double_t dReQ1n = (*fReQ)(0,0);
16221 Double_t dReQ2n = (*fReQ)(1,0);
16222 //Double_t dReQ3n = (*fReQ)(2,0);
16223 //Double_t dReQ4n = (*fReQ)(3,0);
16224 Double_t dImQ1n = (*fImQ)(0,0);
16225 Double_t dImQ2n = (*fImQ)(1,0);
16226 //Double_t dImQ3n = (*fImQ)(2,0);
16227 //Double_t dImQ4n = (*fImQ)(3,0);
16228
16229 // 2D reduced correlations are stored in TProfile2D f2DDiffFlowCorrelationsPro[0=RP,1=POI][correlation index].
16230 // Correlation index runs as follows:
16231 // 0: <<2'>>
16232 // 1: <<4'>>
16233 // 2: <<6'>>
16234 // 3: <<8'>>
16235
16236 Int_t t = 0; // type flag
16237 if(type == "RP")
16238 {
16239 t = 0;
16240 } else if(type == "POI")
16241 {
16242 t = 1;
16243 }
16244
16245 // Looping over all (pt,eta) bins and calculating correlations needed for differential flow:
16246 for(Int_t p=1;p<=fnBinsPt;p++)
16247 {
16248 for(Int_t e=1;e<=fnBinsEta;e++)
16249 {
16250 // Real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular (pt,eta) bin):
16251 Double_t p1n0kRe = 0.;
16252 Double_t p1n0kIm = 0.;
16253 // Number of POIs in particular pt or eta bin:
16254 Double_t mp = 0.;
16255 // Real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for 'RP && POI particles' in particular pt or eta bin):
16256 Double_t q1n0kRe = 0.;
16257 Double_t q1n0kIm = 0.;
16258 Double_t q2n0kRe = 0.;
16259 Double_t q2n0kIm = 0.;
16260 // Number of 'RP && POI particles' in particular pt or eta bin:
16261 Double_t mq = 0.;
16262 if(type == "POI")
16263 {
16264 // q_{m*n,0}:
16265 q1n0kRe = fReRPQ2dEBE[2][0][0]->GetBinContent(fReRPQ2dEBE[2][0][0]->GetBin(p,e))
16266 * fReRPQ2dEBE[2][0][0]->GetBinEntries(fReRPQ2dEBE[2][0][0]->GetBin(p,e));
16267 q1n0kIm = fImRPQ2dEBE[2][0][0]->GetBinContent(fImRPQ2dEBE[2][0][0]->GetBin(p,e))
16268 * fImRPQ2dEBE[2][0][0]->GetBinEntries(fImRPQ2dEBE[2][0][0]->GetBin(p,e));
16269 q2n0kRe = fReRPQ2dEBE[2][1][0]->GetBinContent(fReRPQ2dEBE[2][1][0]->GetBin(p,e))
16270 * fReRPQ2dEBE[2][1][0]->GetBinEntries(fReRPQ2dEBE[2][1][0]->GetBin(p,e));
16271 q2n0kIm = fImRPQ2dEBE[2][1][0]->GetBinContent(fImRPQ2dEBE[2][1][0]->GetBin(p,e))
16272 * fImRPQ2dEBE[2][1][0]->GetBinEntries(fImRPQ2dEBE[2][1][0]->GetBin(p,e));
16273 // m_{q}:
16274 mq = fReRPQ2dEBE[2][0][0]->GetBinEntries(fReRPQ2dEBE[2][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16275 } // end of if(type == "POI")
16276 else if(type == "RP")
16277 {
16278 // q_{m*n,0}:
16279 q1n0kRe = fReRPQ2dEBE[0][0][0]->GetBinContent(fReRPQ2dEBE[0][0][0]->GetBin(p,e))
16280 * fReRPQ2dEBE[0][0][0]->GetBinEntries(fReRPQ2dEBE[0][0][0]->GetBin(p,e));
16281 q1n0kIm = fImRPQ2dEBE[0][0][0]->GetBinContent(fImRPQ2dEBE[0][0][0]->GetBin(p,e))
16282 * fImRPQ2dEBE[0][0][0]->GetBinEntries(fImRPQ2dEBE[0][0][0]->GetBin(p,e));
16283 q2n0kRe = fReRPQ2dEBE[0][1][0]->GetBinContent(fReRPQ2dEBE[0][1][0]->GetBin(p,e))
16284 * fReRPQ2dEBE[0][1][0]->GetBinEntries(fReRPQ2dEBE[0][1][0]->GetBin(p,e));
16285 q2n0kIm = fImRPQ2dEBE[0][1][0]->GetBinContent(fImRPQ2dEBE[0][1][0]->GetBin(p,e))
16286 * fImRPQ2dEBE[0][1][0]->GetBinEntries(fImRPQ2dEBE[0][1][0]->GetBin(p,e));
16287 // m_{q}:
16288 mq = fReRPQ2dEBE[0][0][0]->GetBinEntries(fReRPQ2dEBE[0][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16289 } // end of else if(type == "RP")
16290 if(type == "POI")
16291 {
16292 // p_{m*n,0}:
16293 p1n0kRe = fReRPQ2dEBE[1][0][0]->GetBinContent(fReRPQ2dEBE[1][0][0]->GetBin(p,e))
16294 * fReRPQ2dEBE[1][0][0]->GetBinEntries(fReRPQ2dEBE[1][0][0]->GetBin(p,e));
16295 p1n0kIm = fImRPQ2dEBE[1][0][0]->GetBinContent(fImRPQ2dEBE[1][0][0]->GetBin(p,e))
16296 * fImRPQ2dEBE[1][0][0]->GetBinEntries(fImRPQ2dEBE[1][0][0]->GetBin(p,e));
16297 // m_{p}
16298 mp = fReRPQ2dEBE[1][0][0]->GetBinEntries(fReRPQ2dEBE[1][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16299
16300 t = 1; // typeFlag = RP or POI
16301 } // end of if(type == "POI")
16302 else if(type == "RP")
16303 {
16304 // p_{m*n,0} = q_{m*n,0}:
16305 p1n0kRe = q1n0kRe;
16306 p1n0kIm = q1n0kIm;
16307 // m_{p} = m_{q}:
16308 mp = mq;
16309
16310 t = 0; // typeFlag = RP or POI
16311 } // end of if(type == "RP")
16312
16313 // 2'-particle correlation for particular (pt,eta) bin:
16314 Double_t two1n1nPtEta = 0.;
16315 Double_t mWeight2pPrime = 0.; // multiplicity weight for <2'>
16316 if(mp*dMult-mq)
16317 {
16318 two1n1nPtEta = (p1n0kRe*dReQ1n+p1n0kIm*dImQ1n-mq)
16319 / (mp*dMult-mq);
16320 // Determine multiplicity weight:
16321 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
16322 {
16323 mWeight2pPrime = mp*dMult-mq;
16324 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
16325 {
16326 mWeight2pPrime = 1.;
16327 }
16328 // Fill 2D profile holding <<2'>>:
16329 f2DDiffFlowCorrelationsPro[t][0]->Fill(fPtMin+(p-1)*fPtBinWidth,fEtaMin+(e-1)*fEtaBinWidth,two1n1nPtEta,mWeight2pPrime);
16330 } // end of if(mp*dMult-mq)
16331
16332 // 4'-particle correlation:
16333 Double_t four1n1n1n1nPtEta = 0.;
16334 Double_t mWeight4pPrime = 0.; // multiplicity weight for <4'>
16335 if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16336 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
16337 {
16338 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16339 - q2n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
16340 - 2.*q2n0kIm*dReQ1n*dImQ1n
16341 - p1n0kRe*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
16342 + p1n0kIm*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
16343 - 2.*dMult*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16344 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*mq
16345 + 6.*(q1n0kRe*dReQ1n+q1n0kIm*dImQ1n)
16346 + 1.*(q2n0kRe*dReQ2n+q2n0kIm*dImQ2n)
16347 + 2.*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16348 + 2.*mq*dMult
16349 - 6.*mq)
16350 / ((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16351 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.));
16352 // Determine multiplicity weight:
16353 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
16354 {
16355 mWeight4pPrime = (mp-mq)*dMult*(dMult-1.)*(dMult-2.) + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16356 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
16357 {
16358 mWeight4pPrime = 1.;
16359 }
16360 // Fill 2D profile holding <<4'>>:
16361 f2DDiffFlowCorrelationsPro[t][1]->Fill(fPtMin+(p-1)*fPtBinWidth,fEtaMin+(e-1)*fEtaBinWidth,four1n1n1n1nPtEta,mWeight4pPrime);
16362 } // end of if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16363 // +mq*(dMult-1.)*(dMult-2.)*(dMult-3.))
16364 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
16365 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
16366
16367} // end of AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCorrelations(TString type)
16368
e1d101a6 16369//=======================================================================================================================
1268c371 16370
489d5531 16371void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfEventWeights(TString type, TString ptOrEta)
16372{
16373 // Calculate sums of various event weights for reduced correlations.
16374 // (These quantitites are needed in expressions for unbiased estimators relevant for the statistical errors.)
16375
2a98ceb8 16376 Int_t typeFlag = 0;
16377 Int_t ptEtaFlag = 0;
489d5531 16378
16379 if(type == "RP")
16380 {
16381 typeFlag = 0;
16382 } else if(type == "POI")
16383 {
16384 typeFlag = 1;
16385 }
16386
16387 if(ptOrEta == "Pt")
16388 {
16389 ptEtaFlag = 0;
16390 } else if(ptOrEta == "Eta")
16391 {
16392 ptEtaFlag = 1;
16393 }
16394
16395 // shortcuts:
16396 Int_t t = typeFlag;
16397 Int_t pe = ptEtaFlag;
16398
16399 // binning:
16400 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16401 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16402 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16403 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16404
16405 for(Int_t rpq=0;rpq<3;rpq++)
16406 {
16407 for(Int_t m=0;m<4;m++)
16408 {
16409 for(Int_t k=0;k<9;k++)
16410 {
16411 if(!fReRPQ1dEBE[rpq][pe][m][k])
16412 {
16413 cout<<"WARNING: fReRPQ1dEBE[rpq][pe][m][k] is NULL in AFAWQC::CSAPOEWFDF() !!!!"<<endl;
16414 cout<<"pe = "<<pe<<endl;
16415 cout<<"rpq = "<<rpq<<endl;
16416 cout<<"m = "<<m<<endl;
16417 cout<<"k = "<<k<<endl;
16418 exit(0);
16419 }
16420 }
16421 }
16422 }
16423
16424 // multiplicities:
1268c371 16425 Double_t dMult = (*fSpk)(0,0); // total event multiplicity
489d5531 16426 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16427 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16428 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16429
16430 // event weights for reduced correlations:
16431 Double_t dw2 = 0.; // event weight for <2'>
16432 Double_t dw4 = 0.; // event weight for <4'>
16433 //Double_t dw6 = 0.; // event weight for <6'>
16434 //Double_t dw8 = 0.; // event weight for <8'>
16435
16436 // looping over bins:
16437 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16438 {
16439 if(type == "RP")
16440 {
16441 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16442 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16443 } else if(type == "POI")
16444 {
16445 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16446 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16447 }
16448
16449 // event weight for <2'>:
16450 dw2 = mp*dMult-mq;
16451 fDiffFlowSumOfEventWeights[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2);
16452 fDiffFlowSumOfEventWeights[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw2,2.));
16453
16454 // event weight for <4'>:
16455 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16456 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16457 fDiffFlowSumOfEventWeights[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4);
16458 fDiffFlowSumOfEventWeights[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw4,2.));
16459
16460 // event weight for <6'>:
16461 //dw6 = ...;
16462 //fDiffFlowSumOfEventWeights[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6);
16463 //fDiffFlowSumOfEventWeights[t][pe][t][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw6,2.));
16464
16465 // event weight for <8'>:
16466 //dw8 = ...;
16467 //fDiffFlowSumOfEventWeights[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw8);
16468 //fDiffFlowSumOfEventWeights[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw8,2.));
16469 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16470
16471} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfEventWeights()
16472
16473
e1d101a6 16474//=======================================================================================================================
489d5531 16475
16476
16477void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfProductOfEventWeights(TString type, TString ptOrEta)
16478{
16479 // Calculate sum of products of various event weights for both types of correlations (the ones for int. and diff. flow).
16480 // (These quantitites are needed in expressions for unbiased estimators relevant for the statistical errors.)
16481 //
16482 // Important: To fill fDiffFlowSumOfProductOfEventWeights[][][][] use bellow table (i,j) with following constraints:
16483 // 1.) i<j
16484 // 2.) do not store terms which DO NOT include reduced correlations;
16485 // Table:
16486 // [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'>]
16487
2a98ceb8 16488 Int_t typeFlag = 0;
16489 Int_t ptEtaFlag = 0;
489d5531 16490
16491 if(type == "RP")
16492 {
16493 typeFlag = 0;
16494 } else if(type == "POI")
16495 {
16496 typeFlag = 1;
16497 }
16498
16499 if(ptOrEta == "Pt")
16500 {
16501 ptEtaFlag = 0;
16502 } else if(ptOrEta == "Eta")
16503 {
16504 ptEtaFlag = 1;
16505 }
16506
16507 // shortcuts:
16508 Int_t t = typeFlag;
16509 Int_t pe = ptEtaFlag;
16510
16511 // binning:
16512 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16513 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16514 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16515 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16516
16517 // protection:
16518 for(Int_t rpq=0;rpq<3;rpq++)
16519 {
16520 for(Int_t m=0;m<4;m++)
16521 {
16522 for(Int_t k=0;k<9;k++)
16523 {
16524 if(!fReRPQ1dEBE[rpq][pe][m][k])
16525 {
16526 cout<<"WARNING: fReRPQ1dEBE[rpq][pe][m][k] is NULL in AFAWQC::CSAPOEWFDF() !!!!"<<endl;
16527 cout<<"pe = "<<pe<<endl;
16528 cout<<"rpq = "<<rpq<<endl;
16529 cout<<"m = "<<m<<endl;
16530 cout<<"k = "<<k<<endl;
16531 exit(0);
16532 }
16533 }
16534 }
16535 }
16536
16537 // multiplicities:
1268c371 16538 Double_t dMult = (*fSpk)(0,0); // total event multiplicity
489d5531 16539 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16540 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16541 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16542
16543 // event weights for correlations:
16544 Double_t dW2 = dMult*(dMult-1); // event weight for <2>
16545 Double_t dW4 = dMult*(dMult-1)*(dMult-2)*(dMult-3); // event weight for <4>
16546 Double_t dW6 = dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5); // event weight for <6>
16547 Double_t dW8 = dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5)*(dMult-6)*(dMult-7); // event weight for <8>
16548
16549 // event weights for reduced correlations:
16550 Double_t dw2 = 0.; // event weight for <2'>
16551 Double_t dw4 = 0.; // event weight for <4'>
16552 //Double_t dw6 = 0.; // event weight for <6'>
16553 //Double_t dw8 = 0.; // event weight for <8'>
16554
16555 // looping over bins:
16556 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16557 {
16558 if(type == "RP")
16559 {
16560 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16561 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16562 } else if(type == "POI")
16563 {
16564 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16565 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16566 }
16567
16568 // event weight for <2'>:
16569 dw2 = mp*dMult-mq;
16570 fDiffFlowSumOfProductOfEventWeights[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw2); // storing product of even weights for <2> and <2'>
16571 fDiffFlowSumOfProductOfEventWeights[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW4); // storing product of even weights for <4> and <2'>
16572 fDiffFlowSumOfProductOfEventWeights[t][pe][1][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW6); // storing product of even weights for <6> and <2'>
16573 fDiffFlowSumOfProductOfEventWeights[t][pe][1][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW8); // storing product of even weights for <8> and <2'>
16574
16575 // event weight for <4'>:
16576 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16577 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16578 fDiffFlowSumOfProductOfEventWeights[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw4); // storing product of even weights for <2> and <4'>
16579 fDiffFlowSumOfProductOfEventWeights[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw4); // storing product of even weights for <2'> and <4'>
16580 fDiffFlowSumOfProductOfEventWeights[t][pe][2][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw4); // storing product of even weights for <4> and <4'>
16581 fDiffFlowSumOfProductOfEventWeights[t][pe][3][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dW6); // storing product of even weights for <6> and <4'>
16582 fDiffFlowSumOfProductOfEventWeights[t][pe][3][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dW8); // storing product of even weights for <8> and <4'>
16583
16584 // event weight for <6'>:
16585 //dw6 = ...;
16586 //fDiffFlowSumOfProductOfEventWeights[t][pe][0][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw6); // storing product of even weights for <2> and <6'>
16587 //fDiffFlowSumOfProductOfEventWeights[t][pe][1][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw6); // storing product of even weights for <2'> and <6'>
16588 //fDiffFlowSumOfProductOfEventWeights[t][pe][2][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw6); // storing product of even weights for <4> and <6'>
16589 //fDiffFlowSumOfProductOfEventWeights[t][pe][3][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dw6); // storing product of even weights for <4'> and <6'>
16590 //fDiffFlowSumOfProductOfEventWeights[t][pe][4][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW6*dw6); // storing product of even weights for <6> and <6'>
16591 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dW8); // storing product of even weights for <6'> and <8>
16592 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dw8); // storing product of even weights for <6'> and <8'>
16593
16594 // event weight for <8'>:
16595 //dw8 = ...;
16596 //fDiffFlowSumOfProductOfEventWeights[t][pe][0][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw8); // storing product of even weights for <2> and <8'>
16597 //fDiffFlowSumOfProductOfEventWeights[t][pe][1][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw8); // storing product of even weights for <2'> and <8'>
16598 //fDiffFlowSumOfProductOfEventWeights[t][pe][2][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw8); // storing product of even weights for <4> and <8'>
16599 //fDiffFlowSumOfProductOfEventWeights[t][pe][3][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dw8); // storing product of even weights for <4'> and <8'>
16600 //fDiffFlowSumOfProductOfEventWeights[t][pe][4][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW6*dw8); // storing product of even weights for <6> and <8'>
16601 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dw8); // storing product of even weights for <6'> and <8'>
16602 //fDiffFlowSumOfProductOfEventWeights[t][pe][6][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW8*dw8); // storing product of even weights for <8> and <8'>
16603
16604 // Table:
16605 // [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'>]
16606
16607 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16608
16609
16610
16611} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfProductOfEventWeights(TString type, TString ptOrEta)
16612
e1d101a6 16613//=======================================================================================================================
489d5531 16614
489d5531 16615void AliFlowAnalysisWithQCumulants::FinalizeReducedCorrelations(TString type, TString ptOrEta)
16616{
16617 // Transfer profiles into histograms and calculate statistical errors correctly.
16618
1268c371 16619 Int_t t = 0; // RP or POI
16620 Int_t pe = 0; // pt or eta
489d5531 16621
16622 if(type == "RP")
16623 {
1268c371 16624 t = 0;
489d5531 16625 } else if(type == "POI")
16626 {
1268c371 16627 t = 1;
489d5531 16628 }
16629
16630 if(ptOrEta == "Pt")
16631 {
1268c371 16632 pe = 0;
489d5531 16633 } else if(ptOrEta == "Eta")
16634 {
1268c371 16635 pe = 1;
489d5531 16636 }
1268c371 16637
16638 for(Int_t rci=0;rci<4;rci++) // to be improved - moved into the method CheckPointersUsedInFinish()
489d5531 16639 {
16640 if(!fDiffFlowCorrelationsPro[t][pe][rci])
16641 {
16642 cout<<"WARNING: fDiffFlowCorrelationsPro[t][pe][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16643 cout<<"t = "<<t<<endl;
16644 cout<<"pe = "<<pe<<endl;
16645 cout<<"rci = "<<rci<<endl;
16646 exit(0);
16647 }
b40a910e 16648 if(!fDiffFlowSquaredCorrelationsPro[t][pe][rci])
16649 {
16650 cout<<"WARNING: fDiffFlowSquaredCorrelationsPro[t][pe][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16651 cout<<"t = "<<t<<endl;
16652 cout<<"pe = "<<pe<<endl;
16653 cout<<"rci = "<<rci<<endl;
16654 exit(0);
16655 }
489d5531 16656 for(Int_t power=0;power<2;power++)
16657 {
16658 if(!fDiffFlowSumOfEventWeights[t][pe][power][rci])
16659 {
16660 cout<<"WARNING: fDiffFlowSumOfEventWeights[t][pe][power][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16661 cout<<"t = "<<t<<endl;
16662 cout<<"pe = "<<pe<<endl;
16663 cout<<"power = "<<power<<endl;
16664 cout<<"rci = "<<rci<<endl;
16665 exit(0);
16666 }
16667 } // end of for(Int_t power=0;power<2;power++)
16668 } // end of for(Int_t rci=0;rci<4;rci++)
16669
16670 // common:
b40a910e 16671 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 16672 // transfer 1D profile into 1D histogram:
16673 Double_t correlation = 0.;
b40a910e 16674 Double_t squaredCorrelation = 0.;
489d5531 16675 Double_t spread = 0.;
16676 Double_t sumOfWeights = 0.; // sum of weights for particular reduced correlations for particular pt or eta bin
16677 Double_t sumOfSquaredWeights = 0.; // sum of squared weights for particular reduced correlations for particular pt or eta bin
16678 Double_t error = 0.; // error = termA * spread * termB
16679 // termA = (sqrt(sumOfSquaredWeights)/sumOfWeights)
16680 // termB = 1/pow(1-termA^2,0.5)
16681 Double_t termA = 0.;
16682 Double_t termB = 0.;
16683 for(Int_t rci=0;rci<4;rci++) // index of reduced correlation
16684 {
16685 for(Int_t b=1;b<=nBinsPtEta[pe];b++) // number of pt or eta bins
16686 {
b40a910e 16687 if(fDiffFlowCorrelationsPro[t][pe][rci]->GetBinEffectiveEntries(b) < 2 ||
16688 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->GetBinEffectiveEntries(b) < 2)
16689 {
16690 fDiffFlowCorrelationsPro[t][pe][rci]->SetBinError(b,0.);
16691 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->SetBinError(b,0.);
16692 continue; // to be improved - should I ignore results in pt bins with one entry for reduced correlations or not?
16693 }
489d5531 16694 correlation = fDiffFlowCorrelationsPro[t][pe][rci]->GetBinContent(b);
b40a910e 16695 squaredCorrelation = fDiffFlowSquaredCorrelationsPro[t][pe][rci]->GetBinContent(b);
16696 if(squaredCorrelation-correlation*correlation >= 0.)
16697 {
16698 spread = pow(squaredCorrelation-correlation*correlation,0.5);
16699 } else
16700 {
16701 cout<<endl;
16702 cout<<Form(" WARNING: Imaginary 'spread' for rci = %d, pe = %d, bin = %d !!!!",rci,pe,b)<<endl;
16703 cout<<endl;
16704 }
489d5531 16705 sumOfWeights = fDiffFlowSumOfEventWeights[t][pe][0][rci]->GetBinContent(b);
16706 sumOfSquaredWeights = fDiffFlowSumOfEventWeights[t][pe][1][rci]->GetBinContent(b);
1268c371 16707 if(TMath::Abs(sumOfWeights)>0.){termA = (pow(sumOfSquaredWeights,0.5)/sumOfWeights);}
16708 if(1.-pow(termA,2.)>0.){termB = 1./pow(1.-pow(termA,2.),0.5);}
489d5531 16709 error = termA*spread*termB; // final error (unbiased estimator for standard deviation)
16710 fDiffFlowCorrelationsHist[t][pe][rci]->SetBinContent(b,correlation);
16711 fDiffFlowCorrelationsHist[t][pe][rci]->SetBinError(b,error);
16712 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16713 } // end of for(Int_t rci=0;rci<4;rci++)
16714
16715} // end of void AliFlowAnalysisWithQCumulants::FinalizeReducedCorrelations(TString type, TString ptOrEta)
16716
e1d101a6 16717//=======================================================================================================================
489d5531 16718
489d5531 16719void AliFlowAnalysisWithQCumulants::CalculateDiffFlowProductOfCorrelations(TString type, TString ptOrEta)
16720{
16721 // store products: <2><2'>, <2><4'>, <2><6'>, <2><8'>, <2'><4>,
16722 // <2'><4'>, <2'><6>, <2'><6'>, <2'><8>, <2'><8'>,
16723 // <4><4'>, <4><6'>, <4><8'>, <4'><6>, <4'><6'>,
16724 // <4'><8>, <4'><8'>, <6><6'>, <6><8'>, <6'><8>,
16725 // <6'><8'>, <8><8'>.
16726
2a98ceb8 16727 Int_t typeFlag = 0;
16728 Int_t ptEtaFlag = 0;
489d5531 16729
16730 if(type == "RP")
16731 {
16732 typeFlag = 0;
16733 } else if(type == "POI")
16734 {
16735 typeFlag = 1;
16736 }
16737
16738 if(ptOrEta == "Pt")
16739 {
16740 ptEtaFlag = 0;
16741 } else if(ptOrEta == "Eta")
16742 {
16743 ptEtaFlag = 1;
16744 }
16745
16746 // shortcuts:
16747 Int_t t = typeFlag;
16748 Int_t pe = ptEtaFlag;
16749
16750 // common:
16751 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16752 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16753 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16754
16755 // protections // to be improved (add protection for all pointers in this method)
16756 if(!fIntFlowCorrelationsEBE)
16757 {
16758 cout<<"WARNING: fIntFlowCorrelationsEBE is NULL in AFAWQC::CDFPOC() !!!!"<<endl;
16759 exit(0);
16760 }
16761
16762 /*
1268c371 16763 Double_t dMult = (*fSpk)(0,0); // multiplicity (number of particles used to determine the reaction plane)
489d5531 16764 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16765 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16766 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16767 */
16768
16769 // e-b-e correlations:
16770 Double_t twoEBE = fIntFlowCorrelationsEBE->GetBinContent(1); // <2>
16771 Double_t fourEBE = fIntFlowCorrelationsEBE->GetBinContent(2); // <4>
16772 Double_t sixEBE = fIntFlowCorrelationsEBE->GetBinContent(3); // <6>
16773 Double_t eightEBE = fIntFlowCorrelationsEBE->GetBinContent(4); // <8>
16774
16775 // event weights for correlations:
16776 Double_t dW2 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1); // event weight for <2>
16777 Double_t dW4 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2); // event weight for <4>
16778 Double_t dW6 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(3); // event weight for <6>
16779 Double_t dW8 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(4); // event weight for <8>
16780
16781 // e-b-e reduced correlations:
16782 Double_t twoReducedEBE = 0.; // <2'>
16783 Double_t fourReducedEBE = 0.; // <4'>
ea239361 16784 //Double_t sixReducedEBE = 0.; // <6'>
16785 //Double_t eightReducedEBE = 0.; // <8'>
489d5531 16786
16787 // event weights for reduced correlations:
16788 Double_t dw2 = 0.; // event weight for <2'>
16789 Double_t dw4 = 0.; // event weight for <4'>
16790 //Double_t dw6 = 0.; // event weight for <6'>
16791 //Double_t dw8 = 0.; // event weight for <8'>
16792
16793 // looping over bins:
16794 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16795 {
16796 // e-b-e reduced correlations:
16797 twoReducedEBE = fDiffFlowCorrelationsEBE[t][pe][0]->GetBinContent(b);
16798 fourReducedEBE = fDiffFlowCorrelationsEBE[t][pe][1]->GetBinContent(b);
ea239361 16799 //sixReducedEBE = fDiffFlowCorrelationsEBE[t][pe][2]->GetBinContent(b);
16800 //eightReducedEBE = fDiffFlowCorrelationsEBE[t][pe][3]->GetBinContent(b);
489d5531 16801
16802 /*
16803 // to be improved (I should not do this here again)
16804 if(type == "RP")
16805 {
16806 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16807 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16808 } else if(type == "POI")
16809 {
16810 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16811 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16812 }
16813
16814 // event weights for reduced correlations:
16815 dw2 = mp*dMult-mq; // weight for <2'>
16816 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16817 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.); // weight for <4'>
16818 //dw6 = ...
16819 //dw8 = ...
16820
16821 */
16822
16823 dw2 = fDiffFlowEventWeightsForCorrelationsEBE[t][pe][0]->GetBinContent(b);
16824 dw4 = fDiffFlowEventWeightsForCorrelationsEBE[t][pe][1]->GetBinContent(b);
16825
16826 // storing all products:
16827 fDiffFlowProductOfCorrelationsPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*twoReducedEBE,dW2*dw2); // storing <2><2'>
16828 fDiffFlowProductOfCorrelationsPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*twoReducedEBE,dW4*dw2); // storing <4><2'>
16829 fDiffFlowProductOfCorrelationsPro[t][pe][1][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*twoReducedEBE,dW6*dw2); // storing <6><2'>
16830 fDiffFlowProductOfCorrelationsPro[t][pe][1][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*twoReducedEBE,dW8*dw2); // storing <8><2'>
16831
16832 // event weight for <4'>:
16833 fDiffFlowProductOfCorrelationsPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*fourReducedEBE,dW2*dw4); // storing <2><4'>
16834 fDiffFlowProductOfCorrelationsPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*fourReducedEBE,dw2*dw4); // storing <2'><4'>
16835 fDiffFlowProductOfCorrelationsPro[t][pe][2][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*fourReducedEBE,dW4*dw4); // storing <4><4'>
16836 fDiffFlowProductOfCorrelationsPro[t][pe][3][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*fourReducedEBE,dW6*dw4); // storing <6><4'>
16837 fDiffFlowProductOfCorrelationsPro[t][pe][3][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*fourReducedEBE,dW8*dw4); // storing <8><4'>
16838
16839 // event weight for <6'>:
16840 //dw6 = ...;
16841 //fDiffFlowProductOfCorrelationsPro[t][pe][0][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*sixReducedEBE,dW2*dw6); // storing <2><6'>
16842 //fDiffFlowProductOfCorrelationsPro[t][pe][1][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*sixReducedEBE,dw2*dw6); // storing <2'><6'>
16843 //fDiffFlowProductOfCorrelationsPro[t][pe][2][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*sixReducedEBE,dW4*dw6); // storing <4><6'>
16844 //fDiffFlowProductOfCorrelationsPro[t][pe][3][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourReducedEBE*sixReducedEBE,dw4*dw6); // storing <4'><6'>
16845 //fDiffFlowProductOfCorrelationsPro[t][pe][4][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*sixReducedEBE,dW6*dw6); // storing <6><6'>
16846 //fDiffFlowProductOfCorrelationsPro[t][pe][5][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightEBE,dw6*dW8); // storing <6'><8>
16847 //fDiffFlowProductOfCorrelationsPro[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightReducedEBE,dw6*dw8); // storing <6'><8'>
16848
16849 // event weight for <8'>:
16850 //dw8 = ...;
16851 //fDiffFlowProductOfCorrelationsPro[t][pe][0][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*eightReducedEBE,dW2*dw8); // storing <2><8'>
16852 //fDiffFlowProductOfCorrelationsPro[t][pe][1][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*eightReducedEBE,dw2*dw8); // storing <2'><8'>
16853 //fDiffFlowProductOfCorrelationsPro[t][pe][2][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*eightReducedEBE,dW4*dw8); // storing <4><8'>
16854 //fDiffFlowProductOfCorrelationsPro[t][pe][3][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourReducedEBE*eightReducedEBE,dw4*dw8); // storing <4'><8'>
16855 //fDiffFlowProductOfCorrelationsPro[t][pe][4][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*eightReducedEBE,dW6*dw8); // storing <6><8'>
16856 //fDiffFlowProductOfCorrelationsPro[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightReducedEBE,dw6*dw8); // storing <6'><8'>
16857 //fDiffFlowProductOfCorrelationsPro[t][pe][6][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*eightReducedEBE,dW8*dw8); // storing <8><8'>
16858 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++
16859
16860} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowProductOfCorrelations(TString type, TString ptOrEta)
16861
e1d101a6 16862//=======================================================================================================================
489d5531 16863
489d5531 16864void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCovariances(TString type, TString ptOrEta) // to be improved (reimplemented)
16865{
16866 // a) Calculate unbiased estimators Cov(<2>,<2'>), Cov(<2>,<4'>), Cov(<4>,<2'>), Cov(<4>,<4'>) and Cov(<2'>,<4'>)
16867 // for covariances V(<2>,<2'>), V(<2>,<4'>), V(<4>,<2'>), V(<4>,<4'>) and V(<2'>,<4'>).
16868 // b) Store in histogram fDiffFlowCovariances[t][pe][index] for instance the following:
16869 //
16870 // 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)]
16871 //
16872 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<2'>} is event weight for <2'>.
16873 // c) Binning of fDiffFlowCovariances[t][pe][index] is organized as follows:
16874 //
16875 // 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)]
16876 // 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)]
16877 // 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)]
16878 // 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)]
16879 // 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)]
16880 // ...
16881
2a98ceb8 16882 Int_t typeFlag = 0;
16883 Int_t ptEtaFlag = 0;
489d5531 16884
16885 if(type == "RP")
16886 {
16887 typeFlag = 0;
16888 } else if(type == "POI")
16889 {
16890 typeFlag = 1;
16891 }
16892
16893 if(ptOrEta == "Pt")
16894 {
16895 ptEtaFlag = 0;
16896 } else if(ptOrEta == "Eta")
16897 {
16898 ptEtaFlag = 1;
16899 }
16900
16901 // shortcuts:
16902 Int_t t = typeFlag;
16903 Int_t pe = ptEtaFlag;
16904
16905 // common:
16906 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16907 //Double_t minPtEta[2] = {fPtMin,fEtaMin};
16908 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16909 //Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16910
16911 // average correlations:
16912 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
16913 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
16914 //Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
16915 //Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
16916
16917 // sum of weights for correlation:
16918 Double_t sumOfWeightsForTwo = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // sum_{i=1}^{N} w_{<2>}
16919 Double_t sumOfWeightsForFour = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // sum_{i=1}^{N} w_{<4>}
16920 //Double_t sumOfWeightsForSix = fIntFlowSumOfEventWeights[0]->GetBinContent(3); // sum_{i=1}^{N} w_{<6>}
16921 //Double_t sumOfWeightsForEight = fIntFlowSumOfEventWeights[0]->GetBinContent(4); // sum_{i=1}^{N} w_{<8>}
16922
16923 // average reduced correlations:
16924 Double_t twoReduced = 0.; // <<2'>>
16925 Double_t fourReduced = 0.; // <<4'>>
16926 //Double_t sixReduced = 0.; // <<6'>>
16927 //Double_t eightReduced = 0.; // <<8'>>
16928
16929 // sum of weights for reduced correlation:
16930 Double_t sumOfWeightsForTwoReduced = 0.; // sum_{i=1}^{N} w_{<2'>}
16931 Double_t sumOfWeightsForFourReduced = 0.; // sum_{i=1}^{N} w_{<4'>}
16932 //Double_t sumOfWeightsForSixReduced = 0.; // sum_{i=1}^{N} w_{<6'>}
16933 //Double_t sumOfWeightsForEightReduced = 0.; // sum_{i=1}^{N} w_{<8'>}
16934
16935 // product of weights for reduced correlation:
16936 Double_t productOfWeightsForTwoTwoReduced = 0.; // sum_{i=1}^{N} w_{<2>}w_{<2'>}
16937 Double_t productOfWeightsForTwoFourReduced = 0.; // sum_{i=1}^{N} w_{<2>}w_{<4'>}
16938 Double_t productOfWeightsForFourTwoReduced = 0.; // sum_{i=1}^{N} w_{<4>}w_{<2'>}
16939 Double_t productOfWeightsForFourFourReduced = 0.; // sum_{i=1}^{N} w_{<4>}w_{<4'>}
16940 Double_t productOfWeightsForTwoReducedFourReduced = 0.; // sum_{i=1}^{N} w_{<2'>}w_{<4'>}
16941 // ...
16942
16943 // products for differential flow:
16944 Double_t twoTwoReduced = 0; // <<2><2'>>
16945 Double_t twoFourReduced = 0; // <<2><4'>>
16946 Double_t fourTwoReduced = 0; // <<4><2'>>
16947 Double_t fourFourReduced = 0; // <<4><4'>>
16948 Double_t twoReducedFourReduced = 0; // <<2'><4'>>
16949
16950 // denominators in the expressions for the unbiased estimators for covariances:
16951 // denominator = 1 - term1/(term2*term3)
16952 // prefactor = term1/(term2*term3)
16953 Double_t denominator = 0.;
16954 Double_t prefactor = 0.;
16955 Double_t term1 = 0.;
16956 Double_t term2 = 0.;
16957 Double_t term3 = 0.;
16958
16959 // unbiased estimators for covariances for differential flow:
16960 Double_t covTwoTwoReduced = 0.; // Cov(<2>,<2'>)
16961 Double_t wCovTwoTwoReduced = 0.; // Cov(<2>,<2'>) * prefactor(w_{<2>},w_{<2'>})
16962 Double_t covTwoFourReduced = 0.; // Cov(<2>,<4'>)
16963 Double_t wCovTwoFourReduced = 0.; // Cov(<2>,<4'>) * prefactor(w_{<2>},w_{<4'>})
16964 Double_t covFourTwoReduced = 0.; // Cov(<4>,<2'>)
16965 Double_t wCovFourTwoReduced = 0.; // Cov(<4>,<2'>) * prefactor(w_{<4>},w_{<2'>})
16966 Double_t covFourFourReduced = 0.; // Cov(<4>,<4'>)
16967 Double_t wCovFourFourReduced = 0.; // Cov(<4>,<4'>) * prefactor(w_{<4>},w_{<4'>})
16968 Double_t covTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>)
16969 Double_t wCovTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>) * prefactor(w_{<2'>},w_{<4'>})
16970
16971 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16972 {
16973 // average reduced corelations:
16974 twoReduced = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b);
16975 fourReduced = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b);
16976 // average products:
16977 twoTwoReduced = fDiffFlowProductOfCorrelationsPro[t][pe][0][1]->GetBinContent(b);
16978 twoFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][0][3]->GetBinContent(b);
16979 fourTwoReduced = fDiffFlowProductOfCorrelationsPro[t][pe][1][2]->GetBinContent(b);
16980 fourFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][2][3]->GetBinContent(b);
16981 twoReducedFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][1][3]->GetBinContent(b);
16982 // sum of weights for reduced correlations:
16983 sumOfWeightsForTwoReduced = fDiffFlowSumOfEventWeights[t][pe][0][0]->GetBinContent(b);
16984 sumOfWeightsForFourReduced = fDiffFlowSumOfEventWeights[t][pe][0][1]->GetBinContent(b);
16985 // products of weights for correlations:
16986 productOfWeightsForTwoTwoReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][0][1]->GetBinContent(b);
16987 productOfWeightsForTwoFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][0][3]->GetBinContent(b);
16988 productOfWeightsForFourTwoReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][1][2]->GetBinContent(b);
16989 productOfWeightsForFourFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][2][3]->GetBinContent(b);
16990 productOfWeightsForTwoReducedFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][1][3]->GetBinContent(b);
16991 // denominator for the unbiased estimator for covariances: 1 - term1/(term2*term3)
16992 // prefactor (multiplies Cov's) = term1/(term2*term3)
16993 // <2>,<2'>:
16994 term1 = productOfWeightsForTwoTwoReduced;
16995 term2 = sumOfWeightsForTwo;
16996 term3 = sumOfWeightsForTwoReduced;
16997 if(term2*term3>0.)
16998 {
16999 denominator = 1.-term1/(term2*term3);
17000 prefactor = term1/(term2*term3);
1268c371 17001 if(TMath::Abs(denominator)>1.e-6)
489d5531 17002 {
17003 covTwoTwoReduced = (twoTwoReduced-two*twoReduced)/denominator;
17004 wCovTwoTwoReduced = covTwoTwoReduced*prefactor;
17005 fDiffFlowCovariances[t][pe][0]->SetBinContent(b,wCovTwoTwoReduced);
17006 }
17007 }
17008 // <2>,<4'>:
17009 term1 = productOfWeightsForTwoFourReduced;
17010 term2 = sumOfWeightsForTwo;
17011 term3 = sumOfWeightsForFourReduced;
17012 if(term2*term3>0.)
17013 {
17014 denominator = 1.-term1/(term2*term3);
17015 prefactor = term1/(term2*term3);
1268c371 17016 if(TMath::Abs(denominator)>1.e-6)
489d5531 17017 {
17018 covTwoFourReduced = (twoFourReduced-two*fourReduced)/denominator;
17019 wCovTwoFourReduced = covTwoFourReduced*prefactor;
17020 fDiffFlowCovariances[t][pe][1]->SetBinContent(b,wCovTwoFourReduced);
17021 }
17022 }
17023 // <4>,<2'>:
17024 term1 = productOfWeightsForFourTwoReduced;
17025 term2 = sumOfWeightsForFour;
17026 term3 = sumOfWeightsForTwoReduced;
17027 if(term2*term3>0.)
17028 {
17029 denominator = 1.-term1/(term2*term3);
17030 prefactor = term1/(term2*term3);
1268c371 17031 if(TMath::Abs(denominator)>1.e-6)
489d5531 17032 {
17033 covFourTwoReduced = (fourTwoReduced-four*twoReduced)/denominator;
17034 wCovFourTwoReduced = covFourTwoReduced*prefactor;
17035 fDiffFlowCovariances[t][pe][2]->SetBinContent(b,wCovFourTwoReduced);
17036 }
17037 }
17038 // <4>,<4'>:
17039 term1 = productOfWeightsForFourFourReduced;
17040 term2 = sumOfWeightsForFour;
17041 term3 = sumOfWeightsForFourReduced;
17042 if(term2*term3>0.)
17043 {
17044 denominator = 1.-term1/(term2*term3);
17045 prefactor = term1/(term2*term3);
1268c371 17046 if(TMath::Abs(denominator)>1.e-6)
489d5531 17047 {
17048 covFourFourReduced = (fourFourReduced-four*fourReduced)/denominator;
17049 wCovFourFourReduced = covFourFourReduced*prefactor;
17050 fDiffFlowCovariances[t][pe][3]->SetBinContent(b,wCovFourFourReduced);
17051 }
17052 }
17053 // <2'>,<4'>:
17054 term1 = productOfWeightsForTwoReducedFourReduced;
17055 term2 = sumOfWeightsForTwoReduced;
17056 term3 = sumOfWeightsForFourReduced;
17057 if(term2*term3>0.)
17058 {
17059 denominator = 1.-term1/(term2*term3);
17060 prefactor = term1/(term2*term3);
1268c371 17061 if(TMath::Abs(denominator)>1.e-6)
489d5531 17062 {
17063 covTwoReducedFourReduced = (twoReducedFourReduced-twoReduced*fourReduced)/denominator;
17064 wCovTwoReducedFourReduced = covTwoReducedFourReduced*prefactor;
17065 fDiffFlowCovariances[t][pe][4]->SetBinContent(b,wCovTwoReducedFourReduced);
17066 }
17067 }
17068 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17069
17070} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCovariances(TString type, TString ptOrEta)
17071
e1d101a6 17072//=======================================================================================================================
489d5531 17073
489d5531 17074void AliFlowAnalysisWithQCumulants::CalculateDiffFlow(TString type, TString ptOrEta)
17075{
1268c371 17076 // Calculate final results for differential flow.
489d5531 17077
1268c371 17078 // REMARK: Differential flow calculated in this method is NOT corrected for non-uniform acceptance.
17079 // This correction, if enabled via setter SetApplyCorrectionForNUA(Bool_t), is applied in the method
17080 // CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta)
17081
17082 Int_t t = 0; // RP or POI
17083 Int_t pe = 0; // pt or eta
489d5531 17084
17085 if(type == "RP")
17086 {
1268c371 17087 t = 0;
489d5531 17088 } else if(type == "POI")
17089 {
1268c371 17090 t = 1;
489d5531 17091 }
17092
17093 if(ptOrEta == "Pt")
17094 {
1268c371 17095 pe = 0;
489d5531 17096 } else if(ptOrEta == "Eta")
17097 {
1268c371 17098 pe = 1;
489d5531 17099 }
1268c371 17100
17101 // Common:
489d5531 17102 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
1268c371 17103 // Correlations:
489d5531 17104 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
1268c371 17105 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
17106 // Statistical errors of correlations:
489d5531 17107 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1);
17108 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2);
1268c371 17109 // Reduced correlations:
489d5531 17110 Double_t twoReduced = 0.; // <<2'>>
17111 Double_t fourReduced = 0.; // <<4'>>
1268c371 17112 // Statistical errors of reduced correlations:
489d5531 17113 Double_t twoReducedError = 0.;
17114 Double_t fourReducedError = 0.;
1268c371 17115 // Covariances:
8e1cefdd 17116 Double_t wCovTwoFour = 0.; // Cov(<2>,<4>) * prefactor(<2>,<4>)
17117 if(!fForgetAboutCovariances)
17118 {
17119 wCovTwoFour = fIntFlowCovariances->GetBinContent(1); // Cov(<2>,<4>) * prefactor(<2>,<4>)
17120 }
489d5531 17121 Double_t wCovTwoTwoReduced = 0.; // Cov(<2>,<2'>) * prefactor(<2>,<2'>)
17122 Double_t wCovTwoFourReduced = 0.; // Cov(<2>,<4'>) * prefactor(<2>,<4'>)
17123 Double_t wCovFourTwoReduced = 0.; // Cov(<4>,<2'>) * prefactor(<4>,<2'>)
17124 Double_t wCovFourFourReduced = 0.; // Cov(<4>,<4'>) * prefactor(<4>,<4'>)
17125 Double_t wCovTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>) * prefactor(<2'>,<4'>)
1268c371 17126 // Differential flow:
489d5531 17127 Double_t v2Prime = 0.; // v'{2}
17128 Double_t v4Prime = 0.; // v'{4}
1268c371 17129 // Statistical error of differential flow:
489d5531 17130 Double_t v2PrimeError = 0.;
17131 Double_t v4PrimeError = 0.;
1268c371 17132 // Squared statistical error of differential flow:
489d5531 17133 Double_t v2PrimeErrorSquared = 0.;
17134 Double_t v4PrimeErrorSquared = 0.;
1268c371 17135 // Loop over pt or eta bins:
489d5531 17136 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17137 {
1268c371 17138 // Reduced correlations and statistical errors:
489d5531 17139 twoReduced = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b);
17140 twoReducedError = fDiffFlowCorrelationsHist[t][pe][0]->GetBinError(b);
17141 fourReduced = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b);
17142 fourReducedError = fDiffFlowCorrelationsHist[t][pe][1]->GetBinError(b);
1268c371 17143 // Covariances:
8e1cefdd 17144 if(!fForgetAboutCovariances)
17145 {
17146 wCovTwoTwoReduced = fDiffFlowCovariances[t][pe][0]->GetBinContent(b);
17147 wCovTwoFourReduced = fDiffFlowCovariances[t][pe][1]->GetBinContent(b);
17148 wCovFourTwoReduced = fDiffFlowCovariances[t][pe][2]->GetBinContent(b);
17149 wCovFourFourReduced = fDiffFlowCovariances[t][pe][3]->GetBinContent(b);
17150 wCovTwoReducedFourReduced = fDiffFlowCovariances[t][pe][4]->GetBinContent(b);
17151 }
1268c371 17152 // Differential flow:
489d5531 17153 // v'{2}:
17154 if(two>0.)
17155 {
17156 v2Prime = twoReduced/pow(two,0.5);
1268c371 17157 v2PrimeErrorSquared = (1./4.)*pow(two,-3.)*(pow(twoReduced,2.)*pow(twoError,2.)
17158 + 4.*pow(two,2.)*pow(twoReducedError,2.)
17159 - 4.*two*twoReduced*wCovTwoTwoReduced);
17160 if(v2PrimeErrorSquared>0.){v2PrimeError = pow(v2PrimeErrorSquared,0.5);}
17161 if(TMath::Abs(v2Prime)>0.)
17162 {
17163 fDiffFlow[t][pe][0]->SetBinContent(b,v2Prime);
17164 fDiffFlow[t][pe][0]->SetBinError(b,v2PrimeError);
17165 }
17166 } // end of if(two>0.)
489d5531 17167 // differential flow:
17168 // v'{4}
17169 if(2.*pow(two,2.)-four > 0.)
17170 {
17171 v4Prime = (2.*two*twoReduced-fourReduced)/pow(2.*pow(two,2.)-four,3./4.);
1268c371 17172 v4PrimeErrorSquared = pow(2.*pow(two,2.)-four,-7./2.)
17173 * (pow(2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced,2.)*pow(twoError,2.)
17174 + (9./16.)*pow(2.*two*twoReduced-fourReduced,2.)*pow(fourError,2.)
17175 + 4.*pow(two,2.)*pow(2.*pow(two,2.)-four,2.)*pow(twoReducedError,2.)
17176 + pow(2.*pow(two,2.)-four,2.)*pow(fourReducedError,2.)
17177 - (3./2.)*(2.*two*twoReduced-fourReduced)
17178 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoFour
17179 - 4.*two*(2.*pow(two,2.)-four)
17180 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoTwoReduced
17181 + 2.*(2.*pow(two,2.)-four)
17182 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoFourReduced
17183 + 3.*two*(2.*pow(two,2.)-four)*(2.*two*twoReduced-fourReduced)*wCovFourTwoReduced
17184 - (3./2.)*(2.*pow(two,2.)-four)*(2.*two*twoReduced-fourReduced)*wCovFourFourReduced
17185 - 4.*two*pow(2.*pow(two,2.)-four,2.)*wCovTwoReducedFourReduced);
17186 if(v4PrimeErrorSquared>0.){v4PrimeError = pow(v4PrimeErrorSquared,0.5);}
17187 if(TMath::Abs(v4Prime)>0.)
17188 {
17189 fDiffFlow[t][pe][1]->SetBinContent(b,v4Prime);
17190 fDiffFlow[t][pe][1]->SetBinError(b,v4PrimeError);
17191 }
17192 } // end of if(2.*pow(two,2.)-four > 0.)
489d5531 17193 } // end of for(Int_t b=1;b<=fnBinsPtEta[pe];b++)
1268c371 17194
17195} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlow(TString type, Bool_t useParticleWeights)
17196
e1d101a6 17197//=======================================================================================================================
1268c371 17198
17199void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlow(TString type)
17200{
17201 // Calculate final results for 2D diferential flow.
17202
17203 // to be improved - check pointers used in this method
17204
17205 Int_t t = 0; // RP or POI
17206
17207 if(type == "RP")
17208 {
17209 t = 0;
17210 } else if(type == "POI")
17211 {
17212 t = 1;
17213 }
489d5531 17214
1268c371 17215 // Differential flow:
17216 Double_t v2Prime = 0.; // v'{2}
17217 Double_t v4Prime = 0.; // v'{4}
17218 // Differential cumulants:
17219 Double_t qc2Prime = 0.; // QC{2'}
17220 Double_t qc4Prime = 0.; // QC{4'}
17221 // Looping over all (pt,eta) bins and calculating differential flow:
17222 for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 17223 {
1268c371 17224 for(Int_t e=1;e<=fnBinsEta;e++)
489d5531 17225 {
1268c371 17226 // QC{2'}:
17227 qc2Prime = f2DDiffFlowCumulants[t][0]->GetBinContent(f2DDiffFlowCumulants[t][0]->GetBin(p,e));
17228 if(qc2Prime>=0.)
17229 {
17230 v2Prime = pow(qc2Prime,0.5);
17231 f2DDiffFlow[t][0]->SetBinContent(f2DDiffFlow[t][0]->GetBin(p,e),v2Prime);
17232 }
17233 // QC{4'}:
17234 qc4Prime = f2DDiffFlowCumulants[t][1]->GetBinContent(f2DDiffFlowCumulants[t][1]->GetBin(p,e));
17235 if(qc4Prime<=0.)
17236 {
17237 v4Prime = pow(-1.*qc4Prime,1./4.);
17238 f2DDiffFlow[t][1]->SetBinContent(f2DDiffFlow[t][1]->GetBin(p,e),v4Prime);
17239 }
17240 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
17241 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
17242
17243} // end of void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlow(TString type)
489d5531 17244
e1d101a6 17245//=======================================================================================================================
489d5531 17246
489d5531 17247void AliFlowAnalysisWithQCumulants::StoreIntFlowFlags()
17248{
17249 // a) Store all flags for integrated flow in profile fIntFlowFlags.
17250
17251 if(!fIntFlowFlags)
17252 {
17253 cout<<"WARNING: fIntFlowFlags is NULL in AFAWQC::SFFIF() !!!!"<<endl;
17254 exit(0);
17255 }
17256
17257 // particle weights used or not:
403e3389 17258 fIntFlowFlags->Fill(0.5,(Int_t)fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights);
489d5531 17259 // which event weights were used:
e1d101a6 17260 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
489d5531 17261 {
17262 fIntFlowFlags->Fill(1.5,0); // 0 = "combinations" (default)
e1d101a6 17263 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
489d5531 17264 {
17265 fIntFlowFlags->Fill(1.5,1); // 1 = "unit"
e1d101a6 17266 } else if(!strcmp(fMultiplicityWeight->Data(),"multiplicity"))
489d5531 17267 {
17268 fIntFlowFlags->Fill(1.5,2); // 2 = "multiplicity"
17269 }
489d5531 17270 fIntFlowFlags->Fill(2.5,(Int_t)fApplyCorrectionForNUA);
17271 fIntFlowFlags->Fill(3.5,(Int_t)fPrintFinalResults[0]);
17272 fIntFlowFlags->Fill(4.5,(Int_t)fPrintFinalResults[1]);
17273 fIntFlowFlags->Fill(5.5,(Int_t)fPrintFinalResults[2]);
b3dacf6b 17274 fIntFlowFlags->Fill(6.5,(Int_t)fPrintFinalResults[3]);
17275 fIntFlowFlags->Fill(7.5,(Int_t)fApplyCorrectionForNUAVsM);
b77b6434 17276 fIntFlowFlags->Fill(8.5,(Int_t)fPropagateErrorAlsoFromNIT);
b3dacf6b 17277 fIntFlowFlags->Fill(9.5,(Int_t)fCalculateCumulantsVsM);
0dd3b008 17278 fIntFlowFlags->Fill(10.5,(Int_t)fMinimumBiasReferenceFlow);
8e1cefdd 17279 fIntFlowFlags->Fill(11.5,(Int_t)fForgetAboutCovariances);
e5834fcb 17280 fIntFlowFlags->Fill(12.5,(Int_t)fStorePhiDistributionForOneEvent);
dd442cd2 17281 fIntFlowFlags->Fill(13.5,(Int_t)fFillMultipleControlHistograms);
3435cacb 17282 fIntFlowFlags->Fill(14.5,(Int_t)fCalculateAllCorrelationsVsM);
489d5531 17283} // end of void AliFlowAnalysisWithQCumulants::StoreIntFlowFlags()
17284
e1d101a6 17285//=======================================================================================================================
489d5531 17286
489d5531 17287void AliFlowAnalysisWithQCumulants::StoreDiffFlowFlags()
17288{
17289 // Store all flags for differential flow in the profile fDiffFlowFlags.
17290
17291 if(!fDiffFlowFlags)
17292 {
1268c371 17293 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::SDFF() !!!!\n\n");
489d5531 17294 exit(0);
17295 }
17296
1268c371 17297 fDiffFlowFlags->Fill(0.5,fCalculateDiffFlow); // calculate differential flow
403e3389 17298 fDiffFlowFlags->Fill(1.5,fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights); // particle weights used or not?
1268c371 17299 //fDiffFlowFlags->Fill(2.5,""); // which event weight was used? ("combinations", "unit" or "multiplicity") to be improved - finalized
17300 fDiffFlowFlags->Fill(3.5,fApplyCorrectionForNUA); // corrected for non-uniform acceptance or not
17301 fDiffFlowFlags->Fill(4.5,fCalculate2DDiffFlow); // calculate also 2D differential flow vs (pt,eta)
62e36168 17302 fDiffFlowFlags->Fill(5.5,fCalculateDiffFlowVsEta); // if you set kFALSE only differential flow vs pt is calculated
1268c371 17303
489d5531 17304} // end of void AliFlowAnalysisWithQCumulants::StoreDiffFlowFlags()
17305
e1d101a6 17306//=======================================================================================================================
17307
17308void AliFlowAnalysisWithQCumulants::StoreMixedHarmonicsFlags()
17309{
17310 // Store all flags for mixed harmonics in profile fMixedHarmonicsFlags.
17311
17312 if(!fMixedHarmonicsFlags)
17313 {
17314 cout<<"WARNING: fMixedHarmonicsFlags is NULL in AFAWQC::SMHF() !!!!"<<endl;
17315 exit(0);
17316 }
17317
17318 fMixedHarmonicsFlags->Fill(0.5,(Int_t)fCalculateMixedHarmonics);
17319 fMixedHarmonicsFlags->Fill(1.5,(Int_t)fHarmonic);
17320 fMixedHarmonicsFlags->Fill(2.5,(Int_t)fCalculateMixedHarmonicsVsM);
17321 // Which multiplicity weight was used?:
17322
17323 if(!strcmp(fMultiplicityWeight->Data(),"combinations"))
17324 {
17325 fMixedHarmonicsFlags->Fill(3.5,0); // 0 = "combinations" (default)
17326 } else if(!strcmp(fMultiplicityWeight->Data(),"unit"))
17327 {
17328 fMixedHarmonicsFlags->Fill(3.5,1); // 1 = "unit"
17329 } else if(!strcmp(fMultiplicityWeight->Data(),"multiplicity"))
17330 {
17331 fMixedHarmonicsFlags->Fill(3.5,2); // 2 = "multiplicity"
17332 }
17333
17334} // end of void AliFlowAnalysisWithQCumulants::StoreMixedHarmonicsFlags()
17335
17336//=======================================================================================================================
489d5531 17337
489d5531 17338void AliFlowAnalysisWithQCumulants::GetPointersForCommonHistograms()
17339{
17340 // Access all pointers to common control and common result histograms and profiles.
17341
1268c371 17342 TString sCommonConstantsName = "fCommonConstants";
17343 sCommonConstantsName += fAnalysisLabel->Data();
17344 fCommonConstants = dynamic_cast<TProfile*>(fHistList->FindObject(sCommonConstantsName.Data()));
17345 if(!fCommonConstants)
17346 {
17347 printf("\n WARNING (QC): fCommonConstants is NULL in AFAWQC::GPFCH() !!!!\n\n");
17348 exit(0);
17349 }
17350
17351 // to be improved - lines bellow can be implemented better.
17352
489d5531 17353 TString commonHistsName = "AliFlowCommonHistQC";
17354 commonHistsName += fAnalysisLabel->Data();
17355 AliFlowCommonHist *commonHist = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHistsName.Data()));
b77b6434 17356 if(commonHist)
17357 {
17358 this->SetCommonHists(commonHist);
17359 if(fCommonHists->GetHarmonic())
17360 {
17361 fHarmonic = (Int_t)(fCommonHists->GetHarmonic())->GetBinContent(1);
17362 }
17363 } // end of if(commonHist)
489d5531 17364 TString commonHists2ndOrderName = "AliFlowCommonHist2ndOrderQC";
17365 commonHists2ndOrderName += fAnalysisLabel->Data();
17366 AliFlowCommonHist *commonHist2nd = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists2ndOrderName.Data()));
17367 if(commonHist2nd) this->SetCommonHists2nd(commonHist2nd);
17368 TString commonHists4thOrderName = "AliFlowCommonHist4thOrderQC";
17369 commonHists4thOrderName += fAnalysisLabel->Data();
17370 AliFlowCommonHist *commonHist4th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists4thOrderName.Data()));
17371 if(commonHist4th) this->SetCommonHists4th(commonHist4th);
17372 TString commonHists6thOrderName = "AliFlowCommonHist6thOrderQC";
17373 commonHists6thOrderName += fAnalysisLabel->Data();
17374 AliFlowCommonHist *commonHist6th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists6thOrderName.Data()));
17375 if(commonHist6th) this->SetCommonHists6th(commonHist6th);
17376 TString commonHists8thOrderName = "AliFlowCommonHist8thOrderQC";
17377 commonHists8thOrderName += fAnalysisLabel->Data();
17378 AliFlowCommonHist *commonHist8th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists8thOrderName.Data()));
dd442cd2 17379 if(commonHist8th) this->SetCommonHists8th(commonHist8th);
17380
489d5531 17381 TString commonHistResults2ndOrderName = "AliFlowCommonHistResults2ndOrderQC";
17382 commonHistResults2ndOrderName += fAnalysisLabel->Data();
b77b6434 17383 AliFlowCommonHistResults *commonHistRes2nd = dynamic_cast<AliFlowCommonHistResults*>
17384 (fHistList->FindObject(commonHistResults2ndOrderName.Data()));
489d5531 17385 if(commonHistRes2nd) this->SetCommonHistsResults2nd(commonHistRes2nd);
17386 TString commonHistResults4thOrderName = "AliFlowCommonHistResults4thOrderQC";
17387 commonHistResults4thOrderName += fAnalysisLabel->Data();
17388 AliFlowCommonHistResults *commonHistRes4th = dynamic_cast<AliFlowCommonHistResults*>
17389 (fHistList->FindObject(commonHistResults4thOrderName.Data()));
17390 if(commonHistRes4th) this->SetCommonHistsResults4th(commonHistRes4th);
17391 TString commonHistResults6thOrderName = "AliFlowCommonHistResults6thOrderQC";
17392 commonHistResults6thOrderName += fAnalysisLabel->Data();
17393 AliFlowCommonHistResults *commonHistRes6th = dynamic_cast<AliFlowCommonHistResults*>
17394 (fHistList->FindObject(commonHistResults6thOrderName.Data()));
17395 if(commonHistRes6th) this->SetCommonHistsResults6th(commonHistRes6th);
17396 TString commonHistResults8thOrderName = "AliFlowCommonHistResults8thOrderQC";
17397 commonHistResults8thOrderName += fAnalysisLabel->Data();
17398 AliFlowCommonHistResults *commonHistRes8th = dynamic_cast<AliFlowCommonHistResults*>
17399 (fHistList->FindObject(commonHistResults8thOrderName.Data()));
17400 if(commonHistRes8th) this->SetCommonHistsResults8th(commonHistRes8th);
17401
17402} // end of void AliFlowAnalysisWithQCumulants::GetPointersForCommonHistograms()
17403
e1d101a6 17404//=======================================================================================================================
489d5531 17405
489d5531 17406void AliFlowAnalysisWithQCumulants::GetPointersForParticleWeightsHistograms()
17407{
17408 // Get pointers for histograms with particle weights.
17409
17410 TList *weightsList = dynamic_cast<TList*>(fHistList->FindObject("Weights"));
ca5f47e7 17411 if(!weightsList){printf("\n WARNING (QC): weightsList is NULL in AFAWQC::GPFPWH() !!!!\n");exit(0);}
17412 this->SetWeightsList(weightsList);
489d5531 17413 TString fUseParticleWeightsName = "fUseParticleWeightsQC"; // to be improved (hirdwired label QC)
17414 fUseParticleWeightsName += fAnalysisLabel->Data();
17415 TProfile *useParticleWeights = dynamic_cast<TProfile*>(weightsList->FindObject(fUseParticleWeightsName.Data()));
17416 if(useParticleWeights)
17417 {
17418 this->SetUseParticleWeights(useParticleWeights);
17419 fUsePhiWeights = (Int_t)fUseParticleWeights->GetBinContent(1);
17420 fUsePtWeights = (Int_t)fUseParticleWeights->GetBinContent(2);
17421 fUseEtaWeights = (Int_t)fUseParticleWeights->GetBinContent(3);
403e3389 17422 fUseTrackWeights = (Int_t)fUseParticleWeights->GetBinContent(4);
489d5531 17423 }
17424} // end of void AliFlowAnalysisWithQCumulants::GetPointersForParticleWeightsHistograms();
17425
e1d101a6 17426//=======================================================================================================================
489d5531 17427
489d5531 17428void AliFlowAnalysisWithQCumulants::GetPointersForIntFlowHistograms()
17429{
17430 // Get pointers for histograms and profiles relevant for integrated flow:
17431 // a) Get pointer to base list for integrated flow holding profile fIntFlowFlags and lists fIntFlowProfiles and fIntFlowResults.
17432 // b) Get pointer to profile fIntFlowFlags holding all flags for integrated flow.
17433 // c) Get pointer to list fIntFlowProfiles and pointers to all objects that she holds.
17434 // d) Get pointer to list fIntFlowResults and pointers to all objects that she holds.
17435
17436 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data member?)
17437 TString powerFlag[2] = {"linear","quadratic"}; // to be improved (should I promote this to data member?)
b40a910e 17438 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?)
17439 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 17440
17441 // a) Get pointer to base list for integrated flow holding profile fIntFlowFlags and lists fIntFlowProfiles and fIntFlowResults:
17442 TList *intFlowList = NULL;
17443 intFlowList = dynamic_cast<TList*>(fHistList->FindObject("Integrated Flow"));
17444 if(!intFlowList)
17445 {
17446 cout<<"WARNING: intFlowList is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17447 exit(0);
17448 }
17449
b92ea2b9 17450 // b) Get pointer to profile fIntFlowFlags holding all flags for integrated flow:
17451 TString intFlowFlagsName = "fIntFlowFlags";
17452 intFlowFlagsName += fAnalysisLabel->Data();
17453 TProfile *intFlowFlags = dynamic_cast<TProfile*>(intFlowList->FindObject(intFlowFlagsName.Data()));
17454 if(intFlowFlags)
17455 {
17456 this->SetIntFlowFlags(intFlowFlags);
17457 fApplyCorrectionForNUA = (Bool_t)intFlowFlags->GetBinContent(3);
17458 fApplyCorrectionForNUAVsM = (Bool_t)intFlowFlags->GetBinContent(8);
17459 fCalculateCumulantsVsM = (Bool_t)intFlowFlags->GetBinContent(10);
17460 } else
17461 {
17462 cout<<"WARNING: intFlowFlags is NULL in FAWQC::GPFIFH() !!!!"<<endl;
17463 }
489d5531 17464
17465 // c) Get pointer to list fIntFlowProfiles and pointers to all objects that she holds:
17466 TList *intFlowProfiles = NULL;
17467 intFlowProfiles = dynamic_cast<TList*>(intFlowList->FindObject("Profiles"));
17468 if(intFlowProfiles)
17469 {
17470 // average multiplicities:
17471 TString avMultiplicityName = "fAvMultiplicity";
17472 avMultiplicityName += fAnalysisLabel->Data();
17473 TProfile *avMultiplicity = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(avMultiplicityName.Data()));
17474 if(avMultiplicity)
17475 {
17476 this->SetAvMultiplicity(avMultiplicity);
17477 } else
17478 {
17479 cout<<"WARNING: avMultiplicity is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17480 }
17481 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with wrong errors!):
17482 TString intFlowCorrelationsProName = "fIntFlowCorrelationsPro";
17483 intFlowCorrelationsProName += fAnalysisLabel->Data();
17484 TProfile *intFlowCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowCorrelationsProName.Data()));
17485 if(intFlowCorrelationsPro)
17486 {
17487 this->SetIntFlowCorrelationsPro(intFlowCorrelationsPro);
17488 } else
17489 {
17490 cout<<"WARNING: intFlowCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17491 }
b40a910e 17492 // average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8^2>>:
17493 TString intFlowSquaredCorrelationsProName = "fIntFlowSquaredCorrelationsPro";
17494 intFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
17495 TProfile *intFlowSquaredCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowSquaredCorrelationsProName.Data()));
17496 if(intFlowSquaredCorrelationsPro)
17497 {
17498 this->SetIntFlowSquaredCorrelationsPro(intFlowSquaredCorrelationsPro);
17499 } else
17500 {
17501 cout<<"WARNING: intFlowSquaredCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17502 }
b3dacf6b 17503 if(fCalculateCumulantsVsM)
ff70ca91 17504 {
b40a910e 17505 // Average correlations <<2>>, <<4>>, <<6>> and <<8>> versus multiplicity for all events (error is wrong here):
b3dacf6b 17506 TString intFlowCorrelationsVsMProName = "fIntFlowCorrelationsVsMPro";
17507 intFlowCorrelationsVsMProName += fAnalysisLabel->Data();
17508 for(Int_t ci=0;ci<4;ci++) // correlation index
ff70ca91 17509 {
b3dacf6b 17510 TProfile *intFlowCorrelationsVsMPro = dynamic_cast<TProfile*>
17511 (intFlowProfiles->FindObject(Form("%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data())));
17512 if(intFlowCorrelationsVsMPro)
17513 {
17514 this->SetIntFlowCorrelationsVsMPro(intFlowCorrelationsVsMPro,ci);
17515 } else
17516 {
17517 cout<<"WARNING: "<<Form("intFlowCorrelationsVsMPro[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17518 }
17519 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b40a910e 17520 // Average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> versus multiplicity for all events:
17521 TString intFlowSquaredCorrelationsVsMProName = "fIntFlowSquaredCorrelationsVsMPro";
17522 intFlowSquaredCorrelationsVsMProName += fAnalysisLabel->Data();
17523 for(Int_t ci=0;ci<4;ci++) // correlation index
17524 {
17525 TProfile *intFlowSquaredCorrelationsVsMPro = dynamic_cast<TProfile*>
17526 (intFlowProfiles->FindObject(Form("%s, %s",intFlowSquaredCorrelationsVsMProName.Data(),squaredCorrelationFlag[ci].Data())));
17527 if(intFlowSquaredCorrelationsVsMPro)
17528 {
17529 this->SetIntFlowSquaredCorrelationsVsMPro(intFlowSquaredCorrelationsVsMPro,ci);
17530 } else
17531 {
17532 cout<<"WARNING: "<<Form("intFlowSquaredCorrelationsVsMPro[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17533 }
17534 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b3dacf6b 17535 } // end of if(fCalculateCumulantsVsM)
489d5531 17536 // average all correlations for integrated flow (with wrong errors!):
17537 TString intFlowCorrelationsAllProName = "fIntFlowCorrelationsAllPro";
17538 intFlowCorrelationsAllProName += fAnalysisLabel->Data();
17539 TProfile *intFlowCorrelationsAllPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowCorrelationsAllProName.Data()));
17540 if(intFlowCorrelationsAllPro)
17541 {
17542 this->SetIntFlowCorrelationsAllPro(intFlowCorrelationsAllPro);
17543 } else
17544 {
17545 cout<<"WARNING: intFlowCorrelationsAllPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17546 }
17547 // average extra correlations for integrated flow (which appear only when particle weights are used):
17548 // (to be improved: Weak point in implementation, I am assuming here that method GetPointersForParticleWeightsHistograms() was called)
403e3389 17549 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 17550 {
17551 TString intFlowExtraCorrelationsProName = "fIntFlowExtraCorrelationsPro";
17552 intFlowExtraCorrelationsProName += fAnalysisLabel->Data();
17553 TProfile *intFlowExtraCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowExtraCorrelationsProName.Data()));
17554 if(intFlowExtraCorrelationsPro)
17555 {
17556 this->SetIntFlowExtraCorrelationsPro(intFlowExtraCorrelationsPro);
17557 } else
17558 {
17559 cout<<"WARNING: intFlowExtraCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17560 }
403e3389 17561 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 17562 // average products of correlations <2>, <4>, <6> and <8>:
17563 TString intFlowProductOfCorrelationsProName = "fIntFlowProductOfCorrelationsPro";
17564 intFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
17565 TProfile *intFlowProductOfCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowProductOfCorrelationsProName.Data()));
17566 if(intFlowProductOfCorrelationsPro)
17567 {
17568 this->SetIntFlowProductOfCorrelationsPro(intFlowProductOfCorrelationsPro);
17569 } else
17570 {
17571 cout<<"WARNING: intFlowProductOfCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17572 }
17573 // average product of correlations <2>, <4>, <6> and <8> versus multiplicity
17574 // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 17575 if(fCalculateCumulantsVsM)
17576 {
17577 TString intFlowProductOfCorrelationsVsMProName = "fIntFlowProductOfCorrelationsVsMPro";
17578 intFlowProductOfCorrelationsVsMProName += fAnalysisLabel->Data();
403e3389 17579 TString productFlag[6] = {"#LT#LT2#GT#LT4#GT#GT","#LT#LT2#GT#LT6#GT#GT","#LT#LT2#GT#LT8#GT#GT",
17580 "#LT#LT4#GT#LT6#GT#GT","#LT#LT4#GT#LT8#GT#GT","#LT#LT6#GT#LT8#GT#GT"};
b3dacf6b 17581 for(Int_t pi=0;pi<6;pi++)
17582 {
17583 TProfile *intFlowProductOfCorrelationsVsMPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(Form("%s, %s",intFlowProductOfCorrelationsVsMProName.Data(),productFlag[pi].Data())));
17584 if(intFlowProductOfCorrelationsVsMPro)
17585 {
17586 this->SetIntFlowProductOfCorrelationsVsMPro(intFlowProductOfCorrelationsVsMPro,pi);
17587 } else
17588 {
17589 cout<<"WARNING: "<<Form("intFlowProductOfCorrelationsVsMPro[%d]",pi)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17590 }
17591 } // end of for(Int_t pi=0;pi<6;pi++)
17592 } // end of if(fCalculateCumulantsVsM)
489d5531 17593 // average correction terms for non-uniform acceptance (with wrong errors!):
17594 for(Int_t sc=0;sc<2;sc++)
17595 {
17596 TString intFlowCorrectionTermsForNUAProName = "fIntFlowCorrectionTermsForNUAPro";
17597 intFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
17598 TProfile *intFlowCorrectionTermsForNUAPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject((Form("%s: %s terms",intFlowCorrectionTermsForNUAProName.Data(),sinCosFlag[sc].Data()))));
17599 if(intFlowCorrectionTermsForNUAPro)
17600 {
17601 this->SetIntFlowCorrectionTermsForNUAPro(intFlowCorrectionTermsForNUAPro,sc);
17602 } else
17603 {
17604 cout<<"WARNING: intFlowCorrectionTermsForNUAPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17605 cout<<"sc = "<<sc<<endl;
17606 }
2001bc3a 17607 // versus multiplicity:
b3dacf6b 17608 if(fCalculateCumulantsVsM)
2001bc3a 17609 {
b3dacf6b 17610 TString correctionTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
17611 TString intFlowCorrectionTermsForNUAVsMProName = "fIntFlowCorrectionTermsForNUAVsMPro";
17612 intFlowCorrectionTermsForNUAVsMProName += fAnalysisLabel->Data();
17613 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2001bc3a 17614 {
b3dacf6b 17615 TProfile *intFlowCorrectionTermsForNUAVsMPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(Form("%s: #LT#LT%s%s#GT#GT",intFlowCorrectionTermsForNUAVsMProName.Data(),sinCosFlag[sc].Data(),correctionTermFlag[ci].Data())));
17616 if(intFlowCorrectionTermsForNUAVsMPro)
17617 {
17618 this->SetIntFlowCorrectionTermsForNUAVsMPro(intFlowCorrectionTermsForNUAVsMPro,sc,ci);
17619 } else
17620 {
17621 cout<<"WARNING: intFlowCorrectionTermsForNUAVsMPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17622 cout<<"sc = "<<sc<<endl;
17623 cout<<"ci = "<<ci<<endl;
17624 }
17625 } // end of for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
17626 } // end of if(fCalculateCumulantsVsM)
489d5531 17627 } // end of for(Int_t sc=0;sc<2;sc++)
0328db2d 17628 // average products of correction terms for NUA:
17629 TString intFlowProductOfCorrectionTermsForNUAProName = "fIntFlowProductOfCorrectionTermsForNUAPro";
17630 intFlowProductOfCorrectionTermsForNUAProName += fAnalysisLabel->Data();
17631 TProfile *intFlowProductOfCorrectionTermsForNUAPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowProductOfCorrectionTermsForNUAProName.Data()));
17632 if(intFlowProductOfCorrectionTermsForNUAPro)
17633 {
17634 this->SetIntFlowProductOfCorrectionTermsForNUAPro(intFlowProductOfCorrectionTermsForNUAPro);
17635 } else
17636 {
17637 cout<<"WARNING: intFlowProductOfCorrectionTermsForNUAPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17638 }
489d5531 17639 } else // to if(intFlowProfiles)
17640 {
17641 cout<<"WARNING: intFlowProfiles is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17642 }
17643
17644 // d) Get pointer to list fIntFlowResults and pointers to all objects that she holds.
17645 TList *intFlowResults = NULL;
17646 intFlowResults = dynamic_cast<TList*>(intFlowList->FindObject("Results"));
17647 if(intFlowResults)
17648 {
17649 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with correct errors!):
17650 TString intFlowCorrelationsHistName = "fIntFlowCorrelationsHist";
17651 intFlowCorrelationsHistName += fAnalysisLabel->Data();
17652 TH1D *intFlowCorrelationsHist = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCorrelationsHistName.Data()));
17653 if(intFlowCorrelationsHist)
17654 {
17655 this->SetIntFlowCorrelationsHist(intFlowCorrelationsHist);
17656 } else
17657 {
17658 cout<<"WARNING: intFlowCorrelationsHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17659 }
ff70ca91 17660 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with correct errors!) vs M:
b3dacf6b 17661 if(fCalculateCumulantsVsM)
ff70ca91 17662 {
b3dacf6b 17663 TString intFlowCorrelationsVsMHistName = "fIntFlowCorrelationsVsMHist";
17664 intFlowCorrelationsVsMHistName += fAnalysisLabel->Data();
17665 for(Int_t ci=0;ci<4;ci++) // correlation index
ff70ca91 17666 {
b3dacf6b 17667 TH1D *intFlowCorrelationsVsMHist = dynamic_cast<TH1D*>
17668 (intFlowResults->FindObject(Form("%s, %s",intFlowCorrelationsVsMHistName.Data(),correlationFlag[ci].Data())));
17669 if(intFlowCorrelationsVsMHist)
17670 {
17671 this->SetIntFlowCorrelationsVsMHist(intFlowCorrelationsVsMHist,ci);
17672 } else
17673 {
17674 cout<<"WARNING: "<<Form("intFlowCorrelationsVsMHist[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17675 }
17676 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
17677 } // end of if(fCalculateCumulantsVsM)
489d5531 17678 // average all correlations for integrated flow (with correct errors!):
17679 TString intFlowCorrelationsAllHistName = "fIntFlowCorrelationsAllHist";
17680 intFlowCorrelationsAllHistName += fAnalysisLabel->Data();
17681 TH1D *intFlowCorrelationsAllHist = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCorrelationsAllHistName.Data()));
17682 if(intFlowCorrelationsAllHist)
17683 {
17684 this->SetIntFlowCorrelationsAllHist(intFlowCorrelationsAllHist);
17685 } else
17686 {
17687 cout<<"WARNING: intFlowCorrelationsAllHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17688 }
17689 // average correction terms for non-uniform acceptance (with correct errors!):
17690 TString intFlowCorrectionTermsForNUAHistName = "fIntFlowCorrectionTermsForNUAHist";
17691 intFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
17692 for(Int_t sc=0;sc<2;sc++)
17693 {
17694 TH1D *intFlowCorrectionTermsForNUAHist = dynamic_cast<TH1D*>(intFlowResults->FindObject((Form("%s: %s terms",intFlowCorrectionTermsForNUAHistName.Data(),sinCosFlag[sc].Data()))));
17695 if(intFlowCorrectionTermsForNUAHist)
17696 {
17697 this->SetIntFlowCorrectionTermsForNUAHist(intFlowCorrectionTermsForNUAHist,sc);
17698 } else
17699 {
17700 cout<<"WARNING: intFlowCorrectionTermsForNUAHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17701 cout<<"sc = "<<sc<<endl;
17702 }
17703 } // end of for(Int_t sc=0;sc<2;sc++)
17704 // covariances (multiplied with weight dependent prefactor):
17705 TString intFlowCovariancesName = "fIntFlowCovariances";
17706 intFlowCovariancesName += fAnalysisLabel->Data();
17707 TH1D *intFlowCovariances = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCovariancesName.Data()));
17708 if(intFlowCovariances)
17709 {
17710 this->SetIntFlowCovariances(intFlowCovariances);
17711 } else
17712 {
17713 cout<<"WARNING: intFlowCovariances is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17714 }
17715 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8>:
17716 TString intFlowSumOfEventWeightsName = "fIntFlowSumOfEventWeights";
17717 intFlowSumOfEventWeightsName += fAnalysisLabel->Data();
17718 for(Int_t power=0;power<2;power++)
17719 {
17720 TH1D *intFlowSumOfEventWeights = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s: %s",intFlowSumOfEventWeightsName.Data(),powerFlag[power].Data())));
17721 if(intFlowSumOfEventWeights)
17722 {
17723 this->SetIntFlowSumOfEventWeights(intFlowSumOfEventWeights,power);
17724 } else
17725 {
17726 cout<<"WARNING: intFlowSumOfEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17727 cout<<"power = "<<power<<endl;
17728 }
17729 } // end of for(Int_t power=0;power<2;power++)
17730 // sum of products of event weights for correlations <2>, <4>, <6> and <8>:
17731 TString intFlowSumOfProductOfEventWeightsName = "fIntFlowSumOfProductOfEventWeights";
17732 intFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
17733 TH1D *intFlowSumOfProductOfEventWeights = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowSumOfProductOfEventWeightsName.Data()));
17734 if(intFlowSumOfProductOfEventWeights)
17735 {
17736 this->SetIntFlowSumOfProductOfEventWeights(intFlowSumOfProductOfEventWeights);
17737 } else
17738 {
17739 cout<<"WARNING: intFlowSumOfProductOfEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17740 }
ff70ca91 17741 // final result for covariances of correlations (multiplied with weight dependent prefactor) versus M
17742 // [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 17743 if(fCalculateCumulantsVsM)
ff70ca91 17744 {
b3dacf6b 17745 TString intFlowCovariancesVsMName = "fIntFlowCovariancesVsM";
17746 intFlowCovariancesVsMName += fAnalysisLabel->Data();
17747 TString covarianceFlag[6] = {"Cov(<2>,<4>)","Cov(<2>,<6>)","Cov(<2>,<8>)","Cov(<4>,<6>)","Cov(<4>,<8>)","Cov(<6>,<8>)"};
17748 for(Int_t ci=0;ci<6;ci++)
17749 {
17750 TH1D *intFlowCovariancesVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data())));
17751 if(intFlowCovariancesVsM)
ff70ca91 17752 {
b3dacf6b 17753 this->SetIntFlowCovariancesVsM(intFlowCovariancesVsM,ci);
ff70ca91 17754 } else
17755 {
b3dacf6b 17756 cout<<"WARNING: "<<Form("intFlowCovariancesVsM[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17757 }
b3dacf6b 17758 } // end of for(Int_t ci=0;ci<6;ci++)
17759 } // end of if(fCalculateCumulantsVsM)
17760 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8> versus multiplicity
17761 // [0=sum{w_{<2>}},1=sum{w_{<4>}},2=sum{w_{<6>}},3=sum{w_{<8>}}][0=linear 1,1=quadratic]:
17762 if(fCalculateCumulantsVsM)
17763 {
17764 TString intFlowSumOfEventWeightsVsMName = "fIntFlowSumOfEventWeightsVsM";
17765 intFlowSumOfEventWeightsVsMName += fAnalysisLabel->Data();
17766 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>}"},
17767 {"#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}"}};
17768 for(Int_t si=0;si<4;si++)
17769 {
17770 for(Int_t power=0;power<2;power++)
17771 {
17772 TH1D *intFlowSumOfEventWeightsVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowSumOfEventWeightsVsMName.Data(),sumFlag[power][si].Data())));
17773 if(intFlowSumOfEventWeightsVsM)
17774 {
17775 this->SetIntFlowSumOfEventWeightsVsM(intFlowSumOfEventWeightsVsM,si,power);
17776 } else
17777 {
17778 cout<<"WARNING: "<<Form("intFlowSumOfEventWeightsVsM[%d][%d]",si,power)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17779 }
17780 } // end of for(Int_t power=0;power<2;power++)
17781 } // end of for(Int_t si=0;si<4;si++)
17782 } // end of if(fCalculateCumulantsVsM)
ff70ca91 17783 // sum of products of event weights for correlations <2>, <4>, <6> and <8> vs M
17784 // [0=sum{w_{<2>}w_{<4>}},1=sum{w_{<2>}w_{<6>}},2=sum{w_{<2>}w_{<8>}},
17785 // 3=sum{w_{<4>}w_{<6>}},4=sum{w_{<4>}w_{<8>}},5=sum{w_{<6>}w_{<8>}}]:
b3dacf6b 17786 if(fCalculateCumulantsVsM)
ff70ca91 17787 {
b3dacf6b 17788 TString intFlowSumOfProductOfEventWeightsVsMName = "fIntFlowSumOfProductOfEventWeightsVsM";
17789 intFlowSumOfProductOfEventWeightsVsMName += fAnalysisLabel->Data();
17790 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>}",
17791 "#sum_{i=1}^{N} w_{<4>} w_{<6>}","#sum_{i=1}^{N} w_{<4>} w_{<8>}","#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
17792 for(Int_t pi=0;pi<6;pi++)
ff70ca91 17793 {
b3dacf6b 17794 TH1D *intFlowSumOfProductOfEventWeightsVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowSumOfProductOfEventWeightsVsMName.Data(),sopowFlag[pi].Data())));
17795 if(intFlowSumOfProductOfEventWeightsVsM)
17796 {
17797 this->SetIntFlowSumOfProductOfEventWeightsVsM(intFlowSumOfProductOfEventWeightsVsM,pi);
17798 } else
17799 {
17800 cout<<"WARNING: "<<Form("intFlowSumOfProductOfEventWeightsVsM[%d]",pi)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17801 }
17802 } // end of for(Int_t pi=0;pi<6;pi++)
17803 } // end of if(fCalculateCumulantsVsM)
0328db2d 17804 // covariances for NUA (multiplied with weight dependent prefactor):
17805 TString intFlowCovariancesNUAName = "fIntFlowCovariancesNUA";
17806 intFlowCovariancesNUAName += fAnalysisLabel->Data();
17807 TH1D *intFlowCovariancesNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCovariancesNUAName.Data()));
17808 if(intFlowCovariancesNUA)
17809 {
17810 this->SetIntFlowCovariancesNUA(intFlowCovariancesNUA);
17811 } else
17812 {
17813 cout<<"WARNING: intFlowCovariancesNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17814 }
17815 // sum of linear and quadratic event weights NUA terms:
17816 TString intFlowSumOfEventWeightsNUAName = "fIntFlowSumOfEventWeightsNUA";
17817 intFlowSumOfEventWeightsNUAName += fAnalysisLabel->Data();
17818 for(Int_t sc=0;sc<2;sc++)
17819 {
17820 for(Int_t power=0;power<2;power++)
17821 {
17822 TH1D *intFlowSumOfEventWeightsNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s: %s, %s",intFlowSumOfEventWeightsNUAName.Data(),powerFlag[power].Data(),sinCosFlag[sc].Data())));
17823 if(intFlowSumOfEventWeightsNUA)
17824 {
17825 this->SetIntFlowSumOfEventWeightsNUA(intFlowSumOfEventWeightsNUA,sc,power);
17826 } else
17827 {
17828 cout<<"WARNING: intFlowSumOfEventWeightsNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17829 cout<<"sc = "<<sc<<endl;
17830 cout<<"power = "<<power<<endl;
17831 }
17832 } // end of for(Int_t power=0;power<2;power++)
17833 } // end of for(Int_t sc=0;sc<2;sc++)
17834 // sum of products of event weights for NUA terms:
17835 TString intFlowSumOfProductOfEventWeightsNUAName = "fIntFlowSumOfProductOfEventWeightsNUA";
17836 intFlowSumOfProductOfEventWeightsNUAName += fAnalysisLabel->Data();
17837 TH1D *intFlowSumOfProductOfEventWeightsNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowSumOfProductOfEventWeightsNUAName.Data()));
17838 if(intFlowSumOfProductOfEventWeightsNUA)
17839 {
17840 this->SetIntFlowSumOfProductOfEventWeightsNUA(intFlowSumOfProductOfEventWeightsNUA);
17841 } else
17842 {
17843 cout<<"WARNING: intFlowSumOfProductOfEventWeightsNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17844 }
b3dacf6b 17845 // Final results for reference Q-cumulants:
489d5531 17846 TString intFlowQcumulantsName = "fIntFlowQcumulants";
17847 intFlowQcumulantsName += fAnalysisLabel->Data();
17848 TH1D *intFlowQcumulants = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsName.Data()));
17849 if(intFlowQcumulants)
17850 {
17851 this->SetIntFlowQcumulants(intFlowQcumulants);
17852 } else
17853 {
17854 cout<<"WARNING: intFlowQcumulants is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17855 }
b3dacf6b 17856 // Final results for reference Q-cumulants rebinned in M:
17857 if(fCalculateCumulantsVsM)
17858 {
17859 TString intFlowQcumulantsRebinnedInMName = "fIntFlowQcumulantsRebinnedInM";
17860 intFlowQcumulantsRebinnedInMName += fAnalysisLabel->Data();
17861 TH1D *intFlowQcumulantsRebinnedInM = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsRebinnedInMName.Data()));
17862 if(intFlowQcumulantsRebinnedInM)
17863 {
17864 this->SetIntFlowQcumulantsRebinnedInM(intFlowQcumulantsRebinnedInM);
17865 } else
17866 {
17867 cout<<"WARNING: intFlowQcumulantsRebinnedInM is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17868 }
17869 } // end of if(fCalculateCumulantsVsM)
b92ea2b9 17870 // Ratio between error squared: with/without non-isotropic terms:
17871 TString intFlowQcumulantsErrorSquaredRatioName = "fIntFlowQcumulantsErrorSquaredRatio";
17872 intFlowQcumulantsErrorSquaredRatioName += fAnalysisLabel->Data();
17873 TH1D *intFlowQcumulantsErrorSquaredRatio = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsErrorSquaredRatioName.Data()));
17874 if(intFlowQcumulantsErrorSquaredRatio)
17875 {
17876 this->SetIntFlowQcumulantsErrorSquaredRatio(intFlowQcumulantsErrorSquaredRatio);
17877 } else
17878 {
17879 cout<<" WARNING: intntFlowQcumulantsErrorSquaredRatio is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17880 }
ff70ca91 17881 // final results for integrated Q-cumulants versus multiplicity:
ff70ca91 17882 TString cumulantFlag[4] = {"QC{2}","QC{4}","QC{6}","QC{8}"};
b3dacf6b 17883 if(fCalculateCumulantsVsM)
ff70ca91 17884 {
b3dacf6b 17885 TString intFlowQcumulantsVsMName = "fIntFlowQcumulantsVsM";
17886 intFlowQcumulantsVsMName += fAnalysisLabel->Data();
17887 for(Int_t co=0;co<4;co++) // cumulant order
ff70ca91 17888 {
b3dacf6b 17889 TH1D *intFlowQcumulantsVsM = dynamic_cast<TH1D*>
17890 (intFlowResults->FindObject(Form("%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data())));
17891 if(intFlowQcumulantsVsM)
17892 {
17893 this->SetIntFlowQcumulantsVsM(intFlowQcumulantsVsM,co);
17894 } else
17895 {
17896 cout<<"WARNING: "<<Form("intFlowQcumulantsVsM[%d]",co)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17897 }
17898 } // end of for(Int_t co=0;co<4;co++) // cumulant order
17899 } // end of if(fCalculateCumulantsVsM)
17900 // Final reference flow estimates from Q-cumulants:
489d5531 17901 TString intFlowName = "fIntFlow";
17902 intFlowName += fAnalysisLabel->Data();
17903 TH1D *intFlow = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowName.Data()));
17904 if(intFlow)
17905 {
17906 this->SetIntFlow(intFlow);
17907 } else
17908 {
17909 cout<<"WARNING: intFlow is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17910 }
b3dacf6b 17911 // Final reference flow estimates from Q-cumulants vs M rebinned in M:
17912 if(fCalculateCumulantsVsM)
ff70ca91 17913 {
b3dacf6b 17914 TString intFlowRebinnedInMName = "fIntFlowRebinnedInM";
17915 intFlowRebinnedInMName += fAnalysisLabel->Data();
17916 TH1D *intFlowRebinnedInM = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowRebinnedInMName.Data()));
17917 if(intFlowRebinnedInM)
ff70ca91 17918 {
b3dacf6b 17919 this->SetIntFlowRebinnedInM(intFlowRebinnedInM);
17920 } else
ff70ca91 17921 {
b3dacf6b 17922 cout<<"WARNING: intFlowRebinnedInM is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17923 }
17924 } // end of if(fCalculateCumulantsVsM)
17925 // integrated flow from Q-cumulants versus multiplicity:
17926 if(fCalculateCumulantsVsM)
17927 {
17928 TString intFlowVsMName = "fIntFlowVsM";
17929 intFlowVsMName += fAnalysisLabel->Data();
b77b6434 17930 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 17931 for(Int_t co=0;co<4;co++) // cumulant order
17932 {
17933 TH1D *intFlowVsM = dynamic_cast<TH1D*>
b77b6434 17934 (intFlowResults->FindObject(Form("%s, %s",intFlowVsMName.Data(),flowFlag[co].Data())));
b3dacf6b 17935 if(intFlowVsM)
17936 {
17937 this->SetIntFlowVsM(intFlowVsM,co);
17938 } else
17939 {
17940 cout<<"WARNING: "<<Form("intFlowVsM[%d]",co)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17941 }
17942 } // end of for(Int_t co=0;co<4;co++) // cumulant order
17943 } // end of if(fCalculateCumulantsVsM)
2001bc3a 17944 // quantifying detector effects effects to correlations:
17945 TString intFlowDetectorBiasName = "fIntFlowDetectorBias";
17946 intFlowDetectorBiasName += fAnalysisLabel->Data();
17947 TH1D *intFlowDetectorBias = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowDetectorBiasName.Data()));
17948 if(intFlowDetectorBias)
17949 {
17950 this->SetIntFlowDetectorBias(intFlowDetectorBias);
17951 } else
17952 {
17953 cout<<"WARNING: intFlowDetectorBias is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17954 }
17955 // quantifying detector effects effects to correlations vs multiplicity:
b77b6434 17956 if(fCalculateCumulantsVsM)
2001bc3a 17957 {
3c5d5752 17958 TString intFlowDetectorBiasVsMName = "fIntFlowDetectorBiasVsM";
17959 intFlowDetectorBiasVsMName += fAnalysisLabel->Data();
17960 for(Int_t ci=0;ci<4;ci++) // correlation index
2001bc3a 17961 {
3c5d5752 17962 TH1D *intFlowDetectorBiasVsM = dynamic_cast<TH1D*>
17963 (intFlowResults->FindObject(Form("%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data())));
17964 if(intFlowDetectorBiasVsM)
17965 {
17966 this->SetIntFlowDetectorBiasVsM(intFlowDetectorBiasVsM,ci);
17967 } else
17968 {
17969 cout<<"WARNING: "<<Form("intFlowDetectorBiasVsM[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17970 }
17971 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b77b6434 17972 } // end of if(fCalculateCumulantsVsM)
489d5531 17973 } else // to if(intFlowResults)
17974 {
17975 cout<<"WARNING: intFlowResults is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17976 }
ff70ca91 17977
489d5531 17978} // end of void AliFlowAnalysisWithQCumulants::GetPointersForIntFlowHistograms()
17979
e1d101a6 17980//=======================================================================================================================
489d5531 17981
1268c371 17982void AliFlowAnalysisWithQCumulants::GetPointersFor2DDiffFlowHistograms()
17983{
17984 // Get pointers for 2D differential flow histograms.
17985 // a) Check pointers used in this method;
17986 // b) Get pointers to 2D differential flow lists;
17987 // c) Get pointers to 2D differential flow profiles;
17988 // d) Get pointers to 2D differential flow histograms.
17989
17990 // a) Check pointers used in this method:
17991 if(!fDiffFlowList)
17992 {
17993 printf("\n WARNING (QC): fDiffFlowList is NULL in AFAWQC::GPF2DDFH() !!!!\n");
17994 printf(" Call method GetPointersForDiffFlowHistograms() first.\n\n");
17995 exit(0);
17996 }
17997 if(!fDiffFlowFlags)
17998 {
17999 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::GPF2DDFH() !!!!\n\n");
18000 printf(" Call method GetPointersForDiffFlowHistograms() first.\n\n");
18001 exit(0);
18002 }
18003
18004 // b) Get pointers to 2D differential flow lists:
18005 this->SetCalculate2DDiffFlow((Bool_t)fDiffFlowFlags->GetBinContent(5)); // to be improved - hardwired 5
18006 if(!fCalculate2DDiffFlow){return;}
18007 TString typeFlag[2] = {"RP","POI"};
18008 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18009 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18010 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18011 // Base list:
18012 TString diffFlow2DListName = "2D";
18013 diffFlow2DListName += fAnalysisLabel->Data();
18014 fDiffFlow2D = dynamic_cast<TList*>(fDiffFlowList->FindObject(diffFlow2DListName.Data()));
18015 if(!fDiffFlow2D)
18016 {
18017 printf("\n WARNING (QC): fDiffFlow2D is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18018 exit(0);
18019 }
18020 // Lists holding profiles with 2D correlations:
18021 TString s2DDiffFlowCorrelationsProListName = "Profiles with 2D correlations";
18022 s2DDiffFlowCorrelationsProListName += fAnalysisLabel->Data(); // to be improved
18023 for(Int_t t=0;t<2;t++)
18024 {
18025 f2DDiffFlowCorrelationsProList[t] = dynamic_cast<TList*>(fDiffFlow2D->FindObject(Form("Profiles with 2D correlations (%s)",typeFlag[t].Data())));
18026 if(!f2DDiffFlowCorrelationsProList[t])
18027 {
18028 printf("\n WARNING (QC): f2DDiffFlowCorrelationsProList[%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t);
18029 exit(0);
18030 }
18031 } // end of for(Int_t t=0;t<2;t++)
18032
18033 // c) Get pointers to 2D differential flow profiles:
18034 TString s2DDiffFlowCorrelationsProName = "f2DDiffFlowCorrelationsPro";
18035 s2DDiffFlowCorrelationsProName += fAnalysisLabel->Data();
18036 for(Int_t t=0;t<2;t++) // type: RP or POI
18037 {
18038 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18039 {
18040 f2DDiffFlowCorrelationsPro[t][rci] = dynamic_cast<TProfile2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowCorrelationsProName.Data(),typeFlag[t].Data(),reducedCorrelationIndex[rci].Data())));
18041 if(!f2DDiffFlowCorrelationsPro[t][rci])
18042 {
18043 printf("\n WARNING (QC): f2DDiffFlowCorrelationsPro[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18044 exit(0);
18045 } else
18046 {
18047 this->Set2DDiffFlowCorrelationsPro(f2DDiffFlowCorrelationsPro[t][rci],t,rci);
18048 }
18049 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18050 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18051
18052 // d) Get pointers to 2D differential flow histograms:
18053 TString s2DDiffFlowCumulantsName = "f2DDiffFlowCumulants";
18054 s2DDiffFlowCumulantsName += fAnalysisLabel->Data();
18055 TString s2DDiffFlowName = "f2DDiffFlow";
18056 s2DDiffFlowName += fAnalysisLabel->Data();
18057 for(Int_t t=0;t<2;t++) // type: RP or POI
18058 {
18059 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18060 {
18061 // 2D differential cumulants:
18062 f2DDiffFlowCumulants[t][rci] = dynamic_cast<TH2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowCumulantsName.Data(),typeFlag[t].Data(),differentialCumulantIndex[rci].Data())));
18063 if(!f2DDiffFlowCumulants[t][rci])
18064 {
18065 printf("\n WARNING (QC): f2DDiffFlowCumulants[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18066 exit(0);
18067 } else
18068 {
18069 this->Set2DDiffFlowCumulants(f2DDiffFlowCumulants[t][rci],t,rci);
18070 }
18071 // 2D differential flow:
18072 f2DDiffFlow[t][rci] = dynamic_cast<TH2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowName.Data(),typeFlag[t].Data(),differentialFlowIndex[rci].Data())));
18073 if(!f2DDiffFlow[t][rci])
18074 {
18075 printf("\n WARNING (QC): f2DDiffFlow[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18076 exit(0);
18077 } else
18078 {
18079 this->Set2DDiffFlow(f2DDiffFlow[t][rci],t,rci);
18080 }
18081 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18082 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18083
18084} // end of void AliFlowAnalysisWithQCumulants::GetPointersFor2DDiffFlowHistograms()
18085
e1d101a6 18086//=======================================================================================================================
1268c371 18087
64e500e3 18088void AliFlowAnalysisWithQCumulants::GetPointersForOtherDiffCorrelators()
18089{
18090 // Get pointers for other differential correlators.
18091 // a) Get pointer to list with other differential correlators;
18092 // b) Declare local flags;
18093 // c) Get pointers to other differential profiles.
18094
62e36168 18095 if(!fCalculateDiffFlow){return;} // TBI: This must eventually be moved somewhere else
18096
64e500e3 18097 // a) Get pointer to list with other differential correlators:
18098 fOtherDiffCorrelatorsList = dynamic_cast<TList*>(fHistList->FindObject("Other differential correlators"));
18099 if(!fOtherDiffCorrelatorsList)
18100 {
18101 printf("\n WARNING (QC): fOtherDiffCorrelatorsList is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18102 exit(0);
18103 }
18104
18105 // b) Declare local flags: // (to be improved - promoted to data members)
18106 TString typeFlag[2] = {"RP","POI"};
18107 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18108 TString sinCosFlag[2] = {"sin","cos"};
18109
18110 // c) Get pointers to other differential profiles:
18111 TString otherDiffCorrelatorsName = "fOtherDiffCorrelators";
18112 otherDiffCorrelatorsName += fAnalysisLabel->Data();
18113 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18114 {
62e36168 18115 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 18116 {
18117 for(Int_t sc=0;sc<2;sc++) // sin or cos
18118 {
18119 for(Int_t ci=0;ci<1;ci++) // correlator index
18120 {
18121 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)));
18122 if(!fOtherDiffCorrelators[t][pe][sc][ci])
18123 {
18124 printf("\n WARNING (QC): fOtherDiffCorrelators[%i][%i][%i][%i] is NULL in AFAWQC::GPFODC() !!!!\n\n",t,pe,sc,ci);
18125 exit(0);
18126 } else
18127 {
18128 this->SetOtherDiffCorrelators(fOtherDiffCorrelators[t][pe][sc][ci],t,pe,sc,ci);
18129 }
18130 } // end of for(Int_t ci=0;ci<1;ci++) // correlator index
18131 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18132 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18133 } // end of for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18134
18135} // end of void AliFlowAnalysisWithQCumulants::GetPointersForOtherDiffCorrelators()
18136
e1d101a6 18137//=======================================================================================================================
64e500e3 18138
489d5531 18139void AliFlowAnalysisWithQCumulants::GetPointersForDiffFlowHistograms()
18140{
18141 // Get pointer to all objects relevant for differential flow.
1268c371 18142 // a) Get pointer to base list for differential flow fDiffFlowList;
18143 // b) Get pointer to profile fDiffFlowFlags holding all flags for differential flow. Access and set some flags;
18144 // c) Get pointers to nested lists fDiffFlowListProfiles and fDiffFlowListResults;
18145 // d) Define flags locally (to be improved: should I promote these flags to data members?);
18146 // e) Get pointers to all nested lists in fDiffFlowListProfiles and to profiles which they hold;
18147 // f) Get pointers to all nested lists in fDiffFlowListResults and to histograms which they hold.
18148
18149 // a) Get pointer to base list for differential flow fDiffFlowList:
18150 fDiffFlowList = dynamic_cast<TList*>(fHistList->FindObject("Differential Flow"));
18151 if(!fDiffFlowList)
489d5531 18152 {
1268c371 18153 printf("\n WARNING (QC): fDiffFlowList is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18154 exit(0);
18155 }
1268c371 18156
18157 // b) Get pointer to profile fDiffFlowFlags holding all flags for differential flow. Access and set some flags:
18158 TString diffFlowFlagsName = "fDiffFlowFlags";
18159 diffFlowFlagsName += fAnalysisLabel->Data();
18160 fDiffFlowFlags = dynamic_cast<TProfile*>(fDiffFlowList->FindObject(diffFlowFlagsName.Data()));
18161 if(fDiffFlowFlags)
18162 {
62d19320 18163 this->SetCalculateDiffFlow((Bool_t)fDiffFlowFlags->GetBinContent(1)); // to be improved - hardwired 1
62e36168 18164 this->SetCalculateDiffFlowVsEta((Bool_t)fDiffFlowFlags->GetBinContent(6)); // to be improved - hardwired 6
1268c371 18165 } else
18166 {
18167 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18168 printf("\n Flags in method Finish() are wrong.\n\n");
18169 exit(0);
18170 }
18171
18172 if(!fCalculateDiffFlow){return;} // IMPORTANT: do not move this anywhere above in this method (to be improved)
18173
18174 // c) Get pointers to nested lists fDiffFlowListProfiles and fDiffFlowListResults:
18175 // List holding nested lists holding profiles:
489d5531 18176 TList *diffFlowListProfiles = NULL;
1268c371 18177 diffFlowListProfiles = dynamic_cast<TList*>(fDiffFlowList->FindObject("Profiles"));
489d5531 18178 if(!diffFlowListProfiles)
18179 {
1268c371 18180 printf("\n WARNING (QC): diffFlowListProfiles is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18181 exit(0);
18182 }
1268c371 18183 // List holding nested lists holding histograms with final results:
489d5531 18184 TList *diffFlowListResults = NULL;
1268c371 18185 diffFlowListResults = dynamic_cast<TList*>(fDiffFlowList->FindObject("Results"));
489d5531 18186 if(!diffFlowListResults)
18187 {
1268c371 18188 printf("\n WARNING (QC): diffFlowListResults is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18189 exit(0);
18190 }
18191
1268c371 18192 // d) Define flags locally (to be improved: should I promote these flags to data members?):
18193 TString typeFlag[2] = {"RP","POI"};
18194 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18195 TString powerFlag[2] = {"linear","quadratic"};
18196 TString sinCosFlag[2] = {"sin","cos"};
18197 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18198 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18199 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18200 TString reducedSquaredCorrelationIndex[4] = {"<2'>^{2}","<4'>^{2}","<6'>^{2}","<8'>^{2}"};
18201 TString mixedCorrelationIndex[8] = {"<2>","<2'>","<4>","<4'>","<6>","<6'>","<8>","<8'>"};
18202 TString covarianceName[5] = {"Cov(<2>,<2'>)","Cov(<2>,<4'>)","Cov(<4>,<2'>)","Cov(<4>,<4'>)","Cov(<2'>,<4'>)"};
489d5531 18203
1268c371 18204 // e) Get pointers to all nested lists in fDiffFlowListProfiles and to profiles which they hold:
489d5531 18205 // correlations:
18206 TList *diffFlowCorrelationsProList[2][2] = {{NULL}};
18207 TString diffFlowCorrelationsProName = "fDiffFlowCorrelationsPro";
18208 diffFlowCorrelationsProName += fAnalysisLabel->Data();
b40a910e 18209 TProfile *diffFlowCorrelationsPro[2][2][4] = {{{NULL}}};
18210 // squared correlations:
18211 TString diffFlowSquaredCorrelationsProName = "fDiffFlowSquaredCorrelationsPro";
18212 diffFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
18213 TProfile *diffFlowSquaredCorrelationsPro[2][2][4] = {{{NULL}}};
489d5531 18214 // products of correlations:
18215 TList *diffFlowProductOfCorrelationsProList[2][2] = {{NULL}};
18216 TString diffFlowProductOfCorrelationsProName = "fDiffFlowProductOfCorrelationsPro";
18217 diffFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
18218 TProfile *diffFlowProductOfCorrelationsPro[2][2][8][8] = {{{{NULL}}}};
18219 // corrections:
18220 TList *diffFlowCorrectionsProList[2][2] = {{NULL}};
18221 TString diffFlowCorrectionTermsForNUAProName = "fDiffFlowCorrectionTermsForNUAPro";
18222 diffFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
18223 TProfile *diffFlowCorrectionTermsForNUAPro[2][2][2][10] = {{{{NULL}}}};
18224 for(Int_t t=0;t<2;t++)
18225 {
62e36168 18226 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++)
489d5531 18227 {
18228 diffFlowCorrelationsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18229 if(!diffFlowCorrelationsProList[t][pe])
18230 {
18231 cout<<"WARNING: diffFlowCorrelationsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18232 cout<<"t = "<<t<<endl;
18233 cout<<"pe = "<<pe<<endl;
18234 exit(0);
18235 }
18236 for(Int_t ci=0;ci<4;ci++) // correlation index
18237 {
b40a910e 18238 // reduced correlations:
489d5531 18239 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())));
18240 if(diffFlowCorrelationsPro[t][pe][ci])
18241 {
18242 this->SetDiffFlowCorrelationsPro(diffFlowCorrelationsPro[t][pe][ci],t,pe,ci);
18243 } else
18244 {
18245 cout<<"WARNING: diffFlowCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18246 cout<<"t = "<<t<<endl;
18247 cout<<"pe = "<<pe<<endl;
18248 cout<<"ci = "<<ci<<endl;
18249 }
b40a910e 18250 // reduced squared correlations:
18251 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())));
18252 if(diffFlowSquaredCorrelationsPro[t][pe][ci])
18253 {
18254 this->SetDiffFlowSquaredCorrelationsPro(diffFlowSquaredCorrelationsPro[t][pe][ci],t,pe,ci);
18255 } else
18256 {
18257 cout<<"WARNING: diffFlowSquaredCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18258 cout<<"t = "<<t<<endl;
18259 cout<<"pe = "<<pe<<endl;
18260 cout<<"ci = "<<ci<<endl;
18261 }
489d5531 18262 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18263 // products of correlations:
18264 diffFlowProductOfCorrelationsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with products of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18265 if(!diffFlowProductOfCorrelationsProList[t][pe])
18266 {
18267 cout<<"WARNING: ddiffFlowProductOfCorrelationsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18268 cout<<"t = "<<t<<endl;
18269 cout<<"pe = "<<pe<<endl;
18270 exit(0);
18271 }
18272 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18273 {
18274 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18275 {
18276 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())));
18277 if(diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2])
18278 {
18279 this->SetDiffFlowProductOfCorrelationsPro(diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2],t,pe,mci1,mci2);
18280 } else
18281 {
b40a910e 18282 cout<<"WARNING: diffFlowProductOfCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
489d5531 18283 cout<<"t = "<<t<<endl;
18284 cout<<"pe = "<<pe<<endl;
18285 cout<<"mci1 = "<<mci1<<endl;
18286 cout<<"mci2 = "<<mci2<<endl;
18287 }
18288 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18289 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18290 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18291 // corrections:
18292 diffFlowCorrectionsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18293 if(!diffFlowCorrectionsProList[t][pe])
18294 {
18295 cout<<"WARNING: diffFlowCorrectionsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18296 cout<<"t = "<<t<<endl;
18297 cout<<"pe = "<<pe<<endl;
18298 exit(0);
18299 }
18300 // correction terms for NUA:
18301 for(Int_t sc=0;sc<2;sc++) // sin or cos
18302 {
18303 for(Int_t cti=0;cti<9;cti++) // correction term index
18304 {
18305 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)));
18306 if(diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti])
18307 {
18308 this->SetDiffFlowCorrectionTermsForNUAPro(diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti],t,pe,sc,cti);
18309 } else
18310 {
18311 cout<<"WARNING: diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18312 cout<<"t = "<<t<<endl;
18313 cout<<"pe = "<<pe<<endl;
18314 cout<<"sc = "<<sc<<endl;
18315 cout<<"cti = "<<cti<<endl;
18316 }
18317 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
18318 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18319 // ...
18320 } // end of for(Int_t pe=0;pe<2;pe++)
18321 } // end of for(Int_t t=0;t<2;t++)
18322
1268c371 18323 // f) Get pointers to all nested lists in fDiffFlowListResults and to histograms which they hold:
489d5531 18324 // reduced correlations:
18325 TList *diffFlowCorrelationsHistList[2][2] = {{NULL}};
18326 TString diffFlowCorrelationsHistName = "fDiffFlowCorrelationsHist";
18327 diffFlowCorrelationsHistName += fAnalysisLabel->Data();
18328 TH1D *diffFlowCorrelationsHist[2][2][4] = {{{NULL}}};
18329 // corrections for NUA:
18330 TList *diffFlowCorrectionsHistList[2][2] = {{NULL}};
18331 TString diffFlowCorrectionTermsForNUAHistName = "fDiffFlowCorrectionTermsForNUAHist";
18332 diffFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
18333 TH1D *diffFlowCorrectionTermsForNUAHist[2][2][2][10] = {{{{NULL}}}};
18334 // differential Q-cumulants:
18335 TList *diffFlowCumulantsHistList[2][2] = {{NULL}};
18336 TString diffFlowCumulantsName = "fDiffFlowCumulants";
18337 diffFlowCumulantsName += fAnalysisLabel->Data();
18338 TH1D *diffFlowCumulants[2][2][4] = {{{NULL}}};
1268c371 18339 // detector bias to differential Q-cumulants:
18340 TList *diffFlowDetectorBiasHistList[2][2] = {{NULL}};
18341 TString diffFlowDetectorBiasName = "fDiffFlowDetectorBias";
18342 diffFlowDetectorBiasName += fAnalysisLabel->Data();
18343 TH1D *diffFlowDetectorBias[2][2][4] = {{{NULL}}};
489d5531 18344 // differential flow estimates from Q-cumulants:
18345 TList *diffFlowHistList[2][2] = {{NULL}};
18346 TString diffFlowName = "fDiffFlow";
18347 diffFlowName += fAnalysisLabel->Data();
18348 TH1D *diffFlow[2][2][4] = {{{NULL}}};
18349 // differential covariances:
18350 TList *diffFlowCovariancesHistList[2][2] = {{NULL}};
18351 TString diffFlowCovariancesName = "fDiffFlowCovariances";
18352 diffFlowCovariancesName += fAnalysisLabel->Data();
18353 TH1D *diffFlowCovariances[2][2][5] = {{{NULL}}};
18354 for(Int_t t=0;t<2;t++) // type: RP or POI
18355 {
62e36168 18356 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18357 {
18358 // reduced correlations:
18359 diffFlowCorrelationsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18360 if(!diffFlowCorrelationsHistList[t][pe])
18361 {
18362 cout<<"WARNING: diffFlowCorrelationsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18363 cout<<"t = "<<t<<endl;
18364 cout<<"pe = "<<pe<<endl;
18365 exit(0);
18366 }
18367 for(Int_t index=0;index<4;index++)
18368 {
18369 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())));
18370 if(diffFlowCorrelationsHist[t][pe][index])
18371 {
18372 this->SetDiffFlowCorrelationsHist(diffFlowCorrelationsHist[t][pe][index],t,pe,index);
18373 } else
18374 {
18375 cout<<"WARNING: diffFlowCorrelationsHist[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18376 cout<<"t = "<<t<<endl;
18377 cout<<"pe = "<<pe<<endl;
18378 cout<<"index = "<<index<<endl;
18379 exit(0);
18380 }
18381 } // end of for(Int_t index=0;index<4;index++)
18382 // corrections:
18383 diffFlowCorrectionsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Histograms with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18384 if(!diffFlowCorrectionsHistList[t][pe])
18385 {
18386 cout<<"WARNING: diffFlowCorrectionsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18387 cout<<"t = "<<t<<endl;
18388 cout<<"pe = "<<pe<<endl;
18389 exit(0);
18390 }
18391 // correction terms for NUA:
18392 for(Int_t sc=0;sc<2;sc++) // sin or cos
18393 {
18394 for(Int_t cti=0;cti<9;cti++) // correction term index
18395 {
18396 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)));
18397 if(diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti])
18398 {
18399 this->SetDiffFlowCorrectionTermsForNUAHist(diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti],t,pe,sc,cti);
18400 } else
18401 {
18402 cout<<"WARNING: diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18403 cout<<"t = "<<t<<endl;
18404 cout<<"pe = "<<pe<<endl;
18405 cout<<"sc = "<<sc<<endl;
18406 cout<<"cti = "<<cti<<endl;
18407 }
18408 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
18409 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18410 // ...
18411 // differential Q-cumulants:
18412 diffFlowCumulantsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Differential Q-cumulants (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18413 if(!diffFlowCumulantsHistList[t][pe])
18414 {
18415 cout<<"WARNING: diffFlowCumulantsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18416 cout<<"t = "<<t<<endl;
18417 cout<<"pe = "<<pe<<endl;
18418 exit(0);
18419 }
18420 for(Int_t index=0;index<4;index++)
18421 {
18422 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())));
18423 if(diffFlowCumulants[t][pe][index])
18424 {
18425 this->SetDiffFlowCumulants(diffFlowCumulants[t][pe][index],t,pe,index);
18426 } else
18427 {
18428 cout<<"WARNING: diffFlowCumulants[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18429 cout<<"t = "<<t<<endl;
18430 cout<<"pe = "<<pe<<endl;
18431 cout<<"index = "<<index<<endl;
18432 exit(0);
18433 }
18434 } // end of for(Int_t index=0;index<4;index++)
1268c371 18435 // Detector bias to differential Q-cumulants:
18436 diffFlowDetectorBiasHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Detector bias (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18437 if(!diffFlowDetectorBiasHistList[t][pe])
18438 {
18439 cout<<"WARNING: diffFlowDetectorBiasHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18440 cout<<"t = "<<t<<endl;
18441 cout<<"pe = "<<pe<<endl;
18442 exit(0);
18443 }
18444 for(Int_t index=0;index<4;index++)
18445 {
18446 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())));
18447 if(diffFlowDetectorBias[t][pe][index])
18448 {
18449 this->SetDiffFlowDetectorBias(diffFlowDetectorBias[t][pe][index],t,pe,index);
18450 } else
18451 {
18452 cout<<"WARNING: diffFlowDetectorBias[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18453 cout<<"t = "<<t<<endl;
18454 cout<<"pe = "<<pe<<endl;
18455 cout<<"index = "<<index<<endl;
18456 exit(0);
18457 }
18458 } // end of for(Int_t index=0;index<4;index++)
489d5531 18459 // differential flow estimates from Q-cumulants:
18460 diffFlowHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Differential flow (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18461 if(!diffFlowHistList[t][pe])
18462 {
18463 cout<<"WARNING: diffFlowHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18464 cout<<"t = "<<t<<endl;
18465 cout<<"pe = "<<pe<<endl;
18466 exit(0);
18467 }
18468 for(Int_t index=0;index<4;index++)
18469 {
18470 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())));
18471 if(diffFlow[t][pe][index])
18472 {
18473 this->SetDiffFlow(diffFlow[t][pe][index],t,pe,index);
18474 } else
18475 {
18476 cout<<"WARNING: diffFlow[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18477 cout<<"t = "<<t<<endl;
18478 cout<<"pe = "<<pe<<endl;
18479 cout<<"index = "<<index<<endl;
18480 exit(0);
18481 }
18482 } // end of for(Int_t index=0;index<4;index++)
18483 // differential covariances:
18484 diffFlowCovariancesHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Covariances of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18485 if(!diffFlowCovariancesHistList[t][pe])
18486 {
18487 cout<<"WARNING: diffFlowCovariancesHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18488 cout<<"t = "<<t<<endl;
18489 cout<<"pe = "<<pe<<endl;
18490 exit(0);
18491 }
18492 for(Int_t covIndex=0;covIndex<5;covIndex++)
18493 {
18494 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())));
18495 if(diffFlowCovariances[t][pe][covIndex])
18496 {
18497 this->SetDiffFlowCovariances(diffFlowCovariances[t][pe][covIndex],t,pe,covIndex);
18498 } else
18499 {
18500 cout<<"WARNING: diffFlowCovariances[t][pe][covIndex] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18501 cout<<"t = "<<t<<endl;
18502 cout<<"pe = "<<pe<<endl;
18503 cout<<"covIndex = "<<covIndex<<endl;
18504 exit(0);
18505 }
18506 } // end of for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
18507 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18508 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18509 // sum of event weights for reduced correlations:
18510 TList *diffFlowSumOfEventWeightsHistList[2][2][2] = {{{NULL}}};
18511 TString diffFlowSumOfEventWeightsName = "fDiffFlowSumOfEventWeights";
18512 diffFlowSumOfEventWeightsName += fAnalysisLabel->Data();
18513 TH1D *diffFlowSumOfEventWeights[2][2][2][4] = {{{{NULL}}}};
18514 for(Int_t t=0;t<2;t++) // type is RP or POI
18515 {
62e36168 18516 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18517 {
18518 for(Int_t p=0;p<2;p++) // power of event weights is either 1 or 2
18519 {
18520 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())));
18521 if(!diffFlowSumOfEventWeightsHistList[t][pe][p])
18522 {
18523 cout<<"WARNING: diffFlowSumOfEventWeightsHistList[t][pe][p] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18524 cout<<"t = "<<t<<endl;
18525 cout<<"pe = "<<pe<<endl;
18526 cout<<"power = "<<p<<endl;
18527 exit(0);
18528 }
18529 for(Int_t ew=0;ew<4;ew++) // index of reduced correlation
18530 {
18531 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())));
18532 if(diffFlowSumOfEventWeights[t][pe][p][ew])
18533 {
18534 this->SetDiffFlowSumOfEventWeights(diffFlowSumOfEventWeights[t][pe][p][ew],t,pe,p,ew);
18535 } else
18536 {
18537 cout<<"WARNING: diffFlowSumOfEventWeights[t][pe][p][ew] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18538 cout<<"t = "<<t<<endl;
18539 cout<<"pe = "<<pe<<endl;
18540 cout<<"power = "<<p<<endl;
18541 cout<<"ew = "<<ew<<endl;
18542 exit(0);
18543 }
18544 }
18545 } // end of for(Int_t p=0;p<2;p++) // power of event weights is either 1 or 2
18546 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18547 } // end of for(Int_t t=0;t<2;t++) // type is RP or POI
18548 //
18549 TList *diffFlowSumOfProductOfEventWeightsHistList[2][2] = {{NULL}};
18550 TString diffFlowSumOfProductOfEventWeightsName = "fDiffFlowSumOfProductOfEventWeights";
18551 diffFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
18552 TH1D *diffFlowSumOfProductOfEventWeights[2][2][8][8] = {{{{NULL}}}};
18553 for(Int_t t=0;t<2;t++) // type is RP or POI
18554 {
62e36168 18555 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18556 {
18557 diffFlowSumOfProductOfEventWeightsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Sum of products of event weights (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18558 if(!diffFlowSumOfProductOfEventWeightsHistList[t][pe])
18559 {
18560 cout<<"WARNING: diffFlowSumOfProductOfEventWeightsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18561 cout<<"t = "<<t<<endl;
18562 cout<<"pe = "<<pe<<endl;
18563 exit(0);
18564 }
18565 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18566 {
18567 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18568 {
18569 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())));
18570 if(diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2])
18571 {
18572 this->SetDiffFlowSumOfProductOfEventWeights(diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2],t,pe,mci1,mci2);
18573 } else
18574 {
18575 cout<<"WARNING: diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18576 cout<<"t = "<<t<<endl;
18577 cout<<"pe = "<<pe<<endl;
18578 cout<<"mci1 = "<<mci1<<endl;
18579 cout<<"mci2 = "<<mci2<<endl;
18580 exit(0);
18581 }
18582 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18583 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18584 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18585 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18586 } // end of for(Int_t t=0;t<2;t++) // type is RP or POI
18587
18588} // end void AliFlowAnalysisWithQCumulants::GetPointersForDiffFlowHistograms()
18589
e1d101a6 18590//=======================================================================================================================
489d5531 18591
1268c371 18592void AliFlowAnalysisWithQCumulants::BookEverythingFor2DDifferentialFlow()
18593{
18594 // Book all objects needed for 2D differential flow.
18595 // a) Define flags locally (to be improved: should I promote flags to data members?);
18596 // b) Book e-b-e quantities;
18597 // c) Book 2D profiles;
18598 // d) Book 2D histograms.
18599
18600 if(!fCalculate2DDiffFlow){return;}
18601
18602 // a) Define flags locally (to be improved: should I promote flags to data members?):
18603 TString typeFlag[2] = {"RP","POI"};
18604 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18605 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18606 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18607
18608 // b) Book e-b-e quantities:
18609 TProfile2D styleRe("typeMultiplePowerRe","typeMultiplePowerRe",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18610 TProfile2D styleIm("typeMultiplePowerIm","typeMultiplePowerIm",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18611 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18612 {
18613 for(Int_t m=0;m<4;m++)
18614 {
18615 for(Int_t k=0;k<9;k++)
18616 {
18617 fReRPQ2dEBE[t][m][k] = (TProfile2D*)styleRe.Clone(Form("typeFlag%dmultiple%dpower%dRe",t,m,k));
18618 fImRPQ2dEBE[t][m][k] = (TProfile2D*)styleIm.Clone(Form("typeFlag%dmultiple%dpower%dIm",t,m,k));
18619 }
18620 }
18621 }
18622 TProfile2D styleS("typePower","typePower",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18623 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18624 {
18625 for(Int_t k=0;k<9;k++)
18626 {
18627 fs2dEBE[t][k] = (TProfile2D*)styleS.Clone(Form("typeFlag%dpower%d",t,k));
18628 }
18629 }
18630
18631 // c) Book 2D profiles:
18632 TString s2DDiffFlowCorrelationsProName = "f2DDiffFlowCorrelationsPro";
18633 s2DDiffFlowCorrelationsProName += fAnalysisLabel->Data();
18634 for(Int_t t=0;t<2;t++) // type: RP or POI
18635 {
18636 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18637 {
18638 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,"");
18639 f2DDiffFlowCorrelationsPro[t][rci]->Sumw2();
18640 f2DDiffFlowCorrelationsPro[t][rci]->SetXTitle("p_{t}");
18641 f2DDiffFlowCorrelationsPro[t][rci]->SetYTitle("#eta");
18642 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlowCorrelationsPro[t][rci]);
18643 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18644 } // end of for(Int_t t=0;t<2;t++) // type: RP or POIs
18645
18646 // d) Book 2D histograms:
18647 TString s2DDiffFlowCumulantsName = "f2DDiffFlowCumulants";
18648 s2DDiffFlowCumulantsName += fAnalysisLabel->Data();
18649 TString s2DDiffFlowName = "f2DDiffFlow";
18650 s2DDiffFlowName += fAnalysisLabel->Data();
18651 for(Int_t t=0;t<2;t++) // type: RP or POI
18652 {
18653 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18654 {
18655 // 2D diferential cumulants:
18656 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);
18657 f2DDiffFlowCumulants[t][rci]->SetXTitle("p_{t}");
18658 f2DDiffFlowCumulants[t][rci]->SetYTitle("#eta");
18659 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlowCumulants[t][rci]); // to be improved - moved to another list
18660 // 2D differential flow:
18661 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);
18662 f2DDiffFlow[t][rci]->SetXTitle("p_{t}");
18663 f2DDiffFlow[t][rci]->SetYTitle("#eta");
18664 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlow[t][rci]); // to be improved - moved to another list
18665 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18666 } // end of for(Int_t t=0;t<2;t++) // type: RP or POIs
18667
18668} // void AliFlowAnalysisWithQCumulants::BookEverythingFor2DDifferentialFlow()
18669
e1d101a6 18670//=======================================================================================================================
489d5531 18671
18672void AliFlowAnalysisWithQCumulants::BookEverythingForDifferentialFlow()
18673{
18674 // Book all histograms and profiles needed for differential flow.
1268c371 18675 // a) Book profile to hold all flags for differential flow;
18676 // b) Define flags locally (to be improved: should I promote flags to data members?);
489d5531 18677 // c) Book e-b-e quantities;
18678 // d) Book profiles;
18679 // e) Book histograms holding final results.
18680
1268c371 18681 // a) Book profile to hold all flags for differential flow:
18682 TString diffFlowFlagsName = "fDiffFlowFlags";
18683 diffFlowFlagsName += fAnalysisLabel->Data();
62e36168 18684 fDiffFlowFlags = new TProfile(diffFlowFlagsName.Data(),"Flags for differential flow",6,0,6);
1268c371 18685 fDiffFlowFlags->SetTickLength(-0.01,"Y");
18686 fDiffFlowFlags->SetMarkerStyle(25);
18687 fDiffFlowFlags->SetLabelSize(0.04,"X");
18688 fDiffFlowFlags->SetLabelOffset(0.02,"Y");
e1d101a6 18689 fDiffFlowFlags->SetStats(kFALSE);
1268c371 18690 fDiffFlowFlags->GetXaxis()->SetBinLabel(1,"Calculate diff. flow");
18691 fDiffFlowFlags->GetXaxis()->SetBinLabel(2,"Particle weights");
18692 fDiffFlowFlags->GetXaxis()->SetBinLabel(3,"Event weights");
18693 fDiffFlowFlags->GetXaxis()->SetBinLabel(4,"Correct for NUA");
18694 fDiffFlowFlags->GetXaxis()->SetBinLabel(5,"Calculate 2D diff. flow");
62e36168 18695 fDiffFlowFlags->GetXaxis()->SetBinLabel(6,"Calculate diff. flow vs eta");
1268c371 18696 fDiffFlowList->Add(fDiffFlowFlags);
18697
18698 if(!fCalculateDiffFlow){return;}
18699
18700 // b) Define flags locally (to be improved: should I promote flags to data members?):
489d5531 18701 TString typeFlag[2] = {"RP","POI"};
18702 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18703 TString powerFlag[2] = {"linear","quadratic"};
18704 TString sinCosFlag[2] = {"sin","cos"};
18705 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18706 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18707 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
b40a910e 18708 TString reducedSquaredCorrelationIndex[4] = {"<2'>^{2}","<4'>^{2}","<6'>^{2}","<8'>^{2}"};
489d5531 18709 TString mixedCorrelationIndex[8] = {"<2>","<2'>","<4>","<4'>","<6>","<6'>","<8>","<8'>"};
18710 TString covarianceName[5] = {"Cov(<2>,<2'>)","Cov(<2>,<4'>)","Cov(<4>,<2'>)","Cov(<4>,<4'>)","Cov(<2'>,<4'>)"};
18711 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
18712 Double_t minPtEta[2] = {fPtMin,fEtaMin};
18713 Double_t maxPtEta[2] = {fPtMax,fEtaMax};
1268c371 18714
489d5531 18715 // c) Book e-b-e quantities:
18716 // Event-by-event r_{m*n,k}(pt,eta), p_{m*n,k}(pt,eta) and q_{m*n,k}(pt,eta)
18717 // Explanantion of notation:
18718 // 1.) n is harmonic, m is multiple of harmonic;
18719 // 2.) k is power of particle weight;
18720 // 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);
18721 // 4.) p_{m*n,k}(pt,eta) = Q-vector evaluated in harmonic m*n for POIs in particular (pt,eta) bin
18722 // (if i-th POI is also RP, than it is weighted with w_i^k);
18723 // 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
18724 // (i-th RP&&POI is weighted with w_i^k)
18725
18726 // 1D:
18727 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP && POI )
18728 {
62e36168 18729 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18730 {
18731 for(Int_t m=0;m<4;m++) // multiple of harmonic
18732 {
18733 for(Int_t k=0;k<9;k++) // power of particle weight
18734 {
18735 fReRPQ1dEBE[t][pe][m][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%dpower%dRe",t,pe,m,k),
18736 Form("TypeFlag%dpteta%dmultiple%dpower%dRe",t,pe,m,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18737 fImRPQ1dEBE[t][pe][m][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%dpower%dIm",t,pe,m,k),
18738 Form("TypeFlag%dpteta%dmultiple%dpower%dIm",t,pe,m,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18739 }
18740 }
18741 }
18742 }
18743 // to be improved (add explanation of fs1dEBE[t][pe][k]):
18744 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18745 {
62e36168 18746 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18747 {
18748 for(Int_t k=0;k<9;k++) // power of particle weight
18749 {
18750 fs1dEBE[t][pe][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%d",t,pe,k),
18751 Form("TypeFlag%dpteta%dmultiple%d",t,pe,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18752 }
18753 }
18754 }
18755 // correction terms for nua:
18756 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18757 {
62e36168 18758 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18759 {
18760 for(Int_t sc=0;sc<2;sc++) // sin or cos
18761 {
18762 for(Int_t cti=0;cti<9;cti++) // correction term index
18763 {
18764 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti] = new TH1D(Form("typeFlag%d pteta%d sincos%d cti%d",t,pe,sc,cti),
18765 Form("typeFlag%d pteta%d sincos%d cti%d",t,pe,sc,cti),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18766 }
18767 }
18768 }
18769 }
489d5531 18770 // reduced correlations e-b-e:
18771 TString diffFlowCorrelationsEBEName = "fDiffFlowCorrelationsEBE";
18772 diffFlowCorrelationsEBEName += fAnalysisLabel->Data();
18773 for(Int_t t=0;t<2;t++) // type: RP or POI
18774 {
62e36168 18775 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18776 {
18777 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18778 {
18779 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]);
18780 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18781 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18782 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18783 // event weights for reduced correlations e-b-e:
18784 TString diffFlowEventWeightsForCorrelationsEBEName = "fDiffFlowEventWeightsForCorrelationsEBE";
18785 diffFlowEventWeightsForCorrelationsEBEName += fAnalysisLabel->Data();
18786 for(Int_t t=0;t<2;t++) // type: RP or POI
18787 {
62e36168 18788 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18789 {
18790 for(Int_t rci=0;rci<4;rci++) // event weight for reduced correlation index
18791 {
18792 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]);
18793 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18794 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18795 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18796
18797 // d) Book profiles;
18798 // reduced correlations:
18799 TString diffFlowCorrelationsProName = "fDiffFlowCorrelationsPro";
18800 diffFlowCorrelationsProName += fAnalysisLabel->Data();
b40a910e 18801 // reduced squared correlations:
18802 TString diffFlowSquaredCorrelationsProName = "fDiffFlowSquaredCorrelationsPro";
18803 diffFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
489d5531 18804 // corrections terms:
18805 TString diffFlowCorrectionTermsForNUAProName = "fDiffFlowCorrectionTermsForNUAPro";
18806 diffFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
b40a910e 18807 // reduced correlations:
489d5531 18808 for(Int_t t=0;t<2;t++) // type: RP or POI
18809 {
62e36168 18810 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18811 {
18812 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18813 {
489d5531 18814 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 18815 fDiffFlowCorrelationsPro[t][pe][rci]->Sumw2();
489d5531 18816 fDiffFlowCorrelationsPro[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
18817 fDiffFlowCorrelationsProList[t][pe]->Add(fDiffFlowCorrelationsPro[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
18818 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18819 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18820 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
b40a910e 18821 // reduced squared correlations:
18822 for(Int_t t=0;t<2;t++) // type: RP or POI
18823 {
62e36168 18824 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
b40a910e 18825 {
18826 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18827 {
18828 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");
18829 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->Sumw2();
18830 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
18831 fDiffFlowCorrelationsProList[t][pe]->Add(fDiffFlowSquaredCorrelationsPro[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
18832 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18833 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18834 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
489d5531 18835 // correction terms for nua:
18836 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18837 {
62e36168 18838 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18839 {
18840 for(Int_t sc=0;sc<2;sc++) // sin or cos
18841 {
18842 for(Int_t cti=0;cti<9;cti++) // correction term index
18843 {
18844 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]);
18845 fDiffFlowCorrectionsProList[t][pe]->Add(fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]);
18846 }
18847 }
18848 }
18849 }
64e500e3 18850 // Other differential correlators:
18851 TString otherDiffCorrelatorsName = "fOtherDiffCorrelators";
18852 otherDiffCorrelatorsName += fAnalysisLabel->Data();
18853 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18854 {
62e36168 18855 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 18856 {
18857 for(Int_t sc=0;sc<2;sc++) // sin or cos
18858 {
18859 for(Int_t ci=0;ci<1;ci++) // correlator index
18860 {
18861 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]);
18862 fOtherDiffCorrelators[t][pe][sc][ci]->Sumw2();
18863 fOtherDiffCorrelatorsList->Add(fOtherDiffCorrelators[t][pe][sc][ci]);
18864 }
18865 }
18866 }
18867 }
489d5531 18868 // e) Book histograms holding final results.
18869 // reduced correlations:
18870 TString diffFlowCorrelationsHistName = "fDiffFlowCorrelationsHist";
18871 diffFlowCorrelationsHistName += fAnalysisLabel->Data();
18872 // corrections terms:
18873 TString diffFlowCorrectionTermsForNUAHistName = "fDiffFlowCorrectionTermsForNUAHist";
18874 diffFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
18875 // differential covariances:
18876 TString diffFlowCovariancesName = "fDiffFlowCovariances";
18877 diffFlowCovariancesName += fAnalysisLabel->Data();
18878 // differential Q-cumulants:
18879 TString diffFlowCumulantsName = "fDiffFlowCumulants";
18880 diffFlowCumulantsName += fAnalysisLabel->Data();
1268c371 18881 // Detector bias to differential Q-cumulants:
18882 TString diffFlowDetectorBiasName = "fDiffFlowDetectorBias";
18883 diffFlowDetectorBiasName += fAnalysisLabel->Data();
489d5531 18884 // differential flow:
18885 TString diffFlowName = "fDiffFlow";
18886 diffFlowName += fAnalysisLabel->Data();
18887 for(Int_t t=0;t<2;t++) // type: RP or POI
18888 {
62e36168 18889 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18890 {
18891 for(Int_t index=0;index<4;index++)
18892 {
18893 // reduced correlations:
18894 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]);
18895 fDiffFlowCorrelationsHist[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
18896 fDiffFlowCorrelationsHistList[t][pe]->Add(fDiffFlowCorrelationsHist[t][pe][index]);
18897 // differential Q-cumulants:
18898 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]);
18899 fDiffFlowCumulants[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
18900 fDiffFlowCumulantsHistList[t][pe]->Add(fDiffFlowCumulants[t][pe][index]);
1268c371 18901 // Detector bias to differential Q-cumulants:
18902 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]);
18903 fDiffFlowDetectorBias[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
18904 fDiffFlowDetectorBias[t][pe][index]->SetTitle(Form("#frac{corrected}{measured} %s",differentialCumulantIndex[index].Data()));
18905 fDiffFlowDetectorBiasHistList[t][pe]->Add(fDiffFlowDetectorBias[t][pe][index]);
489d5531 18906 // differential flow estimates from Q-cumulants:
18907 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]);
18908 fDiffFlow[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
18909 fDiffFlowHistList[t][pe]->Add(fDiffFlow[t][pe][index]);
18910 } // end of for(Int_t index=0;index<4;index++)
18911 for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
18912 {
18913 // differential covariances:
18914 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]);
18915 fDiffFlowCovariances[t][pe][covIndex]->SetXTitle(ptEtaFlag[pe].Data());
18916 fDiffFlowCovariancesHistList[t][pe]->Add(fDiffFlowCovariances[t][pe][covIndex]);
18917 } // end of for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
18918 // products of both types of correlations:
18919 TString diffFlowProductOfCorrelationsProName = "fDiffFlowProductOfCorrelationsPro";
18920 diffFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
18921 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18922 {
18923 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18924 {
18925 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]);
18926 fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2]->SetXTitle(ptEtaFlag[pe].Data());
18927 fDiffFlowProductOfCorrelationsProList[t][pe]->Add(fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2]);
18928 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18929 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18930 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18931 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18932 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18933 // sums of event weights for reduced correlations:
18934 TString diffFlowSumOfEventWeightsName = "fDiffFlowSumOfEventWeights";
18935 diffFlowSumOfEventWeightsName += fAnalysisLabel->Data();
18936 for(Int_t t=0;t<2;t++) // type is RP or POI
18937 {
62e36168 18938 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18939 {
18940 for(Int_t p=0;p<2;p++) // power of weights is either 1 or 2
18941 {
18942 for(Int_t ew=0;ew<4;ew++) // index of reduced correlation
18943 {
18944 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]);
18945 fDiffFlowSumOfEventWeights[t][pe][p][ew]->SetXTitle(ptEtaFlag[pe].Data());
18946 fDiffFlowSumOfEventWeightsHistList[t][pe][p]->Add(fDiffFlowSumOfEventWeights[t][pe][p][ew]); // to be improved (add dedicated list to hold all this)
18947 }
18948 }
18949 }
18950 }
18951 // sum of products of event weights for both types of correlations:
18952 TString diffFlowSumOfProductOfEventWeightsName = "fDiffFlowSumOfProductOfEventWeights";
18953 diffFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
18954 for(Int_t t=0;t<2;t++) // type is RP or POI
18955 {
62e36168 18956 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18957 {
18958 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18959 {
18960 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18961 {
18962 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]);
18963 fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2]->SetXTitle(ptEtaFlag[pe].Data());
18964 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]->Add(fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2]);
18965 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18966 }
18967 }
18968 }
18969 }
18970 // correction terms for nua:
18971 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18972 {
62e36168 18973 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18974 {
18975 for(Int_t sc=0;sc<2;sc++) // sin or cos
18976 {
18977 for(Int_t cti=0;cti<9;cti++) // correction term index
18978 {
18979 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]);
18980 fDiffFlowCorrectionsHistList[t][pe]->Add(fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti]);
18981 }
18982 }
18983 }
18984 }
18985
18986} // end of AliFlowAnalysisWithQCumulants::BookEverythingForDifferentialFlow()
18987
e1d101a6 18988//=======================================================================================================================
489d5531 18989
489d5531 18990void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow()
18991{
18992 // Calculate generalized Q-cumulants (cumulants corrected for non-unifom acceptance).
18993
b92ea2b9 18994 // Isotropic cumulants:
53884472 18995 Double_t QC2 = fIntFlowQcumulants->GetBinContent(1);
18996 Double_t QC2Error = fIntFlowQcumulants->GetBinError(1);
18997 Double_t QC4 = fIntFlowQcumulants->GetBinContent(2);
18998 Double_t QC4Error = fIntFlowQcumulants->GetBinError(2);
18999 //Double_t QC6 = fIntFlowQcumulants->GetBinContent(3);
19000 //Double_t QC6Error = fIntFlowQcumulants->GetBinError(3);
19001 //Double_t QC8 = fIntFlowQcumulants->GetBinContent(4);
19002 //Double_t QC8Error = fIntFlowQcumulants->GetBinError(4);
b92ea2b9 19003
19004 // Measured 2-, 4-, 6- and 8-particle correlations:
489d5531 19005 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
b92ea2b9 19006 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1); // statistical error of <<2>>
489d5531 19007 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
b92ea2b9 19008 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2); // statistical error of <<4>>
489d5531 19009 //Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
489d5531 19010 //Double_t sixError = fIntFlowCorrelationsHist->GetBinError(3); // statistical error of <<6>>
b92ea2b9 19011 //Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
489d5531 19012 //Double_t eightError = fIntFlowCorrelationsHist->GetBinError(4); // statistical error of <<8>>
b92ea2b9 19013
19014 // Non-isotropic terms:
19015 Double_t c1 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(1); // <<cos(n*phi1)>>
19016 Double_t c1Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(1); // statistical error of <<cos(n*phi1)>>
19017 Double_t c2 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(2); // <<cos(n*(phi1+phi2))>>
19018 Double_t c2Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(2); // statistical error of <<cos(n*(phi1+phi2))>>
19019 Double_t c3 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(3); // <<cos(n*(phi1-phi2-phi3))>>
19020 Double_t c3Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(3); // statistical error of <<cos(n*(phi1-phi2-phi3))>>
19021 Double_t s1 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(1); // <<sin(n*phi1)>>
19022 Double_t s1Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(1); // statistical error of <<sin(n*phi1)>>
19023 Double_t s2 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(2); // <<sin(n*(phi1+phi2))>>
19024 Double_t s2Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(2); // statistical error of <<sin(n*(phi1+phi2))>>
19025 Double_t s3 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(3); // <<sin(n*(phi1-phi2-phi3))>>
19026 Double_t s3Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(3); // statistical error of <<sin(n*(phi1-phi2-phi3))>>
19027
19028 // Shortcuts:
19029 Double_t a1 = 2.*pow(c1,2.)+2.*pow(s1,2.)-two;
19030 Double_t a2 = 6.*pow(c1,3.)-2.*c1*c2+c3+6.*c1*pow(s1,2.)-2.*s1*s2-4.*c1*two;
19031 Double_t a3 = 2.*pow(s1,2.)-2.*pow(c1,2.)+c2;
19032 Double_t a4 = 6.*pow(s1,3.)+6.*pow(c1,2.)*s1+2.*c2*s1-2.*c1*s2-s3-4.*s1*two;
19033 Double_t a5 = 4.*c1*s1-s2;
19034
19035 // Covariances (including weight dependent prefactor):
8e1cefdd 19036 Double_t wCov1 = 0.; // w*Cov(<2>,<cos(phi))
19037 Double_t wCov2 = 0.; // w*Cov(<2>,<sin(phi))
19038 Double_t wCov3 = 0.; // w*Cov(<cos(phi),<sin(phi))
19039 Double_t wCov4 = 0.; // w*Cov(<2>,<4>)
19040 Double_t wCov5 = 0.; // w*Cov(<2>,<cos(#phi_{1}+#phi_{2})>)
19041 Double_t wCov6 = 0.; // w*Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19042 Double_t wCov7 = 0.; // w*Cov(<2>,<sin(#phi_{1}+#phi_{2})>)
19043 Double_t wCov8 = 0.; // w*Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19044 Double_t wCov9 = 0.; // w*Cov(<4>,<cos(#phi)>
19045 Double_t wCov10 = 0.; // w*Cov(<4>,<cos(#phi_{1}+#phi_{2})>)
19046 Double_t wCov11 = 0.; // w*Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19047 Double_t wCov12 = 0.; // w*Cov(<4>,<sin(#phi)>
19048 Double_t wCov13 = 0.; // w*Cov(<4>,<sin(#phi_{1}+#phi_{2})>)
19049 Double_t wCov14 = 0.; // w*Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19050 Double_t wCov15 = 0.; // w*Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19051 Double_t wCov16 = 0.; // w*Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19052 Double_t wCov17 = 0.; // w*Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19053 Double_t wCov18 = 0.; // w*Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19054 Double_t wCov19 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19055 Double_t wCov20 = 0.; // w*Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19056 Double_t wCov21 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)
19057 Double_t wCov22 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19058 Double_t wCov23 = 0.; // w*Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19059 Double_t wCov24 = 0.; // w*Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19060 Double_t wCov25 = 0.; // w*Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)
19061 Double_t wCov26 = 0.; // w*Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19062 Double_t wCov27 = 0.; // w*Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19063 Double_t wCov28 = 0.; // w*Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19064 if(!fForgetAboutCovariances)
19065 {
19066 wCov1 = fIntFlowCovariancesNUA->GetBinContent(1); // w*Cov(<2>,<cos(phi))
19067 wCov2 = fIntFlowCovariancesNUA->GetBinContent(2); // w*Cov(<2>,<sin(phi))
19068 wCov3 = fIntFlowCovariancesNUA->GetBinContent(3); // w*Cov(<cos(phi),<sin(phi))
19069 wCov4 = fIntFlowCovariances->GetBinContent(1); // w*Cov(<2>,<4>)
19070 wCov5 = fIntFlowCovariancesNUA->GetBinContent(4); // w*Cov(<2>,<cos(#phi_{1}+#phi_{2})>)
19071 wCov6 = fIntFlowCovariancesNUA->GetBinContent(6); // w*Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19072 wCov7 = fIntFlowCovariancesNUA->GetBinContent(5); // w*Cov(<2>,<sin(#phi_{1}+#phi_{2})>)
19073 wCov8 = fIntFlowCovariancesNUA->GetBinContent(7); // w*Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19074 wCov9 = fIntFlowCovariancesNUA->GetBinContent(8); // w*Cov(<4>,<cos(#phi)>
19075 wCov10 = fIntFlowCovariancesNUA->GetBinContent(10); // w*Cov(<4>,<cos(#phi_{1}+#phi_{2})>)
19076 wCov11 = fIntFlowCovariancesNUA->GetBinContent(12); // w*Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19077 wCov12 = fIntFlowCovariancesNUA->GetBinContent(9); // w*Cov(<4>,<sin(#phi)>
19078 wCov13 = fIntFlowCovariancesNUA->GetBinContent(11); // w*Cov(<4>,<sin(#phi_{1}+#phi_{2})>)
19079 wCov14 = fIntFlowCovariancesNUA->GetBinContent(13); // w*Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19080 wCov15 = fIntFlowCovariancesNUA->GetBinContent(14); // w*Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19081 wCov16 = fIntFlowCovariancesNUA->GetBinContent(16); // w*Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19082 wCov17 = fIntFlowCovariancesNUA->GetBinContent(15); // w*Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19083 wCov18 = fIntFlowCovariancesNUA->GetBinContent(17); // w*Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19084 wCov19 = fIntFlowCovariancesNUA->GetBinContent(23); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19085 wCov20 = fIntFlowCovariancesNUA->GetBinContent(18); // w*Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19086 wCov21 = fIntFlowCovariancesNUA->GetBinContent(22); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)
19087 wCov22 = fIntFlowCovariancesNUA->GetBinContent(24); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19088 wCov23 = fIntFlowCovariancesNUA->GetBinContent(20); // w*Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19089 wCov24 = fIntFlowCovariancesNUA->GetBinContent(25); // w*Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19090 wCov25 = fIntFlowCovariancesNUA->GetBinContent(27); // w*Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)
19091 wCov26 = fIntFlowCovariancesNUA->GetBinContent(19); // w*Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19092 wCov27 = fIntFlowCovariancesNUA->GetBinContent(21); // w*Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19093 wCov28 = fIntFlowCovariancesNUA->GetBinContent(26); // w*Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19094 } // end of if(!fForgetAboutCovariances)
19095
b92ea2b9 19096 // Calculating generalized QC{2}:
19097 // Generalized QC{2}:
19098 Double_t gQC2 = two - pow(c1,2.) - pow(s1,2.);
19099 if(fApplyCorrectionForNUA){fIntFlowQcumulants->SetBinContent(1,gQC2);}
19100 // Statistical error of generalized QC{2}:
19101 Double_t gQC2ErrorSquared = pow(twoError,2.)+4.*pow(c1,2.)*pow(c1Error,2.)
19102 + 4.*pow(s1,2.)*pow(s1Error,2.)
19103 - 4*c1*wCov1-4*s1*wCov2
19104 + 8.*c1*s1*wCov3;
19105 // Store ratio of error squared - with/without NUA terms:
19106 Double_t ratioErrorSquaredQC2 = 0.;
19107 if(fIntFlowQcumulants->GetBinError(1)>0.)
19108 {
19109 ratioErrorSquaredQC2 = (gQC2ErrorSquared/pow(fIntFlowQcumulants->GetBinError(1),2.));
19110 fIntFlowQcumulantsErrorSquaredRatio->SetBinContent(1,ratioErrorSquaredQC2);
19111 }
19112 // If enabled, store error by including non-isotropic terms:
b77b6434 19113 if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19114 {
19115 if(gQC2ErrorSquared>=0.)
19116 {
19117 fIntFlowQcumulants->SetBinError(1,pow(gQC2ErrorSquared,0.5));
19118 } else
19119 {
19120 fIntFlowQcumulants->SetBinError(1,0.);
19121 cout<<endl;
19122 cout<<" WARNING (QC): Statistical error of generalized QC{2} is imaginary !!!!"<<endl;
19123 cout<<endl;
19124 }
b77b6434 19125 } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19126 // Quantify detector bias to QC{2}:
53884472 19127 if(TMath::Abs(QC2)>0.)
b92ea2b9 19128 {
53884472 19129 fIntFlowDetectorBias->SetBinContent(1,gQC2/QC2);
19130 if(QC2Error>0.)
b92ea2b9 19131 {
53884472 19132 Double_t errorSquared = gQC2ErrorSquared/pow(QC2,2.)+pow(gQC2,2.)*pow(QC2Error,2.)/pow(QC2,4.);
b92ea2b9 19133 if(errorSquared>0.)
19134 {
19135 fIntFlowDetectorBias->SetBinError(1,pow(errorSquared,0.5));
19136 }
19137 }
53884472 19138 } // end of if(TMath::Abs(QC2)>0.)
b92ea2b9 19139
19140 // Calculating generalized QC{4}:
19141 // Generalized QC{4}:
19142 Double_t gQC4 = four-2.*pow(two,2.)
19143 - 4.*c1*c3+4.*s1*s3-pow(c2,2.)-pow(s2,2.)
19144 + 4.*c2*(pow(c1,2.)-pow(s1,2.))+8.*s2*s1*c1
19145 + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.);
19146 if(fApplyCorrectionForNUA){fIntFlowQcumulants->SetBinContent(2,gQC4);}
19147 // Statistical error of generalized QC{4}:
19148 Double_t gQC4ErrorSquared = 16.*pow(a1,2.)*pow(twoError,2.)+pow(fourError,2.)+16.*pow(a2,2.)*pow(c1Error,2.)
19149 + 4.*pow(a3,2.)*pow(c2Error,2.)+16.*pow(c1,2.)*pow(c3Error,2.)
19150 + 16.*pow(a4,2.)*pow(s1Error,2.)+4.*pow(a5,2.)*pow(s2Error,2.)
19151 + 16.*pow(s1,2.)*pow(s3Error,2.)+8.*a1*wCov4-32.*a1*a2*wCov1
19152 - 16.*a3*a1*wCov5-32.*c1*a1*wCov6-32.*a1*a4*wCov2+16.*a5*a1*wCov7
19153 + 32.*s1*a1*wCov8-8.*a2*wCov9-4.*a3*wCov10-8.*c1*wCov11-8.*a4*wCov12
19154 + 4.*a5*wCov13+8.*s1*wCov14+16.*a3*a2*wCov15+32.*c1*a2*wCov16+32.*a2*a4*wCov3
19155 - 16.*a5*a2*wCov17-32.*s1*a2*wCov18+16.*c1*a3*wCov19+16.*a3*a4*wCov20
19156 - 8.*a3*a5*wCov21-16.*s1*a3*wCov22+32.*c1*a4*wCov23-16.*c1*a5*wCov24
19157 - 32.*c1*s1*wCov25-16.*a5*a4*wCov26-32.*s1*a4*wCov27+16.*s1*a5*wCov28;
19158 // Store ratio of error squared - with/without NUA terms:
19159 Double_t ratioErrorSquaredQC4 = 0.;
19160 if(fIntFlowQcumulants->GetBinError(2)>0.)
19161 {
19162 ratioErrorSquaredQC4 = (gQC4ErrorSquared/pow(fIntFlowQcumulants->GetBinError(2),2.));
19163 fIntFlowQcumulantsErrorSquaredRatio->SetBinContent(2,ratioErrorSquaredQC4);
19164 }
b77b6434 19165 if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19166 {
19167 if(gQC4ErrorSquared>=0.)
19168 {
19169 fIntFlowQcumulants->SetBinError(2,pow(gQC4ErrorSquared,0.5));
19170 } else
19171 {
19172 fIntFlowQcumulants->SetBinError(2,0.);
19173 cout<<endl;
19174 cout<<" WARNING (QC): Statistical error of generalized QC{4} is imaginary !!!!"<<endl;
19175 cout<<endl;
19176 }
b77b6434 19177 } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19178 // Quantify detector bias to QC{4}:
53884472 19179 if(TMath::Abs(QC4)>0.)
b92ea2b9 19180 {
53884472 19181 fIntFlowDetectorBias->SetBinContent(2,gQC4/QC4);
19182 if(QC4Error>0.)
b92ea2b9 19183 {
53884472 19184 Double_t errorSquared = gQC4ErrorSquared/pow(QC4,2.)+pow(gQC4,2.)*pow(QC4Error,2.)/pow(QC4,4.);
b92ea2b9 19185 if(errorSquared>0.)
19186 {
19187 fIntFlowDetectorBias->SetBinError(2,pow(errorSquared,0.5));
19188 }
19189 }
53884472 19190 } // end of if(TMath::Abs(QC4)>0.)
489d5531 19191
b92ea2b9 19192
19193 // .... to be improved (continued for 6th and 8th order) ....
19194
19195
2001bc3a 19196 // versus multiplicity:
b77b6434 19197 if(fCalculateCumulantsVsM) // to be improved - propagate error for nua terms vs M
2001bc3a 19198 {
19199 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
b77b6434 19200 Double_t value[4] = {0.}; // QCs vs M
19201 Double_t error[4] = {0.}; // error of QCs vs M
19202 Double_t dSum1[4] = {0.}; // sum value_i/(error_i)^2
19203 Double_t dSum2[4] = {0.}; // sum 1/(error_i)^2
2001bc3a 19204 for(Int_t b=1;b<=nBins;b++)
19205 {
b92ea2b9 19206 // Measured correlations:
2001bc3a 19207 two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>> vs M
19208 four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>> vs M
b92ea2b9 19209 // Isotropic cumulants:
53884472 19210 QC2 = two;
19211 QC4 = four-2.*pow(two,2.);
b92ea2b9 19212 // Non-isotropic terms:
19213 c1 = fIntFlowCorrectionTermsForNUAVsMPro[1][0]->GetBinContent(b); // <<cos(n*phi1)>>
19214 c2 = fIntFlowCorrectionTermsForNUAVsMPro[1][1]->GetBinContent(b); // <<cos(n*(phi1+phi2))>>
19215 c3 = fIntFlowCorrectionTermsForNUAVsMPro[1][2]->GetBinContent(b); // <<cos(n*(phi1-phi2-phi3))>>
19216 s1 = fIntFlowCorrectionTermsForNUAVsMPro[0][0]->GetBinContent(b); // <<sin(n*phi1)>>
19217 s2 = fIntFlowCorrectionTermsForNUAVsMPro[0][1]->GetBinContent(b); // <<sin(n*(phi1+phi2))>>
19218 s3 = fIntFlowCorrectionTermsForNUAVsMPro[0][2]->GetBinContent(b); // <<sin(n*(phi1-phi2-phi3))>>
19219 // Generalized QC{2} vs M:
19220 gQC2 = two - pow(c1,2.) - pow(s1,2.);
b77b6434 19221 if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[0]->SetBinContent(b,gQC2);}
b92ea2b9 19222 // Generalized QC{4} vs M:
19223 gQC4 = four-2.*pow(two,2.)
19224 - 4.*c1*c3+4.*s1*s3-pow(c2,2.)-pow(s2,2.)
19225 + 4.*c2*(pow(c1,2.)-pow(s1,2.))+8.*s2*s1*c1
19226 + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.);
b77b6434 19227 if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[1]->SetBinContent(b,gQC4);}
b92ea2b9 19228 // Detector bias vs M:
53884472 19229 if(TMath::Abs(QC2)>0.)
b92ea2b9 19230 {
53884472 19231 fIntFlowDetectorBiasVsM[0]->SetBinContent(b,gQC2/QC2);
19232 } // end of if(TMath::Abs(QC2)>0.)
19233 if(TMath::Abs(QC4)>0.)
b92ea2b9 19234 {
53884472 19235 fIntFlowDetectorBiasVsM[1]->SetBinContent(b,gQC4/QC4);
19236 } // end of if(TMath::Abs(QC4)>0.)
b77b6434 19237 // Rebin in M:
19238 for(Int_t co=0;co<4;co++)
19239 {
19240 value[co] = fIntFlowQcumulantsVsM[co]->GetBinContent(b);
19241 error[co] = fIntFlowQcumulantsVsM[co]->GetBinError(b);
19242 if(error[co]>0.)
19243 {
19244 dSum1[co]+=value[co]/(error[co]*error[co]);
19245 dSum2[co]+=1./(error[co]*error[co]);
19246 }
19247 } // end of for(Int_t co=0;co<4;co++)
19248 } // end of for(Int_t b=1;b<=nBins;b++)
19249 // Store rebinned Q-cumulants:
19250 if(fApplyCorrectionForNUAVsM)
19251 {
19252 for(Int_t co=0;co<4;co++)
19253 {
19254 if(dSum2[co]>0.)
19255 {
19256 fIntFlowQcumulantsRebinnedInM->SetBinContent(co+1,dSum1[co]/dSum2[co]);
19257 fIntFlowQcumulantsRebinnedInM->SetBinError(co+1,pow(1./dSum2[co],0.5));
19258 }
19259 } // end of for(Int_t co=0;co<4;co++)
19260 } // end of if(fApplyCorrectionForNUAVsM)
19261 } // end of if(fCalculateCumulantsVsM)
2001bc3a 19262
489d5531 19263} // end of void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow()
0328db2d 19264
e1d101a6 19265//=======================================================================================================================
489d5531 19266
489d5531 19267void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUAIntFlow()
19268{
0328db2d 19269 // From profile fIntFlowCorrectionTermsForNUAPro[sc] access measured correction terms for NUA
489d5531 19270 // and their spread, correctly calculate the statistical errors and store the final
0328db2d 19271 // results and statistical errors for correction terms for NUA in histogram fIntFlowCorrectionTermsForNUAHist[sc].
489d5531 19272 //
19273 // Remark: Statistical error of correction temrs is calculated as:
19274 //
19275 // statistical error = termA * spread * termB:
19276 // termA = sqrt{sum_{i=1}^{N} w^2}/(sum_{i=1}^{N} w)
19277 // termB = 1/sqrt(1-termA^2)
19278
b92ea2b9 19279 TString sinCosFlag[2] = {"sin","cos"}; // to be improved - promore this to data member?
19280 TString nonisotropicTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
19281
489d5531 19282 for(Int_t sc=0;sc<2;sc++) // sin or cos correction terms
19283 {
b92ea2b9 19284 for(Int_t ci=1;ci<=4;ci++) // correction term index (to be improved - hardwired 4)
489d5531 19285 {
19286 Double_t correction = fIntFlowCorrectionTermsForNUAPro[sc]->GetBinContent(ci);
0328db2d 19287 Double_t spread = fIntFlowCorrectionTermsForNUAPro[sc]->GetBinError(ci);
19288 Double_t sumOfLinearEventWeights = fIntFlowSumOfEventWeightsNUA[sc][0]->GetBinContent(ci);
19289 Double_t sumOfQuadraticEventWeights = fIntFlowSumOfEventWeightsNUA[sc][1]->GetBinContent(ci);
19290 Double_t termA = 0.;
19291 Double_t termB = 0.;
b92ea2b9 19292 if(TMath::Abs(sumOfLinearEventWeights)>1.e-44)
0328db2d 19293 {
19294 termA = pow(sumOfQuadraticEventWeights,0.5)/sumOfLinearEventWeights;
19295 } else
19296 {
b92ea2b9 19297 cout<<" WARNING (QC): sumOfLinearEventWeights == 0 in AFAWQC::FCTFNIF() !!!!"<<endl;
19298 cout<<Form(" (for <<%s[%s]>> non-isotropic term)",sinCosFlag[sc].Data(),nonisotropicTermFlag[ci-1].Data())<<endl;
0328db2d 19299 }
489d5531 19300 if(1.-pow(termA,2.) > 0.)
19301 {
19302 termB = 1./pow(1-pow(termA,2.),0.5);
19303 } else
19304 {
b92ea2b9 19305 cout<<" WARNING (QC): 1.-pow(termA,2.) <= 0 in AFAWQC::FCTFNIF() !!!!"<<endl;
19306 cout<<Form(" (for <<%s[%s]>> non-isotropic term)",sinCosFlag[sc].Data(),nonisotropicTermFlag[ci-1].Data())<<endl;
489d5531 19307 }
19308 Double_t statisticalError = termA * spread * termB;
489d5531 19309 fIntFlowCorrectionTermsForNUAHist[sc]->SetBinContent(ci,correction);
0328db2d 19310 fIntFlowCorrectionTermsForNUAHist[sc]->SetBinError(ci,statisticalError);
b92ea2b9 19311 } // end of for(Int_t ci=1;ci<=4;ci++) // correction term index
489d5531 19312 } // end of for(Int sc=0;sc<2;sc++) // sin or cos correction terms
19313
19314} // end of void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUAIntFlow()
19315
e1d101a6 19316//=======================================================================================================================
489d5531 19317
489d5531 19318void AliFlowAnalysisWithQCumulants::GetPointersForNestedLoopsHistograms()
19319{
19320 // Get pointers to all objects relevant for calculations with nested loops.
19321
19322 TList *nestedLoopsList = dynamic_cast<TList*>(fHistList->FindObject("Nested Loops"));
19323 if(nestedLoopsList)
19324 {
19325 this->SetNestedLoopsList(nestedLoopsList);
19326 } else
19327 {
19328 cout<<"WARNING: nestedLoopsList is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19329 exit(0);
19330 }
19331
19332 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
19333 TString typeFlag[2] = {"RP","POI"}; // to be improved (should I promote this to data members?)
19334 TString ptEtaFlag[2] = {"p_{T}","#eta"}; // to be improved (should I promote this to data members?)
19335 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"}; // to be improved (should I promote this to data members?)
19336
19337 TString evaluateNestedLoopsName = "fEvaluateNestedLoops";
19338 evaluateNestedLoopsName += fAnalysisLabel->Data();
19339 TProfile *evaluateNestedLoops = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(evaluateNestedLoopsName.Data()));
19340 Bool_t bEvaluateIntFlowNestedLoops = kFALSE;
19341 Bool_t bEvaluateDiffFlowNestedLoops = kFALSE;
19342 if(evaluateNestedLoops)
19343 {
19344 this->SetEvaluateNestedLoops(evaluateNestedLoops);
19345 bEvaluateIntFlowNestedLoops = (Int_t)evaluateNestedLoops->GetBinContent(1);
19346 bEvaluateDiffFlowNestedLoops = (Int_t)evaluateNestedLoops->GetBinContent(2);
19347 }
19348 // nested loops relevant for integrated flow:
19349 if(bEvaluateIntFlowNestedLoops)
19350 {
19351 // correlations:
19352 TString intFlowDirectCorrelationsName = "fIntFlowDirectCorrelations";
19353 intFlowDirectCorrelationsName += fAnalysisLabel->Data();
19354 TProfile *intFlowDirectCorrelations = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(intFlowDirectCorrelationsName.Data()));
19355 if(intFlowDirectCorrelations)
19356 {
19357 this->SetIntFlowDirectCorrelations(intFlowDirectCorrelations);
19358 } else
19359 {
19360 cout<<"WARNING: intFlowDirectCorrelations is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19361 exit(0);
19362 }
403e3389 19363 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 19364 {
19365 TString intFlowExtraDirectCorrelationsName = "fIntFlowExtraDirectCorrelations";
19366 intFlowExtraDirectCorrelationsName += fAnalysisLabel->Data();
19367 TProfile *intFlowExtraDirectCorrelations = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(intFlowExtraDirectCorrelationsName.Data()));
19368 if(intFlowExtraDirectCorrelations)
19369 {
19370 this->SetIntFlowExtraDirectCorrelations(intFlowExtraDirectCorrelations);
19371 } else
19372 {
19373 cout<<"WARNING: intFlowExtraDirectCorrelations is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19374 exit(0);
19375 }
403e3389 19376 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 19377 // correction terms for non-uniform acceptance:
19378 TString intFlowDirectCorrectionTermsForNUAName = "fIntFlowDirectCorrectionTermsForNUA";
19379 intFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
19380 TProfile *intFlowDirectCorrectionTermsForNUA[2] = {NULL};
19381 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
19382 {
19383 intFlowDirectCorrectionTermsForNUA[sc] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s: %s terms",intFlowDirectCorrectionTermsForNUAName.Data(),sinCosFlag[sc].Data())));
19384 if(intFlowDirectCorrectionTermsForNUA[sc])
19385 {
19386 this->SetIntFlowDirectCorrectionTermsForNUA(intFlowDirectCorrectionTermsForNUA[sc],sc);
19387 } else
19388 {
19389 cout<<"WARNING: intFlowDirectCorrectionTermsForNUA[sc] is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19390 cout<<"sc = "<<sc<<endl;
19391 exit(0);
19392 }
19393 } // end of for(Int_t sc=0;sc<2;sc++)
e1d101a6 19394 // Mixed harmonics:
19395 if(fCalculateMixedHarmonics)
19396 {
19397 TString mixedHarmonicsNestedLoopsName = "fMixedHarmonicsNestedLoops";
19398 mixedHarmonicsNestedLoopsName += fAnalysisLabel->Data();
19399 TProfile *mixedHarmonicsNestedLoops = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(mixedHarmonicsNestedLoopsName.Data()));
19400 if(mixedHarmonicsNestedLoops)
19401 {
19402 this->SetMixedHarmonicsNestedLoops(mixedHarmonicsNestedLoops);
19403 } else
19404 {
19405 cout<<"WARNING: mixedHarmonicsNestedLoops is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19406 exit(0);
19407 }
19408 } // end of if(fCalculateMixedHarmonics)
489d5531 19409 } // end of if(bEvaluateIntFlowNestedLoops)
19410
19411 // nested loops relevant for differential flow:
19412 if(bEvaluateDiffFlowNestedLoops)
19413 {
19414 // correlations:
19415 TString diffFlowDirectCorrelationsName = "fDiffFlowDirectCorrelations";
19416 diffFlowDirectCorrelationsName += fAnalysisLabel->Data();
19417 TProfile *diffFlowDirectCorrelations[2][2][4] = {{{NULL}}};
19418 for(Int_t t=0;t<2;t++)
19419 {
19420 for(Int_t pe=0;pe<2;pe++)
19421 {
19422 for(Int_t ci=0;ci<4;ci++) // correlation index
19423 {
19424 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())));
19425 if(diffFlowDirectCorrelations[t][pe][ci])
19426 {
19427 this->SetDiffFlowDirectCorrelations(diffFlowDirectCorrelations[t][pe][ci],t,pe,ci);
19428 } else
19429 {
19430 cout<<"WARNING: diffFlowDirectCorrelations[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19431 cout<<"t = "<<t<<endl;
19432 cout<<"pe = "<<pe<<endl;
19433 cout<<"ci = "<<ci<<endl;
19434 }
19435 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
19436 } // end of for(Int_t pe=0;pe<2;pe++)
19437 } // end of for(Int_t t=0;t<2;t++)
19438 // correction terms for non-uniform acceptance:
19439 TString diffFlowDirectCorrectionTermsForNUAName = "fDiffFlowDirectCorrectionTermsForNUA";
19440 diffFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
19441 TProfile *diffFlowDirectCorrectionTermsForNUA[2][2][2][10] = {{{{NULL}}}};
19442 for(Int_t t=0;t<2;t++)
19443 {
19444 for(Int_t pe=0;pe<2;pe++)
19445 {
19446 // correction terms for NUA:
19447 for(Int_t sc=0;sc<2;sc++) // sin or cos
19448 {
19449 for(Int_t cti=0;cti<9;cti++) // correction term index
19450 {
19451 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)));
19452 if(diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti])
19453 {
19454 this->SetDiffFlowDirectCorrectionTermsForNUA(diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti],t,pe,sc,cti);
19455 } else
19456 {
19457 cout<<"WARNING: diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19458 cout<<"t = "<<t<<endl;
19459 cout<<"pe = "<<pe<<endl;
19460 cout<<"sc = "<<sc<<endl;
19461 cout<<"cti = "<<cti<<endl;
19462 }
19463 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
19464 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
19465 } // end of for(Int_t pe=0;pe<2;pe++)
19466 } // end of for(Int_t t=0;t<2;t++)
64e500e3 19467 // other differential correlators:
19468 TString otherDirectDiffCorrelatorsName = "fOtherDirectDiffCorrelators";
19469 otherDirectDiffCorrelatorsName += fAnalysisLabel->Data();
19470 TProfile *otherDirectDiffCorrelators[2][2][2][1] = {{{{NULL}}}};
19471 for(Int_t t=0;t<2;t++)
19472 {
e1d101a6 19473 for(Int_t pe=0;pe<2;pe++)
19474 {
19475 // correction terms for NUA:
19476 for(Int_t sc=0;sc<2;sc++) // sin or cos
19477 {
19478 for(Int_t ci=0;ci<1;ci++) // correlator index
19479 {
19480 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)));
19481 if(otherDirectDiffCorrelators[t][pe][sc][ci])
19482 {
19483 this->SetOtherDirectDiffCorrelators(otherDirectDiffCorrelators[t][pe][sc][ci],t,pe,sc,ci);
19484 } else
19485 {
19486 cout<<"WARNING: otherDirectDiffCorrelators[t][pe][sc][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19487 cout<<"t = "<<t<<endl;
19488 cout<<"pe = "<<pe<<endl;
19489 cout<<"sc = "<<sc<<endl;
19490 cout<<"ci = "<<ci<<endl;
19491 }
19492 } // end of for(Int_t ci=0;ci<9;ci++) // correction term index
19493 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
19494 } // end of for(Int_t pe=0;pe<2;pe++)
19495 } // end of for(Int_t t=0;t<2;t++)
19496 // number of RPs and POIs in selected pt and eta bins for cross-checkings:
19497 TString noOfParticlesInBinName = "fNoOfParticlesInBin";
19498 TH1D *noOfParticlesInBin = NULL;
19499 noOfParticlesInBin = dynamic_cast<TH1D*>(nestedLoopsList->FindObject(noOfParticlesInBinName.Data()));
19500 if(noOfParticlesInBin)
19501 {
19502 this->SetNoOfParticlesInBin(noOfParticlesInBin);
19503 } else
19504 {
19505 cout<<endl;
19506 cout<<" WARNING (QC): noOfParticlesInBin is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19507 cout<<endl;
19508 }
19509 } // end of if(bEvaluateDiffFlowNestedLoops)
19510
19511} // end of void AliFlowAnalysisWithQCumulants::GetPointersForNestedLoopsHistograms()
19512
19513//=======================================================================================================================
19514
19515void AliFlowAnalysisWithQCumulants::GetPointersForMixedHarmonicsHistograms()
19516{
19517 // Get pointers to all objects relevant for mixed harmonics.
19518
19519 // a) Get pointer to base list for mixed harmonics;
19520 // b) Get pointer to TProfile fMixedHarmonicsFlags holding all flags for mixed harmonics;
19521 // c) Get pointer to list fMixedHarmonicsProfiles and pointers to all objects that she holds;
c10259fb 19522 // d) Get pointer to list fMixedHarmonicsResults and pointers to all objects that she holds;
19523 // e) Get pointer to list fMixedHarmonicsErrorPropagation and pointers to all objects that she holds.
e1d101a6 19524
19525 // a) Get pointer to base list for mixed harmonics:
19526 TList *mixedHarmonicsList = dynamic_cast<TList*>(fHistList->FindObject("Mixed Harmonics"));
19527 if(mixedHarmonicsList)
19528 {
19529 this->SetMixedHarmonicsList(mixedHarmonicsList);
19530 } else
19531 {
19532 cout<<"WARNING: mixedHarmonicsList is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19533 exit(0);
19534 }
19535
19536 // b) Get pointer to TProfile fMixedHarmonicsFlags holding all flags for mixed harmonics:
19537 TString mixedHarmonicsFlagsName = "fMixedHarmonicsFlags";
19538 mixedHarmonicsFlagsName += fAnalysisLabel->Data();
19539 TProfile *mixedHarmonicsFlags = dynamic_cast<TProfile*>
19540 (mixedHarmonicsList->FindObject(mixedHarmonicsFlagsName.Data()));
19541 if(mixedHarmonicsFlags)
19542 {
19543 this->SetMixedHarmonicsFlags(mixedHarmonicsFlags);
19544 fCalculateMixedHarmonics = (Bool_t)mixedHarmonicsFlags->GetBinContent(1);
19545 fCalculateMixedHarmonicsVsM = (Bool_t)mixedHarmonicsFlags->GetBinContent(3);
19546 } else
19547 {
19548 cout<<"WARNING: mixedHarmonicsFlags is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19549 exit(0);
19550 }
19551
19552 if(!fCalculateMixedHarmonics){return;}
19553
19554 // c) Get pointer to list fMixedHarmonicsProfiles and pointers to all objects that she holds:
19555 TList *mixedHarmonicsProfiles = NULL;
19556 mixedHarmonicsProfiles = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Profiles"));
19557 if(mixedHarmonicsProfiles)
19558 {
19559 // 2p:
19560 TString s2pCorrelationsName = "f2pCorrelations";
19561 s2pCorrelationsName += fAnalysisLabel->Data();
19562 TProfile *p2pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s2pCorrelationsName.Data()));
19563 if(p2pCorrelations)
19564 {
19565 this->Set2pCorrelations(p2pCorrelations);
19566 } else
19567 {
19568 cout<<"WARNING: p2pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19569 exit(0);
19570 }
19571 // 3p:
19572 TString s3pCorrelationsName = "f3pCorrelations";
19573 s3pCorrelationsName += fAnalysisLabel->Data();
19574 TProfile *p3pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s3pCorrelationsName.Data()));
19575 if(p3pCorrelations)
19576 {
19577 this->Set3pCorrelations(p3pCorrelations);
19578 } else
19579 {
19580 cout<<"WARNING: p3pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19581 exit(0);
19582 }
19583 // 4p:
19584 TString s4pCorrelationsName = "f4pCorrelations";
19585 s4pCorrelationsName += fAnalysisLabel->Data();
19586 TProfile *p4pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s4pCorrelationsName.Data()));
19587 if(p4pCorrelations)
19588 {
19589 this->Set4pCorrelations(p4pCorrelations);
19590 } else
19591 {
19592 cout<<"WARNING: p4pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19593 exit(0);
19594 }
19595 // 5p:
19596 TString s5pCorrelationsName = "f5pCorrelations";
19597 s5pCorrelationsName += fAnalysisLabel->Data();
19598 TProfile *p5pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s5pCorrelationsName.Data()));
19599 if(p5pCorrelations)
19600 {
19601 this->Set5pCorrelations(p5pCorrelations);
19602 } else
19603 {
19604 cout<<"WARNING: p5pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19605 exit(0);
19606 }
19607 /* TBI not needed for the time being
19608 // 6p:
19609 TString s6pCorrelationsName = "f6pCorrelations";
19610 s6pCorrelationsName += fAnalysisLabel->Data();
19611 TProfile *p6pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s6pCorrelationsName.Data()));
19612 if(p6pCorrelations)
19613 {
19614 this->Set6pCorrelations(p6pCorrelations);
19615 } else
19616 {
19617 cout<<"WARNING: p6pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19618 exit(0);
19619 }
19620 // 7p:
19621 TString s7pCorrelationsName = "f7pCorrelations";
19622 s7pCorrelationsName += fAnalysisLabel->Data();
19623 TProfile *p7pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s7pCorrelationsName.Data()));
19624 if(p7pCorrelations)
19625 {
19626 this->Set7pCorrelations(p7pCorrelations);
19627 } else
19628 {
19629 cout<<"WARNING: p7pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19630 exit(0);
19631 }
19632 // 8p:
19633 TString s8pCorrelationsName = "f8pCorrelations";
19634 s8pCorrelationsName += fAnalysisLabel->Data();
19635 TProfile *p8pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s8pCorrelationsName.Data()));
19636 if(p8pCorrelations)
19637 {
19638 this->Set8pCorrelations(p8pCorrelations);
19639 } else
19640 {
19641 cout<<"WARNING: p8pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19642 exit(0);
19643 }
19644 */
19645 } else // to if(mixedHarmonicsProfiles)
19646 {
19647 cout<<"WARNING: mixedHarmonicsProfiles is NULL in FAWQC::GPFMHH() !!!!"<<endl;
19648 exit(0);
19649 }
19650
19651 // d) Get pointer to list fMixedHarmonicsResults and pointers to all objects that she holds.
19652 TList *mixedHarmonicsResults = NULL;
19653 mixedHarmonicsResults = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Results"));
19654 if(mixedHarmonicsResults)
19655 {
19656 // 2p:
19657 TString s2pCumulantsName = "f2pCumulants";
19658 s2pCumulantsName += fAnalysisLabel->Data();
19659 TH1D *p2pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s2pCumulantsName.Data()));
19660 if(p2pCumulants)
19661 {
19662 this->Set2pCumulants(p2pCumulants);
19663 } else
64e500e3 19664 {
e1d101a6 19665 cout<<"WARNING: p2pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19666 exit(0);
19667 }
19668 // 3p:
19669 TString s3pCumulantsName = "f3pCumulants";
19670 s3pCumulantsName += fAnalysisLabel->Data();
19671 TH1D *p3pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s3pCumulantsName.Data()));
19672 if(p3pCumulants)
19673 {
19674 this->Set3pCumulants(p3pCumulants);
19675 } else
19676 {
19677 cout<<"WARNING: p3pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19678 exit(0);
19679 }
19680 // 4p:
19681 TString s4pCumulantsName = "f4pCumulants";
19682 s4pCumulantsName += fAnalysisLabel->Data();
19683 TH1D *p4pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s4pCumulantsName.Data()));
19684 if(p4pCumulants)
19685 {
19686 this->Set4pCumulants(p4pCumulants);
19687 } else
19688 {
19689 cout<<"WARNING: p4pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19690 exit(0);
19691 }
19692 // 5p:
19693 TString s5pCumulantsName = "f5pCumulants";
19694 s5pCumulantsName += fAnalysisLabel->Data();
19695 TH1D *p5pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s5pCumulantsName.Data()));
19696 if(p5pCumulants)
19697 {
19698 this->Set5pCumulants(p5pCumulants);
19699 } else
19700 {
19701 cout<<"WARNING: p5pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19702 exit(0);
19703 }
19704 } else // to if(mixedHarmonicsResults)
489d5531 19705 {
e1d101a6 19706 cout<<"WARNING: mixedHarmonicsResults is NULL in FAWQC::GPFMHH() !!!!"<<endl;
19707 }
489d5531 19708
c10259fb 19709 // e) Get pointer to list fMixedHarmonicsErrorPropagation and pointers to all objects that she holds:
19710 TList *mixedHarmonicsErrorPropagation = NULL;
19711 mixedHarmonicsErrorPropagation = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Error Propagation"));
19712 if(mixedHarmonicsErrorPropagation)
19713 {
19714 TString sMixedHarmonicEventWeightsName = "fMixedHarmonicEventWeights";
19715 sMixedHarmonicEventWeightsName += fAnalysisLabel->Data();
19716 TString powerFlag[2] = {"linear","quadratic"};
19717 for(Int_t power=0;power<2;power++)
19718 {
19719 TH1D *hMixedHarmonicEventWeights = dynamic_cast<TH1D*>(mixedHarmonicsErrorPropagation->FindObject(Form("%s: %s",sMixedHarmonicEventWeightsName.Data(),powerFlag[power].Data())));
19720 if(hMixedHarmonicEventWeights)
19721 {
19722 this->SetMixedHarmonicEventWeights(hMixedHarmonicEventWeights,power);
19723 } else
19724 {
19725 cout<<"WARNING: hMixedHarmonicEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
19726 cout<<"power = "<<power<<endl;
19727 exit(0);
19728 }
19729 } // end of for(Int_t power=0;power<2;power++)
19730 TString sMixedHarmonicProductOfEventWeightsName = "fMixedHarmonicProductOfEventWeights";
19731 sMixedHarmonicProductOfEventWeightsName += fAnalysisLabel->Data();
19732 TH2D *hMixedHarmonicProductOfEventWeights = dynamic_cast<TH2D*>(mixedHarmonicsErrorPropagation->FindObject(sMixedHarmonicProductOfEventWeightsName.Data()));
19733 if(hMixedHarmonicProductOfEventWeights)
19734 {
19735 this->SetMixedHarmonicProductOfEventWeights(hMixedHarmonicProductOfEventWeights);
19736 } else
19737 {
19738 cout<<"WARNING: hMixedHarmonicProductOfEventWeights is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19739 exit(0);
19740 }
19741 TString sMixedHarmonicProductOfCorrelationsName = "fMixedHarmonicProductOfCorrelations";
19742 sMixedHarmonicProductOfCorrelationsName += fAnalysisLabel->Data();
19743 TProfile2D *hMixedHarmonicProductOfCorrelations = dynamic_cast<TProfile2D*>(mixedHarmonicsErrorPropagation->FindObject(sMixedHarmonicProductOfCorrelationsName.Data()));
19744 if(hMixedHarmonicProductOfCorrelations)
19745 {
19746 this->SetMixedHarmonicProductOfCorrelations(hMixedHarmonicProductOfCorrelations);
19747 } else
19748 {
19749 cout<<"WARNING: hMixedHarmonicProductOfCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19750 exit(0);
19751 }
19752 } // end of if(mixedHarmonicsErrorPropagation)
19753
e1d101a6 19754} // end of void AliFlowAnalysisWithQCumulants::GetPointersForMixedHarmonicsHistograms()
489d5531 19755
e1d101a6 19756//=======================================================================================================================
489d5531 19757
489d5531 19758void AliFlowAnalysisWithQCumulants::StoreHarmonic()
19759{
19760 // Store flow harmonic in common control histograms.
19761
19762 (fCommonHists->GetHarmonic())->Fill(0.5,fHarmonic);
dd442cd2 19763 if(fFillMultipleControlHistograms)
19764 {
19765 (fCommonHists2nd->GetHarmonic())->Fill(0.5,fHarmonic);
19766 (fCommonHists4th->GetHarmonic())->Fill(0.5,fHarmonic);
19767 (fCommonHists6th->GetHarmonic())->Fill(0.5,fHarmonic);
19768 (fCommonHists8th->GetHarmonic())->Fill(0.5,fHarmonic);
19769 }
19770
489d5531 19771} // end of void AliFlowAnalysisWithQCumulants::StoreHarmonic()
19772
e1d101a6 19773//=======================================================================================================================
489d5531 19774
489d5531 19775void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelationsUsingParticleWeights(TString type, TString ptOrEta) // type = RP or POI
19776{
19777 // Calculate all correlations needed for differential flow using particle weights.
19778
2a98ceb8 19779 Int_t t = 0; // type flag
19780 Int_t pe = 0; // ptEta flag
489d5531 19781
19782 if(type == "RP")
19783 {
19784 t = 0;
19785 } else if(type == "POI")
19786 {
19787 t = 1;
19788 }
19789
19790 if(ptOrEta == "Pt")
19791 {
19792 pe = 0;
19793 } else if(ptOrEta == "Eta")
19794 {
19795 pe = 1;
19796 }
19797
19798 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
19799 Double_t minPtEta[2] = {fPtMin,fEtaMin};
19800 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
19801 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
19802
19803 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
19804 Double_t dReQ1n1k = (*fReQ)(0,1);
19805 Double_t dReQ2n2k = (*fReQ)(1,2);
19806 Double_t dReQ1n3k = (*fReQ)(0,3);
19807 //Double_t dReQ4n4k = (*fReQ)(3,4);
19808 Double_t dImQ1n1k = (*fImQ)(0,1);
19809 Double_t dImQ2n2k = (*fImQ)(1,2);
19810 Double_t dImQ1n3k = (*fImQ)(0,3);
19811 //Double_t dImQ4n4k = (*fImQ)(3,4);
19812
1268c371 19813 // S^M_{p,k} (see .h file for the definition of fSpk):
19814 Double_t dSM1p1k = (*fSpk)(0,1);
19815 Double_t dSM1p2k = (*fSpk)(0,2);
19816 Double_t dSM1p3k = (*fSpk)(0,3);
19817 Double_t dSM2p1k = (*fSpk)(1,1);
19818 Double_t dSM3p1k = (*fSpk)(2,1);
489d5531 19819
19820 // looping over all bins and calculating reduced correlations:
19821 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
19822 {
19823 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular (pt,eta) bin):
19824 Double_t p1n0kRe = 0.;
19825 Double_t p1n0kIm = 0.;
19826
19827 // number of POIs in particular (pt,eta) bin):
19828 Double_t mp = 0.;
19829
19830 // real and imaginary parts of q_{m*n,k}:
19831 // (weighted Q-vector evaluated for particles which are both RPs and POIs in particular (pt,eta) bin)
19832 Double_t q1n2kRe = 0.;
19833 Double_t q1n2kIm = 0.;
19834 Double_t q2n1kRe = 0.;
19835 Double_t q2n1kIm = 0.;
19836
19837 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
19838 Double_t s1p1k = 0.;
19839 Double_t s1p2k = 0.;
19840 Double_t s1p3k = 0.;
19841
19842 // M0111 from Eq. (118) in QC2c (to be improved (notation))
19843 Double_t dM0111 = 0.;
19844
19845 if(type == "POI")
19846 {
19847 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
19848 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
19849 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
19850 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
19851
19852 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
19853
19854 t = 1; // typeFlag = RP or POI
19855
19856 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
19857 q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
19858 * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
19859 q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
19860 * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
19861 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
19862 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
19863 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
19864 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
19865
19866 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
19867 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
19868 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
19869 s1p3k = pow(fs1dEBE[2][pe][3]->GetBinContent(b)*fs1dEBE[2][pe][3]->GetBinEntries(b),1.);
19870
19871 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
19872 dM0111 = mp*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
19873 - 3.*(s1p1k*(dSM2p1k-dSM1p2k)
19874 + 2.*(s1p3k-s1p2k*dSM1p1k));
19875 }
19876 else if(type == "RP")
19877 {
19878 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
19879 q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
19880 * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
19881 q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
19882 * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
19883 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
19884 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
19885 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
19886 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
19887
19888 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
19889 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
19890 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
19891 s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
19892
19893 // to be improved (cross-checked):
19894 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
19895 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
19896 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
19897 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
19898
19899 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
19900
19901 t = 0; // typeFlag = RP or POI
19902
19903 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
19904 dM0111 = mp*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
19905 - 3.*(s1p1k*(dSM2p1k-dSM1p2k)
19906 + 2.*(s1p3k-s1p2k*dSM1p1k));
19907 //...............................................................................................
19908 }
19909
19910 // 2'-particle correlation:
19911 Double_t two1n1nW0W1 = 0.;
19912 if(mp*dSM1p1k-s1p1k)
19913 {
19914 two1n1nW0W1 = (p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k-s1p1k)
19915 / (mp*dSM1p1k-s1p1k);
19916
19917 // fill profile to get <<2'>>
b40a910e 19918 fDiffFlowCorrelationsPro[t][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nW0W1,mp*dSM1p1k-s1p1k);
19919 // fill profile to get <<2'>^2>
19920 fDiffFlowSquaredCorrelationsPro[t][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nW0W1*two1n1nW0W1,mp*dSM1p1k-s1p1k);
489d5531 19921 // histogram to store <2'> e-b-e (needed in some other methods):
19922 fDiffFlowCorrelationsEBE[t][pe][0]->SetBinContent(b,two1n1nW0W1);
19923 fDiffFlowEventWeightsForCorrelationsEBE[t][pe][0]->SetBinContent(b,mp*dSM1p1k-s1p1k);
19924 } // end of if(mp*dSM1p1k-s1p1k)
19925
19926 // 4'-particle correlation:
19927 Double_t four1n1n1n1nW0W1W1W1 = 0.;
19928 if(dM0111)
19929 {
19930 four1n1n1n1nW0W1W1W1 = ((pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*(p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k)
19931 - q2n1kRe*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))
19932 - 2.*q2n1kIm*dReQ1n1k*dImQ1n1k
19933 - p1n0kRe*(dReQ1n1k*dReQ2n2k+dImQ1n1k*dImQ2n2k)
19934 + p1n0kIm*(dImQ1n1k*dReQ2n2k-dReQ1n1k*dImQ2n2k)
19935 - 2.*dSM1p2k*(p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k)
19936 - 2.*(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*s1p1k
19937 + 6.*(q1n2kRe*dReQ1n1k+q1n2kIm*dImQ1n1k)
19938 + 1.*(q2n1kRe*dReQ2n2k+q2n1kIm*dImQ2n2k)
19939 + 2.*(p1n0kRe*dReQ1n3k+p1n0kIm*dImQ1n3k)
19940 + 2.*s1p1k*dSM1p2k
19941 - 6.*s1p3k)
19942 / dM0111; // to be improved (notation of dM0111)
19943
19944 // fill profile to get <<4'>>
b40a910e 19945 fDiffFlowCorrelationsPro[t][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nW0W1W1W1,dM0111);
19946 // fill profile to get <<4'>^2>
19947 fDiffFlowSquaredCorrelationsPro[t][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nW0W1W1W1*four1n1n1n1nW0W1W1W1,dM0111);
489d5531 19948 // histogram to store <4'> e-b-e (needed in some other methods):
19949 fDiffFlowCorrelationsEBE[t][pe][1]->SetBinContent(b,four1n1n1n1nW0W1W1W1);
19950 fDiffFlowEventWeightsForCorrelationsEBE[t][pe][1]->SetBinContent(b,dM0111);
19951 } // end of if(dM0111)
19952 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
19953
19954} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelationsUsingParticleWeights(TString type, TString ptOrEta); // type = RP or POI
19955
e1d101a6 19956//=======================================================================================================================
489d5531 19957
489d5531 19958void AliFlowAnalysisWithQCumulants::FillCommonControlHistograms(AliFlowEventSimple *anEvent)
19959{
19960 // Fill common control histograms.
19961
19962 Int_t nRP = anEvent->GetEventNSelTracksRP(); // number of RPs (i.e. number of particles used to determine the reaction plane)
19963 fCommonHists->FillControlHistograms(anEvent);
dd442cd2 19964 if(fFillMultipleControlHistograms)
489d5531 19965 {
dd442cd2 19966 if(nRP>1)
489d5531 19967 {
dd442cd2 19968 fCommonHists2nd->FillControlHistograms(anEvent);
19969 if(nRP>3)
489d5531 19970 {
dd442cd2 19971 fCommonHists4th->FillControlHistograms(anEvent);
19972 if(nRP>5)
489d5531 19973 {
dd442cd2 19974 fCommonHists6th->FillControlHistograms(anEvent);
19975 if(nRP>7)
19976 {
19977 fCommonHists8th->FillControlHistograms(anEvent);
19978 } // end of if(nRP>7)
19979 } // end of if(nRP>5)
19980 } // end of if(nRP>3)
19981 } // end of if(nRP>1)
19982 } // end of if(fFillMultipleControlHistograms)
489d5531 19983
19984} // end of void AliFlowAnalysisWithQCumulants::FillCommonControlHistograms(AliFlowEventSimple *anEvent)
19985
e1d101a6 19986//=======================================================================================================================
489d5531 19987
489d5531 19988void AliFlowAnalysisWithQCumulants::ResetEventByEventQuantities()
19989{
19990 // Reset all event by event quantities.
19991
1268c371 19992 // Reference flow:
489d5531 19993 fReQ->Zero();
19994 fImQ->Zero();
1268c371 19995 fSpk->Zero();
489d5531 19996 fIntFlowCorrelationsEBE->Reset();
19997 fIntFlowEventWeightsForCorrelationsEBE->Reset();
19998 fIntFlowCorrelationsAllEBE->Reset();
19999
b92ea2b9 20000 for(Int_t sc=0;sc<2;sc++)
489d5531 20001 {
b92ea2b9 20002 fIntFlowCorrectionTermsForNUAEBE[sc]->Reset();
20003 fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc]->Reset();
489d5531 20004 }
20005
1268c371 20006 // Differential flow:
20007 if(fCalculateDiffFlow)
489d5531 20008 {
1268c371 20009 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
489d5531 20010 {
62e36168 20011 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // 1D in pt or eta
489d5531 20012 {
1268c371 20013 for(Int_t m=0;m<4;m++) // multiple of harmonic
489d5531 20014 {
1268c371 20015 for(Int_t k=0;k<9;k++) // power of weight
20016 {
20017 if(fReRPQ1dEBE[t][pe][m][k]) fReRPQ1dEBE[t][pe][m][k]->Reset();
20018 if(fImRPQ1dEBE[t][pe][m][k]) fImRPQ1dEBE[t][pe][m][k]->Reset();
20019 }
20020 }
489d5531 20021 }
1268c371 20022 }
20023 for(Int_t t=0;t<3;t++) // type (0 = RP, 1 = POI, 2 = RP&&POI )
20024 {
62e36168 20025 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // 1D in pt or eta
489d5531 20026 {
1268c371 20027 for(Int_t k=0;k<9;k++)
20028 {
20029 if(fs1dEBE[t][pe][k]) fs1dEBE[t][pe][k]->Reset();
20030 }
489d5531 20031 }
20032 }
1268c371 20033 // e-b-e reduced correlations:
20034 for(Int_t t=0;t<2;t++) // type (0 = RP, 1 = POI)
20035 {
62e36168 20036 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 20037 {
1268c371 20038 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
20039 {
20040 if(fDiffFlowCorrelationsEBE[t][pe][rci]) fDiffFlowCorrelationsEBE[t][pe][rci]->Reset();
20041 if(fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci]) fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci]->Reset();
20042 }
489d5531 20043 }
1268c371 20044 }
20045 // correction terms for NUA:
20046 for(Int_t t=0;t<2;t++) // type (0 = RP, 1 = POI)
20047 {
62e36168 20048 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 20049 {
1268c371 20050 for(Int_t sc=0;sc<2;sc++) // sin or cos
489d5531 20051 {
1268c371 20052 for(Int_t cti=0;cti<9;cti++) // correction term index
20053 {
489d5531 20054 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti]->Reset();
1268c371 20055 }
489d5531 20056 }
1268c371 20057 }
20058 }
20059 } // end of if(fCalculateDiffFlow)
20060
489d5531 20061 // 2D (pt,eta)
1268c371 20062 if(fCalculate2DDiffFlow)
489d5531 20063 {
20064 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
20065 {
20066 for(Int_t m=0;m<4;m++) // multiple of harmonic
20067 {
20068 for(Int_t k=0;k<9;k++) // power of weight
20069 {
b77b6434 20070 if(fReRPQ2dEBE[t][m][k]){fReRPQ2dEBE[t][m][k]->Reset();}
20071 if(fImRPQ2dEBE[t][m][k]){fImRPQ2dEBE[t][m][k]->Reset();}
489d5531 20072 }
20073 }
20074 }
20075 for(Int_t t=0;t<3;t++) // type (0 = RP, 1 = POI, 2 = RP&&POI )
20076 {
20077 for(Int_t k=0;k<9;k++)
20078 {
b77b6434 20079 if(fs2dEBE[t][k]){fs2dEBE[t][k]->Reset();}
489d5531 20080 }
20081 }
1268c371 20082 } // end of if(fCalculate2DDiffFlow)
489d5531 20083
20084} // end of void AliFlowAnalysisWithQCumulants::ResetEventByEventQuantities();
20085
e1d101a6 20086//=======================================================================================================================
489d5531 20087
489d5531 20088void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTerms(TString type, TString ptOrEta)
20089{
20090 // Calculate correction terms for non-uniform acceptance for differential flow (sin terms).
20091
20092 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][0][cti], where cti runs as follows:
20093 // 0: <<sin n(psi1)>>
20094 // 1: <<sin n(psi1+phi2)>>
20095 // 2: <<sin n(psi1+phi2-phi3)>>
20096 // 3: <<sin n(psi1-phi2-phi3)>>:
20097 // 4:
20098 // 5:
20099 // 6:
20100
20101 // multiplicity:
1268c371 20102 Double_t dMult = (*fSpk)(0,0);
489d5531 20103
20104 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
20105 Double_t dReQ1n = (*fReQ)(0,0);
20106 Double_t dReQ2n = (*fReQ)(1,0);
20107 //Double_t dReQ3n = (*fReQ)(2,0);
20108 //Double_t dReQ4n = (*fReQ)(3,0);
20109 Double_t dImQ1n = (*fImQ)(0,0);
20110 Double_t dImQ2n = (*fImQ)(1,0);
20111 //Double_t dImQ3n = (*fImQ)(2,0);
20112 //Double_t dImQ4n = (*fImQ)(3,0);
20113
2a98ceb8 20114 Int_t t = 0; // type flag
20115 Int_t pe = 0; // ptEta flag
489d5531 20116
20117 if(type == "RP")
20118 {
20119 t = 0;
20120 } else if(type == "POI")
20121 {
20122 t = 1;
20123 }
20124
20125 if(ptOrEta == "Pt")
20126 {
20127 pe = 0;
20128 } else if(ptOrEta == "Eta")
20129 {
20130 pe = 1;
20131 }
20132
20133 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20134 Double_t minPtEta[2] = {fPtMin,fEtaMin};
20135 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20136 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20137
20138 // looping over all bins and calculating correction terms:
20139 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20140 {
20141 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
20142 Double_t p1n0kRe = 0.;
20143 Double_t p1n0kIm = 0.;
20144
20145 // number of POIs in particular pt or eta bin:
20146 Double_t mp = 0.;
20147
20148 // 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):
20149 Double_t q1n0kRe = 0.;
20150 Double_t q1n0kIm = 0.;
20151 Double_t q2n0kRe = 0.;
20152 Double_t q2n0kIm = 0.;
20153
20154 // number of particles which are both RPs and POIs in particular pt or eta bin:
20155 Double_t mq = 0.;
20156
20157 if(type == "POI")
20158 {
20159 // q_{m*n,0}:
20160 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
20161 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
20162 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
20163 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
20164 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
20165 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
20166 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
20167 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
20168
20169 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20170 }
20171 else if(type == "RP")
20172 {
20173 // q_{m*n,0}:
20174 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20175 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20176 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20177 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20178 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
20179 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
20180 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
20181 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
20182
20183 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20184 }
20185 if(type == "POI")
20186 {
20187 // p_{m*n,0}:
20188 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20189 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20190 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20191 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20192
20193 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20194
20195 t = 1; // typeFlag = RP or POI
20196 }
20197 else if(type == "RP")
20198 {
20199 // p_{m*n,0} = q_{m*n,0}:
20200 p1n0kRe = q1n0kRe;
20201 p1n0kIm = q1n0kIm;
20202
20203 mp = mq;
20204
20205 t = 0; // typeFlag = RP or POI
20206 }
20207
20208 // <<sin n(psi1)>>:
20209 Double_t sinP1nPsi = 0.;
20210 if(mp)
20211 {
20212 sinP1nPsi = p1n0kIm/mp;
20213 // fill profile for <<sin n(psi1)>>:
20214 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi,mp);
20215 // histogram to store <sin n(psi1)> e-b-e (needed in some other methods):
20216 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][0]->SetBinContent(b,sinP1nPsi);
20217 } // end of if(mp)
20218
20219 // <<sin n(psi1+phi2)>>:
20220 Double_t sinP1nPsiP1nPhi = 0.;
20221 if(mp*dMult-mq)
20222 {
20223 sinP1nPsiP1nPhi = (p1n0kRe*dImQ1n+p1n0kIm*dReQ1n-q2n0kIm)/(mp*dMult-mq);
20224 // fill profile for <<sin n(psi1+phi2)>>:
20225 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsiP1nPhi,mp*dMult-mq);
20226 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20227 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][1]->SetBinContent(b,sinP1nPsiP1nPhi);
20228 } // end of if(mp*dMult-mq)
20229
20230 // <<sin n(psi1+phi2-phi3)>>:
20231 Double_t sinP1nPsi1P1nPhi2MPhi3 = 0.;
20232 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20233 {
20234 sinP1nPsi1P1nPhi2MPhi3 = (p1n0kIm*(pow(dImQ1n,2.)+pow(dReQ1n,2.)-dMult)
20235 - 1.*(q2n0kIm*dReQ1n-q2n0kRe*dImQ1n)
20236 - mq*dImQ1n+2.*q1n0kIm)
20237 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20238 // fill profile for <<sin n(psi1+phi2)>>:
20239 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1P1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20240 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20241 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][2]->SetBinContent(b,sinP1nPsi1P1nPhi2MPhi3);
20242 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20243
20244 // <<sin n(psi1-phi2-phi3)>>:
20245 Double_t sinP1nPsi1M1nPhi2MPhi3 = 0.;
20246 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20247 {
20248 sinP1nPsi1M1nPhi2MPhi3 = (p1n0kIm*(pow(dReQ1n,2.)-pow(dImQ1n,2.))-2.*p1n0kRe*dReQ1n*dImQ1n
20249 - 1.*(p1n0kIm*dReQ2n-p1n0kRe*dImQ2n)
20250 + 2.*mq*dImQ1n-2.*q1n0kIm)
20251 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20252 // fill profile for <<sin n(psi1+phi2)>>:
20253 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1M1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20254 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20255 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][3]->SetBinContent(b,sinP1nPsi1M1nPhi2MPhi3);
20256 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20257 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20258
20259} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTerms(TString type, TString ptOrEta)
20260
20261
e1d101a6 20262//=======================================================================================================================
489d5531 20263
20264
20265void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTerms(TString type, TString ptOrEta)
20266{
20267 // Calculate correction terms for non-uniform acceptance for differential flow (cos terms).
20268
20269 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][1][cti], where cti runs as follows:
20270 // 0: <<cos n(psi)>>
20271 // 1: <<cos n(psi1+phi2)>>
20272 // 2: <<cos n(psi1+phi2-phi3)>>
20273 // 3: <<cos n(psi1-phi2-phi3)>>
20274 // 4:
20275 // 5:
20276 // 6:
20277
20278 // multiplicity:
1268c371 20279 Double_t dMult = (*fSpk)(0,0);
489d5531 20280
20281 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
20282 Double_t dReQ1n = (*fReQ)(0,0);
20283 Double_t dReQ2n = (*fReQ)(1,0);
20284 //Double_t dReQ3n = (*fReQ)(2,0);
20285 //Double_t dReQ4n = (*fReQ)(3,0);
20286 Double_t dImQ1n = (*fImQ)(0,0);
20287 Double_t dImQ2n = (*fImQ)(1,0);
20288 //Double_t dImQ3n = (*fImQ)(2,0);
20289 //Double_t dImQ4n = (*fImQ)(3,0);
20290
2a98ceb8 20291 Int_t t = 0; // type flag
20292 Int_t pe = 0; // ptEta flag
489d5531 20293
20294 if(type == "RP")
20295 {
20296 t = 0;
20297 } else if(type == "POI")
20298 {
20299 t = 1;
20300 }
20301
20302 if(ptOrEta == "Pt")
20303 {
20304 pe = 0;
20305 } else if(ptOrEta == "Eta")
20306 {
20307 pe = 1;
20308 }
20309
20310 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20311 Double_t minPtEta[2] = {fPtMin,fEtaMin};
20312 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20313 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20314
20315 // looping over all bins and calculating correction terms:
20316 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20317 {
20318 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
20319 Double_t p1n0kRe = 0.;
20320 Double_t p1n0kIm = 0.;
20321
20322 // number of POIs in particular pt or eta bin:
20323 Double_t mp = 0.;
20324
20325 // 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):
20326 Double_t q1n0kRe = 0.;
20327 Double_t q1n0kIm = 0.;
20328 Double_t q2n0kRe = 0.;
20329 Double_t q2n0kIm = 0.;
20330
20331 // number of particles which are both RPs and POIs in particular pt or eta bin:
20332 Double_t mq = 0.;
20333
20334 if(type == "POI")
20335 {
20336 // q_{m*n,0}:
20337 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
20338 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
20339 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
20340 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
20341 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
20342 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
20343 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
20344 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
20345
20346 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20347 }
20348 else if(type == "RP")
20349 {
20350 // q_{m*n,0}:
20351 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20352 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20353 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20354 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20355 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
20356 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
20357 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
20358 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
20359
20360 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20361 }
20362 if(type == "POI")
20363 {
20364 // p_{m*n,0}:
20365 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20366 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20367 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20368 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20369
20370 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20371
20372 t = 1; // typeFlag = RP or POI
20373 }
20374 else if(type == "RP")
20375 {
20376 // p_{m*n,0} = q_{m*n,0}:
20377 p1n0kRe = q1n0kRe;
20378 p1n0kIm = q1n0kIm;
20379
20380 mp = mq;
20381
20382 t = 0; // typeFlag = RP or POI
20383 }
20384
20385 // <<cos n(psi1)>>:
20386 Double_t cosP1nPsi = 0.;
20387 if(mp)
20388 {
20389 cosP1nPsi = p1n0kRe/mp;
20390
20391 // fill profile for <<cos n(psi1)>>:
20392 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi,mp);
20393 // histogram to store <cos n(psi1)> e-b-e (needed in some other methods):
20394 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][0]->SetBinContent(b,cosP1nPsi);
20395 } // end of if(mp)
20396
20397 // <<cos n(psi1+phi2)>>:
20398 Double_t cosP1nPsiP1nPhi = 0.;
20399 if(mp*dMult-mq)
20400 {
20401 cosP1nPsiP1nPhi = (p1n0kRe*dReQ1n-p1n0kIm*dImQ1n-q2n0kRe)/(mp*dMult-mq);
20402 // fill profile for <<sin n(psi1+phi2)>>:
20403 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsiP1nPhi,mp*dMult-mq);
20404 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20405 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][1]->SetBinContent(b,cosP1nPsiP1nPhi);
20406 } // end of if(mp*dMult-mq)
20407
20408 // <<cos n(psi1+phi2-phi3)>>:
20409 Double_t cosP1nPsi1P1nPhi2MPhi3 = 0.;
20410 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20411 {
20412 cosP1nPsi1P1nPhi2MPhi3 = (p1n0kRe*(pow(dImQ1n,2.)+pow(dReQ1n,2.)-dMult)
20413 - 1.*(q2n0kRe*dReQ1n+q2n0kIm*dImQ1n)
20414 - mq*dReQ1n+2.*q1n0kRe)
20415 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20416 // fill profile for <<sin n(psi1+phi2)>>:
20417 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1P1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20418 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20419 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][2]->SetBinContent(b,cosP1nPsi1P1nPhi2MPhi3);
20420 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20421
20422 // <<cos n(psi1-phi2-phi3)>>:
20423 Double_t cosP1nPsi1M1nPhi2MPhi3 = 0.;
20424 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20425 {
20426 cosP1nPsi1M1nPhi2MPhi3 = (p1n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))+2.*p1n0kIm*dReQ1n*dImQ1n
20427 - 1.*(p1n0kRe*dReQ2n+p1n0kIm*dImQ2n)
20428 - 2.*mq*dReQ1n+2.*q1n0kRe)
20429 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20430 // fill profile for <<sin n(psi1+phi2)>>:
20431 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1M1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20432 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20433 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][3]->SetBinContent(b,cosP1nPsi1M1nPhi2MPhi3);
20434 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20435 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20436
20437} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTerms(TString type, TString ptOrEta)
20438
e1d101a6 20439//=========================================================================================================================
489d5531 20440
489d5531 20441void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUADiffFlow(TString type, TString ptOrEta)
20442{
1268c371 20443 // Transfer profiles into histogams and correctly propagate the error.
489d5531 20444
2a98ceb8 20445 Int_t t = 0; // type flag
20446 Int_t pe = 0; // ptEta flag
489d5531 20447
20448 if(type == "RP")
20449 {
20450 t = 0;
20451 } else if(type == "POI")
20452 {
20453 t = 1;
20454 }
20455
20456 if(ptOrEta == "Pt")
20457 {
20458 pe = 0;
20459 } else if(ptOrEta == "Eta")
20460 {
20461 pe = 1;
20462 }
20463
20464 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20465 //Double_t minPtEta[2] = {fPtMin,fEtaMin};
20466 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20467 //Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20468
20469 for(Int_t sc=0;sc<2;sc++) // sin or cos
20470 {
20471 for(Int_t cti=0;cti<9;cti++) // correction term index
20472 {
20473 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20474 {
20475 Double_t correctionTerm = fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]->GetBinContent(b);
20476 fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti]->SetBinContent(b,correctionTerm);
20477 // to be improved (propagate error correctly)
20478 // ...
20479 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20480 } // correction term index
20481 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
20482
20483}// end of void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUADiffFlow(TString type, TString ptOrEta)
20484
e1d101a6 20485//=========================================================================================================================
489d5531 20486
489d5531 20487void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
20488{
1268c371 20489 // Calculate generalized differential flow cumulants (corrected for non-uniform acceptance).
20490
20491 // to be improved - propagate error also from non-isotropic terms
489d5531 20492
1268c371 20493 Int_t t = 0; // RP = 0, POI = 1
20494 Int_t pe = 0; // pt = 0, eta = 1
489d5531 20495
20496 if(type == "RP")
20497 {
1268c371 20498 t = 0;
489d5531 20499 } else if(type == "POI")
20500 {
1268c371 20501 t = 1;
489d5531 20502 }
20503
20504 if(ptOrEta == "Pt")
20505 {
1268c371 20506 pe = 0;
489d5531 20507 } else if(ptOrEta == "Eta")
20508 {
1268c371 20509 pe = 1;
489d5531 20510 }
1268c371 20511
20512 // Common:
489d5531 20513 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 20514 // 2-particle correlation:
20515 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
1268c371 20516 // sinus terms coming from reference flow:
489d5531 20517 Double_t sinP1nPhi = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(1); // <<sin(n*phi1)>>
20518 Double_t sinP1nPhi1P1nPhi2 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(2); // <<sin(n*(phi1+phi2))>>
20519 Double_t sinP1nPhi1M1nPhi2M1nPhi3 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(3); // <<sin(n*(phi1-phi2-phi3))>>
1268c371 20520 // cosinus terms coming from reference flow:
489d5531 20521 Double_t cosP1nPhi = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(1); // <<cos(n*phi1)>>
20522 Double_t cosP1nPhi1P1nPhi2 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(2); // <<cos(n*(phi1+phi2))>>
20523 Double_t cosP1nPhi1M1nPhi2M1nPhi3 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(3); // <<cos(n*(phi1-phi2-phi3))>>
20524
20525 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20526 {
20527 Double_t twoPrime = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b); // <<2'>>
20528 Double_t fourPrime = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b); // <<4'>>
20529 Double_t sinP1nPsi = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][0]->GetBinContent(b); // <<sin n(Psi)>>
20530 Double_t cosP1nPsi = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][0]->GetBinContent(b); // <<cos n(Psi)>>
20531 Double_t sinP1nPsi1P1nPhi2 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][1]->GetBinContent(b); // <<sin n(psi1+phi2)>>
20532 Double_t cosP1nPsi1P1nPhi2 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][1]->GetBinContent(b); // <<cos n(psi1+phi2)>>
20533 Double_t sinP1nPsi1P1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][2]->GetBinContent(b); // <<sin n(psi1+phi2-phi3)>>
20534 Double_t cosP1nPsi1P1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][2]->GetBinContent(b); // <<cos n(psi1+phi2-phi3)>>
20535 Double_t sinP1nPsi1M1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][3]->GetBinContent(b); // <<sin n(psi1-phi2-phi3)>>
20536 Double_t cosP1nPsi1M1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][3]->GetBinContent(b); // <<cos n(psi1-phi2-phi3)>>
1268c371 20537 // Generalized QC{2'}:
489d5531 20538 Double_t qc2Prime = twoPrime - sinP1nPsi*sinP1nPhi - cosP1nPsi*cosP1nPhi;
1268c371 20539 if(fApplyCorrectionForNUA)
20540 {
20541 fDiffFlowCumulants[t][pe][0]->SetBinContent(b,qc2Prime);
20542 }
20543 if(TMath::Abs(twoPrime)>0.)
20544 {
20545 fDiffFlowDetectorBias[t][pe][0]->SetBinContent(b,qc2Prime/twoPrime); // detector bias = generalized/isotropic cumulant.
20546 }
20547 // Generalized QC{4'}:
489d5531 20548 Double_t qc4Prime = fourPrime-2.*twoPrime*two
20549 - cosP1nPsi*cosP1nPhi1M1nPhi2M1nPhi3
20550 + sinP1nPsi*sinP1nPhi1M1nPhi2M1nPhi3
20551 - cosP1nPhi*cosP1nPsi1M1nPhi2M1nPhi3
20552 + sinP1nPhi*sinP1nPsi1M1nPhi2M1nPhi3
20553 - 2.*cosP1nPhi*cosP1nPsi1P1nPhi2M1nPhi3
20554 - 2.*sinP1nPhi*sinP1nPsi1P1nPhi2M1nPhi3
20555 - cosP1nPsi1P1nPhi2*cosP1nPhi1P1nPhi2
20556 - sinP1nPsi1P1nPhi2*sinP1nPhi1P1nPhi2
20557 + 2.*cosP1nPhi1P1nPhi2*(cosP1nPsi*cosP1nPhi-sinP1nPsi*sinP1nPhi)
20558 + 2.*sinP1nPhi1P1nPhi2*(cosP1nPsi*sinP1nPhi+sinP1nPsi*cosP1nPhi)
20559 + 4.*two*(cosP1nPsi*cosP1nPhi+sinP1nPsi*sinP1nPhi)
20560 + 2.*cosP1nPsi1P1nPhi2*(pow(cosP1nPhi,2.)-pow(sinP1nPhi,2.))
20561 + 4.*sinP1nPsi1P1nPhi2*cosP1nPhi*sinP1nPhi
20562 + 4.*twoPrime*(pow(cosP1nPhi,2.)+pow(sinP1nPhi,2.))
20563 - 6.*(pow(cosP1nPhi,2.)-pow(sinP1nPhi,2.))
20564 * (cosP1nPsi*cosP1nPhi-sinP1nPsi*sinP1nPhi)
20565 - 12.*cosP1nPhi*sinP1nPhi
20566 * (sinP1nPsi*cosP1nPhi+cosP1nPsi*sinP1nPhi);
1268c371 20567 if(fApplyCorrectionForNUA)
20568 {
20569 fDiffFlowCumulants[t][pe][1]->SetBinContent(b,qc4Prime);
20570 }
20571 if(TMath::Abs(fourPrime-2.*twoPrime*two)>0.)
20572 {
20573 fDiffFlowDetectorBias[t][pe][1]->SetBinContent(b,qc4Prime/(fourPrime-2.*twoPrime*two)); // detector bias = generalized/isotropic cumulant.
20574 }
489d5531 20575 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
20576
20577} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
20578
1268c371 20579//==================================================================================================================================
489d5531 20580
20581void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta)
20582{
20583 // Calculate differential flow corrected for non-uniform acceptance.
20584
1268c371 20585 // to be improved: eventually I will have to access here masured correlations and NUA terms
20586 // instead of cumulants in order to propagate statistical error correctly also
20587 // to NUA terms (propagating errors directly from cumulants is WRONG for
20588 // differential flow becuase that doesn't account at all cross-covariance terms)
489d5531 20589
1268c371 20590 // REMARK: When NUA correction is apllied error for differential flow DOES NOT get corrected,
20591 // i.e. only value is being corrected, error is still the one relevant for isotropic
20592 // case. This eventually will be resolved.
20593
20594
20595 Int_t t = 0; // RP or POI
20596 Int_t pe = 0; // pt or eta
489d5531 20597
20598 if(type == "RP")
20599 {
1268c371 20600 t = 0;
489d5531 20601 } else if(type == "POI")
20602 {
1268c371 20603 t = 1;
20604 }
489d5531 20605 if(ptOrEta == "Pt")
20606 {
1268c371 20607 pe = 0;
489d5531 20608 } else if(ptOrEta == "Eta")
20609 {
1268c371 20610 pe = 1;
489d5531 20611 }
20612
1268c371 20613 // Common:
489d5531 20614 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
1268c371 20615 // Reference Q-cumulants
20616 Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); // QC{2}
20617 Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); // QC{4}
20618 // Loop over pt or eta bins:
489d5531 20619 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20620 {
1268c371 20621 // Differential Q-cumulants:
20622 Double_t qc2Prime = fDiffFlowCumulants[t][pe][0]->GetBinContent(b); // QC{2'}
20623 Double_t qc4Prime = fDiffFlowCumulants[t][pe][1]->GetBinContent(b); // QC{4'}
489d5531 20624 // v'{2}:
1268c371 20625 if(qc2>0.)
489d5531 20626 {
1268c371 20627 Double_t v2Prime = qc2Prime/pow(qc2,0.5);
20628 if(TMath::Abs(v2Prime)>0.){fDiffFlow[t][pe][0]->SetBinContent(b,v2Prime);}
489d5531 20629 }
489d5531 20630 // v'{4}:
1268c371 20631 if(qc4<0.)
489d5531 20632 {
1268c371 20633 Double_t v4Prime = -qc4Prime/pow(-qc4,3./4.);
20634 if(TMath::Abs(v4Prime)>0.){fDiffFlow[t][pe][1]->SetBinContent(b,v4Prime);}
489d5531 20635 }
20636 } // end of for(Int_t b=1;b<=fnBinsPtEta[pe];b++)
20637
20638} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta);
20639
e1d101a6 20640//=========================================================================================================================
489d5531 20641
0328db2d 20642void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 20643{
20644 // Evaluate with nested loops multiparticle correlations for integrated flow (without using the particle weights).
20645
20646 // Remark: Results are stored in profile fIntFlowDirectCorrelations whose binning is organized as follows:
20647 //
20648 // 1st bin: <2>_{1n|1n} = two1n1n = cos(n*(phi1-phi2))>
20649 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n*(phi1-phi2))>
20650 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n*(phi1-phi2))>
20651 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n*(phi1-phi2))>
20652 // 5th bin: ---- EMPTY ----
20653 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n*(2.*phi1-phi2-phi3))>
20654 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n*(3.*phi1-2.*phi2-phi3))>
20655 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
20656 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n*(4.*phi1-3.*phi2-phi3))>
20657 // 10th bin: ---- EMPTY ----
20658 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n*(phi1+phi2-phi3-phi4))>
20659 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(2.*n*(phi1+phi2-phi3-phi4))>
20660 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
20661 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n*(3.*phi1-phi2-phi3-phi4))>
20662 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
20663 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
20664 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n*(3.*phi1+phi2-3.*phi3-phi4))>
20665 // 18th bin: ---- EMPTY ----
20666 // 19th bin: <5>_{2n|1n,1n,1n,1n} = five2n1n1n1n1n = <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
20667 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
20668 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
20669 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
20670 // 23rd bin: ---- EMPTY ----
20671 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
20672 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
20673 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
20674 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
20675 // 28th bin: ---- EMPTY ----
20676 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
20677 // 30th bin: ---- EMPTY ----
20678 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
8ed4edc7 20679 // 32nd bin: ---- EMPTY ----
b84464d3 20680 // Extra correlations for 3p TY study:
8ed4edc7 20681 // 33rd bin: <4>_{4n,2n|3n,3n}= four4n2n3n3n = <cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4))>
b84464d3 20682 // 34th bin: <5>_{3n,3n|2n,2n,2n} = five3n3n2n2n2n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
20683 // Extra correlations for 6p TY study:
20684 // 35th bin: <2>_{5n|5n} = two5n5n = <cos(5n*(phi1-phi2)> T
20685 // 36th bin: <2>_{6n|6n} = two6n6n = <cos(6n*(phi1-phi2)> T
20686 // 37th bin: <3>_{5n|3n,2n} = three5n3n2n = <cos(n*(5*phi1-3*phi2-2*phi3)>
20687 // 38th bin: <3>_{5n|4n,1n} = three5n4n1n = <cos(n*(5*phi1-4*phi2-1*phi3)>
20688 // 39th bin: <3>_{6n|3n,3n} = three6n3n3n = <cos(n*(6*phi1-3*phi2-3*phi3)> T
20689 // 40th bin: <3>_{6n|4n,2n} = three6n4n2n = <cos(n*(6*phi1-4*phi2-2*phi3)> T
20690 // 41st bin: <3>_{6n|5n,1n} = three6n5n1n = <cos(n*(6*phi1-5*phi2-1*phi3)>
20691 // 42nd bin: <4>_{6n|3n,2n,1n} = four6n3n2n1n = <cos(n*(6*phi1-3*phi2-2*phi3-1*phi4)>
20692 // 43rd bin: <4>_{3n,2n|3n,2n} = four3n2n3n2n = <cos(n*(3*phi1+2*phi2-3*phi3-2*phi4)>
20693 // 44th bin: <4>_{4n,1n|3n,2n} = four4n1n3n2n = <cos(n*(4*phi1+1*phi2-3*phi3-2*phi4)>
20694 // 45th bin: <4>_{3n,3n|3n,3n} = four3n3n3n3n = <cos(3.*n*(phi1+phi2-phi3-phi4))> T
20695 // 46th bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n*(4*phi1+2*phi2-3*phi3-3*phi4)>
20696 // 47th bin: <4>_{5n,1n|3n,3n} = four5n1n3n3n = <cos(n*(5*phi1+1*phi2-3*phi3-3*phi4)>
20697 // 48th bin: <4>_{4n,2n|4n,2n} = four4n2n4n2n = <cos(n*(4*phi1+2*phi2-4*phi3-2*phi4)> T
20698 // 49th bin: <4>_{5n,1n|4n,2n} = four5n1n4n2n = <cos(n*(5*phi1+1*phi2-4*phi3-2*phi4)>
20699 // 50th bin: <4>_{5n|3n,1n,1n} = four5n3n1n1n = <cos(n*(5*phi1-3*phi2-1*phi3-1*phi4)>
20700 // 51st bin: <4>_{5n|2n,2n,1n} = four5n2n2n1n = <cos(n*(5*phi1-2*phi2-2*phi3-1*phi4)>
20701 // 52nd bin: <4>_{5n,1n|5n,1n} = four5n1n5n1n = <cos(n*(5*phi1+1*phi2-5*phi3-1*phi4)>
20702 // 53rd bin: <5>_{3n,3n|3n,2n,1n} = four3n3n3n2n1n = <cos(n*(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
20703 // 54th bin: <5>_{4n,2n|3n,2n,1n} = four4n2n3n2n1n = <cos(n*(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
20704 // 55th bin: <5>_{3n,2n|3n,1n,1n} = four3n2n3n1n1n = <cos(n*(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
20705 // 56th bin: <5>_{3n,2n|2n,2n,1n} = four3n2n2n2n1n = <cos(n*(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
20706 // 57th bin: <5>_{5n,1n|3n,2n,1n} = four5n1n3n2n1n = <cos(n*(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
20707 // 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 20708
489d5531 20709 Int_t nPrim = anEvent->NumberOfTracks();
20710 AliFlowTrackSimple *aftsTrack = NULL;
20711 Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
20712 Int_t n = fHarmonic;
20713 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 20714 Double_t dMult = (*fSpk)(0,0);
489d5531 20715 cout<<endl;
20716 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
20717 if(dMult<2)
20718 {
20719 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
20720 } else if (dMult>fMaxAllowedMultiplicity)
20721 {
20722 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
20723 } else
20724 {
20725 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
20726 }
20727
20728 // 2-particle correlations:
20729 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
20730 {
20731 for(Int_t i1=0;i1<nPrim;i1++)
20732 {
20733 aftsTrack=anEvent->GetTrack(i1);
20734 if(!(aftsTrack->InRPSelection())) continue;
20735 phi1=aftsTrack->Phi();
20736 for(Int_t i2=0;i2<nPrim;i2++)
20737 {
20738 if(i2==i1)continue;
20739 aftsTrack=anEvent->GetTrack(i2);
20740 if(!(aftsTrack->InRPSelection())) continue;
20741 phi2=aftsTrack->Phi();
20742 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
20743 // fill the profile with 2-p correlations:
b84464d3 20744 fIntFlowDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),1.); // <cos(n*(phi1-phi2))>
20745 fIntFlowDirectCorrelations->Fill(1.5,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
20746 fIntFlowDirectCorrelations->Fill(2.5,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
20747 fIntFlowDirectCorrelations->Fill(3.5,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>
20748 fIntFlowDirectCorrelations->Fill(34.5,cos(5.*n*(phi1-phi2)),1.); // <cos(5n*(phi1-phi2))>
20749 fIntFlowDirectCorrelations->Fill(35.5,cos(6.*n*(phi1-phi2)),1.); // <cos(6n*(phi1-phi2))>
489d5531 20750 } // end of for(Int_t i2=0;i2<nPrim;i2++)
20751 } // end of for(Int_t i1=0;i1<nPrim;i1++)
20752 } // end of if(nPrim>=2)
20753
20754 // 3-particle correlations:
20755 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
20756 {
20757 for(Int_t i1=0;i1<nPrim;i1++)
20758 {
20759 aftsTrack=anEvent->GetTrack(i1);
20760 if(!(aftsTrack->InRPSelection())) continue;
20761 phi1=aftsTrack->Phi();
20762 for(Int_t i2=0;i2<nPrim;i2++)
20763 {
20764 if(i2==i1)continue;
20765 aftsTrack=anEvent->GetTrack(i2);
20766 if(!(aftsTrack->InRPSelection())) continue;
20767 phi2=aftsTrack->Phi();
20768 for(Int_t i3=0;i3<nPrim;i3++)
20769 {
20770 if(i3==i1||i3==i2)continue;
20771 aftsTrack=anEvent->GetTrack(i3);
20772 if(!(aftsTrack->InRPSelection())) continue;
20773 phi3=aftsTrack->Phi();
20774 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
20775 // fill the profile with 3-p correlations:
b84464d3 20776 fIntFlowDirectCorrelations->Fill(5.,cos(2.*n*phi1-n*(phi2+phi3)),1.); //<3>_{2n|nn,n}
20777 fIntFlowDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.); //<3>_{3n|2n,n}
20778 fIntFlowDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); //<3>_{4n|2n,2n}
20779 fIntFlowDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),1.); //<3>_{4n|3n,n}
20780 fIntFlowDirectCorrelations->Fill(36.5,cos(5.*n*phi1-3.*n*phi2-2.*n*phi3),1.); //<3>_{5n|3n,2n}
20781 fIntFlowDirectCorrelations->Fill(37.5,cos(5.*n*phi1-4.*n*phi2-1.*n*phi3),1.); //<3>_{5n|4n,1n}
20782 fIntFlowDirectCorrelations->Fill(38.5,cos(6.*n*phi1-3.*n*phi2-3.*n*phi3),1.); //<3>_{6n|3n,3n}
20783 fIntFlowDirectCorrelations->Fill(39.5,cos(6.*n*phi1-4.*n*phi2-2.*n*phi3),1.); //<3>_{6n|4n,2n}
20784 fIntFlowDirectCorrelations->Fill(40.5,cos(6.*n*phi1-5.*n*phi2-1.*n*phi3),1.); //<3>_{6n|5n,1n}
489d5531 20785 } // end of for(Int_t i3=0;i3<nPrim;i3++)
20786 } // end of for(Int_t i2=0;i2<nPrim;i2++)
20787 } // end of for(Int_t i1=0;i1<nPrim;i1++)
20788 } // end of if(nPrim>=3)
20789
20790 // 4-particle correlations:
20791 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
20792 {
20793 for(Int_t i1=0;i1<nPrim;i1++)
20794 {
20795 aftsTrack=anEvent->GetTrack(i1);
20796 if(!(aftsTrack->InRPSelection())) continue;
20797 phi1=aftsTrack->Phi();
20798 for(Int_t i2=0;i2<nPrim;i2++)
20799 {
20800 if(i2==i1)continue;
20801 aftsTrack=anEvent->GetTrack(i2);
20802 if(!(aftsTrack->InRPSelection())) continue;
20803 phi2=aftsTrack->Phi();
20804 for(Int_t i3=0;i3<nPrim;i3++)
20805 {
20806 if(i3==i1||i3==i2)continue;
20807 aftsTrack=anEvent->GetTrack(i3);
20808 if(!(aftsTrack->InRPSelection())) continue;
20809 phi3=aftsTrack->Phi();
20810 for(Int_t i4=0;i4<nPrim;i4++)
20811 {
20812 if(i4==i1||i4==i2||i4==i3)continue;
20813 aftsTrack=anEvent->GetTrack(i4);
20814 if(!(aftsTrack->InRPSelection())) continue;
20815 phi4=aftsTrack->Phi();
20816 if(nPrim==4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush;
20817 // fill the profile with 4-p correlations:
20818 fIntFlowDirectCorrelations->Fill(10.,cos(n*phi1+n*phi2-n*phi3-n*phi4),1.); // <4>_{n,n|n,n}
20819 fIntFlowDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),1.); // <4>_{2n,n|2n,n}
20820 fIntFlowDirectCorrelations->Fill(12.,cos(2.*n*phi1+2*n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{2n,2n|2n,2n}
20821 fIntFlowDirectCorrelations->Fill(13.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),1.); // <4>_{3n|n,n,n}
20822 fIntFlowDirectCorrelations->Fill(14.,cos(3.*n*phi1+n*phi2-3.*n*phi3-n*phi4),1.); // <4>_{3n,n|3n,n}
20823 fIntFlowDirectCorrelations->Fill(15.,cos(3.*n*phi1+n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{3n,n|2n,2n}
20824 fIntFlowDirectCorrelations->Fill(16.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),1.); // <4>_{4n|2n,n,n}
b84464d3 20825 fIntFlowDirectCorrelations->Fill(32.,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
20826 fIntFlowDirectCorrelations->Fill(41.5,cos(n*(6.*phi1-3.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{6n|3n,2n,1n}
20827 fIntFlowDirectCorrelations->Fill(42.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{3n,2n|3n,2n}
20828 fIntFlowDirectCorrelations->Fill(43.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{4n,1n|3n,2n}
20829 fIntFlowDirectCorrelations->Fill(44.5,cos(n*(3.*phi1+3.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{3n,3n|3n,3n}
20830 fIntFlowDirectCorrelations->Fill(45.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
20831 fIntFlowDirectCorrelations->Fill(46.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{5n,1n|3n,3n}
20832 fIntFlowDirectCorrelations->Fill(47.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{4n,2n|4n,2n}
20833 fIntFlowDirectCorrelations->Fill(48.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{5n,1n|4n,2n}
20834 fIntFlowDirectCorrelations->Fill(49.5,cos(n*(5.*phi1-3.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{5n|3n,1n,1n}
20835 fIntFlowDirectCorrelations->Fill(50.5,cos(n*(5.*phi1-2.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{5n|2n,2n,1n}
403e3389 20836 fIntFlowDirectCorrelations->Fill(51.5,cos(n*(5.*phi1+1.*phi2-5.*phi3-1.*phi4)),1.); // <4>_{5n,1n|5n,1n}
20837 fIntFlowDirectCorrelations->Fill(58.5,cos(n*(6.*phi1-4.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{6n|4n,1n,1n}
20838 fIntFlowDirectCorrelations->Fill(59.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{6n|2n,2n,2n}
489d5531 20839 } // end of for(Int_t i4=0;i4<nPrim;i4++)
20840 } // end of for(Int_t i3=0;i3<nPrim;i3++)
20841 } // end of for(Int_t i2=0;i2<nPrim;i2++)
20842 } // end of for(Int_t i1=0;i1<nPrim;i1++)
20843 } // end of if(nPrim>=)
20844
20845 // 5-particle correlations:
20846 if(nPrim>=5 && nPrim<=fMaxAllowedMultiplicity)
20847 {
20848 for(Int_t i1=0;i1<nPrim;i1++)
20849 {
20850 aftsTrack=anEvent->GetTrack(i1);
20851 if(!(aftsTrack->InRPSelection())) continue;
20852 phi1=aftsTrack->Phi();
20853 for(Int_t i2=0;i2<nPrim;i2++)
20854 {
20855 if(i2==i1)continue;
20856 aftsTrack=anEvent->GetTrack(i2);
20857 if(!(aftsTrack->InRPSelection())) continue;
20858 phi2=aftsTrack->Phi();
20859 for(Int_t i3=0;i3<nPrim;i3++)
20860 {
20861 if(i3==i1||i3==i2)continue;
20862 aftsTrack=anEvent->GetTrack(i3);
20863 if(!(aftsTrack->InRPSelection())) continue;
20864 phi3=aftsTrack->Phi();
20865 for(Int_t i4=0;i4<nPrim;i4++)
20866 {
20867 if(i4==i1||i4==i2||i4==i3)continue;
20868 aftsTrack=anEvent->GetTrack(i4);
20869 if(!(aftsTrack->InRPSelection())) continue;
20870 phi4=aftsTrack->Phi();
20871 for(Int_t i5=0;i5<nPrim;i5++)
20872 {
20873 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
20874 aftsTrack=anEvent->GetTrack(i5);
20875 if(!(aftsTrack->InRPSelection())) continue;
20876 phi5=aftsTrack->Phi();
20877 if(nPrim==5) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<"\r"<<flush;
20878 // fill the profile with 5-p correlations:
b84464d3 20879 fIntFlowDirectCorrelations->Fill(18.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1.); // <5>_{2n,n|n,n,n}
20880 fIntFlowDirectCorrelations->Fill(19.,cos(2.*n*phi1+2.*n*phi2-2.*n*phi3-n*phi4-n*phi5),1.); // <5>_{2n,2n|2n,n,n}
20881 fIntFlowDirectCorrelations->Fill(20.,cos(3.*n*phi1+n*phi2-2.*n*phi3-n*phi4-n*phi5),1.); // <5>_{3n,n|2n,n,n}
20882 fIntFlowDirectCorrelations->Fill(21.,cos(4.*n*phi1-n*phi2-n*phi3-n*phi4-n*phi5),1.); // <5>_{4n|n,n,n,n}
20883 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}
20884 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}
20885 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}
20886 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}
20887 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}
20888 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 20889 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}
20890 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 20891 } // end of for(Int_t i5=0;i5<nPrim;i5++)
20892 } // end of for(Int_t i4=0;i4<nPrim;i4++)
20893 } // end of for(Int_t i3=0;i3<nPrim;i3++)
20894 } // end of for(Int_t i2=0;i2<nPrim;i2++)
20895 } // end of for(Int_t i1=0;i1<nPrim;i1++)
20896 } // end of if(nPrim>=5)
20897
20898 // 6-particle correlations:
20899 if(nPrim>=6 && nPrim<=fMaxAllowedMultiplicity)
20900 {
20901 for(Int_t i1=0;i1<nPrim;i1++)
20902 {
20903 aftsTrack=anEvent->GetTrack(i1);
20904 if(!(aftsTrack->InRPSelection())) continue;
20905 phi1=aftsTrack->Phi();
20906 for(Int_t i2=0;i2<nPrim;i2++)
20907 {
20908 if(i2==i1)continue;
20909 aftsTrack=anEvent->GetTrack(i2);
20910 if(!(aftsTrack->InRPSelection())) continue;
20911 phi2=aftsTrack->Phi();
20912 for(Int_t i3=0;i3<nPrim;i3++)
20913 {
20914 if(i3==i1||i3==i2)continue;
20915 aftsTrack=anEvent->GetTrack(i3);
20916 if(!(aftsTrack->InRPSelection())) continue;
20917 phi3=aftsTrack->Phi();
20918 for(Int_t i4=0;i4<nPrim;i4++)
20919 {
20920 if(i4==i1||i4==i2||i4==i3)continue;
20921 aftsTrack=anEvent->GetTrack(i4);
20922 if(!(aftsTrack->InRPSelection())) continue;
20923 phi4=aftsTrack->Phi();
20924 for(Int_t i5=0;i5<nPrim;i5++)
20925 {
20926 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
20927 aftsTrack=anEvent->GetTrack(i5);
20928 if(!(aftsTrack->InRPSelection())) continue;
20929 phi5=aftsTrack->Phi();
20930 for(Int_t i6=0;i6<nPrim;i6++)
20931 {
20932 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
20933 aftsTrack=anEvent->GetTrack(i6);
20934 if(!(aftsTrack->InRPSelection())) continue;
20935 phi6=aftsTrack->Phi();
20936 if(nPrim==6) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<"\r"<<flush;
20937 // fill the profile with 6-p correlations:
403e3389 20938 fIntFlowDirectCorrelations->Fill(23.,cos(n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6),1.); // <6>_{1n,1n,1n|1n,1n,1n}
20939 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}
20940 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}
20941 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 20942 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 20943 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 20944 } // end of for(Int_t i6=0;i6<nPrim;i6++)
20945 } // end of for(Int_t i5=0;i5<nPrim;i5++)
20946 } // end of for(Int_t i4=0;i4<nPrim;i4++)
20947 } // end of for(Int_t i3=0;i3<nPrim;i3++)
20948 } // end of for(Int_t i2=0;i2<nPrim;i2++)
20949 } // end of for(Int_t i1=0;i1<nPrim;i1++)
20950 } // end of if(nPrim>=6)
20951
20952 // 7-particle correlations:
20953 if(nPrim>=7 && nPrim<=fMaxAllowedMultiplicity)
20954 {
20955 for(Int_t i1=0;i1<nPrim;i1++)
20956 {
20957 aftsTrack=anEvent->GetTrack(i1);
20958 if(!(aftsTrack->InRPSelection())) continue;
20959 phi1=aftsTrack->Phi();
20960 for(Int_t i2=0;i2<nPrim;i2++)
20961 {
20962 if(i2==i1)continue;
20963 aftsTrack=anEvent->GetTrack(i2);
20964 if(!(aftsTrack->InRPSelection())) continue;
20965 phi2=aftsTrack->Phi();
20966 for(Int_t i3=0;i3<nPrim;i3++)
20967 {
20968 if(i3==i1||i3==i2)continue;
20969 aftsTrack=anEvent->GetTrack(i3);
20970 if(!(aftsTrack->InRPSelection())) continue;
20971 phi3=aftsTrack->Phi();
20972 for(Int_t i4=0;i4<nPrim;i4++)
20973 {
20974 if(i4==i1||i4==i2||i4==i3)continue;
20975 aftsTrack=anEvent->GetTrack(i4);
20976 if(!(aftsTrack->InRPSelection())) continue;
20977 phi4=aftsTrack->Phi();
20978 for(Int_t i5=0;i5<nPrim;i5++)
20979 {
20980 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
20981 aftsTrack=anEvent->GetTrack(i5);
20982 if(!(aftsTrack->InRPSelection())) continue;
20983 phi5=aftsTrack->Phi();
20984 for(Int_t i6=0;i6<nPrim;i6++)
20985 {
20986 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
20987 aftsTrack=anEvent->GetTrack(i6);
20988 if(!(aftsTrack->InRPSelection())) continue;
20989 phi6=aftsTrack->Phi();
20990 for(Int_t i7=0;i7<nPrim;i7++)
20991 {
20992 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
20993 aftsTrack=anEvent->GetTrack(i7);
20994 if(!(aftsTrack->InRPSelection())) continue;
20995 phi7=aftsTrack->Phi();
20996 if(nPrim==7) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<" "<<i7<<"\r"<<flush;
20997 // fill the profile with 7-p correlation:
20998 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}
20999 } // end of for(Int_t i7=0;i7<nPrim;i7++)
21000 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21001 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21002 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21003 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21004 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21005 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21006 } // end of if(nPrim>=7)
21007
21008 // 8-particle correlations:
21009 if(nPrim>=8 && nPrim<=fMaxAllowedMultiplicity)
21010 {
21011 for(Int_t i1=0;i1<nPrim;i1++)
21012 {
21013 aftsTrack=anEvent->GetTrack(i1);
21014 if(!(aftsTrack->InRPSelection())) continue;
21015 phi1=aftsTrack->Phi();
21016 for(Int_t i2=0;i2<nPrim;i2++)
21017 {
21018 if(i2==i1)continue;
21019 aftsTrack=anEvent->GetTrack(i2);
21020 if(!(aftsTrack->InRPSelection())) continue;
21021 phi2=aftsTrack->Phi();
21022 for(Int_t i3=0;i3<nPrim;i3++)
21023 {
21024 if(i3==i1||i3==i2)continue;
21025 aftsTrack=anEvent->GetTrack(i3);
21026 if(!(aftsTrack->InRPSelection())) continue;
21027 phi3=aftsTrack->Phi();
21028 for(Int_t i4=0;i4<nPrim;i4++)
21029 {
21030 if(i4==i1||i4==i2||i4==i3)continue;
21031 aftsTrack=anEvent->GetTrack(i4);
21032 if(!(aftsTrack->InRPSelection())) continue;
21033 phi4=aftsTrack->Phi();
21034 for(Int_t i5=0;i5<nPrim;i5++)
21035 {
21036 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21037 aftsTrack=anEvent->GetTrack(i5);
21038 if(!(aftsTrack->InRPSelection())) continue;
21039 phi5=aftsTrack->Phi();
21040 for(Int_t i6=0;i6<nPrim;i6++)
21041 {
21042 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21043 aftsTrack=anEvent->GetTrack(i6);
21044 if(!(aftsTrack->InRPSelection())) continue;
21045 phi6=aftsTrack->Phi();
21046 for(Int_t i7=0;i7<nPrim;i7++)
21047 {
21048 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
21049 aftsTrack=anEvent->GetTrack(i7);
21050 if(!(aftsTrack->InRPSelection())) continue;
21051 phi7=aftsTrack->Phi();
21052 for(Int_t i8=0;i8<nPrim;i8++)
21053 {
21054 if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)continue;
21055 aftsTrack=anEvent->GetTrack(i8);
21056 if(!(aftsTrack->InRPSelection())) continue;
21057 phi8=aftsTrack->Phi();
21058 cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<" "<<i7<<" "<<i8<<"\r"<<flush;
21059 // fill the profile with 8-p correlation:
21060 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}
21061 } // end of for(Int_t i8=0;i8<nPrim;i8++)
21062 } // end of for(Int_t i7=0;i7<nPrim;i7++)
21063 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21064 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21065 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21066 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21067 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21068 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21069 } // end of if(nPrim>=8)
21070
21071 cout<<endl;
21072
21073} // end of AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoops(AliFlowEventSimple* anEvent)
21074
e1d101a6 21075//================================================================================================================
21076
21077void AliFlowAnalysisWithQCumulants::EvaluateMixedHarmonicsWithNestedLoops(AliFlowEventSimple * const anEvent)
21078{
21079 // Evaluate with nested loops multi-particle correlations for mixed harmonics.
21080
21081 Int_t nPrim = anEvent->NumberOfTracks();
21082 AliFlowTrackSimple *aftsTrack = NULL;
21083 Double_t phi1=0.;
21084 Double_t phi2=0.;
21085 Double_t phi3=0.;
21086 Double_t phi4=0.;
21087 Double_t phi5=0.;
21088 /*Double_t phi6=0.;
21089 Double_t phi7=0.;
21090 Double_t phi8=0.;*/
21091 Int_t n = fHarmonic;
21092 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // TBI: is such casting safe in general?
21093 Double_t dMult = (*fSpk)(0,0);
21094 cout<<endl;
21095 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21096 if(dMult<2)
21097 {
21098 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21099 } else if (dMult>fMaxAllowedMultiplicity)
21100 {
21101 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21102 } else
21103 {
21104 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
21105 }
21106
21107 // 2-particle correlations:
21108 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21109 {
21110 for(Int_t i1=0;i1<nPrim;i1++)
21111 {
21112 aftsTrack=anEvent->GetTrack(i1);
21113 if(!(aftsTrack->InRPSelection())) continue;
21114 phi1=aftsTrack->Phi();
21115 for(Int_t i2=0;i2<nPrim;i2++)
21116 {
21117 if(i2==i1)continue;
21118 aftsTrack=anEvent->GetTrack(i2);
21119 if(!(aftsTrack->InRPSelection())) continue;
21120 phi2=aftsTrack->Phi();
21121 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21122 // Fill the profile fMixedHarmonicsNestedLoops with 2-p correlations:
21123 fMixedHarmonicsNestedLoops->Fill(0.5,cos(1.*n*(phi1-phi2)),1.); // <cos(1n*(phi1-phi2))>
21124 fMixedHarmonicsNestedLoops->Fill(1.5,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
21125 fMixedHarmonicsNestedLoops->Fill(2.5,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
21126 fMixedHarmonicsNestedLoops->Fill(3.5,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>
21127 fMixedHarmonicsNestedLoops->Fill(4.5,cos(5.*n*(phi1-phi2)),1.); // <cos(5n*(phi1-phi2))>
21128 fMixedHarmonicsNestedLoops->Fill(5.5,cos(6.*n*(phi1-phi2)),1.); // <cos(6n*(phi1-phi2))>
21129 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21130 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21131 } // end of if(nPrim>=2)
21132
21133 // 3-particle correlations:
21134 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21135 {
21136 for(Int_t i1=0;i1<nPrim;i1++)
21137 {
21138 aftsTrack=anEvent->GetTrack(i1);
21139 if(!(aftsTrack->InRPSelection())) continue;
21140 phi1=aftsTrack->Phi();
21141 for(Int_t i2=0;i2<nPrim;i2++)
21142 {
21143 if(i2==i1)continue;
21144 aftsTrack=anEvent->GetTrack(i2);
21145 if(!(aftsTrack->InRPSelection())) continue;
21146 phi2=aftsTrack->Phi();
21147 for(Int_t i3=0;i3<nPrim;i3++)
21148 {
21149 if(i3==i1||i3==i2)continue;
21150 aftsTrack=anEvent->GetTrack(i3);
21151 if(!(aftsTrack->InRPSelection())) continue;
21152 phi3=aftsTrack->Phi();
21153 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
21154 // Fill the profile fMixedHarmonicsNestedLoops with 3-p correlations:
21155 fMixedHarmonicsNestedLoops->Fill( 6.5,cos(2.*n*phi1-n*(phi2+phi3)),1.); // <3>_{2n|1n,1n}
21156 fMixedHarmonicsNestedLoops->Fill( 7.5,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); // <3>_{4n|2n,2n}
21157 fMixedHarmonicsNestedLoops->Fill( 8.5,cos(6.*n*phi1-3.*n*phi2-3.*n*phi3),1.); // <3>_{6n|3n,3n}
21158 fMixedHarmonicsNestedLoops->Fill(10.5,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.); // <3>_{3n|2n,1n}
21159 fMixedHarmonicsNestedLoops->Fill(11.5,cos(4.*n*phi1-3.*n*phi2-1.*n*phi3),1.); // <3>_{4n|3n,1n}
21160 fMixedHarmonicsNestedLoops->Fill(12.5,cos(5.*n*phi1-3.*n*phi2-2.*n*phi3),1.); // <3>_{5n|3n,2n}
21161 fMixedHarmonicsNestedLoops->Fill(13.5,cos(5.*n*phi1-4.*n*phi2-1.*n*phi3),1.); // <3>_{5n|4n,1n}
21162 fMixedHarmonicsNestedLoops->Fill(14.5,cos(6.*n*phi1-4.*n*phi2-2.*n*phi3),1.); // <3>_{6n|4n,2n}
21163 fMixedHarmonicsNestedLoops->Fill(15.5,cos(6.*n*phi1-5.*n*phi2-1.*n*phi3),1.); // <3>_{6n|5n,1n}
21164 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21165 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21166 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21167 } // end of if(nPrim>=3)
21168
21169 // 4-particle correlations:
21170 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
21171 {
21172 for(Int_t i1=0;i1<nPrim;i1++)
21173 {
21174 aftsTrack=anEvent->GetTrack(i1);
21175 if(!(aftsTrack->InRPSelection())) continue;
21176 phi1=aftsTrack->Phi();
21177 for(Int_t i2=0;i2<nPrim;i2++)
21178 {
21179 if(i2==i1)continue;
21180 aftsTrack=anEvent->GetTrack(i2);
21181 if(!(aftsTrack->InRPSelection())) continue;
21182 phi2=aftsTrack->Phi();
21183 for(Int_t i3=0;i3<nPrim;i3++)
21184 {
21185 if(i3==i1||i3==i2)continue;
21186 aftsTrack=anEvent->GetTrack(i3);
21187 if(!(aftsTrack->InRPSelection())) continue;
21188 phi3=aftsTrack->Phi();
21189 for(Int_t i4=0;i4<nPrim;i4++)
21190 {
21191 if(i4==i1||i4==i2||i4==i3)continue;
21192 aftsTrack=anEvent->GetTrack(i4);
21193 if(!(aftsTrack->InRPSelection())) continue;
21194 phi4=aftsTrack->Phi();
21195 if(nPrim==4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush;
21196 // fill the profile with 4-p correlations:
21197 fMixedHarmonicsNestedLoops->Fill(16.5,cos(1.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{1n,1n|1n,1n}
21198 fMixedHarmonicsNestedLoops->Fill(17.5,cos(2.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{2n,2n|2n,2n}
21199 fMixedHarmonicsNestedLoops->Fill(18.5,cos(3.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{3n,3n|3n,3n}
21200 fMixedHarmonicsNestedLoops->Fill(19.5,cos(4.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{4n,4n|4n,4n}
21201 fMixedHarmonicsNestedLoops->Fill(20.5,cos(5.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{5n,5n|5n,5n}
21202 fMixedHarmonicsNestedLoops->Fill(21.5,cos(6.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{6n,6n|6n,6n}
21203 fMixedHarmonicsNestedLoops->Fill(23.5,cos(n*(2.*phi1+1.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{2n,1n|2n,1n}
21204 fMixedHarmonicsNestedLoops->Fill(24.5,cos(n*(3.*phi1+1.*phi2-3.*phi3-1.*phi4)),1.); // <4>_{3n,1n|3n,1n}
21205 fMixedHarmonicsNestedLoops->Fill(25.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{3n,2n|3n,2n}
21206 fMixedHarmonicsNestedLoops->Fill(26.5,cos(n*(4.*phi1+1.*phi2-4.*phi3-1.*phi4)),1.); // <4>_{4n,1n|4n,1n}
21207 fMixedHarmonicsNestedLoops->Fill(27.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{4n,2n|4n,2n}
21208 fMixedHarmonicsNestedLoops->Fill(28.5,cos(n*(4.*phi1+3.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{4n,3n|4n,3n}
21209 fMixedHarmonicsNestedLoops->Fill(29.5,cos(n*(5.*phi1+1.*phi2-5.*phi3-1.*phi4)),1.); // <4>_{5n,1n|5n,1n}
21210 fMixedHarmonicsNestedLoops->Fill(30.5,cos(n*(5.*phi1+2.*phi2-5.*phi3-2.*phi4)),1.); // <4>_{5n,2n|5n,2n}
21211 fMixedHarmonicsNestedLoops->Fill(31.5,cos(n*(5.*phi1+3.*phi2-5.*phi3-3.*phi4)),1.); // <4>_{5n,3n|5n,3n}
21212 fMixedHarmonicsNestedLoops->Fill(32.5,cos(n*(5.*phi1+4.*phi2-5.*phi3-4.*phi4)),1.); // <4>_{5n,4n|5n,4n}
21213 fMixedHarmonicsNestedLoops->Fill(33.5,cos(n*(6.*phi1+1.*phi2-6.*phi3-1.*phi4)),1.); // <4>_{6n,1n|6n,1n}
21214 fMixedHarmonicsNestedLoops->Fill(34.5,cos(n*(6.*phi1+2.*phi2-6.*phi3-2.*phi4)),1.); // <4>_{6n,2n|6n,2n}
21215 fMixedHarmonicsNestedLoops->Fill(35.5,cos(n*(6.*phi1+3.*phi2-6.*phi3-3.*phi4)),1.); // <4>_{6n,3n|6n,3n}
21216 fMixedHarmonicsNestedLoops->Fill(36.5,cos(n*(6.*phi1+4.*phi2-6.*phi3-4.*phi4)),1.); // <4>_{6n,4n|6n,4n}
21217 fMixedHarmonicsNestedLoops->Fill(37.5,cos(n*(6.*phi1+5.*phi2-6.*phi3-5.*phi4)),1.); // <4>_{6n,5n|6n,5n}
21218 fMixedHarmonicsNestedLoops->Fill(39.5,cos(n*(3.*phi1-1.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{3n|1n,1n,1n}
21219 fMixedHarmonicsNestedLoops->Fill(40.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{6n|2n,2n,2n}
21220 fMixedHarmonicsNestedLoops->Fill(42.5,cos(n*(3.*phi1+1.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{3n,1n|2n,2n}
21221 fMixedHarmonicsNestedLoops->Fill(43.5,cos(n*(4.*phi1-2.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{4n|2n,1n,1n}
21222 fMixedHarmonicsNestedLoops->Fill(44.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
21223 fMixedHarmonicsNestedLoops->Fill(45.5,cos(n*(5.*phi1-2.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{5n|2n,2n,1n}
21224 fMixedHarmonicsNestedLoops->Fill(46.5,cos(n*(5.*phi1-3.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{5n|3n,1n,1n}
21225 fMixedHarmonicsNestedLoops->Fill(47.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{5n,1n|3n,3n}
21226 fMixedHarmonicsNestedLoops->Fill(48.5,cos(n*(5.*phi1+3.*phi2-4.*phi3-4.*phi4)),1.); // <4>_{5n,3n|4n,4n}
21227 fMixedHarmonicsNestedLoops->Fill(49.5,cos(n*(6.*phi1-4.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{6n|4n,1n,1n}
21228 fMixedHarmonicsNestedLoops->Fill(50.5,cos(n*(6.*phi1+2.*phi2-4.*phi3-4.*phi4)),1.); // <4>_{6n,2n|4n,4n}
21229 fMixedHarmonicsNestedLoops->Fill(51.5,cos(n*(6.*phi1+4.*phi2-5.*phi3-5.*phi4)),1.); // <4>_{6n,4n|5n,5n}
21230 fMixedHarmonicsNestedLoops->Fill(53.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{4n,1n|3n,2n}
21231 fMixedHarmonicsNestedLoops->Fill(54.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{5n,1n|4n,2n}
21232 fMixedHarmonicsNestedLoops->Fill(55.5,cos(n*(5.*phi1+2.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{5n,2n|4n,3n}
21233 fMixedHarmonicsNestedLoops->Fill(56.5,cos(n*(6.*phi1+1.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{6n,1n|4n,3n}
21234 fMixedHarmonicsNestedLoops->Fill(57.5,cos(n*(6.*phi1+1.*phi2-5.*phi3-2.*phi4)),1.); // <4>_{6n,1n|5n,2n}
21235 fMixedHarmonicsNestedLoops->Fill(58.5,cos(n*(6.*phi1-3.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{6n|3n,2n,1n}
21236 fMixedHarmonicsNestedLoops->Fill(59.5,cos(n*(6.*phi1+2.*phi2-5.*phi3-3.*phi4)),1.); // <4>_{6n,2n|5n,3n}
21237 fMixedHarmonicsNestedLoops->Fill(60.5,cos(n*(6.*phi1+3.*phi2-5.*phi3-4.*phi4)),1.); // <4>_{6n,3n|5n,4n}
21238 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21239 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21240 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21241 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21242 } // end of if(nPrim>=)
21243
21244 // 5-particle correlations:
21245 if(nPrim>=5 && nPrim<=fMaxAllowedMultiplicity)
21246 {
21247 for(Int_t i1=0;i1<nPrim;i1++)
21248 {
21249 aftsTrack=anEvent->GetTrack(i1);
21250 if(!(aftsTrack->InRPSelection())) continue;
21251 phi1=aftsTrack->Phi();
21252 for(Int_t i2=0;i2<nPrim;i2++)
21253 {
21254 if(i2==i1)continue;
21255 aftsTrack=anEvent->GetTrack(i2);
21256 if(!(aftsTrack->InRPSelection())) continue;
21257 phi2=aftsTrack->Phi();
21258 for(Int_t i3=0;i3<nPrim;i3++)
21259 {
21260 if(i3==i1||i3==i2)continue;
21261 aftsTrack=anEvent->GetTrack(i3);
21262 if(!(aftsTrack->InRPSelection())) continue;
21263 phi3=aftsTrack->Phi();
21264 for(Int_t i4=0;i4<nPrim;i4++)
21265 {
21266 if(i4==i1||i4==i2||i4==i3)continue;
21267 aftsTrack=anEvent->GetTrack(i4);
21268 if(!(aftsTrack->InRPSelection())) continue;
21269 phi4=aftsTrack->Phi();
21270 for(Int_t i5=0;i5<nPrim;i5++)
21271 {
21272 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21273 aftsTrack=anEvent->GetTrack(i5);
21274 if(!(aftsTrack->InRPSelection())) continue;
21275 phi5=aftsTrack->Phi();
21276 if(nPrim==5) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<"\r"<<flush;
21277 // fill the profile with 5-p correlations:
21278 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))>
21279 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))>
21280 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))>
21281 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))>
21282 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))>
21283 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))>
21284 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))>
21285 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))>
21286 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))>
21287 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))>
21288 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))>
21289 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))>
21290 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))>
21291 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))>
21292 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))>
21293 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))>
21294 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))>
21295 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))>
21296 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))>
21297 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))>
21298 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))>
21299 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))>
21300 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))>
21301 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))>
21302 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))>
21303 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))>
21304 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))>
21305 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))>
21306 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))>
21307 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))>
21308 //fMixedHarmonicsNestedLoops->Fill(91.5,-44.,1.); // empty
21309 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))>
21310 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))>
21311 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))>
21312 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))>
21313 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))>
21314 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))>
21315 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))>
21316 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))>
21317 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))>
21318 //fMixedHarmonicsNestedLoops->Fill(101.5,-44.,1.); // empty
21319 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))>
21320 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))>
21321 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))>
21322 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))>
21323 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))>
21324 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))>
21325 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))>
21326 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))>
21327 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))>
21328 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))>
21329 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))>
21330 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))>
21331 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))>
21332 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))>
21333 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))>
21334 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))>
21335 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))>
21336 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))>
21337 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))>
21338 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))>
21339 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))>
21340 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))>
21341 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))>
21342 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))>
21343 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))>
21344 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))>
21345 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))>
21346 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))>
21347 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))>
21348 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
21349 //fMixedHarmonicsNestedLoops->Fill(132.5,-44.,1.); // empty
21350 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))>
21351 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))>
21352 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))>
21353 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))>
21354 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))>
21355 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))>
21356 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))>
21357 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))>
21358 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))>
21359 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))>
21360 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))>
21361 //fMixedHarmonicsNestedLoops->Fill(144.5,-44.,1.); // empty
21362 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))>
21363 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))>
21364 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))>
21365 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21366 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21367 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21368 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21369 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21370 } // end of if(nPrim>=5)
21371
21372 // QW44
489d5531 21373
e1d101a6 21374} // end of void AliFlowAnalysisWithQCumulants::EvaluateMixedHarmonicsWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 21375
e1d101a6 21376//================================================================================================================
489d5531 21377
21378void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrelations()
21379{
21380 // Cross-check results for multiparticle correlations needed for int. flow: results from Q-vectors vs results from nested loops.
21381
21382 cout<<endl;
21383 cout<<endl;
21384 cout<<" *****************************************"<<endl;
21385 cout<<" **** cross-checking the correlations ****"<<endl;
21386 cout<<" **** for integrated flow ****"<<endl;
403e3389 21387 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 21388 {
21389 cout<<" **** (particle weights not used) ****"<<endl;
21390 } else
21391 {
21392 cout<<" **** (particle weights used) ****"<<endl;
21393 }
21394 cout<<" *****************************************"<<endl;
21395 cout<<endl;
21396 cout<<endl;
21397
403e3389 21398 Int_t ciMax = 64; // to be improved (removed eventually when I calculate 6th and 8th order with particle weights)
489d5531 21399
403e3389 21400 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 21401 {
21402 ciMax = 11;
21403 }
21404
21405 for(Int_t ci=1;ci<=ciMax;ci++)
21406 {
21407 if(strcmp((fIntFlowCorrelationsAllPro->GetXaxis())->GetBinLabel(ci), "") == 0) continue; // to be improved (access finalized histogram here)
21408 cout<<(fIntFlowCorrelationsAllPro->GetXaxis())->GetBinLabel(ci)<<":"<<endl; // to be improved (access finalized histogram here)
21409 cout<<"from Q-vectors = "<<fIntFlowCorrelationsAllPro->GetBinContent(ci)<<endl; // to be improved (access finalized histogram here)
21410 cout<<"from nested loops = "<<fIntFlowDirectCorrelations->GetBinContent(ci)<<endl;
21411 cout<<endl;
21412 }
e1d101a6 21413
21414 if(!fCalculateMixedHarmonics){return;}
21415
21416 cout<<endl;
21417 cout<<endl;
21418 cout<<" *****************************************"<<endl;
21419 cout<<" **** cross-checking the correlations ****"<<endl;
21420 cout<<" **** for mixed harmonics ****"<<endl;
21421 cout<<" *****************************************"<<endl;
21422 cout<<endl;
21423 cout<<endl;
21424
21425 // 2-p:
21426 for(Int_t ci=1;ci<=6;ci++)
21427 {
21428 cout<<(f2pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21429 cout<<"from Q-vectors = "<<f2pCorrelations->GetBinContent(ci)<<endl;
21430 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci)<<endl;
21431 cout<<endl;
21432 } // end of for(Int_t ci=1;ci<=6;ci++)
21433
21434 // 3-p:
21435 for(Int_t ci=1;ci<=10;ci++)
21436 {
21437 if(4==ci){continue;} // skipping the empty bins
21438 cout<<(f3pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21439 cout<<"from Q-vectors = "<<f3pCorrelations->GetBinContent(ci)<<endl;
21440 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6)<<endl;
21441 cout<<endl;
21442 } // end of for(Int_t ci=1;ci<=10;ci++)
21443
21444 // 4-p:
21445 for(Int_t ci=1;ci<=45;ci++)
21446 {
21447 if(7==ci||23==ci||26==ci||37==ci){continue;} // skipping the empty bins
21448 cout<<(f4pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21449 cout<<"from Q-vectors = "<<f4pCorrelations->GetBinContent(ci)<<endl;
21450 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10)<<endl;
21451 //if(TMath::Abs(f4pCorrelations->GetBinContent(ci)-fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10))
21452 // > 1.e-10){exit(0);}
21453 cout<<endl;
21454 } // end of for(Int_t ci=1;ci<=45;ci++)
21455
21456 for(Int_t ci=1;ci<=87;ci++)
21457 {
21458 if(31==ci||41==ci||72==ci||84==ci){continue;} // skipping the empty bins
21459 cout<<(f5pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21460 cout<<"from Q-vectors = "<<f5pCorrelations->GetBinContent(ci)<<endl;
21461 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10+45)<<endl;
21462 if(TMath::Abs(f5pCorrelations->GetBinContent(ci)-fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10+45))
21463 > 1.e-10){exit(0);}
21464 cout<<endl;
21465 } // end of for(Int_t ci=1;ci<=87;ci++)
21466
21467 return;
21468
489d5531 21469} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrelations()
21470
e1d101a6 21471//=======================================================================================================================
489d5531 21472
489d5531 21473void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrectionTermsForNUA()
21474{
21475 // Cross-check results for corrections terms for non-uniform acceptance needed for int. flow: results from Q-vectors vs results from nested loops.
21476
21477 cout<<endl;
21478 cout<<endl;
21479 cout<<" *********************************************"<<endl;
21480 cout<<" **** cross-checking the correction terms ****"<<endl;
21481 cout<<" **** for non-uniform acceptance relevant ****"<<endl;
21482 cout<<" **** for integrated flow ****"<<endl;
403e3389 21483 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 21484 {
21485 cout<<" **** (particle weights not used) ****"<<endl;
21486 } else
21487 {
21488 cout<<" **** (particle weights used) ****"<<endl;
21489 }
21490 cout<<" *********************************************"<<endl;
21491 cout<<endl;
21492 cout<<endl;
21493
b92ea2b9 21494 for(Int_t ci=1;ci<=4;ci++) // correction term index (to be improved - hardwired 4)
489d5531 21495 {
21496 for(Int_t sc=0;sc<2;sc++) // sin or cos term
21497 {
21498 if(strcmp((fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->GetBinLabel(ci), "") == 0) continue; // to be improved (access finalized histogram here)
21499 cout<<(fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->GetBinLabel(ci)<<":"<<endl; // to be improved (access finalized histogram here)
21500 cout<<"from Q-vectors = "<<fIntFlowCorrectionTermsForNUAPro[sc]->GetBinContent(ci)<<endl; // to be improved (access finalized histogram here)
21501 cout<<"from nested loops = "<<fIntFlowDirectCorrectionTermsForNUA[sc]->GetBinContent(ci)<<endl;
21502 cout<<endl;
21503 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos term
21504 } // end of for(Int_t ci=1;ci<=10;ci++) // correction term index
21505
21506} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrectionTermsForNUA()
21507
e1d101a6 21508//=======================================================================================================================
489d5531 21509
0328db2d 21510void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent)
489d5531 21511{
21512 // Evaluate with nested loops multiparticle correlations for integrated flow (using the particle weights).
21513
21514 // Results are stored in profile fIntFlowDirectCorrelations.
21515 // Remark 1: When particle weights are used the binning of fIntFlowDirectCorrelations is organized as follows:
21516 //
21517 // 1st bin: <2>_{1n|1n} = two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
21518 // 2nd bin: <2>_{2n|2n} = two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
21519 // 3rd bin: <2>_{3n|3n} = two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
21520 // 4th bin: <2>_{4n|4n} = two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
21521 // 5th bin: ---- EMPTY ----
21522 // 6th bin: <3>_{2n|1n,1n} = three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
21523 // 7th bin: <3>_{3n|2n,1n} = ...
21524 // 8th bin: <3>_{4n|2n,2n} = ...
21525 // 9th bin: <3>_{4n|3n,1n} = ...
21526 // 10th bin: ---- EMPTY ----
21527 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
21528 // 12th bin: <4>_{2n,1n|2n,1n} = ...
21529 // 13th bin: <4>_{2n,2n|2n,2n} = ...
21530 // 14th bin: <4>_{3n|1n,1n,1n} = ...
21531 // 15th bin: <4>_{3n,1n|3n,1n} = ...
21532 // 16th bin: <4>_{3n,1n|2n,2n} = ...
21533 // 17th bin: <4>_{4n|2n,1n,1n} = ...
21534 // 18th bin: ---- EMPTY ----
21535 // 19th bin: <5>_{2n|1n,1n,1n,1n} = ...
21536 // 20th bin: <5>_{2n,2n|2n,1n,1n} = ...
21537 // 21st bin: <5>_{3n,1n|2n,1n,1n} = ...
21538 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = ...
21539 // 23rd bin: ---- EMPTY ----
21540 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = ...
21541 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = ...
21542 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = ...
21543 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = ...
21544 // 28th bin: ---- EMPTY ----
21545 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = ...
21546 // 30th bin: ---- EMPTY ----
21547 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = ...
57340a27 21548
489d5531 21549 // Remark 2: When particle weights are used there are some extra correlations. They are stored in
21550 // fIntFlowExtraDirectCorrelations binning of which is organized as follows:
57340a27 21551
489d5531 21552 // 1st bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
21553 // 2nd bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
21554 // ...
57340a27 21555
489d5531 21556 Int_t nPrim = anEvent->NumberOfTracks();
21557 AliFlowTrackSimple *aftsTrack = NULL;
21558 //Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
21559 //Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
21560 Double_t phi1=0., phi2=0., phi3=0., phi4=0.;
21561 Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1.;
21562 Int_t n = fHarmonic;
21563 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 21564 Double_t dMult = (*fSpk)(0,0);
489d5531 21565 cout<<endl;
21566 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21567 if(dMult<2)
21568 {
21569 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21570 } else if (dMult>fMaxAllowedMultiplicity)
21571 {
21572 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21573 } else
21574 {
21575 cout<<"... evaluating nested loops (using particle weights) ..."<<endl;
21576 }
21577
21578 // 2-particle correlations:
21579 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21580 {
21581 // 2 nested loops multiparticle correlations using particle weights:
21582 for(Int_t i1=0;i1<nPrim;i1++)
21583 {
21584 aftsTrack=anEvent->GetTrack(i1);
21585 if(!(aftsTrack->InRPSelection())) continue;
21586 phi1=aftsTrack->Phi();
21587 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21588 for(Int_t i2=0;i2<nPrim;i2++)
21589 {
21590 if(i2==i1)continue;
21591 aftsTrack=anEvent->GetTrack(i2);
21592 if(!(aftsTrack->InRPSelection())) continue;
21593 phi2=aftsTrack->Phi();
21594 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21595 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21596 // 2-p correlations using particle weights:
21597 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),wPhi1*wPhi2); // <w1 w2 cos( n*(phi1-phi2))>
21598 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))>
21599 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))>
21600 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))>
21601 // extra correlations:
21602 // 2-p extra correlations (do not appear if particle weights are not used):
21603 if(fUsePhiWeights) fIntFlowExtraDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),pow(wPhi1,3)*wPhi2); // <w1^3 w2 cos(n*(phi1-phi2))>
21604 // ...
21605 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21606 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21607 } // end of if(nPrim>=2)
21608
21609 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
57340a27 21610 {
489d5531 21611 // 3 nested loops multiparticle correlations using particle weights:
21612 for(Int_t i1=0;i1<nPrim;i1++)
57340a27 21613 {
489d5531 21614 aftsTrack=anEvent->GetTrack(i1);
21615 if(!(aftsTrack->InRPSelection())) continue;
21616 phi1=aftsTrack->Phi();
21617 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21618 for(Int_t i2=0;i2<nPrim;i2++)
21619 {
21620 if(i2==i1)continue;
21621 aftsTrack=anEvent->GetTrack(i2);
21622 if(!(aftsTrack->InRPSelection())) continue;
21623 phi2=aftsTrack->Phi();
21624 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21625 for(Int_t i3=0;i3<nPrim;i3++)
21626 {
21627 if(i3==i1||i3==i2)continue;
21628 aftsTrack=anEvent->GetTrack(i3);
21629 if(!(aftsTrack->InRPSelection())) continue;
21630 phi3=aftsTrack->Phi();
21631 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
21632 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
21633 // 3-p correlations using particle weights:
21634 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))>
21635 // ...
21636 // extra correlations:
21637 // 2-p extra correlations (do not appear if particle weights are not used):
21638 if(fUsePhiWeights) fIntFlowExtraDirectCorrelations->Fill(1.5,cos(n*(phi1-phi2)),wPhi1*wPhi2*pow(wPhi3,2)); // <w1 w2 w3^2 cos(n*(phi1-phi2))>
21639 // ...
21640 // 3-p extra correlations (do not appear if particle weights are not used):
21641 // ...
21642 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21643 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21644 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21645 } // end of if(nPrim>=3)
57340a27 21646
489d5531 21647 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
21648 {
21649 // 4 nested loops multiparticle correlations using particle weights:
21650 for(Int_t i1=0;i1<nPrim;i1++)
21651 {
21652 aftsTrack=anEvent->GetTrack(i1);
21653 if(!(aftsTrack->InRPSelection())) continue;
21654 phi1=aftsTrack->Phi();
21655 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21656 for(Int_t i2=0;i2<nPrim;i2++)
21657 {
21658 if(i2==i1)continue;
21659 aftsTrack=anEvent->GetTrack(i2);
21660 if(!(aftsTrack->InRPSelection())) continue;
21661 phi2=aftsTrack->Phi();
21662 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21663 for(Int_t i3=0;i3<nPrim;i3++)
21664 {
21665 if(i3==i1||i3==i2)continue;
21666 aftsTrack=anEvent->GetTrack(i3);
21667 if(!(aftsTrack->InRPSelection())) continue;
21668 phi3=aftsTrack->Phi();
21669 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
21670 for(Int_t i4=0;i4<nPrim;i4++)
21671 {
21672 if(i4==i1||i4==i2||i4==i3)continue;
21673 aftsTrack=anEvent->GetTrack(i4);
21674 if(!(aftsTrack->InRPSelection())) continue;
21675 phi4=aftsTrack->Phi();
21676 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
21677 if(nPrim>=4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush; // to be improved (replace eventually this if statement with if(nPrim==4))
21678 // 4-p correlations using particle weights:
21679 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(10.5,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4);
21680 // extra correlations:
21681 // 2-p extra correlations (do not appear if particle weights are not used):
21682 // ...
21683 // 3-p extra correlations (do not appear if particle weights are not used):
21684 // ...
21685 // 4-p extra correlations (do not appear if particle weights are not used):
21686 // ...
21687 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21688 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21689 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21690 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21691 } // end of if(nPrim>=4)
57340a27 21692
489d5531 21693 cout<<endl;
57340a27 21694
489d5531 21695} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent)
57340a27 21696
e1d101a6 21697//=======================================================================================================================
489d5531 21698
489d5531 21699void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowExtraCorrelations()
57340a27 21700{
489d5531 21701 // Cross-check results for extra multiparticle correlations needed for int. flow
21702 // which appear only when particle weights are used: results from Q-vectors vs results from nested loops.
57340a27 21703
489d5531 21704 cout<<endl;
21705 cout<<endl;
21706 cout<<" ***********************************************"<<endl;
21707 cout<<" **** cross-checking the extra correlations ****"<<endl;
21708 cout<<" **** for integrated flow ****"<<endl;
21709 cout<<" ***********************************************"<<endl;
21710 cout<<endl;
21711 cout<<endl;
21712
21713 for(Int_t eci=1;eci<=2;eci++) // to be improved (increased eciMax eventually when I calculate 6th and 8th)
57340a27 21714 {
489d5531 21715 if(strcmp((fIntFlowExtraCorrelationsPro->GetXaxis())->GetBinLabel(eci), "") == 0) continue;
21716 cout<<(fIntFlowExtraCorrelationsPro->GetXaxis())->GetBinLabel(eci)<<":"<<endl;
21717 cout<<"from Q-vectors = "<<fIntFlowExtraCorrelationsPro->GetBinContent(eci)<<endl;
21718 cout<<"from nested loops = "<<fIntFlowExtraDirectCorrelations->GetBinContent(eci)<<endl;
21719 cout<<endl;
21720 }
57340a27 21721
489d5531 21722} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowExtraCorrelations()
57340a27 21723
e1d101a6 21724//=======================================================================================================================
3b552efe 21725
0328db2d 21726void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 21727{
21728 // Evaluate with nested loops correction terms for non-uniform acceptance relevant for NONAME integrated flow (to be improved (name)).
21729 //
21730 // Remark: Both sin and cos correction terms are calculated in this method. Sin terms are stored in fIntFlowDirectCorrectionTermsForNUA[0],
21731 // and cos terms in fIntFlowDirectCorrectionTermsForNUA[1]. Binning of fIntFlowDirectCorrectionTermsForNUA[sc] is organized as follows
21732 // (sc stands for either sin or cos):
21733
21734 // 1st bin: <<sc(n*(phi1))>>
21735 // 2nd bin: <<sc(n*(phi1+phi2))>>
21736 // 3rd bin: <<sc(n*(phi1-phi2-phi3))>>
21737 // 4th bin: <<sc(n*(2phi1-phi2))>>
21738
21739 Int_t nPrim = anEvent->NumberOfTracks();
21740 AliFlowTrackSimple *aftsTrack = NULL;
21741 Double_t phi1=0., phi2=0., phi3=0.;
21742 Int_t n = fHarmonic;
21743 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 21744 Double_t dMult = (*fSpk)(0,0);
489d5531 21745 cout<<endl;
21746 cout<<"Correction terms for non-uniform acceptance: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21747 if(dMult<1)
3b552efe 21748 {
489d5531 21749 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21750 } else if (dMult>fMaxAllowedMultiplicity)
3b552efe 21751 {
489d5531 21752 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21753 } else
21754 {
21755 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
21756 }
21757
21758 if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
21759 {
21760 // 1-particle correction terms for non-uniform acceptance:
21761 for(Int_t i1=0;i1<nPrim;i1++)
21762 {
21763 aftsTrack=anEvent->GetTrack(i1);
21764 if(!(aftsTrack->InRPSelection())) continue;
21765 phi1=aftsTrack->Phi();
21766 if(nPrim==1) cout<<i1<<"\r"<<flush;
21767 // sin terms:
21768 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(0.5,sin(n*phi1),1.); // <sin(n*phi1)>
21769 // cos terms:
21770 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(0.5,cos(n*phi1),1.); // <cos(n*phi1)>
21771 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21772 } // end of if(nPrim>=1)
21773
21774 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21775 {
21776 // 2-particle correction terms for non-uniform acceptance:
21777 for(Int_t i1=0;i1<nPrim;i1++)
21778 {
21779 aftsTrack=anEvent->GetTrack(i1);
21780 if(!(aftsTrack->InRPSelection())) continue;
21781 phi1=aftsTrack->Phi();
21782 for(Int_t i2=0;i2<nPrim;i2++)
3b552efe 21783 {
489d5531 21784 if(i2==i1)continue;
21785 aftsTrack=anEvent->GetTrack(i2);
21786 if(!(aftsTrack->InRPSelection())) continue;
21787 phi2=aftsTrack->Phi();
21788 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21789 // sin terms:
3b552efe 21790 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(1.5,sin(n*(phi1+phi2)),1.); // <<sin(n*(phi1+phi2))>>
489d5531 21791 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(3.5,sin(n*(2*phi1-phi2)),1.); // <<sin(n*(2*phi1-phi2))>>
21792 // cos terms:
3b552efe 21793 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(1.5,cos(n*(phi1+phi2)),1.); // <<cos(n*(phi1+phi2))>>
489d5531 21794 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(3.5,cos(n*(2*phi1-phi2)),1.); // <<cos(n*(2*phi1-phi2))>>
21795 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21796 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21797 } // end of if(nPrim>=2)
21798
21799 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21800 {
21801 // 3-particle correction terms for non-uniform acceptance:
21802 for(Int_t i1=0;i1<nPrim;i1++)
21803 {
21804 aftsTrack=anEvent->GetTrack(i1);
21805 if(!(aftsTrack->InRPSelection())) continue;
21806 phi1=aftsTrack->Phi();
21807 for(Int_t i2=0;i2<nPrim;i2++)
21808 {
21809 if(i2==i1)continue;
21810 aftsTrack=anEvent->GetTrack(i2);
21811 if(!(aftsTrack->InRPSelection())) continue;
21812 phi2=aftsTrack->Phi();
21813 for(Int_t i3=0;i3<nPrim;i3++)
21814 {
21815 if(i3==i1||i3==i2)continue;
21816 aftsTrack=anEvent->GetTrack(i3);
21817 if(!(aftsTrack->InRPSelection())) continue;
21818 phi3=aftsTrack->Phi();
21819 if(nPrim>=3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush; // to be improved (eventually I will change this if statement)
21820 // sin terms:
21821 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(2.5,sin(n*(phi1-phi2-phi3)),1.); // <<sin(n*(phi1-phi2-phi3))>>
21822 // cos terms:
21823 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(2.5,cos(n*(phi1-phi2-phi3)),1.); // <<cos(n*(phi1-phi2-phi3))>>
21824 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21825 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21826 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21827 } // end of if(nPrim>=3)
21828
21829 cout<<endl;
21830}
64e500e3 21831
e1d101a6 21832//=======================================================================================================================
64e500e3 21833
0328db2d 21834void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 21835{
21836 // Evaluate reduced correlations with nested loops without using the particle weights.
21837
21838 // Remark 1: Reduced correlations are evaluated in pt bin number fCrossCheckInPtBinNo and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
21839 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrelations[t][pe][ci], where indices runs as follows:
21840 // [0=RP,1=POI][0=Pt,1=Eta][0=<2'>,1=<4'>,2=<6'>,3=<8'>]
21841 // Remark 3: <2'> = <cos(n*(psi1-phi2))>
21842 // <4'> = <cos(n*(psi1+phi2-phi3-phi4))>
21843 // ...
21844
2a98ceb8 21845 Int_t typeFlag = 0;
21846 Int_t ptEtaFlag = 0;
489d5531 21847 if(type == "RP")
21848 {
21849 typeFlag = 0;
21850 } else if(type == "POI")
21851 {
21852 typeFlag = 1;
21853 }
21854 if(ptOrEta == "Pt")
21855 {
21856 ptEtaFlag = 0;
21857 } else if(ptOrEta == "Eta")
21858 {
21859 ptEtaFlag = 1;
21860 }
21861 // shortcuts:
21862 Int_t t = typeFlag;
21863 Int_t pe = ptEtaFlag;
21864
21865 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
21866 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
21867 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
21868
21869 Int_t nPrim = anEvent->NumberOfTracks();
21870 AliFlowTrackSimple *aftsTrack = NULL;
21871
21872 Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
21873
3b552efe 21874 Int_t n = fHarmonic;
489d5531 21875
21876 // 2'-particle correlations:
21877 for(Int_t i1=0;i1<nPrim;i1++)
21878 {
21879 aftsTrack=anEvent->GetTrack(i1);
3b552efe 21880 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
21881 if(typeFlag==1) // this is diff flow of POIs
489d5531 21882 {
21883 if(ptOrEta == "Pt")
21884 {
21885 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
21886 } else if (ptOrEta == "Eta")
21887 {
21888 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 21889 }
21890 } else // this is diff flow of RPs
21891 {
489d5531 21892 if(ptOrEta == "Pt")
21893 {
21894 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
21895 } else if (ptOrEta == "Eta")
21896 {
21897 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 21898 }
21899 }
489d5531 21900
21901 psi1=aftsTrack->Phi();
21902 for(Int_t i2=0;i2<nPrim;i2++)
21903 {
21904 if(i2==i1)continue;
21905 aftsTrack=anEvent->GetTrack(i2);
21906 // RP condition (!(first) particle in the correlator must be RP):
21907 if(!(aftsTrack->InRPSelection()))continue;
21908 phi2=aftsTrack->Phi();
21909 // 2'-particle correlations:
21910 fDiffFlowDirectCorrelations[t][pe][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(1.*n*(psi1-phi2)),1.); // <cos(n*(psi1-phi2))
21911 }//end of for(Int_t i2=0;i2<nPrim;i2++)
21912 }//end of for(Int_t i1=0;i1<nPrim;i1++)
21913
21914 /*
21915
21916 // 3'-particle correlations:
21917 for(Int_t i1=0;i1<nPrim;i1++)
21918 {
21919 aftsTrack=anEvent->GetTrack(i1);
21920 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
21921 if(ptOrEta == "Pt")
21922 {
21923 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
21924 } else if (ptOrEta == "Eta")
21925 {
21926 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
21927 }
21928 psi1=aftsTrack->Phi();
21929 for(Int_t i2=0;i2<nPrim;i2++)
21930 {
21931 if(i2==i1)continue;
21932 aftsTrack=anEvent->GetTrack(i2);
21933 // RP condition (!(first) particle in the correlator must be RP):
21934 if(!(aftsTrack->InRPSelection())) continue;
21935 phi2=aftsTrack->Phi();
21936 for(Int_t i3=0;i3<nPrim;i3++)
21937 {
21938 if(i3==i1||i3==i2)continue;
21939 aftsTrack=anEvent->GetTrack(i3);
21940 // RP condition (!(first) particle in the correlator must be RP):
21941 if(!(aftsTrack->InRPSelection())) continue;
21942 phi3=aftsTrack->Phi();
21943 // 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))>
21944 }//end of for(Int_t i3=0;i3<nPrim;i3++)
21945 }//end of for(Int_t i2=0;i2<nPrim;i2++)
21946 }//end of for(Int_t i1=0;i1<nPrim;i1++)
21947
21948 */
21949
21950 // 4'-particle correlations:
21951 for(Int_t i1=0;i1<nPrim;i1++)
21952 {
21953 aftsTrack=anEvent->GetTrack(i1);
3b552efe 21954 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
21955 if(typeFlag==1) // this is diff flow of POIs
489d5531 21956 {
21957 if(ptOrEta == "Pt")
21958 {
21959 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
21960 } else if (ptOrEta == "Eta")
21961 {
21962 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 21963 }
21964 } else // this is diff flow of RPs
21965 {
489d5531 21966 if(ptOrEta == "Pt")
21967 {
21968 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
21969 } else if (ptOrEta == "Eta")
21970 {
21971 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 21972 }
21973 }
489d5531 21974
21975 psi1=aftsTrack->Phi();
21976 for(Int_t i2=0;i2<nPrim;i2++)
21977 {
21978 if(i2==i1) continue;
21979 aftsTrack=anEvent->GetTrack(i2);
21980 // RP condition (!(first) particle in the correlator must be RP):
21981 if(!(aftsTrack->InRPSelection())) continue;
21982 phi2=aftsTrack->Phi();
21983 for(Int_t i3=0;i3<nPrim;i3++)
21984 {
21985 if(i3==i1||i3==i2) continue;
21986 aftsTrack=anEvent->GetTrack(i3);
21987 // RP condition (!(first) particle in the correlator must be RP):
21988 if(!(aftsTrack->InRPSelection())) continue;
21989 phi3=aftsTrack->Phi();
21990 for(Int_t i4=0;i4<nPrim;i4++)
21991 {
21992 if(i4==i1||i4==i2||i4==i3) continue;
21993 aftsTrack=anEvent->GetTrack(i4);
21994 // RP condition (!(first) particle in the correlator must be RP):
21995 if(!(aftsTrack->InRPSelection())) continue;
21996 phi4=aftsTrack->Phi();
21997 // 4'-particle correlations:
21998 fDiffFlowDirectCorrelations[t][pe][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3-phi4)),1.); // <cos(n(psi1+phi2-phi3-phi4))>
21999 }//end of for(Int_t i4=0;i4<nPrim;i4++)
22000 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22001 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22002 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22003
22004 // count # of RPs and POIs in selected pt and eta bins for cross-checkings:
3b552efe 22005 for(Int_t i=0;i<nPrim;i++)
22006 {
22007 aftsTrack=anEvent->GetTrack(i);
22008 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22009 if(typeFlag==1) // this is diff flow of POIs
489d5531 22010 {
22011 if(ptOrEta == "Pt")
22012 {
22013 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22014 } else if (ptOrEta == "Eta")
22015 {
22016 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22017 }
22018 } else // this is diff flow of RPs
22019 {
489d5531 22020 if(ptOrEta == "Pt")
22021 {
22022 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22023 } else if (ptOrEta == "Eta")
22024 {
22025 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22026 }
22027 }
22028 if(t==1)t++;
22029 fNoOfParticlesInBin->Fill(t+pe+0.5);
489d5531 22030 }
22031
22032} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoops(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22033
e1d101a6 22034//=======================================================================================================================
489d5531 22035
64e500e3 22036void AliFlowAnalysisWithQCumulants::EvaluateOtherDiffCorrelatorsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22037{
22038 // Evaluate other differential correlators with nested loops without using the particle weights.
22039
22040 // Remark 1: Other differential correlators are evaluated in pt bin number fCrossCheckInPtBinNo
22041 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22042 // Remark 2: Results are stored in 1 bin profiles fOtherDirectDiffCorrelators[t][pe][sc][ci], where indices runs as follows:
22043 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms][ci = correlator index]
22044 // Remark 3: Correlator index 'ci' runs as follows:
22045 // 0: <exp(n*(psi1-3phi2+2phi3))> (Teaney-Yan correlator)
22046
22047 Int_t typeFlag = 0;
22048 Int_t ptEtaFlag = 0;
22049 if(type == "RP")
22050 {
22051 typeFlag = 0;
22052 } else if(type == "POI")
22053 {
22054 typeFlag = 1;
22055 }
22056 if(ptOrEta == "Pt")
22057 {
22058 ptEtaFlag = 0;
22059 } else if(ptOrEta == "Eta")
22060 {
22061 ptEtaFlag = 1;
22062 }
22063 // shortcuts:
22064 Int_t t = typeFlag;
22065 Int_t pe = ptEtaFlag;
22066
22067 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22068 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22069 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22070
22071 Int_t nPrim = anEvent->NumberOfTracks();
22072 AliFlowTrackSimple *aftsTrack = NULL;
22073
22074 Double_t psi1=0., phi2=0., phi3=0.;
22075
22076 Int_t n = fHarmonic;
22077
22078 // 3-p correlators:
22079 for(Int_t i1=0;i1<nPrim;i1++)
22080 {
22081 aftsTrack=anEvent->GetTrack(i1);
22082 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22083 if(typeFlag==1) // this is diff flow of POIs
22084 {
22085 if(ptOrEta == "Pt")
22086 {
22087 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22088 } else if (ptOrEta == "Eta")
22089 {
22090 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22091 }
22092 } else // this is diff flow of RPs
22093 {
22094 if(ptOrEta == "Pt")
22095 {
22096 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22097 } else if (ptOrEta == "Eta")
22098 {
22099 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22100 }
22101 }
22102 psi1=aftsTrack->Phi();
22103 for(Int_t i2=0;i2<nPrim;i2++)
22104 {
22105 if(i2==i1) continue;
22106 aftsTrack=anEvent->GetTrack(i2);
22107 // RP condition (!(first) particle in the correlator must be RP):
22108 if(!(aftsTrack->InRPSelection())) continue;
22109 phi2=aftsTrack->Phi();
22110 for(Int_t i3=0;i3<nPrim;i3++)
22111 {
22112 if(i3==i1||i3==i2) continue;
22113 aftsTrack=anEvent->GetTrack(i3);
22114 // RP condition (!(first) particle in the correlator must be RP):
22115 if(!(aftsTrack->InRPSelection())) continue;
22116 phi3=aftsTrack->Phi();
22117 // Fill 3-p correlators:
22118 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))>
22119 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22120 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22121 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22122} // end of void AliFlowAnalysisWithQCumulants::EvaluateOtherDiffCorrelatorsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22123
e1d101a6 22124//=======================================================================================================================
489d5531 22125
22126void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrelations(TString type, TString ptOrEta)
22127{
22128 // Compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22129
2a98ceb8 22130 Int_t typeFlag = 0;
22131 Int_t ptEtaFlag = 0;
489d5531 22132 if(type == "RP")
22133 {
22134 typeFlag = 0;
22135 } else if(type == "POI")
22136 {
22137 typeFlag = 1;
22138 }
22139 if(ptOrEta == "Pt")
22140 {
22141 ptEtaFlag = 0;
22142 } else if(ptOrEta == "Eta")
22143 {
22144 ptEtaFlag = 1;
22145 }
22146 // shortcuts:
22147 Int_t t = typeFlag;
22148 Int_t pe = ptEtaFlag;
22149
22150 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22151 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22152 TString reducedCorrelations[4] = {"<<cos(n(psi1-phi2))>>","<<cos(n(psi1+phi2-phi3-phi4))>>","",""}; // to be improved (access this from pro or hist)
22153 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22154 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22155
22156 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22157
22158
22159 cout<<endl;
22160 cout<<" *****************************************"<<endl;
22161 cout<<" **** cross-checking the correlations ****"<<endl;
22162 cout<<" **** for differential flow ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22163 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 22164 {
22165 cout<<" **** (particle weights not used) ****"<<endl;
22166 } else
22167 {
22168 cout<<" **** (particle weights used) ****"<<endl;
22169 }
22170 cout<<" *****************************************"<<endl;
22171 cout<<endl;
22172 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22173 cout<<endl;
22174
22175 for(Int_t rci=0;rci<2;rci++) // to be improved (calculate 6th and 8th order)
22176 {
22177 cout<<" "<<reducedCorrelations[rci].Data()<<":"<<endl;
22178 cout<<" from Q-vectors = "<<fDiffFlowCorrelationsPro[t][pe][rci]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22179 cout<<" from nested loops = "<<fDiffFlowDirectCorrelations[t][pe][rci]->GetBinContent(1)<<endl;
22180 cout<<endl;
22181 } // end of for(Int_t rci=0;rci<4;rci++)
22182
22183} // end of void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrelations(TString type, TString ptOrEta)
22184
e1d101a6 22185//=======================================================================================================================
3b552efe 22186
64e500e3 22187void AliFlowAnalysisWithQCumulants::CrossCheckOtherDiffCorrelators(TString type, TString ptOrEta)
22188{
22189 // Compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22190
22191 Int_t typeFlag = 0;
22192 Int_t ptEtaFlag = 0;
22193 if(type == "RP")
22194 {
22195 typeFlag = 0;
22196 } else if(type == "POI")
22197 {
22198 typeFlag = 1;
22199 }
22200 if(ptOrEta == "Pt")
22201 {
22202 ptEtaFlag = 0;
22203 } else if(ptOrEta == "Eta")
22204 {
22205 ptEtaFlag = 1;
22206 }
22207 // shortcuts:
22208 Int_t t = typeFlag;
22209 Int_t pe = ptEtaFlag;
22210
22211 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22212 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22213 TString otherCorrelators[1] = {"<<cos(n(psi1-3phi2+2phi3))>>"}; // to be improved (access this from pro or hist)
22214 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22215 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22216
22217 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22218
22219 cout<<endl;
22220 cout<<" *****************************************"<<endl;
22221 cout<<" **** cross-checking the other ****"<<endl;
22222 cout<<" **** diff. correlators ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22223 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
64e500e3 22224 {
22225 cout<<" **** (particle weights not used) ****"<<endl;
22226 } else
22227 {
22228 cout<<" **** (particle weights used) ****"<<endl;
22229 }
22230 cout<<" *****************************************"<<endl;
22231 cout<<endl;
22232 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22233 cout<<endl;
22234
22235 for(Int_t ci=0;ci<1;ci++)
22236 {
22237 cout<<" "<<otherCorrelators[ci].Data()<<":"<<endl;
22238 cout<<" from Q-vectors = "<<fOtherDiffCorrelators[t][pe][1][ci]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22239 cout<<" from nested loops = "<<fOtherDirectDiffCorrelators[t][pe][1][ci]->GetBinContent(1)<<endl;
22240 cout<<endl;
22241 } // end of for(Int_t ci=0;ci<1;ci++)
22242
22243} // end of void AliFlowAnalysisWithQCumulants::CrossCheckOtherDiffCorrelators(TString type, TString ptOrEta)
22244
e1d101a6 22245//=======================================================================================================================
64e500e3 22246
489d5531 22247void AliFlowAnalysisWithQCumulants::PrintNumberOfParticlesInSelectedBin()
3b552efe 22248{
22249 // Print on the screen number of RPs and POIs in selected pt and eta bin for cross checkings.
22250
22251 cout<<endl;
22252 cout<<"Number of RPs in selected pt bin = "<<fNoOfParticlesInBin->GetBinContent(1)<<endl;
22253 cout<<"Number of RPs in selected eta bin = "<<fNoOfParticlesInBin->GetBinContent(2)<<endl;
22254 cout<<"Number of POIs in selected pt bin = "<<fNoOfParticlesInBin->GetBinContent(3)<<endl;
22255 cout<<"Number of POIs in selected eta bin = "<<fNoOfParticlesInBin->GetBinContent(4)<<endl;
22256
489d5531 22257} // end of void AliFlowAnalysisWithQCumulants::PrintNumberOfParticlesInSelectedBin()
22258
e1d101a6 22259//=======================================================================================================================
3b552efe 22260
0328db2d 22261void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22262{
22263 // Evaluate reduced correlations with nested loops without using the particle weights.
22264
22265 // Remark 1: Reduced correlations are evaluated in pt bin number fCrossCheckInPtBinNo and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22266 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrelations[t][pe][ci], where indices runs as follows:
22267 // [0=RP,1=POI][0=Pt,1=Eta][0=<2'>,1=<4'>,2=<6'>,3=<8'>]
22268 // Remark 3: <2'> = <w2 cos(n*(psi1-phi2))>
22269 // <4'> = <w2 w3 w4 cos(n*(psi1+phi2-phi3-phi4))>
22270 // ...
22271
2a98ceb8 22272 Int_t typeFlag = 0;
22273 Int_t ptEtaFlag = 0;
489d5531 22274 if(type == "RP")
22275 {
22276 typeFlag = 0;
22277 } else if(type == "POI")
22278 {
22279 typeFlag = 1;
22280 }
22281 if(ptOrEta == "Pt")
22282 {
22283 ptEtaFlag = 0;
22284 } else if(ptOrEta == "Eta")
22285 {
22286 ptEtaFlag = 1;
22287 }
22288 // shortcuts:
22289 Int_t t = typeFlag;
22290 Int_t pe = ptEtaFlag;
22291
22292 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22293 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22294 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22295
22296 Int_t nPrim = anEvent->NumberOfTracks();
22297 AliFlowTrackSimple *aftsTrack = NULL;
22298
22299 Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22300 Double_t wPhi2=1., wPhi3=1., wPhi4=1.;// wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
22301
22302 Int_t n = fHarmonic;
22303
22304 // 2'-particle correlations:
22305 for(Int_t i1=0;i1<nPrim;i1++)
22306 {
22307 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22308 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22309 if(typeFlag==1) // this is diff flow of POIs
489d5531 22310 {
22311 if(ptOrEta == "Pt")
22312 {
22313 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22314 } else if (ptOrEta == "Eta")
22315 {
22316 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22317 }
22318 } else // this is diff flow of RPs
22319 {
489d5531 22320 if(ptOrEta == "Pt")
22321 {
22322 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22323 } else if (ptOrEta == "Eta")
22324 {
22325 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22326 }
489d5531 22327 }
22328 psi1=aftsTrack->Phi();
22329 for(Int_t i2=0;i2<nPrim;i2++)
22330 {
22331 if(i2==i1) continue;
22332 aftsTrack=anEvent->GetTrack(i2);
22333 // RP condition (!(first) particle in the correlator must be RP):
22334 if(!(aftsTrack->InRPSelection())) continue;
22335 phi2=aftsTrack->Phi();
22336 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22337 // 2'-particle correlations:
22338 fDiffFlowDirectCorrelations[t][pe][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(1.*n*(psi1-phi2)),wPhi2); // <w2 cos(n*(psi1-phi2))
22339 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22340 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22341
22342 // 4'-particle correlations:
22343 for(Int_t i1=0;i1<nPrim;i1++)
22344 {
22345 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22346 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22347 if(typeFlag==1) // this is diff flow of POIs
489d5531 22348 {
22349 if(ptOrEta == "Pt")
22350 {
22351 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22352 } else if (ptOrEta == "Eta")
22353 {
22354 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22355 }
22356 } else // this is diff flow of RPs
22357 {
489d5531 22358 if(ptOrEta == "Pt")
22359 {
22360 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22361 } else if (ptOrEta == "Eta")
22362 {
22363 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22364 }
489d5531 22365 }
22366 psi1=aftsTrack->Phi();
22367 for(Int_t i2=0;i2<nPrim;i2++)
22368 {
22369 if(i2==i1) continue;
22370 aftsTrack=anEvent->GetTrack(i2);
22371 // RP condition (!(first) particle in the correlator must be RP):
22372 if(!(aftsTrack->InRPSelection())) continue;
22373 phi2=aftsTrack->Phi();
22374 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22375 for(Int_t i3=0;i3<nPrim;i3++)
22376 {
22377 if(i3==i1||i3==i2) continue;
22378 aftsTrack=anEvent->GetTrack(i3);
22379 // RP condition (!(first) particle in the correlator must be RP):
22380 if(!(aftsTrack->InRPSelection())) continue;
22381 phi3=aftsTrack->Phi();
22382 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
22383 for(Int_t i4=0;i4<nPrim;i4++)
22384 {
22385 if(i4==i1||i4==i2||i4==i3) continue;
22386 aftsTrack=anEvent->GetTrack(i4);
22387 // RP condition (!(first) particle in the correlator must be RP):
22388 if(!(aftsTrack->InRPSelection())) continue;
22389 phi4=aftsTrack->Phi();
22390 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
22391 // 4'-particle correlations <w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))>:
22392 fDiffFlowDirectCorrelations[t][pe][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3-phi4)),wPhi2*wPhi3*wPhi4);
22393 }//end of for(Int_t i4=0;i4<nPrim;i4++)
22394 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22395 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22396 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22397
22398 // count # of RPs and POIs in selected pt and eta bins for cross-checkings: (to be improved - moved to dedicated method)
3b552efe 22399 for(Int_t i=0;i<nPrim;i++)
22400 {
489d5531 22401 aftsTrack=anEvent->GetTrack(i);
22402 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22403 if(typeFlag==1) // this is diff flow of POIs
22404 {
22405 if(ptOrEta == "Pt")
22406 {
22407 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22408 } else if (ptOrEta == "Eta")
22409 {
22410 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22411 }
22412 } else // this is diff flow of RPs
22413 {
22414 if(ptOrEta == "Pt")
22415 {
22416 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22417 } else if (ptOrEta == "Eta")
22418 {
22419 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22420 }
22421 }
22422 if(t==1)t++;
22423 fNoOfParticlesInBin->Fill(t+pe+0.5);
22424 }
22425
22426} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22427
e1d101a6 22428//=======================================================================================================================
489d5531 22429
0328db2d 22430void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22431{
22432 // Evaluate with nested loops correction terms for non-uniform acceptance (both sin and cos terms) relevant for differential flow.
22433
22434 // Remark 1: Reduced correction terms for non-uniform acceptance are evaluated in pt bin number fCrossCheckInPtBinNo
22435 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22436 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrections[t][pe][sc][cti], where first three indices runs as:
22437 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms], whilst the cti (correction term index) runs as follows:
22438 // cti:
22439 // 0: <<sc n(psi1)>>
22440 // 1: <<sc n(psi1+phi2)>>
22441 // 2: <<sc n(psi1+phi2-phi3)>>
22442 // 3: <<sc n(psi1-phi2-phi3)>>
22443 // 4:
22444 // 5:
22445 // 6:
22446
2a98ceb8 22447 Int_t typeFlag = 0;
22448 Int_t ptEtaFlag = 0;
489d5531 22449 if(type == "RP")
22450 {
22451 typeFlag = 0;
22452 } else if(type == "POI")
22453 {
22454 typeFlag = 1;
22455 }
22456 if(ptOrEta == "Pt")
22457 {
22458 ptEtaFlag = 0;
22459 } else if(ptOrEta == "Eta")
22460 {
22461 ptEtaFlag = 1;
22462 }
22463 // shortcuts:
22464 Int_t t = typeFlag;
22465 Int_t pe = ptEtaFlag;
22466
22467 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22468 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22469 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22470
22471 Int_t nPrim = anEvent->NumberOfTracks();
22472 AliFlowTrackSimple *aftsTrack = NULL;
22473
22474 Double_t psi1=0., phi2=0., phi3=0.;// phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22475
22476 Int_t n = fHarmonic;
22477
22478 // 1-particle correction terms:
22479 for(Int_t i1=0;i1<nPrim;i1++)
22480 {
22481 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22482 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22483 if(typeFlag==1) // this is diff flow of POIs
489d5531 22484 {
22485 if(ptOrEta == "Pt")
22486 {
22487 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22488 } else if (ptOrEta == "Eta")
22489 {
22490 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22491 }
22492 } else // this is diff flow of RPs
22493 {
489d5531 22494 if(ptOrEta == "Pt")
22495 {
22496 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22497 } else if (ptOrEta == "Eta")
22498 {
22499 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22500 }
22501 }
489d5531 22502 psi1=aftsTrack->Phi();
22503 // sin terms:
22504 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*psi1),1.); // <<sin(n*(psi1))>>
22505 // cos terms:
22506 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*psi1),1.); // <<cos(n*(psi1))>>
22507 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22508
22509 // 2-particle correction terms:
22510 for(Int_t i1=0;i1<nPrim;i1++)
22511 {
22512 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22513 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22514 if(typeFlag==1) // this is diff flow of POIs
489d5531 22515 {
22516 if(ptOrEta == "Pt")
22517 {
22518 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22519 } else if (ptOrEta == "Eta")
22520 {
22521 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22522 }
22523 } else // this is diff flow of RPs
22524 {
489d5531 22525 if(ptOrEta == "Pt")
22526 {
22527 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22528 } else if (ptOrEta == "Eta")
22529 {
22530 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22531 }
489d5531 22532 }
22533 psi1=aftsTrack->Phi();
22534 for(Int_t i2=0;i2<nPrim;i2++)
22535 {
22536 if(i2==i1) continue;
22537 aftsTrack=anEvent->GetTrack(i2);
22538 // RP condition (!(first) particle in the correlator must be RP):
22539 if(!(aftsTrack->InRPSelection())) continue;
22540 phi2=aftsTrack->Phi();
22541 // sin terms:
22542 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2)),1.); // <<sin(n*(psi1+phi2))>>
22543 // cos terms:
22544 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2)),1.); // <<cos(n*(psi1+phi2))>>
22545 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22546 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22547
22548 // 3-particle correction terms:
22549 for(Int_t i1=0;i1<nPrim;i1++)
22550 {
22551 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22552 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22553 if(typeFlag==1) // this is diff flow of POIs
489d5531 22554 {
22555 if(ptOrEta == "Pt")
22556 {
22557 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22558 } else if (ptOrEta == "Eta")
22559 {
22560 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22561 }
22562 } else // this is diff flow of RPs
22563 {
489d5531 22564 if(ptOrEta == "Pt")
22565 {
22566 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22567 } else if (ptOrEta == "Eta")
22568 {
22569 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22570 }
489d5531 22571 }
22572 psi1=aftsTrack->Phi();
22573 for(Int_t i2=0;i2<nPrim;i2++)
22574 {
22575 if(i2==i1) continue;
22576 aftsTrack=anEvent->GetTrack(i2);
22577 // RP condition (!(first) particle in the correlator must be RP):
22578 if(!(aftsTrack->InRPSelection())) continue;
22579 phi2=aftsTrack->Phi();
22580 for(Int_t i3=0;i3<nPrim;i3++)
22581 {
22582 if(i3==i1||i3==i2) continue;
22583 aftsTrack=anEvent->GetTrack(i3);
22584 // RP condition (!(first) particle in the correlator must be RP):
22585 if(!(aftsTrack->InRPSelection())) continue;
22586 phi3=aftsTrack->Phi();
22587 // sin terms:
22588 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2-phi3)),1.); // <<sin(n*(psi1+phi2-phi3))>>
22589 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1-phi2-phi3)),1.); // <<sin(n*(psi1-phi2-phi3))>>
22590 // cos terms:
22591 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3)),1.); // <<cos(n*(psi1+phi2-phi3))>>
22592 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1-phi2-phi3)),1.); // <<cos(n*(psi1-phi2-phi3))>>
22593 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22594 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22595 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22596
22597} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22598
22599
e1d101a6 22600//=======================================================================================================================
489d5531 22601
22602
22603void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrectionTermsForNUA(TString type, TString ptOrEta)
22604{
22605 // Compare corrections temrs for non-uniform acceptance needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22606
2a98ceb8 22607 Int_t typeFlag = 0;
22608 Int_t ptEtaFlag = 0;
489d5531 22609 if(type == "RP")
22610 {
22611 typeFlag = 0;
22612 } else if(type == "POI")
22613 {
22614 typeFlag = 1;
22615 }
22616 if(ptOrEta == "Pt")
22617 {
22618 ptEtaFlag = 0;
22619 } else if(ptOrEta == "Eta")
22620 {
22621 ptEtaFlag = 1;
22622 }
22623 // shortcuts:
22624 Int_t t = typeFlag;
22625 Int_t pe = ptEtaFlag;
22626
22627 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22628 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22629 //TString sinCosFlag[2] = {"sin","cos"}; // to be improved (eventually promote to data member)
22630 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)
22631 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)
22632 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22633 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22634
22635 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22636
22637 cout<<endl;
22638 cout<<" ******************************************"<<endl;
22639 cout<<" **** cross-checking the correction ****"<<endl;
46b94261 22640 cout<<" **** terms for non-uniform acceptance ****"<<endl;
489d5531 22641 cout<<" **** for differential flow ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22642 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 22643 {
22644 cout<<" **** (particle weights not used) ****"<<endl;
22645 } else
22646 {
22647 cout<<" **** (particle weights used) ****"<<endl;
22648 }
22649 cout<<" ******************************************"<<endl;
22650 cout<<endl;
22651 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22652 cout<<endl;
22653
22654 for(Int_t cti=0;cti<4;cti++) // correction term index
22655 {
22656 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
22657 {
22658 if(sc==0) // to be improved (this can be implemented better)
22659 {
22660 cout<<" "<<reducedCorrectionSinTerms[cti].Data()<<":"<<endl;
22661 } else
22662 {
22663 cout<<" "<<reducedCorrectionCosTerms[cti].Data()<<":"<<endl;
22664 }
22665 cout<<" from Q-vectors = "<<fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22666 cout<<" from nested loops = "<<fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti]->GetBinContent(1)<<endl;
22667 cout<<endl;
22668 }
22669 } // end of for(Int_t rci=0;rci<4;rci++)
22670
22671} // end of void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrectionTermsForNUA(TString type, TString ptOrEta)
22672
e1d101a6 22673//=======================================================================================================================
57340a27 22674
489d5531 22675void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights()
22676{
22677 // Calculate corrections using particle weights for non-uniform acceptance of the detector for no-name integrated flow (cos terms).
22678
22679 // **********************************************************************
22680 // **** weighted corrections for non-uniform acceptance (cos terms): ****
22681 // **********************************************************************
57340a27 22682
489d5531 22683 // Remark 1: When particle weights are used the binning of fIntFlowCorrectionTermsForNUAPro[1] is organized as follows:
57340a27 22684 //
489d5531 22685 // 1st bin: <<w1 cos(n*(phi1))>> = cosP1nW1
22686 // 2nd bin: <<w1 w2 cos(n*(phi1+phi2))>> = cosP1nP1nW1W1
22687 // 3rd bin: <<w1 w2 w3 cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1nW1W1W1
22688 // ...
22689
22690 // multiplicity (number of particles used to determine the reaction plane)
1268c371 22691 Double_t dMult = (*fSpk)(0,0);
489d5531 22692
22693 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
22694 Double_t dReQ1n1k = (*fReQ)(0,1);
22695 Double_t dReQ2n2k = (*fReQ)(1,2);
22696 //Double_t dReQ3n3k = (*fReQ)(2,3);
22697 //Double_t dReQ4n4k = (*fReQ)(3,4);
22698 Double_t dReQ1n3k = (*fReQ)(0,3);
22699 Double_t dImQ1n1k = (*fImQ)(0,1);
22700 Double_t dImQ2n2k = (*fImQ)(1,2);
22701 //Double_t dImQ3n3k = (*fImQ)(2,3);
22702 //Double_t dImQ4n4k = (*fImQ)(3,4);
22703 //Double_t dImQ1n3k = (*fImQ)(0,3);
22704
22705 // dMs are variables introduced in order to simplify some Eqs. bellow:
22706 //..............................................................................................
1268c371 22707 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
22708 Double_t dM111 = (*fSpk)(2,1)-3.*(*fSpk)(0,2)*(*fSpk)(0,1)
22709 + 2.*(*fSpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
489d5531 22710 //..............................................................................................
ecac11c2 22711 // 1-particle:
489d5531 22712 Double_t cosP1nW1 = 0.; // <<w1 cos(n*(phi1))>>
22713
1268c371 22714 if(dMult>0 && TMath::Abs((*fSpk)(0,1))>1.e-6)
489d5531 22715 {
1268c371 22716 cosP1nW1 = dReQ1n1k/(*fSpk)(0,1);
489d5531 22717
22718 // average weighted 1-particle correction (cos terms) for non-uniform acceptance for single event:
22719 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(1,cosP1nW1);
22720
22721 // final average weighted 1-particle correction (cos terms) for non-uniform acceptance for all events:
1268c371 22722 fIntFlowCorrectionTermsForNUAPro[1]->Fill(0.5,cosP1nW1,(*fSpk)(0,1));
489d5531 22723 }
22724
22725 // 2-particle:
22726 Double_t cosP1nP1nW1W1 = 0.; // <<w1 w2 cos(n*(phi1+phi2))>>
22727
1268c371 22728 if(dMult>1 && TMath::Abs(dM11)>1.e-6)
489d5531 22729 {
22730 cosP1nP1nW1W1 = (pow(dReQ1n1k,2)-pow(dImQ1n1k,2)-dReQ2n2k)/dM11;
22731
22732 // average weighted 2-particle correction (cos terms) for non-uniform acceptance for single event:
22733 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(2,cosP1nP1nW1W1);
22734
22735 // final average weighted 2-particle correction (cos terms) for non-uniform acceptance for all events:
22736 fIntFlowCorrectionTermsForNUAPro[1]->Fill(1.5,cosP1nP1nW1W1,dM11);
22737 }
22738
22739 // 3-particle:
22740 Double_t cosP1nM1nM1nW1W1W1 = 0.; // <<w1 w2 w3 cos(n*(phi1-phi2-phi3))>>
22741
1268c371 22742 if(dMult>2 && TMath::Abs(dM111)>1.e-6)
489d5531 22743 {
57340a27 22744 cosP1nM1nM1nW1W1W1 = (dReQ1n1k*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
22745 - dReQ1n1k*dReQ2n2k-dImQ1n1k*dImQ2n2k
1268c371 22746 - 2.*((*fSpk)(0,2))*dReQ1n1k
489d5531 22747 + 2.*dReQ1n3k)
22748 / dM111;
22749
22750 // average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for single event:
22751 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(3,cosP1nM1nM1nW1W1W1);
22752
22753 // final average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for all events:
22754 fIntFlowCorrectionTermsForNUAPro[1]->Fill(2.5,cosP1nM1nM1nW1W1W1,dM111);
22755 }
22756
22757} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights()
22758
22759
e1d101a6 22760//=======================================================================================================================
489d5531 22761
22762
22763void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights()
22764{
22765 // calculate corrections using particle weights for non-uniform acceptance of the detector for no-name integrated flow (sin terms)
22766
22767 // **********************************************************************
22768 // **** weighted corrections for non-uniform acceptance (sin terms): ****
22769 // **********************************************************************
22770
22771 // Remark 1: When particle weights are used the binning of fIntFlowCorrectionTermsForNUAPro[0] is organized as follows:
57340a27 22772 //
489d5531 22773 // 1st bin: <<w1 sin(n*(phi1))>> = sinP1nW1
22774 // 2nd bin: <<w1 w2 sin(n*(phi1+phi2))>> = sinP1nP1nW1W1
22775 // 3rd bin: <<w1 w2 w3 sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1nW1W1W1
22776 // ...
22777
22778 // multiplicity (number of particles used to determine the reaction plane)
1268c371 22779 Double_t dMult = (*fSpk)(0,0);
489d5531 22780
22781 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
22782 Double_t dReQ1n1k = (*fReQ)(0,1);
22783 Double_t dReQ2n2k = (*fReQ)(1,2);
22784 //Double_t dReQ3n3k = (*fReQ)(2,3);
22785 //Double_t dReQ4n4k = (*fReQ)(3,4);
22786 //Double_t dReQ1n3k = (*fReQ)(0,3);
22787 Double_t dImQ1n1k = (*fImQ)(0,1);
22788 Double_t dImQ2n2k = (*fImQ)(1,2);
22789 //Double_t dImQ3n3k = (*fImQ)(2,3);
22790 //Double_t dImQ4n4k = (*fImQ)(3,4);
22791 Double_t dImQ1n3k = (*fImQ)(0,3);
22792
22793 // dMs are variables introduced in order to simplify some Eqs. bellow:
22794 //..............................................................................................
1268c371 22795 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
22796 Double_t dM111 = (*fSpk)(2,1)-3.*(*fSpk)(0,2)*(*fSpk)(0,1)
22797 + 2.*(*fSpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
489d5531 22798 //..............................................................................................
22799
22800 // 1-particle:
22801 Double_t sinP1nW1 = 0.; // <<w1 sin(n*(phi1))>>
22802
1268c371 22803 if(dMult>0 && TMath::Abs((*fSpk)(0,1))>1.e-6)
489d5531 22804 {
1268c371 22805 sinP1nW1 = dImQ1n1k/((*fSpk)(0,1));
489d5531 22806
22807 // average weighted 1-particle correction (sin terms) for non-uniform acceptance for single event:
22808 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(1,sinP1nW1);
22809
22810 // final average weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
1268c371 22811 fIntFlowCorrectionTermsForNUAPro[0]->Fill(0.5,sinP1nW1,(*fSpk)(0,1));
489d5531 22812 }
22813
22814 // 2-particle:
22815 Double_t sinP1nP1nW1W1 = 0.; // <<w1 w2 sin(n*(phi1+phi2))>>
22816
1268c371 22817 if(dMult>1 && TMath::Abs(dM11)>1.e-6)
489d5531 22818 {
22819 sinP1nP1nW1W1 = (2.*dReQ1n1k*dImQ1n1k-dImQ2n2k)/dM11;
22820
22821 // average weighted 2-particle correction (sin terms) for non-uniform acceptance for single event:
22822 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(2,sinP1nP1nW1W1);
22823
22824 // final average weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
22825 fIntFlowCorrectionTermsForNUAPro[0]->Fill(1.5,sinP1nP1nW1W1,dM11);
22826 }
22827
22828 // 3-particle:
22829 Double_t sinP1nM1nM1nW1W1W1 = 0.; // <<w1 w2 w3 sin(n*(phi1-phi2-phi3))>>
22830
1268c371 22831 if(dMult>2 && TMath::Abs(dM111)>1.e-6)
489d5531 22832 {
57340a27 22833 sinP1nM1nM1nW1W1W1 = (-dImQ1n1k*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
22834 + dReQ1n1k*dImQ2n2k-dImQ1n1k*dReQ2n2k
1268c371 22835 + 2.*((*fSpk)(0,2))*dImQ1n1k
489d5531 22836 - 2.*dImQ1n3k)
22837 / dM111;
22838
22839 // average weighted 3-particle correction (sin terms) for non-uniform acceptance for single event:
22840 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(3,sinP1nM1nM1nW1W1W1);
22841
22842 // final average weighted 3-particle correction (sin terms) for non-uniform acceptance for all events:
22843 fIntFlowCorrectionTermsForNUAPro[0]->Fill(2.5,sinP1nM1nM1nW1W1W1,dM111);
22844 }
22845
22846} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights()
22847
e1d101a6 22848//=======================================================================================================================
489d5531 22849
0328db2d 22850void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent)
489d5531 22851{
22852 // Evaluate with nested loops correction terms for non-uniform acceptance for integrated flow (using the particle weights).
22853
57340a27 22854 // Results are stored in profiles fIntFlowDirectCorrectionTermsForNUA[0] (sin terms) and
22855 // fIntFlowDirectCorrectionTermsForNUA[1] (cos terms).
489d5531 22856
57340a27 22857 // Remark 1: When particle weights are used the binning of fIntFlowDirectCorrectionTermsForNUA[sc] is
489d5531 22858 // organized as follows (sc stands for either sin or cos):
22859 //
22860 // 1st bin: <<w1 sc(n*(phi1))>> = scP1nW1
22861 // 2nd bin: <<w1 w2 sc(n*(phi1+phi2))>> = scP1nP1nW1W1
22862 // 3rd bin: <<w1 w2 w3 sc(n*(phi1-phi2-phi3))>> = scP1nM1nM1nW1W1W1
3b552efe 22863 // ...
489d5531 22864
22865 Int_t nPrim = anEvent->NumberOfTracks();
22866 AliFlowTrackSimple *aftsTrack = NULL;
22867 //Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
22868 //Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
22869 Double_t phi1=0., phi2=0., phi3=0.;
22870 Double_t wPhi1=1., wPhi2=1., wPhi3=1.;
22871 Int_t n = fHarmonic;
22872 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 22873 Double_t dMult = (*fSpk)(0,0);
489d5531 22874 cout<<endl;
22875 cout<<"Correction terms for non-uniform acceptance: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
22876 if(dMult<1)
22877 {
22878 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
22879 } else if (dMult>fMaxAllowedMultiplicity)
22880 {
22881 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
22882 } else
22883 {
22884 cout<<"... evaluating nested loops (using particle weights) ..."<<endl;
22885 }
22886
22887 // 1-particle correction terms using particle weights:
22888 if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
22889 {
22890 for(Int_t i1=0;i1<nPrim;i1++)
22891 {
22892 aftsTrack=anEvent->GetTrack(i1);
22893 if(!(aftsTrack->InRPSelection())) continue;
22894 phi1=aftsTrack->Phi();
22895 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
57340a27 22896 // 1-particle correction terms using particle weights:
489d5531 22897 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(0.5,sin(n*phi1),wPhi1); // <w1 sin(n*phi1)>
22898 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(0.5,cos(n*phi1),wPhi1); // <w1 cos(n*phi1)>
57340a27 22899 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22900 } // end of if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
22901
489d5531 22902 // 2-particle correction terms using particle weights:
22903 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
22904 {
22905 for(Int_t i1=0;i1<nPrim;i1++)
22906 {
22907 aftsTrack=anEvent->GetTrack(i1);
22908 if(!(aftsTrack->InRPSelection())) continue;
22909 phi1=aftsTrack->Phi();
22910 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
22911 for(Int_t i2=0;i2<nPrim;i2++)
22912 {
22913 if(i2==i1)continue;
22914 aftsTrack=anEvent->GetTrack(i2);
22915 if(!(aftsTrack->InRPSelection())) continue;
22916 phi2=aftsTrack->Phi();
22917 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22918 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
57340a27 22919 // 2-p correction terms using particle weights:
489d5531 22920 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(1.5,sin(n*(phi1+phi2)),wPhi1*wPhi2); // <w1 w2 sin(n*(phi1+phi2))>
22921 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(1.5,cos(n*(phi1+phi2)),wPhi1*wPhi2); // <w1 w2 cos(n*(phi1+phi2))>
22922 } // end of for(Int_t i2=0;i2<nPrim;i2++)
22923 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22924 } // end of if(nPrim>=2)
22925
22926 // 3-particle correction terms using particle weights:
22927 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
22928 {
22929 for(Int_t i1=0;i1<nPrim;i1++)
22930 {
22931 aftsTrack=anEvent->GetTrack(i1);
22932 if(!(aftsTrack->InRPSelection())) continue;
22933 phi1=aftsTrack->Phi();
22934 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
22935 for(Int_t i2=0;i2<nPrim;i2++)
22936 {
22937 if(i2==i1)continue;
22938 aftsTrack=anEvent->GetTrack(i2);
22939 if(!(aftsTrack->InRPSelection())) continue;
22940 phi2=aftsTrack->Phi();
22941 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22942 for(Int_t i3=0;i3<nPrim;i3++)
22943 {
22944 if(i3==i1||i3==i2)continue;
22945 aftsTrack=anEvent->GetTrack(i3);
22946 if(!(aftsTrack->InRPSelection())) continue;
22947 phi3=aftsTrack->Phi();
22948 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
22949 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
57340a27 22950 // 3-p correction terms using particle weights:
489d5531 22951 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(2.5,sin(n*(phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 sin(n*(phi1-phi2-phi3))>
22952 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(2.5,cos(n*(phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 cos(n*(phi1-phi2-phi3))>
22953 } // end of for(Int_t i3=0;i3<nPrim;i3++)
22954 } // end of for(Int_t i2=0;i2<nPrim;i2++)
22955 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22956 } // end of if(nPrim>=3)
22957
57340a27 22958 /*
22959
489d5531 22960 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
22961 {
22962 // 4 nested loops multiparticle correlations using particle weights:
22963 for(Int_t i1=0;i1<nPrim;i1++)
22964 {
22965 aftsTrack=anEvent->GetTrack(i1);
22966 if(!(aftsTrack->InRPSelection())) continue;
22967 phi1=aftsTrack->Phi();
22968 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
22969 for(Int_t i2=0;i2<nPrim;i2++)
22970 {
22971 if(i2==i1)continue;
22972 aftsTrack=anEvent->GetTrack(i2);
22973 if(!(aftsTrack->InRPSelection())) continue;
22974 phi2=aftsTrack->Phi();
22975 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22976 for(Int_t i3=0;i3<nPrim;i3++)
22977 {
22978 if(i3==i1||i3==i2)continue;
22979 aftsTrack=anEvent->GetTrack(i3);
22980 if(!(aftsTrack->InRPSelection())) continue;
22981 phi3=aftsTrack->Phi();
22982 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
22983 for(Int_t i4=0;i4<nPrim;i4++)
22984 {
22985 if(i4==i1||i4==i2||i4==i3)continue;
22986 aftsTrack=anEvent->GetTrack(i4);
22987 if(!(aftsTrack->InRPSelection())) continue;
22988 phi4=aftsTrack->Phi();
22989 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
22990 if(nPrim>=4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush; // to be improved (replace eventually this if statement with if(nPrim==4))
22991 // 4-p correlations using particle weights:
22992 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(10.5,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4);
22993 // extra correlations:
22994 // 2-p extra correlations (do not appear if particle weights are not used):
22995 // ...
22996 // 3-p extra correlations (do not appear if particle weights are not used):
22997 // ...
22998 // 4-p extra correlations (do not appear if particle weights are not used):
22999 // ...
23000 } // end of for(Int_t i4=0;i4<nPrim;i4++)
23001 } // end of for(Int_t i3=0;i3<nPrim;i3++)
23002 } // end of for(Int_t i2=0;i2<nPrim;i2++)
23003 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23004 } // end of if(nPrim>=4)
23005
23006 */
23007
23008 cout<<endl;
23009
23010} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent)
23011
e1d101a6 23012//=======================================================================================================================
489d5531 23013
489d5531 23014void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights(TString type, TString ptOrEta)
23015{
23016 // Calculate correction terms for non-uniform acceptance for differential flow (cos terms) using particle weights.
57340a27 23017
489d5531 23018 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][1][cti], where cti runs as follows:
57340a27 23019 //
489d5531 23020 // 0: <<cos n(psi)>>
23021 // 1: <<w2 cos n(psi1+phi2)>>
23022 // 2: <<w2 w3 cos n(psi1+phi2-phi3)>>
23023 // 3: <<w2 w3 cos n(psi1-phi2-phi3)>>
23024 // 4:
23025 // 5:
23026 // 6:
23027
23028 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
23029 Double_t dReQ1n1k = (*fReQ)(0,1);
23030 Double_t dReQ2n2k = (*fReQ)(1,2);
23031 //Double_t dReQ1n3k = (*fReQ)(0,3);
23032 //Double_t dReQ4n4k = (*fReQ)(3,4);
23033 Double_t dImQ1n1k = (*fImQ)(0,1);
23034 Double_t dImQ2n2k = (*fImQ)(1,2);
23035 //Double_t dImQ1n3k = (*fImQ)(0,3);
23036 //Double_t dImQ4n4k = (*fImQ)(3,4);
23037
1268c371 23038 // S^M_{p,k} (see .h file for the definition of fSpk):
23039 Double_t dSM1p1k = (*fSpk)(0,1);
23040 Double_t dSM1p2k = (*fSpk)(0,2);
23041 Double_t dSM2p1k = (*fSpk)(1,1);
489d5531 23042
2a98ceb8 23043 Int_t t = 0; // type flag
23044 Int_t pe = 0; // ptEta flag
489d5531 23045
23046 if(type == "RP")
23047 {
23048 t = 0;
23049 } else if(type == "POI")
23050 {
23051 t = 1;
23052 }
23053
23054 if(ptOrEta == "Pt")
23055 {
23056 pe = 0;
23057 } else if(ptOrEta == "Eta")
23058 {
23059 pe = 1;
23060 }
23061
23062 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
23063 Double_t minPtEta[2] = {fPtMin,fEtaMin};
23064 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
23065 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23066
23067 // looping over all bins and calculating correction terms:
23068 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23069 {
23070 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
23071 Double_t p1n0kRe = 0.;
23072 Double_t p1n0kIm = 0.;
23073
23074 // number of POIs in particular pt or eta bin:
23075 Double_t mp = 0.;
23076
23077 // 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):
23078 Double_t q1n2kRe = 0.;
ea239361 23079 //Double_t q1n2kIm = 0.;
489d5531 23080 Double_t q2n1kRe = 0.;
23081 Double_t q2n1kIm = 0.;
46b94261 23082
489d5531 23083 // s_{1,1}, s_{1,2} // to be improved (add explanation)
23084 Double_t s1p1k = 0.;
23085 Double_t s1p2k = 0.;
46b94261 23086
489d5531 23087 // number of particles which are both RPs and POIs in particular pt or eta bin:
ea239361 23088 //Double_t mq = 0.;
489d5531 23089
23090 // M0111 from Eq. (118) in QC2c (to be improved (notation))
23091 Double_t dM01 = 0.;
23092 Double_t dM011 = 0.;
23093
23094 if(type == "POI")
23095 {
23096 // q_{m*n,k}:
23097 q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
23098 * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
ea239361 23099 //q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
23100 // * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
489d5531 23101 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
23102 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
23103 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
23104 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
ea239361 23105 //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 23106
489d5531 23107 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
23108 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
23109 }else if(type == "RP")
23110 {
23111 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
23112 q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
23113 * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
ea239361 23114 //q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
23115 // * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
489d5531 23116 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
23117 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
23118 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
23119 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
23120 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23121 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
23122 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
3b552efe 23123 //s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
23124
ea239361 23125 //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 23126 }
3b552efe 23127
489d5531 23128 if(type == "POI")
3b552efe 23129 {
23130 // p_{m*n,k}:
489d5531 23131 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
23132 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
23133 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
3b552efe 23134 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
23135 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 23136 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23137 dM01 = mp*dSM1p1k-s1p1k;
23138 dM011 = mp*(dSM2p1k-dSM1p2k)
23139 - 2.*(s1p1k*dSM1p1k-s1p2k);
23140
23141 // typeFlag = RP (0) or POI (1):
23142 t = 1;
23143 } else if(type == "RP")
489d5531 23144 {
23145 // to be improved (cross-checked):
23146 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
23147 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
23148 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
23149 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
23150 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23151 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23152 dM01 = mp*dSM1p1k-s1p1k;
23153 dM011 = mp*(dSM2p1k-dSM1p2k)
23154 - 2.*(s1p1k*dSM1p1k-s1p2k);
489d5531 23155 // typeFlag = RP (0) or POI (1):
3b552efe 23156 t = 0;
23157 }
489d5531 23158
23159 // <<cos n(psi1)>>:
23160 Double_t cosP1nPsi = 0.;
23161 if(mp)
23162 {
23163 cosP1nPsi = p1n0kRe/mp;
23164
23165 // fill profile for <<cos n(psi1)>>:
23166 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi,mp);
23167 // histogram to store <cos n(psi1)> e-b-e (needed in some other methods):
23168 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][0]->SetBinContent(b,cosP1nPsi);
46b94261 23169 } // end of if(mp)
57340a27 23170
489d5531 23171 // <<w2 cos n(psi1+phi2)>>:
23172 Double_t cosP1nPsiP1nPhiW2 = 0.;
23173 if(dM01)
23174 {
23175 cosP1nPsiP1nPhiW2 = (p1n0kRe*dReQ1n1k-p1n0kIm*dImQ1n1k-q2n1kRe)/(dM01);
23176 // fill profile for <<w2 cos n(psi1+phi2)>>:
23177 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsiP1nPhiW2,dM01);
23178 // histogram to store <w2 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23179 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][1]->SetBinContent(b,cosP1nPsiP1nPhiW2);
23180 } // end of if(dM01)
23181
23182 // <<w2 w3 cos n(psi1+phi2-phi3)>>:
23183 Double_t cosP1nPsi1P1nPhi2MPhi3W2W3 = 0.;
23184 if(dM011)
23185 {
46b94261 23186 cosP1nPsi1P1nPhi2MPhi3W2W3 = (p1n0kRe*(pow(dImQ1n1k,2.)+pow(dReQ1n1k,2.))
23187 - p1n0kRe*dSM1p2k
23188 - q2n1kRe*dReQ1n1k-q2n1kIm*dImQ1n1k
23189 - s1p1k*dReQ1n1k
23190 + 2.*q1n2kRe)
23191 / dM011;
489d5531 23192 // fill profile for <<w1 w2 w3 cos n(psi1+phi2)>>:
23193 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1P1nPhi2MPhi3W2W3,dM011);
23194 // histogram to store <w1 w2 w3 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23195 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][2]->SetBinContent(b,cosP1nPsi1P1nPhi2MPhi3W2W3);
23196 } // end of if(dM011)
23197
23198 // <<w2 w3 cos n(psi1-phi2-phi3)>>:
23199 Double_t cosP1nPsi1M1nPhi2MPhi3W2W3 = 0.;
23200 if(dM011)
23201 {
23202 cosP1nPsi1M1nPhi2MPhi3W2W3 = (p1n0kRe*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))+2.*p1n0kIm*dReQ1n1k*dImQ1n1k
23203 - 1.*(p1n0kRe*dReQ2n2k+p1n0kIm*dImQ2n2k)
46b94261 23204 - 2.*s1p1k*dReQ1n1k
489d5531 23205 + 2.*q1n2kRe)
23206 / dM011;
23207 // fill profile for <<w1 w2 w3 cos n(psi1+phi2)>>:
23208 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1M1nPhi2MPhi3W2W3,dM011);
23209 // histogram to store <w1 w2 w3 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23210 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][3]->SetBinContent(b,cosP1nPsi1M1nPhi2MPhi3W2W3);
23211 } // end of if(dM011)
23212
23213 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
46b94261 23214
57340a27 23215} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights(TString type, TString ptOrEta)
23216
489d5531 23217
e1d101a6 23218//=======================================================================================================================
489d5531 23219
23220
23221void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights(TString type, TString ptOrEta)
23222{
23223 // Calculate correction terms for non-uniform acceptance for differential flow (sin terms).
23224
23225 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][0][cti], where cti runs as follows:
23226 // 0: <<sin n(psi1)>>
23227 // 1: <<w2 sin n(psi1+phi2)>>
23228 // 2: <<w2 w3 sin n(psi1+phi2-phi3)>>
23229 // 3: <<w2 w3 sin n(psi1-phi2-phi3)>>:
23230 // 4:
23231 // 5:
23232 // 6:
23233
23234 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
23235 Double_t dReQ1n1k = (*fReQ)(0,1);
23236 Double_t dReQ2n2k = (*fReQ)(1,2);
23237 //Double_t dReQ1n3k = (*fReQ)(0,3);
23238 //Double_t dReQ4n4k = (*fReQ)(3,4);
23239 Double_t dImQ1n1k = (*fImQ)(0,1);
23240 Double_t dImQ2n2k = (*fImQ)(1,2);
23241 //Double_t dImQ1n3k = (*fImQ)(0,3);
23242 //Double_t dImQ4n4k = (*fImQ)(3,4);
23243
1268c371 23244 // S^M_{p,k} (see .h file for the definition of fSpk):
23245 Double_t dSM1p1k = (*fSpk)(0,1);
23246 Double_t dSM1p2k = (*fSpk)(0,2);
23247 Double_t dSM2p1k = (*fSpk)(1,1);
489d5531 23248
2a98ceb8 23249 Int_t t = 0; // type flag
23250 Int_t pe = 0; // ptEta flag
489d5531 23251
23252 if(type == "RP")
23253 {
23254 t = 0;
23255 } else if(type == "POI")
23256 {
23257 t = 1;
23258 }
23259
23260 if(ptOrEta == "Pt")
23261 {
23262 pe = 0;
23263 } else if(ptOrEta == "Eta")
23264 {
23265 pe = 1;
23266 }
23267
23268 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
23269 Double_t minPtEta[2] = {fPtMin,fEtaMin};
23270 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
23271 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23272
23273 // looping over all bins and calculating correction terms:
23274 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23275 {
23276 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
23277 Double_t p1n0kRe = 0.;
23278 Double_t p1n0kIm = 0.;
23279
23280 // number of POIs in particular pt or eta bin:
23281 Double_t mp = 0.;
23282
23283 // 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 23284 //Double_t q1n2kRe = 0.;
489d5531 23285 Double_t q1n2kIm = 0.;
23286 Double_t q2n1kRe = 0.;
23287 Double_t q2n1kIm = 0.;
46b94261 23288
489d5531 23289 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23290 Double_t s1p1k = 0.;
23291 Double_t s1p2k = 0.;
46b94261 23292
489d5531 23293 // number of particles which are both RPs and POIs in particular pt or eta bin:
ea239361 23294 //Double_t mq = 0.;
489d5531 23295
23296 // M0111 from Eq. (118) in QC2c (to be improved (notation))
23297 Double_t dM01 = 0.;
23298 Double_t dM011 = 0.;
23299
23300 if(type == "POI")
23301 {
23302 // q_{m*n,k}:
ea239361 23303 //q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
23304 // * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
489d5531 23305 q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
23306 * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
23307 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
23308 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
23309 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
23310 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
ea239361 23311 //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 23312
489d5531 23313 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
23314 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
23315 }else if(type == "RP")
23316 {
23317 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
ea239361 23318 //q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
23319 // * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
489d5531 23320 q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
23321 * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
23322 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
23323 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
23324 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
23325 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
23326 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23327 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
23328 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
23329 //s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
3b552efe 23330 }
23331
23332 if(type == "POI")
23333 {
23334 // p_{m*n,k}:
489d5531 23335 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
23336 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
23337 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
3b552efe 23338 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
23339 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 23340 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23341 dM01 = mp*dSM1p1k-s1p1k;
23342 dM011 = mp*(dSM2p1k-dSM1p2k)
23343 - 2.*(s1p1k*dSM1p1k-s1p2k);
23344 // typeFlag = RP (0) or POI (1):
23345 t = 1;
489d5531 23346 } else if(type == "RP")
3b552efe 23347 {
489d5531 23348 // to be improved (cross-checked):
23349 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
23350 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
23351 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
23352 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
23353 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23354 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23355 dM01 = mp*dSM1p1k-s1p1k;
23356 dM011 = mp*(dSM2p1k-dSM1p2k)
489d5531 23357 - 2.*(s1p1k*dSM1p1k-s1p2k);
23358 // typeFlag = RP (0) or POI (1):
3b552efe 23359 t = 0;
23360 }
23361
489d5531 23362 // <<sin n(psi1)>>:
23363 Double_t sinP1nPsi = 0.;
23364 if(mp)
23365 {
23366 sinP1nPsi = p1n0kIm/mp;
23367
23368 // fill profile for <<sin n(psi1)>>:
23369 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi,mp);
23370 // histogram to store <sin n(psi1)> e-b-e (needed in some other methods):
23371 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][0]->SetBinContent(b,sinP1nPsi);
46b94261 23372 } // end of if(mp)
23373
489d5531 23374 // <<w2 sin n(psi1+phi2)>>:
23375 Double_t sinP1nPsiP1nPhiW2 = 0.;
23376 if(dM01)
23377 {
23378 sinP1nPsiP1nPhiW2 = (p1n0kRe*dImQ1n1k+p1n0kIm*dReQ1n1k-q2n1kIm)/(dM01);
23379 // fill profile for <<w2 sin n(psi1+phi2)>>:
23380 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsiP1nPhiW2,dM01);
23381 // histogram to store <w2 sin n(psi1+phi2)> e-b-e (needed in some other methods):
23382 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][1]->SetBinContent(b,sinP1nPsiP1nPhiW2);
23383 } // end of if(mp*dMult-mq)
23384
23385 // <<w2 w3 sin n(psi1+phi2-phi3)>>:
23386 Double_t sinP1nPsi1P1nPhi2MPhi3W2W3 = 0.;
23387 if(dM011)
23388 {
46b94261 23389 sinP1nPsi1P1nPhi2MPhi3W2W3 = (p1n0kIm*(pow(dImQ1n1k,2.)+pow(dReQ1n1k,2.))
23390 - p1n0kIm*dSM1p2k
23391 + q2n1kRe*dImQ1n1k-q2n1kIm*dReQ1n1k
23392 - s1p1k*dImQ1n1k
23393 + 2.*q1n2kIm)
23394 / dM011;
489d5531 23395 // fill profile for <<w2 w3 sin n(psi1+phi2-phi3)>>:
23396 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1P1nPhi2MPhi3W2W3,dM011);
23397 // histogram to store <w2 w3 sin n(psi1+phi2-phi3)> e-b-e (needed in some other methods):
23398 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][2]->SetBinContent(b,sinP1nPsi1P1nPhi2MPhi3W2W3);
23399 } // end of if(dM011)
23400
23401 // <<w2 w3 sin n(psi1-phi2-phi3)>>:
23402 Double_t sinP1nPsi1M1nPhi2MPhi3W2W3 = 0.;
23403 if(dM011)
23404 {
23405 sinP1nPsi1M1nPhi2MPhi3W2W3 = (p1n0kIm*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))-2.*p1n0kRe*dReQ1n1k*dImQ1n1k
23406 + 1.*(p1n0kRe*dImQ2n2k-p1n0kIm*dReQ2n2k)
46b94261 23407 + 2.*s1p1k*dImQ1n1k
489d5531 23408 - 2.*q1n2kIm)
23409 / dM011;
23410 // fill profile for <<w2 w3 sin n(psi1-phi2-phi3)>>:
23411 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1M1nPhi2MPhi3W2W3,dM011);
23412 // histogram to store <w2 w3 sin n(psi1-phi2-phi3)> e-b-e (needed in some other methods):
23413 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][3]->SetBinContent(b,sinP1nPsi1M1nPhi2MPhi3W2W3);
23414 } // end of if(dM011)
23415
23416 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23417
23418} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights(TString type, TString ptOrEta)
23419
e1d101a6 23420//=======================================================================================================================
489d5531 23421
0328db2d 23422void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 23423{
57340a27 23424 // Evaluate with nested loops correction terms for non-uniform acceptance
489d5531 23425 // with using particle weights (both sin and cos terms) relevant for differential flow.
23426
57340a27 23427 // Remark 1: "w1" in expressions bellow is a particle weight used only for particles which were
23428 // flagged both as POI and RP.
489d5531 23429 // Remark 2: Reduced correction terms for non-uniform acceptance are evaluated in pt bin number fCrossCheckInPtBinNo
23430 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
23431 // Remark 3: Results are stored in 1 bin profiles fDiffFlowDirectCorrections[t][pe][sc][cti], where first three indices runs as:
23432 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms], whilst the cti (correction term index) runs as follows:
23433 // cti:
23434 // 0: <<sc n(psi1)>>
23435 // 1: <<w2 sc n(psi1+phi2)>>
23436 // 2: <<w2 w3 sc n(psi1+phi2-phi3)>>
23437 // 3: <<w2 w3 sc n(psi1-phi2-phi3)>>
23438 // 4:
23439 // 5:
23440 // 6:
46b94261 23441
2a98ceb8 23442 Int_t typeFlag = 0;
23443 Int_t ptEtaFlag = 0;
489d5531 23444 if(type == "RP")
23445 {
23446 typeFlag = 0;
23447 } else if(type == "POI")
23448 {
23449 typeFlag = 1;
23450 }
23451 if(ptOrEta == "Pt")
23452 {
23453 ptEtaFlag = 0;
23454 } else if(ptOrEta == "Eta")
23455 {
23456 ptEtaFlag = 1;
23457 }
23458 // shortcuts:
23459 Int_t t = typeFlag;
23460 Int_t pe = ptEtaFlag;
23461
23462 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
23463 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
23464 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23465
23466 Int_t nPrim = anEvent->NumberOfTracks();
23467 AliFlowTrackSimple *aftsTrack = NULL;
23468
23469 Double_t psi1=0., phi2=0., phi3=0.;// phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
23470 Double_t wPhi2=1., wPhi3=1.;
23471
23472 Int_t n = fHarmonic;
23473
23474 // 1'-particle correction terms:
23475 for(Int_t i1=0;i1<nPrim;i1++)
23476 {
23477 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23478 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23479 if(typeFlag==1) // this is diff flow of POIs
489d5531 23480 {
23481 if(ptOrEta == "Pt")
23482 {
23483 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23484 } else if (ptOrEta == "Eta")
23485 {
23486 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23487 }
23488 } else // this is diff flow of RPs
23489 {
489d5531 23490 if(ptOrEta == "Pt")
23491 {
23492 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23493 } else if (ptOrEta == "Eta")
23494 {
23495 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23496 }
489d5531 23497 }
23498 psi1=aftsTrack->Phi();
23499 // sin terms:
23500 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*psi1),1.); // <<sin(n*(psi1))>>
23501 // cos terms:
23502 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*psi1),1.); // <<cos(n*(psi1))>>
23503 }//end of for(Int_t i1=0;i1<nPrim;i1++)
23504
23505 // 2'-particle correction terms:
23506 for(Int_t i1=0;i1<nPrim;i1++)
23507 {
23508 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23509 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23510 if(typeFlag==1) // this is diff flow of POIs
489d5531 23511 {
23512 if(ptOrEta == "Pt")
23513 {
23514 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23515 } else if (ptOrEta == "Eta")
23516 {
23517 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23518 }
23519 } else // this is diff flow of RPs
23520 {
489d5531 23521 if(ptOrEta == "Pt")
23522 {
23523 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23524 } else if (ptOrEta == "Eta")
23525 {
23526 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23527 }
489d5531 23528 }
23529 psi1=aftsTrack->Phi();
23530 for(Int_t i2=0;i2<nPrim;i2++)
23531 {
23532 if(i2==i1) continue;
23533 aftsTrack=anEvent->GetTrack(i2);
23534 // RP condition (!(first) particle in the correlator must be RP):
23535 if(!(aftsTrack->InRPSelection())) continue;
46b94261 23536 phi2=aftsTrack->Phi();
489d5531 23537 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23538 // sin terms:
23539 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2)),wPhi2); // <<w2 sin(n*(psi1+phi2))>>
23540 // cos terms:
23541 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2)),wPhi2); // <<w2 cos(n*(psi1+phi2))>>
23542 }//end of for(Int_t i2=0;i2<nPrim;i2++)
23543 }//end of for(Int_t i1=0;i1<nPrim;i1++)
23544
23545 // 3'-particle correction terms:
23546 for(Int_t i1=0;i1<nPrim;i1++)
23547 {
23548 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23549 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23550 if(typeFlag==1) // this is diff flow of POIs
489d5531 23551 {
23552 if(ptOrEta == "Pt")
23553 {
23554 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23555 } else if (ptOrEta == "Eta")
23556 {
23557 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23558 }
23559 } else // this is diff flow of RPs
23560 {
489d5531 23561 if(ptOrEta == "Pt")
23562 {
23563 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23564 } else if (ptOrEta == "Eta")
23565 {
23566 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23567 }
489d5531 23568 }
23569 psi1=aftsTrack->Phi();
23570 for(Int_t i2=0;i2<nPrim;i2++)
23571 {
23572 if(i2==i1) continue;
23573 aftsTrack=anEvent->GetTrack(i2);
23574 // RP condition (!(first) particle in the correlator must be RP):
23575 if(!(aftsTrack->InRPSelection())) continue;
23576 phi2=aftsTrack->Phi();
23577 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23578 for(Int_t i3=0;i3<nPrim;i3++)
23579 {
23580 if(i3==i1||i3==i2) continue;
23581 aftsTrack=anEvent->GetTrack(i3);
23582 // RP condition (!(first) particle in the correlator must be RP):
23583 if(!(aftsTrack->InRPSelection())) continue;
23584 phi3=aftsTrack->Phi();
23585 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23586 // sin terms:
23587 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))>>
23588 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))>>
23589 // cos terms:
23590 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))>>
23591 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))>>
23592 }//end of for(Int_t i3=0;i3<nPrim;i3++)
23593 }//end of for(Int_t i2=0;i2<nPrim;i2++)
46b94261 23594 }//end of for(Int_t i1=0;i1<nPrim;i1++)
489d5531 23595
23596} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
23597
e1d101a6 23598//=======================================================================================================================
2001bc3a 23599
b3dacf6b 23600void AliFlowAnalysisWithQCumulants::CheckPointersUsedInFinish()
23601{
23602 // Check all pointers used in method Finish().
23603
b77b6434 23604 if(!fAvMultiplicity)
23605 {
23606 cout<<endl;
23607 cout<<" WARNING (QC): fAvMultiplicity is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23608 cout<<endl;
23609 exit(0);
23610 }
b3dacf6b 23611 if(!fIntFlowCorrelationsPro)
23612 {
23613 cout<<endl;
23614 cout<<" WARNING (QC): fIntFlowCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23615 cout<<endl;
23616 exit(0);
23617 }
b40a910e 23618 if(!fIntFlowSquaredCorrelationsPro)
23619 {
23620 cout<<endl;
23621 cout<<" WARNING (QC): fIntFlowSquaredCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23622 cout<<endl;
23623 exit(0);
23624 }
b3dacf6b 23625 if(!fIntFlowCorrelationsHist)
23626 {
23627 cout<<endl;
23628 cout<<" WARNING (QC): fIntFlowCorrelationsHist is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23629 cout<<endl;
23630 exit(0);
23631 }
403e3389 23632 if((fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) && !fIntFlowExtraCorrelationsPro)
b77b6434 23633 {
23634 cout<<endl;
23635 cout<<" WARNING (QC): fIntFlowExtraCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23636 cout<<endl;
23637 exit(0);
23638 }
b3dacf6b 23639 for(Int_t power=0;power<2;power++)
23640 {
23641 if(!fIntFlowSumOfEventWeights[power])
23642 {
23643 cout<<endl;
23644 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeights[%d] is NULL in CheckPointersUsedInFinish() !!!!",power)<<endl;
23645 cout<<endl;
23646 exit(0);
23647 }
23648 } // end of for(Int_t power=0;power<2;power++)
23649 if(!fIntFlowProductOfCorrelationsPro)
23650 {
23651 cout<<endl;
23652 cout<<" WARNING (QC): fIntFlowProductOfCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23653 cout<<endl;
23654 exit(0);
23655 }
23656 if(!fIntFlowSumOfProductOfEventWeights)
23657 {
23658 cout<<endl;
23659 cout<<" WARNING (QC): fIntFlowSumOfProductOfEventWeights is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23660 cout<<endl;
23661 exit(0);
23662 }
23663 if(!fIntFlowCovariances)
23664 {
23665 cout<<endl;
23666 cout<<" WARNING (QC): fIntFlowCovariances is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23667 cout<<endl;
23668 exit(0);
23669 }
23670 if(!fIntFlowQcumulants)
23671 {
23672 cout<<endl;
23673 cout<<" WARNING (QC): fIntFlowQcumulants is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23674 cout<<endl;
23675 exit(0);
23676 }
0dd3b008 23677 if(!fIntFlow)
23678 {
23679 cout<<endl;
23680 cout<<" WARNING (QC): fIntFlow is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23681 cout<<endl;
23682 exit(0);
23683 }
23684 if(!fCommonHists)
23685 {
23686 cout<<endl;
23687 cout<<" WARNING (QC): fCommonHists is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23688 cout<<endl;
23689 exit(0);
23690 }
23691 if(!(fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th))
23692 {
23693 cout<<endl;
23694 cout<<" WARNING (QC): fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th"<<endl;
23695 cout<<" && fCommonHistsResults8th is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23696 cout<<endl;
23697 exit(0);
23698 }
e1d101a6 23699
b92ea2b9 23700 // NUA stuff:
23701 for(Int_t sc=0;sc<2;sc++) // sin/cos
23702 {
23703 if(!fIntFlowCorrectionTermsForNUAPro[sc])
23704 {
23705 cout<<endl;
23706 cout<<Form(" WARNING (QC): fIntFlowCorrectionTermsForNUAPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",sc)<<endl;
23707 cout<<endl;
23708 exit(0);
23709 }
23710 if(!fIntFlowCorrectionTermsForNUAHist[sc])
23711 {
23712 cout<<endl;
23713 cout<<Form(" WARNING (QC): fIntFlowCorrectionTermsForNUAHist[%d] is NULL in CheckPointersUsedInFinish() !!!!",sc)<<endl;
23714 cout<<endl;
23715 exit(0);
23716 }
23717 for(Int_t lq=0;lq<2;lq++) // linear/quadratic
23718 {
23719 if(!fIntFlowSumOfEventWeightsNUA[sc][lq])
23720 {
23721 cout<<endl;
23722 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeightsNUA[%d][%d] is NULL in CheckPointersUsedInFinish() !!!!",sc,lq)<<endl;
23723 cout<<endl;
23724 exit(0);
23725 }
23726 } // end of for(Int_t lq=0;lq<2;lq++) // linear/quadratic
23727 } // end of for(Int_t power=0;power<2;power++)
23728 if(!fIntFlowProductOfCorrectionTermsForNUAPro)
23729 {
23730 cout<<endl;
23731 cout<<" WARNING (QC): fIntFlowProductOfCorrectionTermsForNUAPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23732 cout<<endl;
23733 exit(0);
23734 }
23735 if(!fIntFlowSumOfProductOfEventWeightsNUA)
23736 {
23737 cout<<endl;
23738 cout<<" WARNING (QC): fIntFlowSumOfProductOfEventWeightsNUA is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23739 cout<<endl;
23740 exit(0);
23741 }
23742 if(!fIntFlowCovariancesNUA)
23743 {
23744 cout<<endl;
23745 cout<<" WARNING (QC): fIntFlowCovariancesNUA is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23746 cout<<endl;
23747 exit(0);
23748 }
23749 if(!fIntFlowQcumulantsErrorSquaredRatio)
23750 {
23751 cout<<endl;
23752 cout<<" WARNING (QC): fIntFlowQcumulantsErrorSquaredRatio is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23753 cout<<endl;
23754 exit(0);
23755 }
23756 if(!fIntFlowDetectorBias)
23757 {
23758 cout<<endl;
23759 cout<<" WARNING (QC): fIntFlowDetectorBias is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23760 cout<<endl;
23761 exit(0);
23762 }
23763
e1d101a6 23764 if(fCalculateMixedHarmonics)
23765 {
23766 if(!(fMixedHarmonicsFlags))
23767 {
23768 cout<<endl;
23769 cout<<" WARNING (QC): fMixedHarmonicsFlags is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23770 cout<<endl;
23771 exit(0);
23772 }
23773 if(!(f2pCorrelations && f3pCorrelations && f4pCorrelations && f5pCorrelations))
23774 {
23775 cout<<endl;
23776 cout<<" WARNING (QC): f2pCorrelations && f3pCorrelations && f4pCorrelations && f5pCorrelations is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23777 cout<<endl;
23778 exit(0);
23779 }
23780 if(!(f2pCumulants && f3pCumulants && f4pCumulants && f5pCumulants))
23781 {
23782 cout<<endl;
23783 cout<<" WARNING (QC): f2pCumulants && f3pCumulants && f4pCumulants && f5pCumulants is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23784 cout<<endl;
23785 exit(0);
23786 }
c10259fb 23787 for(Int_t power=0;power<2;power++)
23788 {
23789 if(!fMixedHarmonicEventWeights[power])
23790 {
23791 cout<<endl;
23792 cout<<Form(" WARNING (QC): fMixedHarmonicEventWeights[%d] is NULL in CheckPointersUsedInFinish() !!!!",power)<<endl;
23793 cout<<endl;
23794 exit(0);
23795 }
23796 } // end of for(Int_t power=0;power<2;power++)
23797 if(!(fMixedHarmonicProductOfEventWeights))
23798 {
23799 cout<<endl;
23800 cout<<" WARNING (QC): fMixedHarmonicProductOfEventWeights is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23801 cout<<endl;
23802 exit(0);
23803 }
23804 if(!(fMixedHarmonicProductOfCorrelations))
23805 {
23806 cout<<endl;
23807 cout<<" WARNING (QC): fMixedHarmonicProductOfCorrelations is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23808 cout<<endl;
23809 exit(0);
23810 }
e1d101a6 23811 } // end of if(fCalculateMixedHarmonics)
23812
b3dacf6b 23813 // Versus multiplicity:
23814 if(!fCalculateCumulantsVsM){return;}
b77b6434 23815 for(Int_t co=0;co<=3;co++) // cumulant order
b3dacf6b 23816 {
b77b6434 23817 if(!fIntFlowQcumulantsVsM[co])
b3dacf6b 23818 {
23819 cout<<endl;
b77b6434 23820 cout<<Form(" WARNING (QC): fIntFlowQcumulantsVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
b3dacf6b 23821 cout<<endl;
23822 exit(0);
23823 }
b77b6434 23824 if(!fIntFlowVsM[co])
b3dacf6b 23825 {
23826 cout<<endl;
b77b6434 23827 cout<<Form(" WARNING (QC): fIntFlowVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
23828 cout<<endl;
23829 exit(0);
23830 }
23831 if(!fIntFlowDetectorBiasVsM[co])
23832 {
23833 cout<<endl;
23834 cout<<Form(" WARNING (QC): fIntFlowDetectorBiasVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
23835 cout<<endl;
23836 exit(0);
23837 }
23838 } // end of for(Int_t c0=0;c0<=3;c0++) // cumulant order
23839 for(Int_t ci=0;ci<=3;ci++) // correlation index
23840 {
23841 if(!fIntFlowCorrelationsVsMPro[ci])
23842 {
23843 cout<<endl;
23844 cout<<Form(" WARNING (QC): fIntFlowCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
b3dacf6b 23845 cout<<endl;
23846 exit(0);
23847 }
b40a910e 23848 if(!fIntFlowSquaredCorrelationsVsMPro[ci])
23849 {
23850 cout<<endl;
23851 cout<<Form(" WARNING (QC): fIntFlowSquaredCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
23852 cout<<endl;
23853 exit(0);
23854 }
b77b6434 23855 if(!fIntFlowCorrelationsVsMHist[ci])
b92ea2b9 23856 {
23857 cout<<endl;
b77b6434 23858 cout<<Form(" WARNING (QC): fIntFlowCorrelationsVsMHist[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
b92ea2b9 23859 cout<<endl;
23860 exit(0);
23861 }
b3dacf6b 23862 for(Int_t power=0;power<2;power++)
23863 {
23864 if(!fIntFlowSumOfEventWeightsVsM[ci][power])
23865 {
23866 cout<<endl;
23867 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeightsVsM[%d][%d] is NULL in CheckPointersUsedInFinish() !!!!",ci,power)<<endl;
23868 cout<<endl;
23869 exit(0);
23870 }
23871 } // end of for(Int_t power=0;power<2;power++)
23872 } // end of for(Int_t ci=0;ci<=3;ci++) // correlation index
23873 for(Int_t i=0;i<6;i++)
23874 {
23875 if(!fIntFlowProductOfCorrelationsVsMPro[i])
23876 {
23877 cout<<endl;
23878 cout<<Form(" WARNING (QC): fIntFlowProductOfCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
23879 cout<<endl;
23880 exit(0);
23881 }
23882 if(!fIntFlowSumOfProductOfEventWeightsVsM[i])
23883 {
23884 cout<<endl;
23885 cout<<Form(" WARNING (QC): fIntFlowSumOfProductOfEventWeightsVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
23886 cout<<endl;
23887 exit(0);
23888 }
23889 if(!fIntFlowCovariancesVsM[i])
23890 {
23891 cout<<endl;
23892 cout<<Form(" WARNING (QC): fIntFlowCovariancesVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
23893 cout<<endl;
23894 exit(0);
23895 }
23896 } // end of for(Int_t i=0;i<6;i++)
23897 if(!fIntFlowRebinnedInM)
23898 {
23899 cout<<endl;
23900 cout<<" WARNING (QC): fIntFlowRebinnedInM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23901 cout<<endl;
23902 exit(0);
23903 }
23904 if(!fIntFlowQcumulantsRebinnedInM)
23905 {
23906 cout<<endl;
23907 cout<<" WARNING (QC): fIntFlowQcumulantsRebinnedInM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23908 cout<<endl;
23909 exit(0);
23910 }
23911
23912} // end of void AliFlowAnalysisWithQCumulants::CheckPointersUsedInFinish()
23913
e1d101a6 23914//=======================================================================================================================
b3dacf6b 23915
23916void AliFlowAnalysisWithQCumulants::CheckPointersUsedInMake()
23917{
1268c371 23918 // Check all pointers used in method Make(). // to be improved - check other pointers as well
b3dacf6b 23919
b77b6434 23920 if(!fAvMultiplicity)
23921 {
1268c371 23922 printf("\n WARNING (QC): fAvMultiplicity is NULL in CheckPointersUsedInMake() !!!!\n\n");
b77b6434 23923 exit(0);
23924 }
403e3389 23925 if((fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) && !fIntFlowExtraCorrelationsPro)
b77b6434 23926 {
1268c371 23927 printf("\n WARNING (QC): fIntFlowExtraCorrelationsPro is NULL in CheckPointersUsedInMake() !!!!\n\n");
b77b6434 23928 exit(0);
23929 }
1268c371 23930 // 2D:
23931 if(fCalculate2DDiffFlow)
23932 {
23933 for(Int_t t=0;t<2;t++) // type = RP or POI
23934 {
23935 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
23936 {
23937 if(!f2DDiffFlowCorrelationsPro[t][rci])
23938 {
23939 printf("\n WARNING (QC): f2DDiffFlowCorrelationsPro[%i][%i] is NULL in CheckPointersUsedInMake() !!!!\n\n",t,rci);
23940 exit(0);
23941 } // end of if(!f2DDiffFlowCorrelationsPro[t][rci])
23942 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
23943 } // end of for(Int_t t=0;t<2;t++)
23944 } // end of if(fCalculate2DDiffFlow)
b3dacf6b 23945
23946} // end of void AliFlowAnalysisWithQCumulants::CheckPointersUsedInMake()
23947
57340a27 23948