]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/FLOW/Base/AliFlowAnalysisWithQCumulants.cxx
from Ante Bilandzic:
[u/mrichter/AliRoot.git] / PWG / FLOW / Base / AliFlowAnalysisWithQCumulants.cxx
CommitLineData
489d5531 1/*************************************************************************
2* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3* *
4* Author: The ALICE Off-line Project. *
5* Contributors are mentioned in the code where appropriate. *
6* *
7* Permission to use, copy, modify and distribute this software and its *
8* documentation strictly for non-commercial purposes is hereby granted *
9* without fee, provided that the above copyright notice appears in all *
10* copies and that both the copyright notice and this permission notice *
11* appear in the supporting documentation. The authors make no claims *
12* about the suitability of this software for any purpose. It is *
13* provided "as is" without express or implied warranty. *
14**************************************************************************/
15
16/**********************************
17 * flow analysis with Q-cumulants *
18 * *
ff70ca91 19 * author: Ante Bilandzic *
20 * (abilandzic@gmail.com) *
489d5531 21 *********************************/
22
23#define AliFlowAnalysisWithQCumulants_cxx
24
25#include "Riostream.h"
26#include "AliFlowCommonConstants.h"
27#include "AliFlowCommonHist.h"
28#include "AliFlowCommonHistResults.h"
29#include "TChain.h"
30
31#include "TFile.h"
32#include "TList.h"
33#include "TGraph.h"
34#include "TParticle.h"
35#include "TRandom3.h"
36#include "TStyle.h"
37#include "TProfile.h"
38#include "TProfile2D.h"
489d5531 39#include "TMath.h"
40#include "TArrow.h"
41#include "TPaveLabel.h"
42#include "TCanvas.h"
43#include "AliFlowEventSimple.h"
44#include "AliFlowTrackSimple.h"
45#include "AliFlowAnalysisWithQCumulants.h"
46#include "TArrayD.h"
47#include "TRandom.h"
48#include "TF1.h"
49
50class TH1;
51class TH2;
52class TGraph;
53class TPave;
54class TLatex;
55class TMarker;
56class TRandom3;
57class TObjArray;
58class TList;
59class TCanvas;
60class TSystem;
61class TROOT;
62class AliFlowVector;
63class TVector;
64
489d5531 65//================================================================================================================
66
3a7af7bd 67using std::endl;
68using std::cout;
69using std::flush;
489d5531 70ClassImp(AliFlowAnalysisWithQCumulants)
71
72AliFlowAnalysisWithQCumulants::AliFlowAnalysisWithQCumulants():
73 // 0.) base:
74 fHistList(NULL),
75 // 1.) common:
53884472 76 fBookOnlyBasicCCH(kTRUE),
489d5531 77 fCommonHists(NULL),
78 fCommonHists2nd(NULL),
79 fCommonHists4th(NULL),
80 fCommonHists6th(NULL),
81 fCommonHists8th(NULL),
82 fCommonHistsResults2nd(NULL),
83 fCommonHistsResults4th(NULL),
84 fCommonHistsResults6th(NULL),
85 fCommonHistsResults8th(NULL),
86 fnBinsPhi(0),
87 fPhiMin(0),
88 fPhiMax(0),
89 fPhiBinWidth(0),
90 fnBinsPt(0),
91 fPtMin(0),
92 fPtMax(0),
93 fPtBinWidth(0),
94 fnBinsEta(0),
95 fEtaMin(0),
96 fEtaMax(0),
97 fEtaBinWidth(0),
1268c371 98 fCommonConstants(NULL),
dd442cd2 99 fFillMultipleControlHistograms(kFALSE),
489d5531 100 fHarmonic(2),
101 fAnalysisLabel(NULL),
102 // 2a.) particle weights:
103 fWeightsList(NULL),
104 fUsePhiWeights(kFALSE),
105 fUsePtWeights(kFALSE),
106 fUseEtaWeights(kFALSE),
403e3389 107 fUseTrackWeights(kFALSE),
489d5531 108 fUseParticleWeights(NULL),
109 fPhiWeights(NULL),
110 fPtWeights(NULL),
111 fEtaWeights(NULL),
112 // 2b.) event weights:
113 fMultiplicityWeight(NULL),
df23c5ae 114 fMultiplicityIs(AliFlowCommonConstants::kRP),
489d5531 115 // 3.) integrated flow:
116 fIntFlowList(NULL),
117 fIntFlowProfiles(NULL),
118 fIntFlowResults(NULL),
3435cacb 119 fIntFlowAllCorrelationsVsM(NULL),
489d5531 120 fIntFlowFlags(NULL),
b92ea2b9 121 fApplyCorrectionForNUA(kFALSE),
2001bc3a 122 fApplyCorrectionForNUAVsM(kFALSE),
9da1a4f3 123 fnBinsMult(10000),
067e9bc8 124 fMinMult(0.),
125 fMaxMult(10000.),
b77b6434 126 fPropagateErrorAlsoFromNIT(kFALSE),
8ed4edc7 127 fCalculateCumulantsVsM(kFALSE),
3435cacb 128 fCalculateAllCorrelationsVsM(kFALSE),
0dd3b008 129 fMinimumBiasReferenceFlow(kTRUE),
e5834fcb 130 fForgetAboutCovariances(kFALSE),
131 fStorePhiDistributionForOneEvent(kFALSE),
d9e6d8bb 132 fExactNoRPs(0),
489d5531 133 fReQ(NULL),
134 fImQ(NULL),
1268c371 135 fSpk(NULL),
489d5531 136 fIntFlowCorrelationsEBE(NULL),
137 fIntFlowEventWeightsForCorrelationsEBE(NULL),
138 fIntFlowCorrelationsAllEBE(NULL),
df23c5ae 139 fNumberOfRPsEBE(0.),
140 fNumberOfPOIsEBE(0.),
e5834fcb 141 fReferenceMultiplicityEBE(0.),
489d5531 142 fAvMultiplicity(NULL),
143 fIntFlowCorrelationsPro(NULL),
b40a910e 144 fIntFlowSquaredCorrelationsPro(NULL),
489d5531 145 fIntFlowCorrelationsAllPro(NULL),
146 fIntFlowExtraCorrelationsPro(NULL),
147 fIntFlowProductOfCorrelationsPro(NULL),
0328db2d 148 fIntFlowProductOfCorrectionTermsForNUAPro(NULL),
489d5531 149 fIntFlowCorrelationsHist(NULL),
150 fIntFlowCorrelationsAllHist(NULL),
151 fIntFlowCovariances(NULL),
152 fIntFlowSumOfProductOfEventWeights(NULL),
0328db2d 153 fIntFlowCovariancesNUA(NULL),
154 fIntFlowSumOfProductOfEventWeightsNUA(NULL),
489d5531 155 fIntFlowQcumulants(NULL),
b92ea2b9 156 fIntFlowQcumulantsRebinnedInM(NULL),
157 fIntFlowQcumulantsErrorSquaredRatio(NULL),
489d5531 158 fIntFlow(NULL),
b3dacf6b 159 fIntFlowRebinnedInM(NULL),
2001bc3a 160 fIntFlowDetectorBias(NULL),
489d5531 161 // 4.) differential flow:
162 fDiffFlowList(NULL),
163 fDiffFlowProfiles(NULL),
164 fDiffFlowResults(NULL),
1268c371 165 fDiffFlow2D(NULL),
489d5531 166 fDiffFlowFlags(NULL),
1268c371 167 fCalculateDiffFlow(kTRUE),
168 fCalculate2DDiffFlow(kFALSE),
62e36168 169 fCalculateDiffFlowVsEta(kTRUE),
64e500e3 170 // 5.) other differential correlators:
171 fOtherDiffCorrelatorsList(NULL),
172 // 6.) distributions:
57340a27 173 fDistributionsList(NULL),
174 fDistributionsFlags(NULL),
489d5531 175 fStoreDistributions(kFALSE),
64e500e3 176 // 7.) various:
e5834fcb 177 fVariousList(NULL),
178 fPhiDistributionForOneEvent(NULL),
e1d101a6 179 // 8.) debugging and cross-checking:
489d5531 180 fNestedLoopsList(NULL),
181 fEvaluateIntFlowNestedLoops(kFALSE),
182 fEvaluateDiffFlowNestedLoops(kFALSE),
183 fMaxAllowedMultiplicity(10),
184 fEvaluateNestedLoops(NULL),
185 fIntFlowDirectCorrelations(NULL),
186 fIntFlowExtraDirectCorrelations(NULL),
187 fCrossCheckInPtBinNo(10),
3b552efe 188 fCrossCheckInEtaBinNo(20),
e1d101a6 189 fNoOfParticlesInBin(NULL),
190 fMixedHarmonicsNestedLoops(NULL),
191 // 9.) mixed harmonics:
192 fMixedHarmonicsList(NULL),
193 fMixedHarmonicsProfiles(NULL),
194 fMixedHarmonicsResults(NULL),
c10259fb 195 fMixedHarmonicsErrorPropagation(NULL),
e1d101a6 196 fMixedHarmonicsFlags(NULL),
197 fCalculateMixedHarmonics(kFALSE),
198 fCalculateMixedHarmonicsVsM(kFALSE),
199 f2pCorrelations(NULL),
200 f3pCorrelations(NULL),
201 f4pCorrelations(NULL),
202 f5pCorrelations(NULL),
203 f6pCorrelations(NULL),
204 f7pCorrelations(NULL),
205 f8pCorrelations(NULL),
206 f2pCumulants(NULL),
207 f3pCumulants(NULL),
208 f4pCumulants(NULL),
209 f5pCumulants(NULL),
210 f6pCumulants(NULL),
211 f7pCumulants(NULL),
c10259fb 212 f8pCumulants(NULL),
213 fMixedHarmonicProductOfEventWeights(NULL),
df23c5ae 214 fMixedHarmonicProductOfCorrelations(NULL),
215 // 10.) Control histograms:
216 fControlHistogramsList(NULL),
217 fControlHistogramsFlags(NULL),
218 fStoreControlHistograms(kFALSE),
219 fCorrelationNoRPsVsRefMult(NULL),
220 fCorrelationNoPOIsVsRefMult(NULL),
221 fCorrelationNoRPsVsNoPOIs(NULL)
489d5531 222 {
223 // constructor
224
225 // base list to hold all output objects:
226 fHistList = new TList();
227 fHistList->SetName("cobjQC");
228 fHistList->SetOwner(kTRUE);
229
230 // list to hold histograms with phi, pt and eta weights:
231 fWeightsList = new TList();
232
233 // multiplicity weight:
234 fMultiplicityWeight = new TString("combinations");
df23c5ae 235
489d5531 236 // analysis label;
237 fAnalysisLabel = new TString();
238
239 // initialize all arrays:
240 this->InitializeArraysForIntFlow();
241 this->InitializeArraysForDiffFlow();
242 this->InitializeArraysForDistributions();
e5834fcb 243 this->InitializeArraysForVarious();
489d5531 244 this->InitializeArraysForNestedLoops();
c10259fb 245 this->InitializeArraysForMixedHarmonics();
d9e6d8bb 246 this->InitializeArraysForControlHistograms();
489d5531 247
248 } // end of constructor
249
489d5531 250//================================================================================================================
251
489d5531 252AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
253{
254 // destructor
255
256 delete fHistList;
257
258} // end of AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
259
489d5531 260//================================================================================================================
261
489d5531 262void AliFlowAnalysisWithQCumulants::Init()
263{
3b552efe 264 // a) Cross check if the settings make sense before starting the QC adventure;
489d5531 265 // b) Access all common constants;
266 // c) Book all objects;
3b552efe 267 // d) Store flags for integrated and differential flow;
489d5531 268 // e) Store flags for distributions of corelations;
e1d101a6 269 // f) Store harmonic which will be estimated;
270 // g) Store flags for mixed harmonics.
3b552efe 271
489d5531 272 //save old value and prevent histograms from being added to directory
273 //to avoid name clashes in case multiple analaysis objects are used
274 //in an analysis
275 Bool_t oldHistAddStatus = TH1::AddDirectoryStatus();
276 TH1::AddDirectory(kFALSE);
277
3b552efe 278 // a) Cross check if the settings make sense before starting the QC adventure;
489d5531 279 this->CrossCheckSettings();
1268c371 280 // b) Access all common constants and book a profile to hold them:
281 this->CommonConstants("Init");
489d5531 282 // c) Book all objects:
1268c371 283 this->BookAndFillWeightsHistograms();
489d5531 284 this->BookAndNestAllLists();
285 this->BookCommonHistograms();
286 this->BookEverythingForIntegratedFlow();
287 this->BookEverythingForDifferentialFlow();
1268c371 288 this->BookEverythingFor2DDifferentialFlow();
489d5531 289 this->BookEverythingForDistributions();
e5834fcb 290 this->BookEverythingForVarious();
489d5531 291 this->BookEverythingForNestedLoops();
e1d101a6 292 this->BookEverythingForMixedHarmonics();
df23c5ae 293 this->BookEverythingForControlHistograms();
e1d101a6 294
489d5531 295 // d) Store flags for integrated and differential flow:
296 this->StoreIntFlowFlags();
3b552efe 297 this->StoreDiffFlowFlags();
489d5531 298 // e) Store flags for distributions of corelations:
299 this->StoreFlagsForDistributions();
300 // f) Store harmonic which will be estimated:
301 this->StoreHarmonic();
e1d101a6 302 // g) Store flags for mixed harmonics:
303 this->StoreMixedHarmonicsFlags();
489d5531 304
305 TH1::AddDirectory(oldHistAddStatus);
306} // end of void AliFlowAnalysisWithQCumulants::Init()
307
489d5531 308//================================================================================================================
309
489d5531 310void AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
311{
312 // Running over data only in this method.
313
b3dacf6b 314 // a) Check all pointers used in this method;
315 // b) Define local variables;
316 // c) Fill the common control histograms and call the method to fill fAvMultiplicity;
1268c371 317 // d) Loop over data and calculate e-b-e quantities Q_{n,k}, S_{p,k} and s_{p,k};
318 // e) Calculate the final expressions for S_{p,k} and s_{p,k} (important !!!!);
319 // f) Call the methods which calculate correlations for reference flow;
320 // g) Call the methods which calculate correlations for differential flow;
321 // h) Call the methods which calculate correlations for 2D differential flow;
64e500e3 322 // i) Call the methods which calculate other differential correlators;
323 // j) Distributions of correlations;
324 // k) Store phi distribution for one event to illustrate flow;
325 // l) Cross-check with nested loops correlators for reference flow;
326 // m) Cross-check with nested loops correlators for differential flow;
327 // n) Reset all event-by-event quantities (very important !!!!).
489d5531 328
b3dacf6b 329 // a) Check all pointers used in this method:
330 this->CheckPointersUsedInMake();
331
332 // b) Define local variables:
489d5531 333 Double_t dPhi = 0.; // azimuthal angle in the laboratory frame
334 Double_t dPt = 0.; // transverse momentum
335 Double_t dEta = 0.; // pseudorapidity
489d5531 336 Double_t wPhi = 1.; // phi weight
337 Double_t wPt = 1.; // pt weight
338 Double_t wEta = 1.; // eta weight
38a1e8b3 339 Double_t wTrack = 1.; // track weight
d9e6d8bb 340 Int_t nCounterNoRPs = 0; // needed only for shuffling
df23c5ae 341 fNumberOfRPsEBE = anEvent->GetNumberOfRPs(); // number of RPs (i.e. number of reference particles)
d9e6d8bb 342 if(fExactNoRPs > 0 && fNumberOfRPsEBE<fExactNoRPs){return;}
df23c5ae 343 fNumberOfPOIsEBE = anEvent->GetNumberOfPOIs(); // number of POIs (i.e. number of particles of interest)
e5834fcb 344 fReferenceMultiplicityEBE = anEvent->GetReferenceMultiplicity(); // reference multiplicity for current event
1268c371 345 Double_t ptEta[2] = {0.,0.}; // 0 = dPt, 1 = dEta
9f33751d 346
b3dacf6b 347 // c) Fill the common control histograms and call the method to fill fAvMultiplicity:
489d5531 348 this->FillCommonControlHistograms(anEvent);
df23c5ae 349 this->FillAverageMultiplicities(fNumberOfRPsEBE);
350 if(fStoreControlHistograms){this->FillControlHistograms(anEvent);}
489d5531 351
1268c371 352 // d) Loop over data and calculate e-b-e quantities Q_{n,k}, S_{p,k} and s_{p,k}:
df23c5ae 353 Int_t nPrim = anEvent->NumberOfTracks(); // nPrim = total number of primary tracks
489d5531 354 AliFlowTrackSimple *aftsTrack = NULL;
1268c371 355 Int_t n = fHarmonic; // shortcut for the harmonic
489d5531 356 for(Int_t i=0;i<nPrim;i++)
357 {
d9e6d8bb 358 if(fExactNoRPs > 0 && nCounterNoRPs>fExactNoRPs){continue;}
489d5531 359 aftsTrack=anEvent->GetTrack(i);
360 if(aftsTrack)
361 {
1268c371 362 if(!(aftsTrack->InRPSelection() || aftsTrack->InPOISelection())){continue;} // safety measure: consider only tracks which are RPs or POIs
489d5531 363 if(aftsTrack->InRPSelection()) // RP condition:
364 {
d9e6d8bb 365 nCounterNoRPs++;
489d5531 366 dPhi = aftsTrack->Phi();
367 dPt = aftsTrack->Pt();
368 dEta = aftsTrack->Eta();
369 if(fUsePhiWeights && fPhiWeights && fnBinsPhi) // determine phi weight for this particle:
370 {
371 wPhi = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*fnBinsPhi/TMath::TwoPi())));
372 }
373 if(fUsePtWeights && fPtWeights && fnBinsPt) // determine pt weight for this particle:
374 {
375 wPt = fPtWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/fPtBinWidth)));
376 }
377 if(fUseEtaWeights && fEtaWeights && fEtaBinWidth) // determine eta weight for this particle:
378 {
379 wEta = fEtaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/fEtaBinWidth)));
38a1e8b3 380 }
381 // Access track weight:
403e3389 382 if(fUseTrackWeights)
383 {
384 wTrack = aftsTrack->Weight();
385 }
e1d101a6 386 // Calculate Re[Q_{m*n,k}] and Im[Q_{m*n,k}] for this event (m = 1,2,...,12, k = 0,1,...,8):
387 for(Int_t m=0;m<12;m++) // to be improved - hardwired 6
489d5531 388 {
1268c371 389 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 390 {
38a1e8b3 391 (*fReQ)(m,k)+=pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1)*n*dPhi);
392 (*fImQ)(m,k)+=pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1)*n*dPhi);
489d5531 393 }
394 }
1268c371 395 // Calculate S_{p,k} for this event (Remark: final calculation of S_{p,k} follows after the loop over data bellow):
489d5531 396 for(Int_t p=0;p<8;p++)
397 {
398 for(Int_t k=0;k<9;k++)
399 {
38a1e8b3 400 (*fSpk)(p,k)+=pow(wPhi*wPt*wEta*wTrack,k);
489d5531 401 }
402 }
1268c371 403 // Differential flow:
404 if(fCalculateDiffFlow || fCalculate2DDiffFlow)
489d5531 405 {
1268c371 406 ptEta[0] = dPt;
407 ptEta[1] = dEta;
408 // Calculate r_{m*n,k} and s_{p,k} (r_{m,k} is 'p-vector' for RPs):
409 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 410 {
1268c371 411 for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
489d5531 412 {
1268c371 413 if(fCalculateDiffFlow)
414 {
62e36168 415 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
1268c371 416 {
38a1e8b3 417 fReRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
418 fImRPQ1dEBE[0][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 419 if(m==0) // s_{p,k} does not depend on index m
420 {
38a1e8b3 421 fs1dEBE[0][pe][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 422 } // end of if(m==0) // s_{p,k} does not depend on index m
423 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
424 } // end of if(fCalculateDiffFlow)
425 if(fCalculate2DDiffFlow)
426 {
38a1e8b3 427 fReRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
428 fImRPQ2dEBE[0][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 429 if(m==0) // s_{p,k} does not depend on index m
430 {
38a1e8b3 431 fs2dEBE[0][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 432 } // end of if(m==0) // s_{p,k} does not depend on index m
433 } // end of if(fCalculate2DDiffFlow)
434 } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
435 } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
436 // Checking if RP particle is also POI particle:
437 if(aftsTrack->InPOISelection())
489d5531 438 {
1268c371 439 // Calculate q_{m*n,k} and s_{p,k} ('q-vector' and 's' for RPs && POIs):
440 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 441 {
1268c371 442 for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
489d5531 443 {
1268c371 444 if(fCalculateDiffFlow)
445 {
62e36168 446 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
1268c371 447 {
38a1e8b3 448 fReRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
449 fImRPQ1dEBE[2][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 450 if(m==0) // s_{p,k} does not depend on index m
451 {
38a1e8b3 452 fs1dEBE[2][pe][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 453 } // end of if(m==0) // s_{p,k} does not depend on index m
454 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
455 } // end of if(fCalculateDiffFlow)
456 if(fCalculate2DDiffFlow)
457 {
38a1e8b3 458 fReRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
459 fImRPQ2dEBE[2][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 460 if(m==0) // s_{p,k} does not depend on index m
461 {
38a1e8b3 462 fs2dEBE[2][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k),1.);
1268c371 463 } // end of if(m==0) // s_{p,k} does not depend on index m
464 } // end of if(fCalculate2DDiffFlow)
465 } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
466 } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
467 } // end of if(aftsTrack->InPOISelection())
468 } // end of if(fCalculateDiffFlow || fCalculate2DDiffFlow)
489d5531 469 } // end of if(pTrack->InRPSelection())
489d5531 470 if(aftsTrack->InPOISelection())
471 {
472 dPhi = aftsTrack->Phi();
473 dPt = aftsTrack->Pt();
474 dEta = aftsTrack->Eta();
38a1e8b3 475 wPhi = 1.;
476 wPt = 1.;
477 wEta = 1.;
478 wTrack = 1.;
479 if(fUsePhiWeights && fPhiWeights && fnBinsPhi && aftsTrack->InRPSelection()) // determine phi weight for POI && RP particle:
480 {
481 wPhi = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*fnBinsPhi/TMath::TwoPi())));
482 }
483 if(fUsePtWeights && fPtWeights && fnBinsPt && aftsTrack->InRPSelection()) // determine pt weight for POI && RP particle:
484 {
485 wPt = fPtWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/fPtBinWidth)));
486 }
487 if(fUseEtaWeights && fEtaWeights && fEtaBinWidth && aftsTrack->InRPSelection()) // determine eta weight for POI && RP particle:
488 {
489 wEta = fEtaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/fEtaBinWidth)));
490 }
491 // Access track weight for POI && RP particle:
403e3389 492 if(aftsTrack->InRPSelection() && fUseTrackWeights)
38a1e8b3 493 {
494 wTrack = aftsTrack->Weight();
495 }
1268c371 496 ptEta[0] = dPt;
497 ptEta[1] = dEta;
498 // Calculate p_{m*n,k} ('p-vector' for POIs):
499 for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
489d5531 500 {
1268c371 501 for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
489d5531 502 {
1268c371 503 if(fCalculateDiffFlow)
504 {
62e36168 505 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
1268c371 506 {
38a1e8b3 507 fReRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
508 fImRPQ1dEBE[1][pe][m][k]->Fill(ptEta[pe],pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 509 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
510 } // end of if(fCalculateDiffFlow)
511 if(fCalculate2DDiffFlow)
512 {
38a1e8b3 513 fReRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Cos((m+1.)*n*dPhi),1.);
514 fImRPQ2dEBE[1][m][k]->Fill(dPt,dEta,pow(wPhi*wPt*wEta*wTrack,k)*TMath::Sin((m+1.)*n*dPhi),1.);
1268c371 515 } // end of if(fCalculate2DDiffFlow)
516 } // end of for(Int_t m=0;m<4;m++) // to be improved - hardwired 4
517 } // end of for(Int_t k=0;k<9;k++) // to be improved - hardwired 9
b77b6434 518 } // end of if(pTrack->InPOISelection())
489d5531 519 } else // to if(aftsTrack)
520 {
38a1e8b3 521 printf("\n WARNING (QC): No particle (i.e. aftsTrack is a NULL pointer in AFAWQC::Make())!!!!\n\n");
489d5531 522 }
523 } // end of for(Int_t i=0;i<nPrim;i++)
524
1268c371 525 // e) Calculate the final expressions for S_{p,k} and s_{p,k} (important !!!!):
489d5531 526 for(Int_t p=0;p<8;p++)
527 {
528 for(Int_t k=0;k<9;k++)
529 {
1268c371 530 (*fSpk)(p,k)=pow((*fSpk)(p,k),p+1);
531 // ... for the time being s_{p,k} dosn't need higher powers, so no need to finalize it here ...
532 } // end of for(Int_t k=0;k<9;k++)
533 } // end of for(Int_t p=0;p<8;p++)
489d5531 534
1268c371 535 // f) Call the methods which calculate correlations for reference flow:
489d5531 536 if(!fEvaluateIntFlowNestedLoops)
537 {
403e3389 538 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 539 {
df23c5ae 540 if(fNumberOfRPsEBE>1){this->CalculateIntFlowCorrelations();} // without using particle weights
403e3389 541 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 542 {
df23c5ae 543 if(fNumberOfRPsEBE>1){this->CalculateIntFlowCorrelationsUsingParticleWeights();} // with using particle weights
1268c371 544 }
545 // Whether or not using particle weights the following is calculated in the same way:
df23c5ae 546 if(fNumberOfRPsEBE>3){this->CalculateIntFlowProductOfCorrelations();}
547 if(fNumberOfRPsEBE>1){this->CalculateIntFlowSumOfEventWeights();}
548 if(fNumberOfRPsEBE>1){this->CalculateIntFlowSumOfProductOfEventWeights();}
1268c371 549 // Non-isotropic terms:
403e3389 550 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 551 {
df23c5ae 552 if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUASinTerms();}
553 if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUACosTerms();}
403e3389 554 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
b92ea2b9 555 {
df23c5ae 556 if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights();}
557 if(fNumberOfRPsEBE>0){this->CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights();}
1268c371 558 }
559 // Whether or not using particle weights the following is calculated in the same way:
df23c5ae 560 if(fNumberOfRPsEBE>0){this->CalculateIntFlowProductOfCorrectionTermsForNUA();}
561 if(fNumberOfRPsEBE>0){this->CalculateIntFlowSumOfEventWeightsNUA();}
562 if(fNumberOfRPsEBE>0){this->CalculateIntFlowSumOfProductOfEventWeightsNUA();}
e1d101a6 563 // Mixed harmonics:
564 if(fCalculateMixedHarmonics){this->CalculateMixedHarmonics();}
489d5531 565 } // end of if(!fEvaluateIntFlowNestedLoops)
566
1268c371 567 // g) Call the methods which calculate correlations for differential flow:
568 if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
489d5531 569 {
403e3389 570 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 571 {
1268c371 572 // Without using particle weights:
489d5531 573 this->CalculateDiffFlowCorrelations("RP","Pt");
62e36168 574 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelations("RP","Eta");}
489d5531 575 this->CalculateDiffFlowCorrelations("POI","Pt");
62e36168 576 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelations("POI","Eta");}
1268c371 577 // Non-isotropic terms:
b92ea2b9 578 this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Pt");
62e36168 579 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Eta");}
b92ea2b9 580 this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Pt");
62e36168 581 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Eta");}
b92ea2b9 582 this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Pt");
62e36168 583 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Eta");}
b92ea2b9 584 this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Pt");
62e36168 585 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Eta");}
403e3389 586 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 587 {
1268c371 588 // With using particle weights:
489d5531 589 this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Pt");
62e36168 590 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Eta");}
489d5531 591 this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Pt");
62e36168 592 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Eta");}
1268c371 593 // Non-isotropic terms:
b92ea2b9 594 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Pt");
62e36168 595 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Eta");}
b92ea2b9 596 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Pt");
62e36168 597 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Eta");}
b92ea2b9 598 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Pt");
62e36168 599 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Eta");}
b92ea2b9 600 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Pt");
62e36168 601 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Eta");}
1268c371 602 }
603 // Whether or not using particle weights the following is calculated in the same way:
489d5531 604 this->CalculateDiffFlowProductOfCorrelations("RP","Pt");
62e36168 605 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowProductOfCorrelations("RP","Eta");}
489d5531 606 this->CalculateDiffFlowProductOfCorrelations("POI","Pt");
62e36168 607 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowProductOfCorrelations("POI","Eta");}
489d5531 608 this->CalculateDiffFlowSumOfEventWeights("RP","Pt");
62e36168 609 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfEventWeights("RP","Eta");}
489d5531 610 this->CalculateDiffFlowSumOfEventWeights("POI","Pt");
62e36168 611 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfEventWeights("POI","Eta");}
489d5531 612 this->CalculateDiffFlowSumOfProductOfEventWeights("RP","Pt");
62e36168 613 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfProductOfEventWeights("RP","Eta");}
489d5531 614 this->CalculateDiffFlowSumOfProductOfEventWeights("POI","Pt");
62e36168 615 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowSumOfProductOfEventWeights("POI","Eta");}
1268c371 616 } // end of if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
489d5531 617
1268c371 618 // h) Call the methods which calculate correlations for 2D differential flow:
619 if(!fEvaluateDiffFlowNestedLoops && fCalculate2DDiffFlow)
620 {
403e3389 621 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 622 {
1268c371 623 // Without using particle weights:
624 this->Calculate2DDiffFlowCorrelations("RP");
625 this->Calculate2DDiffFlowCorrelations("POI");
626 // Non-isotropic terms:
627 // ... to be ctd ...
403e3389 628 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 629 {
630 // With using particle weights:
631 // ... to be ctd ...
632 // Non-isotropic terms:
633 // ... to be ctd ...
634 }
635 // Whether or not using particle weights the following is calculated in the same way:
636 // ... to be ctd ...
637 } // end of if(!fEvaluateDiffFlowNestedLoops && fCalculate2DDiffFlow)
64e500e3 638
639 // i) Call the methods which calculate other differential correlators:
b84464d3 640 if(!fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
64e500e3 641 {
403e3389 642 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
64e500e3 643 {
644 // Without using particle weights:
645 this->CalculateOtherDiffCorrelators("RP","Pt");
62e36168 646 if(fCalculateDiffFlowVsEta){this->CalculateOtherDiffCorrelators("RP","Eta");}
64e500e3 647 this->CalculateOtherDiffCorrelators("POI","Pt");
62e36168 648 if(fCalculateDiffFlowVsEta){this->CalculateOtherDiffCorrelators("POI","Eta");}
403e3389 649 } else // to if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
64e500e3 650 {
651 // With using particle weights:
652 // ... to be ctd ...
653 }
654 // Whether or not using particle weights the following is calculated in the same way:
655 // ... to be ctd ...
656 } // end of if(!fEvaluateDiffFlowNestedLoops)
657
658 // j) Distributions of correlations:
e5834fcb 659 if(fStoreDistributions){this->StoreDistributionsOfCorrelations();}
660
64e500e3 661 // k) Store phi distribution for one event to illustrate flow:
e5834fcb 662 if(fStorePhiDistributionForOneEvent){this->StorePhiDistributionForOneEvent(anEvent);}
1268c371 663
64e500e3 664 // l) Cross-check with nested loops correlators for reference flow:
1268c371 665 if(fEvaluateIntFlowNestedLoops){this->EvaluateIntFlowNestedLoops(anEvent);}
666
64e500e3 667 // m) Cross-check with nested loops correlators for differential flow:
1268c371 668 if(fEvaluateDiffFlowNestedLoops){this->EvaluateDiffFlowNestedLoops(anEvent);}
489d5531 669
64e500e3 670 // n) Reset all event-by-event quantities (very important !!!!):
489d5531 671 this->ResetEventByEventQuantities();
672
673} // end of AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
674
e1d101a6 675//=======================================================================================================================
489d5531 676
489d5531 677void AliFlowAnalysisWithQCumulants::Finish()
678{
679 // Calculate the final results.
489d5531 680
b3dacf6b 681 // a) Check all pointers used in this method;
e1d101a6 682 // b) Access the constants;
b3dacf6b 683 // c) Access the flags;
b92ea2b9 684 // d) Calculate reference cumulants (not corrected for detector effects);
685 // e) Correct reference cumulants for detector effects;
686 // f) Calculate reference flow;
b77b6434 687 // g) Store results for reference flow in AliFlowCommonHistResults and print them on the screen;
b92ea2b9 688 // h) Calculate the final results for differential flow (without/with weights);
689 // i) Correct the results for differential flow (without/with weights) for effects of non-uniform acceptance (NUA);
690 // j) Calculate the final results for integrated flow (RP/POI) and store in AliFlowCommonHistResults;
691 // k) Store results for differential flow in AliFlowCommonHistResults;
692 // l) Print the final results for integrated flow (RP/POI) on the screen;
e1d101a6 693 // m) Cross-checking: Results from Q-vectors vs results from nested loops;
694 // i) Calculate cumulants for mixed harmonics.
695
b3dacf6b 696 // a) Check all pointers used in this method:
697 this->CheckPointersUsedInFinish();
698
e1d101a6 699 // b) Access the constants:
1268c371 700 this->CommonConstants("Finish");
489d5531 701
b3dacf6b 702 if(fCommonHists && fCommonHists->GetHarmonic()) // to be improved (moved somewhere else)
489d5531 703 {
b3dacf6b 704 fHarmonic = (Int_t)(fCommonHists->GetHarmonic())->GetBinContent(1);
489d5531 705 }
b3dacf6b 706
e1d101a6 707 // c) Access the flags: // to be improved (implement a method for this? should I store again the flags because they can get modified with redoFinish?)
b3dacf6b 708 fUsePhiWeights = (Bool_t)fUseParticleWeights->GetBinContent(1);
709 fUsePtWeights = (Bool_t)fUseParticleWeights->GetBinContent(2);
710 fUseEtaWeights = (Bool_t)fUseParticleWeights->GetBinContent(3);
403e3389 711 fUseTrackWeights = (Bool_t)fUseParticleWeights->GetBinContent(4);
b3dacf6b 712 fApplyCorrectionForNUA = (Bool_t)fIntFlowFlags->GetBinContent(3);
713 fPrintFinalResults[0] = (Bool_t)fIntFlowFlags->GetBinContent(4);
714 fPrintFinalResults[1] = (Bool_t)fIntFlowFlags->GetBinContent(5);
715 fPrintFinalResults[2] = (Bool_t)fIntFlowFlags->GetBinContent(6);
716 fPrintFinalResults[3] = (Bool_t)fIntFlowFlags->GetBinContent(7);
717 fApplyCorrectionForNUAVsM = (Bool_t)fIntFlowFlags->GetBinContent(8);
b77b6434 718 fPropagateErrorAlsoFromNIT = (Bool_t)fIntFlowFlags->GetBinContent(9);
0dd3b008 719 fCalculateCumulantsVsM = (Bool_t)fIntFlowFlags->GetBinContent(10);
720 fMinimumBiasReferenceFlow = (Bool_t)fIntFlowFlags->GetBinContent(11);
e5834fcb 721 fForgetAboutCovariances = (Bool_t)fIntFlowFlags->GetBinContent(12);
722 fStorePhiDistributionForOneEvent = (Bool_t)fIntFlowFlags->GetBinContent(13);
3435cacb 723 fFillMultipleControlHistograms = (Bool_t)fIntFlowFlags->GetBinContent(14);
724 fCalculateAllCorrelationsVsM = (Bool_t)fIntFlowFlags->GetBinContent(15);
b3dacf6b 725 fEvaluateIntFlowNestedLoops = (Bool_t)fEvaluateNestedLoops->GetBinContent(1);
726 fEvaluateDiffFlowNestedLoops = (Bool_t)fEvaluateNestedLoops->GetBinContent(2);
489d5531 727 fCrossCheckInPtBinNo = (Int_t)fEvaluateNestedLoops->GetBinContent(3);
728 fCrossCheckInEtaBinNo = (Int_t)fEvaluateNestedLoops->GetBinContent(4);
e1d101a6 729 fCalculateMixedHarmonics = (Bool_t)fMixedHarmonicsFlags->GetBinContent(1);
730 //fHarmonic = (Int_t)fMixedHarmonicsFlags->GetBinContent(2); // TBI should I add inpdependent generic harmonic here?
731 fCalculateMixedHarmonicsVsM = (Bool_t)fMixedHarmonicsFlags->GetBinContent(3);
732
b92ea2b9 733 // d) Calculate reference cumulants (not corrected for detector effects):
489d5531 734 this->FinalizeCorrelationsIntFlow();
735 this->CalculateCovariancesIntFlow();
736 this->CalculateCumulantsIntFlow();
489d5531 737
b92ea2b9 738 // e) Correct reference cumulants for detector effects:
739 this->FinalizeCorrectionTermsForNUAIntFlow();
740 this->CalculateCovariancesNUAIntFlow();
741 this->CalculateQcumulantsCorrectedForNUAIntFlow();
742
743 // f) Calculate reference flow:
744 this->CalculateReferenceFlow();
489d5531 745
b77b6434 746 // g) Store results for reference flow in AliFlowCommonHistResults and print them on the screen:
489d5531 747 this->FillCommonHistResultsIntFlow();
b3dacf6b 748 if(fPrintFinalResults[0]){this->PrintFinalResultsForIntegratedFlow("RF");}
749 if(fPrintFinalResults[3] && fCalculateCumulantsVsM){this->PrintFinalResultsForIntegratedFlow("RF, rebinned in M");}
489d5531 750
1268c371 751 // h) Calculate the final results for differential flow (without/with weights):
752 if(fCalculateDiffFlow)
753 {
754 this->FinalizeReducedCorrelations("RP","Pt");
62e36168 755 if(fCalculateDiffFlowVsEta){this->FinalizeReducedCorrelations("RP","Eta");}
1268c371 756 this->FinalizeReducedCorrelations("POI","Pt");
62e36168 757 if(fCalculateDiffFlowVsEta){this->FinalizeReducedCorrelations("POI","Eta");}
1268c371 758 this->CalculateDiffFlowCovariances("RP","Pt");
62e36168 759 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCovariances("RP","Eta");}
1268c371 760 this->CalculateDiffFlowCovariances("POI","Pt");
62e36168 761 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCovariances("POI","Eta");}
1268c371 762 this->CalculateDiffFlowCumulants("RP","Pt");
62e36168 763 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulants("RP","Eta");}
1268c371 764 this->CalculateDiffFlowCumulants("POI","Pt");
62e36168 765 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulants("POI","Eta");}
1268c371 766 this->CalculateDiffFlow("RP","Pt");
62e36168 767 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlow("RP","Eta");}
1268c371 768 this->CalculateDiffFlow("POI","Pt");
62e36168 769 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlow("POI","Eta");}
1268c371 770 } // if(fCalculateDiffFlow)
771
772 // i) Correct the results for differential flow (without/with weights) for effects of non-uniform acceptance (NUA):
773 if(fCalculateDiffFlow)
489d5531 774 {
775 this->FinalizeCorrectionTermsForNUADiffFlow("RP","Pt");
62e36168 776 if(fCalculateDiffFlowVsEta){this->FinalizeCorrectionTermsForNUADiffFlow("RP","Eta");}
489d5531 777 this->FinalizeCorrectionTermsForNUADiffFlow("POI","Pt");
62e36168 778 if(fCalculateDiffFlowVsEta){this->FinalizeCorrectionTermsForNUADiffFlow("POI","Eta");}
489d5531 779 this->CalculateDiffFlowCumulantsCorrectedForNUA("RP","Pt");
62e36168 780 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulantsCorrectedForNUA("RP","Eta");}
489d5531 781 this->CalculateDiffFlowCumulantsCorrectedForNUA("POI","Pt");
62e36168 782 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCumulantsCorrectedForNUA("POI","Eta");}
1268c371 783 if(fApplyCorrectionForNUA)
784 {
785 this->CalculateDiffFlowCorrectedForNUA("RP","Pt");
62e36168 786 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectedForNUA("RP","Eta");}
1268c371 787 this->CalculateDiffFlowCorrectedForNUA("POI","Pt");
62e36168 788 if(fCalculateDiffFlowVsEta){this->CalculateDiffFlowCorrectedForNUA("POI","Eta");}
1268c371 789 }
790 } // end of if(fCalculateDiffFlow && fApplyCorrectionForNUA)
791
792 // i) Calcualate final results for 2D differential flow:
793 if(fCalculate2DDiffFlow)
794 {
795 this->Calculate2DDiffFlowCumulants("RP");
796 this->Calculate2DDiffFlowCumulants("POI");
797 this->Calculate2DDiffFlow("RP");
798 this->Calculate2DDiffFlow("POI");
799 } // end of if(fCalculate2DDiffFlow)
800
801 // j) Calculate the final results for integrated flow (RP/POI) and store in AliFlowCommonHistResults:
802 if(fCalculateDiffFlow)
803 {
804 this->CalculateFinalResultsForRPandPOIIntegratedFlow("RP");
805 this->CalculateFinalResultsForRPandPOIIntegratedFlow("POI");
3b552efe 806 }
489d5531 807
1268c371 808 // k) Store results for differential flow in AliFlowCommonHistResults:
809 if(fCalculateDiffFlow)
810 {
811 this->FillCommonHistResultsDiffFlow("RP");
812 this->FillCommonHistResultsDiffFlow("POI");
813 }
814
815 // l) Print the final results for integrated flow (RP/POI) on the screen:
816 if(fPrintFinalResults[1] && fCalculateDiffFlow){this->PrintFinalResultsForIntegratedFlow("RP");}
817 if(fPrintFinalResults[2] && fCalculateDiffFlow){this->PrintFinalResultsForIntegratedFlow("POI");}
818
819 // m) Cross-checking: Results from Q-vectors vs results from nested loops:
820 // m1) Reference flow:
489d5531 821 if(fEvaluateIntFlowNestedLoops)
822 {
823 this->CrossCheckIntFlowCorrelations();
824 this->CrossCheckIntFlowCorrectionTermsForNUA();
e1d101a6 825 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights){this->CrossCheckIntFlowExtraCorrelations();}
826 if(fCalculateMixedHarmonics){this->CrossCheckIntFlowCorrelations();}
489d5531 827 } // end of if(fEvaluateIntFlowNestedLoops)
1268c371 828 // m2) Differential flow:
829 if(fEvaluateDiffFlowNestedLoops && fCalculateDiffFlow)
489d5531 830 {
b3dacf6b 831 // Correlations:
489d5531 832 this->PrintNumberOfParticlesInSelectedBin();
833 this->CrossCheckDiffFlowCorrelations("RP","Pt");
62e36168 834 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrelations("RP","Eta");}
489d5531 835 this->CrossCheckDiffFlowCorrelations("POI","Pt");
62e36168 836 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrelations("POI","Eta");}
b3dacf6b 837 // Correction terms for non-uniform acceptance:
489d5531 838 this->CrossCheckDiffFlowCorrectionTermsForNUA("RP","Pt");
62e36168 839 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrectionTermsForNUA("RP","Eta");}
489d5531 840 this->CrossCheckDiffFlowCorrectionTermsForNUA("POI","Pt");
62e36168 841 if(fCalculateDiffFlowVsEta){this->CrossCheckDiffFlowCorrectionTermsForNUA("POI","Eta");}
64e500e3 842 // Other differential correlators:
843 this->CrossCheckOtherDiffCorrelators("RP","Pt");
62e36168 844 if(fCalculateDiffFlowVsEta){this->CrossCheckOtherDiffCorrelators("RP","Eta");}
64e500e3 845 this->CrossCheckOtherDiffCorrelators("POI","Pt");
62e36168 846 if(fCalculateDiffFlowVsEta){this->CrossCheckOtherDiffCorrelators("POI","Eta");}
489d5531 847 } // end of if(fEvaluateDiffFlowNestedLoops)
e1d101a6 848
849 // i) Calculate cumulants for mixed harmonics:
850 if(fCalculateMixedHarmonics){this->CalculateCumulantsMixedHarmonics();}
851
489d5531 852} // end of AliFlowAnalysisWithQCumulants::Finish()
853
e1d101a6 854//=======================================================================================================================
489d5531 855
1268c371 856void AliFlowAnalysisWithQCumulants::EvaluateIntFlowNestedLoops(AliFlowEventSimple* anEvent)
857{
e1d101a6 858 // Evaluate all correlators for reference flow with nested loops.
1268c371 859
df23c5ae 860 Int_t nPrim = anEvent->NumberOfTracks(); // number of primaries
1268c371 861 if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
862 {
863 // Without using particle weights:
403e3389 864 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 865 {
866 // Correlations:
867 this->CalculateIntFlowCorrelations(); // from Q-vectors
e1d101a6 868 this->EvaluateIntFlowCorrelationsWithNestedLoops(anEvent); // from nested loops (TBI: do I have to pass here anEvent or not?)
1268c371 869 // Correction for non-uniform acceptance:
870 this->CalculateIntFlowCorrectionsForNUASinTerms(); // from Q-vectors (sin terms)
871 this->CalculateIntFlowCorrectionsForNUACosTerms(); // from Q-vectors (cos terms)
872 this->EvaluateIntFlowCorrectionsForNUAWithNestedLoops(anEvent); // from nested loops (both sin and cos terms)
e1d101a6 873 // Mixed harmonics:
874 if(fCalculateMixedHarmonics)
875 {
876 this->CalculateMixedHarmonics(); // from Q-vectors
877 this->EvaluateMixedHarmonicsWithNestedLoops(anEvent); // from nested loops (TBI: do I have to pass here anEvent or not?)
878 } // end of if(fCalculateMixedHarmonics)
1268c371 879 }
880 // Using particle weights:
403e3389 881 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
1268c371 882 {
883 // Correlations
884 this->CalculateIntFlowCorrelationsUsingParticleWeights(); // from Q-vectors
885 this->EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent); // from nested loops (to be improved: do I have to pass here anEvent or not?)
886 // Correction for non-uniform acceptance:
887 this->CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights(); // from Q-vectors (sin terms)
888 this->CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights(); // from Q-vectors (cos terms)
889 this->EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(anEvent); // from nested loops (both sin and cos terms)
890 }
891 } else if(nPrim>fMaxAllowedMultiplicity) // to if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity)
892 {
893 cout<<endl;
894 cout<<"Skipping the event because multiplicity is "<<nPrim<<". Too high to evaluate nested loops!"<<endl;
895 } else
896 {
897 cout<<endl;
898 cout<<"Skipping the event because multiplicity is "<<nPrim<<"."<<endl;
899 }
900
901} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowNestedLoops(AliFlowEventSimple* anEvent)
902
e1d101a6 903//=======================================================================================================================
1268c371 904
905void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowNestedLoops(AliFlowEventSimple* anEvent)
906{
907 // Evalauted all correlators for differential flow with nested loops.
908
909 if(!fCalculateDiffFlow){return;}
910
df23c5ae 911 Int_t nPrim = anEvent->NumberOfTracks(); // number of primaries
1268c371 912 if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
913 {
914 // Without using particle weights:
403e3389 915 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 916 {
64e500e3 917 // 1.) Reduced correlations:
1268c371 918 // Q-vectors:
919 this->CalculateDiffFlowCorrelations("RP","Pt");
920 this->CalculateDiffFlowCorrelations("RP","Eta");
921 this->CalculateDiffFlowCorrelations("POI","Pt");
922 this->CalculateDiffFlowCorrelations("POI","Eta");
923 // Nested loops:
924 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"RP","Pt");
925 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"RP","Eta");
926 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"POI","Pt");
927 this->EvaluateDiffFlowCorrelationsWithNestedLoops(anEvent,"POI","Eta");
64e500e3 928 // 2.) Reduced corrections for non-uniform acceptance:
1268c371 929 // Q-vectors:
930 this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Pt");
931 this->CalculateDiffFlowCorrectionsForNUASinTerms("RP","Eta");
932 this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Pt");
933 this->CalculateDiffFlowCorrectionsForNUASinTerms("POI","Eta");
934 this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Pt");
935 this->CalculateDiffFlowCorrectionsForNUACosTerms("RP","Eta");
936 this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Pt");
937 this->CalculateDiffFlowCorrectionsForNUACosTerms("POI","Eta");
938 // Nested loops:
939 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"RP","Pt");
940 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"RP","Eta");
941 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"POI","Pt");
942 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(anEvent,"POI","Eta");
64e500e3 943 // 3.) Other differential correlators:
944 // Q-vectors:
945 this->CalculateOtherDiffCorrelators("RP","Pt");
946 this->CalculateOtherDiffCorrelators("RP","Eta");
947 this->CalculateOtherDiffCorrelators("POI","Pt");
948 this->CalculateOtherDiffCorrelators("POI","Eta");
949 // Nested loops:
950 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"RP","Pt");
951 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"RP","Eta");
952 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"POI","Pt");
953 this->EvaluateOtherDiffCorrelatorsWithNestedLoops(anEvent,"POI","Eta");
403e3389 954 } // end of if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
1268c371 955 // Using particle weights:
403e3389 956 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
1268c371 957 {
958 this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Pt");
959 this->CalculateDiffFlowCorrelationsUsingParticleWeights("RP","Eta");
960 this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Pt");
961 this->CalculateDiffFlowCorrelationsUsingParticleWeights("POI","Eta");
962 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Pt");
963 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("RP","Eta");
964 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Pt");
965 this->CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights("POI","Eta");
966 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Pt");
967 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("RP","Eta");
968 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Pt");
969 this->CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights("POI","Eta");
970 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"RP","Pt");
971 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"RP","Eta");
972 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"POI","Pt");
973 this->EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(anEvent,"POI","Eta");
974 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"RP","Pt");
975 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"RP","Eta");
976 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"POI","Pt");
977 this->EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(anEvent,"POI","Eta");
403e3389 978 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
1268c371 979 } // end of if(nPrim>0 && nPrim<=fMaxAllowedMultiplicity) // by default fMaxAllowedMultiplicity = 10
980
981} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowNestedLoops(AliFlowEventSimple* anEvent)
982
e1d101a6 983//=======================================================================================================================
1268c371 984
489d5531 985void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTerms()
986{
b92ea2b9 987 // Calculate correction terms for non-uniform acceptance of the detector for reference flow (cos terms).
489d5531 988
989 // multiplicity:
1268c371 990 Double_t dMult = (*fSpk)(0,0);
489d5531 991
992 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
993 Double_t dReQ1n = (*fReQ)(0,0);
994 Double_t dReQ2n = (*fReQ)(1,0);
995 //Double_t dReQ3n = (*fReQ)(2,0);
996 //Double_t dReQ4n = (*fReQ)(3,0);
997 Double_t dImQ1n = (*fImQ)(0,0);
998 Double_t dImQ2n = (*fImQ)(1,0);
999 //Double_t dImQ3n = (*fImQ)(2,0);
1000 //Double_t dImQ4n = (*fImQ)(3,0);
3842bdcd 1001
1002 // Multiplicity bin of an event (relevant for all histos vs M):
1003 Double_t dMultiplicityBin = 0.;
df23c5ae 1004 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 1005 {
df23c5ae 1006 dMultiplicityBin = fNumberOfRPsEBE+0.5;
1007 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 1008 {
1009 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 1010 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1011 {
1012 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
1013 }
1014
489d5531 1015 // *************************************************************
1016 // **** corrections for non-uniform acceptance (cos terms): ****
1017 // *************************************************************
1018 //
1019 // Remark 1: corrections for non-uniform acceptance (cos terms) calculated with non-weighted Q-vectors
1020 // are stored in 1D profile fQCorrectionsCos.
1021 // Remark 2: binning of fIntFlowCorrectionTermsForNUAPro[1] is organized as follows:
1022 // --------------------------------------------------------------------------------------------------------------------
1023 // 1st bin: <<cos(n*(phi1))>> = cosP1n
1024 // 2nd bin: <<cos(n*(phi1+phi2))>> = cosP1nP1n
1025 // 3rd bin: <<cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1n
1026 // 4th bin: <<cos(n*(2phi1-phi2))>> = cosP2nM1n
1027 // --------------------------------------------------------------------------------------------------------------------
1028
1029 // 1-particle:
1030 Double_t cosP1n = 0.; // <<cos(n*(phi1))>>
1031
1032 if(dMult>0)
1033 {
1034 cosP1n = dReQ1n/dMult;
1035
1036 // average non-weighted 1-particle correction (cos terms) for non-uniform acceptance for single event:
1037 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(1,cosP1n);
0328db2d 1038 // event weights for NUA terms:
1039 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(1,dMult);
489d5531 1040
1041 // final average non-weighted 1-particle correction (cos terms) for non-uniform acceptance for all events:
1042 fIntFlowCorrectionTermsForNUAPro[1]->Fill(0.5,cosP1n,dMult);
3842bdcd 1043 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[1][0]->Fill(dMultiplicityBin,cosP1n,dMult);}
489d5531 1044 }
1045
1046 // 2-particle:
3b552efe 1047 Double_t cosP1nP1n = 0.; // <<cos(n*(phi1+phi2))>>
489d5531 1048 Double_t cosP2nM1n = 0.; // <<cos(n*(2phi1-phi2))>>
1049
1050 if(dMult>1)
1051 {
1052 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
1053 cosP2nM1n = (dReQ2n*dReQ1n+dImQ2n*dImQ1n-dReQ1n)/(dMult*(dMult-1));
1054
1055 // average non-weighted 2-particle correction (cos terms) for non-uniform acceptance for single event:
3b552efe 1056 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(2,cosP1nP1n);
489d5531 1057 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(4,cosP2nM1n);
0328db2d 1058 // event weights for NUA terms:
1059 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(2,dMult*(dMult-1));
1060 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(4,dMult*(dMult-1));
1061
489d5531 1062 // final average non-weighted 2-particle correction (cos terms) for non-uniform acceptance for all events:
3b552efe 1063 fIntFlowCorrectionTermsForNUAPro[1]->Fill(1.5,cosP1nP1n,dMult*(dMult-1));
489d5531 1064 fIntFlowCorrectionTermsForNUAPro[1]->Fill(3.5,cosP2nM1n,dMult*(dMult-1));
b3dacf6b 1065 if(fCalculateCumulantsVsM)
1066 {
3842bdcd 1067 fIntFlowCorrectionTermsForNUAVsMPro[1][1]->Fill(dMultiplicityBin,cosP1nP1n,dMult*(dMult-1));
1068 fIntFlowCorrectionTermsForNUAVsMPro[1][3]->Fill(dMultiplicityBin,cosP2nM1n,dMult*(dMult-1));
b3dacf6b 1069 }
489d5531 1070 }
1071
1072 // 3-particle:
1073 Double_t cosP1nM1nM1n = 0.; // <<cos(n*(phi1-phi2-phi3))>>
1074
1075 if(dMult>2)
1076 {
1077 cosP1nM1nM1n = (dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))-dReQ1n*dReQ2n-dImQ1n*dImQ2n-2.*(dMult-1)*dReQ1n)
1078 / (dMult*(dMult-1)*(dMult-2));
1079
1080 // average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for single event:
1081 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(3,cosP1nM1nM1n);
0328db2d 1082 // event weights for NUA terms:
1083 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->SetBinContent(3,dMult*(dMult-1)*(dMult-2));
489d5531 1084
1085 // final average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for all events:
2001bc3a 1086 fIntFlowCorrectionTermsForNUAPro[1]->Fill(2.5,cosP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
3842bdcd 1087 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[1][2]->Fill(dMultiplicityBin,cosP1nM1nM1n,dMult*(dMult-1)*(dMult-2));}
489d5531 1088 }
1089
1090} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTerms()
1091
e1d101a6 1092//=======================================================================================================================
489d5531 1093
489d5531 1094void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTerms()
1095{
1096 // calculate corrections for non-uniform acceptance of the detector for no-name integrated flow (sin terms)
1097
1098 // multiplicity:
1268c371 1099 Double_t dMult = (*fSpk)(0,0);
489d5531 1100
1101 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
1102 Double_t dReQ1n = (*fReQ)(0,0);
1103 Double_t dReQ2n = (*fReQ)(1,0);
1104 //Double_t dReQ3n = (*fReQ)(2,0);
1105 //Double_t dReQ4n = (*fReQ)(3,0);
1106 Double_t dImQ1n = (*fImQ)(0,0);
1107 Double_t dImQ2n = (*fImQ)(1,0);
1108 //Double_t dImQ3n = (*fImQ)(2,0);
1109 //Double_t dImQ4n = (*fImQ)(3,0);
1110
3842bdcd 1111 // Multiplicity bin of an event (relevant for all histos vs M):
1112 Double_t dMultiplicityBin = 0.;
df23c5ae 1113 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 1114 {
df23c5ae 1115 dMultiplicityBin = fNumberOfRPsEBE+0.5;
1116 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 1117 {
1118 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 1119 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1120 {
1121 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
1122 }
3842bdcd 1123
489d5531 1124 // *************************************************************
1125 // **** corrections for non-uniform acceptance (sin terms): ****
1126 // *************************************************************
1127 //
1128 // Remark 1: corrections for non-uniform acceptance (sin terms) calculated with non-weighted Q-vectors
1129 // are stored in 1D profile fQCorrectionsSin.
1130 // Remark 2: binning of fIntFlowCorrectionTermsForNUAPro[0] is organized as follows:
1131 // --------------------------------------------------------------------------------------------------------------------
1132 // 1st bin: <<sin(n*(phi1))>> = sinP1n
1133 // 2nd bin: <<sin(n*(phi1+phi2))>> = sinP1nP1n
1134 // 3rd bin: <<sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1n
1135 // 4th bin: <<sin(n*(2phi1-phi2))>> = sinP2nM1n
1136 // --------------------------------------------------------------------------------------------------------------------
1137
1138 // 1-particle:
1139 Double_t sinP1n = 0.; // <sin(n*(phi1))>
1140
1141 if(dMult>0)
1142 {
1143 sinP1n = dImQ1n/dMult;
1144
1145 // average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for single event:
0328db2d 1146 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(1,sinP1n);
1147 // event weights for NUA terms:
1148 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(1,dMult);
489d5531 1149
1150 // final average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
1151 fIntFlowCorrectionTermsForNUAPro[0]->Fill(0.5,sinP1n,dMult);
3842bdcd 1152 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[0][0]->Fill(dMultiplicityBin,sinP1n,dMult);}
489d5531 1153 }
1154
1155 // 2-particle:
1156 Double_t sinP1nP1n = 0.; // <<sin(n*(phi1+phi2))>>
1157 Double_t sinP2nM1n = 0.; // <<sin(n*(2phi1-phi2))>>
1158 if(dMult>1)
1159 {
3b552efe 1160 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
489d5531 1161 sinP2nM1n = (dImQ2n*dReQ1n-dReQ2n*dImQ1n-dImQ1n)/(dMult*(dMult-1));
1162
1163 // average non-weighted 2-particle correction (sin terms) for non-uniform acceptance for single event:
1164 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(2,sinP1nP1n);
3b552efe 1165 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(4,sinP2nM1n);
0328db2d 1166 // event weights for NUA terms:
1167 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(2,dMult*(dMult-1));
1168 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(4,dMult*(dMult-1));
489d5531 1169
1170 // final average non-weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
1171 fIntFlowCorrectionTermsForNUAPro[0]->Fill(1.5,sinP1nP1n,dMult*(dMult-1));
1172 fIntFlowCorrectionTermsForNUAPro[0]->Fill(3.5,sinP2nM1n,dMult*(dMult-1));
b3dacf6b 1173 if(fCalculateCumulantsVsM)
1174 {
3842bdcd 1175 fIntFlowCorrectionTermsForNUAVsMPro[0][1]->Fill(dMultiplicityBin,sinP1nP1n,dMult*(dMult-1));
1176 fIntFlowCorrectionTermsForNUAVsMPro[0][3]->Fill(dMultiplicityBin,sinP2nM1n,dMult*(dMult-1));
b3dacf6b 1177 }
489d5531 1178 }
1179
1180 // 3-particle:
1181 Double_t sinP1nM1nM1n = 0.; // <<sin(n*(phi1-phi2-phi3))>>
1182
1183 if(dMult>2)
1184 {
1185 sinP1nM1nM1n = (-dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2))+dReQ1n*dImQ2n-dImQ1n*dReQ2n+2.*(dMult-1)*dImQ1n)
1186 / (dMult*(dMult-1)*(dMult-2));
1187
1188 // average non-weighted 3-particle correction (sin terms) for non-uniform acceptance for single event:
1189 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(3,sinP1nM1nM1n);
0328db2d 1190 // event weights for NUA terms:
1191 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->SetBinContent(3,dMult*(dMult-1)*(dMult-2));
489d5531 1192
1193 // final average non-weighted 3-particle correction (sin terms) for non-uniform acceptance for all events:
2001bc3a 1194 fIntFlowCorrectionTermsForNUAPro[0]->Fill(2.5,sinP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
3842bdcd 1195 if(fCalculateCumulantsVsM){fIntFlowCorrectionTermsForNUAVsMPro[0][2]->Fill(dMultiplicityBin,sinP1nM1nM1n,dMult*(dMult-1)*(dMult-2));}
489d5531 1196 }
1197
1198} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTerms()
1199
e1d101a6 1200//=======================================================================================================================
489d5531 1201
489d5531 1202void AliFlowAnalysisWithQCumulants::GetOutputHistograms(TList *outputListHistos)
1203{
1268c371 1204 // a) Get pointers for common control and common result histograms;
1205 // b) Get pointers for histograms holding particle weights;
1206 // c) Get pointers for reference flow histograms;
1207 // d) Get pointers for differential flow histograms;
1208 // e) Get pointers for 2D differential flow histograms;
64e500e3 1209 // f) Get pointers for other differential correlators;
e1d101a6 1210 // g) Get pointers for nested loops' histograms;
1211 // h) Get pointers for mixed harmonics histograms.
489d5531 1212
1213 if(outputListHistos)
3b552efe 1214 {
1215 this->SetHistList(outputListHistos);
1216 if(!fHistList)
1217 {
1268c371 1218 printf("\n WARNING (QC): fHistList is NULL in AFAWQC::GOH() !!!!\n\n");
3b552efe 1219 exit(0);
489d5531 1220 }
1221 this->GetPointersForCommonHistograms();
1222 this->GetPointersForParticleWeightsHistograms();
1223 this->GetPointersForIntFlowHistograms();
1224 this->GetPointersForDiffFlowHistograms();
1268c371 1225 this->GetPointersFor2DDiffFlowHistograms();
64e500e3 1226 this->GetPointersForOtherDiffCorrelators();
e1d101a6 1227 this->GetPointersForMixedHarmonicsHistograms();
489d5531 1228 this->GetPointersForNestedLoopsHistograms();
3b552efe 1229 } else
1230 {
1268c371 1231 printf("\n WARNING (QC): outputListHistos is NULL in AFAWQC::GOH() !!!!\n\n");
3b552efe 1232 exit(0);
489d5531 1233 }
1234
1235} // end of void AliFlowAnalysisWithQCumulants::GetOutputHistograms(TList *outputListHistos)
ad87ae62 1236
e1d101a6 1237//=======================================================================================================================
489d5531 1238
489d5531 1239TProfile* AliFlowAnalysisWithQCumulants::MakePtProjection(TProfile2D *profilePtEta) const
ad87ae62 1240{
489d5531 1241 // project 2D profile onto pt axis to get 1D profile
1242
1243 Int_t nBinsPt = profilePtEta->GetNbinsX();
1244 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
1245 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
1246
1247 Int_t nBinsEta = profilePtEta->GetNbinsY();
1248
1249 TProfile *profilePt = new TProfile("","",nBinsPt,dPtMin,dPtMax);
1250
1251 for(Int_t p=1;p<=nBinsPt;p++)
1252 {
1253 Double_t contentPt = 0.;
1254 Double_t entryPt = 0.;
1255 Double_t spreadPt = 0.;
1256 Double_t sum1 = 0.;
1257 Double_t sum2 = 0.;
1258 Double_t sum3 = 0.;
1259 for(Int_t e=1;e<=nBinsEta;e++)
1260 {
1261 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1262 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1263 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1264
1265 sum1 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1266 * (pow(profilePtEta->GetBinError(profilePtEta->GetBin(p,e)),2.)
1267 + pow(profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)),2.));
1268 sum2 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1269 sum3 += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)))
1270 * (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)));
1271 }
1272 if(sum2>0. && sum1/sum2-pow(sum3/sum2,2.) > 0.)
1273 {
1274 spreadPt = pow(sum1/sum2-pow(sum3/sum2,2.),0.5);
1275 }
1276 profilePt->SetBinContent(p,contentPt);
1277 profilePt->SetBinEntries(p,entryPt);
1278 {
1279 profilePt->SetBinError(p,spreadPt);
1280 }
1281
1282 }
1283
1284 return profilePt;
1285
1286} // end of TProfile* AliFlowAnalysisWithQCumulants::MakePtProjection(TProfile2D *profilePtEta)
1287
1288
e1d101a6 1289//=======================================================================================================================
489d5531 1290
1291
1292TProfile* AliFlowAnalysisWithQCumulants::MakeEtaProjection(TProfile2D *profilePtEta) const
1293{
1294 // project 2D profile onto eta axis to get 1D profile
1295
1296 Int_t nBinsEta = profilePtEta->GetNbinsY();
1297 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
1298 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
1299
1300 Int_t nBinsPt = profilePtEta->GetNbinsX();
1301
1302 TProfile *profileEta = new TProfile("","",nBinsEta,dEtaMin,dEtaMax);
1303
1304 for(Int_t e=1;e<=nBinsEta;e++)
1305 {
1306 Double_t contentEta = 0.;
1307 Double_t entryEta = 0.;
1308 for(Int_t p=1;p<=nBinsPt;p++)
1309 {
1310 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
1311 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1312 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
1313 }
1314 profileEta->SetBinContent(e,contentEta);
1315 profileEta->SetBinEntries(e,entryEta);
1316 }
1317
1318 return profileEta;
1319
1320} // end of TProfile* AliFlowAnalysisWithQCumulants::MakeEtaProjection(TProfile2D *profilePtEta)
1321
e1d101a6 1322//=======================================================================================================================
489d5531 1323
489d5531 1324void AliFlowAnalysisWithQCumulants::PrintFinalResultsForIntegratedFlow(TString type)
1325{
2001bc3a 1326 // Printing on the screen the final results for integrated flow (RF, POI and RP).
489d5531 1327
1328 Int_t n = fHarmonic;
1329
489d5531 1330 Double_t dVn[4] = {0.}; // array to hold Vn{2}, Vn{4}, Vn{6} and Vn{8}
1331 Double_t dVnErr[4] = {0.}; // array to hold errors of Vn{2}, Vn{4}, Vn{6} and Vn{8}
1332
2001bc3a 1333 if(type == "RF")
489d5531 1334 {
0dd3b008 1335 for(Int_t b=0;b<4;b++)
1336 {
b77b6434 1337 dVn[0] = (fCommonHistsResults2nd->GetHistIntFlow())->GetBinContent(1);
1338 dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlow())->GetBinError(1);
1339 dVn[1] = (fCommonHistsResults4th->GetHistIntFlow())->GetBinContent(1);
1340 dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlow())->GetBinError(1);
1341 dVn[2] = (fCommonHistsResults6th->GetHistIntFlow())->GetBinContent(1);
1342 dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlow())->GetBinError(1);
1343 dVn[3] = (fCommonHistsResults8th->GetHistIntFlow())->GetBinContent(1);
1344 dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlow())->GetBinError(1);
0dd3b008 1345 }
489d5531 1346 } else if(type == "RP")
1347 {
1348 dVn[0] = (fCommonHistsResults2nd->GetHistIntFlowRP())->GetBinContent(1);
1349 dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlowRP())->GetBinError(1);
1350 dVn[1] = (fCommonHistsResults4th->GetHistIntFlowRP())->GetBinContent(1);
1351 dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlowRP())->GetBinError(1);
1352 dVn[2] = (fCommonHistsResults6th->GetHistIntFlowRP())->GetBinContent(1);
1353 dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlowRP())->GetBinError(1);
1354 dVn[3] = (fCommonHistsResults8th->GetHistIntFlowRP())->GetBinContent(1);
1355 dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlowRP())->GetBinError(1);
1356 } else if(type == "POI")
1357 {
1358 dVn[0] = (fCommonHistsResults2nd->GetHistIntFlowPOI())->GetBinContent(1);
1359 dVnErr[0] = (fCommonHistsResults2nd->GetHistIntFlowPOI())->GetBinError(1);
1360 dVn[1] = (fCommonHistsResults4th->GetHistIntFlowPOI())->GetBinContent(1);
1361 dVnErr[1] = (fCommonHistsResults4th->GetHistIntFlowPOI())->GetBinError(1);
1362 dVn[2] = (fCommonHistsResults6th->GetHistIntFlowPOI())->GetBinContent(1);
1363 dVnErr[2] = (fCommonHistsResults6th->GetHistIntFlowPOI())->GetBinError(1);
1364 dVn[3] = (fCommonHistsResults8th->GetHistIntFlowPOI())->GetBinContent(1);
1365 dVnErr[3] = (fCommonHistsResults8th->GetHistIntFlowPOI())->GetBinError(1);
b77b6434 1366 } else if(type == "RF, rebinned in M" && fCalculateCumulantsVsM)
b3dacf6b 1367 {
0dd3b008 1368 for(Int_t b=0;b<4;b++)
1369 {
1370 dVn[b] = fIntFlowRebinnedInM->GetBinContent(b+1);
1371 dVnErr[b] = fIntFlowRebinnedInM->GetBinError(b+1);
1372 }
b3dacf6b 1373 }
489d5531 1374
1375 TString title = " flow estimates from Q-cumulants";
1376 TString subtitle = " (";
b3dacf6b 1377 TString subtitle2 = " (rebinned in M)";
489d5531 1378
b3dacf6b 1379 if(type != "RF, rebinned in M")
489d5531 1380 {
403e3389 1381 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
b3dacf6b 1382 {
1383 subtitle.Append(type);
1384 subtitle.Append(", without weights)");
1385 } else
1386 {
1387 subtitle.Append(type);
1388 subtitle.Append(", with weights)");
1389 }
1390 } else
489d5531 1391 {
403e3389 1392 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
b3dacf6b 1393 {
1394 subtitle.Append("RF");
1395 subtitle.Append(", without weights)");
1396 } else
1397 {
1398 subtitle.Append("RF");
1399 subtitle.Append(", with weights)");
1400 }
1401 }
1402
489d5531 1403 cout<<endl;
1404 cout<<"*************************************"<<endl;
1405 cout<<"*************************************"<<endl;
1406 cout<<title.Data()<<endl;
1407 cout<<subtitle.Data()<<endl;
b3dacf6b 1408 if(type == "RF, rebinned in M"){cout<<subtitle2.Data()<<endl;}
489d5531 1409 cout<<endl;
1410
1411 for(Int_t i=0;i<4;i++)
1412 {
2001bc3a 1413 cout<<" v_"<<n<<"{"<<2*(i+1)<<"} = "<<dVn[i]<<" +/- "<<dVnErr[i]<<endl;
489d5531 1414 }
2001bc3a 1415
489d5531 1416 cout<<endl;
b92ea2b9 1417 if(type == "RF")
1418 {
b77b6434 1419 if(fApplyCorrectionForNUA)
1420 {
1421 cout<<" detector bias (corrected for): "<<endl;
1422 } else
1423 {
1424 cout<<" detector bias (not corrected for):"<<endl;
1425 }
b92ea2b9 1426 cout<<" to QC{2}: "<<fIntFlowDetectorBias->GetBinContent(1)<<" +/- "<<fIntFlowDetectorBias->GetBinError(1)<<endl;
1427 cout<<" to QC{4}: "<<fIntFlowDetectorBias->GetBinContent(2)<<" +/- "<<fIntFlowDetectorBias->GetBinError(2)<<endl;
1428 cout<<endl;
1429 }
b3dacf6b 1430 if(type == "RF" || type == "RF, rebinned in M")
489d5531 1431 {
2001bc3a 1432 cout<<" nEvts = "<<(Int_t)fCommonHists->GetHistMultRP()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultRP()->GetMean()<<endl;
489d5531 1433 }
1434 else if (type == "RP")
1435 {
2001bc3a 1436 cout<<" nEvts = "<<(Int_t)fCommonHists->GetHistMultRP()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultRP()->GetMean()<<endl;
489d5531 1437 }
1438 else if (type == "POI")
1439 {
2001bc3a 1440 cout<<" nEvts = "<<(Int_t)fCommonHists->GetHistMultPOI()->GetEntries()<<", <M> = "<<(Double_t)fCommonHists->GetHistMultPOI()->GetMean()<<endl;
1441 }
1442
489d5531 1443 cout<<"*************************************"<<endl;
1444 cout<<"*************************************"<<endl;
1445 cout<<endl;
1446
2001bc3a 1447}// end of AliFlowAnalysisWithQCumulants::PrintFinalResultsForIntegratedFlow(TString type="RF");
489d5531 1448
e1d101a6 1449//=======================================================================================================================
489d5531 1450
489d5531 1451void AliFlowAnalysisWithQCumulants::WriteHistograms(TString outputFileName)
1452{
1453 //store the final results in output .root file
1454 TFile *output = new TFile(outputFileName.Data(),"RECREATE");
1455 //output->WriteObject(fHistList, "cobjQC","SingleKey");
1456 fHistList->Write(fHistList->GetName(), TObject::kSingleKey);
1457 delete output;
1458}
1459
1460
e1d101a6 1461//=======================================================================================================================
489d5531 1462
1463
1464void AliFlowAnalysisWithQCumulants::WriteHistograms(TDirectoryFile *outputFileName)
1465{
1466 //store the final results in output .root file
1467 fHistList->SetName("cobjQC");
1468 fHistList->SetOwner(kTRUE);
1469 outputFileName->Add(fHistList);
1470 outputFileName->Write(outputFileName->GetName(), TObject::kSingleKey);
1471}
1472
e1d101a6 1473//=======================================================================================================================
489d5531 1474
489d5531 1475void AliFlowAnalysisWithQCumulants::BookCommonHistograms()
1476{
1477 // Book common control histograms and common histograms for final results.
1268c371 1478 // a) Book common control histograms;
1479 // b) Book common result histograms.
1480
1481 // a) Book common control histograms:
1482 // Common control histograms (all events):
489d5531 1483 TString commonHistsName = "AliFlowCommonHistQC";
1484 commonHistsName += fAnalysisLabel->Data();
62d19320 1485 fCommonHists = new AliFlowCommonHist(commonHistsName.Data(),commonHistsName.Data(),fBookOnlyBasicCCH);
489d5531 1486 fHistList->Add(fCommonHists);
1268c371 1487 // Common control histograms (selected events):
dd442cd2 1488 if(fFillMultipleControlHistograms)
1489 {
1268c371 1490 // Common control histogram filled for events with 2 and more reference particles:
dd442cd2 1491 TString commonHists2ndOrderName = "AliFlowCommonHist2ndOrderQC";
1492 commonHists2ndOrderName += fAnalysisLabel->Data();
62d19320 1493 fCommonHists2nd = new AliFlowCommonHist(commonHists2ndOrderName.Data(),commonHists2ndOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1494 fHistList->Add(fCommonHists2nd);
1268c371 1495 // Common control histogram filled for events with 2 and more reference particles:
dd442cd2 1496 TString commonHists4thOrderName = "AliFlowCommonHist4thOrderQC";
1497 commonHists4thOrderName += fAnalysisLabel->Data();
62d19320 1498 fCommonHists4th = new AliFlowCommonHist(commonHists4thOrderName.Data(),commonHists4thOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1499 fHistList->Add(fCommonHists4th);
1268c371 1500 // Common control histogram filled for events with 6 and more reference particles:
dd442cd2 1501 TString commonHists6thOrderName = "AliFlowCommonHist6thOrderQC";
1502 commonHists6thOrderName += fAnalysisLabel->Data();
62d19320 1503 fCommonHists6th = new AliFlowCommonHist(commonHists6thOrderName.Data(),commonHists6thOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1504 fHistList->Add(fCommonHists6th);
1268c371 1505 // Common control histogram filled for events with 8 and more reference particles:
dd442cd2 1506 TString commonHists8thOrderName = "AliFlowCommonHist8thOrderQC";
1507 commonHists8thOrderName += fAnalysisLabel->Data();
62d19320 1508 fCommonHists8th = new AliFlowCommonHist(commonHists8thOrderName.Data(),commonHists8thOrderName.Data(),fBookOnlyBasicCCH);
dd442cd2 1509 fHistList->Add(fCommonHists8th);
1510 } // end of if(fFillMultipleControlHistograms)
1511
1268c371 1512 // b) Book common result histograms:
1513 // Common result histograms for QC{2}:
489d5531 1514 TString commonHistResults2ndOrderName = "AliFlowCommonHistResults2ndOrderQC";
1515 commonHistResults2ndOrderName += fAnalysisLabel->Data();
62e36168 1516 fCommonHistsResults2nd = new AliFlowCommonHistResults(commonHistResults2ndOrderName.Data(),"",fHarmonic);
489d5531 1517 fHistList->Add(fCommonHistsResults2nd);
1268c371 1518 // Common result histograms for QC{4}:
489d5531 1519 TString commonHistResults4thOrderName = "AliFlowCommonHistResults4thOrderQC";
1520 commonHistResults4thOrderName += fAnalysisLabel->Data();
62e36168 1521 fCommonHistsResults4th = new AliFlowCommonHistResults(commonHistResults4thOrderName.Data(),"",fHarmonic);
489d5531 1522 fHistList->Add(fCommonHistsResults4th);
1268c371 1523 // Common result histograms for QC{6}:
489d5531 1524 TString commonHistResults6thOrderName = "AliFlowCommonHistResults6thOrderQC";
1525 commonHistResults6thOrderName += fAnalysisLabel->Data();
62e36168 1526 fCommonHistsResults6th = new AliFlowCommonHistResults(commonHistResults6thOrderName.Data(),"",fHarmonic);
489d5531 1527 fHistList->Add(fCommonHistsResults6th);
1268c371 1528 // Common result histograms for QC{8}:
489d5531 1529 TString commonHistResults8thOrderName = "AliFlowCommonHistResults8thOrderQC";
1530 commonHistResults8thOrderName += fAnalysisLabel->Data();
62e36168 1531 fCommonHistsResults8th = new AliFlowCommonHistResults(commonHistResults8thOrderName.Data(),"",fHarmonic);
489d5531 1532 fHistList->Add(fCommonHistsResults8th);
1533
1534} // end of void AliFlowAnalysisWithQCumulants::BookCommonHistograms()
1535
e1d101a6 1536//=======================================================================================================================
489d5531 1537
489d5531 1538void AliFlowAnalysisWithQCumulants::BookAndFillWeightsHistograms()
1539{
1268c371 1540 // Book and fill histograms which hold phi, pt and eta weights.
489d5531 1541
1542 if(!fWeightsList)
1543 {
1268c371 1544 printf("\n WARNING (QC): fWeightsList is NULL in AFAWQC::BAFWH() !!!! \n\n");
489d5531 1545 exit(0);
1546 }
1547
1548 TString fUseParticleWeightsName = "fUseParticleWeightsQC";
1549 fUseParticleWeightsName += fAnalysisLabel->Data();
403e3389 1550 fUseParticleWeights = new TProfile(fUseParticleWeightsName.Data(),"0 = particle weight not used, 1 = particle weight used ",4,0,4);
489d5531 1551 fUseParticleWeights->SetLabelSize(0.06);
e1d101a6 1552 fUseParticleWeights->SetStats(kFALSE);
489d5531 1553 (fUseParticleWeights->GetXaxis())->SetBinLabel(1,"w_{#phi}");
1554 (fUseParticleWeights->GetXaxis())->SetBinLabel(2,"w_{p_{T}}");
1555 (fUseParticleWeights->GetXaxis())->SetBinLabel(3,"w_{#eta}");
403e3389 1556 (fUseParticleWeights->GetXaxis())->SetBinLabel(4,"w_{track}");
489d5531 1557 fUseParticleWeights->Fill(0.5,(Int_t)fUsePhiWeights);
1558 fUseParticleWeights->Fill(1.5,(Int_t)fUsePtWeights);
1559 fUseParticleWeights->Fill(2.5,(Int_t)fUseEtaWeights);
403e3389 1560 fUseParticleWeights->Fill(3.5,(Int_t)fUseTrackWeights);
489d5531 1561 fWeightsList->Add(fUseParticleWeights);
1562
1563 if(fUsePhiWeights)
1564 {
1565 if(fWeightsList->FindObject("phi_weights"))
1566 {
1567 fPhiWeights = dynamic_cast<TH1F*>(fWeightsList->FindObject("phi_weights"));
1268c371 1568 if(!fPhiWeights)
1569 {
1570 printf("\n WARNING (QC): fPhiWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1571 exit(0);
1572 }
489d5531 1573 if(TMath::Abs(fPhiWeights->GetBinWidth(1)-fPhiBinWidth)>pow(10.,-6.))
1574 {
1575 cout<<endl;
1576 cout<<"WARNING (QC): Inconsistent binning in histograms for phi-weights throughout the code."<<endl;
1577 cout<<endl;
6fbbbbf1 1578 //exit(0);
489d5531 1579 }
1580 } else
1581 {
1582 cout<<"WARNING: fWeightsList->FindObject(\"phi_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1583 exit(0);
1584 }
1585 } // end of if(fUsePhiWeights)
1586
1587 if(fUsePtWeights)
1588 {
1589 if(fWeightsList->FindObject("pt_weights"))
1590 {
1591 fPtWeights = dynamic_cast<TH1D*>(fWeightsList->FindObject("pt_weights"));
1268c371 1592 if(!fPtWeights)
1593 {
1594 printf("\n WARNING (QC): fPtWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1595 exit(0);
1596 }
489d5531 1597 if(TMath::Abs(fPtWeights->GetBinWidth(1)-fPtBinWidth)>pow(10.,-6.))
1598 {
1599 cout<<endl;
1600 cout<<"WARNING (QC): Inconsistent binning in histograms for pt-weights throughout the code."<<endl;
1601 cout<<endl;
6fbbbbf1 1602 //exit(0);
489d5531 1603 }
1604 } else
1605 {
1606 cout<<"WARNING: fWeightsList->FindObject(\"pt_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1607 exit(0);
1608 }
1609 } // end of if(fUsePtWeights)
1610
1611 if(fUseEtaWeights)
1612 {
1613 if(fWeightsList->FindObject("eta_weights"))
1614 {
1615 fEtaWeights = dynamic_cast<TH1D*>(fWeightsList->FindObject("eta_weights"));
1268c371 1616 if(!fEtaWeights)
1617 {
1618 printf("\n WARNING (QC): fEtaWeights is NULL in AFAWQC::BAFWH() !!!!\n\n");
1619 exit(0);
1620 }
489d5531 1621 if(TMath::Abs(fEtaWeights->GetBinWidth(1)-fEtaBinWidth)>pow(10.,-6.))
1622 {
1623 cout<<endl;
1624 cout<<"WARNING (QC): Inconsistent binning in histograms for eta-weights throughout the code."<<endl;
1625 cout<<endl;
6fbbbbf1 1626 //exit(0);
489d5531 1627 }
1628 } else
1629 {
1630 cout<<"WARNING: fUseEtaWeights && fWeightsList->FindObject(\"eta_weights\") is NULL in AFAWQC::BAFWH() !!!!"<<endl;
1631 exit(0);
1632 }
1633 } // end of if(fUseEtaWeights)
1634
1635} // end of AliFlowAnalysisWithQCumulants::BookAndFillWeightsHistograms()
1636
e1d101a6 1637//=======================================================================================================================
489d5531 1638
489d5531 1639void AliFlowAnalysisWithQCumulants::BookEverythingForIntegratedFlow()
1640{
1641 // Book all objects for integrated flow:
e5834fcb 1642 // a) Book profile to hold all flags for integrated flow;
1643 // b) Book event-by-event quantities;
1644 // c) Book profiles; // to be improved (comment)
489d5531 1645 // d) Book histograms holding the final results.
1646
1647 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
1648 TString powerFlag[2] = {"linear","quadratic"}; // to be improved (should I promote this to data members?)
1649
1650 // a) Book profile to hold all flags for integrated flow:
1651 TString intFlowFlagsName = "fIntFlowFlags";
1652 intFlowFlagsName += fAnalysisLabel->Data();
d9e6d8bb 1653 fIntFlowFlags = new TProfile(intFlowFlagsName.Data(),"Flags for Integrated Flow",17,0.,17.);
489d5531 1654 fIntFlowFlags->SetTickLength(-0.01,"Y");
1655 fIntFlowFlags->SetMarkerStyle(25);
403e3389 1656 fIntFlowFlags->SetLabelSize(0.04);
489d5531 1657 fIntFlowFlags->SetLabelOffset(0.02,"Y");
e1d101a6 1658 fIntFlowFlags->SetStats(kFALSE);
489d5531 1659 fIntFlowFlags->GetXaxis()->SetBinLabel(1,"Particle Weights");
1660 fIntFlowFlags->GetXaxis()->SetBinLabel(2,"Event Weights");
1661 fIntFlowFlags->GetXaxis()->SetBinLabel(3,"Corrected for NUA?");
b3dacf6b 1662 fIntFlowFlags->GetXaxis()->SetBinLabel(4,"Print RF results");
489d5531 1663 fIntFlowFlags->GetXaxis()->SetBinLabel(5,"Print RP results");
3b552efe 1664 fIntFlowFlags->GetXaxis()->SetBinLabel(6,"Print POI results");
b3dacf6b 1665 fIntFlowFlags->GetXaxis()->SetBinLabel(7,"Print RF (rebinned in M) results");
1666 fIntFlowFlags->GetXaxis()->SetBinLabel(8,"Corrected for NUA vs M?");
1667 fIntFlowFlags->GetXaxis()->SetBinLabel(9,"Propagate errors to v_{n} from correlations?");
1668 fIntFlowFlags->GetXaxis()->SetBinLabel(10,"Calculate cumulants vs M");
0dd3b008 1669 fIntFlowFlags->GetXaxis()->SetBinLabel(11,"fMinimumBiasReferenceFlow");
8e1cefdd 1670 fIntFlowFlags->GetXaxis()->SetBinLabel(12,"fForgetAboutCovariances");
e5834fcb 1671 fIntFlowFlags->GetXaxis()->SetBinLabel(13,"fStorePhiDistributionForOneEvent");
dd442cd2 1672 fIntFlowFlags->GetXaxis()->SetBinLabel(14,"fFillMultipleControlHistograms");
3435cacb 1673 fIntFlowFlags->GetXaxis()->SetBinLabel(15,"Calculate all correlations vs M");
df23c5ae 1674 fIntFlowFlags->GetXaxis()->SetBinLabel(16,"fMultiplicityIs");
d9e6d8bb 1675 fIntFlowFlags->GetXaxis()->SetBinLabel(17,"fExactNoRPs");
489d5531 1676 fIntFlowList->Add(fIntFlowFlags);
1677
1678 // b) Book event-by-event quantities:
1679 // Re[Q_{m*n,k}], Im[Q_{m*n,k}] and S_{p,k}^M:
e1d101a6 1680 fReQ = new TMatrixD(12,9);
1681 fImQ = new TMatrixD(12,9);
1268c371 1682 fSpk = new TMatrixD(8,9);
489d5531 1683 // average correlations <2>, <4>, <6> and <8> for single event (bining is the same as in fIntFlowCorrelationsPro and fIntFlowCorrelationsHist):
1684 TString intFlowCorrelationsEBEName = "fIntFlowCorrelationsEBE";
1685 intFlowCorrelationsEBEName += fAnalysisLabel->Data();
1686 fIntFlowCorrelationsEBE = new TH1D(intFlowCorrelationsEBEName.Data(),intFlowCorrelationsEBEName.Data(),4,0,4);
1687 // weights for average correlations <2>, <4>, <6> and <8> for single event:
1688 TString intFlowEventWeightsForCorrelationsEBEName = "fIntFlowEventWeightsForCorrelationsEBE";
1689 intFlowEventWeightsForCorrelationsEBEName += fAnalysisLabel->Data();
1690 fIntFlowEventWeightsForCorrelationsEBE = new TH1D(intFlowEventWeightsForCorrelationsEBEName.Data(),intFlowEventWeightsForCorrelationsEBEName.Data(),4,0,4);
1691 // average all correlations for single event (bining is the same as in fIntFlowCorrelationsAllPro and fIntFlowCorrelationsAllHist):
1692 TString intFlowCorrelationsAllEBEName = "fIntFlowCorrelationsAllEBE";
1693 intFlowCorrelationsAllEBEName += fAnalysisLabel->Data();
403e3389 1694 fIntFlowCorrelationsAllEBE = new TH1D(intFlowCorrelationsAllEBEName.Data(),intFlowCorrelationsAllEBEName.Data(),64,0,64);
489d5531 1695 // average correction terms for non-uniform acceptance for single event
1696 // (binning is the same as in fIntFlowCorrectionTermsForNUAPro[2] and fIntFlowCorrectionTermsForNUAHist[2]):
1697 TString fIntFlowCorrectionTermsForNUAEBEName = "fIntFlowCorrectionTermsForNUAEBE";
1698 fIntFlowCorrectionTermsForNUAEBEName += fAnalysisLabel->Data();
1699 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
1700 {
b92ea2b9 1701 fIntFlowCorrectionTermsForNUAEBE[sc] = new TH1D(Form("%s: %s terms",fIntFlowCorrectionTermsForNUAEBEName.Data(),sinCosFlag[sc].Data()),Form("Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].Data()),4,0,4);
489d5531 1702 }
0328db2d 1703 // event weights for terms for non-uniform acceptance:
1704 TString fIntFlowEventWeightForCorrectionTermsForNUAEBEName = "fIntFlowEventWeightForCorrectionTermsForNUAEBE";
1705 fIntFlowEventWeightForCorrectionTermsForNUAEBEName += fAnalysisLabel->Data();
1706 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
1707 {
b92ea2b9 1708 fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc] = new TH1D(Form("%s: %s terms",fIntFlowEventWeightForCorrectionTermsForNUAEBEName.Data(),sinCosFlag[sc].Data()),Form("Event weights for terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].Data()),4,0,4); // to be improved - 4
0328db2d 1709 }
489d5531 1710 // c) Book profiles: // to be improved (comment)
1711 // profile to hold average multiplicities and number of events for events with nRP>=0, nRP>=1, ... , and nRP>=8:
1712 TString avMultiplicityName = "fAvMultiplicity";
1713 avMultiplicityName += fAnalysisLabel->Data();
403e3389 1714 fAvMultiplicity = new TProfile(avMultiplicityName.Data(),"Average multiplicities of reference particles (RPs)",9,0,9);
489d5531 1715 fAvMultiplicity->SetTickLength(-0.01,"Y");
1716 fAvMultiplicity->SetMarkerStyle(25);
1717 fAvMultiplicity->SetLabelSize(0.05);
1718 fAvMultiplicity->SetLabelOffset(0.02,"Y");
403e3389 1719 fAvMultiplicity->SetYTitle("Average multiplicity");
489d5531 1720 (fAvMultiplicity->GetXaxis())->SetBinLabel(1,"all evts");
1721 (fAvMultiplicity->GetXaxis())->SetBinLabel(2,"n_{RP} #geq 1");
1722 (fAvMultiplicity->GetXaxis())->SetBinLabel(3,"n_{RP} #geq 2");
1723 (fAvMultiplicity->GetXaxis())->SetBinLabel(4,"n_{RP} #geq 3");
1724 (fAvMultiplicity->GetXaxis())->SetBinLabel(5,"n_{RP} #geq 4");
1725 (fAvMultiplicity->GetXaxis())->SetBinLabel(6,"n_{RP} #geq 5");
1726 (fAvMultiplicity->GetXaxis())->SetBinLabel(7,"n_{RP} #geq 6");
1727 (fAvMultiplicity->GetXaxis())->SetBinLabel(8,"n_{RP} #geq 7");
1728 (fAvMultiplicity->GetXaxis())->SetBinLabel(9,"n_{RP} #geq 8");
1729 fIntFlowProfiles->Add(fAvMultiplicity);
b40a910e 1730 // Average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with wrong errors!):
1731 TString correlationFlag[4] = {"#LT#LT2#GT#GT","#LT#LT4#GT#GT","#LT#LT6#GT#GT","#LT#LT8#GT#GT"};
489d5531 1732 TString intFlowCorrelationsProName = "fIntFlowCorrelationsPro";
1733 intFlowCorrelationsProName += fAnalysisLabel->Data();
1734 fIntFlowCorrelationsPro = new TProfile(intFlowCorrelationsProName.Data(),"Average correlations for all events",4,0,4,"s");
b40a910e 1735 fIntFlowCorrelationsPro->Sumw2();
489d5531 1736 fIntFlowCorrelationsPro->SetTickLength(-0.01,"Y");
1737 fIntFlowCorrelationsPro->SetMarkerStyle(25);
1738 fIntFlowCorrelationsPro->SetLabelSize(0.06);
1739 fIntFlowCorrelationsPro->SetLabelOffset(0.01,"Y");
68a3b4b1 1740 for(Int_t b=0;b<4;b++)
b3dacf6b 1741 {
68a3b4b1 1742 (fIntFlowCorrelationsPro->GetXaxis())->SetBinLabel(b+1,correlationFlag[b].Data());
b3dacf6b 1743 }
489d5531 1744 fIntFlowProfiles->Add(fIntFlowCorrelationsPro);
b40a910e 1745 // Average correlations squared <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> for all events:
1746 TString squaredCorrelationFlag[4] = {"#LT#LT2#GT^{2}#GT","#LT#LT4#GT^{2}#GT","#LT#LT6#GT^{2}#GT","#LT#LT8#GT^{2}#GT"};
1747 TString intFlowSquaredCorrelationsProName = "fIntFlowSquaredCorrelationsPro";
1748 intFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
1749 fIntFlowSquaredCorrelationsPro = new TProfile(intFlowSquaredCorrelationsProName.Data(),"Average squared correlations for all events",4,0,4,"s");
1750 fIntFlowSquaredCorrelationsPro->Sumw2();
1751 fIntFlowSquaredCorrelationsPro->SetTickLength(-0.01,"Y");
1752 fIntFlowSquaredCorrelationsPro->SetMarkerStyle(25);
1753 fIntFlowSquaredCorrelationsPro->SetLabelSize(0.06);
1754 fIntFlowSquaredCorrelationsPro->SetLabelOffset(0.01,"Y");
1755 for(Int_t b=0;b<4;b++)
1756 {
1757 (fIntFlowSquaredCorrelationsPro->GetXaxis())->SetBinLabel(b+1,squaredCorrelationFlag[b].Data());
1758 }
1759 fIntFlowProfiles->Add(fIntFlowSquaredCorrelationsPro);
b3dacf6b 1760 if(fCalculateCumulantsVsM)
1761 {
1762 for(Int_t ci=0;ci<4;ci++) // correlation index
1763 {
b40a910e 1764 // average correlations <<2>>, <<4>>, <<6>> and <<8>> versus multiplicity for all events (with wrong errors):
b3dacf6b 1765 TString intFlowCorrelationsVsMProName = "fIntFlowCorrelationsVsMPro";
1766 intFlowCorrelationsVsMProName += fAnalysisLabel->Data();
1767 fIntFlowCorrelationsVsMPro[ci] = new TProfile(Form("%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data()),
1768 Form("%s vs multiplicity",correlationFlag[ci].Data()),
b40a910e 1769 fnBinsMult,fMinMult,fMaxMult,"s");
1770 fIntFlowCorrelationsVsMPro[ci]->Sumw2();
b3dacf6b 1771 fIntFlowCorrelationsVsMPro[ci]->GetYaxis()->SetTitle(correlationFlag[ci].Data());
df23c5ae 1772 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1773 {
1774 fIntFlowCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# RPs");
1775 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1776 {
1777 fIntFlowCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
1778 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1779 {
1780 fIntFlowCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# POIs");
1781 }
b3dacf6b 1782 fIntFlowProfiles->Add(fIntFlowCorrelationsVsMPro[ci]);
b40a910e 1783 // average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> versus multiplicity for all events:
1784 TString intFlowSquaredCorrelationsVsMProName = "fIntFlowSquaredCorrelationsVsMPro";
1785 intFlowSquaredCorrelationsVsMProName += fAnalysisLabel->Data();
1786 fIntFlowSquaredCorrelationsVsMPro[ci] = new TProfile(Form("%s, %s",intFlowSquaredCorrelationsVsMProName.Data(),squaredCorrelationFlag[ci].Data()),
1787 Form("%s vs multiplicity",squaredCorrelationFlag[ci].Data()),
1788 fnBinsMult,fMinMult,fMaxMult,"s");
1789 fIntFlowSquaredCorrelationsVsMPro[ci]->Sumw2();
1790 fIntFlowSquaredCorrelationsVsMPro[ci]->GetYaxis()->SetTitle(squaredCorrelationFlag[ci].Data());
df23c5ae 1791 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1792 {
1793 fIntFlowSquaredCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# RPs");
1794 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1795 {
1796 fIntFlowSquaredCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
1797 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1798 {
1799 fIntFlowSquaredCorrelationsVsMPro[ci]->GetXaxis()->SetTitle("# POIs");
1800 }
b40a910e 1801 fIntFlowProfiles->Add(fIntFlowSquaredCorrelationsVsMPro[ci]);
b3dacf6b 1802 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
1803 } // end of if(fCalculateCumulantsVsM)
489d5531 1804 // averaged all correlations for all events (with wrong errors!):
1805 TString intFlowCorrelationsAllProName = "fIntFlowCorrelationsAllPro";
1806 intFlowCorrelationsAllProName += fAnalysisLabel->Data();
403e3389 1807 fIntFlowCorrelationsAllPro = new TProfile(intFlowCorrelationsAllProName.Data(),"Average all correlations for all events",64,0,64);
b84464d3 1808 fIntFlowCorrelationsAllPro->Sumw2();
489d5531 1809 fIntFlowCorrelationsAllPro->SetTickLength(-0.01,"Y");
1810 fIntFlowCorrelationsAllPro->SetMarkerStyle(25);
1811 fIntFlowCorrelationsAllPro->SetLabelSize(0.03);
1812 fIntFlowCorrelationsAllPro->SetLabelOffset(0.01,"Y");
1813 // 2-p correlations:
403e3389 1814 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(1,"#LT#LT2#GT#GT_{n|n}");
1815 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(2,"#LT#LT2#GT#GT_{2n|2n}");
1816 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(3,"#LT#LT2#GT#GT_{3n|3n}");
1817 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(4,"#LT#LT2#GT#GT_{4n|4n}");
489d5531 1818 // 3-p correlations:
403e3389 1819 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(6,"#LT#LT3#GT#GT_{2n|n,n}");
1820 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(7,"#LT#LT3#GT#GT_{3n|2n,n}");
1821 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(8,"#LT#LT3#GT#GT_{4n|2n,2n}");
1822 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(9,"#LT#LT3#GT#GT_{4n|3n,n}");
489d5531 1823 // 4-p correlations:
403e3389 1824 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(11,"#LT#LT4#GT#GT_{n,n|n,n}");
1825 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(12,"#LT#LT4#GT#GT_{2n,n|2n,n}");
1826 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(13,"#LT#LT4#GT#GT_{2n,2n|2n,2n}");
1827 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(14,"#LT#LT4#GT#GT_{3n|n,n,n}");
1828 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(15,"#LT#LT4#GT#GT_{3n,n|3n,n}");
1829 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(16,"#LT#LT4#GT#GT_{3n,n|2n,2n}");
1830 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(17,"#LT#LT4#GT#GT_{4n|2n,n,n}");
489d5531 1831 // 5-p correlations:
403e3389 1832 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(19,"#LT#LT5#GT#GT_{2n,n|n,n,n}");
1833 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(20,"#LT#LT5#GT#GT_{2n,2n|2n,n,n}");
1834 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(21,"#LT#LT5#GT#GT_{3n,n|2n,n,n}");
1835 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(22,"#LT#LT5#GT#GT_{4n|n,n,n,n}");
489d5531 1836 // 6-p correlations:
403e3389 1837 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(24,"#LT#LT6#GT#GT_{n,n,n|n,n,n}");
1838 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(25,"#LT#LT6#GT#GT_{2n,n,n|2n,n,n}");
1839 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(26,"#LT#LT6#GT#GT_{2n,2n|n,n,n,n}");
1840 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(27,"#LT#LT6#GT#GT_{3n,n|n,n,n,n}");
489d5531 1841 // 7-p correlations:
403e3389 1842 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(29,"#LT#LT7#GT#GT_{2n,n,n|n,n,n,n}");
489d5531 1843 // 8-p correlations:
403e3389 1844 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(31,"#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}");
b84464d3 1845 // EXTRA correlations for v3{5} study:
403e3389 1846 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(33,"#LT#LT4#GT#GT_{4n,2n|3n,3n}");
1847 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(34,"#LT#LT5#GT#GT_{3n,3n|2n,2n,2n}");
b84464d3 1848 // EXTRA correlations for Teaney-Yan study:
403e3389 1849 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(35,"#LT#LT2#GT#GT_{5n|5n}");
1850 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(36,"#LT#LT2#GT#GT_{6n|6n}");
1851 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(37,"#LT#LT3#GT#GT_{5n|3n,2n}");
1852 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(38,"#LT#LT3#GT#GT_{5n|4n,1n}");
1853 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(39,"#LT#LT3#GT#GT_{6n|3n,3n}");
1854 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(40,"#LT#LT3#GT#GT_{6n|4n,2n}");
1855 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(41,"#LT#LT3#GT#GT_{6n|5n,1n}");
1856 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(42,"#LT#LT4#GT#GT_{6n|3n,2n,1n}");
1857 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(43,"#LT#LT4#GT#GT_{3n,2n|3n,2n}");
1858 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(44,"#LT#LT4#GT#GT_{4n,1n|3n,2n}");
1859 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(45,"#LT#LT4#GT#GT_{3n,3n|3n,3n}");
1860 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(46,"#LT#LT4#GT#GT_{4n,2n|3n,3n}");
1861 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(47,"#LT#LT4#GT#GT_{5n,1n|3n,3n}");
1862 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(48,"#LT#LT4#GT#GT_{4n,2n|4n,2n}");
1863 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(49,"#LT#LT4#GT#GT_{5n,1n|4n,2n}");
1864 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(50,"#LT#LT4#GT#GT_{5n|3n,1n,1n}");
1865 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(51,"#LT#LT4#GT#GT_{5n|2n,2n,1n}");
1866 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(52,"#LT#LT4#GT#GT_{5n,1n|5n,1n}");
1867 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(53,"#LT#LT5#GT#GT_{3n,3n|3n,2n,1n}");
1868 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(54,"#LT#LT5#GT#GT_{4n,2n|3n,2n,1n}");
1869 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(55,"#LT#LT5#GT#GT_{3n,2n|3n,1n,1n}");
1870 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(56,"#LT#LT5#GT#GT_{3n,2n|2n,2n,1n}");
1871 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(57,"#LT#LT5#GT#GT_{5n,1n|3n,2n,1n}");
1872 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(58,"#LT#LT6#GT#GT_{3n,2n,1n|3n,2n,1n}");
1873 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(59,"#LT#LT4#GT#GT_{6n|4n,1n,1n}");
1874 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(60,"#LT#LT4#GT#GT_{6n|2n,2n,2n}");
1875 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(61,"#LT#LT5#GT#GT_{6n|2n,2n,1n,1n}");
1876 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(62,"#LT#LT5#GT#GT_{4n,1n,1n|3n,3n}");
1877 (fIntFlowCorrelationsAllPro->GetXaxis())->SetBinLabel(63,"#LT#LT6#GT#GT_{3n,3n|2n,2n,1n,1n}");
489d5531 1878 fIntFlowProfiles->Add(fIntFlowCorrelationsAllPro);
3435cacb 1879 // average all correlations versus multiplicity (errors via Sumw2 - to be improved):
1880 if(fCalculateAllCorrelationsVsM)
1881 {
1882 // 2-p correlations vs M:
1883 fIntFlowCorrelationsAllVsMPro[0] = new TProfile("two1n1n","#LT#LT2#GT#GT_{n|n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1884 fIntFlowCorrelationsAllVsMPro[1] = new TProfile("two2n2n","#LT#LT2#GT#GT_{2n|2n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1885 fIntFlowCorrelationsAllVsMPro[2] = new TProfile("two3n3n","#LT#LT2#GT#GT_{3n|3n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1886 fIntFlowCorrelationsAllVsMPro[3] = new TProfile("two4n4n","#LT#LT2#GT#GT_{4n|4n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1887 // 3-p correlations vs M:
1888 fIntFlowCorrelationsAllVsMPro[5] = new TProfile("three2n1n1n","#LT#LT3#GT#GT_{2n|n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1889 fIntFlowCorrelationsAllVsMPro[6] = new TProfile("three3n2n1n","#LT#LT3#GT#GT_{3n|2n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1890 fIntFlowCorrelationsAllVsMPro[7] = new TProfile("three4n2n2n","#LT#LT3#GT#GT_{4n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1891 fIntFlowCorrelationsAllVsMPro[8] = new TProfile("three4n3n1n","#LT#LT3#GT#GT_{4n|3n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1892 // 4-p correlations vs M:
1893 fIntFlowCorrelationsAllVsMPro[10] = new TProfile("four1n1n1n1n","#LT#LT4#GT#GT_{n,n|n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1894 fIntFlowCorrelationsAllVsMPro[11] = new TProfile("four2n1n2n1n","#LT#LT4#GT#GT_{2n,n|2n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1895 fIntFlowCorrelationsAllVsMPro[12] = new TProfile("four2n2n2n2n","#LT#LT4#GT#GT_{2n,2n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1896 fIntFlowCorrelationsAllVsMPro[13] = new TProfile("four3n1n1n1n","#LT#LT4#GT#GT_{3n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1897 fIntFlowCorrelationsAllVsMPro[14] = new TProfile("four3n1n3n1n","#LT#LT4#GT#GT_{3n,n|3n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1898 fIntFlowCorrelationsAllVsMPro[15] = new TProfile("four3n1n2n2n","#LT#LT4#GT#GT_{3n,n|2n,2n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1899 fIntFlowCorrelationsAllVsMPro[16] = new TProfile("four4n2n1n1n","#LT#LT4#GT#GT_{4n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1900 // 5-p correlations vs M:
403e3389 1901 fIntFlowCorrelationsAllVsMPro[18] = new TProfile("five2n1n1n1n1n","#LT#LT5#GT#GT_{2n,n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1902 fIntFlowCorrelationsAllVsMPro[19] = new TProfile("five2n2n2n1n1n","#LT#LT5#GT#GT_{2n,2n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1903 fIntFlowCorrelationsAllVsMPro[20] = new TProfile("five3n1n2n1n1n","#LT#LT5#GT#GT_{3n,n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1904 fIntFlowCorrelationsAllVsMPro[21] = new TProfile("five4n1n1n1n1n","#LT#LT5#GT#GT_{4n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1905 // 6-p correlations vs M:
1906 fIntFlowCorrelationsAllVsMPro[23] = new TProfile("six1n1n1n1n1n1n","#LT#LT6#GT#GT_{n,n,n|n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1907 fIntFlowCorrelationsAllVsMPro[24] = new TProfile("six2n1n1n2n1n1n","#LT#LT6#GT#GT_{2n,n,n|2n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1908 fIntFlowCorrelationsAllVsMPro[25] = new TProfile("six2n2n1n1n1n1n","#LT#LT6#GT#GT_{2n,2n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1909 fIntFlowCorrelationsAllVsMPro[26] = new TProfile("six3n1n1n1n1n1n","#LT#LT6#GT#GT_{3n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1910 // 7-p correlations vs M:
1911 fIntFlowCorrelationsAllVsMPro[28] = new TProfile("seven2n1n1n1n1n1n1n","#LT#LT7#GT#GT_{2n,n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
3435cacb 1912 // 8-p correlations vs M:
1913 fIntFlowCorrelationsAllVsMPro[30] = new TProfile("eight1n1n1n1n1n1n1n1n","#LT#LT8#GT#GT_{n,n,n,n|n,n,n,n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1914 // EXTRA correlations vs M for v3{5} study (to be improved - put them in a right order somewhere):
3435cacb 1915 fIntFlowCorrelationsAllVsMPro[32] = new TProfile("four4n2n3n3n","#LT#LT4#GT#GT_{4n,2n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1916 fIntFlowCorrelationsAllVsMPro[33] = new TProfile("five3n3n2n2n2n","#LT#LT5#GT#GT_{3n,3n|2n,2n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1917 // EXTRA correlations vs M for Teaney-Yan study (to be improved - put them in a right order somewhere):
1918 fIntFlowCorrelationsAllVsMPro[34] = new TProfile("two5n5n","#LT#LT2#GT#GT_{5n|5n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1919 fIntFlowCorrelationsAllVsMPro[35] = new TProfile("two6n6n","#LT#LT2#GT#GT_{6n|6n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1920 fIntFlowCorrelationsAllVsMPro[36] = new TProfile("three5n3n2n","#LT#LT3#GT#GT_{5n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1921 fIntFlowCorrelationsAllVsMPro[37] = new TProfile("three5n4n1n","#LT#LT3#GT#GT_{5n|4n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1922 fIntFlowCorrelationsAllVsMPro[38] = new TProfile("three6n3n3n","#LT#LT3#GT#GT_{6n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1923 fIntFlowCorrelationsAllVsMPro[39] = new TProfile("three6n4n2n","#LT#LT3#GT#GT_{6n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1924 fIntFlowCorrelationsAllVsMPro[40] = new TProfile("three6n5n1n","#LT#LT3#GT#GT_{6n|5n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1925 fIntFlowCorrelationsAllVsMPro[41] = new TProfile("four6n3n2n1n","#LT#LT4#GT#GT_{6n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1926 fIntFlowCorrelationsAllVsMPro[42] = new TProfile("four3n2n3n2n","#LT#LT4#GT#GT_{3n,2n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1927 fIntFlowCorrelationsAllVsMPro[43] = new TProfile("four4n1n3n2n","#LT#LT4#GT#GT_{4n,1n|3n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1928 fIntFlowCorrelationsAllVsMPro[44] = new TProfile("four3n3n3n3n","#LT#LT4#GT#GT_{3n,3n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1929 fIntFlowCorrelationsAllVsMPro[45] = new TProfile("four4n2n3n3n","#LT#LT4#GT#GT_{4n,2n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1930 fIntFlowCorrelationsAllVsMPro[46] = new TProfile("four5n1n3n3n","#LT#LT4#GT#GT_{5n,1n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1931 fIntFlowCorrelationsAllVsMPro[47] = new TProfile("four4n2n4n2n","#LT#LT4#GT#GT_{4n,2n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1932 fIntFlowCorrelationsAllVsMPro[48] = new TProfile("four5n1n4n2n","#LT#LT4#GT#GT_{5n,1n|4n,2n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1933 fIntFlowCorrelationsAllVsMPro[49] = new TProfile("four5n3n1n1n","#LT#LT4#GT#GT_{5n|3n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1934 fIntFlowCorrelationsAllVsMPro[50] = new TProfile("four5n2n2n1n","#LT#LT4#GT#GT_{5n|2n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1935 fIntFlowCorrelationsAllVsMPro[51] = new TProfile("four5n1n5n1n","#LT#LT4#GT#GT_{5n,1n|5n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1936 fIntFlowCorrelationsAllVsMPro[52] = new TProfile("five3n3n3n2n1n","#LT#LT5#GT#GT_{3n,3n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1937 fIntFlowCorrelationsAllVsMPro[53] = new TProfile("five4n2n3n2n1n","#LT#LT5#GT#GT_{4n,2n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1938 fIntFlowCorrelationsAllVsMPro[54] = new TProfile("five3n2n3n1n1n","#LT#LT5#GT#GT_{3n,2n|3n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1939 fIntFlowCorrelationsAllVsMPro[55] = new TProfile("five3n2n2n2n1n","#LT#LT5#GT#GT_{3n,2n|2n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1940 fIntFlowCorrelationsAllVsMPro[56] = new TProfile("five5n1n3n2n1n","#LT#LT5#GT#GT_{5n,1n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
b84464d3 1941 fIntFlowCorrelationsAllVsMPro[57] = new TProfile("six3n2n1n3n2n1n","#LT#LT6#GT#GT_{3n,2n,1n|3n,2n,1n}",fnBinsMult,fMinMult,fMaxMult);
403e3389 1942 fIntFlowCorrelationsAllVsMPro[58] = new TProfile("four6n4n1n1n","#LT#LT4#GT#GT_{6n|4n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
403e3389 1943 fIntFlowCorrelationsAllVsMPro[59] = new TProfile("four6n2n2n2n","#LT#LT4#GT#GT_{6n|2n,2n,2n}",fnBinsMult,fMinMult,fMaxMult);
403e3389 1944 fIntFlowCorrelationsAllVsMPro[60] = new TProfile("five6n2n2n1n1n","#LT#LT5#GT#GT_{6n|2n,2n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
403e3389 1945 fIntFlowCorrelationsAllVsMPro[61] = new TProfile("five4n1n1n3n3n","#LT#LT5#GT#GT_{4n,1n,1n|3n,3n}",fnBinsMult,fMinMult,fMaxMult);
403e3389 1946 fIntFlowCorrelationsAllVsMPro[62] = new TProfile("six3n3n2n2n1n1n","#LT#LT6#GT#GT_{3n,3n|2n,2n,1n,1n}",fnBinsMult,fMinMult,fMaxMult);
3842bdcd 1947 for(Int_t n=0;n<63;n++)
1948 {
1949 if(fIntFlowCorrelationsAllVsMPro[n])
1950 {
1951 fIntFlowCorrelationsAllVsMPro[n]->Sumw2();
df23c5ae 1952 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
1953 {
1954 fIntFlowCorrelationsAllVsMPro[n]->GetXaxis()->SetTitle("# RPs");
1955 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
1956 {
1957 fIntFlowCorrelationsAllVsMPro[n]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
1958 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
1959 {
1960 fIntFlowCorrelationsAllVsMPro[n]->GetXaxis()->SetTitle("# POIs");
1961 }
3842bdcd 1962 fIntFlowAllCorrelationsVsM->Add(fIntFlowCorrelationsAllVsMPro[n]);
1963 } // end of if(fIntFlowCorrelationsAllVsMPro[n])
1964 } // end of for(Int_t n=0;n<63;n++)
3435cacb 1965 } // end of if(fCalculateAllCorrelationsVsM)
489d5531 1966 // when particle weights are used some extra correlations appear:
403e3389 1967 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 1968 {
1969 TString intFlowExtraCorrelationsProName = "fIntFlowExtraCorrelationsPro";
1970 intFlowExtraCorrelationsProName += fAnalysisLabel->Data();
1971 fIntFlowExtraCorrelationsPro = new TProfile(intFlowExtraCorrelationsProName.Data(),"Average extra correlations for all events",100,0,100,"s");
1972 fIntFlowExtraCorrelationsPro->SetTickLength(-0.01,"Y");
1973 fIntFlowExtraCorrelationsPro->SetMarkerStyle(25);
1974 fIntFlowExtraCorrelationsPro->SetLabelSize(0.03);
1975 fIntFlowExtraCorrelationsPro->SetLabelOffset(0.01,"Y");
1976 // extra 2-p correlations:
1977 (fIntFlowExtraCorrelationsPro->GetXaxis())->SetBinLabel(1,"<<w1^3 w2 cos(n*(phi1-phi2))>>");
1978 (fIntFlowExtraCorrelationsPro->GetXaxis())->SetBinLabel(2,"<<w1 w2 w3^2 cos(n*(phi1-phi2))>>");
1979 fIntFlowProfiles->Add(fIntFlowExtraCorrelationsPro);
403e3389 1980 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 1981 // average product of correlations <2>, <4>, <6> and <8>:
403e3389 1982 TString productFlag[6] = {"#LT#LT2#GT#LT4#GT#GT","#LT#LT2#GT#LT6#GT#GT","#LT#LT2#GT#LT8#GT#GT",
1983 "#LT#LT4#GT#LT6#GT#GT","#LT#LT4#GT#LT8#GT#GT","#LT#LT6#GT#LT8#GT#GT"};
489d5531 1984 TString intFlowProductOfCorrelationsProName = "fIntFlowProductOfCorrelationsPro";
1985 intFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
1986 fIntFlowProductOfCorrelationsPro = new TProfile(intFlowProductOfCorrelationsProName.Data(),"Average products of correlations",6,0,6);
1987 fIntFlowProductOfCorrelationsPro->SetTickLength(-0.01,"Y");
1988 fIntFlowProductOfCorrelationsPro->SetMarkerStyle(25);
1989 fIntFlowProductOfCorrelationsPro->SetLabelSize(0.05);
1990 fIntFlowProductOfCorrelationsPro->SetLabelOffset(0.01,"Y");
68a3b4b1 1991 for(Int_t b=0;b<6;b++)
b3dacf6b 1992 {
68a3b4b1 1993 (fIntFlowProductOfCorrelationsPro->GetXaxis())->SetBinLabel(b+1,productFlag[b].Data());
b3dacf6b 1994 }
1995 fIntFlowProfiles->Add(fIntFlowProductOfCorrelationsPro);
ff70ca91 1996 // average product of correlations <2>, <4>, <6> and <8> versus multiplicity
1997 // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 1998 if(fCalculateCumulantsVsM)
1999 {
2000 TString intFlowProductOfCorrelationsVsMProName = "fIntFlowProductOfCorrelationsVsMPro";
2001 intFlowProductOfCorrelationsVsMProName += fAnalysisLabel->Data();
2002 for(Int_t pi=0;pi<6;pi++)
2003 {
2004 fIntFlowProductOfCorrelationsVsMPro[pi] = new TProfile(Form("%s, %s",intFlowProductOfCorrelationsVsMProName.Data(),productFlag[pi].Data()),
2005 Form("%s versus multiplicity",productFlag[pi].Data()),
2006 fnBinsMult,fMinMult,fMaxMult);
df23c5ae 2007 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2008 {
2009 fIntFlowProductOfCorrelationsVsMPro[pi]->GetXaxis()->SetTitle("# RPs");
2010 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2011 {
2012 fIntFlowProductOfCorrelationsVsMPro[pi]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2013 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2014 {
2015 fIntFlowProductOfCorrelationsVsMPro[pi]->GetXaxis()->SetTitle("# POIs");
2016 }
b3dacf6b 2017 fIntFlowProfiles->Add(fIntFlowProductOfCorrelationsVsMPro[pi]);
2018 } // end of for(Int_t pi=0;pi<6;pi++)
2019 } // end of if(fCalculateCumulantsVsM)
0328db2d 2020 // average product of correction terms for NUA:
2021 TString intFlowProductOfCorrectionTermsForNUAProName = "fIntFlowProductOfCorrectionTermsForNUAPro";
2022 intFlowProductOfCorrectionTermsForNUAProName += fAnalysisLabel->Data();
2023 fIntFlowProductOfCorrectionTermsForNUAPro = new TProfile(intFlowProductOfCorrectionTermsForNUAProName.Data(),"Average products of correction terms for NUA",27,0,27);
2024 fIntFlowProductOfCorrectionTermsForNUAPro->SetTickLength(-0.01,"Y");
2025 fIntFlowProductOfCorrectionTermsForNUAPro->SetMarkerStyle(25);
403e3389 2026 fIntFlowProductOfCorrectionTermsForNUAPro->SetLabelSize(0.03);
0328db2d 2027 fIntFlowProductOfCorrectionTermsForNUAPro->SetLabelOffset(0.01,"Y");
2028 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(1,"<<2><cos(#phi)>>");
2029 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(2,"<<2><sin(#phi)>>");
2030 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(3,"<<cos(#phi)><sin(#phi)>>");
2031 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(4,"Cov(<2>,<cos(#phi_{1}+#phi_{2})>)");
2032 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(5,"Cov(<2>,<sin(#phi_{1}+#phi_{2})>)");
2033 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(6,"Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2034 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(7,"Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2035 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(8,"Cov(<4>,<cos(#phi)>)");
2036 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(9,"Cov(<4>,<sin(#phi)>)");
2037 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(10,"Cov(<4>,<cos(#phi_{1}+#phi_{2})>)");
2038 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(11,"Cov(<4>,<sin(#phi_{1}+#phi_{2})>)");
2039 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(12,"Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2040 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(13,"Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2041 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(14,"Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2042 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(15,"Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2043 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(16,"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2044 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(17,"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2045 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(18,"Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2046 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(19,"Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2047 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(20,"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2048 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(21,"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2049 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(22,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2050 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(23,"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2051 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(24,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2052 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(25,"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2053 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(26,"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2054 (fIntFlowProductOfCorrectionTermsForNUAPro->GetXaxis())->SetBinLabel(27,"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2055 fIntFlowProfiles->Add(fIntFlowProductOfCorrectionTermsForNUAPro);
489d5531 2056 // average correction terms for non-uniform acceptance (with wrong errors!):
2057 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
2058 {
2059 TString intFlowCorrectionTermsForNUAProName = "fIntFlowCorrectionTermsForNUAPro";
2060 intFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
b92ea2b9 2061 fIntFlowCorrectionTermsForNUAPro[sc] = new TProfile(Form("%s: %s terms",intFlowCorrectionTermsForNUAProName.Data(),sinCosFlag[sc].Data()),Form("Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].Data()),4,0,4,"s");
489d5531 2062 fIntFlowCorrectionTermsForNUAPro[sc]->SetTickLength(-0.01,"Y");
2063 fIntFlowCorrectionTermsForNUAPro[sc]->SetMarkerStyle(25);
403e3389 2064 fIntFlowCorrectionTermsForNUAPro[sc]->SetLabelSize(0.05);
489d5531 2065 fIntFlowCorrectionTermsForNUAPro[sc]->SetLabelOffset(0.01,"Y");
403e3389 2066 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(1,Form("#LT#LT%s(n(#phi_{1}))#GT#GT",sinCosFlag[sc].Data()));
2067 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(2,Form("#LT#LT%s(n(#phi_{1}+#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
2068 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(3,Form("#LT#LT%s(n(#phi_{1}-#phi_{2}-#phi_{3}))#GT#GT",sinCosFlag[sc].Data()));
2069 (fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->SetBinLabel(4,Form("#LT#LT%s(n(2#phi_{1}-#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
489d5531 2070 fIntFlowProfiles->Add(fIntFlowCorrectionTermsForNUAPro[sc]);
2001bc3a 2071 // versus multiplicity:
b3dacf6b 2072 if(fCalculateCumulantsVsM)
2073 {
2074 TString correctionTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
2075 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2076 {
2077 TString intFlowCorrectionTermsForNUAVsMProName = "fIntFlowCorrectionTermsForNUAVsMPro";
2078 intFlowCorrectionTermsForNUAVsMProName += fAnalysisLabel->Data();
2079 fIntFlowCorrectionTermsForNUAVsMPro[sc][ci] = new TProfile(Form("%s: #LT#LT%s%s#GT#GT",intFlowCorrectionTermsForNUAVsMProName.Data(),sinCosFlag[sc].Data(),correctionTermFlag[ci].Data()),Form("#LT#LT%s%s#GT#GT vs M",sinCosFlag[sc].Data(),correctionTermFlag[ci].Data()),fnBinsMult,fMinMult,fMaxMult,"s");
2080 fIntFlowProfiles->Add(fIntFlowCorrectionTermsForNUAVsMPro[sc][ci]);
2081 }
2082 } // end of if(fCalculateCumulantsVsM)
489d5531 2083 } // end of for(Int_t sc=0;sc<2;sc++)
2084
2085 // d) Book histograms holding the final results:
2086 // average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with correct errors!):
2087 TString intFlowCorrelationsHistName = "fIntFlowCorrelationsHist";
2088 intFlowCorrelationsHistName += fAnalysisLabel->Data();
2089 fIntFlowCorrelationsHist = new TH1D(intFlowCorrelationsHistName.Data(),"Average correlations for all events",4,0,4);
2090 fIntFlowCorrelationsHist->SetTickLength(-0.01,"Y");
2091 fIntFlowCorrelationsHist->SetMarkerStyle(25);
2092 fIntFlowCorrelationsHist->SetLabelSize(0.06);
2093 fIntFlowCorrelationsHist->SetLabelOffset(0.01,"Y");
403e3389 2094 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(1,"#LT#LT2#GT#GT");
2095 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(2,"#LT#LT4#GT#GT");
2096 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(3,"#LT#LT6#GT#GT");
2097 (fIntFlowCorrelationsHist->GetXaxis())->SetBinLabel(4,"#LT#LT8#GT#GT");
489d5531 2098 fIntFlowResults->Add(fIntFlowCorrelationsHist);
ff70ca91 2099 // average correlations <<2>>, <<4>>, <<6>> and <<8>> for all events (with correct errors!) vs M:
b3dacf6b 2100 if(fCalculateCumulantsVsM)
2101 {
2102 for(Int_t ci=0;ci<4;ci++) // correlation index
2103 {
2104 TString intFlowCorrelationsVsMHistName = "fIntFlowCorrelationsVsMHist";
2105 intFlowCorrelationsVsMHistName += fAnalysisLabel->Data();
2106 fIntFlowCorrelationsVsMHist[ci] = new TH1D(Form("%s, %s",intFlowCorrelationsVsMHistName.Data(),correlationFlag[ci].Data()),
2107 Form("%s vs multiplicity",correlationFlag[ci].Data()),
2108 fnBinsMult,fMinMult,fMaxMult);
2109 fIntFlowCorrelationsVsMHist[ci]->GetYaxis()->SetTitle(correlationFlag[ci].Data());
df23c5ae 2110 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2111 {
2112 fIntFlowCorrelationsVsMHist[ci]->GetXaxis()->SetTitle("# RPs");
2113 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2114 {
2115 fIntFlowCorrelationsVsMHist[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2116 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2117 {
2118 fIntFlowCorrelationsVsMHist[ci]->GetXaxis()->SetTitle("# POIs");
2119 }
b3dacf6b 2120 fIntFlowResults->Add(fIntFlowCorrelationsVsMHist[ci]);
2121 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
2122 } // end of if(fCalculateCumulantsVsM)
489d5531 2123 // average all correlations for all events (with correct errors!):
2124 TString intFlowCorrelationsAllHistName = "fIntFlowCorrelationsAllHist";
2125 intFlowCorrelationsAllHistName += fAnalysisLabel->Data();
8ed4edc7 2126 fIntFlowCorrelationsAllHist = new TH1D(intFlowCorrelationsAllHistName.Data(),"Average correlations for all events",34,0,34);
489d5531 2127 fIntFlowCorrelationsAllHist->SetTickLength(-0.01,"Y");
2128 fIntFlowCorrelationsAllHist->SetMarkerStyle(25);
2129 fIntFlowCorrelationsAllHist->SetLabelSize(0.03);
2130 fIntFlowCorrelationsAllHist->SetLabelOffset(0.01,"Y");
2131 // 2-p correlations:
2132 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(1,"<<2>>_{n|n}");
2133 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(2,"<<2>>_{2n|2n}");
2134 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(3,"<<2>>_{3n|3n}");
2135 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(4,"<<2>>_{4n|4n}");
2136 // 3-p correlations:
2137 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(6,"<<3>>_{2n|n,n}");
2138 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(7,"<<3>>_{3n|2n,n}");
2139 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(8,"<<3>>_{4n|2n,2n}");
2140 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(9,"<<3>>_{4n|3n,n}");
2141 // 4-p correlations:
2142 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(11,"<<4>>_{n,n|n,n}");
2143 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(12,"<<4>>_{2n,n|2n,n}");
2144 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(13,"<<4>>_{2n,2n|2n,2n}");
2145 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(14,"<<4>>_{3n|n,n,n}");
2146 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(15,"<<4>>_{3n,n|3n,n}");
2147 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(16,"<<4>>_{3n,n|2n,2n}");
2148 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(17,"<<4>>_{4n|2n,n,n}");
2149 // 5-p correlations:
2150 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(19,"<<5>>_{2n|n,n,n,n}");
2151 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(20,"<<5>>_{2n,2n|2n,n,n}");
2152 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(21,"<<5>>_{3n,n|2n,n,n}");
2153 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(22,"<<5>>_{4n|n,n,n,n}");
2154 // 6-p correlations:
2155 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(24,"<<6>>_{n,n,n|n,n,n}");
2156 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(25,"<<6>>_{2n,n,n|2n,n,n}");
2157 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(26,"<<6>>_{2n,2n|n,n,n,n}");
2158 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(27,"<<6>>_{3n,n|n,n,n,n}");
2159 // 7-p correlations:
2160 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(29,"<<7>>_{2n,n,n|n,n,n,n}");
2161 // 8-p correlations:
2162 (fIntFlowCorrelationsAllHist->GetXaxis())->SetBinLabel(31,"<<8>>_{n,n,n,n|n,n,n,n}");
2163 fIntFlowResults->Add(fIntFlowCorrelationsAllHist);
2164 // average correction terms for non-uniform acceptance (with correct errors!):
2165 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
2166 {
2167 TString intFlowCorrectionTermsForNUAHistName = "fIntFlowCorrectionTermsForNUAHist";
2168 intFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
b92ea2b9 2169 fIntFlowCorrectionTermsForNUAHist[sc] = new TH1D(Form("%s: %s terms",intFlowCorrectionTermsForNUAHistName.Data(),sinCosFlag[sc].Data()),Form("Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].Data()),4,0,4);
489d5531 2170 fIntFlowCorrectionTermsForNUAHist[sc]->SetTickLength(-0.01,"Y");
2171 fIntFlowCorrectionTermsForNUAHist[sc]->SetMarkerStyle(25);
403e3389 2172 fIntFlowCorrectionTermsForNUAHist[sc]->SetLabelSize(0.05);
489d5531 2173 fIntFlowCorrectionTermsForNUAHist[sc]->SetLabelOffset(0.01,"Y");
b92ea2b9 2174 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(1,Form("#LT#LT%s(n(#phi_{1}))#GT#GT",sinCosFlag[sc].Data()));
403e3389 2175 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(2,Form("#LT#LT%s(n(#phi_{1}+#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
2176 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(3,Form("#LT#LT%s(n(#phi_{1}-#phi_{2}-#phi_{3}))#GT#GT",sinCosFlag[sc].Data()));
2177 (fIntFlowCorrectionTermsForNUAHist[sc]->GetXaxis())->SetBinLabel(4,Form("#LT#LT%s(n(2#phi_{1}-#phi_{2}))#GT#GT",sinCosFlag[sc].Data()));
489d5531 2178 fIntFlowResults->Add(fIntFlowCorrectionTermsForNUAHist[sc]);
2179 } // end of for(Int_t sc=0;sc<2;sc++)
2180 // covariances (multiplied with weight dependent prefactor):
2181 TString intFlowCovariancesName = "fIntFlowCovariances";
2182 intFlowCovariancesName += fAnalysisLabel->Data();
2183 fIntFlowCovariances = new TH1D(intFlowCovariancesName.Data(),"Covariances (multiplied with weight dependent prefactor)",6,0,6);
2184 fIntFlowCovariances->SetLabelSize(0.04);
2185 fIntFlowCovariances->SetMarkerStyle(25);
403e3389 2186 (fIntFlowCovariances->GetXaxis())->SetBinLabel(1,"Cov(#LT2#GT,#LT4#GT)");
2187 (fIntFlowCovariances->GetXaxis())->SetBinLabel(2,"Cov(#LT2#GT,#LT6#GT)");
2188 (fIntFlowCovariances->GetXaxis())->SetBinLabel(3,"Cov(#LT2#GT,#LT8#GT)");
2189 (fIntFlowCovariances->GetXaxis())->SetBinLabel(4,"Cov(#LT4#GT,#LT6#GT)");
2190 (fIntFlowCovariances->GetXaxis())->SetBinLabel(5,"Cov(#LT4#GT,#LT8#GT)");
2191 (fIntFlowCovariances->GetXaxis())->SetBinLabel(6,"Cov(#LT6#GT,#LT8#GT)");
489d5531 2192 fIntFlowResults->Add(fIntFlowCovariances);
2193 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8>:
2194 TString intFlowSumOfEventWeightsName = "fIntFlowSumOfEventWeights";
2195 intFlowSumOfEventWeightsName += fAnalysisLabel->Data();
2196 for(Int_t power=0;power<2;power++)
2197 {
2198 fIntFlowSumOfEventWeights[power] = new TH1D(Form("%s: %s",intFlowSumOfEventWeightsName.Data(),powerFlag[power].Data()),Form("Sum of %s event weights for correlations",powerFlag[power].Data()),4,0,4);
403e3389 2199 fIntFlowSumOfEventWeights[power]->SetLabelSize(0.04);
489d5531 2200 fIntFlowSumOfEventWeights[power]->SetMarkerStyle(25);
2201 if(power == 0)
2202 {
403e3389 2203 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT}");
2204 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT4#GT}");
2205 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT6#GT}");
2206 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT8#GT}");
489d5531 2207 } else if (power == 1)
2208 {
403e3389 2209 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT}^{2}");
2210 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT4#GT}^{2}");
2211 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT6#GT}^{2}");
2212 (fIntFlowSumOfEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT8#GT}^{2}");
489d5531 2213 }
2214 fIntFlowResults->Add(fIntFlowSumOfEventWeights[power]);
2215 }
2216 // sum of products of event weights for correlations <2>, <4>, <6> and <8>:
2217 TString intFlowSumOfProductOfEventWeightsName = "fIntFlowSumOfProductOfEventWeights";
2218 intFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
2219 fIntFlowSumOfProductOfEventWeights = new TH1D(intFlowSumOfProductOfEventWeightsName.Data(),"Sum of product of event weights for correlations",6,0,6);
403e3389 2220 fIntFlowSumOfProductOfEventWeights->SetLabelSize(0.04);
489d5531 2221 fIntFlowSumOfProductOfEventWeights->SetMarkerStyle(25);
403e3389 2222 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT4#GT}");
2223 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT6#GT}");
2224 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LT8#GT}");
2225 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LT6#GT}");
2226 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(5,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LT8#GT}");
2227 (fIntFlowSumOfProductOfEventWeights->GetXaxis())->SetBinLabel(6,"#sum_{i=1}^{N} w_{#LT6#GT} w_{#LT8#GT}");
489d5531 2228 fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeights);
ff70ca91 2229 // final result for covariances of correlations (multiplied with weight dependent prefactor) versus M
2230 // [0=Cov(2,4),1=Cov(2,6),2=Cov(2,8),3=Cov(4,6),4=Cov(4,8),5=Cov(6,8)]:
b3dacf6b 2231 if(fCalculateCumulantsVsM)
ff70ca91 2232 {
b3dacf6b 2233 TString intFlowCovariancesVsMName = "fIntFlowCovariancesVsM";
2234 intFlowCovariancesVsMName += fAnalysisLabel->Data();
2235 TString covarianceFlag[6] = {"Cov(<2>,<4>)","Cov(<2>,<6>)","Cov(<2>,<8>)","Cov(<4>,<6>)","Cov(<4>,<8>)","Cov(<6>,<8>)"};
2236 for(Int_t ci=0;ci<6;ci++)
2237 {
2238 fIntFlowCovariancesVsM[ci] = new TH1D(Form("%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data()),
2239 Form("%s vs multiplicity",covarianceFlag[ci].Data()),
2240 fnBinsMult,fMinMult,fMaxMult);
2241 fIntFlowCovariancesVsM[ci]->GetYaxis()->SetTitle(covarianceFlag[ci].Data());
df23c5ae 2242 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2243 {
2244 fIntFlowCovariancesVsM[ci]->GetXaxis()->SetTitle("# RPs");
2245 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2246 {
2247 fIntFlowCovariancesVsM[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2248 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2249 {
2250 fIntFlowCovariancesVsM[ci]->GetXaxis()->SetTitle("# POIs");
2251 }
b3dacf6b 2252 fIntFlowResults->Add(fIntFlowCovariancesVsM[ci]);
2253 }
2254 } // end of if(fCalculateCumulantsVsM)
ff70ca91 2255 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8> versus multiplicity
2256 // [0=sum{w_{<2>}},1=sum{w_{<4>}},2=sum{w_{<6>}},3=sum{w_{<8>}}][0=linear 1,1=quadratic]:
b3dacf6b 2257 if(fCalculateCumulantsVsM)
ff70ca91 2258 {
b3dacf6b 2259 TString intFlowSumOfEventWeightsVsMName = "fIntFlowSumOfEventWeightsVsM";
2260 intFlowSumOfEventWeightsVsMName += fAnalysisLabel->Data();
2261 TString sumFlag[2][4] = {{"#sum_{i=1}^{N} w_{<2>}","#sum_{i=1}^{N} w_{<4>}","#sum_{i=1}^{N} w_{<6>}","#sum_{i=1}^{N} w_{<8>}"},
2262 {"#sum_{i=1}^{N} w_{<2>}^{2}","#sum_{i=1}^{N} w_{<4>}^{2}","#sum_{i=1}^{N} w_{<6>}^{2}","#sum_{i=1}^{N} w_{<8>}^{2}"}};
2263 for(Int_t si=0;si<4;si++)
ff70ca91 2264 {
b3dacf6b 2265 for(Int_t power=0;power<2;power++)
2266 {
2267 fIntFlowSumOfEventWeightsVsM[si][power] = new TH1D(Form("%s, %s",intFlowSumOfEventWeightsVsMName.Data(),sumFlag[power][si].Data()),
2268 Form("%s vs multiplicity",sumFlag[power][si].Data()),
2269 fnBinsMult,fMinMult,fMaxMult);
2270 fIntFlowSumOfEventWeightsVsM[si][power]->GetYaxis()->SetTitle(sumFlag[power][si].Data());
df23c5ae 2271 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2272 {
2273 fIntFlowSumOfEventWeightsVsM[si][power]->GetXaxis()->SetTitle("# RPs");
2274 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2275 {
2276 fIntFlowSumOfEventWeightsVsM[si][power]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2277 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2278 {
2279 fIntFlowSumOfEventWeightsVsM[si][power]->GetXaxis()->SetTitle("# POIs");
2280 }
b3dacf6b 2281 fIntFlowResults->Add(fIntFlowSumOfEventWeightsVsM[si][power]);
2282 } // end of for(Int_t power=0;power<2;power++)
2283 } // end of for(Int_t si=0;si<4;si++)
2284 } // end of if(fCalculateCumulantsVsM)
ff70ca91 2285 // sum of products of event weights for correlations <2>, <4>, <6> and <8> vs M
2286 // [0=sum{w_{<2>}w_{<4>}},1=sum{w_{<2>}w_{<6>}},2=sum{w_{<2>}w_{<8>}},
2287 // 3=sum{w_{<4>}w_{<6>}},4=sum{w_{<4>}w_{<8>}},5=sum{w_{<6>}w_{<8>}}]:
b3dacf6b 2288 if(fCalculateCumulantsVsM)
2289 {
2290 TString intFlowSumOfProductOfEventWeightsVsMName = "fIntFlowSumOfProductOfEventWeightsVsM";
2291 intFlowSumOfProductOfEventWeightsVsMName += fAnalysisLabel->Data();
2292 TString sopowFlag[6] = {"#sum_{i=1}^{N} w_{<2>} w_{<4>}","#sum_{i=1}^{N} w_{<2>} w_{<6>}","#sum_{i=1}^{N} w_{<2>} w_{<8>}",
2293 "#sum_{i=1}^{N} w_{<4>} w_{<6>}","#sum_{i=1}^{N} w_{<4>} w_{<8>}","#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
2294 for(Int_t pi=0;pi<6;pi++)
2295 {
2296 fIntFlowSumOfProductOfEventWeightsVsM[pi] = new TH1D(Form("%s, %s",intFlowSumOfProductOfEventWeightsVsMName.Data(),sopowFlag[pi].Data()),
2297 Form("%s versus multiplicity",sopowFlag[pi].Data()),
2298 fnBinsMult,fMinMult,fMaxMult);
df23c5ae 2299 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2300 {
2301 fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetXaxis()->SetTitle("# RPs");
2302 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2303 {
2304 fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2305 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2306 {
2307 fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetXaxis()->SetTitle("# POIs");
2308 }
b3dacf6b 2309 fIntFlowSumOfProductOfEventWeightsVsM[pi]->GetYaxis()->SetTitle(sopowFlag[pi].Data());
2310 fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeightsVsM[pi]);
2311 } // end of for(Int_t pi=0;pi<6;pi++)
2312 } // end of if(fCalculateCumulantsVsM)
0328db2d 2313 // covariances of NUA terms (multiplied with weight dependent prefactor):
2314 TString intFlowCovariancesNUAName = "fIntFlowCovariancesNUA";
2315 intFlowCovariancesNUAName += fAnalysisLabel->Data();
2316 fIntFlowCovariancesNUA = new TH1D(intFlowCovariancesNUAName.Data(),"Covariances for NUA (multiplied with weight dependent prefactor)",27,0,27);
2317 fIntFlowCovariancesNUA->SetLabelSize(0.04);
2318 fIntFlowCovariancesNUA->SetMarkerStyle(25);
2319 fIntFlowCovariancesNUA->GetXaxis()->SetLabelSize(0.02);
2320 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(1,"Cov(<2>,<cos(#phi)>");
2321 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(2,"Cov(<2>,<sin(#phi)>)");
2322 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(3,"Cov(<cos(#phi)>,<sin(#phi)>)");
2323 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(4,"Cov(<2>,<cos(#phi_{1}+#phi_{2})>)");
2324 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(5,"Cov(<2>,<sin(#phi_{1}+#phi_{2})>)");
2325 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(6,"Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2326 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(7,"Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2327 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(8,"Cov(<4>,<cos(#phi)>)");
2328 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(9,"Cov(<4>,<sin(#phi)>)");
2329 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(10,"Cov(<4>,<cos(#phi_{1}+#phi_{2})>)");
2330 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(11,"Cov(<4>,<sin(#phi_{1}+#phi_{2})>)");
2331 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(12,"Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2332 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(13,"Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>>)");
2333 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(14,"Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2334 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(15,"Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2335 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(16,"Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2336 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(17,"Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2337 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(18,"Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)");
2338 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(19,"Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)");
2339 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(20,"Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2340 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(21,"Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2341 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(22,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)");
2342 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(23,"Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2343 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(24,"Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2344 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(25,"Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)");
2345 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(26,"Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)");
2346 (fIntFlowCovariancesNUA->GetXaxis())->SetBinLabel(27,"Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)");
2347 fIntFlowResults->Add(fIntFlowCovariancesNUA);
2348 // sum of linear and quadratic event weights for NUA terms:
2349 TString intFlowSumOfEventWeightsNUAName = "fIntFlowSumOfEventWeightsNUA";
2350 intFlowSumOfEventWeightsNUAName += fAnalysisLabel->Data();
2351 for(Int_t sc=0;sc<2;sc++)
2352 {
2353 for(Int_t power=0;power<2;power++)
2354 {
b92ea2b9 2355 fIntFlowSumOfEventWeightsNUA[sc][power] = new TH1D(Form("%s: %s, %s",intFlowSumOfEventWeightsNUAName.Data(),powerFlag[power].Data(),sinCosFlag[sc].Data()),Form("Sum of %s event weights for NUA %s terms",powerFlag[power].Data(),sinCosFlag[sc].Data()),4,0,4); // to be improved - 4
0328db2d 2356 fIntFlowSumOfEventWeightsNUA[sc][power]->SetLabelSize(0.05);
2357 fIntFlowSumOfEventWeightsNUA[sc][power]->SetMarkerStyle(25);
2358 if(power == 0)
2359 {
2360 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(1,Form("#sum_{i=1}^{N} w_{<%s(#phi)>}",sinCosFlag[sc].Data()));
2361 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(2,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}+#phi_{2})>}",sinCosFlag[sc].Data()));
b92ea2b9 2362 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}",sinCosFlag[sc].Data()));
2363 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(4,Form("#sum_{i=1}^{N} w_{<%s(2#phi_{1}-#phi_{2})>}",sinCosFlag[sc].Data()));
0328db2d 2364 } else if(power == 1)
2365 {
2366 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(1,Form("#sum_{i=1}^{N} w_{<%s(#phi)>}^{2}",sinCosFlag[sc].Data()));
2367 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(2,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}+#phi_{2})>}^{2}",sinCosFlag[sc].Data()));
2368 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(3,Form("#sum_{i=1}^{N} w_{<%s(#phi_{1}-#phi_{2}-#phi_{3})>}^{2}",sinCosFlag[sc].Data()));
b92ea2b9 2369 (fIntFlowSumOfEventWeightsNUA[sc][power]->GetXaxis())->SetBinLabel(4,Form("#sum_{i=1}^{N} w_{<%s(2#phi_{1}-#phi_{2})>}^{2}",sinCosFlag[sc].Data()));
0328db2d 2370 }
2371 fIntFlowResults->Add(fIntFlowSumOfEventWeightsNUA[sc][power]);
2372 }
2373 }
2374 // sum of products of event weights for NUA terms:
2375 TString intFlowSumOfProductOfEventWeightsNUAName = "fIntFlowSumOfProductOfEventWeightsNUA";
2376 intFlowSumOfProductOfEventWeightsNUAName += fAnalysisLabel->Data();
2377 fIntFlowSumOfProductOfEventWeightsNUA = new TH1D(intFlowSumOfProductOfEventWeightsNUAName.Data(),"Sum of product of event weights for NUA terms",27,0,27);
403e3389 2378 fIntFlowSumOfProductOfEventWeightsNUA->SetLabelSize(0.02);
0328db2d 2379 fIntFlowSumOfProductOfEventWeightsNUA->SetMarkerStyle(25);
62e36168 2380 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(1,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi)#GT}");
2381 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(2,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi)#GT}");
2382 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(3,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi)#GT}");
2383 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(4,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2384 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(5,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2385 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(6,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2386 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(7,"#sum_{i=1}^{N} w_{#LT2#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2387 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(8,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi)#GT}");
2388 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(9,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi)#GT}");
2389 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(10,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2390 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(11,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2391 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(12,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2392 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(13,"#sum_{i=1}^{N} w_{#LT4#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2393 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(14,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2394 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(15,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2395 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(16,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2396 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(17,"#sum_{i=1}^{N} w_{#LTcos(#phi)#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2397 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(18,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTcos(#phi_{1}+#phi_{2})#GT}");
2398 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(19,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2399 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(20,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2400 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(21,"#sum_{i=1}^{N} w_{#LTsin(#phi)#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2401 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(22,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}+#phi_{2})#GT}");
2402 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(23,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2403 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(24,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2404 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(25,"#sum_{i=1}^{N} w_{#LTsin(#phi_{1}+#phi_{2})#GT} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2405 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(26,"#sum_{i=1}^{N} w_{#LTsin(#phi_{1}+#phi_{2})#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
2406 (fIntFlowSumOfProductOfEventWeightsNUA->GetXaxis())->SetBinLabel(27,"#sum_{i=1}^{N} w_{#LTcos(#phi_{1}-#phi_{2}-#phi_{3})#GT} w_{#LTsin(#phi_{1}-#phi_{2}-#phi_{3})#GT}");
0328db2d 2407 fIntFlowResults->Add(fIntFlowSumOfProductOfEventWeightsNUA);
b3dacf6b 2408 // Final results for reference Q-cumulants:
2409 TString cumulantFlag[4] = {"QC{2}","QC{4}","QC{6}","QC{8}"};
489d5531 2410 TString intFlowQcumulantsName = "fIntFlowQcumulants";
2411 intFlowQcumulantsName += fAnalysisLabel->Data();
b92ea2b9 2412 fIntFlowQcumulants = new TH1D(intFlowQcumulantsName.Data(),"Reference Q-cumulants",4,0,4);
b77b6434 2413 if(fPropagateErrorAlsoFromNIT)
b92ea2b9 2414 {
b77b6434 2415 fIntFlowQcumulants->SetTitle("Reference Q-cumulants (error from non-isotropic terms also propagated)");
b92ea2b9 2416 }
489d5531 2417 fIntFlowQcumulants->SetLabelSize(0.05);
2418 fIntFlowQcumulants->SetMarkerStyle(25);
68a3b4b1 2419 for(Int_t b=0;b<4;b++)
b3dacf6b 2420 {
68a3b4b1 2421 (fIntFlowQcumulants->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
b3dacf6b 2422 }
489d5531 2423 fIntFlowResults->Add(fIntFlowQcumulants);
b3dacf6b 2424 // Final results for reference Q-cumulants rebinned in M:
2425 if(fCalculateCumulantsVsM)
2426 {
2427 TString intFlowQcumulantsRebinnedInMName = "fIntFlowQcumulantsRebinnedInM";
2428 intFlowQcumulantsRebinnedInMName += fAnalysisLabel->Data();
2429 fIntFlowQcumulantsRebinnedInM = new TH1D(intFlowQcumulantsRebinnedInMName.Data(),"Reference Q-cumulants rebinned in M",4,0,4);
2430 fIntFlowQcumulantsRebinnedInM->SetLabelSize(0.05);
2431 fIntFlowQcumulantsRebinnedInM->SetMarkerStyle(25);
68a3b4b1 2432 for(Int_t b=0;b<4;b++)
b3dacf6b 2433 {
68a3b4b1 2434 (fIntFlowQcumulantsRebinnedInM->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
b3dacf6b 2435 }
2436 fIntFlowResults->Add(fIntFlowQcumulantsRebinnedInM);
2437 } // end of if(fCalculateCumulantsVsM)
b92ea2b9 2438 // Ratio between error squared: with/without non-isotropic terms:
2439 TString intFlowQcumulantsErrorSquaredRatioName = "fIntFlowQcumulantsErrorSquaredRatio";
2440 intFlowQcumulantsErrorSquaredRatioName += fAnalysisLabel->Data();
2441 fIntFlowQcumulantsErrorSquaredRatio = new TH1D(intFlowQcumulantsErrorSquaredRatioName.Data(),"Error squared of reference Q-cumulants: #frac{with NUA terms}{without NUA terms}",4,0,4);
2442 fIntFlowQcumulantsErrorSquaredRatio->SetLabelSize(0.05);
2443 fIntFlowQcumulantsErrorSquaredRatio->SetMarkerStyle(25);
2444 for(Int_t b=0;b<4;b++)
2445 {
2446 (fIntFlowQcumulantsErrorSquaredRatio->GetXaxis())->SetBinLabel(b+1,cumulantFlag[b].Data());
2447 }
2448 fIntFlowResults->Add(fIntFlowQcumulantsErrorSquaredRatio);
ff70ca91 2449 // final results for integrated Q-cumulants versus multiplicity:
b3dacf6b 2450 if(fCalculateCumulantsVsM)
2451 {
2452 TString intFlowQcumulantsVsMName = "fIntFlowQcumulantsVsM";
2453 intFlowQcumulantsVsMName += fAnalysisLabel->Data();
2454 for(Int_t co=0;co<4;co++) // cumulant order
2455 {
2456 fIntFlowQcumulantsVsM[co] = new TH1D(Form("%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data()),
3842bdcd 2457 Form("%s vs multiplicity",cumulantFlag[co].Data()),
b3dacf6b 2458 fnBinsMult,fMinMult,fMaxMult);
df23c5ae 2459 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2460 {
2461 fIntFlowQcumulantsVsM[co]->GetXaxis()->SetTitle("# RPs");
2462 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2463 {
2464 fIntFlowQcumulantsVsM[co]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2465 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2466 {
2467 fIntFlowQcumulantsVsM[co]->GetXaxis()->SetTitle("# POIs");
2468 }
b3dacf6b 2469 fIntFlowQcumulantsVsM[co]->GetYaxis()->SetTitle(cumulantFlag[co].Data());
2470 fIntFlowResults->Add(fIntFlowQcumulantsVsM[co]);
2471 } // end of for(Int_t co=0;co<4;co++) // cumulant order
2472 } // end of if(fCalculateCumulantsVsM)
489d5531 2473 // final integrated flow estimates from Q-cumulants:
b3dacf6b 2474 TString flowFlag[4] = {Form("v_{%d}{2,QC}",fHarmonic),Form("v_{%d}{4,QC}",fHarmonic),Form("v_{%d}{6,QC}",fHarmonic),Form("v_{%d}{8,QC}",fHarmonic)};
489d5531 2475 TString intFlowName = "fIntFlow";
2476 intFlowName += fAnalysisLabel->Data();
2477 // integrated flow from Q-cumulants:
b3dacf6b 2478 fIntFlow = new TH1D(intFlowName.Data(),"Reference flow estimates from Q-cumulants",4,0,4);
489d5531 2479 fIntFlow->SetLabelSize(0.05);
2480 fIntFlow->SetMarkerStyle(25);
68a3b4b1 2481 for(Int_t b=0;b<4;b++)
b3dacf6b 2482 {
68a3b4b1 2483 (fIntFlow->GetXaxis())->SetBinLabel(b+1,flowFlag[b].Data());
b3dacf6b 2484 }
ff70ca91 2485 fIntFlowResults->Add(fIntFlow);
b3dacf6b 2486 // Reference flow vs M rebinned in one huge bin:
2487 if(fCalculateCumulantsVsM)
2488 {
2489 TString intFlowRebinnedInMName = "fIntFlowRebinnedInM";
2490 intFlowRebinnedInMName += fAnalysisLabel->Data();
2491 fIntFlowRebinnedInM = new TH1D(intFlowRebinnedInMName.Data(),"Reference flow estimates from Q-cumulants (rebinned in M)",4,0,4);
2492 fIntFlowRebinnedInM->SetLabelSize(0.05);
2493 fIntFlowRebinnedInM->SetMarkerStyle(25);
68a3b4b1 2494 for(Int_t b=0;b<4;b++)
b3dacf6b 2495 {
68a3b4b1 2496 (fIntFlowRebinnedInM->GetXaxis())->SetBinLabel(b+1,flowFlag[b].Data());
b3dacf6b 2497 }
2498 fIntFlowResults->Add(fIntFlowRebinnedInM);
2499 }
ff70ca91 2500 // integrated flow from Q-cumulants: versus multiplicity:
b3dacf6b 2501 if(fCalculateCumulantsVsM)
2502 {
2503 TString intFlowVsMName = "fIntFlowVsM";
2504 intFlowVsMName += fAnalysisLabel->Data();
2505 for(Int_t co=0;co<4;co++) // cumulant order
2506 {
2507 fIntFlowVsM[co] = new TH1D(Form("%s, %s",intFlowVsMName.Data(),flowFlag[co].Data()),
3842bdcd 2508 Form("%s vs multiplicity",flowFlag[co].Data()),
b3dacf6b 2509 fnBinsMult,fMinMult,fMaxMult);
df23c5ae 2510 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2511 {
2512 fIntFlowVsM[co]->GetXaxis()->SetTitle("# RPs");
2513 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2514 {
2515 fIntFlowVsM[co]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2516 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2517 {
2518 fIntFlowVsM[co]->GetXaxis()->SetTitle("# POIs");
2519 }
b3dacf6b 2520 fIntFlowVsM[co]->GetYaxis()->SetTitle(flowFlag[co].Data());
2521 fIntFlowResults->Add(fIntFlowVsM[co]);
2522 } // end of for(Int_t co=0;co<4;co++) // cumulant order
2523 } // end of if(fCalculateCumulantsVsM)
2001bc3a 2524 // quantifying detector effects effects to correlations:
2525 TString intFlowDetectorBiasName = "fIntFlowDetectorBias";
2526 intFlowDetectorBiasName += fAnalysisLabel->Data();
2527 fIntFlowDetectorBias = new TH1D(intFlowDetectorBiasName.Data(),"Quantifying detector bias",4,0,4);
2528 fIntFlowDetectorBias->SetLabelSize(0.05);
2529 fIntFlowDetectorBias->SetMarkerStyle(25);
2530 for(Int_t ci=0;ci<4;ci++)
2531 {
2532 (fIntFlowDetectorBias->GetXaxis())->SetBinLabel(ci+1,Form("#frac{corrected}{measured} %s",cumulantFlag[ci].Data()));
2533 }
2534 fIntFlowResults->Add(fIntFlowDetectorBias);
2535 // quantifying detector effects to correlations versus multiplicity:
b3dacf6b 2536 if(fCalculateCumulantsVsM)
2001bc3a 2537 {
b3dacf6b 2538 TString intFlowDetectorBiasVsMName = "fIntFlowDetectorBiasVsM";
2539 intFlowDetectorBiasVsMName += fAnalysisLabel->Data();
2540 for(Int_t ci=0;ci<4;ci++) // correlation index
2541 {
2542 fIntFlowDetectorBiasVsM[ci] = new TH1D(Form("%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data()),
3842bdcd 2543 Form("Quantifying detector bias for %s vs multiplicity",cumulantFlag[ci].Data()),
b3dacf6b 2544 fnBinsMult,fMinMult,fMaxMult);
df23c5ae 2545 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2546 {
2547 fIntFlowDetectorBiasVsM[ci]->GetXaxis()->SetTitle("# RPs");
2548 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2549 {
2550 fIntFlowDetectorBiasVsM[ci]->GetXaxis()->SetTitle("Reference multiplicity (from ESD)");
2551 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2552 {
2553 fIntFlowDetectorBiasVsM[ci]->GetXaxis()->SetTitle("# POIs");
2554 }
b3dacf6b 2555 fIntFlowDetectorBiasVsM[ci]->GetYaxis()->SetTitle("#frac{corrected}{measured}");
b77b6434 2556 fIntFlowResults->Add(fIntFlowDetectorBiasVsM[ci]);
b3dacf6b 2557 } // end of for(Int_t co=0;co<4;co++) // cumulant order
2558 } // end of if(fCalculateCumulantsVsM)
1268c371 2559
489d5531 2560} // end of AliFlowAnalysisWithQCumulants::BookEverythingForIntegratedFlow()
2561
e1d101a6 2562//=======================================================================================================================
2563
df23c5ae 2564void AliFlowAnalysisWithQCumulants::BookEverythingForControlHistograms()
2565{
2566 // Book all objects for control histograms.
2567
2568 // a) Book profile to hold all flags for control histograms;
2569 // b) Book all control histograms.
2570
2571 // a) Book profile to hold all flags for control histograms:
2572 TString controlHistogramsFlagsName = "fControlHistogramsFlags";
2573 controlHistogramsFlagsName += fAnalysisLabel->Data();
2574 fControlHistogramsFlags = new TProfile(controlHistogramsFlagsName.Data(),"Flags for Control Histograms",3,0,3);
2575 fControlHistogramsFlags->SetTickLength(-0.01,"Y");
2576 fControlHistogramsFlags->SetMarkerStyle(25);
2577 fControlHistogramsFlags->SetLabelSize(0.04);
2578 fControlHistogramsFlags->SetLabelOffset(0.02,"Y");
2579 fControlHistogramsFlags->SetStats(kFALSE);
2580 fControlHistogramsFlags->GetXaxis()->SetBinLabel(1,"fCorrelationNoRPsVsRefMult");
2581 fControlHistogramsFlags->GetXaxis()->SetBinLabel(2,"fCorrelationNoPOIsVsRefMult");
2582 fControlHistogramsFlags->GetXaxis()->SetBinLabel(3,"fCorrelationNoRPsVsNoPOIs");
2583 fControlHistogramsList->Add(fControlHistogramsFlags);
2584
2585 if(!fStoreControlHistograms){return;}
2586
2587 // b) Book all control histograms:
2588 // b1) Correlation between # RPs and ref. mult. determined centrally:
2589 TString sCorrelationNoRPsVsRefMultName = "fCorrelationNoRPsVsRefMult";
2590 sCorrelationNoRPsVsRefMultName += fAnalysisLabel->Data();
2591 fCorrelationNoRPsVsRefMult = new TH2D(sCorrelationNoRPsVsRefMultName.Data(),"# RPs vs. Reference Multiplicity",fnBinsMult,fMinMult,fMaxMult,fnBinsMult,fMinMult,fMaxMult);
2592 fCorrelationNoRPsVsRefMult->SetTickLength(-0.01,"Y");
2593 fCorrelationNoRPsVsRefMult->SetLabelSize(0.04);
2594 fCorrelationNoRPsVsRefMult->SetLabelOffset(0.02,"Y");
2595 fCorrelationNoRPsVsRefMult->SetStats(kTRUE);
2596 fCorrelationNoRPsVsRefMult->GetXaxis()->SetTitle("# RPs");
2597 fCorrelationNoRPsVsRefMult->GetYaxis()->SetTitle("Reference Multiplicity");
2598 fControlHistogramsList->Add(fCorrelationNoRPsVsRefMult);
2599 // b2) Correlation between # POIs and ref. mult. determined centrally:
2600 TString sCorrelationNoPOIsVsRefMultName = "fCorrelationNoPOIsVsRefMult";
2601 sCorrelationNoPOIsVsRefMultName += fAnalysisLabel->Data();
2602 fCorrelationNoPOIsVsRefMult = new TH2D(sCorrelationNoPOIsVsRefMultName.Data(),"# POIs vs. Reference Multiplicity",fnBinsMult,fMinMult,fMaxMult,fnBinsMult,fMinMult,fMaxMult);
2603 fCorrelationNoPOIsVsRefMult->SetTickLength(-0.01,"Y");
2604 fCorrelationNoPOIsVsRefMult->SetLabelSize(0.04);
2605 fCorrelationNoPOIsVsRefMult->SetLabelOffset(0.02,"Y");
2606 fCorrelationNoPOIsVsRefMult->SetStats(kTRUE);
2607 fCorrelationNoPOIsVsRefMult->GetXaxis()->SetTitle("# POIs");
2608 fCorrelationNoPOIsVsRefMult->GetYaxis()->SetTitle("Reference Multiplicity");
2609 fControlHistogramsList->Add(fCorrelationNoPOIsVsRefMult);
2610 // b3) Correlation between # RPs and # POIs:
2611 TString sCorrelationNoRPsVsNoPOIsName = "fCorrelationNoRPsVsNoPOIs";
2612 sCorrelationNoRPsVsNoPOIsName += fAnalysisLabel->Data();
2613 fCorrelationNoRPsVsNoPOIs = new TH2D(sCorrelationNoRPsVsNoPOIsName.Data(),"# RPs vs. # POIs",fnBinsMult,fMinMult,fMaxMult,fnBinsMult,fMinMult,fMaxMult);
2614 fCorrelationNoRPsVsNoPOIs->SetTickLength(-0.01,"Y");
2615 fCorrelationNoRPsVsNoPOIs->SetLabelSize(0.04);
2616 fCorrelationNoRPsVsNoPOIs->SetLabelOffset(0.02,"Y");
2617 fCorrelationNoRPsVsNoPOIs->SetStats(kTRUE);
2618 fCorrelationNoRPsVsNoPOIs->GetXaxis()->SetTitle("# RPs");
2619 fCorrelationNoRPsVsNoPOIs->GetYaxis()->SetTitle("# POIs");
2620 fControlHistogramsList->Add(fCorrelationNoRPsVsNoPOIs);
d9e6d8bb 2621 // b4) <2>, <4>, <6> and <8> vs multiplicity (#RPs, #POIs or external):
2622 TString sCorrelation[4] = {"#LT2#GT","#LT4#GT","#LT6#GT","#LT8#GT"};
2623 TString sMultiplicity = "";
2624 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
2625 {
2626 sMultiplicity = "# RPs";
2627 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
2628 {
2629 sMultiplicity = "Reference multiplicity (from ESD)";
2630 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
2631 {
2632 sMultiplicity = "# POIs";
2633 }
2634 for(Int_t ci=0;ci<4;ci++)
2635 {
2636 fCorrelation2468VsMult[ci] = new TH2D(Form("%s vs M",sCorrelation[ci].Data()),Form("%s vs M",sCorrelation[ci].Data()),fnBinsMult,fMinMult,fMaxMult,10000,fMinValueOfCorrelation[ci],fMaxValueOfCorrelation[ci]); // tbi -> 10000
2637 fCorrelation2468VsMult[ci]->SetTickLength(-0.01,"Y");
2638 fCorrelation2468VsMult[ci]->SetLabelSize(0.04);
2639 fCorrelation2468VsMult[ci]->SetLabelOffset(0.02,"Y");
2640 fCorrelation2468VsMult[ci]->SetStats(kTRUE);
2641 fCorrelation2468VsMult[ci]->GetXaxis()->SetTitle(sMultiplicity.Data());
2642 fCorrelation2468VsMult[ci]->GetYaxis()->SetTitle(sCorrelation[ci].Data());
2643 fControlHistogramsList->Add(fCorrelation2468VsMult[ci]);
2644 } // end of for(Int_t ci=0;ci<4;ci++)
df23c5ae 2645
2646} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForControlHistograms()
2647
2648//=======================================================================================================================
2649
e1d101a6 2650void AliFlowAnalysisWithQCumulants::BookEverythingForMixedHarmonics()
2651{
2652 // Book all objects for mixed harmonics.
2653
2654 // a) Book profile to hold all flags for mixed harmonics;
2655 // b) Book all objects in TList fMixedHarmonicsProfiles;
c10259fb 2656 // c) Book all objects in TList fMixedHarmonicsResults;
2657 // d) Book all objects in TList fMixedHarmonicsErrorPropagation.
e1d101a6 2658
2659 // a) Book profile to hold all flags for mixed harmonics:
2660 TString mixedHarmonicsFlagsName = "fMixedHarmonicsFlags";
2661 mixedHarmonicsFlagsName += fAnalysisLabel->Data();
2662 fMixedHarmonicsFlags = new TProfile(mixedHarmonicsFlagsName.Data(),"Flags for Mixed Harmonics",4,0,4);
2663 fMixedHarmonicsFlags->SetTickLength(-0.01,"Y");
2664 fMixedHarmonicsFlags->SetMarkerStyle(25);
2665 fMixedHarmonicsFlags->SetLabelSize(0.04);
2666 fMixedHarmonicsFlags->SetLabelOffset(0.02,"Y");
2667 fMixedHarmonicsFlags->SetStats(kFALSE);
2668 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(1,"Calculate Mixed Harmonics");
2669 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(2,"Generic Harmonic");
2670 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(3,"Calculate vs Multiplicity");
2671 fMixedHarmonicsFlags->GetXaxis()->SetBinLabel(4,"Multiplicity Weight");
2672 fMixedHarmonicsList->Add(fMixedHarmonicsFlags);
2673
2674 if(!fCalculateMixedHarmonics){return;}
2675
2676 // b) Book all objects in TList fMixedHarmonicsProfiles:
2677 // b1) 2-p correlations:
2678 TString s2pCorrelationsName = "f2pCorrelations";
2679 s2pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2680 f2pCorrelations = new TProfile(s2pCorrelationsName.Data(),Form("2-particle correlations (n = %d)",fHarmonic),6,0,6,"s");
e1d101a6 2681 f2pCorrelations->SetTickLength(-0.01,"Y");
2682 f2pCorrelations->SetMarkerStyle(25);
2683 f2pCorrelations->SetLabelSize(0.04);
2684 f2pCorrelations->SetLabelOffset(0.02,"Y");
2685 f2pCorrelations->SetStats(kFALSE);
2686 f2pCorrelations->Sumw2();
2687 f2pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
2688 f2pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
2689 f2pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
2690 f2pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
2691 f2pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
2692 f2pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
2693 fMixedHarmonicsProfiles->Add(f2pCorrelations);
2694 // b2) 3-p correlations (3+6):
2695 TString s3pCorrelationsName = "f3pCorrelations";
2696 s3pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2697 f3pCorrelations = new TProfile(s3pCorrelationsName.Data(),Form("3-particle correlations (n = %d)",fHarmonic),10,0,10,"s");
e1d101a6 2698 f3pCorrelations->SetTickLength(-0.01,"Y");
2699 f3pCorrelations->SetMarkerStyle(25);
2700 f3pCorrelations->SetLabelSize(0.04);
2701 f3pCorrelations->SetLabelOffset(0.02,"Y");
2702 f3pCorrelations->SetStats(kFALSE);
2703 f3pCorrelations->Sumw2();
2704 // 3-p correlations sensitive to two distinct harmonics (3):
2705 f3pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
2706 f3pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
2707 f3pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
2708 f3pCorrelations->GetXaxis()->SetBinLabel(4,""); // empty
2709 // 3-p correlations sensitive to three distinct harmonics (6):
2710 f3pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
2711 f3pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
2712 f3pCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
2713 f3pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
2714 f3pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
2715 f3pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
2716 fMixedHarmonicsProfiles->Add(f3pCorrelations);
2717 // b3) 4-p correlations (6+15+2+10+8):
2718 TString s4pCorrelationsName = "f4pCorrelations";
2719 s4pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2720 f4pCorrelations = new TProfile(s4pCorrelationsName.Data(),Form("4-particle correlations (n = %d)",fHarmonic),45,0,45,"s");
e1d101a6 2721 f4pCorrelations->SetTickLength(-0.01,"Y");
2722 f4pCorrelations->SetMarkerStyle(25);
2723 f4pCorrelations->SetLabelSize(0.03);
2724 f4pCorrelations->SetLabelOffset(0.02,"Y");
2725 f4pCorrelations->SetStats(kFALSE);
2726 f4pCorrelations->Sumw2();
2727 // "same harmonic" (6):
2728 f4pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2729 f4pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2730 f4pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2731 f4pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
2732 f4pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
2733 f4pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
2734 f4pCorrelations->GetXaxis()->SetBinLabel(7,""); // empty
2735 // "standard candles" (15):
2736 f4pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
2737 f4pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
2738 f4pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
2739 f4pCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
2740 f4pCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
2741 f4pCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
2742 f4pCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
2743 f4pCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
2744 f4pCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
2745 f4pCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
2746 f4pCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
2747 f4pCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
2748 f4pCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
2749 f4pCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
2750 f4pCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
2751 f4pCorrelations->GetXaxis()->SetBinLabel(23,""); // empty
2752 // 4-p correlations sensitive to two distinct harmonics (2):
2753 f4pCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2754 f4pCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2755 f4pCorrelations->GetXaxis()->SetBinLabel(26,""); // empty
2756 // 4-p correlations sensitive to three distinct harmonics (10):
2757 f4pCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
2758 f4pCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2759 f4pCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
2760 f4pCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2761 f4pCorrelations->GetXaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2762 f4pCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
2763 f4pCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
2764 f4pCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2765 f4pCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
2766 f4pCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
2767 f4pCorrelations->GetXaxis()->SetBinLabel(37,""); // empty
2768 // 4-p correlations sensitive to four distinct harmonics (8):
2769 f4pCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
2770 f4pCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
2771 f4pCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
2772 f4pCorrelations->GetXaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
2773 f4pCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
2774 f4pCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2775 f4pCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
2776 f4pCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
2777 fMixedHarmonicsProfiles->Add(f4pCorrelations);
2778 // b3) 5-p correlations (30+9+30+11+3):
2779 TString s5pCorrelationsName = "f5pCorrelations";
2780 s5pCorrelationsName += fAnalysisLabel->Data();
c10259fb 2781 f5pCorrelations = new TProfile(s5pCorrelationsName.Data(),Form("5-particle correlations (n = %d)",fHarmonic),87,0,87,"s");
e1d101a6 2782 f5pCorrelations->SetTickLength(-0.01,"Y");
2783 f5pCorrelations->SetMarkerStyle(25);
2784 f5pCorrelations->SetLabelSize(0.02);
2785 f5pCorrelations->SetLabelOffset(0.02,"Y");
2786 f5pCorrelations->SetStats(kFALSE);
2787 f5pCorrelations->Sumw2();
2788 // "standard candles" (30):
2789 f5pCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2790 f5pCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2791 f5pCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2792 f5pCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2793 f5pCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2794 f5pCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2795 f5pCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2796 f5pCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
2797 f5pCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2798 f5pCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2799 f5pCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
2800 f5pCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
2801 f5pCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
2802 f5pCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
2803 f5pCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2804 f5pCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2805 f5pCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
2806 f5pCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
2807 f5pCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
2808 f5pCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
2809 f5pCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
2810 f5pCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
2811 f5pCorrelations->GetXaxis()->SetBinLabel(23,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
2812 f5pCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
2813 f5pCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
2814 f5pCorrelations->GetXaxis()->SetBinLabel(26,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
2815 f5pCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
2816 f5pCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
2817 f5pCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
2818 f5pCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
c10259fb 2819 f5pCorrelations->GetXaxis()->SetBinLabel(31,""); // empty
e1d101a6 2820 // 5-p correlations sensitive to two distinct harmonics (9):
2821 f5pCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2822 f5pCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2823 f5pCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2824 f5pCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2825 f5pCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2826 f5pCorrelations->GetXaxis()->SetBinLabel(37,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2827 f5pCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2828 f5pCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
2829 f5pCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
c10259fb 2830 f5pCorrelations->GetXaxis()->SetBinLabel(41,""); // empty
e1d101a6 2831 // 5-p correlations sensitive to three distinct harmonics (30):
2832 f5pCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2833 f5pCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
2834 f5pCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
2835 f5pCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
2836 f5pCorrelations->GetXaxis()->SetBinLabel(46,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
2837 f5pCorrelations->GetXaxis()->SetBinLabel(47,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2838 f5pCorrelations->GetXaxis()->SetBinLabel(48,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2839 f5pCorrelations->GetXaxis()->SetBinLabel(49,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2840 f5pCorrelations->GetXaxis()->SetBinLabel(50,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2841 f5pCorrelations->GetXaxis()->SetBinLabel(51,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
2842 f5pCorrelations->GetXaxis()->SetBinLabel(52,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2843 f5pCorrelations->GetXaxis()->SetBinLabel(53,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
2844 f5pCorrelations->GetXaxis()->SetBinLabel(54,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
2845 f5pCorrelations->GetXaxis()->SetBinLabel(55,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
2846 f5pCorrelations->GetXaxis()->SetBinLabel(56,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
2847 f5pCorrelations->GetXaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
2848 f5pCorrelations->GetXaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
2849 f5pCorrelations->GetXaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
2850 f5pCorrelations->GetXaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
2851 f5pCorrelations->GetXaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
2852 f5pCorrelations->GetXaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
2853 f5pCorrelations->GetXaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
2854 f5pCorrelations->GetXaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
2855 f5pCorrelations->GetXaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2856 f5pCorrelations->GetXaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
2857 f5pCorrelations->GetXaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
2858 f5pCorrelations->GetXaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
2859 f5pCorrelations->GetXaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
2860 f5pCorrelations->GetXaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
2861 f5pCorrelations->GetXaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
c10259fb 2862 f5pCorrelations->GetXaxis()->SetBinLabel(72,""); // empty
e1d101a6 2863 // 5-p correlations sensitive to four distinct harmonics (11):
2864 f5pCorrelations->GetXaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
2865 f5pCorrelations->GetXaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
2866 f5pCorrelations->GetXaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
2867 f5pCorrelations->GetXaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
2868 f5pCorrelations->GetXaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
2869 f5pCorrelations->GetXaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
2870 f5pCorrelations->GetXaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
2871 f5pCorrelations->GetXaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
2872 f5pCorrelations->GetXaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
2873 f5pCorrelations->GetXaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
2874 f5pCorrelations->GetXaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
c10259fb 2875 f5pCorrelations->GetXaxis()->SetBinLabel(84,""); // empty
e1d101a6 2876 // 5-p correlations sensitive to five distinct harmonics (3):
2877 f5pCorrelations->GetXaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
2878 f5pCorrelations->GetXaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
2879 f5pCorrelations->GetXaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
2880 fMixedHarmonicsProfiles->Add(f5pCorrelations);
2881 // b4) 6-p correlations (??+??+??+??+??):
2882 TString s6pCorrelationsName = "f6pCorrelations";
2883 s6pCorrelationsName += fAnalysisLabel->Data();
2884 f6pCorrelations = new TProfile(s6pCorrelationsName.Data(),Form("6-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2885 f6pCorrelations->SetTickLength(-0.01,"Y");
2886 f6pCorrelations->SetMarkerStyle(25);
2887 f6pCorrelations->SetLabelSize(0.02);
2888 f6pCorrelations->SetLabelOffset(0.02,"Y");
2889 f6pCorrelations->SetStats(kFALSE);
2890 f6pCorrelations->Sumw2();
2891 //fMixedHarmonicsProfiles->Add(f6pCorrelations); // TBI
2892 // b5) 7-p correlations (??+??+??+??+??):
2893 TString s7pCorrelationsName = "f7pCorrelations";
2894 s7pCorrelationsName += fAnalysisLabel->Data();
2895 f7pCorrelations = new TProfile(s7pCorrelationsName.Data(),Form("7-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2896 f7pCorrelations->SetTickLength(-0.01,"Y");
2897 f7pCorrelations->SetMarkerStyle(25);
2898 f7pCorrelations->SetLabelSize(0.02);
2899 f7pCorrelations->SetLabelOffset(0.02,"Y");
2900 f7pCorrelations->SetStats(kFALSE);
2901 f7pCorrelations->Sumw2();
2902 //fMixedHarmonicsProfiles->Add(f7pCorrelations); // TBI
2903 // b6) 8-p correlations (??+??+??+??+??):
2904 TString s8pCorrelationsName = "f8pCorrelations";
2905 s8pCorrelationsName += fAnalysisLabel->Data();
2906 f8pCorrelations = new TProfile(s8pCorrelationsName.Data(),Form("8-particle correlations (n = %d)",fHarmonic),1,0.,1.);
2907 f8pCorrelations->SetTickLength(-0.01,"Y");
2908 f8pCorrelations->SetMarkerStyle(25);
2909 f8pCorrelations->SetLabelSize(0.02);
2910 f8pCorrelations->SetLabelOffset(0.02,"Y");
2911 f8pCorrelations->SetStats(kFALSE);
2912 f8pCorrelations->Sumw2();
2913 //fMixedHarmonicsProfiles->Add(f8pCorrelations); // TBI
2914
2915 // c) Book all objects in TList fMixedHarmonicsResults:
2916 // QC{2}:
2917 f2pCumulants = f2pCorrelations->ProjectionX("f2pCumulants");
2918 f2pCumulants->SetTitle(Form("2-particle cumulants (n = %d)",fHarmonic));
2919 f2pCumulants->SetStats(kFALSE);
2920 f2pCumulants->SetMarkerStyle(kFullSquare);
2921 f2pCumulants->SetMarkerColor(kBlack);
2922 f2pCumulants->SetLineColor(kBlack);
2923 fMixedHarmonicsResults->Add(f2pCumulants);
2924 // QC{3}:
2925 f3pCumulants = f3pCorrelations->ProjectionX("f3pCumulants");
2926 f3pCumulants->SetTitle(Form("3-particle cumulants (n = %d)",fHarmonic));
2927 f3pCumulants->SetStats(kFALSE);
2928 f3pCumulants->SetMarkerStyle(kFullSquare);
2929 f3pCumulants->SetMarkerColor(kGreen+2);
2930 f3pCumulants->SetLineColor(kGreen+2);
2931 fMixedHarmonicsResults->Add(f3pCumulants);
2932 // QC{4}:
2933 f4pCumulants = f4pCorrelations->ProjectionX("f4pCumulants");
2934 f4pCumulants->SetTitle(Form("4-particle cumulants (n = %d)",fHarmonic));
2935 f4pCumulants->SetStats(kFALSE);
2936 f4pCumulants->SetMarkerStyle(kFullSquare);
2937 f4pCumulants->SetMarkerColor(kRed);
2938 f4pCumulants->SetLineColor(kRed);
2939 fMixedHarmonicsResults->Add(f4pCumulants);
2940 // QC{5}:
2941 f5pCumulants = f5pCorrelations->ProjectionX("f5pCumulants");
2942 f5pCumulants->SetTitle(Form("5-particle cumulants (n = %d)",fHarmonic));
2943 f5pCumulants->SetStats(kFALSE);
2944 f5pCumulants->SetMarkerStyle(kFullSquare);
2945 f5pCumulants->SetMarkerColor(kBlue);
2946 f5pCumulants->SetLineColor(kBlue);
2947 fMixedHarmonicsResults->Add(f5pCumulants);
2948
c10259fb 2949 // d) Book all objects in TList fMixedHarmonicsErrorPropagation:
2950 // Sum of linear and quadratic event weights for mixed harmonics => [0=linear 1,1=quadratic]:
2951 TString mixedHarmonicEventWeightsName = "fMixedHarmonicEventWeights";
2952 mixedHarmonicEventWeightsName += fAnalysisLabel->Data();
2953 TString powerFlag[2] = {"linear","quadratic"};
2954 for(Int_t power=0;power<2;power++)
2955 {
2956 fMixedHarmonicEventWeights[power] = new TH1D(Form("%s: %s",mixedHarmonicEventWeightsName.Data(),powerFlag[power].Data()),Form("Sum of %s event weights for correlations",powerFlag[power].Data()),8,0.,8.);
2957 fMixedHarmonicEventWeights[power]->SetLabelSize(0.04);
2958 fMixedHarmonicEventWeights[power]->SetMarkerStyle(25);
2959 fMixedHarmonicEventWeights[power]->SetStats(kFALSE);
2960 if(power == 0)
2961 {
2962 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum w_{#LT1#GT}");
2963 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum w_{#LT2#GT}");
2964 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum w_{#LT3#GT}");
2965 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum w_{#LT4#GT}");
2966 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(5,"#sum w_{#LT5#GT}");
2967 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(6,"#sum w_{#LT6#GT}");
2968 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(7,"#sum w_{#LT7#GT}");
2969 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(8,"#sum w_{#LT8#GT}");
2970 } else if (power == 1)
2971 {
2972 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(1,"#sum w_{#LT1#GT}^{2}");
2973 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(2,"#sum w_{#LT2#GT}^{2}");
2974 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(3,"#sum w_{#LT3#GT}^{2}");
2975 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(4,"#sum w_{#LT4#GT}^{2}");
2976 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(5,"#sum w_{#LT5#GT}^{2}");
2977 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(6,"#sum w_{#LT6#GT}^{2}");
2978 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(7,"#sum w_{#LT7#GT}^{2}");
2979 (fMixedHarmonicEventWeights[power]->GetXaxis())->SetBinLabel(8,"#sum w_{#LT8#GT}^{2}");
2980 }
2981 fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicEventWeights[power]);
2982 } // end of for(Int_t power=0;power<2;power++)
2983
2984 // Sums of products of event weights for mixed harmonics:
2985 TString mixedHarmonicProductOfEventWeightsName = "fMixedHarmonicProductOfEventWeights";
2986 mixedHarmonicProductOfEventWeightsName += fAnalysisLabel->Data();
2987 fMixedHarmonicProductOfEventWeights = new TH2D(mixedHarmonicProductOfEventWeightsName.Data(),"Sums of products of event weights",8,0.,8.,8,0.,8.);
2988 fMixedHarmonicProductOfEventWeights->SetStats(kFALSE);
2989 fMixedHarmonicProductOfEventWeights->GetXaxis()->SetLabelSize(0.05);
2990 fMixedHarmonicProductOfEventWeights->GetYaxis()->SetLabelSize(0.05);
2991 for(Int_t b=1;b<=8;b++)
2992 {
2993 fMixedHarmonicProductOfEventWeights->GetXaxis()->SetBinLabel(b,Form("w_{#LT%i#GT}",b));
2994 fMixedHarmonicProductOfEventWeights->GetYaxis()->SetBinLabel(b,Form("w_{#LT%i#GT}",b));
2995 }
2996 fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicProductOfEventWeights);
2997
2998 // Averages of products of mixed harmonics correlations:
2999 TString mixedHarmonicProductOfCorrelationsName = "fMixedHarmonicProductOfCorrelations";
3000 mixedHarmonicProductOfCorrelationsName += fAnalysisLabel->Data();
3001 fMixedHarmonicProductOfCorrelations = new TProfile2D(mixedHarmonicProductOfCorrelationsName.Data(),"Averages of products of mixed correlators",139,0.,139.,139,0.,139.);
3002 fMixedHarmonicProductOfCorrelations->Sumw2();
3003 fMixedHarmonicProductOfCorrelations->SetStats(kFALSE);
3004 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetLabelSize(0.015);
3005 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetLabelSize(0.015);
3006 // x-axis:
3007 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
3008 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
3009 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
3010 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
3011 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
3012 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
3013 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
3014 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
3015 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
3016 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
3017 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(11,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
3018 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(12,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
3019 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(13,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
3020 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(14,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
3021 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(15,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
3022 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3023 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3024 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3025 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3026 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
3027 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
3028 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
3029 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(23,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
3030 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
3031 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
3032 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(26,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
3033 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
3034 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
3035 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
3036 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
3037 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
3038 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
3039 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
3040 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
3041 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
3042 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
3043 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(37,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3044 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3045 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
3046 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3047 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
3048 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3049 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3050 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3051 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
3052 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(46,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3053 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(47,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
3054 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(48,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
3055 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(49,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
3056 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(50,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
3057 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(51,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
3058 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(52,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3059 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(53,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
3060 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(54,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3061 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(55,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
3062 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(56,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
3063 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3064 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3065 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3066 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3067 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3068 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3069 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3070 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3071 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3072 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3073 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3074 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3075 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3076 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3077 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3078 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(72,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3079 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3080 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3081 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3082 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3083 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3084 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3085 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
3086 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
3087 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
3088 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
3089 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
3090 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(84,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
3091 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
3092 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
3093 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3094 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(88,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3095 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(89,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3096 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(90,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3097 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(91,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3098 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(92,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3099 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(93,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3100 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(94,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3101 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(95,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
3102 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(96,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3103 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(97,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3104 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(98,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3105 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(99,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3106 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(100,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3107 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(101,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3108 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(102,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3109 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(103,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3110 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(104,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3111 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(105,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3112 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(106,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3113 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(107,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3114 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(108,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3115 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(109,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3116 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(110,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3117 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(111,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3118 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(112,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3119 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(113,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3120 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(114,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3121 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(115,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3122 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(116,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3123 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(117,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3124 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(118,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3125 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(119,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3126 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(120,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3127 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(121,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
3128 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(122,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
3129 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(123,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
3130 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(124,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
3131 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(125,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
3132 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(126,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3133 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(127,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3134 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(128,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3135 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(129,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3136 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(130,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3137 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(131,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3138 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(132,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
3139 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(133,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3140 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(134,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
3141 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(135,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
3142 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(136,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
3143 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(137,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3144 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(138,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
3145 fMixedHarmonicProductOfCorrelations->GetXaxis()->SetBinLabel(139,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3146 // y-axis:
3147 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(1,Form("#LT#LT2#GT#GT_{%dn|%dn}",1*fHarmonic,1*fHarmonic));
3148 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(2,Form("#LT#LT2#GT#GT_{%dn|%dn}",2*fHarmonic,2*fHarmonic));
3149 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(3,Form("#LT#LT2#GT#GT_{%dn|%dn}",3*fHarmonic,3*fHarmonic));
3150 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(4,Form("#LT#LT2#GT#GT_{%dn|%dn}",4*fHarmonic,4*fHarmonic));
3151 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(5,Form("#LT#LT2#GT#GT_{%dn|%dn}",5*fHarmonic,5*fHarmonic));
3152 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(6,Form("#LT#LT2#GT#GT_{%dn|%dn}",6*fHarmonic,6*fHarmonic));
3153 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(7,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic));
3154 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(8,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic));
3155 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(9,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic));
3156 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(10,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,1*fHarmonic));
3157 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(11,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,1*fHarmonic));
3158 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(12,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,2*fHarmonic));
3159 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(13,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,1*fHarmonic));
3160 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(14,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,2*fHarmonic));
3161 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(15,Form("#LT#LT3#GT#GT_{%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,1*fHarmonic));
3162 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(16,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3163 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(17,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3164 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(18,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3165 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(19,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3166 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(20,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic));
3167 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(21,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,6*fHarmonic));
3168 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(22,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",2*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic));
3169 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(23,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic));
3170 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(24,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic));
3171 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(25,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic));
3172 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(26,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic));
3173 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(27,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic));
3174 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(28,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic));
3175 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(29,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic));
3176 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(30,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic));
3177 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(31,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic));
3178 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(32,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,6*fHarmonic,1*fHarmonic));
3179 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(33,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,2*fHarmonic));
3180 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(34,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,3*fHarmonic));
3181 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(35,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,4*fHarmonic));
3182 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(36,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,5*fHarmonic));
3183 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(37,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3184 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(38,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3185 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(39,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic));
3186 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(40,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3187 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(41,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic));
3188 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(42,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3189 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(43,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3190 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(44,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3191 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(45,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic));
3192 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(46,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3193 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(47,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,4*fHarmonic));
3194 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(48,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,5*fHarmonic));
3195 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(49,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic));
3196 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(50,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic));
3197 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(51,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic));
3198 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(52,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3199 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(53,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,2*fHarmonic));
3200 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(54,Form("#LT#LT4#GT#GT_{%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3201 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(55,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,3*fHarmonic));
3202 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(56,Form("#LT#LT4#GT#GT_{%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,4*fHarmonic));
3203 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(57,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3204 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(58,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3205 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(59,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3206 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(60,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3207 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(61,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3208 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(62,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3209 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(63,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3210 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(64,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3211 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(65,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3212 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(66,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3213 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(67,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3214 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(68,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3215 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(69,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3216 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(70,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3217 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(71,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3218 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(72,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3219 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(73,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,4*fHarmonic,2*fHarmonic,1*fHarmonic));
3220 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(74,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,3*fHarmonic,2*fHarmonic));
3221 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(75,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3222 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(76,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,5*fHarmonic,2*fHarmonic,1*fHarmonic));
3223 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(77,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,3*fHarmonic,1*fHarmonic));
3224 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(78,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3225 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(79,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,3*fHarmonic));
3226 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(80,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,6*fHarmonic,1*fHarmonic,1*fHarmonic));
3227 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(81,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,6*fHarmonic,2*fHarmonic,1*fHarmonic));
3228 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(82,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,2*fHarmonic,2*fHarmonic));
3229 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(83,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,6*fHarmonic,3*fHarmonic,1*fHarmonic));
3230 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(84,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,2*fHarmonic));
3231 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(85,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,3*fHarmonic,2*fHarmonic));
3232 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(86,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,6*fHarmonic,4*fHarmonic,1*fHarmonic));
3233 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(87,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3234 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(88,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3235 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(89,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3236 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(90,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3237 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(91,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3238 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(92,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3239 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(93,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3240 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(94,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic));
3241 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(95,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,3*fHarmonic,3*fHarmonic));
3242 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(96,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,1*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3243 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(97,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic));
3244 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(98,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic,1*fHarmonic));
3245 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(99,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,1*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic));
3246 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(100,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",4*fHarmonic,1*fHarmonic,1*fHarmonic,3*fHarmonic,3*fHarmonic));
3247 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(101,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3248 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(102,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3249 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(103,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",4*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3250 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(104,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3251 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(105,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,2*fHarmonic,2*fHarmonic,2*fHarmonic));
3252 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(106,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3253 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(107,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic,2*fHarmonic));
3254 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(108,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,1*fHarmonic,4*fHarmonic,1*fHarmonic,1*fHarmonic));
3255 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(109,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic,3*fHarmonic));
3256 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(110,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3257 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(111,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic,3*fHarmonic));
3258 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(112,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3259 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(113,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3260 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(114,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,5*fHarmonic,5*fHarmonic,4*fHarmonic,1*fHarmonic));
3261 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(115,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,1*fHarmonic,1*fHarmonic));
3262 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(116,Form("#LT#LT5#GT#GT_{%dn|%dn,%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,1*fHarmonic,1*fHarmonic));
3263 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(117,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3264 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(118,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,5*fHarmonic,1*fHarmonic,1*fHarmonic));
3265 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(119,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3266 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(120,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,4*fHarmonic,4*fHarmonic,2*fHarmonic));
3267 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(121,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,2*fHarmonic,5*fHarmonic,5*fHarmonic));
3268 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(122,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,5*fHarmonic,5*fHarmonic,1*fHarmonic));
3269 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(123,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,5*fHarmonic,2*fHarmonic));
3270 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(124,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,4*fHarmonic,2*fHarmonic));
3271 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(125,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,6*fHarmonic,5*fHarmonic,1*fHarmonic));
3272 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(126,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,2*fHarmonic,3*fHarmonic,3*fHarmonic,1*fHarmonic));
3273 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(127,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,1*fHarmonic,1*fHarmonic,4*fHarmonic,3*fHarmonic));
3274 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(128,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",5*fHarmonic,3*fHarmonic,4*fHarmonic,2*fHarmonic,2*fHarmonic));
3275 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(129,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",5*fHarmonic,2*fHarmonic,1*fHarmonic,4*fHarmonic,4*fHarmonic));
3276 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(130,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,1*fHarmonic,3*fHarmonic,2*fHarmonic,2*fHarmonic));
3277 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(131,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,4*fHarmonic,4*fHarmonic,1*fHarmonic));
3278 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(132,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,1*fHarmonic,1*fHarmonic,5*fHarmonic,3*fHarmonic));
3279 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(133,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,3*fHarmonic,5*fHarmonic,2*fHarmonic,2*fHarmonic));
3280 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(134,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,5*fHarmonic,4*fHarmonic,4*fHarmonic,3*fHarmonic));
3281 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(135,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,3*fHarmonic,1*fHarmonic,5*fHarmonic,5*fHarmonic));
3282 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(136,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,6*fHarmonic,5*fHarmonic,4*fHarmonic,3*fHarmonic));
3283 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(137,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,2*fHarmonic,4*fHarmonic,3*fHarmonic,1*fHarmonic));
3284 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(138,Form("#LT#LT5#GT#GT_{%dn,%dn,%dn|%dn,%dn}",6*fHarmonic,2*fHarmonic,1*fHarmonic,5*fHarmonic,4*fHarmonic));
3285 fMixedHarmonicProductOfCorrelations->GetYaxis()->SetBinLabel(139,Form("#LT#LT5#GT#GT_{%dn,%dn|%dn,%dn,%dn}",6*fHarmonic,4*fHarmonic,5*fHarmonic,3*fHarmonic,2*fHarmonic));
3286 fMixedHarmonicsErrorPropagation->Add(fMixedHarmonicProductOfCorrelations);
3287
e1d101a6 3288} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForMixedHarmonics()
3289
3290//=======================================================================================================================
489d5531 3291
489d5531 3292void AliFlowAnalysisWithQCumulants::InitializeArraysForNestedLoops()
3293{
3294 // Initialize arrays of all objects relevant for calculations with nested loops.
3295
3296 // integrated flow:
3297 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3298 {
3299 fIntFlowDirectCorrectionTermsForNUA[sc] = NULL;
3300 }
3301
3302 // differential flow:
3303 // correlations:
3304 for(Int_t t=0;t<2;t++) // type: RP or POI
3305 {
3306 for(Int_t pe=0;pe<2;pe++) // pt or eta
3307 {
3308 for(Int_t ci=0;ci<4;ci++) // correlation index
3309 {
3310 fDiffFlowDirectCorrelations[t][pe][ci] = NULL;
3311 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
3312 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3313 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
3314 // correction terms for non-uniform acceptance:
3315 for(Int_t t=0;t<2;t++) // type: RP or POI
3316 {
3317 for(Int_t pe=0;pe<2;pe++) // pt or eta
3318 {
3319 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3320 {
3321 for(Int_t cti=0;cti<9;cti++) // correction term index
3322 {
3323 fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] = NULL;
3324 }
3325 }
3326 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3327 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
3328
64e500e3 3329 // other differential correlators:
3330 for(Int_t t=0;t<2;t++) // type: RP or POI
3331 {
3332 for(Int_t pe=0;pe<2;pe++) // pt or eta
3333 {
3334 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3335 {
3336 for(Int_t ci=0;ci<1;ci++) // correlator index
3337 {
3338 fOtherDirectDiffCorrelators[t][pe][sc][ci] = NULL;
3339 }
3340 }
3341 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3342 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
489d5531 3343
3344} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForNestedLoops()
3345
e1d101a6 3346//=======================================================================================================================
489d5531 3347
c10259fb 3348void AliFlowAnalysisWithQCumulants::InitializeArraysForMixedHarmonics()
3349{
3350 // Initialize arrays of all objects relevant for mixed harmonics.
3351
3352 for(Int_t power=0;power<2;power++) // linear or quadratic
3353 {
3354 fMixedHarmonicEventWeights[power] = NULL;
3355 }
3356
3357} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForMixedHarmonics()
3358
3359//=======================================================================================================================
3360
d9e6d8bb 3361void AliFlowAnalysisWithQCumulants::InitializeArraysForControlHistograms()
3362{
3363 // Initialize arrays of all objects relevant for control histograms.
3364
3365 for(Int_t ci=0;ci<4;ci++) // correlation index
3366 {
3367 fCorrelation2468VsMult[ci] = NULL;
3368 }
3369
3370} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForControlHistograms()
3371
3372//=======================================================================================================================
3373
489d5531 3374void AliFlowAnalysisWithQCumulants::BookEverythingForNestedLoops()
3375{
3376 // Book all objects relevant for calculations with nested loops.
3377
3378 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
3379 TString typeFlag[2] = {"RP","POI"}; // to be improved (should I promote this to data members?)
3380 TString ptEtaFlag[2] = {"p_{T}","#eta"}; // to be improved (should I promote this to data members?)
3381 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"}; // to be improved (should I promote this to data members?)
3382 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
3383 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
3384
3385 TString evaluateNestedLoopsName = "fEvaluateNestedLoops";
3386 evaluateNestedLoopsName += fAnalysisLabel->Data();
3387 fEvaluateNestedLoops = new TProfile(evaluateNestedLoopsName.Data(),"Flags for nested loops",4,0,4);
3388 fEvaluateNestedLoops->SetLabelSize(0.03);
e1d101a6 3389 fEvaluateNestedLoops->SetStats(kFALSE);
489d5531 3390 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(1,"fEvaluateIntFlowNestedLoops");
3391 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(2,"fEvaluateDiffFlowNestedLoops");
3392 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(3,"fCrossCheckInPtBinNo");
3393 (fEvaluateNestedLoops->GetXaxis())->SetBinLabel(4,"fCrossCheckInEtaBinNo");
3394 fEvaluateNestedLoops->Fill(0.5,(Int_t)fEvaluateIntFlowNestedLoops);
3395 fEvaluateNestedLoops->Fill(1.5,(Int_t)fEvaluateDiffFlowNestedLoops);
3396 fEvaluateNestedLoops->Fill(2.5,fCrossCheckInPtBinNo);
3397 fEvaluateNestedLoops->Fill(3.5,fCrossCheckInEtaBinNo);
3398 fNestedLoopsList->Add(fEvaluateNestedLoops);
3399 // nested loops for integrated flow:
3400 if(fEvaluateIntFlowNestedLoops)
3401 {
3402 // correlations:
3403 TString intFlowDirectCorrelationsName = "fIntFlowDirectCorrelations";
3404 intFlowDirectCorrelationsName += fAnalysisLabel->Data();
403e3389 3405 fIntFlowDirectCorrelations = new TProfile(intFlowDirectCorrelationsName.Data(),"Multiparticle correlations calculated with nested loops (for int. flow)",64,0,64,"s");
489d5531 3406 fNestedLoopsList->Add(fIntFlowDirectCorrelations);
403e3389 3407 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 3408 {
3409 TString intFlowExtraDirectCorrelationsName = "fIntFlowExtraDirectCorrelations";
3410 intFlowExtraDirectCorrelationsName += fAnalysisLabel->Data();
3411 fIntFlowExtraDirectCorrelations = new TProfile(intFlowExtraDirectCorrelationsName.Data(),"Extra multiparticle correlations calculated with nested loops (for int. flow)",100,0,100,"s");
3412 fNestedLoopsList->Add(fIntFlowExtraDirectCorrelations);
403e3389 3413 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 3414 // correction terms for non-uniform acceptance:
3415 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
3416 {
3417 TString intFlowDirectCorrectionTermsForNUAName = "fIntFlowDirectCorrectionTermsForNUA";
3418 intFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
3419 fIntFlowDirectCorrectionTermsForNUA[sc] = new TProfile(Form("%s: %s terms",intFlowDirectCorrectionTermsForNUAName.Data(),sinCosFlag[sc].Data()),Form("Correction terms for non-uniform acceptance (%s terms)",sinCosFlag[sc].Data()),10,0,10,"s");
3420 fNestedLoopsList->Add(fIntFlowDirectCorrectionTermsForNUA[sc]);
3421 } // end of for(Int_t sc=0;sc<2;sc++)
e1d101a6 3422 // Mixed harmonics:
3423 if(fCalculateMixedHarmonics)
3424 {
3425 TString mixedHarmonicsNestedLoopsName = "fMixedHarmonicsNestedLoops";
3426 mixedHarmonicsNestedLoopsName += fAnalysisLabel->Data();
3427 fMixedHarmonicsNestedLoops = new TProfile(mixedHarmonicsNestedLoopsName.Data(),"Mixed harmonics calculated with nested loops",200,0,200); // TBI hardwired 200
3428 fNestedLoopsList->Add(fMixedHarmonicsNestedLoops);
3429 } // end of if(fCalculateMixedHarmonics)
489d5531 3430 } // end of if(fEvaluateIntFlowNestedLoops)
3431
3432 // nested loops for differential flow:
3433 if(fEvaluateDiffFlowNestedLoops)
3434 {
3435 // reduced correlations:
3436 TString diffFlowDirectCorrelationsName = "fDiffFlowDirectCorrelations";
3437 diffFlowDirectCorrelationsName += fAnalysisLabel->Data();
3438 for(Int_t t=0;t<2;t++) // type: RP or POI
3439 {
62e36168 3440 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 3441 {
3442 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
3443 {
3444 // reduced correlations:
3445 fDiffFlowDirectCorrelations[t][pe][rci] = new TProfile(Form("%s, %s, %s, %s",diffFlowDirectCorrelationsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),Form("%s, %s, %s, %s",diffFlowDirectCorrelationsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),1,lowerPtEtaEdge[pe],upperPtEtaEdge[pe],"s");
3446 fDiffFlowDirectCorrelations[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
3447 fNestedLoopsList->Add(fDiffFlowDirectCorrelations[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
3448 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
3449 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
3450 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
64e500e3 3451
489d5531 3452 // correction terms for non-uniform acceptance:
3453 TString diffFlowDirectCorrectionTermsForNUAName = "fDiffFlowDirectCorrectionTermsForNUA";
3454 diffFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
3455 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
3456 {
62e36168 3457 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 3458 {
3459 for(Int_t sc=0;sc<2;sc++) // sin or cos
3460 {
3461 for(Int_t cti=0;cti<9;cti++) // correction term index
3462 {
3463 fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] = new TProfile(Form("%s, %s, %s, %s, cti = %d",diffFlowDirectCorrectionTermsForNUAName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),Form("%s, %s, %s, %s, cti = %d",diffFlowDirectCorrectionTermsForNUAName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),1,lowerPtEtaEdge[pe],upperPtEtaEdge[pe],"s");
3464 fNestedLoopsList->Add(fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti]);
3465 }
3466 }
3467 }
64e500e3 3468 }
3469 // other differential correlators:
3470 TString otherDirectDiffCorrelatorsName = "fOtherDirectDiffCorrelators";
3471 otherDirectDiffCorrelatorsName += fAnalysisLabel->Data();
3472 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
3473 {
62e36168 3474 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 3475 {
3476 for(Int_t sc=0;sc<2;sc++) // sin or cos
3477 {
3478 for(Int_t ci=0;ci<1;ci++) // correlator index
3479 {
3480 fOtherDirectDiffCorrelators[t][pe][sc][ci] = new TProfile(Form("%s, %s, %s, %s, ci = %d",otherDirectDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1),Form("%s, %s, %s, %s, ci = %d",otherDirectDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1),1,lowerPtEtaEdge[pe],upperPtEtaEdge[pe]);
3481 fNestedLoopsList->Add(fOtherDirectDiffCorrelators[t][pe][sc][ci]);
3482 }
3483 }
3484 }
3485 }
3b552efe 3486 // number of RPs and POIs in selected pt and eta bins for cross-checkings:
3487 TString noOfParticlesInBinName = "fNoOfParticlesInBin";
3488 fNoOfParticlesInBin = new TH1D(noOfParticlesInBinName.Data(),"Number of RPs and POIs in selected p_{T} and #eta bin",4,0,4);
489d5531 3489 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(1,"# of RPs in p_{T} bin");
3490 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(2,"# of RPs in #eta bin");
3491 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(3,"# of POIs in p_{T} bin");
3b552efe 3492 fNoOfParticlesInBin->GetXaxis()->SetBinLabel(4,"# of POIs in #eta bin");
489d5531 3493 fNestedLoopsList->Add(fNoOfParticlesInBin);
3494 } // end of if(fEvaluateDiffFlowNestedLoops)
3495
3496} // end of AliFlowAnalysisWithQCumulants::BookEverythingForNestedLoops()
3497
e1d101a6 3498//=========================================================================================================
489d5531 3499
489d5531 3500void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations()
3501{
b84464d3 3502 // Calculate in this method all multiparticle azimuthal correlations.
3503 //
3504 // Remark 1: All multiparticle correlations are stored in TProfile fIntFlowCorrelationsAllPro;
3505 // Remark 2: There is a special TProfile fIntFlowCorrelationsPro holding results
3506 // only for same harmonic's correlations <<2>>, <<4>>, <<6>> and <<8>>;
3507 // Remark 3: Binning of fIntFlowCorrelationsAllPro is organized as follows:
3508 // --------------------------------------------------------------------------------------------------------------------
3509 // 1st bin: <2>_{1n|1n} = two1n1n = cos(1n(phi1-phi2))>
3510 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n(phi1-phi2))>
3511 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n(phi1-phi2))>
3512 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n(phi1-phi2))>
3513 // 5th bin: ---- EMPTY ----
3514 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n(2*phi1-phi2-phi3))>
3515 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n(3*phi1-2*phi2-phi3))>
3516 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n(4*phi1-2*phi2-2*phi3))>
3517 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n(4*phi1-3*phi2-phi3))>
3518 // 10th bin: ---- EMPTY ----
3519 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n(phi1+phi2-phi3-phi4))>
3520 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(n(2*phi1+phi2-2*phi3-phi4))>
3521 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(2n(phi1+phi2-phi3-phi4))>
3522 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n(3*phi1-phi2-phi3-phi4))>
3523 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n(3*phi1+phi2-3*phi3-phi4))>
3524 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n(3*phi1+phi2-2*phi3-2*phi4))>
3525 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n(4*phi1-2*phi2-phi3-phi4))>
3526 // 18th bin: ---- EMPTY ----
3527 // 19th bin: <5>_{2n,1n|1n,1n,1n} = five2n1n1n1n1n = <cos(n(2*phi1+phi2-phi3-phi4-phi5))>
3528 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n(2*phi1+2*phi2-2*phi3-phi4-phi5))>
3529 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n(3*phi1+phi2-2*phi3-phi4-phi5))>
3530 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n(4*phi1-phi2-phi3-phi4-phi5))>
3531 // 23rd bin: ---- EMPTY ----
3532 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n(phi1+phi2+phi3-phi4-phi5-phi6))>
3533 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n(2*phi1+phi2+phi3-2*phi4-phi5-phi6))>
3534 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n(2*phi1+2*phi2-phi3-phi4-phi5-phi6))>
3535 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n(3*phi1+phi2-phi3-phi4-phi5-phi6))>
3536 // 28th bin: ---- EMPTY ----
3537 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n(2*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
3538 // 30th bin: ---- EMPTY ----
3539 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
3540 // 32nd bin: ---- EMPTY ----
3541 // Extra correlations for v3{5} study:
3542 // 33rd bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
3543 // 34th bin: <5>_{3n,3n|2n,2n,2n} = five3n3n2n2n2n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
3544 // Extra correlations for Teaney-Yan study:
3545 // 35th bin: <2>_{5n|5n} = two5n5n = <cos(5n(phi1-phi2)>
3546 // 36th bin: <2>_{6n|6n} = two6n6n = <cos(6n(phi1-phi2)>
3547 // 37th bin: <3>_{5n|3n,2n} = three5n3n2n = <cos(n(5*phi1-3*phi2-2*phi3)>
3548 // 38th bin: <3>_{5n|4n,1n} = three5n4n1n = <cos(n(5*phi1-4*phi2-1*phi3)>
3549 // 39th bin: <3>_{6n|3n,3n} = three6n3n3n = <cos(n(6*phi1-3*phi2-3*phi3)>
3550 // 40th bin: <3>_{6n|4n,2n} = three6n4n2n = <cos(n(6*phi1-4*phi2-2*phi3)>
3551 // 41st bin: <3>_{6n|5n,1n} = three6n5n1n = <cos(n(6*phi1-5*phi2-1*phi3)>
3552 // 42nd bin: <4>_{6n|3n,2n,1n} = four6n3n2n1n = <cos(n(6*phi1-3*phi2-2*phi3-1*phi4)>
3553 // 43rd bin: <4>_{3n,2n|3n,2n} = four3n2n3n2n = <cos(n(3*phi1+2*phi2-3*phi3-2*phi4)>
3554 // 44th bin: <4>_{4n,1n|3n,2n} = four4n1n3n2n = <cos(n(4*phi1+1*phi2-3*phi3-2*phi4)>
3555 // 45th bin: <4>_{3n,3n|3n,3n} = four3n3n3n3n = <cos(3n*(phi1+phi2-phi3-phi4))>
3556 // 46th bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4)>
3557 // 47th bin: <4>_{5n,1n|3n,3n} = four5n1n3n3n = <cos(n(5*phi1+1*phi2-3*phi3-3*phi4)>
3558 // 48th bin: <4>_{4n,2n|4n,2n} = four4n2n4n2n = <cos(n(4*phi1+2*phi2-4*phi3-2*phi4)>
3559 // 49th bin: <4>_{5n,1n|4n,2n} = four5n1n4n2n = <cos(n(5*phi1+1*phi2-4*phi3-2*phi4)>
3560 // 50th bin: <4>_{5n|3n,1n,1n} = four5n3n1n1n = <cos(n(5*phi1-3*phi2-1*phi3-1*phi4)>
3561 // 51st bin: <4>_{5n|2n,2n,1n} = four5n2n2n1n = <cos(n(5*phi1-2*phi2-2*phi3-1*phi4)>
3562 // 52nd bin: <4>_{5n,1n|5n,1n} = four5n1n5n1n = <cos(n(5*phi1+1*phi2-5*phi3-1*phi4)>
3563 // 53rd bin: <5>_{3n,3n|3n,2n,1n} = five3n3n3n2n1n = <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
3564 // 54th bin: <5>_{4n,2n|3n,2n,1n} = five4n2n3n2n1n = <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
3565 // 55th bin: <5>_{3n,2n|3n,1n,1n} = five3n2n3n1n1n = <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
3566 // 56th bin: <5>_{3n,2n|2n,2n,1n} = five3n2n2n2n1n = <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
3567 // 57th bin: <5>_{5n,1n|3n,2n,1n} = five5n1n3n2n1n = <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
3568 // 58th bin: <6>_{3n,2n,1n|3n,2n,1n} = six3n2n1n3n2n1n = <cos(n(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
403e3389 3569 // Extra correlations for Teaney-Yan study (B):
3570 // 59th bin: <4>_{6n|4n,1n,1n} = four6n4n1n1n = <cos(n(6*phi1-4*phi2-1*phi3-1*phi4)>
3571 // 60th bin: <4>_{6n|2n,2n,2n} = four6n2n2n2n = <cos(n(6*phi1-2*phi2-2*phi3-2*phi4)>
3572 // 61st bin: <5>_{6n|2n,2n,1n,1n} = five6n2n2n1n1n = <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5)>
3573 // 62nd bin: <5>_{4n,1n,1n|3n,3n} = five4n1n1n3n3n = <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5)>
3574 // 63rd bin: <6>_{3n,3n|2n,2n,1n,1n} = six3n3n2n2n1n1n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-1*phi5-1*phi6)>
b84464d3 3575 // --------------------------------------------------------------------------------------------------------------------
403e3389 3576
3577 // Multiplicity of an event:
1268c371 3578 Double_t dMult = (*fSpk)(0,0);
b84464d3 3579 // Real parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
489d5531 3580 Double_t dReQ1n = (*fReQ)(0,0);
3581 Double_t dReQ2n = (*fReQ)(1,0);
3582 Double_t dReQ3n = (*fReQ)(2,0);
3583 Double_t dReQ4n = (*fReQ)(3,0);
b84464d3 3584 Double_t dReQ5n = (*fReQ)(4,0);
8ed4edc7 3585 Double_t dReQ6n = (*fReQ)(5,0);
b84464d3 3586 // Imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
489d5531 3587 Double_t dImQ1n = (*fImQ)(0,0);
3588 Double_t dImQ2n = (*fImQ)(1,0);
3589 Double_t dImQ3n = (*fImQ)(2,0);
3590 Double_t dImQ4n = (*fImQ)(3,0);
b84464d3 3591 Double_t dImQ5n = (*fImQ)(4,0);
8ed4edc7 3592 Double_t dImQ6n = (*fImQ)(5,0);
3842bdcd 3593
3594 // Multiplicity bin of an event (relevant for all histos vs M):
3595 Double_t dMultiplicityBin = 0.;
df23c5ae 3596 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 3597 {
df23c5ae 3598 dMultiplicityBin = fNumberOfRPsEBE+0.5;
3599 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 3600 {
3601 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 3602 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
3603 {
3604 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
3605 }
489d5531 3606
b84464d3 3607 // Real parts of expressions involving various combinations of Q-vectors which appears
3608 // simultaneously in several equations for multiparticle correlations bellow:
3609 // Re[Q_{2n}Q_{n}^*Q_{n}^*]
3610 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n;
3611 // Re[Q_{6n}Q_{3n}^*Q_{3n}^*]
3612 Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n;
3613 // Re[Q_{4n}Q_{2n}^*Q_{2n}^*]
489d5531 3614 Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
b84464d3 3615 // Re[Q_{4n}Q_{3n}^*Q_{n}^*]
489d5531 3616 Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
b84464d3 3617 // Re[Q_{3n}Q_{2n}^*Q_{n}^*]
489d5531 3618 Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
b84464d3 3619 + dImQ3n*dImQ2n*dReQ1n;
3620 // Re[Q_{5n}Q_{3n}^*Q_{2n}^*]
3621 Double_t reQ5nQ3nstarQ2nstar = dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
3622 + dImQ5n*dImQ2n*dReQ3n;
3623 // Re[Q_{5n}Q_{4n}^*Q_{1n}^*]
3624 Double_t reQ5nQ4nstarQ1nstar = dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
3625 + dImQ5n*dImQ4n*dReQ1n;
3626 // Re[Q_{6n}Q_{5n}^*Q_{1n}^*]
3627 Double_t reQ6nQ5nstarQ1nstar = dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
3628 + dImQ6n*dImQ5n*dReQ1n;
3629 // Re[Q_{6n}Q_{4n}^*Q_{2n}^*]
3630 Double_t reQ6nQ4nstarQ2nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
3631 + dImQ6n*dImQ4n*dReQ2n;
3632 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{2n}^*]
3633 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
3634 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
3635 // Re[Q_{3n}Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3636 Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
3637 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
403e3389 3638 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
3639 Double_t reQ6nQ2nstarQ2nstarQ2nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
3640 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
b84464d3 3641 // Re[Q_{4n}Q_{2n}^*Q_{n}^*Q_{n}^*]
3642 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
3643 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);
3644 // Re[Q_{4n}Q_{2n}^*Q_{3n}^*Q_{3n}^*]
3645 Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
3646 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;
3647 // Re[Q_{4n}Q_{n}Q_{3n}^*Q_{2n}^*]
3648 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
3649 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
3650 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
3651 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
3652 // Re[Q_{5n}Q_{n}Q_{4n}^*Q_{2n}^*]
3653 Double_t reQ5nQ1nQ4nstarQ2nstar = dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
3654 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
3655 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
3656 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n;
3657 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{3n}^*]
3658 Double_t reQ5nQ1nQ3nstarQ3nstar = dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
3659 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
3660 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n;
3661 // Re[Q_{5n}Q_{3n}^*Q_{n}^*Q_{n}^*]
3662 Double_t reQ5nQ3nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
3663 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
3664 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n;
3665 // Re[Q_{5n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
3666 Double_t reQ5nQ2nstarQ2nstarQ1nstar = -pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
3667 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
403e3389 3668 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n;
3669 // Re[Q_{6n}Q_{4n}^*Q_{n}^*Q_{n}^*]
3670 Double_t reQ6nQ4nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
3671 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
3672 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n;
489d5531 3673 // |Q_{2n}|^2 |Q_{n}|^2
3674 Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
b84464d3 3675 // |Q_{4n}|^2 |Q_{2n}|^2
3676 Double_t dQ4nQ2nQ4nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.));
3677 // |Q_{3n}|^2 |Q_{2n}|^2
3678 Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.));
3679 // |Q_{5n}|^2 |Q_{n}|^2
3680 Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
53884472 3681 // |Q_{3n}|^2 |Q_{n}|^2
3682 Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
b84464d3 3683 // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3684 Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
b84464d3 3685 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));
3686 // Re[Q_{2n}Q_{2n}Q_{2n}^*Q_{n}^*Q_{n}^*]
489d5531 3687 Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
3688 * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);
b84464d3 3689 // Re[Q_{4n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3690 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
3691 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
3692 - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;
b84464d3 3693 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{n}^*Q_{n}^*]
489d5531 3694 Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
b84464d3 3695 * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
3696 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);
3697 // Re[Q_{6n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3698 Double_t reQ6nQ3nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
3699 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
3700 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
3701 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n;
3702 // Re[Q_{3n}Q_{3n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3703 Double_t reQ3nQ3nQ3nstarQ2nstarQ1nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
3704 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
3705 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);
3706 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
3707 Double_t reQ3nQ3nQ2nstarQ2nstarQ2nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.)
3708 - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
3709 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n
3710 - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.)
3711 + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);
3712 // Re[Q_{4n}Q_{2n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3713 Double_t reQ4nQ2nQ3nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
3714 * (dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
3715 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n);
3716 // Re[Q_{3n}Q_{2n}Q_{3n}^*Q_{n}^*Q_{n}^*]
3717 Double_t reQ3nQ2nQ3nstarQ1nstarQ1nstar = -(pow(dImQ3n,2.)+pow(dReQ3n,2.))
3718 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n);
3719 // Re[Q_{3n}Q_{2n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
3720 Double_t reQ3nQ2nQ2nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
3721 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
3722 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);
3723 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3724 Double_t reQ5nQ1nQ3nstarQ2nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
3725 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
3726 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
3727 // Re[Q_{2n}Q_{2n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3728 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
3729 + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
3730 * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
b84464d3 3731 - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n);
3732 // Re[Q_{3n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3733 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
3734 * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
3735 + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
489d5531 3736 // |Q_{2n}|^2 |Q_{n}|^4
b84464d3 3737 Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.);
3738 // |Q_{3n}|^2 |Q_{2n}|^2 |Q_{n}|^2
3739 Double_t dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3740 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
3741 // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3742 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3743 * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
53884472 3744 + 2.*dReQ1n*dImQ1n*dImQ2n);
3745 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*]
3746 Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
3747 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
3748 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
3749 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
3750 + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
3751 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n
3752 - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
3753 // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*]
3754 Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
3755 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
3756 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
3757 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n
3758 + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
3759 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
3760 + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n;
3761 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*]
3762 Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n
3763 - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n
3764 + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n
3765 + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n
3766 - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n
3767 + dImQ1n*dImQ2n*dImQ3n);
489d5531 3768
b84464d3 3769 // Results for multiparticle azimuthal correlations:
489d5531 3770 // 2-particle:
b84464d3 3771 Double_t two1n1n = 0.; // <cos(n(phi1-phi2))>
3772 Double_t two2n2n = 0.; // <cos(2n(phi1-phi2))>
3773 Double_t two3n3n = 0.; // <cos(3n(phi1-phi2))>
3774 Double_t two4n4n = 0.; // <cos(4n(phi1-phi2))>
489d5531 3775 if(dMult>1)
3776 {
3777 two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.));
3778 two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.));
3779 two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.));
3780 two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.));
b84464d3 3781 // Average 2-particle correlations for single event:
489d5531 3782 fIntFlowCorrelationsAllEBE->SetBinContent(1,two1n1n);
3783 fIntFlowCorrelationsAllEBE->SetBinContent(2,two2n2n);
3784 fIntFlowCorrelationsAllEBE->SetBinContent(3,two3n3n);
b84464d3 3785 fIntFlowCorrelationsAllEBE->SetBinContent(4,two4n4n);
3786 // Average 2-particle correlations for all events:
3787 fIntFlowCorrelationsAllPro->Fill(0.5,two1n1n,dMult*(dMult-1.));
3788 fIntFlowCorrelationsAllPro->Fill(1.5,two2n2n,dMult*(dMult-1.));
3789 fIntFlowCorrelationsAllPro->Fill(2.5,two3n3n,dMult*(dMult-1.));
3790 fIntFlowCorrelationsAllPro->Fill(3.5,two4n4n,dMult*(dMult-1.));
3791 // Store separetately <2>:
3792 fIntFlowCorrelationsEBE->SetBinContent(1,two1n1n); // <2>
3793 // Testing other multiplicity weights:
489d5531 3794 Double_t mWeight2p = 0.;
df23c5ae 3795 if(fMultiplicityWeight->Contains("combinations"))
489d5531 3796 {
3797 mWeight2p = dMult*(dMult-1.);
df23c5ae 3798 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 3799 {
3800 mWeight2p = 1.;
df23c5ae 3801 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 3802 {
3803 mWeight2p = dMult;
b84464d3 3804 }
489d5531 3805 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(1,mWeight2p); // eW_<2>
3806 fIntFlowCorrelationsPro->Fill(0.5,two1n1n,mWeight2p);
b40a910e 3807 fIntFlowSquaredCorrelationsPro->Fill(0.5,two1n1n*two1n1n,mWeight2p);
3808 if(fCalculateCumulantsVsM)
3809 {
3842bdcd 3810 fIntFlowCorrelationsVsMPro[0]->Fill(dMultiplicityBin,two1n1n,mWeight2p);
3811 fIntFlowSquaredCorrelationsVsMPro[0]->Fill(dMultiplicityBin,two1n1n*two1n1n,mWeight2p);
b40a910e 3812 }
3435cacb 3813 if(fCalculateAllCorrelationsVsM)
3814 {
3842bdcd 3815 fIntFlowCorrelationsAllVsMPro[0]->Fill(dMultiplicityBin,two1n1n,mWeight2p);
3816 fIntFlowCorrelationsAllVsMPro[1]->Fill(dMultiplicityBin,two2n2n,mWeight2p);
3817 fIntFlowCorrelationsAllVsMPro[2]->Fill(dMultiplicityBin,two3n3n,mWeight2p);
3818 fIntFlowCorrelationsAllVsMPro[3]->Fill(dMultiplicityBin,two4n4n,mWeight2p);
d9e6d8bb 3819 }
3820 if(fStoreControlHistograms)
3821 {
3822 fCorrelation2468VsMult[0]->Fill(dMultiplicityBin,two1n1n);
3823 }
489d5531 3824 } // end of if(dMult>1)
3825
3826 // 3-particle:
b84464d3 3827 Double_t three2n1n1n = 0.; // <cos(n(2*phi1-phi2-phi3))>
3828 Double_t three3n2n1n = 0.; // <cos(n(3*phi1-2*phi2-phi3))>
3829 Double_t three4n2n2n = 0.; // <cos(n(4*phi1-2*phi2-2*phi3))>
3830 Double_t three4n3n1n = 0.; // <cos(n(4*phi1-3*phi2-phi3))>
489d5531 3831 if(dMult>2)
3832 {
3833 three2n1n1n = (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3834 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
3835 / (dMult*(dMult-1.)*(dMult-2.));
3836 three3n2n1n = (reQ3nQ2nstarQ1nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3837 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))
3838 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
3839 / (dMult*(dMult-1.)*(dMult-2.));
3840 three4n2n2n = (reQ4nQ2nstarQ2nstar-2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3841 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
3842 / (dMult*(dMult-1.)*(dMult-2.));
3843 three4n3n1n = (reQ4nQ3nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))
3844 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
3845 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
b84464d3 3846 / (dMult*(dMult-1.)*(dMult-2.));
3847 // Average 3-particle correlations for single event:
489d5531 3848 fIntFlowCorrelationsAllEBE->SetBinContent(6,three2n1n1n);
3849 fIntFlowCorrelationsAllEBE->SetBinContent(7,three3n2n1n);
3850 fIntFlowCorrelationsAllEBE->SetBinContent(8,three4n2n2n);
3851 fIntFlowCorrelationsAllEBE->SetBinContent(9,three4n3n1n);
b84464d3 3852 // Average 3-particle correlations for all events:
489d5531 3853 fIntFlowCorrelationsAllPro->Fill(5.5,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
3854 fIntFlowCorrelationsAllPro->Fill(6.5,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
3855 fIntFlowCorrelationsAllPro->Fill(7.5,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
3435cacb 3856 fIntFlowCorrelationsAllPro->Fill(8.5,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
b84464d3 3857 // Average 3-particle correlations vs M for all events:
3435cacb 3858 if(fCalculateAllCorrelationsVsM)
3859 {
3842bdcd 3860 fIntFlowCorrelationsAllVsMPro[5]->Fill(dMultiplicityBin,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
3861 fIntFlowCorrelationsAllVsMPro[6]->Fill(dMultiplicityBin,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
3862 fIntFlowCorrelationsAllVsMPro[7]->Fill(dMultiplicityBin,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
3863 fIntFlowCorrelationsAllVsMPro[8]->Fill(dMultiplicityBin,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
3435cacb 3864 }
489d5531 3865 } // end of if(dMult>2)
3866
3867 // 4-particle:
b84464d3 3868 Double_t four1n1n1n1n = 0.; // <cos(n(phi1+phi2-phi3-phi4))>
3869 Double_t four2n2n2n2n = 0.; // <cos(2n(phi1+phi2-phi3-phi4))>
3870 Double_t four2n1n2n1n = 0.; // <cos(n(2*phi1+phi2-2*phi3-phi4))>
3871 Double_t four3n1n1n1n = 0.; // <cos(n(3*phi1-phi2-phi3-phi4))>
3872 Double_t four4n2n1n1n = 0.; // <cos(n(4*phi1-2*phi2-phi3-phi4))>
3873 Double_t four3n1n2n2n = 0.; // <cos(n(3*phi1+phi2-2*phi3-2*phi4))>
3874 Double_t four3n1n3n1n = 0.; // <cos(n(3*phi1+phi2-3*phi3-phi4))>
489d5531 3875 if(dMult>3)
3876 {
3877 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
3878 + pow(dImQ1n,2.))-2.*reQ2nQ1nstarQ1nstar+(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
3879 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
3880 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
3881 + pow(dImQ2n,2.))-2.*reQ4nQ2nstarQ2nstar+(pow(dReQ4n,2.)+pow(dImQ4n,2.)))
3882 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
3883 four2n1n2n1n = (dQ2nQ1nQ2nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar-2.*reQ2nQ1nstarQ1nstar)
3884 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3885 - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3886 + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
3887 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3888 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3889 four3n1n1n1n = (reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar-3.*reQ2nQ1nstarQ1nstar
3890 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
489d5531 3891 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
3892 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3893 four4n2n1n1n = (reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar)
3894 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3895 - (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3896 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
3897 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3898 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3899 four3n1n2n2n = (reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nstarQ2nstar-reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar)
489d5531 3900 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
b84464d3 3901 - (2.*reQ2nQ1nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
489d5531 3902 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
3903 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3904 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
3905 four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
b84464d3 3906 - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar
3907 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3908 + pow(dReQ2n,2.)+pow(dImQ2n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3909 + dMult*(dMult-6.))
3910 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3911 // Average 4-particle correlations for single event:
489d5531 3912 fIntFlowCorrelationsAllEBE->SetBinContent(11,four1n1n1n1n);
3913 fIntFlowCorrelationsAllEBE->SetBinContent(12,four2n1n2n1n);
3914 fIntFlowCorrelationsAllEBE->SetBinContent(13,four2n2n2n2n);
3915 fIntFlowCorrelationsAllEBE->SetBinContent(14,four3n1n1n1n);
3916 fIntFlowCorrelationsAllEBE->SetBinContent(15,four3n1n3n1n);
3917 fIntFlowCorrelationsAllEBE->SetBinContent(16,four3n1n2n2n);
b84464d3 3918 fIntFlowCorrelationsAllEBE->SetBinContent(17,four4n2n1n1n);
3919 // Average 4-particle correlations for all events:
489d5531 3920 fIntFlowCorrelationsAllPro->Fill(10.5,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3921 fIntFlowCorrelationsAllPro->Fill(11.5,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3922 fIntFlowCorrelationsAllPro->Fill(12.5,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3923 fIntFlowCorrelationsAllPro->Fill(13.5,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3924 fIntFlowCorrelationsAllPro->Fill(14.5,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3925 fIntFlowCorrelationsAllPro->Fill(15.5,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3926 fIntFlowCorrelationsAllPro->Fill(16.5,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3927 // Average 4-particle correlations vs M for all events:
3435cacb 3928 if(fCalculateAllCorrelationsVsM)
3929 {
3842bdcd 3930 fIntFlowCorrelationsAllVsMPro[10]->Fill(dMultiplicityBin,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3931 fIntFlowCorrelationsAllVsMPro[11]->Fill(dMultiplicityBin,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3932 fIntFlowCorrelationsAllVsMPro[12]->Fill(dMultiplicityBin,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3933 fIntFlowCorrelationsAllVsMPro[13]->Fill(dMultiplicityBin,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3934 fIntFlowCorrelationsAllVsMPro[14]->Fill(dMultiplicityBin,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3935 fIntFlowCorrelationsAllVsMPro[15]->Fill(dMultiplicityBin,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3936 fIntFlowCorrelationsAllVsMPro[16]->Fill(dMultiplicityBin,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3937 }
3938 // Store separetately <4>:
489d5531 3939 fIntFlowCorrelationsEBE->SetBinContent(2,four1n1n1n1n); // <4>
b84464d3 3940 // Testing other multiplicity weights:
489d5531 3941 Double_t mWeight4p = 0.;
df23c5ae 3942 if(fMultiplicityWeight->Contains("combinations"))
489d5531 3943 {
3944 mWeight4p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.);
df23c5ae 3945 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 3946 {
3947 mWeight4p = 1.;
df23c5ae 3948 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 3949 {
3950 mWeight4p = dMult;
b84464d3 3951 }
489d5531 3952 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(2,mWeight4p); // eW_<4>
3953 fIntFlowCorrelationsPro->Fill(1.5,four1n1n1n1n,mWeight4p);
b40a910e 3954 fIntFlowSquaredCorrelationsPro->Fill(1.5,four1n1n1n1n*four1n1n1n1n,mWeight4p);
3955 if(fCalculateCumulantsVsM)
3956 {
3842bdcd 3957 fIntFlowCorrelationsVsMPro[1]->Fill(dMultiplicityBin,four1n1n1n1n,mWeight4p);
3958 fIntFlowSquaredCorrelationsVsMPro[1]->Fill(dMultiplicityBin,four1n1n1n1n*four1n1n1n1n,mWeight4p);
b40a910e 3959 }
d9e6d8bb 3960 if(fStoreControlHistograms)
3961 {
3962 fCorrelation2468VsMult[1]->Fill(dMultiplicityBin,four1n1n1n1n);
3963 }
489d5531 3964 } // end of if(dMult>3)
3965
3966 // 5-particle:
b84464d3 3967 Double_t five2n1n1n1n1n = 0.; // <cos(n(2*phi1+phi2-phi3-phi4-phi5))>
3968 Double_t five2n2n2n1n1n = 0.; // <cos(n(2*phi1+2*phi2-2*phi3-phi4-phi5))>
3969 Double_t five3n1n2n1n1n = 0.; // <cos(n(3*phi1+phi2-2*phi3-phi4-phi5))>
3970 Double_t five4n1n1n1n1n = 0.; // <cos(n(4*phi1-phi2-phi3-phi4-phi5))>
489d5531 3971 if(dMult>4)
b84464d3 3972 {
3973 five2n1n1n1n1n = (reQ2nQ1nQ1nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar+5.*reQ3nQ2nstarQ1nstar
3974 - 3.*(dMult-5.)*reQ2nQ1nstarQ1nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3975 - 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3976 + 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3977 - 3.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3978 + 6.*(2.*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult*(dMult-4.))
489d5531 3979 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 3980 five2n2n2n1n1n = (reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ3nQ1nQ2nstarQ2nstar
3981 + 3.*reQ4nQ2nstarQ2nstar+8.*reQ3nQ2nstarQ1nstar+2.*reQ4nQ3nstarQ1nstar
3982 - 2.*(dMult-6.)*reQ2nQ1nstarQ1nstar
3983 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3984 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
3985 + 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3986 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3987 + 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
489d5531 3988 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 3989 five4n1n1n1n1n = (reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ4nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nstarQ1nstarQ1nstar
3990 + 8.*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+12.*reQ3nQ2nstarQ1nstar+12.*reQ2nQ1nstarQ1nstar
3991 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3992 - 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+24.*dMult)
3993 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3994 five3n1n2n1n1n = (reQ3nQ1nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar
3995 - reQ3nQ1nQ2nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar
3996 - (2.*dMult-13.)*reQ3nQ2nstarQ1nstar+7.*reQ2nQ1nstarQ1nstar
3997 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
3998 + 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3999 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4000 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
489d5531 4001 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4002 - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
b84464d3 4003 + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4004 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4005 // Average 5-particle correlations for single event:
489d5531 4006 fIntFlowCorrelationsAllEBE->SetBinContent(19,five2n1n1n1n1n);
4007 fIntFlowCorrelationsAllEBE->SetBinContent(20,five2n2n2n1n1n);
4008 fIntFlowCorrelationsAllEBE->SetBinContent(21,five3n1n2n1n1n);
b84464d3 4009 fIntFlowCorrelationsAllEBE->SetBinContent(22,five4n1n1n1n1n);
4010 // Average 5-particle correlations for all events:
489d5531 4011 fIntFlowCorrelationsAllPro->Fill(18.5,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4012 fIntFlowCorrelationsAllPro->Fill(19.5,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4013 fIntFlowCorrelationsAllPro->Fill(20.5,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 4014 fIntFlowCorrelationsAllPro->Fill(21.5,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4015 // Average 5-particle correlations vs M for all events:
3435cacb 4016 if(fCalculateAllCorrelationsVsM)
4017 {
3842bdcd 4018 fIntFlowCorrelationsAllVsMPro[18]->Fill(dMultiplicityBin,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4019 fIntFlowCorrelationsAllVsMPro[19]->Fill(dMultiplicityBin,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4020 fIntFlowCorrelationsAllVsMPro[20]->Fill(dMultiplicityBin,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4021 fIntFlowCorrelationsAllVsMPro[21]->Fill(dMultiplicityBin,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4022 }
489d5531 4023 } // end of if(dMult>4)
4024
4025 // 6-particle:
b84464d3 4026 Double_t six1n1n1n1n1n1n = 0.; // <cos(n(phi1+phi2+phi3-phi4-phi5-phi6))>
4027 Double_t six2n2n1n1n1n1n = 0.; // <cos(n(2*phi1+2*phi2-phi3-phi4-phi5-phi6))>
4028 Double_t six3n1n1n1n1n1n = 0.; // <cos(n(3*phi1+phi2-phi3-phi4-phi5-phi6))>
4029 Double_t six2n1n1n2n1n1n = 0.; // <cos(n(2*phi1+phi2+phi3-2*phi4-phi5-phi6))>
489d5531 4030 if(dMult>5)
4031 {
b84464d3 4032 six1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)-6.*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4033 + 4.*reQ3nQ1nstarQ1nstarQ1nstar-12.*reQ3nQ2nstarQ1nstar+18.*(dMult-4.)*reQ2nQ1nstarQ1nstar
4034 + 9.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4035 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-9.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4036 - 9.*(dMult-4.)*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4037 + 18.*(dMult*dMult-7.*dMult+10.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4038 - 6.*dMult*(dMult*dMult-9.*dMult+20.))
4039 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4040 six2n1n1n2n1n1n = (dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4041 - 4.*reQ2nQ1nQ1nstarQ1nstarQ1nstar-2.*reQ2nQ2nQ2nstarQ1nstarQ1nstar
4042 + 4.*reQ4nQ2nstarQ1nstarQ1nstar+4.*reQ3nQ1nQ2nstarQ2nstar+4.*reQ3nQ1nstarQ1nstarQ1nstar
4043 - 8.*reQ4nQ3nstarQ1nstar-4.*reQ4nQ2nstarQ2nstar+4.*(2.*dMult-13.)*reQ3nQ2nstarQ1nstar
4044 + 2.*(7.*dMult-34.)*reQ2nQ1nstarQ1nstar+4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4045 - 4.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4046 + 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4047 + pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+(2.*dMult*dMult-27.*dMult+76.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4048 - (dMult-12.)*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4049 + 4.*(dMult*dMult-15.*dMult+34.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4050 - 2.*dMult*(dMult*dMult-17.*dMult+60.))
4051 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4052 six2n2n1n1n1n1n = (reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ1nstarQ1nstarQ1nstarQ1nstar
4053 - 8.*reQ2nQ1nQ1nstarQ1nstarQ1nstar+8.*reQ3nQ1nstarQ1nstarQ1nstar+6.*reQ4nQ2nstarQ1nstarQ1nstar
4054 + 8.*reQ3nQ1nQ2nstarQ2nstar-40.*reQ3nQ2nstarQ1nstar-8.*reQ4nQ3nstarQ1nstar-9.*reQ4nQ2nstarQ2nstar
4055 + 24.*(dMult-4.)*reQ2nQ1nstarQ1nstar+24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4056 + 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+16.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4057 + 3.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-12.*(2.*dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4058 + 12.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-48.*(dMult-3.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4059 + 24.*dMult*(dMult-5.))
4060 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4061 six3n1n1n1n1n1n = (reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ3nQ1nQ2nstarQ1nstarQ1nstar+6.*reQ4nQ2nstarQ1nstarQ1nstar
4062 - reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-4.*reQ2nQ1nQ1nstarQ1nstarQ1nstar+3.*reQ3nQ1nQ2nstarQ2nstar
4063 - 4.*(dMult-5.)*reQ3nQ1nstarQ1nstarQ1nstar-14.*reQ4nQ3nstarQ1nstar
4064 - 3.*reQ4nQ2nstarQ2nstar+4.*(3.*dMult-17.)*reQ3nQ2nstarQ1nstar+12.*(dMult-6.)*reQ2nQ1nstarQ1nstar
4065 + 12.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4066 + 8.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4067 + 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4068 - 12.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-48.*(dMult-3.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4069 + 12.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)+24.*dMult*(dMult-5.))
4070 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4071 // Average 6-particle correlations for single event:
489d5531 4072 fIntFlowCorrelationsAllEBE->SetBinContent(24,six1n1n1n1n1n1n);
4073 fIntFlowCorrelationsAllEBE->SetBinContent(25,six2n1n1n2n1n1n);
4074 fIntFlowCorrelationsAllEBE->SetBinContent(26,six2n2n1n1n1n1n);
4075 fIntFlowCorrelationsAllEBE->SetBinContent(27,six3n1n1n1n1n1n);
b84464d3 4076 // Average 6-particle correlations for all events:
489d5531 4077 fIntFlowCorrelationsAllPro->Fill(23.5,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4078 fIntFlowCorrelationsAllPro->Fill(24.5,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4079 fIntFlowCorrelationsAllPro->Fill(25.5,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4080 fIntFlowCorrelationsAllPro->Fill(26.5,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
b84464d3 4081 // Average 6-particle correlations vs M for all events:
3435cacb 4082 if(fCalculateAllCorrelationsVsM)
4083 {
3842bdcd 4084 fIntFlowCorrelationsAllVsMPro[23]->Fill(dMultiplicityBin,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4085 fIntFlowCorrelationsAllVsMPro[24]->Fill(dMultiplicityBin,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4086 fIntFlowCorrelationsAllVsMPro[25]->Fill(dMultiplicityBin,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4087 fIntFlowCorrelationsAllVsMPro[26]->Fill(dMultiplicityBin,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3435cacb 4088 }
b84464d3 4089 // Store separetately <6>:
489d5531 4090 fIntFlowCorrelationsEBE->SetBinContent(3,six1n1n1n1n1n1n); // <6>
b84464d3 4091 // Testing other multiplicity weights:
489d5531 4092 Double_t mWeight6p = 0.;
df23c5ae 4093 if(fMultiplicityWeight->Contains("combinations"))
489d5531 4094 {
4095 mWeight6p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.);
df23c5ae 4096 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 4097 {
4098 mWeight6p = 1.;
df23c5ae 4099 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 4100 {
4101 mWeight6p = dMult;
4102 }
489d5531 4103 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(3,mWeight6p); // eW_<6>
4104 fIntFlowCorrelationsPro->Fill(2.5,six1n1n1n1n1n1n,mWeight6p);
b40a910e 4105 fIntFlowSquaredCorrelationsPro->Fill(2.5,six1n1n1n1n1n1n*six1n1n1n1n1n1n,mWeight6p);
4106 if(fCalculateCumulantsVsM)
4107 {
3842bdcd 4108 fIntFlowCorrelationsVsMPro[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n,mWeight6p);
4109 fIntFlowSquaredCorrelationsVsMPro[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n*six1n1n1n1n1n1n,mWeight6p);
d9e6d8bb 4110 }
4111 if(fStoreControlHistograms)
4112 {
4113 fCorrelation2468VsMult[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n);
4114 }
489d5531 4115 } // end of if(dMult>5)
4116
4117 // 7-particle:
b84464d3 4118 Double_t seven2n1n1n1n1n1n1n = 0.; // <cos(n(2*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
489d5531 4119 if(dMult>6)
4120 {
b84464d3 4121 seven2n1n1n1n1n1n1n = (reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-4.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)
4122 - reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-2.*reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar
4123 + 9.*reQ2nQ2nQ2nstarQ1nstarQ1nstar+20.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4124 + 2.*reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-8.*(dMult-8.)*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4125 - 18.*reQ4nQ2nstarQ1nstarQ1nstar-14.*reQ3nQ1nQ2nstarQ2nstar
4126 + 8.*(dMult-7.)*reQ3nQ1nstarQ1nstarQ1nstar+28.*reQ4nQ3nstarQ1nstar
4127 + 12.*reQ4nQ2nstarQ2nstar-8.*(5.*dMult-31.)*reQ3nQ2nstarQ1nstar
4128 + 12.*(dMult*dMult-15.*dMult+46.)*reQ2nQ1nstarQ1nstar
4129 - 16.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4130 - 6.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4131 - 3.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4132 + 12.*(2.*dMult-13.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4133 - 12.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+16.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4134 - 12.*(dMult-8.)*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4135 + 12.*(3.*dMult-14.)*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)
4136 - 24.*(3.*dMult-7.)*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4137 + 24.*dMult*(dMult-5.)*(dMult-6.))
4138 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.));
4139 // Average 7-particle correlations for single event:
4140 fIntFlowCorrelationsAllEBE->SetBinContent(29,seven2n1n1n1n1n1n1n);
4141 // Average 7-particle correlations for all events:
4142 fIntFlowCorrelationsAllPro->Fill(28.5,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4143 *(dMult-4.)*(dMult-5.)*(dMult-6.));
4144 // Average 7-particle correlations vs M for all events:
3435cacb 4145 if(fCalculateAllCorrelationsVsM)
4146 {
3842bdcd 4147 fIntFlowCorrelationsAllVsMPro[28]->Fill(dMultiplicityBin,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
b84464d3 4148 *(dMult-4.)*(dMult-5.)*(dMult-6.));
3435cacb 4149 }
489d5531 4150 } // end of if(dMult>6)
4151
4152 // 8-particle:
b84464d3 4153 Double_t eight1n1n1n1n1n1n1n1n = 0.; // <cos(n(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
489d5531 4154 if(dMult>7)
b84464d3 4155 {
4156 eight1n1n1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),4.)-12.*reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar
4157 + 16.*reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar+6.*reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar
4158 - 12.*reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-36.*reQ2nQ2nQ2nstarQ1nstarQ1nstar
4159 - 96.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4160 + 72.*reQ4nQ2nstarQ1nstarQ1nstar+48.*reQ3nQ1nQ2nstarQ2nstar
4161 - 64.*(dMult-6.)*reQ3nQ1nstarQ1nstarQ1nstar
4162 + 96.*(dMult-6.)*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4163 - 96.*reQ4nQ3nstarQ1nstar-36.*reQ4nQ2nstarQ2nstar
4164 + 192.*(dMult-6.)*reQ3nQ2nstarQ1nstar
4165 - 144.*(dMult-7.)*(dMult-4.)*reQ2nQ1nstarQ1nstar
4166 + 64.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4167 - 144.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4168 + 72.*(dMult-7.)*(dMult-4.)*(pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
4169 - 96.*(dMult-7.)*(dMult-6.)*(dMult-2.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4170 + 36.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4171 + 9.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4172 - 64.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4173 + 36.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4174 - 16.*(dMult-6.)*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)
4175 + 24.*dMult*(dMult-7.)*(dMult-6.)*(dMult-5.))
4176 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4177 // Average 8-particle correlations for single event:
4178 fIntFlowCorrelationsAllEBE->SetBinContent(31,eight1n1n1n1n1n1n1n1n);
4179 // Average 8-particle correlations for all events:
4180 fIntFlowCorrelationsAllPro->Fill(30.5,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4181 *(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4182 // Average 8-particle correlations vs M for all events:
3435cacb 4183 if(fCalculateAllCorrelationsVsM)
4184 {
3842bdcd 4185 fIntFlowCorrelationsAllVsMPro[30]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
b84464d3 4186 *(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4187 }
4188 // Store separetately <8>:
489d5531 4189 fIntFlowCorrelationsEBE->SetBinContent(4,eight1n1n1n1n1n1n1n1n); // <8>
b84464d3 4190 // Testing other multiplicity weights:
489d5531 4191 Double_t mWeight8p = 0.;
df23c5ae 4192 if(fMultiplicityWeight->Contains("combinations"))
489d5531 4193 {
4194 mWeight8p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.);
df23c5ae 4195 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 4196 {
4197 mWeight8p = 1.;
df23c5ae 4198 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 4199 {
4200 mWeight8p = dMult;
b84464d3 4201 }
489d5531 4202 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(4,mWeight8p); // eW_<8>
b40a910e 4203 fIntFlowCorrelationsPro->Fill(3.5,eight1n1n1n1n1n1n1n1n,mWeight8p);
4204 fIntFlowSquaredCorrelationsPro->Fill(3.5,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n,mWeight8p);
4205 if(fCalculateCumulantsVsM)
4206 {
3842bdcd 4207 fIntFlowCorrelationsVsMPro[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n,mWeight8p);
4208 fIntFlowSquaredCorrelationsVsMPro[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n,mWeight8p);
d9e6d8bb 4209 }
4210 if(fStoreControlHistograms)
4211 {
4212 fCorrelation2468VsMult[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n);
4213 }
489d5531 4214 } // end of if(dMult>7)
4215
b84464d3 4216 // EXTRA correlations for v3{5} study:
8ed4edc7 4217 // 4-particle:
b84464d3 4218 Double_t four4n2n3n3n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
8ed4edc7 4219 if(dMult>3.)
4220 {
11d3e40e 4221 four4n2n3n3n = (reQ4nQ2nQ3nstarQ3nstar-reQ6nQ4nstarQ2nstar-reQ6nQ3nstarQ3nstar
4222 - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar
4223 + (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4224 + 2.*(2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4225 + (pow(dReQ1n,2.)+pow(dImQ1n,2.))-3.*dMult))
b84464d3 4226 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
8ed4edc7 4227 fIntFlowCorrelationsAllPro->Fill(32.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4228 // Average 4-particle correlations vs M for all events:
3435cacb 4229 if(fCalculateAllCorrelationsVsM)
4230 {
3842bdcd 4231 fIntFlowCorrelationsAllVsMPro[32]->Fill(dMultiplicityBin,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3435cacb 4232 }
11d3e40e 4233 } // end of if(dMult>3.)
8ed4edc7 4234
4235 // 5-particle:
b84464d3 4236 Double_t five3n3n2n2n2n = 0.; // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
8ed4edc7 4237 if(dMult>4.)
4238 {
b84464d3 4239 five3n3n2n2n2n = (reQ3nQ3nQ2nstarQ2nstarQ2nstar-reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ4nQ2nQ3nstarQ3nstar
4240 - 6.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ6nQ3nstarQ3nstar+3.*reQ6nQ4nstarQ2nstar
4241 + 6.*reQ4nQ3nstarQ1nstar+6.*reQ4nQ2nstarQ2nstar
4242 + 12.*reQ3nQ2nstarQ1nstar+6.*reQ2nQ1nstarQ1nstar
11d3e40e 4243 - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.))
4244 + 3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4245 + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4246 + 9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4247 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
b84464d3 4248 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4249 fIntFlowCorrelationsAllPro->Fill(33.5,five3n3n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4250 if(fCalculateAllCorrelationsVsM)
4251 {
3842bdcd 4252 fIntFlowCorrelationsAllVsMPro[33]->Fill(dMultiplicityBin,five3n3n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4253 }
11d3e40e 4254 } // end of if(dMult>4.)
8ed4edc7 4255
b84464d3 4256 // EXTRA correlations for Teaney-Yan study:
4257 // 2-particle:
4258 Double_t two5n5n = 0.; // <cos(5n(phi1-phi2))>
4259 Double_t two6n6n = 0.; // <cos(6n(phi1-phi2))>
4260 if(dMult>1)
4261 {
4262 two5n5n = (pow(dReQ5n,2.)+pow(dImQ5n,2.)-dMult)/(dMult*(dMult-1.));
4263 two6n6n = (pow(dReQ6n,2.)+pow(dImQ6n,2.)-dMult)/(dMult*(dMult-1.));
4264 // Average 2-particle correlations for all events:
4265 fIntFlowCorrelationsAllPro->Fill(34.5,two5n5n,dMult*(dMult-1.));
4266 fIntFlowCorrelationsAllPro->Fill(35.5,two6n6n,dMult*(dMult-1.));
4267 if(fCalculateAllCorrelationsVsM)
4268 {
3842bdcd 4269 fIntFlowCorrelationsAllVsMPro[34]->Fill(dMultiplicityBin,two5n5n,dMult*(dMult-1.));
4270 fIntFlowCorrelationsAllVsMPro[35]->Fill(dMultiplicityBin,two6n6n,dMult*(dMult-1.));
b84464d3 4271 }
4272 } // end of if(dMult>1)
4273
4274 // 3-particle:
4275 Double_t three5n3n2n = 0.; // <cos(n(5*phi1-3*phi2-2*phi3)>
4276 Double_t three5n4n1n = 0.; // <cos(n(5*phi1-4*phi2-1*phi3)>
4277 Double_t three6n3n3n = 0.; // <cos(n(6*phi1-3*phi2-3*phi3)>
4278 Double_t three6n4n2n = 0.; // <cos(n(6*phi1-4*phi2-2*phi3)>
4279 Double_t three6n5n1n = 0.; // <cos(n(6*phi1-5*phi2-1*phi3)>
4280 if(dMult>2)
4281 {
4282 three5n3n2n = (reQ5nQ3nstarQ2nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4283 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
4284 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4285 / (dMult*(dMult-1.)*(dMult-2.));
4286 three5n4n1n = (reQ5nQ4nstarQ1nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4287 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4288 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4289 / (dMult*(dMult-1.)*(dMult-2.));
4290 three6n3n3n = (reQ6nQ3nstarQ3nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4291 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*dMult)
4292 / (dMult*(dMult-1.)*(dMult-2.));
4293 three6n4n2n = (reQ6nQ4nstarQ2nstar-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4294 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4295 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4296 / (dMult*(dMult-1.)*(dMult-2.));
4297 three6n5n1n = (reQ6nQ5nstarQ1nstar-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4298 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))
4299 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4300 / (dMult*(dMult-1.)*(dMult-2.));
4301 // Average 3-particle correlations for all events:
4302 fIntFlowCorrelationsAllPro->Fill(36.5,three5n3n2n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(5*phi1-3*phi2-2*phi3)>>
4303 fIntFlowCorrelationsAllPro->Fill(37.5,three5n4n1n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(5*phi1-4*phi2-1*phi3)>>
4304 fIntFlowCorrelationsAllPro->Fill(38.5,three6n3n3n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-3*phi2-3*phi3)>>
4305 fIntFlowCorrelationsAllPro->Fill(39.5,three6n4n2n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-4*phi2-2*phi3)>>
4306 fIntFlowCorrelationsAllPro->Fill(40.5,three6n5n1n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-5*phi2-1*phi3)>>
4307 if(fCalculateAllCorrelationsVsM)
4308 {
3842bdcd 4309 fIntFlowCorrelationsAllVsMPro[36]->Fill(dMultiplicityBin,three5n3n2n,dMult*(dMult-1.)*(dMult-2.));
4310 fIntFlowCorrelationsAllVsMPro[37]->Fill(dMultiplicityBin,three5n4n1n,dMult*(dMult-1.)*(dMult-2.));
4311 fIntFlowCorrelationsAllVsMPro[38]->Fill(dMultiplicityBin,three6n3n3n,dMult*(dMult-1.)*(dMult-2.));
4312 fIntFlowCorrelationsAllVsMPro[39]->Fill(dMultiplicityBin,three6n4n2n,dMult*(dMult-1.)*(dMult-2.));
4313 fIntFlowCorrelationsAllVsMPro[40]->Fill(dMultiplicityBin,three6n5n1n,dMult*(dMult-1.)*(dMult-2.));
b84464d3 4314 }
4315 } // end of if(dMult>2)
4316
4317 // 4-particle:
4318 Double_t four6n3n2n1n = 0.; // <cos(n(6*phi1-3*phi2-2*phi3-1*phi4)>
4319 Double_t four3n2n3n2n = 0.; // <cos(n(3*phi1+2*phi2-3*phi3-2*phi4)>
4320 Double_t four4n1n3n2n = 0.; // <cos(n(4*phi1+1*phi2-3*phi3-2*phi4)>
4321 Double_t four3n3n3n3n = 0.; // <cos(3n(phi1+phi2-phi3-phi4))>
4322 //Double_t four4n2n3n3n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-3*phi4)> // I already have this one above
4323 Double_t four5n1n3n3n = 0.; // <cos(n(5*phi1+1*phi2-3*phi3-3*phi4)>
4324 Double_t four4n2n4n2n = 0.; // <cos(n(4*phi1+2*phi2-4*phi3-2*phi4)>
4325 Double_t four5n1n4n2n = 0.; // <cos(n(5*phi1+1*phi2-4*phi3-2*phi4)>
4326 Double_t four5n3n1n1n = 0.; // <cos(n(5*phi1-3*phi2-1*phi3-1*phi4)>
4327 Double_t four5n2n2n1n = 0.; // <cos(n(5*phi1-2*phi2-2*phi3-1*phi4)>
403e3389 4328 Double_t four5n1n5n1n = 0.; // <cos(n(5*phi1+1*phi2-5*phi3-1*phi4)>
4329 Double_t four6n4n1n1n = 0.; // <cos(n(6*phi1-4*phi2-1*phi3-1*phi4)>
4330 Double_t four6n2n2n2n = 0.; // <cos(n(6*phi1-2*phi2-2*phi3-2*phi4)>
b84464d3 4331 if(dMult>3)
4332 {
4333 four6n3n2n1n = (reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ4nstarQ2nstar-reQ6nQ3nstarQ3nstar-reQ6nQ5nstarQ1nstar
4334 - reQ5nQ3nstarQ2nstar-reQ4nQ3nstarQ1nstar-reQ3nQ2nstarQ1nstar
4335 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+pow(dReQ5n,2.)+pow(dImQ5n,2.)
4336 + pow(dReQ4n,2.)+pow(dImQ4n,2.)+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4337 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4338 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4339 four3n2n3n2n = (dQ3nQ2nQ3nstarQ2nstar-2.*reQ5nQ3nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar
4340 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
4341 -(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
4342 + dMult*(dMult-6.))
4343 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4344 four4n1n3n2n = (reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nstarQ2nstar-reQ5nQ4nstarQ1nstar-reQ4nQ3nstarQ1nstar
4345 - reQ4nQ2nstarQ2nstar-reQ3nQ2nstarQ1nstar-reQ2nQ1nstarQ1nstar
4346 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4347 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4348 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4349 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4350 four3n3n3n3n = (2.*dMult*(dMult-3.)+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ3n,2.)
4351 + pow(dImQ3n,2.))-2.*reQ6nQ3nstarQ3nstar+(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4352 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
4353 //four4n2n3n3n = ; // I already have this one above
4354 four5n1n3n3n = (reQ5nQ1nQ3nstarQ3nstar-reQ6nQ5nstarQ1nstar-reQ6nQ3nstarQ3nstar-2.*reQ5nQ3nstarQ2nstar
4355 - 2.*reQ3nQ2nstarQ1nstar+pow(dReQ6n,2.)+pow(dImQ6n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4356 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4357 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4358 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4359 four4n2n4n2n = (dQ4nQ2nQ4nstarQ2nstar-2.*reQ6nQ4nstarQ2nstar-2.*reQ4nQ2nstarQ2nstar)
4360 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4361 - ((dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4362 + (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4363 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4364 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
4365 four5n1n4n2n = (reQ5nQ1nQ4nstarQ2nstar-reQ6nQ5nstarQ1nstar-reQ6nQ4nstarQ2nstar-reQ5nQ4nstarQ1nstar
4366 - reQ5nQ3nstarQ2nstar-reQ4nQ3nstarQ1nstar-reQ2nQ1nstarQ1nstar+pow(dReQ6n,2.)+pow(dImQ6n,2.)
4367 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4368 + pow(dReQ3n,2.)+pow(dImQ3n,2.)+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4369 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4370 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4371 four5n3n1n1n = (reQ5nQ3nstarQ1nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar-reQ5nQ3nstarQ2nstar-2.*reQ4nQ3nstarQ1nstar
4372 - reQ2nQ1nstarQ1nstar+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4373 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
4374 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4375 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4376 four5n2n2n1n = (reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ4nstarQ1nstar-2.*reQ5nQ3nstarQ2nstar-reQ4nQ2nstarQ2nstar
4377 - 2.*reQ3nQ2nstarQ1nstar+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
4378 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4379 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4380 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4381 four5n1n5n1n = (dQ5nQ1nQ5nstarQ1nstar-2.*reQ6nQ5nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar
4382 + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4383 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.))
53884472 4384 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4385
4386 // TBI: Recursive formula needed:
403e3389 4387 four6n4n1n1n = (reQ6nQ4nstarQ1nstarQ1nstar
4388 - dMult*(dMult-1.)*(dMult-2.)*(three2n1n1n+2.*three5n4n1n+2.*three6n5n1n+three6n4n2n)
4389 - dMult*(dMult-1.)*(2.*two1n1n+1.*two4n4n+1.*two6n6n+1.*two2n2n+2.*two5n5n)
4390 - 1.*dMult)
4391 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
53884472 4392
403e3389 4393 four6n2n2n2n = (reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ6nQ4nstarQ2nstar-3.*reQ4nQ2nstarQ2nstar
4394 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4395 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult)
4396 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4397 // Average 4-particle correlations for all events:
4398 fIntFlowCorrelationsAllPro->Fill(41.5,four6n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4399 fIntFlowCorrelationsAllPro->Fill(42.5,four3n2n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4400 fIntFlowCorrelationsAllPro->Fill(43.5,four4n1n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4401 fIntFlowCorrelationsAllPro->Fill(44.5,four3n3n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4402 //fIntFlowCorrelationsAllPro->Fill(45.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); // I already have this one above
4403 fIntFlowCorrelationsAllPro->Fill(46.5,four5n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4404 fIntFlowCorrelationsAllPro->Fill(47.5,four4n2n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4405 fIntFlowCorrelationsAllPro->Fill(48.5,four5n1n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4406 fIntFlowCorrelationsAllPro->Fill(49.5,four5n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4407 fIntFlowCorrelationsAllPro->Fill(50.5,four5n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4408 fIntFlowCorrelationsAllPro->Fill(51.5,four5n1n5n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
403e3389 4409 fIntFlowCorrelationsAllPro->Fill(58.5,four6n4n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4410 fIntFlowCorrelationsAllPro->Fill(59.5,four6n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4411 if(fCalculateAllCorrelationsVsM)
4412 {
3842bdcd 4413 fIntFlowCorrelationsAllVsMPro[41]->Fill(dMultiplicityBin,four6n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4414 fIntFlowCorrelationsAllVsMPro[42]->Fill(dMultiplicityBin,four3n2n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4415 fIntFlowCorrelationsAllVsMPro[43]->Fill(dMultiplicityBin,four4n1n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4416 fIntFlowCorrelationsAllVsMPro[44]->Fill(dMultiplicityBin,four3n3n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4417 //fIntFlowCorrelationsAllVsMPro[45]->Fill(dMultiplicityBin,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4418 fIntFlowCorrelationsAllVsMPro[46]->Fill(dMultiplicityBin,four5n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4419 fIntFlowCorrelationsAllVsMPro[47]->Fill(dMultiplicityBin,four4n2n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4420 fIntFlowCorrelationsAllVsMPro[48]->Fill(dMultiplicityBin,four5n1n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4421 fIntFlowCorrelationsAllVsMPro[49]->Fill(dMultiplicityBin,four5n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4422 fIntFlowCorrelationsAllVsMPro[50]->Fill(dMultiplicityBin,four5n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4423 fIntFlowCorrelationsAllVsMPro[51]->Fill(dMultiplicityBin,four5n1n5n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4424 fIntFlowCorrelationsAllVsMPro[58]->Fill(dMultiplicityBin,four6n4n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4425 fIntFlowCorrelationsAllVsMPro[59]->Fill(dMultiplicityBin,four6n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4426 }
4427 } // end of if(dMult>3)
4428
4429 // 5-particle:
4430 Double_t five3n3n3n2n1n = 0.; // <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
4431 Double_t five4n2n3n2n1n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
4432 Double_t five3n2n3n1n1n = 0.; // <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
4433 Double_t five3n2n2n2n1n = 0.; // <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
4434 Double_t five5n1n3n2n1n = 0.; // <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
403e3389 4435 Double_t five6n2n2n1n1n = 0.; // <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5)>
4436 Double_t five4n1n1n3n3n = 0.; // <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5)>
b84464d3 4437 if(dMult>4)
4438 {
4439 five3n3n3n2n1n = (reQ3nQ3nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar
4440 + reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+3.*reQ6nQ3nstarQ3nstar+4.*reQ5nQ3nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar
4441 - 2.*(dMult-6.)*reQ3nQ2nstarQ1nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4442 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4443 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4444 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(3.*dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4445 - pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4446 + 2.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4447 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4448 five4n2n3n2n1n = (reQ4nQ2nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
4449 - reQ4nQ2nQ3nstarQ3nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar
4450 - reQ3nQ1nQ2nstarQ2nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4451 + 3.*reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ5nQ4nstarQ1nstar
4452 + 3.*reQ5nQ3nstarQ2nstar-(dMult-7.)*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+7.*reQ3nQ2nstarQ1nstar
4453 + 4.*reQ2nQ1nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4454 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4455 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4456 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4457 + 2.*(dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+(dMult-12.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4458 - 2.*dMult*(dMult-12.))
4459 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4460 five3n2n3n1n1n = (reQ3nQ2nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-2.*reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nstarQ1nstarQ1nstar
4461 - 2.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ5nQ4nstarQ1nstar+3.*reQ5nQ3nstarQ2nstar+6.*reQ4nQ3nstarQ1nstar
4462 + 2.*reQ4nQ2nstarQ2nstar+9.*reQ3nQ2nstarQ1nstar-(dMult-8.)*reQ2nQ1nstarQ1nstar
4463 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4464 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4465 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4466 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-12.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4467 + 2.*(dMult-9.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
4468 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4469 five3n2n2n2n1n = (reQ3nQ2nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
4470 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+reQ5nQ4nstarQ1nstar
4471 + 4.*reQ5nQ3nstarQ2nstar+reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar-2.*(dMult-6.)*reQ3nQ2nstarQ1nstar
4472 + 4.*reQ2nQ1nstarQ1nstar-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4473 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4474 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4475 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4476 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4477 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4478 five5n1n3n2n1n = (reQ5nQ1nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ3nstarQ3nstar
4479 - reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
4480 + 3.*reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+4.*reQ5nQ4nstarQ1nstar
4481 - (dMult-7.)*reQ5nQ3nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+6.*reQ3nQ2nstarQ1nstar
4482 + 3.*reQ2nQ1nstarQ1nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4483 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4484 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4485 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4486 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4487 + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4488 - 2.*dMult*(dMult-12.))
e1d101a6 4489 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
53884472 4490 // Peter Jochumzsen:
4491 five6n2n2n1n1n = (reQ6nQ2nstarQ2nstarQ1nstarQ1nstar
4492 - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.)
4493 - 14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.)
4494 - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.)
4495 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)
4496 - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
4497 - 6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.)
4498 + 2.*reQ2nQ1nstarQ1nstar + 8.*reQ3nQ2nstarQ1nstar
4499 + 5.*reQ6nQ4nstarQ2nstar - reQ6nQ4nstarQ1nstarQ1nstar
4500 + 2.*reQ6nQ3nstarQ3nstar - reQ6nQ2nstarQ2nstarQ2nstar
4501 + 4.*reQ4nQ2nstarQ2nstar - 2.*reQ4nQ2nstarQ1nstarQ1nstar
4502 + 2.*reQ5nQ4nstarQ1nstar - 2.*reQ5nQ2nstarQ2nstarQ1nstar
4503 + 4.*reQ4nQ3nstarQ1nstar + 4.*reQ5nQ3nstarQ2nstar
4504 + 4.*reQ6nQ5nstarQ1nstar - 4.*reQ6nQ3nstarQ2nstarQ1nstar + 24.*dMult)
e1d101a6 4505 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4506 // Peter Jochumzsen:
4507 five4n1n1n3n3n = (reQ4nQ1nQ1nQ3nstarQ3nstar-16.*pow(dReQ1n,2.)-16.*pow(dImQ1n,2.)
4508 - 10.*pow(dReQ2n,2.)-10.*pow(dImQ2n,2.)-12.*pow(dReQ3n,2.)-12.*pow(dImQ3n,2.)
4509 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)-4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
4510 - 2.*pow(dReQ6n,2.)-2.*pow(dImQ6n,2.)+6.*reQ2nQ1nstarQ1nstar
4511 - 1.*reQ6nQ4nstarQ1nstarQ1nstar-1.*reQ4nQ2nQ3nstarQ3nstar
4512 + 1.*reQ6nQ4nstarQ2nstar-2.*reQ5nQ1nQ3nstarQ3nstar
4513 + 2.*reQ4nQ2nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar
4514 - 2.*reQ3nQ1nstarQ1nstarQ1nstar+10.*reQ3nQ2nstarQ1nstar
4515 + 2.*reQ6nQ5nstarQ1nstar+2.*reQ6nQ3nstarQ3nstar
4516 - 4.*reQ4nQ1nQ3nstarQ2nstar+4.*reQ5nQ4nstarQ1nstar
4517 + 4.*reQ5nQ3nstarQ2nstar + 24.*dMult)
4518 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4519 // Average 5-particle correlations for all events:
4520 fIntFlowCorrelationsAllPro->Fill(52.5,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4521 fIntFlowCorrelationsAllPro->Fill(53.5,five4n2n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4522 fIntFlowCorrelationsAllPro->Fill(54.5,five3n2n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4523 fIntFlowCorrelationsAllPro->Fill(55.5,five3n2n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4524 fIntFlowCorrelationsAllPro->Fill(56.5,five5n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4525 fIntFlowCorrelationsAllPro->Fill(60.5,five6n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4526 fIntFlowCorrelationsAllPro->Fill(61.5,five4n1n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4527 if(fCalculateAllCorrelationsVsM)
4528 {
3842bdcd 4529 fIntFlowCorrelationsAllVsMPro[52]->Fill(dMultiplicityBin,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4530 fIntFlowCorrelationsAllVsMPro[53]->Fill(dMultiplicityBin,five4n2n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4531 fIntFlowCorrelationsAllVsMPro[54]->Fill(dMultiplicityBin,five3n2n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4532 fIntFlowCorrelationsAllVsMPro[55]->Fill(dMultiplicityBin,five3n2n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4533 fIntFlowCorrelationsAllVsMPro[56]->Fill(dMultiplicityBin,five5n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4534 fIntFlowCorrelationsAllVsMPro[60]->Fill(dMultiplicityBin,five6n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4535 fIntFlowCorrelationsAllVsMPro[61]->Fill(dMultiplicityBin,five4n1n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
e1d101a6 4536 }
4537 } // end of if(dMult>4)
4538
4539 // 6-particle:
4540 Double_t six3n2n1n3n2n1n = 0.; // <cos(n(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
4541 Double_t six3n3n2n2n1n1n = 0.; // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-1*phi5-1*phi6)>
4542 if(dMult>5.)
4543 {
4544 six3n2n1n3n2n1n = (dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar-2.*reQ3nQ3nQ3nstarQ2nstarQ1nstar
4545 - 2.*reQ3nQ2nQ2nstarQ2nstarQ1nstar-2.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4546 - 2.*reQ3nQ2nQ3nstarQ1nstarQ1nstar-2.*reQ4nQ2nQ3nstarQ2nstarQ1nstar
4547 - 2.*reQ5nQ1nQ3nstarQ2nstarQ1nstar+4.*reQ6nQ3nstarQ2nstarQ1nstar
4548 + 2.*reQ5nQ1nQ4nstarQ2nstar+2.*reQ5nQ1nQ3nstarQ3nstar
4549 + 2.*reQ4nQ2nQ3nstarQ3nstar+6.*reQ4nQ1nQ3nstarQ2nstar
4550 + 2.*reQ5nQ3nstarQ1nstarQ1nstar+2.*reQ5nQ2nstarQ2nstarQ1nstar
4551 + 6.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ4nQ2nstarQ1nstarQ1nstar
4552 - 4.*reQ6nQ5nstarQ1nstar-4.*reQ6nQ4nstarQ2nstar-6.*reQ5nQ4nstarQ1nstar
4553 - 4.*reQ6nQ3nstarQ3nstar+2.*(dMult-11.)*reQ5nQ3nstarQ2nstar
4554 + 2.*(dMult-13.)*reQ4nQ3nstarQ1nstar-8.*reQ4nQ2nstarQ2nstar
4555 + 2.*(5.*dMult-32.)*reQ3nQ2nstarQ1nstar+2.*reQ3nQ1nstarQ1nstarQ1nstar
4556 + 2.*(dMult-13.)*reQ2nQ1nstarQ1nstar
4557 - (dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4558 + (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4559 + (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4560 - (dMult-11.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4561 - (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4562 + 4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-(dMult-12.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4563 - (dMult-16.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)
4564 + (dMult*dMult-19.*dMult+68.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4565 + (dMult*dMult-19.*dMult+72.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4566 + pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4567 + (dMult*dMult-20.*dMult+80.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4568 - dMult*(dMult-12.)*(dMult-10.))
4569 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4570
4571 // Peter Jochumzsen:
4572 six3n3n2n2n1n1n = (reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar
4573 + (80.-16.*dMult)*pow(dReQ1n,2.)+(80.-16.*dMult)*pow(dImQ1n,2.)
4574 + (78.-16.*dMult)*pow(dReQ2n,2.)+(78.-16.*dMult)*pow(dImQ2n,2.)
4575 + (72.-16.*dMult)*pow(dReQ3n,2.)+(72.-16.*dMult)*pow(dImQ3n,2.)
4576 + 14.*pow(dReQ4n,2.)+14.*pow(dImQ4n,2.)
4577 + 8.*pow(dReQ5n,2.)+8.*pow(dImQ5n,2.)
4578 + 6.*pow(dReQ6n,2.)+6.*pow(dImQ6n,2.)
4579 + 1.*reQ6nQ2nstarQ2nstarQ2nstar - 1.*reQ6nQ2nstarQ2nstarQ1nstarQ1nstar
4580 - 76.*reQ3nQ2nstarQ1nstar + 4.*reQ3nQ1nstarQ1nstarQ1nstar
4581 - 8.*reQ3nQ2nstarQ1nstar + 8.*dQ2nQ1nQ2nstarQ1nstar
4582 + 4.*reQ5nQ2nstarQ2nstarQ1nstar - 2.*reQ6nQ3nstarQ3nstar
4583 + 4.*reQ6nQ3nstarQ2nstarQ1nstar - 4.*reQ5nQ4nstarQ1nstar
4584 + 16.*dMult*reQ3nQ2nstarQ1nstar - 2.*reQ4nQ2nstarQ2nstar
4585 - 4.*reQ3nQ3nQ3nstarQ2nstarQ1nstar -8.*reQ4nQ3nstarQ1nstar
4586 - 10.*reQ4nQ2nstarQ2nstar + 4.*reQ4nQ2nstarQ1nstarQ1nstar
4587 - 12.*reQ4nQ3nstarQ1nstar + 8.*dQ3nQ1nQ3nstarQ1nstar
4588 + 8.*reQ3nQ1nQ2nstarQ2nstar - 4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4589 + 5.*reQ4nQ2nQ3nstarQ3nstar+2.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4590 + 4.*reQ5nQ1nQ3nstarQ3nstar+2.*pow(pow(dReQ3n,2.)+pow(dImQ3n,2.),2.)
4591 - 6.*reQ6nQ3nstarQ3nstar - 14.*reQ2nQ1nstarQ1nstar
4592 - 1.*reQ3nQ3nQ2nstarQ2nstarQ2nstar-4.*reQ3nQ2nQ2nstarQ2nstarQ1nstar
4593 - 1.*reQ4nQ1nQ1nQ3nstarQ3nstar-8.*reQ5nQ3nstarQ2nstar
4594 + 2.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.) - 10.*reQ2nQ1nstarQ1nstar
4595 - 4.*reQ6nQ5nstarQ1nstar-5.*reQ6nQ4nstarQ2nstar
4596 + 1.*reQ6nQ4nstarQ1nstarQ1nstar-8.*reQ5nQ3nstarQ2nstar
4597 + 4.*reQ4nQ1nQ3nstarQ2nstar+8.*dQ3nQ2nQ3nstarQ2nstar
4598 - 120.*dMult + 16.*dMult*dMult)
4599 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4600
4601 // Average 6-particle correlations for all events:
4602 fIntFlowCorrelationsAllPro->Fill(57.5,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4603 fIntFlowCorrelationsAllPro->Fill(62.5,six3n3n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4604 if(fCalculateAllCorrelationsVsM)
4605 {
3842bdcd 4606 fIntFlowCorrelationsAllVsMPro[57]->Fill(dMultiplicityBin,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4607 fIntFlowCorrelationsAllVsMPro[62]->Fill(dMultiplicityBin,six3n3n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
e1d101a6 4608 }
4609 } // end of if(dMult>5.)
4610
4611} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations()
4612
4613//=====================================================================================================
4614
4615void AliFlowAnalysisWithQCumulants::CalculateMixedHarmonics()
4616{
4617 // Calculate in this method all multi-particle azimuthal correlations in mixed harmonics.
4618 // (Remark: For completeness sake, we also calculate here again correlations in the same harmonic.)
4619
4620 // a) Access Q-vectors and multiplicity of current event;
c10259fb 4621 // b) Determine multiplicity weights and fill some histos;
e1d101a6 4622 // c) Calculate 2-p correlations;
4623 // d) Calculate 3-p correlations;
4624 // e) Calculate 4-p correlations;
4625 // f) Calculate 5-p correlations;
4626 // g) Calculate 6-p correlations;
4627 // h) Calculate 7-p correlations;
c10259fb 4628 // i) Calculate 8-p correlations.
e1d101a6 4629
4630 // a) Access Q-vectors and multiplicity of current event:
4631 // Multiplicity of an event:
4632 Double_t dMult = (*fSpk)(0,0);
4633 // Real parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
4634 Double_t dReQ1n = (*fReQ)(0,0);
4635 Double_t dReQ2n = (*fReQ)(1,0);
4636 Double_t dReQ3n = (*fReQ)(2,0);
4637 Double_t dReQ4n = (*fReQ)(3,0);
4638 Double_t dReQ5n = (*fReQ)(4,0);
4639 Double_t dReQ6n = (*fReQ)(5,0);
4640 Double_t dReQ7n = (*fReQ)(6,0);
4641 Double_t dReQ8n = (*fReQ)(7,0);
4642 Double_t dReQ9n = (*fReQ)(8,0);
4643 Double_t dReQ10n = (*fReQ)(9,0);
4644 Double_t dReQ11n = (*fReQ)(10,0);
4645 Double_t dReQ12n = (*fReQ)(11,0);
4646 // Imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
4647 Double_t dImQ1n = (*fImQ)(0,0);
4648 Double_t dImQ2n = (*fImQ)(1,0);
4649 Double_t dImQ3n = (*fImQ)(2,0);
4650 Double_t dImQ4n = (*fImQ)(3,0);
4651 Double_t dImQ5n = (*fImQ)(4,0);
4652 Double_t dImQ6n = (*fImQ)(5,0);
4653 Double_t dImQ7n = (*fImQ)(6,0);
4654 Double_t dImQ8n = (*fImQ)(7,0);
4655 Double_t dImQ9n = (*fImQ)(8,0);
4656 Double_t dImQ10n = (*fImQ)(9,0);
4657 Double_t dImQ11n = (*fImQ)(10,0);
4658 Double_t dImQ12n = (*fImQ)(11,0);
c10259fb 4659 // All mixed correlators:
4660 Double_t allMixedCorrelators[139] = {0.};
e1d101a6 4661
4662 // Real parts of expressions involving various combinations of Q-vectors which appears
4663 // simultaneously in several equations for multiparticle correlations bellow:
4664 // Re[Q_{2n}Q_{n}^*Q_{n}^*]
4665 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n;
4666 // Re[Q_{6n}Q_{3n}^*Q_{3n}^*]
4667 Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n;
4668 // Re[Q_{4n}Q_{2n}^*Q_{2n}^*]
4669 Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
4670 // Re[Q_{4n}Q_{3n}^*Q_{n}^*]
4671 Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
4672 // Re[Q_{3n}Q_{2n}^*Q_{n}^*]
4673 Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
4674 + dImQ3n*dImQ2n*dReQ1n;
4675 // Re[Q_{5n}Q_{3n}^*Q_{2n}^*]
4676 Double_t reQ5nQ3nstarQ2nstar = dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
4677 + dImQ5n*dImQ2n*dReQ3n;
4678 // Re[Q_{5n}Q_{4n}^*Q_{1n}^*]
4679 Double_t reQ5nQ4nstarQ1nstar = dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
4680 + dImQ5n*dImQ4n*dReQ1n;
4681 // Re[Q_{6n}Q_{5n}^*Q_{1n}^*]
4682 Double_t reQ6nQ5nstarQ1nstar = dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
4683 + dImQ6n*dImQ5n*dReQ1n;
4684 // Re[Q_{6n}Q_{4n}^*Q_{2n}^*]
4685 Double_t reQ6nQ4nstarQ2nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
4686 + dImQ6n*dImQ4n*dReQ2n;
4687 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{2n}^*]
4688 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
4689 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
4690 // Re[Q_{3n}Q_{n}^*Q_{n}^*Q_{n}^*]
4691 Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
4692 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
4693 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
4694 Double_t reQ6nQ2nstarQ2nstarQ2nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
4695 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
4696 // Re[Q_{4n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4697 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
4698 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);
4699 // Re[Q_{4n}Q_{2n}^*Q_{3n}^*Q_{3n}^*]
4700 Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
4701 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;
4702 // Re[Q_{4n}Q_{n}Q_{3n}^*Q_{2n}^*]
4703 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
4704 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
4705 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
4706 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
4707
4708 // Re[Q_{5n}Q_{n}Q_{4n}^*Q_{2n}^*]
4709 Double_t reQ5nQ1nQ4nstarQ2nstar = dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
4710 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
4711 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
4712 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n;
4713 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{3n}^*]
4714 Double_t reQ5nQ1nQ3nstarQ3nstar = dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
4715 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
4716 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n;
4717 // Re[Q_{5n}Q_{3n}^*Q_{n}^*Q_{n}^*]
4718 Double_t reQ5nQ3nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
4719 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
4720 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n;
4721 // Re[Q_{5n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
4722 Double_t reQ5nQ2nstarQ2nstarQ1nstar = -pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
4723 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
4724 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n;
4725 // Re[Q_{6n}Q_{4n}^*Q_{n}^*Q_{n}^*]
4726 Double_t reQ6nQ4nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
4727 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
4728 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n;
4729 /*// |Q_{2n}|^2 |Q_{n}|^2
4730 Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
4731 // |Q_{4n}|^2 |Q_{2n}|^2
4732 Double_t dQ4nQ2nQ4nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.));
4733 // |Q_{3n}|^2 |Q_{2n}|^2
4734 Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.));
4735 // |Q_{5n}|^2 |Q_{n}|^2
4736 Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
4737 // |Q_{3n}|^2 |Q_{n}|^2
4738 Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));*/
4739 // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*]
4740 /*Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
4741 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));*/
4742 // Re[Q_{2n}Q_{2n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4743 /*Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
4744 * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);*/
4745 /*// Re[Q_{4n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4746 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
4747 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
4748 - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;*/
4749 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4750 /*Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
4751 * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
4752 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);*/
4753 // Re[Q_{6n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4754 Double_t reQ6nQ3nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
4755 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
4756 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
4757 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n;
4758 // Re[Q_{3n}Q_{3n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4759 /*Double_t reQ3nQ3nQ3nstarQ2nstarQ1nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
4760 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
4761 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);*/
4762 /*// Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
4763 Double_t reQ3nQ3nQ2nstarQ2nstarQ2nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.)
4764 - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
4765 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n
4766 - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.)
4767 + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);*/
4768 // Re[Q_{4n}Q_{2n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4769 /*Double_t reQ4nQ2nQ3nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
4770 * (dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
4771 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n);*/
4772 // Re[Q_{3n}Q_{2n}Q_{3n}^*Q_{n}^*Q_{n}^*]
4773 /*Double_t reQ3nQ2nQ3nstarQ1nstarQ1nstar = -(pow(dImQ3n,2.)+pow(dReQ3n,2.))
4774 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n);*/
4775 // Re[Q_{3n}Q_{2n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
4776 /*Double_t reQ3nQ2nQ2nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
4777 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
4778 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);*/
4779/* // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4780 Double_t reQ5nQ1nQ3nstarQ2nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
4781 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
4782 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
4783 */
4784 /*
4785 // Re[Q_{2n}Q_{2n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4786 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
4787 + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
4788 * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
4789 - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n);
4790 // Re[Q_{3n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4791 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
4792 * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
4793 + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
4794 */
4795 // |Q_{2n}|^2 |Q_{n}|^4
4796 //Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.);
4797 /*
4798 // |Q_{3n}|^2 |Q_{2n}|^2 |Q_{n}|^2
4799 Double_t dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4800 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
4801 // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4802 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4803 * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
4804 + 2.*dReQ1n*dImQ1n*dImQ2n);
4805 */
4806 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*]
4807 /*Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
4808 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
4809 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
4810 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
4811 + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
4812 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n
4813 - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
4814 */
4815 // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*]
4816 /*
4817 Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
4818 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
4819 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
4820 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n
4821 + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
4822 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
4823 + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n;*/
4824 /*
4825 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*]
4826 Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n
4827 - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n
4828 + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n
4829 + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n
4830 - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n
4831 + dImQ1n*dImQ2n*dImQ3n);
4832 */
4833
c10259fb 4834 // b) Determine multiplicity weights and fill some histos:
e1d101a6 4835 Double_t d2pMultiplicityWeight = 0.; // weight for <2>_{...} to get <<2>>_{...}
4836 Double_t d3pMultiplicityWeight = 0.; // weight for <3>_{...} to get <<3>>_{...}
4837 Double_t d4pMultiplicityWeight = 0.; // weight for <4>_{...} to get <<4>>_{...}
4838 Double_t d5pMultiplicityWeight = 0.; // weight for <5>_{...} to get <<5>>_{...}
c10259fb 4839 Double_t d6pMultiplicityWeight = 0.; // weight for <6>_{...} to get <<6>>_{...}
e1d101a6 4840 Double_t d7pMultiplicityWeight = 0.; // weight for <7>_{...} to get <<7>>_{...}
c10259fb 4841 Double_t d8pMultiplicityWeight = 0.; // weight for <8>_{...} to get <<8>>_{...}
df23c5ae 4842 if(fMultiplicityWeight->Contains("combinations")) // default multiplicity weight
e1d101a6 4843 {
4844 d2pMultiplicityWeight = dMult*(dMult-1.);
4845 d3pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.);
4846 d4pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.);
4847 d5pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.);
c10259fb 4848 d6pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.);
e1d101a6 4849 d7pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.);
c10259fb 4850 d8pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.);
df23c5ae 4851 } else if(fMultiplicityWeight->Contains("unit"))
e1d101a6 4852 {
4853 d2pMultiplicityWeight = 1.;
4854 d3pMultiplicityWeight = 1.;
4855 d4pMultiplicityWeight = 1.;
4856 d5pMultiplicityWeight = 1.;
c10259fb 4857 d6pMultiplicityWeight = 1.;
e1d101a6 4858 d7pMultiplicityWeight = 1.;
c10259fb 4859 d8pMultiplicityWeight = 1.;
df23c5ae 4860 } else if(fMultiplicityWeight->Contains("multiplicity"))
e1d101a6 4861 {
4862 d2pMultiplicityWeight = dMult;
4863 d3pMultiplicityWeight = dMult;
4864 d4pMultiplicityWeight = dMult;
4865 d5pMultiplicityWeight = dMult;
c10259fb 4866 d6pMultiplicityWeight = dMult;
e1d101a6 4867 d7pMultiplicityWeight = dMult;
c10259fb 4868 d8pMultiplicityWeight = dMult;
4869 }
4870 for(Int_t p=0;p<=1;p++) // power (0=linear,1=quadratic)
4871 {
4872 fMixedHarmonicEventWeights[p]->Fill(0.5,pow(dMult,p+1));
4873 fMixedHarmonicEventWeights[p]->Fill(1.5,pow(d2pMultiplicityWeight,p+1));
4874 fMixedHarmonicEventWeights[p]->Fill(2.5,pow(d3pMultiplicityWeight,p+1));
4875 fMixedHarmonicEventWeights[p]->Fill(3.5,pow(d4pMultiplicityWeight,p+1));
4876 fMixedHarmonicEventWeights[p]->Fill(4.5,pow(d5pMultiplicityWeight,p+1));
4877 fMixedHarmonicEventWeights[p]->Fill(5.5,pow(d6pMultiplicityWeight,p+1));
4878 fMixedHarmonicEventWeights[p]->Fill(6.5,pow(d7pMultiplicityWeight,p+1));
4879 fMixedHarmonicEventWeights[p]->Fill(7.5,pow(d8pMultiplicityWeight,p+1));
4880 } // end of for(Int_t p=0;p<=1;p++) // power (0=linear,1=quadratic)
4881 fMixedHarmonicProductOfEventWeights->Fill(0.5,0.5,dMult*dMult);
4882 fMixedHarmonicProductOfEventWeights->Fill(0.5,1.5,dMult*d2pMultiplicityWeight);
4883 fMixedHarmonicProductOfEventWeights->Fill(0.5,2.5,dMult*d3pMultiplicityWeight);
4884 fMixedHarmonicProductOfEventWeights->Fill(0.5,3.5,dMult*d4pMultiplicityWeight);
4885 fMixedHarmonicProductOfEventWeights->Fill(0.5,4.5,dMult*d5pMultiplicityWeight);
4886 fMixedHarmonicProductOfEventWeights->Fill(0.5,5.5,dMult*d6pMultiplicityWeight);
4887 fMixedHarmonicProductOfEventWeights->Fill(0.5,6.5,dMult*d7pMultiplicityWeight);
4888 fMixedHarmonicProductOfEventWeights->Fill(0.5,7.5,dMult*d8pMultiplicityWeight);
4889 fMixedHarmonicProductOfEventWeights->Fill(1.5,1.5,d2pMultiplicityWeight*d2pMultiplicityWeight);
4890 fMixedHarmonicProductOfEventWeights->Fill(1.5,2.5,d2pMultiplicityWeight*d3pMultiplicityWeight);
4891 fMixedHarmonicProductOfEventWeights->Fill(1.5,3.5,d2pMultiplicityWeight*d4pMultiplicityWeight);
4892 fMixedHarmonicProductOfEventWeights->Fill(1.5,4.5,d2pMultiplicityWeight*d5pMultiplicityWeight);
4893 fMixedHarmonicProductOfEventWeights->Fill(1.5,5.5,d2pMultiplicityWeight*d6pMultiplicityWeight);
4894 fMixedHarmonicProductOfEventWeights->Fill(1.5,6.5,d2pMultiplicityWeight*d7pMultiplicityWeight);
4895 fMixedHarmonicProductOfEventWeights->Fill(1.5,7.5,d2pMultiplicityWeight*d8pMultiplicityWeight);
4896 fMixedHarmonicProductOfEventWeights->Fill(2.5,2.5,d3pMultiplicityWeight*d3pMultiplicityWeight);
4897 fMixedHarmonicProductOfEventWeights->Fill(2.5,3.5,d3pMultiplicityWeight*d4pMultiplicityWeight);
4898 fMixedHarmonicProductOfEventWeights->Fill(2.5,4.5,d3pMultiplicityWeight*d5pMultiplicityWeight);
4899 fMixedHarmonicProductOfEventWeights->Fill(2.5,5.5,d3pMultiplicityWeight*d6pMultiplicityWeight);
4900 fMixedHarmonicProductOfEventWeights->Fill(2.5,6.5,d3pMultiplicityWeight*d7pMultiplicityWeight);
4901 fMixedHarmonicProductOfEventWeights->Fill(2.5,7.5,d3pMultiplicityWeight*d8pMultiplicityWeight);
4902 fMixedHarmonicProductOfEventWeights->Fill(3.5,3.5,d4pMultiplicityWeight*d4pMultiplicityWeight);
4903 fMixedHarmonicProductOfEventWeights->Fill(3.5,4.5,d4pMultiplicityWeight*d5pMultiplicityWeight);
4904 fMixedHarmonicProductOfEventWeights->Fill(3.5,5.5,d4pMultiplicityWeight*d6pMultiplicityWeight);
4905 fMixedHarmonicProductOfEventWeights->Fill(3.5,6.5,d4pMultiplicityWeight*d7pMultiplicityWeight);
4906 fMixedHarmonicProductOfEventWeights->Fill(3.5,7.5,d4pMultiplicityWeight*d8pMultiplicityWeight);
4907 fMixedHarmonicProductOfEventWeights->Fill(4.5,4.5,d5pMultiplicityWeight*d5pMultiplicityWeight);
4908 fMixedHarmonicProductOfEventWeights->Fill(4.5,5.5,d5pMultiplicityWeight*d6pMultiplicityWeight);
4909 fMixedHarmonicProductOfEventWeights->Fill(4.5,6.5,d5pMultiplicityWeight*d7pMultiplicityWeight);
4910 fMixedHarmonicProductOfEventWeights->Fill(4.5,7.5,d5pMultiplicityWeight*d8pMultiplicityWeight);
4911 fMixedHarmonicProductOfEventWeights->Fill(5.5,5.5,d6pMultiplicityWeight*d6pMultiplicityWeight);
4912 fMixedHarmonicProductOfEventWeights->Fill(5.5,6.5,d6pMultiplicityWeight*d7pMultiplicityWeight);
4913 fMixedHarmonicProductOfEventWeights->Fill(5.5,7.5,d6pMultiplicityWeight*d8pMultiplicityWeight);
4914 fMixedHarmonicProductOfEventWeights->Fill(6.5,6.5,d7pMultiplicityWeight*d7pMultiplicityWeight);
4915 fMixedHarmonicProductOfEventWeights->Fill(6.5,7.5,d7pMultiplicityWeight*d8pMultiplicityWeight);
4916 fMixedHarmonicProductOfEventWeights->Fill(7.5,7.5,d8pMultiplicityWeight*d8pMultiplicityWeight);
4917
e1d101a6 4918 // c) Calculate 2-p correlations:
4919 Double_t two1n1n = 0.; // <2>_{1n|1n} = <cos(1n(phi1-phi2))>
4920 Double_t two2n2n = 0.; // <2>_{2n|2n} = <cos(2n(phi1-phi2))>
4921 Double_t two3n3n = 0.; // <2>_{3n|3n} = <cos(3n(phi1-phi2))>
4922 Double_t two4n4n = 0.; // <2>_{4n|4n} = <cos(4n(phi1-phi2))>
4923 Double_t two5n5n = 0.; // <2>_{5n|5n} = <cos(5n(phi1-phi2))>
4924 Double_t two6n6n = 0.; // <2>_{6n|6n} = <cos(6n(phi1-phi2))>
4925 if(dMult>1.)
4926 {
4927 two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.));
4928 two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.));
4929 two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.));
4930 two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.));
4931 two5n5n = (pow(dReQ5n,2.)+pow(dImQ5n,2.)-dMult)/(dMult*(dMult-1.));
4932 two6n6n = (pow(dReQ6n,2.)+pow(dImQ6n,2.)-dMult)/(dMult*(dMult-1.));
4933 f2pCorrelations->Fill(0.5,two1n1n,d2pMultiplicityWeight);
4934 f2pCorrelations->Fill(1.5,two2n2n,d2pMultiplicityWeight);
4935 f2pCorrelations->Fill(2.5,two3n3n,d2pMultiplicityWeight);
4936 f2pCorrelations->Fill(3.5,two4n4n,d2pMultiplicityWeight);
4937 f2pCorrelations->Fill(4.5,two5n5n,d2pMultiplicityWeight);
4938 f2pCorrelations->Fill(5.5,two6n6n,d2pMultiplicityWeight);
c10259fb 4939 allMixedCorrelators[0]=two1n1n;
4940 allMixedCorrelators[1]=two2n2n;
4941 allMixedCorrelators[2]=two3n3n;
4942 allMixedCorrelators[3]=two4n4n;
4943 allMixedCorrelators[4]=two5n5n;
4944 allMixedCorrelators[5]=two6n6n;
e1d101a6 4945 } // end of if(dMult>1.)
4946
4947 // d) Calculate 3-p correlations:
4948 // d1) Two distinct harmonics (3):
4949 Double_t three2n1n1n = 0.; // <3>_{2n|1n,1n} = <cos(n(2*phi1-1*phi2-1*phi3))>
4950 Double_t three4n2n2n = 0.; // <3>_{4n|2n,2n} = <cos(n(4*phi1-2*phi2-2*phi3))>
4951 Double_t three6n3n3n = 0.; // <3>_{6n|3n,3n} = <cos(n(6*phi1-3*phi2-3*phi3))>
4952 // d2) Three distinct harmonics (6):
4953 Double_t three3n2n1n = 0.; // <3>_{3n|2n,1n} = <cos(n(3*phi1-2*phi2-1*phi3))>
4954 Double_t three4n3n1n = 0.; // <3>_{4n|3n,1n} = <cos(n(4*phi1-3*phi2-1*phi3))>
4955 Double_t three5n3n2n = 0.; // <3>_{5n|3n,2n} = <cos(n(5*phi1-3*phi2-2*phi3))>
4956 Double_t three5n4n1n = 0.; // <3>_{5n|4n,1n} = <cos(n(5*phi1-4*phi2-1*phi3))>
4957 Double_t three6n4n2n = 0.; // <3>_{6n|4n,2n} = <cos(n(6*phi1-4*phi2-2*phi3))>
4958 Double_t three6n5n1n = 0.; // <3>_{6n|5n,1n} = <cos(n(6*phi1-5*phi2-1*phi3))>
4959 if(dMult>2.)
4960 {
4961 three2n1n1n = (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n
4962 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4963 / (dMult*(dMult-1.)*(dMult-2.));
4964 three4n2n2n = (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
4965 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
4966 / (dMult*(dMult-1.)*(dMult-2.));
4967 three6n3n3n = (reQ6nQ3nstarQ3nstar
c10259fb 4968 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
e1d101a6 4969 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*dMult)
4970 / (dMult*(dMult-1.)*(dMult-2.));
4971 three3n2n1n = (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
4972 + dImQ3n*dImQ2n*dReQ1n-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4973 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4974 / (dMult*(dMult-1.)*(dMult-2.));
4975 three4n3n1n = (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
4976 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4977 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4978 / (dMult*(dMult-1.)*(dMult-2.));
4979 three5n3n2n = (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
4980 + dImQ5n*dImQ2n*dReQ3n-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4981 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
4982 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4983 / (dMult*(dMult-1.)*(dMult-2.));
4984 three5n4n1n = (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
4985 + dImQ5n*dImQ4n*dReQ1n-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4986 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4987 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4988 / (dMult*(dMult-1.)*(dMult-2.));
4989 three6n4n2n = (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
4990 + dImQ6n*dImQ4n*dReQ2n-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4991 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4992 / (dMult*(dMult-1.)*(dMult-2.));
4993 three6n5n1n = (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
4994 + dImQ6n*dImQ5n*dReQ1n-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4995 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))
4996 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4997 / (dMult*(dMult-1.)*(dMult-2.));
4998 f3pCorrelations->Fill(0.5,three2n1n1n,d3pMultiplicityWeight);
4999 f3pCorrelations->Fill(1.5,three4n2n2n,d3pMultiplicityWeight);
5000 f3pCorrelations->Fill(2.5,three6n3n3n,d3pMultiplicityWeight);
5001 //f3pCorrelations->Fill(3.5,0.,d3pMultiplicityWeight); // empty TBI
5002 f3pCorrelations->Fill(4.5,three3n2n1n,d3pMultiplicityWeight);
5003 f3pCorrelations->Fill(5.5,three4n3n1n,d3pMultiplicityWeight);
5004 f3pCorrelations->Fill(6.5,three5n3n2n,d3pMultiplicityWeight);
5005 f3pCorrelations->Fill(7.5,three5n4n1n,d3pMultiplicityWeight);
5006 f3pCorrelations->Fill(8.5,three6n4n2n,d3pMultiplicityWeight);
5007 f3pCorrelations->Fill(9.5,three6n5n1n,d3pMultiplicityWeight);
c10259fb 5008 allMixedCorrelators[6]=three2n1n1n;
5009 allMixedCorrelators[7]=three4n2n2n;
5010 allMixedCorrelators[8]=three6n3n3n;
5011 allMixedCorrelators[9]=three3n2n1n;
5012 allMixedCorrelators[10]=three4n3n1n;
5013 allMixedCorrelators[11]=three5n3n2n;
5014 allMixedCorrelators[12]=three5n4n1n;
5015 allMixedCorrelators[13]=three6n4n2n;
5016 allMixedCorrelators[14]=three6n5n1n;
e1d101a6 5017 } // end of if(dMult>2.)
5018
5019 // e) Calculate 4-p correlations:
5020 // e1) Single harmonic (6):
5021 Double_t four1n1n1n1n = 0.; // <4>_{1n,1n|1n,1n} = <cos(1*n(phi1+phi2-phi3-phi4))>
5022 Double_t four2n2n2n2n = 0.; // <4>_{2n,2n|2n,2n} = <cos(2*n(phi1+phi2-phi3-phi4))>
5023 Double_t four3n3n3n3n = 0.; // <4>_{3n,3n|3n,3n} = <cos(3*n(phi1+phi2-phi3-phi4))>
5024 Double_t four4n4n4n4n = 0.; // <4>_{4n,4n|4n,4n} = <cos(4*n(phi1+phi2-phi3-phi4))>
5025 Double_t four5n5n5n5n = 0.; // <4>_{5n,5n|5n,5n} = <cos(5*n(phi1+phi2-phi3-phi4))>
5026 Double_t four6n6n6n6n = 0.; // <4>_{6n,6n|6n,6n} = <cos(6*n(phi1+phi2-phi3-phi4))>
5027 // e2) "Standard candles" (15):
5028 Double_t four2n1n2n1n = 0.; // <4>_{2n,1n|2n,1n} = <cos(n(2*phi1+1*phi2-2*phi3-1*phi4))>
5029 Double_t four3n1n3n1n = 0.; // <4>_{3n,1n|3n,1n} = <cos(n(3*phi1+1*phi2-3*phi3-1*phi4))>
5030 Double_t four3n2n3n2n = 0.; // <4>_{3n,2n|3n,2n} = <cos(n(3*phi1+2*phi2-3*phi3-2*phi4))>
5031 Double_t four4n1n4n1n = 0.; // <4>_{4n,1n|4n,1n} = <cos(n(4*phi1+1*phi2-4*phi3-1*phi4))>
5032 Double_t four4n2n4n2n = 0.; // <4>_{4n,2n|4n,2n} = <cos(n(4*phi1+2*phi2-4*phi3-2*phi4))>
5033 Double_t four4n3n4n3n = 0.; // <4>_{4n,3n|4n,3n} = <cos(n(4*phi1+3*phi2-4*phi3-3*phi4))>
5034 Double_t four5n1n5n1n = 0.; // <4>_{5n,1n|5n,1n} = <cos(n(5*phi1+1*phi2-5*phi3-1*phi4))>
5035 Double_t four5n2n5n2n = 0.; // <4>_{5n,2n|5n,2n} = <cos(n(5*phi1+2*phi2-5*phi3-2*phi4))>
5036 Double_t four5n3n5n3n = 0.; // <4>_{5n,3n|5n,3n} = <cos(n(5*phi1+3*phi2-5*phi3-3*phi4))>
5037 Double_t four5n4n5n4n = 0.; // <4>_{5n,4n|5n,4n} = <cos(n(5*phi1+4*phi2-5*phi3-4*phi4))>
5038 Double_t four6n1n6n1n = 0.; // <4>_{6n,1n|6n,1n} = <cos(n(6*phi1+1*phi2-6*phi3-1*phi4))>
5039 Double_t four6n2n6n2n = 0.; // <4>_{6n,2n|6n,2n} = <cos(n(6*phi1+2*phi2-6*phi3-2*phi4))>
5040 Double_t four6n3n6n3n = 0.; // <4>_{6n,3n|6n,3n} = <cos(n(6*phi1+3*phi2-6*phi3-3*phi4))>
5041 Double_t four6n4n6n4n = 0.; // <4>_{6n,4n|6n,4n} = <cos(n(6*phi1+4*phi2-6*phi3-4*phi4))>
5042 Double_t four6n5n6n5n = 0.; // <4>_{6n,5n|6n,5n} = <cos(n(6*phi1+5*phi2-6*phi3-5*phi4))>
5043 // e3) Two distinct harmonics (2):
5044 Double_t four3n1n1n1n = 0.; // <4>_{3n|1n,1n,1n} = <cos(n(3*phi1-1*phi2-1*phi3-1*phi4))>
5045 Double_t four6n2n2n2n = 0.; // <4>_{6n|2n,2n,2n} = <cos(n(6*phi1-2*phi2-2*phi3-2*phi4))>
5046 // e4) Three distinct harmonics (10):
5047 Double_t four3n1n2n2n = 0.; // <4>_{3n,1n|2n,2n} = <cos(n(3*phi1+1*phi2-2*phi3-2*phi4))>
5048 Double_t four4n2n1n1n = 0.; // <4>_{4n|2n,1n,1n} = <cos(n(4*phi1-2*phi2-1*phi3-1*phi4))>
5049 Double_t four4n2n3n3n = 0.; // <4>_{4n,2n|3n,3n} = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
5050 Double_t four5n2n2n1n = 0.; // <4>_{5n|2n,2n,1n} = <cos(n(5*phi1-2*phi2-2*phi3-1*phi4))>
5051 Double_t four5n3n1n1n = 0.; // <4>_{5n|3n,1n,1n} = <cos(n(5*phi1-3*phi2-1*phi3-1*phi4))>
5052 Double_t four5n1n3n3n = 0.; // <4>_{5n,1n|3n,3n} = <cos(n(5*phi1+1*phi2-3*phi3-3*phi4))>
5053 Double_t four5n3n4n4n = 0.; // <4>_{5n,3n|4n,4n} = <cos(n(5*phi1+3*phi2-4*phi3-4*phi4))>
5054 Double_t four6n4n1n1n = 0.; // <4>_{6n|4n,1n,1n} = <cos(n(6*phi1-4*phi2-1*phi3-1*phi4))>
5055 Double_t four6n2n4n4n = 0.; // <4>_{6n,2n|4n,4n} = <cos(n(6*phi1+2*phi2-4*phi3-4*phi4))>
5056 Double_t four6n4n5n5n = 0.; // <4>_{6n,4n|5n,5n} = <cos(n(6*phi1+4*phi2-5*phi3-5*phi4))>
5057 // e5) Four distinct harmonics (8):
5058 Double_t four4n1n3n2n = 0.; // <4>_{4n,1n|3n,2n} = <cos(n(4*phi1+1*phi2-3*phi3-2*phi4))>
5059 Double_t four5n1n4n2n = 0.; // <4>_{5n,1n|4n,2n} = <cos(n(5*phi1+1*phi2-4*phi3-2*phi4))>
5060 Double_t four5n2n4n3n = 0.; // <4>_{5n,2n|4n,3n} = <cos(n(5*phi1+2*phi2-4*phi3-3*phi4))>
5061 Double_t four6n1n4n3n = 0.; // <4>_{6n,1n|4n,3n} = <cos(n(6*phi1+1*phi2-4*phi3-3*phi4))>
5062 Double_t four6n1n5n2n = 0.; // <4>_{6n,1n|5n,2n} = <cos(n(6*phi1+1*phi2-5*phi3-2*phi4))>
5063 Double_t four6n3n2n1n = 0.; // <4>_{6n|3n,2n,1n} = <cos(n(6*phi1-3*phi2-2*phi3-1*phi4))>
5064 Double_t four6n2n5n3n = 0.; // <4>_{6n,2n|5n,3n} = <cos(n(6*phi1+2*phi2-5*phi3-3*phi4))>
5065 Double_t four6n3n5n4n = 0.; // <4>_{6n,3n|5n,4n} = <cos(n(6*phi1+3*phi2-5*phi3-4*phi4))>
5066 if(dMult>3.)
5067 {
5068 // Single harmonic (6):
5069 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
5070 + pow(dImQ1n,2.))-2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5071 + (pow(dReQ2n,2.)+pow(dImQ2n,2.)))
5072 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5073 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
5074 + pow(dImQ2n,2.))-2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5075 + (pow(dReQ4n,2.)+pow(dImQ4n,2.)))
5076 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5077 four3n3n3n3n = (2.*dMult*(dMult-3.)+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ3n,2.)
5078 + pow(dImQ3n,2.))-2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5079 + (pow(dReQ6n,2.)+pow(dImQ6n,2.)))
5080 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5081 four4n4n4n4n = (2.*dMult*(dMult-3.)+pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ4n,2.)
5082 + pow(dImQ4n,2.))-2.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5083 + (pow(dReQ8n,2.)+pow(dImQ8n,2.)))
5084 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5085 four5n5n5n5n = (2.*dMult*(dMult-3.)+pow((pow(dReQ5n,2.)+pow(dImQ5n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ5n,2.)
5086 + pow(dImQ5n,2.))-2.*(pow(dReQ5n,2.)*dReQ10n+2.*dReQ5n*dImQ5n*dImQ10n-pow(dImQ5n,2.)*dReQ10n)
5087 + (pow(dReQ10n,2.)+pow(dImQ10n,2.)))
5088 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5089 four6n6n6n6n = (2.*dMult*(dMult-3.)+pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ6n,2.)
5090 + pow(dImQ6n,2.))-2.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
5091 + (pow(dReQ12n,2.)+pow(dImQ12n,2.)))
5092 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5093 // "Standard candles" (15):
5094 four2n1n2n1n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5095 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
5096 + dImQ3n*dImQ2n*dReQ1n)-2.*(pow(dReQ1n,2.)*dReQ2n
5097 + 2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n))
5098 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5099 - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5100 + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
5101 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5102 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5103 four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5104 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5105 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5106 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5107 + pow(dReQ2n,2.)+pow(dImQ2n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5108 + dMult*(dMult-6.))
5109 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5110 four3n2n3n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5111 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5112 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5113 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5114 - (dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
5115 + dMult*(dMult-6.))
5116 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5117 four4n1n4n1n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5118 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ1n*dImQ4n+dImQ5n*dImQ1n*dReQ4n)
5119 - 2.*(dReQ3n*dReQ4n*dReQ1n+dImQ3n*dImQ4n*dReQ1n+dReQ3n*dImQ4n*dImQ1n-dImQ3n*dImQ1n*dReQ4n)
5120 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)
5121 - (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
5122 + dMult*(dMult-6.))
5123 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5124 four4n2n4n2n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5125 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
5126 + dImQ6n*dImQ4n*dReQ2n)-2.*(pow(dReQ2n,2.)*dReQ4n
5127 + 2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n))
5128 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5129 - ((dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5130 + (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
5131 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5132 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5133 four4n3n4n3n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5134 - 2.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ3n*dImQ4n+dImQ7n*dImQ3n*dReQ4n)
5135 - 2.*(dReQ1n*dReQ4n*dReQ3n+dImQ1n*dImQ4n*dReQ3n+dReQ1n*dImQ4n*dImQ3n-dImQ1n*dImQ3n*dReQ4n)
5136 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5137 - (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
5138 + dMult*(dMult-6.))
5139 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5140 four5n1n5n1n = (((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5141 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5142 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5143 + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5144 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.))
5145 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5146 four5n2n5n2n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5147 - 2.*(dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ2n*dImQ5n+dImQ7n*dImQ2n*dReQ5n)
5148 - 2.*(dReQ3n*dReQ5n*dReQ2n+dImQ3n*dImQ5n*dReQ2n+dReQ3n*dImQ5n*dImQ2n-dImQ3n*dImQ2n*dReQ5n)
5149 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)
5150 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
5151 + dMult*(dMult-6.))
5152 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5153 four5n3n5n3n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5154 - 2.*(dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
5155 - 2.*(dReQ2n*dReQ5n*dReQ3n+dImQ2n*dImQ5n*dReQ3n+dReQ2n*dImQ5n*dImQ3n-dImQ2n*dImQ3n*dReQ5n)
5156 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5157 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
5158 + dMult*(dMult-6.))
5159 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5160 four5n4n5n4n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5161 - 2.*(dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ4n*dImQ5n+dImQ9n*dImQ4n*dReQ5n)
5162 - 2.*(dReQ1n*dReQ5n*dReQ4n+dImQ1n*dImQ5n*dReQ4n+dReQ1n*dImQ5n*dImQ4n-dImQ1n*dImQ4n*dReQ5n)
5163 + pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5164 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
5165 + dMult*(dMult-6.))
5166 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5167 four6n1n6n1n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5168 - 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ1n*dImQ6n+dImQ7n*dImQ1n*dReQ6n)
5169 - 2.*(dReQ5n*dReQ6n*dReQ1n+dImQ5n*dImQ6n*dReQ1n+dReQ5n*dImQ6n*dImQ1n-dImQ5n*dImQ1n*dReQ6n)
5170 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5171 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
5172 + dMult*(dMult-6.))
5173 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5174 four6n2n6n2n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5175 - 2.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
5176 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5177 + pow(dReQ8n,2.)+pow(dImQ8n,2.)-(dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5178 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5179 + dMult*(dMult-6.))
5180 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5181 four6n3n6n3n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5182 - 2.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n
5183 + dImQ9n*dImQ6n*dReQ3n)-2.*(pow(dReQ3n,2.)*dReQ6n
5184 + 2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n))
5185 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5186 - ((dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5187 + (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-(pow(dReQ9n,2.)+pow(dImQ9n,2.)))
5188 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5189 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5190 four6n4n6n4n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5191 - 2.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
5192 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5193 + pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5194 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
5195 + dMult*(dMult-6.))
5196 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5197 four6n5n6n5n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5198 - 2.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ5n*dImQ6n+dImQ11n*dImQ5n*dReQ6n)
5199 - 2.*(dReQ1n*dReQ6n*dReQ5n+dImQ1n*dImQ6n*dReQ5n+dReQ1n*dImQ6n*dImQ5n-dImQ1n*dImQ5n*dReQ6n)
5200 + pow(dReQ11n,2.)+pow(dImQ11n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5201 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
5202 + dMult*(dMult-6.))
5203 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5204 // Two distinct harmonics (2):
5205 four3n1n1n1n = (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
5206 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3)
5207 - 3.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5208 - 3.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5209 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5210 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5211 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5212 four6n2n2n2n = (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
5213 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3)
5214 - 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5215 - 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5216 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5217 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult)
5218 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5219 // Three distinct harmonics (10):
5220 four3n1n2n2n = ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5221 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
5222 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5223 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5224 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n))
5225 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5226 - (2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5227 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5228 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5229 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5230 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5231 four4n2n1n1n = ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5232 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n)
5233 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5234 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5235 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n))
5236 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5237 - ((pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5238 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5239 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5240 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5241 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5242 four4n2n3n3n = ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
5243 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n
5244 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5245 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5246 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5247 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5248 + (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5249 + 2.*(2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5250 + (pow(dReQ1n,2.)+pow(dImQ1n,2.))-3.*dMult))
5251 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5252 four5n2n2n1n = (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
5253 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
5254 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n
5255 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5256 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5257 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5258 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5259 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
5260 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5261 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5262 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5263 four5n3n1n1n = (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
5264 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
5265 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n
5266 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5267 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5268 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5269 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5270 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5271 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5272 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5273 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5274 four5n1n3n3n = (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
5275 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
5276 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n
5277 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5278 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5279 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5280 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5281 + pow(dReQ6n,2.)+pow(dImQ6n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5282 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5283 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5284 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5285 four5n3n4n4n = ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ5n*dReQ3n-dImQ5n*dImQ3n)
5286 + 2.*dReQ4n*dImQ4n*(dReQ5n*dImQ3n+dImQ5n*dReQ3n)
5287 - (dReQ8n*dReQ3n*dReQ5n-dReQ8n*dImQ3n*dImQ5n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
5288 - (pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5289 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5290 - 2.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
5291 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5292 + 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5293 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5294 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5295 four6n4n1n1n = (-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
5296 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
5297 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n
5298 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5299 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5300 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5301 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5302 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5303 + pow(dReQ4n,2.)+pow(dImQ4n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5304 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5305 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5306 four6n2n4n4n = ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
5307 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n)
5308 - (pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5309 - (dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
5310 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n))
5311 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5312 - (2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5313 - (pow(dReQ8n,2.)+pow(dImQ8n,2.))-2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5314 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
5315 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5316 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5317 four6n4n5n5n = ((pow(dReQ5n,2.)-pow(dImQ5n,2.))*(dReQ6n*dReQ4n-dImQ6n*dImQ4n)
5318 + 2.*dReQ5n*dImQ5n*(dReQ6n*dImQ4n+dImQ6n*dReQ4n)
5319 - (dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
5320 - (pow(dReQ5n,2.)*dReQ10n+2.*dReQ5n*dImQ5n*dImQ10n-pow(dImQ5n,2.)*dReQ10n)
5321 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5322 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5323 + pow(dReQ10n,2.)+pow(dImQ10n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5324 + 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5325 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5326 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5327 // Four distinct harmonics (8):
5328 four4n1n3n2n = (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5329 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5330 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5331 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n
5332 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5333 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5334 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5335 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5336 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5337 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5338 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5339 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5340 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5341 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5342 four5n1n4n2n = (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
5343 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
5344 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n+dImQ1n*dImQ2n*dReQ4n*dReQ5n
5345 + dReQ1n*dReQ2n*dReQ4n*dReQ5n
5346 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5347 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5348 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5349 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5350 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5351 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5352 + pow(dReQ6n,2.)+pow(dImQ6n,2.)
5353 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5354 + pow(dReQ3n,2.)+pow(dImQ3n,2.)+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5355 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5356 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5357 four5n2n4n3n = (dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
5358 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
5359 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
5360 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n
5361 - (dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
5362 - (dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
5363 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5364 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5365 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5366 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5367 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5368 + 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5369 + 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5370 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5371 four6n1n4n3n = (dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
5372 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
5373 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n+dImQ1n*dImQ3n*dReQ4n*dReQ6n
5374 + dReQ1n*dReQ3n*dReQ4n*dReQ6n
5375 - (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
5376 - (dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
5377 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5378 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5379 - (dReQ4n*dReQ1n*dReQ3n-dReQ4n*dImQ1n*dImQ3n+dImQ4n*dReQ1n*dImQ3n+dImQ4n*dImQ1n*dReQ3n)
5380 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5381 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5382 + 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5383 + pow(dReQ2n,2.)+pow(dImQ2n,2.)+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5384 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5385 four6n1n5n2n = (dImQ1n*dImQ2n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ1n*dReQ2n
5386 + dImQ2n*dImQ6n*dReQ1n*dReQ5n-dImQ1n*dImQ6n*dReQ2n*dReQ5n
5387 - dImQ2n*dImQ5n*dReQ1n*dReQ6n+dImQ1n*dImQ5n*dReQ2n*dReQ6n+dImQ1n*dImQ2n*dReQ5n*dReQ6n
5388 + dReQ1n*dReQ2n*dReQ5n*dReQ6n
5389 - (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
5390 - (dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
5391 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5392 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5393 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5394 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5395 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5396 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
5397 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5398 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5399 four6n3n2n1n = (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
5400 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
5401 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
5402 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n
5403 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5404 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5405 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5406 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5407 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5408 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5409 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5410 + pow(dReQ4n,2.)+pow(dImQ4n,2.)+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5411 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5412 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5413 four6n2n5n3n = (dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
5414 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
5415 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n+dImQ2n*dImQ3n*dReQ5n*dReQ6n
5416 + dReQ2n*dReQ3n*dReQ5n*dReQ6n
5417 - (dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
5418 - (dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n+dImQ8n*dImQ5n*dReQ3n)
5419 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5420 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5421 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5422 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5423 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5424 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5425 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5426 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5427 four6n3n5n4n = (dImQ3n*dImQ4n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ3n*dReQ4n
5428 + dImQ4n*dImQ6n*dReQ3n*dReQ5n-dImQ3n*dImQ6n*dReQ4n*dReQ5n
5429 - dImQ4n*dImQ5n*dReQ3n*dReQ6n+dImQ3n*dImQ5n*dReQ4n*dReQ6n+dImQ3n*dImQ4n*dReQ5n*dReQ6n
5430 + dReQ3n*dReQ4n*dReQ5n*dReQ6n
5431 - (dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
5432 - (dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ5n*dImQ4n+dImQ9n*dImQ5n*dReQ4n)
5433 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5434 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5435 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5436 - (dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
5437 + pow(dReQ9n,2.)+pow(dImQ9n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5438 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5439 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5440 + pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5441 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5442 f4pCorrelations->Fill(0.5,four1n1n1n1n,d4pMultiplicityWeight);
5443 f4pCorrelations->Fill(1.5,four2n2n2n2n,d4pMultiplicityWeight);
5444 f4pCorrelations->Fill(2.5,four3n3n3n3n,d4pMultiplicityWeight);
5445 f4pCorrelations->Fill(3.5,four4n4n4n4n,d4pMultiplicityWeight);
5446 f4pCorrelations->Fill(4.5,four5n5n5n5n,d4pMultiplicityWeight);
5447 f4pCorrelations->Fill(5.5,four6n6n6n6n,d4pMultiplicityWeight);
5448 //f4pCorrelations->Fill(6.5,0.,d4pMultiplicityWeight); // empty
5449 f4pCorrelations->Fill(7.5,four2n1n2n1n,d4pMultiplicityWeight);
5450 f4pCorrelations->Fill(8.5,four3n1n3n1n,d4pMultiplicityWeight);
5451 f4pCorrelations->Fill(9.5,four3n2n3n2n,d4pMultiplicityWeight);
5452 f4pCorrelations->Fill(10.5,four4n1n4n1n,d4pMultiplicityWeight);
5453 f4pCorrelations->Fill(11.5,four4n2n4n2n,d4pMultiplicityWeight);
5454 f4pCorrelations->Fill(12.5,four4n3n4n3n,d4pMultiplicityWeight);
5455 f4pCorrelations->Fill(13.5,four5n1n5n1n,d4pMultiplicityWeight);
5456 f4pCorrelations->Fill(14.5,four5n2n5n2n,d4pMultiplicityWeight);
5457 f4pCorrelations->Fill(15.5,four5n3n5n3n,d4pMultiplicityWeight);
5458 f4pCorrelations->Fill(16.5,four5n4n5n4n,d4pMultiplicityWeight);
5459 f4pCorrelations->Fill(17.5,four6n1n6n1n,d4pMultiplicityWeight);
5460 f4pCorrelations->Fill(18.5,four6n2n6n2n,d4pMultiplicityWeight);
5461 f4pCorrelations->Fill(19.5,four6n3n6n3n,d4pMultiplicityWeight);
5462 f4pCorrelations->Fill(20.5,four6n4n6n4n,d4pMultiplicityWeight);
5463 f4pCorrelations->Fill(21.5,four6n5n6n5n,d4pMultiplicityWeight);
5464 //f4pCorrelations->Fill(22.5,0.,d4pMultiplicityWeight); // empty
5465 f4pCorrelations->Fill(23.5,four3n1n1n1n,d4pMultiplicityWeight);
5466 f4pCorrelations->Fill(24.5,four6n2n2n2n,d4pMultiplicityWeight);
5467 //f4pCorrelations->Fill(25.5,0.,d4pMultiplicityWeight); // empty
5468 f4pCorrelations->Fill(26.5,four3n1n2n2n,d4pMultiplicityWeight);
5469 f4pCorrelations->Fill(27.5,four4n2n1n1n,d4pMultiplicityWeight);
5470 f4pCorrelations->Fill(28.5,four4n2n3n3n,d4pMultiplicityWeight);
5471 f4pCorrelations->Fill(29.5,four5n2n2n1n,d4pMultiplicityWeight);
5472 f4pCorrelations->Fill(30.5,four5n3n1n1n,d4pMultiplicityWeight);
5473 f4pCorrelations->Fill(31.5,four5n1n3n3n,d4pMultiplicityWeight);
5474 f4pCorrelations->Fill(32.5,four5n3n4n4n,d4pMultiplicityWeight);
5475 f4pCorrelations->Fill(33.5,four6n4n1n1n,d4pMultiplicityWeight);
5476 f4pCorrelations->Fill(34.5,four6n2n4n4n,d4pMultiplicityWeight);
5477 f4pCorrelations->Fill(35.5,four6n4n5n5n,d4pMultiplicityWeight);
5478 //f4pCorrelations->Fill(36.5,0.,d4pMultiplicityWeight); // empty
5479 f4pCorrelations->Fill(37.5,four4n1n3n2n,d4pMultiplicityWeight);
5480 f4pCorrelations->Fill(38.5,four5n1n4n2n,d4pMultiplicityWeight);
5481 f4pCorrelations->Fill(39.5,four5n2n4n3n,d4pMultiplicityWeight);
5482 f4pCorrelations->Fill(40.5,four6n1n4n3n,d4pMultiplicityWeight);
5483 f4pCorrelations->Fill(41.5,four6n1n5n2n,d4pMultiplicityWeight);
5484 f4pCorrelations->Fill(42.5,four6n3n2n1n,d4pMultiplicityWeight);
5485 f4pCorrelations->Fill(43.5,four6n2n5n3n,d4pMultiplicityWeight);
5486 f4pCorrelations->Fill(44.5,four6n3n5n4n,d4pMultiplicityWeight);
c10259fb 5487 allMixedCorrelators[15]=four1n1n1n1n;
5488 allMixedCorrelators[16]=four2n2n2n2n;
5489 allMixedCorrelators[17]=four3n3n3n3n;
5490 allMixedCorrelators[18]=four4n4n4n4n;
5491 allMixedCorrelators[19]=four5n5n5n5n;
5492 allMixedCorrelators[20]=four6n6n6n6n;
5493 allMixedCorrelators[21]=four2n1n2n1n;
5494 allMixedCorrelators[22]=four3n1n3n1n;
5495 allMixedCorrelators[23]=four3n2n3n2n;
5496 allMixedCorrelators[24]=four4n1n4n1n;
5497 allMixedCorrelators[25]=four4n2n4n2n;
5498 allMixedCorrelators[26]=four4n3n4n3n;
5499 allMixedCorrelators[27]=four5n1n5n1n;
5500 allMixedCorrelators[28]=four5n2n5n2n;
5501 allMixedCorrelators[29]=four5n3n5n3n;
5502 allMixedCorrelators[30]=four5n4n5n4n;
5503 allMixedCorrelators[31]=four6n1n6n1n;
5504 allMixedCorrelators[32]=four6n2n6n2n;
5505 allMixedCorrelators[33]=four6n3n6n3n;
5506 allMixedCorrelators[34]=four6n4n6n4n;
5507 allMixedCorrelators[35]=four6n5n6n5n;
5508 allMixedCorrelators[36]=four3n1n1n1n;
5509 allMixedCorrelators[37]=four6n2n2n2n;
5510 allMixedCorrelators[38]=four3n1n2n2n;
5511 allMixedCorrelators[39]=four4n2n1n1n;
5512 allMixedCorrelators[40]=four4n2n3n3n;
5513 allMixedCorrelators[41]=four5n2n2n1n;
5514 allMixedCorrelators[42]=four5n3n1n1n;
5515 allMixedCorrelators[43]=four5n1n3n3n;
5516 allMixedCorrelators[44]=four5n3n4n4n;
5517 allMixedCorrelators[45]=four6n4n1n1n;
5518 allMixedCorrelators[46]=four6n2n4n4n;
5519 allMixedCorrelators[47]=four6n4n5n5n;
5520 allMixedCorrelators[48]=four4n1n3n2n;
5521 allMixedCorrelators[49]=four5n1n4n2n;
5522 allMixedCorrelators[50]=four5n2n4n3n;
5523 allMixedCorrelators[51]=four6n1n4n3n;
5524 allMixedCorrelators[52]=four6n1n5n2n;
5525 allMixedCorrelators[53]=four6n3n2n1n;
5526 allMixedCorrelators[54]=four6n2n5n3n;
5527 allMixedCorrelators[55]=four6n3n5n4n;
e1d101a6 5528 } // end of if(dMult>3.)
5529
5530 // f) Calculate 5-p correlations:
5531 // f1) "Standard candles" (30):
5532 Double_t five3n2n3n1n1n = 0.; // <5>_{3n,2n|3n,1n,1n} = <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5))>
5533 Double_t five4n1n2n2n1n = 0.; // <5>_{4n,1n|2n,2n,1n} = <cos(n(4*phi1+1*phi2-2*phi3-2*phi4-1*phi5))>
5534 Double_t five4n2n3n2n1n = 0.; // <5>_{4n,2n|3n,2n,1n} = <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5))>
5535 Double_t five4n3n3n2n2n = 0.; // <5>_{4n,3n|3n,2n,2n} = <cos(n(4*phi1+3*phi2-3*phi3-2*phi4-2*phi5))>
5536 Double_t five4n2n4n1n1n = 0.; // <5>_{4n,2n|4n,1n,1n} = <cos(n(4*phi1+2*phi2-4*phi3-1*phi4-1*phi5))>
5537 Double_t five4n3n4n2n1n = 0.; // <5>_{4n,3n|4n,2n,1n} = <cos(n(4*phi1+3*phi2-4*phi3-2*phi4-1*phi5))>
5538 Double_t five5n1n3n2n1n = 0.; // <5>_{5n,1n|3n,2n,1n} = <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5))>
5539 Double_t five5n2n5n1n1n = 0.; // <5>_{5n,2n|5n,1n,1n} = <cos(n(5*phi1+2*phi2-5*phi3-1*phi4-1*phi5))>
5540 Double_t five5n2n4n2n1n = 0.; // <5>_{5n,2n|4n,2n,1n} = <cos(n(5*phi1+2*phi2-4*phi3-2*phi4-1*phi5))>
5541 Double_t five5n3n4n3n1n = 0.; // <5>_{5n,3n|4n,3n,1n} = <cos(n(5*phi1+3*phi2-4*phi3-3*phi4-1*phi5))>
5542 Double_t five5n4n4n3n2n = 0.; // <5>_{5n,4n|4n,3n,2n} = <cos(n(5*phi1+4*phi2-4*phi3-3*phi4-2*phi5))>
5543 Double_t five5n3n5n2n1n = 0.; // <5>_{5n,3n|5n,2n,1n} = <cos(n(5*phi1+3*phi2-5*phi3-2*phi4-1*phi5))>
5544 Double_t five5n4n5n2n2n = 0.; // <5>_{5n,4n|5n,2n,2n} = <cos(n(5*phi1+4*phi2-5*phi3-2*phi4-2*phi5))>
5545 Double_t five5n4n5n3n1n = 0.; // <5>_{5n,4n|5n,3n,1n} = <cos(n(5*phi1+4*phi2-5*phi3-3*phi4-1*phi5))>
5546 Double_t five6n1n3n3n1n = 0.; // <5>_{6n,1n|3n,3n,1n} = <cos(n(6*phi1+1*phi2-3*phi3-3*phi4-1*phi5))>
5547 Double_t five6n2n3n3n2n = 0.; // <5>_{6n,2n|3n,3n,2n} = <cos(n(6*phi1+2*phi2-3*phi3-3*phi4-2*phi5))>
5548 Double_t five6n1n4n2n1n = 0.; // <5>_{6n,1n|4n,2n,1n} = <cos(n(6*phi1+1*phi2-4*phi3-2*phi4-1*phi5))>
5549 Double_t five6n3n4n3n2n = 0.; // <5>_{6n,3n|4n,3n,2n} = <cos(n(6*phi1+3*phi2-4*phi3-3*phi4-2*phi5))>
5550 Double_t five6n4n4n3n3n = 0.; // <5>_{6n,4n|4n,3n,3n} = <cos(n(6*phi1+4*phi2-4*phi3-3*phi4-3*phi5))>
5551 Double_t five6n2n5n2n1n = 0.; // <5>_{6n,2n|5n,2n,1n} = <cos(n(6*phi1+2*phi2-5*phi3-2*phi4-1*phi5))>
5552 Double_t five6n3n5n3n1n = 0.; // <5>_{6n,3n|5n,3n,1n} = <cos(n(6*phi1+3*phi2-5*phi3-3*phi4-1*phi5))>
5553 Double_t five6n4n5n4n1n = 0.; // <5>_{6n,4n|5n,4n,1n} = <cos(n(6*phi1+4*phi2-5*phi3-4*phi4-1*phi5))>
5554 Double_t five6n5n5n3n3n = 0.; // <5>_{6n,5n|5n,3n,3n} = <cos(n(6*phi1+5*phi2-5*phi3-3*phi4-3*phi5))>
5555 Double_t five6n2n6n1n1n = 0.; // <5>_{6n,2n|6n,1n,1n} = <cos(n(6*phi1+2*phi2-6*phi3-1*phi4-1*phi5))>
5556 Double_t five6n3n6n2n1n = 0.; // <5>_{6n,3n|6n,2n,1n} = <cos(n(6*phi1+3*phi2-6*phi3-2*phi4-1*phi5))>
5557 Double_t five6n4n6n2n2n = 0.; // <5>_{6n,4n|6n,2n,2n} = <cos(n(6*phi1+4*phi2-6*phi3-2*phi4-2*phi5))>
5558 Double_t five6n4n6n3n1n = 0.; // <5>_{6n,4n|6n,3n,1n} = <cos(n(6*phi1+4*phi2-6*phi3-3*phi4-1*phi5))>
5559 Double_t five6n5n5n4n2n = 0.; // <5>_{6n,5n|5n,4n,2n} = <cos(n(6*phi1+5*phi2-5*phi3-4*phi4-2*phi5))>
5560 Double_t five6n5n6n3n2n = 0.; // <5>_{6n,5n|6n,3n,2n} = <cos(n(6*phi1+5*phi2-6*phi3-3*phi4-2*phi5))> // TBI swap with previous
5561 Double_t five6n5n6n4n1n = 0.; // <5>_{6n,5n|6n,4n,1n} = <cos(n(6*phi1+5*phi2-6*phi3-4*phi4-1*phi5))>
5562 // f2) Two distinct harmonics (9):
5563 Double_t five2n1n1n1n1n = 0.; // <5>_{2n,1n|1n,1n,1n} = <cos(n(2*phi1+1*phi2-1*phi3-1*phi4-1*phi5))>
5564 Double_t five2n2n2n1n1n = 0.; // <5>_{2n,2n|2n,1n,1n} = <cos(n(2*phi1+2*phi2-2*phi3-1*phi4-1*phi5))>
5565 Double_t five3n3n2n2n2n = 0.; // <5>_{3n,3n|2n,2n,2n} = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
5566 Double_t five4n1n1n1n1n = 0.; // <5>_{4n|1n,1n,1n,1n} = <cos(n(4*phi1-1*phi2-1*phi3-1*phi4-1*phi5))>
5567 Double_t five4n2n2n2n2n = 0.; // <5>_{4n,2n|2n,2n,2n} = <cos(n(4*phi1+2*phi2-2*phi3-2*phi4-2*phi5))>
5568 Double_t five4n4n4n2n2n = 0.; // <5>_{4n,4n|4n,2n,2n} = <cos(n(4*phi1+4*phi2-4*phi3-2*phi4-2*phi5))>
5569 Double_t five6n3n3n3n3n = 0.; // <5>_{6n,3n|3n,3n,3n} = <cos(n(6*phi1+3*phi2-3*phi3-3*phi4-3*phi5))>
5570 Double_t five6n6n4n4n4n = 0.; // <5>_{6n,6n|4n,4n,4n} = <cos(n(6*phi1+6*phi2-4*phi3-4*phi4-4*phi5))>
5571 Double_t five6n6n6n3n3n = 0.; // <5>_{6n,6n|6n,3n,3n} = <cos(n(6*phi1+6*phi2-6*phi3-3*phi4-3*phi5))>
5572 // f3) Three distinct harmonics (30):
5573 Double_t five3n1n2n1n1n = 0.; // <5>_{3n,1n|2n,1n,1n} = <cos(n(3*phi1+1*phi2-2*phi3-1*phi4-1*phi5))>
5574 Double_t five3n2n2n2n1n = 0.; // <5>_{3n,2n|2n,2n,1n} = <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5))>
5575 Double_t five3n3n3n2n1n = 0.; // <5>_{3n,3n|3n,2n,1n} = <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5))>
5576 Double_t five4n1n3n1n1n = 0.; // <5>_{4n,1n|3n,1n,1n} = <cos(n(4*phi1+1*phi2-3*phi3-1*phi4-1*phi5))>
5577 Double_t five4n1n1n3n3n = 0.; // <5>_{4n,1n,1n|3n,3n} = <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5))>
5578 Double_t five4n3n3n3n1n = 0.; // <5>_{4n,3n|3n,3n,1n} = <cos(n(4*phi1+3*phi2-3*phi3-3*phi4-1*phi5))>
5579 Double_t five4n4n3n3n2n = 0.; // <5>_{4n,4n|3n,3n,2n} = <cos(n(4*phi1+4*phi2-3*phi3-3*phi4-2*phi5))>
5580 Double_t five4n4n4n3n1n = 0.; // <5>_{4n,4n|4n,3n,1n} = <cos(n(4*phi1+4*phi2-4*phi3-3*phi4-1*phi5))>
5581 Double_t five5n2n1n1n1n = 0.; // <5>_{5n|2n,1n,1n,1n} = <cos(n(5*phi1-2*phi2-1*phi3-1*phi4-1*phi5))>
5582 Double_t five5n1n2n2n2n = 0.; // <5>_{5n,1n|2n,2n,2n} = <cos(n(5*phi1+1*phi2-2*phi3-2*phi4-2*phi5))>
5583 Double_t five5n2n3n2n2n = 0.; // <5>_{5n,2n|3n,2n,2n} = <cos(n(5*phi1+2*phi2-3*phi3-2*phi4-2*phi5))>
5584 Double_t five5n3n3n3n2n = 0.; // <5>_{5n,3n|3n,3n,2n} = <cos(n(5*phi1+3*phi2-3*phi3-3*phi4-2*phi5))>
5585 Double_t five5n1n4n1n1n = 0.; // <5>_{5n,1n|4n,1n,1n} = <cos(n(5*phi1+1*phi2-4*phi3-1*phi4-1*phi5))>
5586 Double_t five5n4n3n3n3n = 0.; // <5>_{5n,4n|3n,3n,3n} = <cos(n(5*phi1+4*phi2-3*phi3-3*phi4-3*phi5))>
5587 Double_t five5n4n4n4n1n = 0.; // <5>_{5n,4n|4n,4n,1n} = <cos(n(5*phi1+4*phi2-4*phi3-4*phi4-1*phi5))>
5588 Double_t five5n5n4n3n3n = 0.; // <5>_{5n,5n|4n,3n,3n} = <cos(n(5*phi1+5*phi2-4*phi3-3*phi4-3*phi5))>
5589 Double_t five5n5n4n4n2n = 0.; // <5>_{5n,5n|4n,4n,2n} = <cos(n(5*phi1+5*phi2-4*phi3-4*phi4-2*phi5))>
5590 Double_t five5n5n5n3n2n = 0.; // <5>_{5n,5n|5n,3n,2n} = <cos(n(5*phi1+5*phi2-5*phi3-3*phi4-2*phi5))>
5591 Double_t five5n5n5n4n1n = 0.; // <5>_{5n,5n|5n,4n,1n} = <cos(n(5*phi1+5*phi2-5*phi3-4*phi4-1*phi5))>
5592 Double_t five6n2n2n1n1n = 0.; // <5>_{6n|2n,2n,1n,1n} = <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5))>
5593 Double_t five6n3n1n1n1n = 0.; // <5>_{6n|3n,1n,1n,1n} = <cos(n(6*phi1-3*phi2-1*phi3-1*phi4-1*phi5))>
5594 Double_t five6n1n1n4n4n = 0.; // <5>_{6n,1n,1n|4n,4n} = <cos(n(6*phi1+1*phi2+1*phi3-4*phi4-4*phi5))>
5595 Double_t five6n1n5n1n1n = 0.; // <5>_{6n,1n|5n,1n,1n} = <cos(n(6*phi1+1*phi2-5*phi3-1*phi4-1*phi5))>
5596 Double_t five6n2n4n2n2n = 0.; // <5>_{6n,2n|4n,2n,2n} = <cos(n(6*phi1+2*phi2-4*phi3-2*phi4-2*phi5))>
5597 Double_t five6n4n4n4n2n = 0.; // <5>_{6n,4n|4n,4n,2n} = <cos(n(6*phi1+4*phi2-4*phi3-4*phi4-2*phi5))>
5598 Double_t five6n2n2n5n5n = 0.; // <5>_{6n,2n,2n|5n,5n} = <cos(n(6*phi1+2*phi2+2*phi3-5*phi4-5*phi5))>
5599 Double_t five6n5n5n5n1n = 0.; // <5>_{6n,5n|5n,5n,1n} = <cos(n(6*phi1+5*phi2-5*phi3-5*phi4-1*phi5))>
5600 Double_t five6n6n5n5n2n = 0.; // <5>_{6n,6n|5n,5n,2n} = <cos(n(6*phi1+6*phi2-5*phi3-5*phi4-2*phi5))>
5601 Double_t five6n6n6n4n2n = 0.; // <5>_{6n,6n|6n,4n,2n} = <cos(n(6*phi1+6*phi2-6*phi3-4*phi4-2*phi5))>
5602 Double_t five6n6n6n5n1n = 0.; // <5>_{6n,6n|6n,5n,1n} = <cos(n(6*phi1+6*phi2-6*phi3-5*phi4-1*phi5))> // TBI swap with the one above
5603 // Four distinct harmonics (11):
5604 Double_t five5n2n3n3n1n = 0.; // <5>_{5n,2n|3n,3n,1n} = <cos(n(5*phi1+2*phi2-3*phi3-3*phi4-1*phi5))>
5605 Double_t five5n1n1n4n3n = 0.; // <5>_{5n,1n,1n|4n,3n} = <cos(n(5*phi1+1*phi2+1*phi3-4*phi4-3*phi5))>
5606 Double_t five5n3n4n2n2n = 0.; // <5>_{5n,3n|4n,2n,2n} = <cos(n(5*phi1+3*phi2-4*phi3-2*phi4-2*phi5))>
5607 Double_t five5n2n1n4n4n = 0.; // <5>_{5n,2n,1n|4n,4n} = <cos(n(5*phi1+2*phi2+1*phi3-4*phi4-4*phi5))>
5608 Double_t five6n1n3n2n2n = 0.; // <5>_{6n,1n|3n,2n,2n} = <cos(n(6*phi1+1*phi2-3*phi3-2*phi4-2*phi5))>
5609 Double_t five6n3n4n4n1n = 0.; // <5>_{6n,3n|4n,4n,1n} = <cos(n(6*phi1+3*phi2-4*phi3-4*phi4-1*phi5))>
5610 Double_t five6n1n1n5n3n = 0.; // <5>_{6n,1n,1n|5n,3n} = <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
5611 Double_t five6n3n5n2n2n = 0.; // <5>_{6n,3n|5n,2n,2n} = <cos(n(6*phi1+3*phi2-5*phi3-2*phi4-2*phi5))>
5612 Double_t five6n5n4n4n3n = 0.; // <5>_{6n,5n|4n,4n,3n} = <cos(n(6*phi1+5*phi2-4*phi3-4*phi4-3*phi5))>
5613 Double_t five6n3n1n5n5n = 0.; // <5>_{6n,3n,1n|5n,5n} = <cos(n(6*phi1+3*phi2+1*phi3-5*phi4-5*phi5))>
5614 Double_t five6n6n5n4n3n = 0.; // <5>_{6n,6n|5n,4n,3n} = <cos(n(6*phi1+6*phi2-5*phi3-4*phi4-3*phi5))>
5615 // Five distinct harmonics (3):
5616 Double_t five6n2n4n3n1n = 0.; // <5>_{6n,2n|4n,3n,1n} = <cos(n(6*phi1+2*phi2-4*phi3-3*phi4-1*phi5))>
5617 Double_t five6n2n1n5n4n = 0.; // <5>_{6n,2n,1n|5n,4n} = <cos(n(6*phi1+2*phi2+1*phi3-5*phi4-4*phi5))>
5618 Double_t five6n4n5n3n2n = 0.; // <5>_{6n,4n|5n,3n,2n} = <cos(n(6*phi1+4*phi2-5*phi3-3*phi4-2*phi5))>
5619 if(dMult>4.)
5620 {
5621 five3n2n3n1n1n = (-(pow(dImQ3n,2.)+pow(dReQ3n,2.))
5622 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n)
5623 - (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
5624 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
5625 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n)
5626 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5627 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5628 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5629 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5630 - (dReQ3n*pow(dReQ1n,3.)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
5631 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2.)-dImQ3n*pow(dImQ1n,3.))
5632 - 2.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5633 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5634 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5635 + 3.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5636 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5637 + 2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5638 + 9.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5639 - (dMult-8.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5640 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5641 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5642 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5643 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-12.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5644 + 2.*(dMult-9.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
5645 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5646 five4n1n2n2n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))
5647 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
5648 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5649 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5650 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5651 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5652 - 2.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
5653 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
5654 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
5655 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
5656 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
5657 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5658 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5659 + (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5660 + 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5661 + 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5662 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5663 + 3.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5664 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5665 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5666 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5667 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5668 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5669 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5670 - 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5671 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5672 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5673 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5674 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5675 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
5676 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5677 five4n2n3n2n1n = ((pow(dImQ2n,2.)+pow(dReQ2n,2.))*(dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
5678 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n)
5679 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
5680 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
5681 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
5682 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
5683 - (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
5684 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
5685 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
5686 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n)
5687 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
5688 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
5689 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5690 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5691 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5692 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5693 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
5694 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
5695 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5696 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5697 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5698 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5699 + (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5700 + pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n
5701 + dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n
5702 + 3.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5703 - (dMult-7.)*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5704 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5705 + 7.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5706 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5707 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5708 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5709 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5710 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5711 + 2.*(dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+(dMult-12.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5712 - 2.*dMult*(dMult-12.))
5713 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5714
5715 // *********************************************************************
5716 Double_t reQ7nQ3nstarQ2nstarQ2nstar = (dReQ7n*dReQ3n+dImQ7n*dImQ3n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
5717 + 2.*dReQ2n*dImQ2n*(dImQ7n*dReQ3n-dReQ7n*dImQ3n);
5718 Double_t reQ5nQ2nQ4nstarQ3nstar = dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
5719 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
5720 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
5721 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n;
5722 Double_t reQ7nQ4nstarQ3nstar = dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n
5723 + dImQ7n*dImQ4n*dReQ3n;
5724
5725
5726 Double_t reQ7nQ5nstarQ2nstar = dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n
5727 + dImQ7n*dImQ5n*dReQ2n;
5728
5729 // <5>_{6n,4n|4n,3n,3n}:
5730 Double_t reQ10nQ4nstarQ3nstarQ3nstar = (dReQ10n*dReQ4n+dImQ10n*dImQ4n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5731 + 2.*dReQ3n*dImQ3n*(dImQ10n*dReQ4n-dReQ10n*dImQ4n);
5732 Double_t reQ7nQ3nQ6nstarQ4nstar = dImQ3n*dImQ4n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ3n*dReQ4n
5733 + dImQ4n*dImQ7n*dReQ3n*dReQ6n-dImQ3n*dImQ7n*dReQ4n*dReQ6n
5734 - dImQ4n*dImQ6n*dReQ3n*dReQ7n+dImQ3n*dImQ6n*dReQ4n*dReQ7n
5735 + dImQ3n*dImQ4n*dReQ6n*dReQ7n+dReQ3n*dReQ4n*dReQ6n*dReQ7n;
5736 Double_t reQ10nQ7nstarQ3nstar = dReQ10n*dReQ7n*dReQ3n-dReQ10n*dImQ7n*dImQ3n+dImQ10n*dReQ7n*dImQ3n
5737 + dImQ10n*dImQ7n*dReQ3n;
5738 Double_t reQ10nQ6nstarQ4nstar = dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n
5739 + dImQ10n*dImQ6n*dReQ4n;
5740 Double_t reQ6nQ1nQ4nstarQ3nstar = dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
5741 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
5742 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
5743 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n;
5744 Double_t reQ7nQ6nstarQ1nstar = dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n
5745 + dImQ7n*dImQ6n*dReQ1n;
5746 // <5>_{6n,5n|5n,3n,3n}:
5747 /*Double_t reQ11nQ5nstarQ3nstarQ3nstar = (dReQ11n*dReQ5n+dImQ11n*dImQ5n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5748 + 2.*dReQ3n*dImQ3n*(dImQ11n*dReQ5n-dReQ11n*dImQ5n); */
5749 Double_t reQ6nQ2nQ5nstarQ3nstar = dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
5750 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
5751 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
5752 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n;
5753 Double_t reQ8nQ3nQ6nstarQ5nstar = dImQ3n*dImQ5n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ3n*dReQ5n
5754 + dImQ5n*dImQ8n*dReQ3n*dReQ6n-dImQ3n*dImQ8n*dReQ5n*dReQ6n
5755 - dImQ5n*dImQ6n*dReQ3n*dReQ8n+dImQ3n*dImQ6n*dReQ5n*dReQ8n
5756 + dImQ3n*dImQ5n*dReQ6n*dReQ8n+dReQ3n*dReQ5n*dReQ6n*dReQ8n;
5757 Double_t reQ11nQ6nstarQ5nstar = dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n
5758 + dImQ11n*dImQ6n*dReQ5n;
5759 Double_t reQ8nQ6nstarQ2nstar = dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n
5760 + dImQ8n*dImQ6n*dReQ2n;
5761 Double_t reQ11nQ8nstarQ3nstar = dReQ11n*dReQ8n*dReQ3n-dReQ11n*dImQ8n*dImQ3n+dImQ11n*dReQ8n*dImQ3n
5762 + dImQ11n*dImQ8n*dReQ3n;
5763 Double_t reQ8nQ5nstarQ3nstar = dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n
5764 + dImQ8n*dImQ5n*dReQ3n;
5765 // <5>_{5n,2n|5n,1n,1n}
5766 Double_t reQ7nQ5nstarQ1nstarQ1nstar = (dReQ7n*dReQ5n+dImQ7n*dImQ5n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5767 + 2.*dReQ1n*dImQ1n*(dImQ7n*dReQ5n-dReQ7n*dImQ5n);
5768 Double_t reQ6nQ1nQ5nstarQ2nstar = dImQ1n*dImQ2n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ1n*dReQ2n
5769 + dImQ2n*dImQ6n*dReQ1n*dReQ5n-dImQ1n*dImQ6n*dReQ2n*dReQ5n
5770 - dImQ2n*dImQ5n*dReQ1n*dReQ6n+dImQ1n*dImQ5n*dReQ2n*dReQ6n
5771 + dImQ1n*dImQ2n*dReQ5n*dReQ6n+dReQ1n*dReQ2n*dReQ5n*dReQ6n;
5772 // <5>_{5n,4n|5n,2n,2n}
5773 Double_t reQ9nQ5nstarQ2nstarQ2nstar = (dReQ9n*dReQ5n+dImQ9n*dImQ5n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
5774 + 2.*dReQ2n*dImQ2n*(dImQ9n*dReQ5n-dReQ9n*dImQ5n);
5775 Double_t reQ7nQ2nQ5nstarQ4nstar = dImQ2n*dImQ4n*dImQ5n*dImQ7n+dImQ5n*dImQ7n*dReQ2n*dReQ4n
5776 + dImQ4n*dImQ7n*dReQ2n*dReQ5n-dImQ2n*dImQ7n*dReQ4n*dReQ5n
5777 - dImQ4n*dImQ5n*dReQ2n*dReQ7n+dImQ2n*dImQ5n*dReQ4n*dReQ7n
5778 + dImQ2n*dImQ4n*dReQ5n*dReQ7n+dReQ2n*dReQ4n*dReQ5n*dReQ7n;
5779 Double_t reQ9nQ5nstarQ4nstar = dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ5n*dImQ4n
5780 + dImQ9n*dImQ5n*dReQ4n;
5781 Double_t reQ9nQ7nstarQ2nstar = dReQ9n*dReQ7n*dReQ2n-dReQ9n*dImQ7n*dImQ2n+dImQ9n*dReQ7n*dImQ2n
5782 + dImQ9n*dImQ7n*dReQ2n;
5783 // <5>_{6n,2n|6n,1n,1n}
5784 Double_t reQ8nQ6nstarQ1nstarQ1nstar = (dReQ8n*dReQ6n+dImQ8n*dImQ6n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5785 + 2.*dReQ1n*dImQ1n*(dImQ8n*dReQ6n-dReQ8n*dImQ6n);
5786 Double_t reQ7nQ1nQ6nstarQ2nstar = dImQ1n*dImQ2n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ1n*dReQ2n
5787 + dImQ2n*dImQ7n*dReQ1n*dReQ6n-dImQ1n*dImQ7n*dReQ2n*dReQ6n
5788 - dImQ2n*dImQ6n*dReQ1n*dReQ7n+dImQ1n*dImQ6n*dReQ2n*dReQ7n
5789 + dImQ1n*dImQ2n*dReQ6n*dReQ7n+dReQ1n*dReQ2n*dReQ6n*dReQ7n;
5790 Double_t reQ8nQ7nstarQ1nstar = dReQ8n*dReQ7n*dReQ1n-dReQ8n*dImQ7n*dImQ1n+dImQ8n*dReQ7n*dImQ1n
5791 + dImQ8n*dImQ7n*dReQ1n;
5792 // <5>_{5n,2n|4n,2n,1n}
5793 Double_t reQ5nQ2nQ4nstarQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5794 * (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5795 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n);
5796 Double_t reQ7nQ4nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ4n*dReQ7n-dReQ4n*dReQ7n*dImQ1n*dImQ2n
5797 - dReQ2n*dReQ7n*dImQ1n*dImQ4n-dReQ1n*dReQ7n*dImQ2n*dImQ4n
5798 + dReQ2n*dReQ4n*dImQ1n*dImQ7n+dReQ1n*dReQ4n*dImQ2n*dImQ7n
5799 + dReQ1n*dReQ2n*dImQ4n*dImQ7n-dImQ1n*dImQ2n*dImQ4n*dImQ7n;
5800 // <5>_{4n,3n|4n,2n,1n}:
c10259fb 5801 Double_t reQ4nQ3nQ4nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5802 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5803 * (pow(dReQ4n,2.)+pow(dImQ4n,2.));
e1d101a6 5804 /*
5805 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5806 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5807 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5808 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
5809 */
5810 // <5>_{5n,3n|4n,3n,1n}:
5811 Double_t reQ5nQ3nQ4nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5812 * (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5813 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n);
c10259fb 5814 Double_t reQ5nQ3nQ4nstarQ4nstar = dReQ3n*pow(dReQ4n,2.)*dReQ5n+2.*dReQ4n*dReQ5n*dImQ3n*dImQ4n
5815 - dReQ3n*dReQ5n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ3n*dImQ5n
5816 + 2.*dReQ3n*dReQ4n*dImQ4n*dImQ5n+dImQ3n*pow(dImQ4n,2.)*dImQ5n;
e1d101a6 5817 Double_t reQ7nQ1nQ5nstarQ3nstar = dImQ1n*dImQ3n*dImQ5n*dImQ7n+dImQ5n*dImQ7n*dReQ1n*dReQ3n
5818 + dImQ3n*dImQ7n*dReQ1n*dReQ5n-dImQ1n*dImQ7n*dReQ3n*dReQ5n
5819 - dImQ3n*dImQ5n*dReQ1n*dReQ7n+dImQ1n*dImQ5n*dReQ3n*dReQ7n
5820 + dImQ1n*dImQ3n*dReQ5n*dReQ7n+dReQ1n*dReQ3n*dReQ5n*dReQ7n;
c10259fb 5821 Double_t reQ8nQ4nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ4n*dReQ8n-dReQ4n*dReQ8n*dImQ1n*dImQ3n
5822 - dReQ3n*dReQ8n*dImQ1n*dImQ4n-dReQ1n*dReQ8n*dImQ3n*dImQ4n
5823 + dReQ3n*dReQ4n*dImQ1n*dImQ8n+dReQ1n*dReQ4n*dImQ3n*dImQ8n
5824 + dReQ1n*dReQ3n*dImQ4n*dImQ8n-dImQ1n*dImQ3n*dImQ4n*dImQ8n;
e1d101a6 5825 Double_t reQ8nQ4nstarQ4nstar = pow(dReQ4n,2.)*dReQ8n-dReQ8n*pow(dImQ4n,2.)+2.*dReQ4n*dImQ4n*dImQ8n;
5826 // <5>_{5n,4n|4n,3n,2n}:
5827 Double_t reQ5nQ4nQ4nstarQ3nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5828 * (dReQ2n*dReQ3n*dReQ5n-dReQ5n*dImQ2n*dImQ3n
5829 + dReQ3n*dImQ2n*dImQ5n+dReQ2n*dImQ3n*dImQ5n);
5830 Double_t reQ6nQ3nQ5nstarQ4nstar = dImQ4n*dImQ3n*dImQ6n*dImQ5n+dImQ6n*dImQ5n*dReQ4n*dReQ3n
5831 + dImQ3n*dImQ5n*dReQ4n*dReQ6n-dImQ4n*dImQ5n*dReQ3n*dReQ6n
5832 - dImQ3n*dImQ6n*dReQ4n*dReQ5n+dImQ4n*dImQ6n*dReQ3n*dReQ5n
5833 + dImQ4n*dImQ3n*dReQ6n*dReQ5n+dReQ4n*dReQ3n*dReQ6n*dReQ5n;
c10259fb 5834 Double_t reQ9nQ4nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ4n*dReQ9n-dReQ4n*dReQ9n*dImQ2n*dImQ3n
5835 - dReQ3n*dReQ9n*dImQ2n*dImQ4n-dReQ2n*dReQ9n*dImQ3n*dImQ4n
5836 + dReQ3n*dReQ4n*dImQ2n*dImQ9n+dReQ2n*dReQ4n*dImQ3n*dImQ9n
5837 + dReQ2n*dReQ3n*dImQ4n*dImQ9n-dImQ2n*dImQ3n*dImQ4n*dImQ9n;
e1d101a6 5838 Double_t reQ9nQ6nstarQ3nstar = dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n
5839 + dImQ9n*dImQ6n*dReQ3n;
5840 // <5>_{5n,3n|5n,2n,1n}:
c10259fb 5841 Double_t reQ5nQ3nQ5nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5842 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5843 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
5844 Double_t reQ8nQ5nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ5n*dReQ8n-dReQ5n*dReQ8n*dImQ1n*dImQ2n
5845 - dReQ2n*dReQ8n*dImQ1n*dImQ5n-dReQ1n*dReQ8n*dImQ2n*dImQ5n
5846 + dReQ2n*dReQ5n*dImQ1n*dImQ8n+dReQ1n*dReQ5n*dImQ2n*dImQ8n
5847 + dReQ1n*dReQ2n*dImQ5n*dImQ8n-dImQ1n*dImQ2n*dImQ5n*dImQ8n;
e1d101a6 5848 // <5>_{5n,4n|5n,3n,1n}:
c10259fb 5849 Double_t reQ5nQ4nQ5nstarQ3nstarQ1nstar = (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5850 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n)
5851 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
e1d101a6 5852 Double_t reQ8nQ1nQ5nstarQ4nstar = dImQ4n*dImQ1n*dImQ8n*dImQ5n+dImQ8n*dImQ5n*dReQ4n*dReQ1n
5853 + dImQ1n*dImQ5n*dReQ4n*dReQ8n-dImQ4n*dImQ5n*dReQ1n*dReQ8n
5854 - dImQ1n*dImQ8n*dReQ4n*dReQ5n+dImQ4n*dImQ8n*dReQ1n*dReQ5n
5855 + dImQ4n*dImQ1n*dReQ8n*dReQ5n+dReQ4n*dReQ1n*dReQ8n*dReQ5n;
c10259fb 5856 Double_t reQ9nQ5nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ5n*dReQ9n-dReQ5n*dReQ9n*dImQ1n*dImQ3n
5857 - dReQ3n*dReQ9n*dImQ1n*dImQ5n-dReQ1n*dReQ9n*dImQ3n*dImQ5n
5858 + dReQ3n*dReQ5n*dImQ1n*dImQ9n+dReQ1n*dReQ5n*dImQ3n*dImQ9n
5859 + dReQ1n*dReQ3n*dImQ5n*dImQ9n-dImQ1n*dImQ3n*dImQ5n*dImQ9n;
e1d101a6 5860 Double_t reQ9nQ8nstarQ1nstar = dReQ9n*dReQ8n*dReQ1n-dReQ9n*dImQ8n*dImQ1n+dImQ9n*dReQ8n*dImQ1n
5861 + dImQ9n*dImQ8n*dReQ1n;
5862 // <5>_{6n,1n|4n,2n,1n}:
c10259fb 5863 Double_t reQ6nQ1nQ4nstarQ2nstarQ1nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5864 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5865 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
e1d101a6 5866 // <5>_{6n,3n|4n,3n,2n}:
c10259fb 5867 Double_t reQ6nQ3nQ4nstarQ3nstarQ2nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5868 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5869 * (pow(dReQ3n,2.)+pow(dImQ3n,2.));
e1d101a6 5870 Double_t reQ7nQ2nQ6nstarQ3nstar = dImQ3n*dImQ2n*dImQ7n*dImQ6n+dImQ7n*dImQ6n*dReQ3n*dReQ2n
5871 + dImQ2n*dImQ6n*dReQ3n*dReQ7n-dImQ3n*dImQ6n*dReQ2n*dReQ7n
5872 - dImQ2n*dImQ7n*dReQ3n*dReQ6n+dImQ3n*dImQ7n*dReQ2n*dReQ6n
5873 + dImQ3n*dImQ2n*dReQ7n*dReQ6n+dReQ3n*dReQ2n*dReQ7n*dReQ6n;
5874 // <5>_{6n,2n|5n,2n,1n}:
5875 Double_t reQ6nQ2nQ5nstarQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5876 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5877 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5878 // <5>_{6n,3n|5n,3n,1n}:
5879 Double_t reQ6nQ3nQ5nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5880 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5881 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5882 Double_t reQ8nQ1nQ6nstarQ3nstar = dImQ3n*dImQ1n*dImQ8n*dImQ6n+dImQ8n*dImQ6n*dReQ3n*dReQ1n
5883 + dImQ1n*dImQ6n*dReQ3n*dReQ8n-dImQ3n*dImQ6n*dReQ1n*dReQ8n
5884 - dImQ1n*dImQ8n*dReQ3n*dReQ6n+dImQ3n*dImQ8n*dReQ1n*dReQ6n
5885 + dImQ3n*dImQ1n*dReQ8n*dReQ6n+dReQ3n*dReQ1n*dReQ8n*dReQ6n;
5886 // <5>_{6n,4n|5n,4n,1n}:
5887 Double_t reQ6nQ4nQ5nstarQ4nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5888 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5889 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
c10259fb 5890 Double_t reQ6nQ4nQ5nstarQ5nstar = dReQ4n*pow(dReQ5n,2.)*dReQ6n+2.*dReQ5n*dReQ6n*dImQ4n*dImQ5n
5891 - dReQ4n*dReQ6n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ4n*dImQ6n
5892 + 2.*dReQ4n*dReQ5n*dImQ5n*dImQ6n+dImQ4n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 5893 Double_t reQ9nQ1nQ6nstarQ4nstar = dImQ4n*dImQ1n*dImQ9n*dImQ6n+dImQ9n*dImQ6n*dReQ4n*dReQ1n
5894 + dImQ1n*dImQ6n*dReQ4n*dReQ9n-dImQ4n*dImQ6n*dReQ1n*dReQ9n
5895 - dImQ1n*dImQ9n*dReQ4n*dReQ6n+dImQ4n*dImQ9n*dReQ1n*dReQ6n
c10259fb 5896 + dImQ4n*dImQ1n*dReQ9n*dReQ6n+dReQ4n*dReQ1n*dReQ9n*dReQ6n;
5897 Double_t reQ10nQ5nstarQ4nstarQ1nstar = dReQ1n*dReQ4n*dReQ5n*dReQ10n-dReQ5n*dReQ10n*dImQ1n*dImQ4n
5898 - dReQ4n*dReQ10n*dImQ1n*dImQ5n-dReQ1n*dReQ10n*dImQ4n*dImQ5n
5899 + dReQ4n*dReQ5n*dImQ1n*dImQ10n+dReQ1n*dReQ5n*dImQ4n*dImQ10n
5900 + dReQ1n*dReQ4n*dImQ5n*dImQ10n-dImQ1n*dImQ4n*dImQ5n*dImQ10n;
e1d101a6 5901 Double_t reQ10nQ9nstarQ1nstar = dReQ10n*dReQ9n*dReQ1n-dReQ10n*dImQ9n*dImQ1n+dImQ10n*dReQ9n*dImQ1n
5902 + dImQ10n*dImQ9n*dReQ1n;
5903 Double_t reQ10nQ5nstarQ5nstar = pow(dReQ5n,2.)*dReQ10n-dReQ10n*pow(dImQ5n,2.)+2.*dReQ5n*dImQ5n*dImQ10n;
5904 // <5>_{6n,3n|6n,2n,1n}:
c10259fb 5905 Double_t reQ6nQ3nQ6nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5906 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5907 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5908 Double_t reQ9nQ6nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ6n*dReQ9n-dReQ6n*dReQ9n*dImQ1n*dImQ2n
5909 - dReQ2n*dReQ9n*dImQ1n*dImQ6n-dReQ1n*dReQ9n*dImQ2n*dImQ6n
5910 + dReQ2n*dReQ6n*dImQ1n*dImQ9n+dReQ1n*dReQ6n*dImQ2n*dImQ9n
5911 + dReQ1n*dReQ2n*dImQ6n*dImQ9n-dImQ1n*dImQ2n*dImQ6n*dImQ9n;
e1d101a6 5912 // <5>_{6n,4n|6n,3n,1n}:
c10259fb 5913 Double_t reQ6nQ4nQ6nstarQ3nstarQ1nstar = (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5914 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n)
5915 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5916 Double_t reQ10nQ6nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ6n*dReQ10n-dReQ6n*dReQ10n*dImQ1n*dImQ3n
5917 - dReQ3n*dReQ10n*dImQ1n*dImQ6n-dReQ1n*dReQ10n*dImQ3n*dImQ6n
5918 + dReQ3n*dReQ6n*dImQ1n*dImQ10n+dReQ1n*dReQ6n*dImQ3n*dImQ10n
5919 + dReQ1n*dReQ3n*dImQ6n*dImQ10n-dImQ1n*dImQ3n*dImQ6n*dImQ10n;
e1d101a6 5920 // <5>_{6n,5n|5n,4n,2n}:
c10259fb 5921 Double_t reQ6nQ5nQ5nstarQ4nstarQ2nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5922 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5923 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
e1d101a6 5924 Double_t reQ7nQ4nQ6nstarQ5nstar = dImQ5n*dImQ4n*dImQ7n*dImQ6n+dImQ7n*dImQ6n*dReQ5n*dReQ4n
5925 + dImQ4n*dImQ6n*dReQ5n*dReQ7n-dImQ5n*dImQ6n*dReQ4n*dReQ7n
5926 - dImQ4n*dImQ7n*dReQ5n*dReQ6n+dImQ5n*dImQ7n*dReQ4n*dReQ6n
5927 + dImQ5n*dImQ4n*dReQ7n*dReQ6n+dReQ5n*dReQ4n*dReQ7n*dReQ6n;
5928 Double_t reQ9nQ2nQ6nstarQ5nstar = dImQ5n*dImQ2n*dImQ9n*dImQ6n+dImQ9n*dImQ6n*dReQ5n*dReQ2n
5929 + dImQ2n*dImQ6n*dReQ5n*dReQ9n-dImQ5n*dImQ6n*dReQ2n*dReQ9n
5930 - dImQ2n*dImQ9n*dReQ5n*dReQ6n+dImQ5n*dImQ9n*dReQ2n*dReQ6n
5931 + dImQ5n*dImQ2n*dReQ9n*dReQ6n+dReQ5n*dReQ2n*dReQ9n*dReQ6n;
c10259fb 5932 Double_t reQ11nQ5nstarQ4nstarQ2nstar = dReQ2n*dReQ4n*dReQ5n*dReQ11n-dReQ5n*dReQ11n*dImQ2n*dImQ4n
5933 - dReQ4n*dReQ11n*dImQ2n*dImQ5n-dReQ2n*dReQ11n*dImQ4n*dImQ5n
5934 + dReQ4n*dReQ5n*dImQ2n*dImQ11n+dReQ2n*dReQ5n*dImQ4n*dImQ11n
5935 + dReQ2n*dReQ4n*dImQ5n*dImQ11n-dImQ2n*dImQ4n*dImQ5n*dImQ11n;
e1d101a6 5936 Double_t reQ11nQ9nstarQ2nstar = dReQ11n*dReQ9n*dReQ2n-dReQ11n*dImQ9n*dImQ2n+dImQ11n*dReQ9n*dImQ2n
5937 + dImQ11n*dImQ9n*dReQ2n;
5938 Double_t reQ11nQ7nstarQ4nstar = dReQ11n*dReQ7n*dReQ4n-dReQ11n*dImQ7n*dImQ4n+dImQ11n*dReQ7n*dImQ4n
5939 + dImQ11n*dImQ7n*dReQ4n;
5940 // <5>_{6n,5n|6n,3n,2n}:
c10259fb 5941 Double_t reQ6nQ5nQ6nstarQ3nstarQ2nstar = (dReQ2n*dReQ3n*dReQ5n-dReQ5n*dImQ2n*dImQ3n
5942 + dReQ3n*dImQ2n*dImQ5n+dReQ2n*dImQ3n*dImQ5n)
5943 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5944 Double_t reQ11nQ6nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ6n*dReQ11n-dReQ6n*dReQ11n*dImQ2n*dImQ3n
5945 - dReQ3n*dReQ11n*dImQ2n*dImQ6n-dReQ2n*dReQ11n*dImQ3n*dImQ6n
5946 + dReQ3n*dReQ6n*dImQ2n*dImQ11n+dReQ2n*dReQ6n*dImQ3n*dImQ11n
5947 + dReQ2n*dReQ3n*dImQ6n*dImQ11n-dImQ2n*dImQ3n*dImQ6n*dImQ11n;
e1d101a6 5948 // <5>_{6n,5n|6n,4n,1n}:
c10259fb 5949 Double_t reQ6nQ5nQ6nstarQ4nstarQ1nstar = (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5950 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n)
5951 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
e1d101a6 5952 Double_t reQ10nQ1nQ6nstarQ5nstar = dImQ5n*dImQ1n*dImQ10n*dImQ6n+dImQ10n*dImQ6n*dReQ5n*dReQ1n
5953 + dImQ1n*dImQ6n*dReQ5n*dReQ10n-dImQ5n*dImQ6n*dReQ1n*dReQ10n
5954 - dImQ1n*dImQ10n*dReQ5n*dReQ6n+dImQ5n*dImQ10n*dReQ1n*dReQ6n
5955 + dImQ5n*dImQ1n*dReQ10n*dReQ6n+dReQ5n*dReQ1n*dReQ10n*dReQ6n;
5956 Double_t reQ11nQ10nstarQ1nstar = dReQ11n*dReQ10n*dReQ1n-dReQ11n*dImQ10n*dImQ1n+dImQ11n*dReQ10n*dImQ1n
5957 + dImQ11n*dImQ10n*dReQ1n;
c10259fb 5958 Double_t reQ11nQ6nstarQ4nstarQ1nstar = dReQ1n*dReQ4n*dReQ6n*dReQ11n-dReQ6n*dReQ11n*dImQ1n*dImQ4n
5959 - dReQ4n*dReQ11n*dImQ1n*dImQ6n-dReQ1n*dReQ11n*dImQ4n*dImQ6n
5960 + dReQ4n*dReQ6n*dImQ1n*dImQ11n+dReQ1n*dReQ6n*dImQ4n*dImQ11n
5961 + dReQ1n*dReQ4n*dImQ6n*dImQ11n-dImQ1n*dImQ4n*dImQ6n*dImQ11n;
e1d101a6 5962 // <5>_{4n,1n|3n,1n,1n}:
5963 Double_t reQ4nQ1nQ3nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
5964 * (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5965 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n);
5966 Double_t reQ4nQ1nQ4nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
5967 Double_t reQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
5968 // <5>_{4n,3n|3n,3n,1n}:
5969 Double_t reQ4nQ3nQ3nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5970 * (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n));
5971 Double_t reQ7nQ3nstarQ3nstarQ1nstar = (dReQ7n*dReQ1n+dImQ7n*dImQ1n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5972 + 2.*dReQ3n*dImQ3n*(dImQ7n*dReQ1n-dReQ7n*dImQ1n);
5973 // <5>_{4n,4n|4n,3n,1n}:
5974 Double_t reQ4nQ4nQ4nstarQ3nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
c10259fb 5975 * reQ4nQ3nstarQ1nstar;
5976 Double_t reQ7nQ1nQ4nstarQ4nstar = dReQ1n*pow(dReQ4n,2.)*dReQ7n+2.*dReQ4n*dReQ7n*dImQ1n*dImQ4n
5977 - dReQ1n*dReQ7n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ1n*dImQ7n
5978 + 2.*dReQ1n*dReQ4n*dImQ4n*dImQ7n+dImQ1n*pow(dImQ4n,2.)*dImQ7n;
e1d101a6 5979 // <5>_{5n,2n|3n,2n,2n}:
5980 Double_t reQ5nQ2nQ3nstarQ2nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
c10259fb 5981 * reQ5nQ3nstarQ2nstar;
e1d101a6 5982 // <5>_{5n,3n|3n,3n,2n}:
5983 Double_t reQ5nQ3nQ3nstarQ3nstarQ2nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
5984 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
5985 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
5986 Double_t reQ8nQ3nstarQ3nstarQ2nstar = (dReQ8n*dReQ2n+dImQ8n*dImQ2n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5987 + 2.*dReQ3n*dImQ3n*(dImQ8n*dReQ2n-dReQ8n*dImQ2n);
5988 /*
5989 Double_t reQ5nQ1nQ3nstarQ2nstar = dImQ2n*dImQ1n*dImQ5n*dImQ3n+dImQ5n*dImQ3n*dReQ2n*dReQ1n
5990 + dImQ1n*dImQ3n*dReQ2n*dReQ5n-dImQ2n*dImQ3n*dReQ1n*dReQ5n
5991 - dImQ1n*dImQ5n*dReQ2n*dReQ3n+dImQ2n*dImQ5n*dReQ1n*dReQ3n
5992 + dImQ2n*dImQ1n*dReQ5n*dReQ3n+dReQ2n*dReQ1n*dReQ5n*dReQ3n;
5993 */
5994 // <5>_{5n,1n|4n,1n,1n}:
5995 Double_t reQ5nQ1nQ4nstarQ1nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
5996 * (dImQ1n*dImQ5n*dReQ4n+dImQ4n*dImQ5n*dReQ1n
5997 - dImQ4n*dImQ1n*dReQ5n+dReQ4n*dReQ1n*dReQ5n);
5998 // <5>_{5n,4n|4n,4n,1n}:
5999 Double_t reQ5nQ4nQ4nstarQ4nstarQ1nstar = (pow(dImQ4n,2.)+pow(dReQ4n,2.))
6000 * (dImQ4n*dImQ5n*dReQ1n+dImQ1n*dImQ5n*dReQ4n
6001 - dImQ1n*dImQ4n*dReQ5n+dReQ1n*dReQ4n*dReQ5n);
6002 Double_t reQ9nQ4nstarQ4nstarQ1nstar = (dReQ9n*dReQ1n+dImQ9n*dImQ1n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6003 + 2.*dReQ4n*dImQ4n*(dImQ9n*dReQ1n-dReQ9n*dImQ1n);
6004 // <5>_{5n,5n|5n,3n,2n}:
6005 Double_t reQ5nQ5nQ5nstarQ3nstarQ2nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6006 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
6007 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
c10259fb 6008 Double_t reQ7nQ3nQ5nstarQ5nstar = dReQ3n*pow(dReQ5n,2.)*dReQ7n+2.*dReQ5n*dReQ7n*dImQ3n*dImQ5n
6009 - dReQ3n*dReQ7n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ3n*dImQ7n
6010 + 2.*dReQ3n*dReQ5n*dImQ5n*dImQ7n+dImQ3n*pow(dImQ5n,2.)*dImQ7n;
6011 Double_t reQ8nQ2nQ5nstarQ5nstar = dReQ2n*pow(dReQ5n,2.)*dReQ8n+2.*dReQ5n*dReQ8n*dImQ2n*dImQ5n
6012 - dReQ2n*dReQ8n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ2n*dImQ8n
6013 + 2.*dReQ2n*dReQ5n*dImQ5n*dImQ8n+dImQ2n*pow(dImQ5n,2.)*dImQ8n;
6014 Double_t reQ10nQ5nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ5n*dReQ10n-dReQ5n*dReQ10n*dImQ2n*dImQ3n
6015 - dReQ3n*dReQ10n*dImQ2n*dImQ5n-dReQ2n*dReQ10n*dImQ3n*dImQ5n
6016 + dReQ3n*dReQ5n*dImQ2n*dImQ10n+dReQ2n*dReQ5n*dImQ3n*dImQ10n
6017 + dReQ2n*dReQ3n*dImQ5n*dImQ10n-dImQ2n*dImQ3n*dImQ5n*dImQ10n;
e1d101a6 6018 Double_t reQ10nQ8nstarQ2nstar = dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n
6019 + dImQ10n*dImQ8n*dReQ2n;
6020 // <5>_{5n,5n|5n,4n,1n}:
6021 Double_t reQ5nQ5nQ5nstarQ4nstarQ1nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6022 * (dImQ4n*dImQ5n*dReQ1n+dImQ1n*dImQ5n*dReQ4n
6023 - dImQ1n*dImQ4n*dReQ5n+dReQ1n*dReQ4n*dReQ5n);
c10259fb 6024 Double_t reQ9nQ1nQ5nstarQ5nstar = dReQ1n*pow(dReQ5n,2.)*dReQ9n+2.*dReQ5n*dReQ9n*dImQ1n*dImQ5n
6025 - dReQ1n*dReQ9n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ1n*dImQ9n
6026 + 2.*dReQ1n*dReQ5n*dImQ5n*dImQ9n+dImQ1n*pow(dImQ5n,2.)*dImQ9n;
e1d101a6 6027 // <5>_{6n,1n|5n,1n,1n}:
6028 Double_t reQ6nQ1nQ5nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
6029 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
6030 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
6031 // <5>_{6n,5n|5n,5n,1n}:
6032 Double_t reQ6nQ5nQ5nstarQ5nstarQ1nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6033 * (dImQ5n*dImQ6n*dReQ1n+dImQ1n*dImQ6n*dReQ5n
6034 - dImQ1n*dImQ5n*dReQ6n+dReQ1n*dReQ5n*dReQ6n);
6035 Double_t reQ11nQ5nstarQ5nstarQ1nstar = (dReQ11n*dReQ1n+dImQ11n*dImQ1n)*(pow(dReQ5n,2)-pow(dImQ5n,2))
6036 + 2.*dReQ5n*dImQ5n*(dImQ11n*dReQ1n-dReQ11n*dImQ1n);
6037 // <5>_{6n,6n|6n,5n,1n}:
6038 Double_t reQ6nQ6nQ6nstarQ5nstarQ1nstar = (pow(dReQ6n,2.)+pow(dImQ6n,2.))
c10259fb 6039 * reQ6nQ5nstarQ1nstar;
6040 Double_t reQ7nQ5nQ6nstarQ6nstar = dReQ5n*pow(dReQ6n,2.)*dReQ7n+2.*dReQ6n*dReQ7n*dImQ5n*dImQ6n
6041 - dReQ5n*dReQ7n*pow(dImQ6n,2.)-pow(dReQ6n,2.)*dImQ5n*dImQ7n
6042 + 2.*dReQ5n*dReQ6n*dImQ6n*dImQ7n+dImQ5n*pow(dImQ6n,2.)*dImQ7n;
6043 Double_t reQ11nQ1nQ6nstarQ6nstar = dReQ1n*pow(dReQ6n,2.)*dReQ11n+2.*dReQ6n*dReQ11n*dImQ1n*dImQ6n
6044 - dReQ1n*dReQ11n*pow(dImQ6n,2.)-pow(dReQ6n,2.)*dImQ1n*dImQ11n
6045 + 2.*dReQ1n*dReQ6n*dImQ6n*dImQ11n+dImQ1n*pow(dImQ6n,2.)*dImQ11n;
e1d101a6 6046 Double_t reQ12nQ6nstarQ6nstar = pow(dReQ6n,2.)*dReQ12n-dReQ12n*pow(dImQ6n,2.)+2.*dReQ6n*dImQ6n*dImQ12n;
6047 Double_t reQ12nQ11nstarQ1nstar = dReQ12n*dReQ11n*dReQ1n-dReQ12n*dImQ11n*dImQ1n+dImQ12n*dReQ11n*dImQ1n
6048 + dImQ12n*dImQ11n*dReQ1n;
c10259fb 6049 Double_t reQ12nQ6nstarQ5nstarQ1nstar = dReQ1n*dReQ5n*dReQ6n*dReQ12n-dReQ6n*dReQ12n*dImQ1n*dImQ5n
6050 - dReQ5n*dReQ12n*dImQ1n*dImQ6n-dReQ1n*dReQ12n*dImQ5n*dImQ6n
6051 + dReQ5n*dReQ6n*dImQ1n*dImQ12n+dReQ1n*dReQ6n*dImQ5n*dImQ12n
6052 + dReQ1n*dReQ5n*dImQ6n*dImQ12n-dImQ1n*dImQ5n*dImQ6n*dImQ12n;
e1d101a6 6053 Double_t reQ12nQ7nstarQ5nstar = dReQ12n*dReQ7n*dReQ5n-dReQ12n*dImQ7n*dImQ5n+dImQ12n*dReQ7n*dImQ5n
6054 + dImQ12n*dImQ7n*dReQ5n;
6055 // <5>_{6n,2n|4n,3n,1n}:
c10259fb 6056 Double_t reQ6nQ2nQ4nstarQ3nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ4n*dReQ6n+dReQ3n*dReQ4n*dReQ6n*dImQ1n*dImQ2n
6057 - dReQ2n*dReQ4n*dReQ6n*dImQ1n*dImQ3n+dReQ1n*dReQ4n*dReQ6n*dImQ2n*dImQ3n
6058 - dReQ2n*dReQ3n*dReQ6n*dImQ1n*dImQ4n+dReQ1n*dReQ3n*dReQ6n*dImQ2n*dImQ4n
6059 - dReQ1n*dReQ2n*dReQ6n*dImQ3n*dImQ4n-dReQ6n*dImQ1n*dImQ2n*dImQ3n*dImQ4n
6060 + dReQ2n*dReQ3n*dReQ4n*dImQ1n*dImQ6n-dReQ1n*dReQ3n*dReQ4n*dImQ2n*dImQ6n
6061 + dReQ1n*dReQ2n*dReQ4n*dImQ3n*dImQ6n+dReQ4n*dImQ1n*dImQ2n*dImQ3n*dImQ6n
6062 + dReQ1n*dReQ2n*dReQ3n*dImQ4n*dImQ6n+dReQ3n*dImQ1n*dImQ2n*dImQ4n*dImQ6n
6063 - dReQ2n*dImQ1n*dImQ3n*dImQ4n*dImQ6n+dReQ1n*dImQ2n*dImQ3n*dImQ4n*dImQ6n;
6064 Double_t reQ6nQ2nQ4nstarQ4nstar = dReQ2n*pow(dReQ4n,2.)*dReQ6n+2.*dReQ4n*dReQ6n*dImQ2n*dImQ4n
6065 - dReQ2n*dReQ6n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ2n*dImQ6n
6066 + 2.*dReQ2n*dReQ4n*dImQ4n*dImQ6n+dImQ2n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6067 // <5>_{6n,2n,1n|5n,4n}:
c10259fb 6068 Double_t reQ6nQ2nQ1nQ5nstarQ4nstar = dReQ1n*dReQ2n*dReQ4n*dReQ6n*dReQ5n - dReQ4n*dReQ6n*dReQ5n*dImQ1n*dImQ2n
6069 + dReQ2n*dReQ6n*dReQ5n*dImQ1n*dImQ4n + dReQ1n*dReQ6n*dReQ5n*dImQ2n*dImQ4n
6070 - dReQ2n*dReQ4n*dReQ5n*dImQ1n*dImQ6n - dReQ1n*dReQ4n*dReQ5n*dImQ2n*dImQ6n
6071 + dReQ1n*dReQ2n*dReQ5n*dImQ4n*dImQ6n - dReQ5n*dImQ1n*dImQ2n*dImQ4n*dImQ6n
6072 + dReQ2n*dReQ4n*dReQ6n*dImQ1n*dImQ5n + dReQ1n*dReQ4n*dReQ6n*dImQ2n*dImQ5n
6073 - dReQ1n*dReQ2n*dReQ6n*dImQ4n*dImQ5n + dReQ6n*dImQ1n*dImQ2n*dImQ4n*dImQ5n
6074 + dReQ1n*dReQ2n*dReQ4n*dImQ6n*dImQ5n - dReQ4n*dImQ1n*dImQ2n*dImQ6n*dImQ5n
6075 + dReQ2n*dImQ1n*dImQ4n*dImQ6n*dImQ5n + dReQ1n*dImQ2n*dImQ4n*dImQ6n*dImQ5n;
e1d101a6 6076
6077 // <5>_{6n,4n|5n,3n,2n}:
c10259fb 6078 Double_t reQ6nQ4nQ5nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ4n*dReQ5n*dReQ6n - dReQ4n*dReQ5n*dReQ6n*dImQ2n*dImQ3n
6079 + dReQ3n*dReQ5n*dReQ6n*dImQ2n*dImQ4n + dReQ2n*dReQ5n*dReQ6n*dImQ3n*dImQ4n
6080 - dReQ3n*dReQ4n*dReQ6n*dImQ2n*dImQ5n - dReQ2n*dReQ4n*dReQ6n*dImQ3n*dImQ5n
6081 + dReQ2n*dReQ3n*dReQ6n*dImQ4n*dImQ5n - dReQ6n*dImQ2n*dImQ3n*dImQ4n*dImQ5n
6082 + dReQ3n*dReQ4n*dReQ5n*dImQ2n*dImQ6n + dReQ2n*dReQ4n*dReQ5n*dImQ3n*dImQ6n
6083 - dReQ2n*dReQ3n*dReQ5n*dImQ4n*dImQ6n + dReQ5n*dImQ2n*dImQ3n*dImQ4n*dImQ6n
6084 + dReQ2n*dReQ3n*dReQ4n*dImQ5n*dImQ6n - dReQ4n*dImQ2n*dImQ3n*dImQ5n*dImQ6n
6085 + dReQ3n*dImQ2n*dImQ4n*dImQ5n*dImQ6n + dReQ2n*dImQ3n*dImQ4n*dImQ5n*dImQ6n;
e1d101a6 6086 Double_t reQ8nQ2nQ6nstarQ4nstar = dImQ4n*dImQ2n*dImQ8n*dImQ6n+dImQ8n*dImQ6n*dReQ4n*dReQ2n
6087 + dImQ2n*dImQ6n*dReQ4n*dReQ8n-dImQ4n*dImQ6n*dReQ2n*dReQ8n
6088 - dImQ2n*dImQ8n*dReQ4n*dReQ6n+dImQ4n*dImQ8n*dReQ2n*dReQ6n
6089 + dImQ4n*dImQ2n*dReQ8n*dReQ6n+dReQ4n*dReQ2n*dReQ8n*dReQ6n;
6090
6091 // <5>_{4n,4n|3n,3n,2n}:
c10259fb 6092 Double_t reQ4nQ4nQ3nstarQ3nstarQ2nstar = dReQ2n*pow(dReQ3n,2.)*pow(dReQ4n,2.)-2.*dReQ3n*pow(dReQ4n,2.)*dImQ2n*dImQ3n
6093 - dReQ2n*pow(dReQ4n,2.)*pow(dImQ3n,2.)+2.*pow(dReQ3n,2.)*dReQ4n*dImQ2n*dImQ4n
6094 + 4.*dReQ2n*dReQ3n*dReQ4n*dImQ3n*dImQ4n - 2.*dReQ4n*dImQ2n*pow(dImQ3n,2.)*dImQ4n
6095 - dReQ2n*pow(dReQ3n,2.)*pow(dImQ4n,2.) + 2.*dReQ3n*dImQ2n*dImQ3n*pow(dImQ4n,2.)
6096 + dReQ2n*pow(dImQ3n,2.)*pow(dImQ4n,2.);
6097
e1d101a6 6098 // <5>_{5n|2n,1n,1n,1n}:
c10259fb 6099 Double_t reQ5nQ2nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,3.)*dReQ2n*dReQ5n-3.*dReQ1n*dReQ2n*dReQ5n*pow(dImQ1n,2.)
6100 - 3.*pow(dReQ1n,2.)*dReQ5n*dImQ1n*dImQ2n+dReQ5n*pow(dImQ1n,3.)*dImQ2n
6101 + 3.*pow(dReQ1n,2.)*dReQ2n*dImQ1n*dImQ5n-dReQ2n*pow(dImQ1n,3.)*dImQ5n
6102 + pow(dReQ1n,3.)*dImQ2n*dImQ5n-3.*dReQ1n*pow(dImQ1n,2.)*dImQ2n*dImQ5n;
e1d101a6 6103
6104 // <5>_{5n,1n|2n,2n,2n}:
c10259fb 6105 Double_t reQ5nQ1nQ2nstarQ2nstarQ2nstar = dReQ1n*pow(dReQ2n,3.)*dReQ5n+3.*pow(dReQ2n,2.)*dReQ5n*dImQ1n*dImQ2n
6106 - 3.*dReQ1n*dReQ2n*dReQ5n*pow(dImQ2n,2.)-dReQ5n*dImQ1n*pow(dImQ2n,3.)
6107 - pow(dReQ2n,3.)*dImQ1n*dImQ5n+3.*dReQ1n*pow(dReQ2n,2.)*dImQ2n*dImQ5n
6108 + 3.*dReQ2n*dImQ1n*pow(dImQ2n,2.)*dImQ5n-dReQ1n*pow(dImQ2n,3.)*dImQ5n;
e1d101a6 6109
6110
6111 // <5>_{5n,4n|3n,3n,3n}:
c10259fb 6112 Double_t reQ5nQ4nQ3nstarQ3nstarQ3nstar = dReQ4n*pow(dReQ3n,3.)*dReQ5n+3.*pow(dReQ3n,2.)*dReQ5n*dImQ4n*dImQ3n
6113 - 3.*dReQ4n*dReQ3n*dReQ5n*pow(dImQ3n,2.)-dReQ5n*dImQ4n*pow(dImQ3n,3.)
6114 - pow(dReQ3n,3.)*dImQ4n*dImQ5n+3.*dReQ4n*pow(dReQ3n,2.)*dImQ3n*dImQ5n
6115 + 3.*dReQ3n*dImQ4n*pow(dImQ3n,2.)*dImQ5n-dReQ4n*pow(dImQ3n,3.)*dImQ5n;
e1d101a6 6116
6117 Double_t reQ9nQ3nstarQ3nstarQ3nstar = dReQ9n*pow(dReQ3n,3)-3.*dReQ3n*dReQ9n*pow(dImQ3n,2)
6118 + 3.*dImQ3n*dImQ9n*pow(dReQ3n,2)-dImQ9n*pow(dImQ3n,3);
6119 // <5>_{5n,5n|4n,3n,3n}:
c10259fb 6120 Double_t reQ5nQ5nQ4nstarQ3nstarQ3nstar = dReQ4n*pow(dReQ3n,2.)*pow(dReQ5n,2.) - 2.*dReQ3n*pow(dReQ5n,2.)*dImQ4n*dImQ3n
6121 - dReQ4n*pow(dReQ5n,2.)*pow(dImQ3n,2.) + 2.*pow(dReQ3n,2.)*dReQ5n*dImQ4n*dImQ5n
6122 + 4.*dReQ4n*dReQ3n*dReQ5n*dImQ3n*dImQ5n - 2.*dReQ5n*dImQ4n*pow(dImQ3n,2.)*dImQ5n
6123 - dReQ4n*pow(dReQ3n,2.)*pow(dImQ5n,2.) + 2.*dReQ3n*dImQ4n*dImQ3n*pow(dImQ5n,2.)
6124 + dReQ4n*pow(dImQ3n,2.)*pow(dImQ5n,2.);
e1d101a6 6125
6126 // <5>_{5n,5n|4n,4n,2n}:
c10259fb 6127 Double_t reQ5nQ5nQ4nstarQ4nstarQ2nstar = dReQ2n*pow(dReQ4n,2.)*pow(dReQ5n,2.) - 2.*dReQ4n*pow(dReQ5n,2.)*dImQ2n*dImQ4n
6128 - dReQ2n*pow(dReQ5n,2.)*pow(dImQ4n,2.) + 2.*pow(dReQ4n,2.)*dReQ5n*dImQ2n*dImQ5n
6129 + 4.*dReQ2n*dReQ4n*dReQ5n*dImQ4n*dImQ5n - 2.*dReQ5n*dImQ2n*pow(dImQ4n,2.)*dImQ5n
6130 - dReQ2n*pow(dReQ4n,2.)*pow(dImQ5n,2.) + 2.*dReQ4n*dImQ2n*dImQ4n*pow(dImQ5n,2.)
6131 + dReQ2n*pow(dImQ4n,2.)*pow(dImQ5n,2.);
e1d101a6 6132 Double_t reQ10nQ4nstarQ4nstarQ2nstar = (dReQ10n*dReQ2n+dImQ10n*dImQ2n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6133 + 2.*dReQ4n*dImQ4n*(dImQ10n*dReQ2n-dReQ10n*dImQ2n);
6134 // <5>_{6n|3n,1n,1n,1n}:
c10259fb 6135 Double_t reQ6nQ3nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,3.)*dReQ3n*dReQ6n-3.*dReQ1n*dReQ3n*dReQ6n*pow(dImQ1n,2.)
6136 - 3.*pow(dReQ1n,2.)*dReQ6n*dImQ1n*dImQ3n+dReQ6n*pow(dImQ1n,3.)*dImQ3n
6137 + 3.*pow(dReQ1n,2.)*dReQ3n*dImQ1n*dImQ6n-dReQ3n*pow(dImQ1n,3.)*dImQ6n
6138 + pow(dReQ1n,3.)*dImQ3n*dImQ6n-3.*dReQ1n*pow(dImQ1n,2.)*dImQ3n*dImQ6n;
e1d101a6 6139 // <5>_{6n,1n,1n|4n,4n}:
c10259fb 6140 Double_t reQ6nQ1nQ1nQ4nstarQ4nstar = pow(dReQ1n,2.)*pow(dReQ4n,2.)*dReQ6n - pow(dReQ4n,2.)*dReQ6n*pow(dImQ1n,2.)
6141 + 4.*dReQ1n*dReQ4n*dReQ6n*dImQ1n*dImQ4n - pow(dReQ1n,2.)*dReQ6n*pow(dImQ4n,2.)
6142 + dReQ6n*pow(dImQ1n,2.)*pow(dImQ4n,2.) - 2.*dReQ1n*pow(dReQ4n,2.)*dImQ1n*dImQ6n
6143 + 2.*pow(dReQ1n,2.)*dReQ4n*dImQ4n*dImQ6n - 2.*dReQ4n*pow(dImQ1n,2.)*dImQ4n*dImQ6n
6144 + 2.*dReQ1n*dImQ1n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6145
6146
6147 // <5>_{6n,2n,2n|5n,5n}:
c10259fb 6148 Double_t reQ6nQ2nQ2nQ5nstarQ5nstar = pow(dReQ2n,2.)*pow(dReQ5n,2.)*dReQ6n - pow(dReQ5n,2.)*dReQ6n*pow(dImQ2n,2.)
6149 + 4.*dReQ2n*dReQ5n*dReQ6n*dImQ2n*dImQ5n - pow(dReQ2n,2.)*dReQ6n*pow(dImQ5n,2.)
6150 + dReQ6n*pow(dImQ2n,2.)*pow(dImQ5n,2.) - 2.*dReQ2n*pow(dReQ5n,2.)*dImQ2n*dImQ6n
6151 + 2.*pow(dReQ2n,2.)*dReQ5n*dImQ5n*dImQ6n - 2.*dReQ5n*pow(dImQ2n,2.)*dImQ5n*dImQ6n
6152 + 2.*dReQ2n*dImQ2n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 6153 Double_t reQ10nQ6nstarQ2nstarQ2nstar = (dReQ10n*dReQ6n+dImQ10n*dImQ6n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
6154 + 2.*dReQ2n*dImQ2n*(dImQ10n*dReQ6n-dReQ10n*dImQ6n);
6155 // <5>_{6n,6n|5n,5n,2n}:
c10259fb 6156 Double_t reQ6nQ6nQ5nstarQ5nstarQ2nstar = dReQ2n*pow(dReQ5n,2.)*pow(dReQ6n,2.) - 2.*dReQ5n*pow(dReQ6n,2.)*dImQ2n*dImQ5n
6157 - dReQ2n*pow(dReQ6n,2.)*pow(dImQ5n,2.) + 2.*pow(dReQ5n,2.)*dReQ6n*dImQ2n*dImQ6n
6158 + 4.*dReQ2n*dReQ5n*dReQ6n*dImQ5n*dImQ6n - 2.*dReQ6n*dImQ2n*pow(dImQ5n,2.)*dImQ6n
6159 - dReQ2n*pow(dReQ5n,2.)*pow(dImQ6n,2.) + 2.*dReQ5n*dImQ2n*dImQ5n*pow(dImQ6n,2.)
6160 + dReQ2n*pow(dImQ5n,2.)*pow(dImQ6n,2.);
e1d101a6 6161 Double_t reQ10nQ2nQ6nstarQ6nstar = dImQ2n*pow(dImQ6n,2.)*dImQ10n+2.*dImQ6n*dImQ10n*dReQ2n*dReQ6n
6162 - dImQ2n*dImQ10n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ2n*dReQ10n
6163 + 2.*dImQ2n*dImQ6n*dReQ6n*dReQ10n+dReQ2n*pow(dReQ6n,2.)*dReQ10n;
e1d101a6 6164 Double_t reQ12nQ5nstarQ5nstarQ2nstar = (dReQ12n*dReQ2n+dImQ12n*dImQ2n)*(pow(dReQ5n,2)-pow(dImQ5n,2))
6165 + 2.*dReQ5n*dImQ5n*(dImQ12n*dReQ2n-dReQ12n*dImQ2n);
e1d101a6 6166 Double_t reQ12nQ10nstarQ2nstar = dReQ12n*dReQ10n*dReQ2n-dReQ12n*dImQ10n*dImQ2n+dImQ12n*dReQ10n*dImQ2n
6167 + dImQ12n*dImQ10n*dReQ2n;
e1d101a6 6168 // <5>_{5n,2n|3n,3n,1n}:
c10259fb 6169 Double_t reQ5nQ2nQ3nstarQ3nstarQ1nstar = dReQ1n*dReQ2n*pow(dReQ3n,2.)*dReQ5n + pow(dReQ3n,2.)*dReQ5n*dImQ1n*dImQ2n
6170 - 2.*dReQ2n*dReQ3n*dReQ5n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ2n*dImQ3n
6171 - dReQ1n*dReQ2n*dReQ5n*pow(dImQ3n,2.) - dReQ5n*dImQ1n*dImQ2n*pow(dImQ3n,2.)
6172 + dReQ2n*pow(dReQ3n,2.)*dImQ1n*dImQ5n - dReQ1n*pow(dReQ3n,2.)*dImQ2n*dImQ5n
6173 + 2.*dReQ1n*dReQ2n*dReQ3n*dImQ3n*dImQ5n + 2.*dReQ3n*dImQ1n*dImQ2n*dImQ3n*dImQ5n
6174 - dReQ2n*dImQ1n*pow(dImQ3n,2.)*dImQ5n + dReQ1n*dImQ2n*pow(dImQ3n,2.)*dImQ5n;
e1d101a6 6175 // <5>_{5n,1n,1n|4n,3n}:
c10259fb 6176 Double_t reQ5nQ1nQ1nQ4nstarQ3nstar = pow(dReQ1n,2.)*dReQ3n*dReQ4n*dReQ5n - dReQ3n*dReQ4n*dReQ5n*pow(dImQ1n,2.)
6177 + 2.*dReQ1n*dReQ4n*dReQ5n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ1n*dImQ4n
6178 - pow(dReQ1n,2.)*dReQ5n*dImQ3n*dImQ4n + dReQ5n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
6179 - 2.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ5n + pow(dReQ1n,2.)*dReQ4n*dImQ3n*dImQ5n
6180 - dReQ4n*pow(dImQ1n,2.)*dImQ3n*dImQ5n + pow(dReQ1n,2.)*dReQ3n*dImQ4n*dImQ5n
e1d101a6 6181 - dReQ3n*pow(dImQ1n,2.)*dImQ4n*dImQ5n + 2.*dReQ1n*dImQ1n*dImQ3n*dImQ4n*dImQ5n;
6182 // <5>_{5n,3n|4n,2n,2n}:
c10259fb 6183 Double_t reQ5nQ3nQ4nstarQ2nstarQ2nstar = dReQ4n*dReQ3n*pow(dReQ2n,2.)*dReQ5n + pow(dReQ2n,2.)*dReQ5n*dImQ4n*dImQ3n
6184 - 2.*dReQ3n*dReQ2n*dReQ5n*dImQ4n*dImQ2n + 2.*dReQ4n*dReQ2n*dReQ5n*dImQ3n*dImQ2n
6185 - dReQ4n*dReQ3n*dReQ5n*pow(dImQ2n,2.) - dReQ5n*dImQ4n*dImQ3n*pow(dImQ2n,2.)
6186 + dReQ3n*pow(dReQ2n,2.)*dImQ4n*dImQ5n - dReQ4n*pow(dReQ2n,2.)*dImQ3n*dImQ5n
6187 + 2.*dReQ4n*dReQ3n*dReQ2n*dImQ2n*dImQ5n + 2.*dReQ2n*dImQ4n*dImQ3n*dImQ2n*dImQ5n
6188 - dReQ3n*dImQ4n*pow(dImQ2n,2.)*dImQ5n + dReQ4n*dImQ3n*pow(dImQ2n,2.)*dImQ5n;
e1d101a6 6189 Double_t reQ8nQ4nstarQ2nstarQ2nstar = (dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
6190 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n);
6191 // <5>_{5n,2n,1n|4n,4n}:
c10259fb 6192 Double_t reQ5nQ2nQ1nQ4nstarQ4nstar = dReQ1n*dReQ2n*pow(dReQ4n,2.)*dReQ5n - pow(dReQ4n,2.)*dReQ5n*dImQ1n*dImQ2n
6193 + 2.*dReQ2n*dReQ4n*dReQ5n*dImQ1n*dImQ4n + 2.*dReQ1n*dReQ4n*dReQ5n*dImQ2n*dImQ4n
6194 - dReQ1n*dReQ2n*dReQ5n*pow(dImQ4n,2.) + dReQ5n*dImQ1n*dImQ2n*pow(dImQ4n,2.)
6195 - dReQ2n*pow(dReQ4n,2.)*dImQ1n*dImQ5n - dReQ1n*pow(dReQ4n,2.)*dImQ2n*dImQ5n
6196 + 2.*dReQ1n*dReQ2n*dReQ4n*dImQ4n*dImQ5n - 2.*dReQ4n*dImQ1n*dImQ2n*dImQ4n*dImQ5n
6197 + dReQ2n*dImQ1n*pow(dImQ4n,2.)*dImQ5n + dReQ1n*dImQ2n*pow(dImQ4n,2.)*dImQ5n;
e1d101a6 6198 // <5>_{6n,1n|3n,2n,2n}:
c10259fb 6199 Double_t reQ6nQ1nQ3nstarQ2nstarQ2nstar = dReQ3n*dReQ1n*pow(dReQ2n,2.)*dReQ6n + pow(dReQ2n,2.)*dReQ6n*dImQ3n*dImQ1n
6200 - 2.*dReQ1n*dReQ2n*dReQ6n*dImQ3n*dImQ2n + 2.*dReQ3n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
6201 - dReQ3n*dReQ1n*dReQ6n*pow(dImQ2n,2.) - dReQ6n*dImQ3n*dImQ1n*pow(dImQ2n,2.)
6202 + dReQ1n*pow(dReQ2n,2.)*dImQ3n*dImQ6n - dReQ3n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
6203 + 2.*dReQ3n*dReQ1n*dReQ2n*dImQ2n*dImQ6n + 2.*dReQ2n*dImQ3n*dImQ1n*dImQ2n*dImQ6n
6204 - dReQ1n*dImQ3n*pow(dImQ2n,2.)*dImQ6n + dReQ3n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
e1d101a6 6205
6206 // <5>_{6n,3n|4n,4n,1n}:
c10259fb 6207 Double_t reQ6nQ3nQ4nstarQ4nstarQ1nstar = dReQ1n*dReQ3n*pow(dReQ4n,2.)*dReQ6n + pow(dReQ4n,2.)*dReQ6n*dImQ1n*dImQ3n
6208 - 2.*dReQ3n*dReQ4n*dReQ6n*dImQ1n*dImQ4n + 2.*dReQ1n*dReQ4n*dReQ6n*dImQ3n*dImQ4n
6209 - dReQ1n*dReQ3n*dReQ6n*pow(dImQ4n,2.) - dReQ6n*dImQ1n*dImQ3n*pow(dImQ4n,2.)
6210 + dReQ3n*pow(dReQ4n,2.)*dImQ1n*dImQ6n - dReQ1n*pow(dReQ4n,2.)*dImQ3n*dImQ6n
6211 + 2.*dReQ1n*dReQ3n*dReQ4n*dImQ4n*dImQ6n + 2.*dReQ4n*dImQ1n*dImQ3n*dImQ4n*dImQ6n
6212 - dReQ3n*dImQ1n*pow(dImQ4n,2.)*dImQ6n + dReQ1n*dImQ3n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6213
6214 // five6n1n1n5n3n = 0.; // <5>_{6n,1n,1n|5n,3n} = <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
c10259fb 6215 Double_t reQ6nQ1nQ1nQ5nstarQ3nstar = pow(dReQ1n,2.)*dReQ3n*dReQ5n*dReQ6n - dReQ3n*dReQ5n*dReQ6n*pow(dImQ1n,2.)
6216 + 2.*dReQ1n*dReQ5n*dReQ6n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ6n*dImQ1n*dImQ5n
6217 - pow(dReQ1n,2.)*dReQ6n*dImQ3n*dImQ5n + dReQ6n*pow(dImQ1n,2.)*dImQ3n*dImQ5n
6218 - 2.*dReQ1n*dReQ3n*dReQ5n*dImQ1n*dImQ6n + pow(dReQ1n,2.)*dReQ5n*dImQ3n*dImQ6n
6219 - dReQ5n*pow(dImQ1n,2.)*dImQ3n*dImQ6n + pow(dReQ1n,2.)*dReQ3n*dImQ5n*dImQ6n
e1d101a6 6220 - dReQ3n*pow(dImQ1n,2.)*dImQ5n*dImQ6n + 2.*dReQ1n*dImQ1n*dImQ3n*dImQ5n*dImQ6n;
6221
6222 // <5>_{6n,3n|5n,2n,2n}:
c10259fb 6223 Double_t reQ6nQ3nQ5nstarQ2nstarQ2nstar = dReQ5n*dReQ3n*pow(dReQ2n,2.)*dReQ6n + pow(dReQ2n,2.)*dReQ6n*dImQ5n*dImQ3n
6224 - 2.*dReQ3n*dReQ2n*dReQ6n*dImQ5n*dImQ2n + 2.*dReQ5n*dReQ2n*dReQ6n*dImQ3n*dImQ2n
6225 - dReQ5n*dReQ3n*dReQ6n*pow(dImQ2n,2.) - dReQ6n*dImQ5n*dImQ3n*pow(dImQ2n,2.)
6226 + dReQ3n*pow(dReQ2n,2.)*dImQ5n*dImQ6n - dReQ5n*pow(dReQ2n,2.)*dImQ3n*dImQ6n
6227 + 2.*dReQ5n*dReQ3n*dReQ2n*dImQ2n*dImQ6n + 2.*dReQ2n*dImQ5n*dImQ3n*dImQ2n*dImQ6n
6228 - dReQ3n*dImQ5n*pow(dImQ2n,2.)*dImQ6n + dReQ5n*dImQ3n*pow(dImQ2n,2.)*dImQ6n;
e1d101a6 6229
6230 // <5>_{6n,5n|4n,4n,3n}:
c10259fb 6231 Double_t reQ6nQ5nQ4nstarQ4nstarQ3nstar = dReQ3n*dReQ5n*pow(dReQ4n,2.)*dReQ6n + pow(dReQ4n,2.)*dReQ6n*dImQ3n*dImQ5n
6232 - 2.*dReQ5n*dReQ4n*dReQ6n*dImQ3n*dImQ4n + 2.*dReQ3n*dReQ4n*dReQ6n*dImQ5n*dImQ4n
6233 - dReQ3n*dReQ5n*dReQ6n*pow(dImQ4n,2.) - dReQ6n*dImQ3n*dImQ5n*pow(dImQ4n,2.)
6234 + dReQ5n*pow(dReQ4n,2.)*dImQ3n*dImQ6n - dReQ3n*pow(dReQ4n,2.)*dImQ5n*dImQ6n
6235 + 2.*dReQ3n*dReQ5n*dReQ4n*dImQ4n*dImQ6n + 2.*dReQ4n*dImQ3n*dImQ5n*dImQ4n*dImQ6n
6236 - dReQ5n*dImQ3n*pow(dImQ4n,2.)*dImQ6n + dReQ3n*dImQ5n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6237 Double_t reQ11nQ4nstarQ4nstarQ3nstar = (dReQ11n*dReQ3n+dImQ11n*dImQ3n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6238 + 2.*dReQ4n*dImQ4n*(dImQ11n*dReQ3n-dReQ11n*dImQ3n);
6239
c10259fb 6240 // <5>_{6n,3n,1n|5n,5n}:
6241 Double_t reQ6nQ3nQ1nQ5nstarQ5nstar = dReQ1n*dReQ3n*pow(dReQ5n,2.)*dReQ6n - pow(dReQ5n,2.)*dReQ6n*dImQ1n*dImQ3n
6242 + 2.*dReQ3n*dReQ5n*dReQ6n*dImQ1n*dImQ5n + 2.*dReQ1n*dReQ5n*dReQ6n*dImQ3n*dImQ5n
6243 - dReQ1n*dReQ3n*dReQ6n*pow(dImQ5n,2.) + dReQ6n*dImQ1n*dImQ3n*pow(dImQ5n,2.)
6244 - dReQ3n*pow(dReQ5n,2.)*dImQ1n*dImQ6n - dReQ1n*pow(dReQ5n,2.)*dImQ3n*dImQ6n
6245 + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ5n*dImQ6n - 2.*dReQ5n*dImQ1n*dImQ3n*dImQ5n*dImQ6n
6246 + dReQ3n*dImQ1n*pow(dImQ5n,2.)*dImQ6n + dReQ1n*dImQ3n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 6247
6248 // <5>_{6n,6n|5n,4n,3n}:
c10259fb 6249 Double_t reQ6nQ6nQ5nstarQ4nstarQ3nstar = dReQ3n*dReQ4n*dReQ5n*pow(dReQ6n,2.) - dReQ5n*pow(dReQ6n,2.)*dImQ3n*dImQ4n
6250 - dReQ4n*pow(dReQ6n,2.)*dImQ3n*dImQ5n - dReQ3n*pow(dReQ6n,2.)*dImQ4n*dImQ5n
6251 + 2.*dReQ4n*dReQ5n*dReQ6n*dImQ3n*dImQ6n + 2.*dReQ3n*dReQ5n*dReQ6n*dImQ4n*dImQ6n
6252 + 2.*dReQ3n*dReQ4n*dReQ6n*dImQ5n*dImQ6n - 2.*dReQ6n*dImQ3n*dImQ4n*dImQ5n*dImQ6n
6253 - dReQ3n*dReQ4n*dReQ5n*pow(dImQ6n,2.) + dReQ5n*dImQ3n*dImQ4n*pow(dImQ6n,2.)
6254 + dReQ4n*dImQ3n*dImQ5n*pow(dImQ6n,2.) + dReQ3n*dImQ4n*dImQ5n*pow(dImQ6n,2.);
e1d101a6 6255
6256
6257 Double_t reQ8nQ4nQ6nstarQ6nstar = dImQ4n*pow(dImQ6n,2.)*dImQ8n+2.*dImQ6n*dImQ8n*dReQ4n*dReQ6n
6258 - dImQ4n*dImQ8n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ4n*dReQ8n
6259 + 2.*dImQ4n*dImQ6n*dReQ6n*dReQ8n+dReQ4n*pow(dReQ6n,2.)*dReQ8n;
6260
6261
6262 Double_t reQ9nQ3nQ6nstarQ6nstar = dImQ3n*pow(dImQ6n,2.)*dImQ9n+2.*dImQ6n*dImQ9n*dReQ3n*dReQ6n
6263 - dImQ3n*dImQ9n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ3n*dReQ9n
6264 + 2.*dImQ3n*dImQ6n*dReQ6n*dReQ9n+dReQ3n*pow(dReQ6n,2.)*dReQ9n;
6265
6266
c10259fb 6267 Double_t reQ12nQ5nstarQ4nstarQ3nstar = dReQ3n*dReQ5n*dReQ4n*dReQ12n-dReQ4n*dReQ12n*dImQ3n*dImQ5n
6268 - dReQ5n*dReQ12n*dImQ3n*dImQ4n-dReQ3n*dReQ12n*dImQ5n*dImQ4n
6269 + dReQ5n*dReQ4n*dImQ3n*dImQ12n+dReQ3n*dReQ4n*dImQ5n*dImQ12n
6270 + dReQ3n*dReQ5n*dImQ4n*dImQ12n-dImQ3n*dImQ5n*dImQ4n*dImQ12n;
e1d101a6 6271 Double_t reQ12nQ9nstarQ3nstar = dReQ12n*dReQ9n*dReQ3n-dReQ12n*dImQ9n*dImQ3n+dImQ12n*dReQ9n*dImQ3n
6272 + dImQ12n*dImQ9n*dReQ3n;
e1d101a6 6273 Double_t reQ12nQ8nstarQ4nstar = dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n
6274 + dImQ12n*dImQ8n*dReQ4n;
6275
6276
6277 five4n3n3n2n2n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))
6278 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
6279 - ((dReQ7n*dReQ3n+dImQ7n*dImQ3n)*(pow(dReQ2n,2.)-pow(dImQ2n,2.))
6280 + 2.*dReQ2n*dImQ2n*(dImQ7n*dReQ3n-dReQ7n*dImQ3n))
6281 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
6282 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6283 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
6284 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
6285 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
6286 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
6287 - 2.*(dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
6288 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
6289 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
6290 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n)
6291 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6292 + 1.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6293 + 3.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6294 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
6295 + 2.*(dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
6296 + 2.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6297 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6298 + 6.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6299 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6300 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6301 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6302 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6303 - 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6304 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6305 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6306 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6307 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6308 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6309 - 2.*dMult*(dMult-12.))
6310 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6311 five4n2n4n1n1n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))
6312 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6313 - reQ6nQ4nstarQ1nstarQ1nstar
6314 - reQ4nQ2nstarQ1nstarQ1nstar
6315 - 2.*reQ4nQ1nQ3nstarQ2nstar
6316 - 2.*reQ5nQ1nQ4nstarQ2nstar
6317 + 2.*reQ3nQ2nstarQ1nstar
6318 + reQ6nQ4nstarQ2nstar
6319 + 3.*reQ4nQ2nstarQ2nstar
6320 + 2.*reQ5nQ3nstarQ2nstar
6321 + 2.*reQ6nQ5nstarQ1nstar
6322 + 2.*reQ6nQ4nstarQ2nstar
6323 + 6.*reQ4nQ3nstarQ1nstar
6324 + 6.*reQ5nQ4nstarQ1nstar
6325 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6326 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6327 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6328 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6329 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6330 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6331 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6332 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6333 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6334 // to be polished:
6335 five4n3n4n2n1n = (reQ4nQ3nQ4nstarQ2nstarQ1nstar
6336 - reQ5nQ2nQ4nstarQ3nstar
6337 - reQ6nQ1nQ4nstarQ3nstar
6338 - reQ4nQ1nQ3nstarQ2nstar
6339 - reQ7nQ4nstarQ2nstarQ1nstar
6340 - reQ4nQ2nstarQ1nstarQ1nstar
6341 - reQ4nQ2nQ3nstarQ3nstar
6342 + reQ4nQ3nstarQ1nstar
6343 + reQ7nQ4nstarQ3nstar
6344 + 3.*reQ4nQ3nstarQ1nstar
6345 + 2.*reQ7nQ4nstarQ3nstar
6346 + reQ5nQ3nstarQ2nstar
6347 + reQ7nQ5nstarQ2nstar
6348 + reQ6nQ3nstarQ3nstar
6349 + reQ4nQ3nstarQ1nstar
6350 + reQ7nQ6nstarQ1nstar
6351 + reQ2nQ1nstarQ1nstar
6352 - (dMult-6.)*reQ3nQ2nstarQ1nstar
6353 + 3.*reQ5nQ4nstarQ1nstar
6354 + reQ4nQ3nstarQ1nstar
6355 + 2.*reQ4nQ2nstarQ2nstar
6356 + 3.*reQ6nQ4nstarQ2nstar
6357 + reQ3nQ2nstarQ1nstar
6358 + reQ4nQ2nstarQ2nstar
6359 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6360 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6361 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6362 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6363 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6364 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6365 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6366 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6367 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6368 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6369 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6370 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6371 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6372 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6373 five5n1n3n2n1n = ((pow(dImQ1n,2.)+pow(dReQ1n,2.))*(dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
6374 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n)
6375 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6376 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6377 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6378 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6379 - (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
6380 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
6381 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
6382 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n)
6383 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
6384 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
6385 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
6386 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
6387 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
6388 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
6389 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
6390 - (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
6391 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
6392 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n)
6393 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
6394 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
6395 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
6396 + 3.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
6397 + dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n
6398 + pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n
6399 + 4.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
6400 - (dMult-7.)*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6401 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6402 + pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
6403 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6404 + 3.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6405 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6406 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6407 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6408 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6409 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6410 + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6411 - 2.*dMult*(dMult-12.))
6412 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6413 // to be polished:
6414 five5n2n5n1n1n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6415 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6416 - reQ7nQ5nstarQ1nstarQ1nstar
6417 - reQ5nQ3nstarQ1nstarQ1nstar
6418 - 2.*reQ5nQ1nQ4nstarQ2nstar
6419 - 2.*reQ6nQ1nQ5nstarQ2nstar
6420 + 2.*reQ4nQ3nstarQ1nstar
6421 + reQ7nQ5nstarQ2nstar
6422 + 3.*reQ5nQ3nstarQ2nstar
6423 + 2.*reQ6nQ4nstarQ2nstar
6424 + 2.*reQ7nQ6nstarQ1nstar
6425 + 2.*reQ7nQ5nstarQ2nstar
6426 + 6.*reQ5nQ4nstarQ1nstar
6427 + 6.*reQ6nQ5nstarQ1nstar
6428 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6429 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6430 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6431 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))-4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6432 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6433 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6434 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6435 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6436 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6437 // to be polished:
6438 five5n2n4n2n1n = (reQ5nQ2nQ4nstarQ2nstarQ1nstar
6439 - reQ5nQ2nQ4nstarQ3nstar
6440 - reQ6nQ1nQ5nstarQ2nstar
6441 - reQ5nQ2nstarQ2nstarQ1nstar
6442 - reQ7nQ4nstarQ2nstarQ1nstar
6443 - reQ4nQ1nQ3nstarQ2nstar
6444 - reQ5nQ1nQ4nstarQ2nstar
6445 + reQ2nQ1nstarQ1nstar
6446 + reQ7nQ5nstarQ2nstar
6447 + 3.*reQ5nQ3nstarQ2nstar
6448 + 2.*reQ7nQ5nstarQ2nstar
6449 + reQ5nQ3nstarQ2nstar
6450 + reQ7nQ4nstarQ3nstar
6451 + reQ6nQ5nstarQ1nstar
6452 + reQ2nQ1nstarQ1nstar
6453 + reQ7nQ6nstarQ1nstar
6454 + reQ3nQ2nstarQ1nstar
6455 - (dMult-6.)*reQ5nQ4nstarQ1nstar
6456 + 3.*reQ3nQ2nstarQ1nstar
6457 + reQ2nQ1nstarQ1nstar
6458 + 2.*reQ4nQ2nstarQ2nstar
6459 + 3.*reQ6nQ4nstarQ2nstar
6460 + reQ4nQ3nstarQ1nstar
6461 + reQ4nQ2nstarQ2nstar
6462 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6463 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6464 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6465 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6466 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6467 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6468 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6469 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6470 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6471 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6472 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6473 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6474 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
6475 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6476 // to be polished:
6477 five5n3n4n3n1n = (reQ5nQ3nQ4nstarQ3nstarQ1nstar
6478 - reQ5nQ3nQ4nstarQ4nstar
6479 - reQ7nQ1nQ5nstarQ3nstar
6480 - reQ5nQ3nstarQ1nstarQ1nstar
6481 - reQ8nQ4nstarQ3nstarQ1nstar
6482 - reQ4nQ1nQ3nstarQ2nstar
6483 - reQ5nQ2nQ4nstarQ3nstar
6484 + reQ3nQ2nstarQ1nstar
6485 + reQ8nQ5nstarQ3nstar
6486 + 3.*reQ5nQ3nstarQ2nstar
6487 + 2.*reQ8nQ5nstarQ3nstar
6488 + reQ5nQ4nstarQ1nstar
6489 + reQ8nQ4nstarQ4nstar
6490 + reQ7nQ5nstarQ2nstar
6491 + reQ3nQ2nstarQ1nstar
6492 + reQ8nQ7nstarQ1nstar
6493 + reQ2nQ1nstarQ1nstar
6494 - (dMult-6.)*reQ5nQ4nstarQ1nstar
6495 + 3.*reQ4nQ3nstarQ1nstar
6496 + reQ3nQ2nstarQ1nstar
6497 + 2.*reQ4nQ3nstarQ1nstar
6498 + 3.*reQ7nQ4nstarQ3nstar
6499 + reQ4nQ2nstarQ2nstar
6500 + reQ4nQ3nstarQ1nstar
6501 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6502 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6503 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6504 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6505 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6506 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6507 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6508 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6509 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6510 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6511 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6512 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6513 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6514 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6515 // to be polished:
6516 five5n4n4n3n2n = (reQ5nQ4nQ4nstarQ3nstarQ2nstar
6517 - reQ6nQ3nQ5nstarQ4nstar
6518 - reQ7nQ2nQ5nstarQ4nstar
6519 - reQ5nQ1nQ4nstarQ2nstar
6520 - reQ9nQ4nstarQ3nstarQ2nstar
6521 - reQ4nQ1nQ3nstarQ2nstar
6522 - reQ5nQ2nQ4nstarQ3nstar
6523 + reQ4nQ2nstarQ2nstar
6524 + reQ9nQ5nstarQ4nstar
6525 + 3.*reQ5nQ4nstarQ1nstar
6526 + 2.*reQ9nQ5nstarQ4nstar
6527 + reQ6nQ5nstarQ1nstar
6528 + reQ9nQ6nstarQ3nstar
6529 + reQ7nQ5nstarQ2nstar
6530 + reQ4nQ2nstarQ2nstar
6531 + reQ9nQ7nstarQ2nstar
6532 + reQ2nQ1nstarQ1nstar
6533 - (dMult-6.)*reQ5nQ3nstarQ2nstar
6534 + 3.*reQ6nQ4nstarQ2nstar
6535 + reQ4nQ2nstarQ2nstar
6536 + 2.*reQ4nQ3nstarQ1nstar
6537 + 3.*reQ7nQ4nstarQ3nstar
6538 + reQ3nQ2nstarQ1nstar
6539 + reQ4nQ3nstarQ1nstar
6540 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6541 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6542 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6543 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6544 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6545 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6546 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6547 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6548 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6549 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6550 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6551 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6552 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6553 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6554 // to be polished:
6555 five5n3n5n2n1n = (reQ5nQ3nQ5nstarQ2nstarQ1nstar
6556 - reQ6nQ2nQ5nstarQ3nstar
6557 - reQ7nQ1nQ5nstarQ3nstar
6558 - reQ5nQ1nQ3nstarQ3nstar
6559 - reQ8nQ5nstarQ2nstarQ1nstar
6560 - reQ5nQ2nstarQ2nstarQ1nstar
6561 - reQ5nQ2nQ4nstarQ3nstar
6562 + reQ5nQ4nstarQ1nstar
6563 + reQ8nQ5nstarQ3nstar
6564 + 3.*reQ5nQ3nstarQ2nstar
6565 + 2.*reQ8nQ5nstarQ3nstar
6566 + reQ6nQ3nstarQ3nstar
6567 + reQ8nQ6nstarQ2nstar
6568 + reQ7nQ4nstarQ3nstar
6569 + reQ5nQ4nstarQ1nstar
6570 + reQ8nQ7nstarQ1nstar
6571 + reQ3nQ2nstarQ1nstar
6572 - (dMult-6.)*reQ3nQ2nstarQ1nstar
6573 + 3.*reQ6nQ5nstarQ1nstar
6574 + reQ5nQ4nstarQ1nstar
6575 + 2.*reQ5nQ3nstarQ2nstar
6576 + 3.*reQ7nQ5nstarQ2nstar
6577 + reQ4nQ2nstarQ2nstar
6578 + reQ5nQ3nstarQ2nstar
6579 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6580 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6581 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6582 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6583 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6584 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6585 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6586 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6587 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6588 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6589 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6590 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6591 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6592 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6593 // to be polished:
6594 five5n4n5n2n2n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6595 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
6596 - reQ9nQ5nstarQ2nstarQ2nstar
6597 - reQ5nQ2nstarQ2nstarQ1nstar
6598 - 2.*reQ5nQ2nQ4nstarQ3nstar
6599 - 2.*reQ7nQ2nQ5nstarQ4nstar
6600 + 2.*reQ3nQ2nstarQ1nstar
6601 + reQ9nQ5nstarQ4nstar
6602 + 3.*reQ5nQ4nstarQ1nstar
6603 + 2.*reQ7nQ4nstarQ3nstar
6604 + 2.*reQ9nQ7nstarQ2nstar
6605 + 2.*reQ9nQ5nstarQ4nstar
6606 + 6.*reQ5nQ3nstarQ2nstar
6607 + 6.*reQ7nQ5nstarQ2nstar
6608 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6609 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6610 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6611 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6612 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6613 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6614 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6615 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6616 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6617 // to be polished:
6618 five5n4n5n3n1n = (reQ5nQ4nQ5nstarQ3nstarQ1nstar
6619 - reQ6nQ3nQ5nstarQ4nstar
6620 - reQ8nQ1nQ5nstarQ4nstar
6621 - reQ5nQ1nQ4nstarQ2nstar
6622 - reQ9nQ5nstarQ3nstarQ1nstar
6623 - reQ5nQ3nstarQ1nstarQ1nstar
6624 - reQ5nQ3nQ4nstarQ4nstar
6625 + reQ5nQ4nstarQ1nstar
6626 + reQ9nQ5nstarQ4nstar
6627 + 3.*reQ5nQ4nstarQ1nstar
6628 + 2.*reQ9nQ5nstarQ4nstar
6629 + reQ6nQ4nstarQ2nstar
6630 + reQ9nQ6nstarQ3nstar
6631 + reQ8nQ4nstarQ4nstar
6632 + reQ5nQ4nstarQ1nstar
6633 + reQ9nQ8nstarQ1nstar
6634 + reQ2nQ1nstarQ1nstar
6635 - (dMult-6.)*reQ4nQ3nstarQ1nstar
6636 + 3.*reQ6nQ5nstarQ1nstar
6637 + reQ5nQ4nstarQ1nstar
6638 + 2.*reQ5nQ3nstarQ2nstar
6639 + 3.*reQ8nQ5nstarQ3nstar
6640 + reQ4nQ3nstarQ1nstar
6641 + reQ5nQ3nstarQ2nstar
6642 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6643 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6644 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6645 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6646 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6647 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6648 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6649 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6650 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6651 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6652 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6653 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6654 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6655 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6656 five6n1n3n3n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))
6657 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6658 - 2.*(dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
6659 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
6660 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
6661 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n)
6662 - 2.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6663 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6664 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6665 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6666 - (-pow(dImQ3n,2.)*dImQ1n*dImQ7n+dImQ1n*dImQ7n*pow(dReQ3n,2.)
6667 + 2.*dImQ3n*dImQ7n*dReQ3n*dReQ1n-2.*dImQ3n*dImQ1n*dReQ3n*dReQ7n
6668 - pow(dImQ3n,2.)*dReQ1n*dReQ7n+pow(dReQ3n,2.)*dReQ1n*dReQ7n)
6669 - ((pow(dReQ3n,2.)-pow(dImQ3n,2.))*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)
6670 + 2.*dReQ3n*dImQ3n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6671 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6672 + (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6673 + 2.*(dReQ7n*dReQ3n*dReQ4n-dReQ7n*dImQ3n*dImQ4n+dImQ7n*dReQ3n*dImQ4n+dImQ7n*dImQ3n*dReQ4n)
6674 + 2.*(dReQ6n*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)+dImQ6n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6675 + 3.*(dReQ6n*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)+dImQ6n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6676 + 4.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6677 + 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6678 + 6.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
6679 + 2.*(dReQ5n*dReQ3n*dReQ2n-dReQ5n*dImQ3n*dImQ2n+dImQ5n*dReQ3n*dImQ2n+dImQ5n*dImQ3n*dReQ2n)
6680 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6681 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6682 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6683 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6684 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6685 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6686 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+(dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6687 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6688 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6689 five6n2n3n3n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))
6690 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6691 - 2.*(dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
6692 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
6693 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
6694 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n)
6695 - 2.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6696 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6697 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6698 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6699 - (-pow(dImQ3n,2.)*dImQ2n*dImQ8n+dImQ2n*dImQ8n*pow(dReQ3n,2.)
6700 + 2.*dImQ3n*dImQ8n*dReQ3n*dReQ2n-2.*dImQ3n*dImQ2n*dReQ3n*dReQ8n
6701 - pow(dImQ3n,2.)*dReQ2n*dReQ8n+pow(dReQ3n,2.)*dReQ2n*dReQ8n)
6702 - ((pow(dReQ3n,2.)-pow(dImQ3n,2.))*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)
6703 + 2.*dReQ3n*dImQ3n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6704 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6705 + (dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6706 + 2.*(dReQ8n*dReQ3n*dReQ5n-dReQ8n*dImQ3n*dImQ5n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
6707 + 2.*(dReQ6n*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)+dImQ6n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6708 + 3.*(dReQ6n*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)+dImQ6n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6709 + 4.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6710 + 2.*(dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6711 + 6.*(dReQ5n*dReQ3n*dReQ2n-dReQ5n*dImQ3n*dImQ2n+dImQ5n*dReQ3n*dImQ2n+dImQ5n*dImQ3n*dReQ2n)
6712 + 2.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
6713 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6714 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6715 - 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6716 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6717 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6718 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6719 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6720 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6721 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6722 // to be polished:
6723 five6n1n4n2n1n = (reQ6nQ1nQ4nstarQ2nstarQ1nstar
6724 - reQ6nQ1nQ4nstarQ3nstar
6725 - reQ6nQ1nQ5nstarQ2nstar
6726 - reQ6nQ3nstarQ2nstarQ1nstar
6727 - reQ7nQ4nstarQ2nstarQ1nstar
6728 - reQ5nQ1nQ4nstarQ2nstar
6729 - reQ6nQ4nstarQ1nstarQ1nstar
6730 + reQ2nQ1nstarQ1nstar
6731 + reQ7nQ6nstarQ1nstar
6732 + 3.*reQ6nQ5nstarQ1nstar
6733 + 2.*reQ7nQ6nstarQ1nstar
6734 + reQ6nQ3nstarQ3nstar
6735 + reQ7nQ4nstarQ3nstar
6736 + reQ6nQ5nstarQ1nstar
6737 + reQ2nQ1nstarQ1nstar
6738 + reQ7nQ5nstarQ2nstar
6739 + reQ5nQ3nstarQ2nstar
6740 - (dMult-6.)*reQ6nQ4nstarQ2nstar
6741 + 3.*reQ3nQ2nstarQ1nstar
6742 + reQ2nQ1nstarQ1nstar
6743 + 2.*reQ4nQ3nstarQ1nstar
6744 + 3.*reQ5nQ4nstarQ1nstar
6745 + reQ5nQ4nstarQ1nstar
6746 + reQ4nQ3nstarQ1nstar
6747 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6748 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6749 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6750 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6751 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6752 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6753 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6754 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6755 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6756 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6757 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6758 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6759 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
6760 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6761 // to be polished:
6762 five6n3n4n3n2n = (reQ6nQ3nQ4nstarQ3nstarQ2nstar
6763 - reQ6nQ3nQ5nstarQ4nstar
6764 - reQ7nQ2nQ6nstarQ3nstar
6765 - reQ6nQ3nstarQ2nstarQ1nstar
6766 - reQ9nQ4nstarQ3nstarQ2nstar
6767 - reQ4nQ2nQ3nstarQ3nstar
6768 - reQ6nQ1nQ4nstarQ3nstar
6769 + reQ3nQ2nstarQ1nstar
6770 + reQ9nQ6nstarQ3nstar
6771 + 3.*reQ6nQ3nstarQ3nstar
6772 + 2.*reQ9nQ6nstarQ3nstar
6773 + reQ6nQ5nstarQ1nstar
6774 + reQ9nQ5nstarQ4nstar
6775 + reQ7nQ6nstarQ1nstar
6776 + reQ3nQ2nstarQ1nstar
6777 + reQ9nQ7nstarQ2nstar
6778 + reQ3nQ2nstarQ1nstar
6779 - (dMult-6.)*reQ6nQ4nstarQ2nstar
6780 + 3.*reQ5nQ3nstarQ2nstar
6781 + reQ3nQ2nstarQ1nstar
6782 + 2.*reQ4nQ3nstarQ1nstar
6783 + 3.*reQ7nQ4nstarQ3nstar
6784 + reQ4nQ3nstarQ1nstar
6785 + reQ4nQ3nstarQ1nstar
6786 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6787 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6788 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6789 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6790 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6791 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6792 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6793 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6794 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6795 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6796 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6797 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6798 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6799 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6800 five6n4n4n3n3n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))
6801 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6802 - ((dReQ10n*dReQ4n+dImQ10n*dImQ4n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
6803 + 2.*dReQ3n*dImQ3n*(dImQ10n*dReQ4n-dReQ10n*dImQ4n))
6804 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
6805 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
6806 - 2.*(dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
6807 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
6808 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
6809 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n)
6810 - 2.*(dImQ3n*dImQ4n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ3n*dReQ4n
6811 + dImQ4n*dImQ7n*dReQ3n*dReQ6n-dImQ3n*dImQ7n*dReQ4n*dReQ6n
6812 - dImQ4n*dImQ6n*dReQ3n*dReQ7n+dImQ3n*dImQ6n*dReQ4n*dReQ7n
6813 + dImQ3n*dImQ4n*dReQ6n*dReQ7n+dReQ3n*dReQ4n*dReQ6n*dReQ7n)
6814 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6815 + 1.*(dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n+dImQ10n*dImQ6n*dReQ4n)
6816 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
6817 + 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6818 + 2.*(dReQ10n*dReQ7n*dReQ3n-dReQ10n*dImQ7n*dImQ3n+dImQ10n*dReQ7n*dImQ3n+dImQ10n*dImQ7n*dReQ3n)
6819 + 2.*(dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n+dImQ10n*dImQ6n*dReQ4n)
6820 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6821 + 6.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6822 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6823 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6824 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6825 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6826 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6827 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6828 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6829 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6830 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6831 // to be polished:
6832 five6n2n5n2n1n = (reQ6nQ2nQ5nstarQ2nstarQ1nstar
6833 - reQ6nQ2nQ5nstarQ3nstar
6834 - reQ7nQ1nQ6nstarQ2nstar
6835 - reQ6nQ3nstarQ2nstarQ1nstar
6836 - reQ8nQ5nstarQ2nstarQ1nstar
6837 - reQ5nQ1nQ4nstarQ2nstar
6838 - reQ6nQ1nQ5nstarQ2nstar
6839 + reQ2nQ1nstarQ1nstar
6840 + reQ8nQ6nstarQ2nstar
6841 + 3.*reQ6nQ4nstarQ2nstar
6842 + 2.*reQ8nQ6nstarQ2nstar
6843 + reQ6nQ3nstarQ3nstar
6844 + reQ8nQ5nstarQ3nstar
6845 + reQ7nQ6nstarQ1nstar
6846 + reQ2nQ1nstarQ1nstar
6847 + reQ8nQ7nstarQ1nstar
6848 + reQ4nQ3nstarQ1nstar
6849 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6850 + 3.*reQ3nQ2nstarQ1nstar
6851 + reQ2nQ1nstarQ1nstar
6852 + 2.*reQ5nQ3nstarQ2nstar
6853 + 3.*reQ7nQ5nstarQ2nstar
6854 + reQ5nQ4nstarQ1nstar
6855 + reQ5nQ3nstarQ2nstar
6856 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6857 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6858 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6859 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6860 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6861 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6862 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6863 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6864 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6865 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6866 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6867 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6868 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
6869 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6870 // to be polished:
6871 five6n3n5n3n1n = (reQ6nQ3nQ5nstarQ3nstarQ1nstar
6872 - reQ6nQ3nQ5nstarQ4nstar
6873 - reQ8nQ1nQ6nstarQ3nstar
6874 - reQ6nQ3nstarQ2nstarQ1nstar
6875 - reQ9nQ5nstarQ3nstarQ1nstar
6876 - reQ5nQ1nQ3nstarQ3nstar
6877 - reQ6nQ2nQ5nstarQ3nstar
6878 + reQ3nQ2nstarQ1nstar
6879 + reQ9nQ6nstarQ3nstar
6880 + 3.*reQ6nQ3nstarQ3nstar
6881 + 2.*reQ9nQ6nstarQ3nstar
6882 + reQ6nQ4nstarQ2nstar
6883 + reQ9nQ5nstarQ4nstar
6884 + reQ8nQ6nstarQ2nstar
6885 + reQ3nQ2nstarQ1nstar
6886 + reQ9nQ8nstarQ1nstar
6887 + reQ3nQ2nstarQ1nstar
6888 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6889 + 3.*reQ4nQ3nstarQ1nstar
6890 + reQ3nQ2nstarQ1nstar
6891 + 2.*reQ5nQ3nstarQ2nstar
6892 + 3.*reQ8nQ5nstarQ3nstar
6893 + reQ5nQ3nstarQ2nstar
6894 + reQ5nQ3nstarQ2nstar
6895 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6896 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6897 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6898 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6899 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6900 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6901 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6902 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6903 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6904 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6905 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6906 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6907 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6908 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6909 // to be polished:
6910 five6n4n5n4n1n = (reQ6nQ4nQ5nstarQ4nstarQ1nstar
6911 - reQ6nQ4nQ5nstarQ5nstar
6912 - reQ9nQ1nQ6nstarQ4nstar
6913 - reQ6nQ4nstarQ1nstarQ1nstar
6914 - reQ10nQ5nstarQ4nstarQ1nstar
6915 - reQ5nQ1nQ4nstarQ2nstar
6916 - reQ6nQ3nQ5nstarQ4nstar
6917 + reQ4nQ3nstarQ1nstar
6918 + reQ10nQ6nstarQ4nstar
6919 + 3.*reQ6nQ4nstarQ2nstar
6920 + 2.*reQ10nQ6nstarQ4nstar
6921 + reQ6nQ5nstarQ1nstar
6922 + reQ10nQ5nstarQ5nstar
6923 + reQ9nQ6nstarQ3nstar
6924 + reQ4nQ3nstarQ1nstar
6925 + reQ10nQ9nstarQ1nstar
6926 + reQ2nQ1nstarQ1nstar
6927 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6928 + 3.*reQ5nQ4nstarQ1nstar
6929 + reQ4nQ3nstarQ1nstar
6930 + 2.*reQ5nQ4nstarQ1nstar
6931 + 3.*reQ9nQ5nstarQ4nstar
6932 + reQ5nQ3nstarQ2nstar
6933 + reQ5nQ4nstarQ1nstar
6934 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6935 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6936 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6937 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
6938 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6939 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6940 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6941 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6942 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6943 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6944 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6945 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6946 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6947 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6948 five6n5n5n3n3n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6949 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6950 - ((dReQ11n*dReQ5n+dImQ11n*dImQ5n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
6951 + 2.*dReQ3n*dImQ3n*(dImQ11n*dReQ5n-dReQ11n*dImQ5n))
6952 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
6953 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
6954 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
6955 - 2.*(dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
6956 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
6957 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
6958 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n)
6959 - 2.*(dImQ3n*dImQ5n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ3n*dReQ5n
6960 + dImQ5n*dImQ8n*dReQ3n*dReQ6n-dImQ3n*dImQ8n*dReQ5n*dReQ6n
6961 - dImQ5n*dImQ6n*dReQ3n*dReQ8n+dImQ3n*dImQ6n*dReQ5n*dReQ8n
6962 + dImQ3n*dImQ5n*dReQ6n*dReQ8n+dReQ3n*dReQ5n*dReQ6n*dReQ8n)
6963 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6964 + 1.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n+dImQ11n*dImQ6n*dReQ5n)
6965 + 3.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
6966 + 2.*(dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6967 + 2.*(dReQ11n*dReQ8n*dReQ3n-dReQ11n*dImQ8n*dImQ3n+dImQ11n*dReQ8n*dImQ3n+dImQ11n*dImQ8n*dReQ3n)
6968 + 2.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n+dImQ11n*dImQ6n*dReQ5n)
6969 + 6.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6970 + 6.*(dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n+dImQ8n*dImQ5n*dReQ3n)
6971 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6972 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6973 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6974 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))-4.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6975 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6976 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6977 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6978 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6979 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6980 // to be polished:
6981 five6n2n6n1n1n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))
6982 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6983 - reQ8nQ6nstarQ1nstarQ1nstar
6984 - reQ6nQ4nstarQ1nstarQ1nstar
6985 - 2.*reQ6nQ1nQ5nstarQ2nstar
6986 - 2.*reQ7nQ1nQ6nstarQ2nstar
6987 + 2.*reQ5nQ4nstarQ1nstar
6988 + reQ8nQ6nstarQ2nstar
6989 + 3.*reQ6nQ4nstarQ2nstar
6990 + 2.*reQ7nQ5nstarQ2nstar
6991 + 2.*reQ8nQ7nstarQ1nstar
6992 + 2.*reQ8nQ6nstarQ2nstar
6993 + 6.*reQ6nQ5nstarQ1nstar
6994 + 6.*reQ7nQ6nstarQ1nstar
6995 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6996 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6997 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6998 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6999 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7000 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7001 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7002 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7003 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7004 five6n3n6n2n1n = (reQ6nQ3nQ6nstarQ2nstarQ1nstar
7005 - reQ7nQ2nQ6nstarQ3nstar
7006 - reQ8nQ1nQ6nstarQ3nstar
7007 - reQ6nQ1nQ4nstarQ3nstar
7008 - reQ9nQ6nstarQ2nstarQ1nstar
7009 - reQ6nQ3nstarQ2nstarQ1nstar
7010 - reQ6nQ2nQ5nstarQ3nstar
7011 + reQ6nQ5nstarQ1nstar
7012 + reQ9nQ6nstarQ3nstar
7013 + 3.*reQ6nQ3nstarQ3nstar
7014 + 2.*reQ9nQ6nstarQ3nstar
7015 + reQ7nQ4nstarQ3nstar
7016 + reQ9nQ7nstarQ2nstar
7017 + reQ8nQ5nstarQ3nstar
7018 + reQ6nQ5nstarQ1nstar
7019 + reQ9nQ8nstarQ1nstar
7020 + reQ4nQ3nstarQ1nstar
7021 - (dMult-6.)*reQ3nQ2nstarQ1nstar
7022 + 3.*reQ7nQ6nstarQ1nstar
7023 + reQ6nQ5nstarQ1nstar
7024 + 2.*reQ6nQ4nstarQ2nstar
7025 + 3.*reQ8nQ6nstarQ2nstar
7026 + reQ5nQ3nstarQ2nstar
7027 + reQ6nQ4nstarQ2nstar
7028 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7029 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7030 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7031 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7032 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7033 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7034 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7035 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7036 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7037 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7038 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7039 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7040 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7041 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7042 five6n4n6n2n2n = (-(pow(dImQ6n,2.)+pow(dReQ6n,2.))
7043 * (-2.*dImQ2n*dImQ4n*dReQ2n+pow(dImQ2n,2.)*dReQ4n-pow(dReQ2n,2.)*dReQ4n)
7044 - (-pow(dImQ2n,2.)*dImQ6n*dImQ10n+dImQ6n*dImQ10n*pow(dReQ2n,2.)
7045 + 2.*dImQ2n*dImQ10n*dReQ2n*dReQ6n-2.*dImQ2n*dImQ6n*dReQ2n*dReQ10n
7046 - pow(dImQ2n,2.)*dReQ6n*dReQ10n+pow(dReQ2n,2.)*dReQ6n*dReQ10n)
7047 - 2.*(dImQ2n*dImQ4n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ2n*dReQ4n
7048 + dImQ4n*dImQ8n*dReQ2n*dReQ6n-dImQ2n*dImQ8n*dReQ4n*dReQ6n
7049 - dImQ4n*dImQ6n*dReQ2n*dReQ8n+dImQ2n*dImQ6n*dReQ4n*dReQ8n
7050 + dImQ2n*dImQ4n*dReQ6n*dReQ8n+dReQ2n*dReQ4n*dReQ6n*dReQ8n)
7051 - (dReQ6n*pow(dReQ2n,3.)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2.)
7052 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2.)-dImQ6n*pow(dImQ2n,3.))
7053 - 2.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7054 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7055 + 2.*(dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n+dImQ10n*dImQ8n*dReQ2n)
7056 + 3.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
7057 + 6.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7058 + 2.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7059 + 9.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7060 - (dMult-8.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7061 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7062 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7063 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))-4.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7064 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-12.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7065 + 2.*(dMult-9.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
7066 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7067 // to be polished:
7068 five6n4n6n3n1n = (reQ6nQ4nQ6nstarQ3nstarQ1nstar
7069 - reQ7nQ3nQ6nstarQ4nstar
7070 - reQ9nQ1nQ6nstarQ4nstar
7071 - reQ6nQ1nQ4nstarQ3nstar
7072 - reQ10nQ6nstarQ3nstarQ1nstar
7073 - reQ6nQ3nstarQ2nstarQ1nstar
7074 - reQ6nQ3nQ5nstarQ4nstar
7075 + reQ6nQ5nstarQ1nstar
7076 + reQ10nQ6nstarQ4nstar
7077 + 3.*reQ6nQ4nstarQ2nstar
7078 + 2.*reQ10nQ6nstarQ4nstar
7079 + reQ7nQ4nstarQ3nstar
7080 + reQ10nQ7nstarQ3nstar
7081 + reQ9nQ5nstarQ4nstar
7082 + reQ6nQ5nstarQ1nstar
7083 + reQ10nQ9nstarQ1nstar
7084 + reQ3nQ2nstarQ1nstar
7085 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7086 + 3.*reQ7nQ6nstarQ1nstar
7087 + reQ6nQ5nstarQ1nstar
7088 + 2.*reQ6nQ3nstarQ3nstar
7089 + 3.*reQ9nQ6nstarQ3nstar
7090 + reQ5nQ3nstarQ2nstar
7091 + reQ6nQ3nstarQ3nstar
7092 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7093 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7094 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7095 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7096 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7097 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7098 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7099 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7100 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7101 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7102 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7103 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7104 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7105 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7106 // to be polished:
7107 five6n5n5n4n2n = (reQ6nQ5nQ5nstarQ4nstarQ2nstar
7108 - reQ7nQ4nQ6nstarQ5nstar
7109 - reQ9nQ2nQ6nstarQ5nstar
7110 - reQ6nQ1nQ5nstarQ2nstar
7111 - reQ11nQ5nstarQ4nstarQ2nstar
7112 - reQ5nQ1nQ4nstarQ2nstar
7113 - reQ6nQ3nQ5nstarQ4nstar
7114 + reQ5nQ3nstarQ2nstar
7115 + reQ11nQ6nstarQ5nstar
7116 + 3.*reQ6nQ5nstarQ1nstar
7117 + 2.*reQ11nQ6nstarQ5nstar
7118 + reQ7nQ6nstarQ1nstar
7119 + reQ11nQ7nstarQ4nstar
7120 + reQ9nQ6nstarQ3nstar
7121 + reQ5nQ3nstarQ2nstar
7122 + reQ11nQ9nstarQ2nstar
7123 + reQ2nQ1nstarQ1nstar
7124 - (dMult-6.)*reQ6nQ4nstarQ2nstar
7125 + 3.*reQ7nQ5nstarQ2nstar
7126 + reQ5nQ3nstarQ2nstar
7127 + 2.*reQ5nQ4nstarQ1nstar
7128 + 3.*reQ9nQ5nstarQ4nstar
7129 + reQ4nQ3nstarQ1nstar
7130 + reQ5nQ4nstarQ1nstar
7131 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7132 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7133 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7134 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7135 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7136 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7137 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7138 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7139 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7140 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7141 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7142 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7143 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7144 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7145 // to be polished:
7146 five6n5n6n3n2n = (reQ6nQ5nQ6nstarQ3nstarQ2nstar
7147 - reQ8nQ3nQ6nstarQ5nstar
7148 - reQ9nQ2nQ6nstarQ5nstar
7149 - reQ6nQ2nQ5nstarQ3nstar
7150 - reQ11nQ6nstarQ3nstarQ2nstar
7151 - reQ6nQ3nstarQ2nstarQ1nstar
7152 - reQ6nQ3nQ5nstarQ4nstar
7153 + reQ6nQ4nstarQ2nstar
7154 + reQ11nQ6nstarQ5nstar
7155 + 3.*reQ6nQ5nstarQ1nstar
7156 + 2.*reQ11nQ6nstarQ5nstar
7157 + reQ8nQ5nstarQ3nstar
7158 + reQ11nQ8nstarQ3nstar
7159 + reQ9nQ5nstarQ4nstar
7160 + reQ6nQ4nstarQ2nstar
7161 + reQ11nQ9nstarQ2nstar
7162 + reQ3nQ2nstarQ1nstar
7163 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7164 + 3.*reQ8nQ6nstarQ2nstar
7165 + reQ6nQ4nstarQ2nstar
7166 + 2.*reQ6nQ3nstarQ3nstar
7167 + 3.*reQ9nQ6nstarQ3nstar
7168 + reQ4nQ3nstarQ1nstar
7169 + reQ6nQ3nstarQ3nstar
7170 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7171 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7172 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7173 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7174 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7175 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7176 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7177 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7178 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7179 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7180 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7181 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7182 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7183 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7184 // to be polished:
7185 five6n5n6n4n1n = (reQ6nQ5nQ6nstarQ4nstarQ1nstar
7186 - reQ7nQ4nQ6nstarQ5nstar
7187 - reQ10nQ1nQ6nstarQ5nstar
7188 - reQ6nQ1nQ5nstarQ2nstar
7189 - reQ11nQ6nstarQ4nstarQ1nstar
7190 - reQ6nQ4nstarQ1nstarQ1nstar
7191 - reQ6nQ4nQ5nstarQ5nstar
7192 + reQ6nQ5nstarQ1nstar
7193 + reQ11nQ6nstarQ5nstar
7194 + 3.*reQ6nQ5nstarQ1nstar
7195 + 2.*reQ11nQ6nstarQ5nstar
7196 + reQ7nQ5nstarQ2nstar
7197 + reQ11nQ7nstarQ4nstar
7198 + reQ10nQ5nstarQ5nstar
7199 + reQ6nQ5nstarQ1nstar
7200 + reQ11nQ10nstarQ1nstar
7201 + reQ2nQ1nstarQ1nstar
7202 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7203 + 3.*reQ7nQ6nstarQ1nstar
7204 + reQ6nQ5nstarQ1nstar
7205 + 2.*reQ6nQ4nstarQ2nstar
7206 + 3.*reQ10nQ6nstarQ4nstar
7207 + reQ5nQ4nstarQ1nstar
7208 + reQ6nQ4nstarQ2nstar
7209 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7210 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7211 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7212 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7213 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7214 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7215 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7216 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7217 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7218 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7219 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7220 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7221 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7222 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7223 // f2) Two distinct harmonics (9):
7224 five2n1n1n1n1n = ((dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
7225 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3))
7226 - (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7227 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7228 + 5.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7229 - 3.*(dMult-5.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7230 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7231 - 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7232 + 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7233 - 3.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
7234 + 6.*(2.*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult*(dMult-4.))
7235 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7236 five2n2n2n1n1n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.))+2.*dImQ2n*dReQ1n*dImQ1n)
7237 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7238 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7239 - 2.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7240 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7241 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7242 + 8.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7243 + 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7244 - 2.*(dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7245 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7246 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7247 + 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7248 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7249 + 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7250 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7251 five3n3n2n2n2n = (pow(dReQ2n,3.)*pow(dReQ3n,2.)-3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
7252 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n-2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n
7253 - pow(dReQ2n,3.)*pow(dImQ3n,2.)+3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.)
7254 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7255 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7256 - 3.*((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7257 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7258 - 6.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7259 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7260 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7261 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7262 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7263 + 6.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7264 + 12.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7265 + 6.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7266 - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7267 + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7268 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
7269 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7270 five4n1n1n1n1n = (pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
7271 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n-4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n
7272 - 6.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7273 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7274 - 4.*(dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7275 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7276 + 8.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7277 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7278 + 12.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7279 + 12.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7280 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7281 - 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+24.*dMult)
7282 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7283 five4n2n2n2n2n = ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(pow(dReQ2n,3)-3.*dReQ2n*pow(dImQ2n,2))
7284 + (dReQ4n*dImQ2n+dReQ2n*dImQ4n)*(3.*dImQ2n*pow(dReQ2n,2)-pow(dImQ2n,3))
7285 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7286 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7287 + 5.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7288 - 3.*(dMult-5.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7289 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7290 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7291 + 3.*(dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7292 - 3.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7293 + 6.*(2.*dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult*(dMult-4.))
7294 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7295 five4n4n4n2n2n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(dReQ4n*(pow(dReQ2n,2.)-pow(dImQ2n,2.))+2.*dImQ4n*dReQ2n*dImQ2n)
7296 - ((dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
7297 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n))
7298 - 2.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7299 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7300 + 3.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7301 + 8.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7302 + 2.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7303 - 2.*(dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7304 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))-4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7305 - pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)
7306 + 2.*(3.*dMult-10.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7307 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7308 + 4.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
7309 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7310 five6n3n3n3n3n = ((dReQ6n*dReQ3n-dImQ6n*dImQ3n)*(pow(dReQ3n,3)-3.*dReQ3n*pow(dImQ3n,2))
7311 + (dReQ6n*dImQ3n+dReQ3n*dImQ6n)*(3.*dImQ3n*pow(dReQ3n,2)-pow(dImQ3n,3))
7312 - (dReQ9n*pow(dReQ3n,3)-3.*dReQ3n*dReQ9n*pow(dImQ3n,2)
7313 + 3.*dImQ3n*dImQ9n*pow(dReQ3n,2)-dImQ9n*pow(dImQ3n,3))
7314 + 5.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
7315 - 3.*(dMult-5.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7316 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7317 - 3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7318 + 3.*(dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7319 - 3.*pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)
7320 + 6.*(2.*dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-6.*dMult*(dMult-4.))
7321 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7322 five6n6n4n4n4n = (pow(dReQ4n,3.)*pow(dReQ6n,2.)-3.*dReQ4n*pow(dReQ6n,2.)*pow(dImQ4n,2.)
7323 + 6.*pow(dReQ4n,2.)*dReQ6n*dImQ4n*dImQ6n-2.*dReQ6n*pow(dImQ4n,3.)*dImQ6n
7324 - pow(dReQ4n,3.)*pow(dImQ6n,2.)+3.*dReQ4n*pow(dImQ4n,2.)*pow(dImQ6n,2.)
7325 - (dReQ12n*pow(dReQ4n,3)-3.*dReQ4n*dReQ12n*pow(dImQ4n,2)
7326 + 3.*dImQ4n*dImQ12n*pow(dReQ4n,2)-dImQ12n*pow(dImQ4n,3))
7327 - 3.*((dReQ8n*dReQ4n-dImQ8n*dImQ4n)*(dReQ6n*dReQ6n-dImQ6n*dImQ6n)
7328 + 2.*(dReQ8n*dImQ4n+dImQ8n*dReQ4n)*dReQ6n*dImQ6n)
7329 - 6.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7330 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7331 + 2.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
7332 + 3.*(dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n+dImQ12n*dImQ8n*dReQ4n)
7333 + 6.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7334 + 6.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7335 + 12.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7336 + 6.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7337 - 2.*((pow(dReQ12n,2.)+pow(dImQ12n,2.))+3.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7338 + 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+9.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7339 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-12.*dMult))
7340 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7341 five6n6n6n3n3n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(dReQ6n*(pow(dReQ3n,2.)-pow(dImQ3n,2.))+2.*dImQ6n*dReQ3n*dImQ3n)
7342 - ((dReQ12n*dReQ6n+dImQ12n*dImQ6n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
7343 + 2.*dReQ3n*dImQ3n*(dImQ12n*dReQ6n-dReQ12n*dImQ6n))
7344 - 2.*((pow(dReQ6n,2.)-pow(dImQ6n,2.))*(dReQ9n*dReQ3n-dImQ9n*dImQ3n)
7345 + 2.*dReQ6n*dImQ6n*(dReQ9n*dImQ3n+dImQ9n*dReQ3n))
7346 + 3.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
7347 + 8.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
7348 + 2.*(dReQ12n*(dReQ9n*dReQ3n-dImQ9n*dImQ3n)+dImQ12n*(dReQ9n*dImQ3n+dImQ9n*dReQ3n))
7349 - 2.*(dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7350 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))-4.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7351 - pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)
7352 + 2.*(3.*dMult-10.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7353 - 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7354 + 4.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-4.*dMult*(dMult-6.))
7355 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7356 // f3) Three distinct harmonics (30):
7357 five3n1n2n1n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
7358 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
7359 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7360 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7361 - (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7362 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7363 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7364 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7365 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7366 + pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
7367 - (2.*dMult-13.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
7368 + dImQ3n*dImQ2n*dReQ1n)
7369 + 7.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7370 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7371 + 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7372 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7373 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7374 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7375 - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
7376 + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7377 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7378 five3n2n2n2n1n = ((pow(dImQ2n,2.)+pow(dReQ2n,2.))*(dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
7379 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n)
7380 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
7381 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
7382 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
7383 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
7384 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
7385 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
7386 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
7387 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7388 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7389 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7390 + (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7391 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7392 + dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
7393 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7394 - 2.*(dMult-6.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7395 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7396 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7397 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7398 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7399 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7400 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7401 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7402 five3n3n3n2n1n = ((pow(dImQ3n,2.)+pow(dReQ3n,2.))*(dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
7403 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n)
7404 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
7405 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
7406 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
7407 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
7408 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7409 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
7410 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
7411 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7412 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7413 + dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n
7414 + dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n
7415 + 3.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7416 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7417 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7418 - 2.*(dMult-6.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7419 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7420 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7421 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7422 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(3.*dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7423 - pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7424 + 2.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7425 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7426 five4n1n3n1n1n = (reQ4nQ1nQ3nstarQ1nstarQ1nstar
7427 - reQ4nQ1nQ3nstarQ2nstar
7428 - reQ4nQ1nQ4nstarQ1nstar
7429 - reQ4nQ2nstarQ1nstarQ1nstar
7430 - reQ5nQ3nstarQ1nstarQ1nstar
7431 - reQ3nQ1nQ3nstarQ1nstar
7432 - dMult*reQ4nQ3nstarQ1nstar
7433 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7434 + reQ5nQ4nstarQ1nstar
7435 + 3.*reQ4nQ3nstarQ1nstar
7436 + 2.*reQ5nQ4nstarQ1nstar
7437 + reQ4nQ2nstarQ2nstar
7438 + reQ5nQ3nstarQ2nstar
7439 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7440 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7441 + reQ5nQ4nstarQ1nstar
7442 + reQ3nQ2nstarQ1nstar
7443 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7444 + 3.*reQ2nQ1nstarQ1nstar
7445 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7446 + 2.*reQ3nQ2nstarQ1nstar
7447 + 3.*reQ4nQ3nstarQ1nstar
7448 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7449 + reQ3nQ2nstarQ1nstar
7450 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7451 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7452 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7453 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7454 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7455 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7456 - 2.*dMult*dMult
7457 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7458 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7459 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7460 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7461 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7462 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
7463 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7464 five4n1n1n3n3n = // calculated by Peter Jochumzsen
7465 (pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
7466 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
7467 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
7468 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n+2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
7469 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n+2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n
7470 + 6.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7471 - 1.*(-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
7472 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
7473 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n)
7474 - 1.*((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7475 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7476 + 1.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7477 - 2.*(dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7478 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
7479 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
7480 + 2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7481 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7482 - 2.*(dReQ3n*pow(dReQ1n,3.)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
7483 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2.)-dImQ3n*pow(dImQ1n,3.))
7484 + 10.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7485 + 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
7486 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7487 - 4.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
7488 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
7489 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
7490 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
7491 + 4.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7492 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7493 - 16.*pow(dReQ1n,2.)-16.*pow(dImQ1n,2.)
7494 - 10.*pow(dReQ2n,2.)-10.*pow(dImQ2n,2.)-12.*pow(dReQ3n,2.)-12.*pow(dImQ3n,2.)
7495 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)-4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
7496 - 2.*pow(dReQ6n,2.)-2.*pow(dImQ6n,2.)+24.*dMult)
7497 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7498 // to be polished:
7499 five4n3n3n3n1n = (reQ4nQ3nQ3nstarQ3nstarQ1nstar
7500 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7501 - reQ6nQ1nQ4nstarQ3nstar
7502 - dMult*reQ4nQ3nstarQ1nstar
7503 - reQ7nQ3nstarQ3nstarQ1nstar
7504 - reQ3nQ1nQ3nstarQ1nstar
7505 - reQ4nQ2nQ3nstarQ3nstar
7506 + reQ3nQ2nstarQ1nstar
7507 + reQ7nQ4nstarQ3nstar
7508 + 3.*reQ4nQ3nstarQ1nstar
7509 + 2.*reQ7nQ4nstarQ3nstar
7510 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7511 + reQ7nQ4nstarQ3nstar
7512 + reQ6nQ4nstarQ2nstar
7513 + reQ3nQ2nstarQ1nstar
7514 + reQ7nQ6nstarQ1nstar
7515 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7516 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7517 + 3.*reQ4nQ3nstarQ1nstar
7518 + reQ3nQ2nstarQ1nstar
7519 + 2.*dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7520 + 3.*reQ6nQ3nstarQ3nstar
7521 + reQ3nQ2nstarQ1nstar
7522 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7523 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7524 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7525 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7526 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7527 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7528 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7529 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7530 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7531 - 2.*dMult*dMult
7532 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7533 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7534 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7535 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
7536 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7537
7538 // to be polished:
7539 five4n4n3n3n2n = (reQ4nQ4nQ3nstarQ3nstarQ2nstar
7540 - reQ5nQ3nQ4nstarQ4nstar-reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ4nstarQ4nstar
7541 - reQ4nQ1nQ3nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar
7542 - reQ8nQ3nstarQ3nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
7543 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ8nQ4nstarQ4nstar)
7544 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ6nQ4nstarQ2nstar
7545 + reQ8nQ6nstarQ2nstar+reQ8nQ5nstarQ3nstar+reQ8nQ5nstarQ3nstar
7546 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
7547 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
7548 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7549 + 2.*(reQ6nQ3nstarQ3nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
7550 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar)
7551 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7552 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7553 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
7554 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7555 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7556 + 24.*dMult)
7557 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7558
7559 /*
7560 // correct recursive formula, not needed for the time being.
7561 five4n4n3n3n2n = (reQ4nQ4nQ3nstarQ3nstarQ2nstar
7562 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
7563 * (2.*four4n2n3n3n+4.*four4n1n3n2n+1.*four8n3n3n2n+1.*four6n2n4n4n+2.*four5n3n4n4n)
7564 - dMult*(dMult-1.)*(dMult-2.)
7565 * (4.*three4n3n1n+2.*three4n2n2n+2.*three5n3n2n+1.*three6n3n3n+1.*three8n4n4n
7566 + 4.*three3n2n1n+2.*three2n1n1n+1.*three8n6n2n+2.*three8n5n3n+2.*three6n4n2n+4.*three5n4n1n)
7567 - dMult*(dMult-1.)
7568 * (1.*two2n2n+2.*two3n3n+2.*two4n4n+2.*two5n5n+1.*two6n6n+4.*two1n1n+2.*two2n2n+1.*two8n8n)
7569 - dMult)
7570 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7571 */
7572
7573 // to be polished:
7574 five4n4n4n3n1n = (reQ4nQ4nQ4nstarQ3nstarQ1nstar
7575 - reQ5nQ3nQ4nstarQ4nstar
7576 - reQ7nQ1nQ4nstarQ4nstar
7577 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7578 - reQ8nQ4nstarQ3nstarQ1nstar
7579 - dMult*reQ4nQ3nstarQ1nstar
7580 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7581 + reQ4nQ3nstarQ1nstar
7582 + reQ8nQ4nstarQ4nstar
7583 + 3.*dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7584 + 2.*reQ8nQ4nstarQ4nstar
7585 + reQ5nQ4nstarQ1nstar
7586 + reQ8nQ5nstarQ3nstar
7587 + reQ7nQ4nstarQ3nstar
7588 + reQ4nQ3nstarQ1nstar
7589 + reQ8nQ7nstarQ1nstar
7590 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7591 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7592 + 3.*reQ5nQ4nstarQ1nstar
7593 + reQ4nQ3nstarQ1nstar
7594 + 2.*reQ4nQ3nstarQ1nstar
7595 + 3.*reQ7nQ4nstarQ3nstar
7596 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7597 + reQ4nQ3nstarQ1nstar
7598 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7599 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7600 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7601 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7602 - 2.*dMult*dMult
7603 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7604 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7605 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7606 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7607 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7608 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7609 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7610 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
7611 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7612 // to be polished:
7613 five5n2n1n1n1n = (reQ5nQ2nstarQ1nstarQ1nstarQ1nstar
7614 - reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
7615 - reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar
7616 - reQ3nQ1nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar
7617 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
7618 + reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar
7619 + reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7620 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7621 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7622 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7623 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7624 + 2.*(reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
7625 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7626 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7627 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7628 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7629 - 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7630 + 24.*dMult)
7631 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7632 // to be polished:
7633 five5n1n2n2n2n = (reQ5nQ1nQ2nstarQ2nstarQ2nstar
7634 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar
7635 - reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
7636 - reQ6nQ2nstarQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
7637 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ6nQ5nstarQ1nstar)
7638 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7639 + reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
7640 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7641 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7642 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7643 + 2.*(reQ4nQ2nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ4nQ2nstarQ2nstar)
7644 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7645 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7646 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7647 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7648 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7649 - 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7650 + 24.*dMult)
7651 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7652 // to be polished:
7653 five5n2n3n2n2n = (reQ5nQ2nQ3nstarQ2nstarQ2nstar
7654 - reQ5nQ2nQ4nstarQ3nstar
7655 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7656 - reQ5nQ2nstarQ2nstarQ1nstar
7657 - reQ7nQ3nstarQ2nstarQ2nstar
7658 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7659 - dMult*reQ5nQ3nstarQ2nstar
7660 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7661 + reQ7nQ5nstarQ2nstar
7662 + 3.*reQ5nQ3nstarQ2nstar
7663 + 2.*reQ7nQ5nstarQ2nstar
7664 + reQ5nQ4nstarQ1nstar
7665 + reQ7nQ4nstarQ3nstar
7666 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7667 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7668 + reQ7nQ5nstarQ2nstar
7669 + reQ3nQ2nstarQ1nstar
7670 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7671 + 3.*reQ4nQ2nstarQ2nstar
7672 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7673 + 2.*reQ3nQ2nstarQ1nstar
7674 + 3.*reQ5nQ3nstarQ2nstar
7675 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7676 + reQ3nQ2nstarQ1nstar
7677 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7678 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7679 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7680 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7681 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7682 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7683 - 2.*dMult*dMult
7684 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7685 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7686 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7687 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7688 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7689 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
7690 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7691 // to be polished:
7692 five5n3n3n3n2n = (reQ5nQ3nQ3nstarQ3nstarQ2nstar
7693 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7694 - reQ6nQ2nQ5nstarQ3nstar
7695 - dMult*reQ5nQ3nstarQ2nstar
7696 - reQ8nQ3nstarQ3nstarQ2nstar
7697 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7698 - reQ5nQ1nQ3nstarQ3nstar
7699 + reQ3nQ2nstarQ1nstar
7700 + reQ8nQ5nstarQ3nstar
7701 + 3.*reQ5nQ3nstarQ2nstar
7702 + 2.*reQ8nQ5nstarQ3nstar
7703 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7704 + reQ8nQ5nstarQ3nstar
7705 + reQ6nQ5nstarQ1nstar
7706 + reQ3nQ2nstarQ1nstar
7707 + reQ8nQ6nstarQ2nstar
7708 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7709 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7710 + 3.*reQ5nQ3nstarQ2nstar
7711 + reQ3nQ2nstarQ1nstar
7712 + 2.*dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7713 + 3.*reQ6nQ3nstarQ3nstar
7714 + reQ3nQ2nstarQ1nstar
7715 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7716 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7717 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7718 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7719 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7720 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7721 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7722 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7723 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7724 - 2.*dMult*dMult
7725 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7726 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7727 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7728 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
7729 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7730 // to be polished:
7731 five5n1n4n1n1n = (reQ5nQ1nQ4nstarQ1nstarQ1nstar
7732 - reQ5nQ1nQ4nstarQ2nstar
7733 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7734 - reQ5nQ3nstarQ1nstarQ1nstar
7735 - reQ6nQ4nstarQ1nstarQ1nstar
7736 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7737 - dMult*reQ5nQ4nstarQ1nstar
7738 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7739 + reQ6nQ5nstarQ1nstar
7740 + 3.*reQ5nQ4nstarQ1nstar
7741 + 2.*reQ6nQ5nstarQ1nstar
7742 + reQ5nQ3nstarQ2nstar
7743 + reQ6nQ4nstarQ2nstar
7744 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7745 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7746 + reQ6nQ5nstarQ1nstar
7747 + reQ4nQ3nstarQ1nstar
7748 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7749 + 3.*reQ2nQ1nstarQ1nstar
7750 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7751 + 2.*reQ4nQ3nstarQ1nstar
7752 + 3.*reQ5nQ4nstarQ1nstar
7753 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7754 + reQ4nQ3nstarQ1nstar
7755 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7756 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7757 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7758 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7759 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7760 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7761 - 2.*dMult*dMult
7762 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7763 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7764 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7765 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7766 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7767 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
7768 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7769 // to be polished:
7770 five5n4n3n3n3n = (reQ5nQ4nQ3nstarQ3nstarQ3nstar
7771 - reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar
7772 - reQ5nQ1nQ3nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar
7773 - reQ9nQ3nstarQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar
7774 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ9nQ5nstarQ4nstar)
7775 + reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
7776 + reQ9nQ6nstarQ3nstar+reQ9nQ6nstarQ3nstar+reQ9nQ6nstarQ3nstar
7777 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7778 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7779 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7780 + 2.*(reQ6nQ3nstarQ3nstar+reQ6nQ3nstarQ3nstar+reQ6nQ3nstarQ3nstar)
7781 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
7782 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7783 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7784 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
7785 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7786 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7787 + 24.*dMult)
7788 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7789 // to be polished:
7790 five5n4n4n4n1n = (reQ5nQ4nQ4nstarQ4nstarQ1nstar
7791 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7792 - reQ8nQ1nQ5nstarQ4nstar
7793 - dMult*reQ5nQ4nstarQ1nstar
7794 - reQ9nQ4nstarQ4nstarQ1nstar
7795 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7796 - reQ5nQ3nQ4nstarQ4nstar
7797 + reQ4nQ3nstarQ1nstar
7798 + reQ9nQ5nstarQ4nstar
7799 + 3.*reQ5nQ4nstarQ1nstar
7800 + 2.*reQ9nQ5nstarQ4nstar
7801 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7802 + reQ9nQ5nstarQ4nstar
7803 + reQ8nQ5nstarQ3nstar
7804 + reQ4nQ3nstarQ1nstar
7805 + reQ9nQ8nstarQ1nstar
7806 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7807 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7808 + 3.*reQ5nQ4nstarQ1nstar
7809 + reQ4nQ3nstarQ1nstar
7810 + 2.*dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7811 + 3.*reQ8nQ4nstarQ4nstar
7812 + reQ4nQ3nstarQ1nstar
7813 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7814 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7815 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7816 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7817 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7818 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7819 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7820 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7821 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7822 - 2.*dMult*dMult
7823 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7824 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7825 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7826 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
7827 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7828 // to be polished:
7829 five5n5n4n3n3n = (reQ5nQ5nQ4nstarQ3nstarQ3nstar
7830 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar
7831 - reQ5nQ2nQ4nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
7832 - reQ10nQ4nstarQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
7833 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
7834 + reQ6nQ5nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar
7835 + reQ10nQ7nstarQ3nstar+reQ10nQ6nstarQ4nstar+reQ10nQ7nstarQ3nstar
7836 + reQ6nQ5nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7837 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
7838 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
7839 + 2.*(reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar+reQ6nQ3nstarQ3nstar)
7840 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
7841 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7842 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7843 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
7844 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7845 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7846 + 24.*dMult)
7847 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7848 // to be polished:
7849 five5n5n4n4n2n = (reQ5nQ5nQ4nstarQ4nstarQ2nstar
7850 - reQ6nQ4nQ5nstarQ5nstar-reQ6nQ4nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar
7851 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar
7852 - reQ10nQ4nstarQ4nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar
7853 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ10nQ5nstarQ5nstar)
7854 + reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ8nQ5nstarQ3nstar
7855 + reQ10nQ8nstarQ2nstar+reQ10nQ6nstarQ4nstar+reQ10nQ6nstarQ4nstar
7856 + reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
7857 + reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
7858 + reQ8nQ5nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7859 + 2.*(reQ8nQ4nstarQ4nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar)
7860 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
7861 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7862 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7863 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
7864 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7865 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7866 + 24.*dMult)
7867 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7868 // to be polished:
7869 five5n5n5n3n2n = (reQ5nQ5nQ5nstarQ3nstarQ2nstar
7870 - reQ7nQ3nQ5nstarQ5nstar
7871 - reQ8nQ2nQ5nstarQ5nstar
7872 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7873 - reQ10nQ5nstarQ3nstarQ2nstar
7874 - dMult*reQ5nQ3nstarQ2nstar
7875 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7876 + reQ5nQ3nstarQ2nstar
7877 + reQ10nQ5nstarQ5nstar
7878 + 3.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7879 + 2.*reQ10nQ5nstarQ5nstar
7880 + reQ7nQ5nstarQ2nstar
7881 + reQ10nQ7nstarQ3nstar
7882 + reQ8nQ5nstarQ3nstar
7883 + reQ5nQ3nstarQ2nstar
7884 + reQ10nQ8nstarQ2nstar
7885 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7886 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7887 + 3.*reQ7nQ5nstarQ2nstar
7888 + reQ5nQ3nstarQ2nstar
7889 + 2.*reQ5nQ3nstarQ2nstar
7890 + 3.*reQ8nQ5nstarQ3nstar
7891 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7892 + reQ5nQ3nstarQ2nstar
7893 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7894 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7895 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7896 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7897 - 2.*dMult*dMult
7898 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7899 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7900 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7901 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7902 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7903 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7904 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7905 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7906 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7907 // to be polished:
7908 five5n5n5n4n1n = (reQ5nQ5nQ5nstarQ4nstarQ1nstar
7909 - reQ6nQ4nQ5nstarQ5nstar
7910 - reQ9nQ1nQ5nstarQ5nstar
7911 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7912 - reQ10nQ5nstarQ4nstarQ1nstar
7913 - dMult*reQ5nQ4nstarQ1nstar
7914 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7915 + reQ5nQ4nstarQ1nstar
7916 + reQ10nQ5nstarQ5nstar
7917 + 3.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7918 + 2.*reQ10nQ5nstarQ5nstar
7919 + reQ6nQ5nstarQ1nstar
7920 + reQ10nQ6nstarQ4nstar
7921 + reQ9nQ5nstarQ4nstar
7922 + reQ5nQ4nstarQ1nstar
7923 + reQ10nQ9nstarQ1nstar
7924 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7925 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7926 + 3.*reQ6nQ5nstarQ1nstar
7927 + reQ5nQ4nstarQ1nstar
7928 + 2.*reQ5nQ4nstarQ1nstar
7929 + 3.*reQ9nQ5nstarQ4nstar
7930 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7931 + reQ5nQ4nstarQ1nstar
7932 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7933 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7934 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7935 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7936 - 2.*dMult*dMult
7937 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7938 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7939 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7940 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7941 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7942 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7943 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7944 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7945 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7946 five6n2n2n1n1n = // calculated by Peter Jochumzsen
7947 (pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
7948 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
7949 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
7950 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n+2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
7951 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n-2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n
7952 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7953 + 8.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7954 + 5.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7955 - (-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
7956 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
7957 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n)
7958 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7959 - (dReQ6n*pow(dReQ2n,3.)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2.)
7960 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2.)-dImQ6n*pow(dImQ2n,3.))
7961 + 4.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7962 - 2.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
7963 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7964 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7965 - 2.*(-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
7966 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
7967 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
7968 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7969 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7970 + 4.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
7971 - 4.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
7972 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
7973 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
7974 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
7975 - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.)-14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.)
7976 - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.)-6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)
7977 - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)-6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.)+24.*dMult)
7978 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7979 // to be polished:
7980 five6n3n1n1n1n = (reQ6nQ3nstarQ1nstarQ1nstarQ1nstar
7981 - reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar
7982 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ4nstarQ1nstarQ1nstar
7983 - reQ3nQ1nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar
7984 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar)
7985 + reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
7986 + reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7987 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7988 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7989 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7990 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7991 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
7992 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7993 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
7994 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7995 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7996 - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7997 + 24.*dMult)
53884472 7998 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
e1d101a6 7999
8000
8001 // to be polished:
8002 five6n1n1n4n4n = (reQ6nQ1nQ1nQ4nstarQ4nstar
8003 - reQ6nQ2nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar
8004 - reQ6nQ1nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8005 - reQ8nQ6nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8006 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ8nQ4nstarQ4nstar)
8007 + reQ4nQ2nstarQ2nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar // ?? 1st term
8008 + reQ8nQ7nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ8nQ7nstarQ1nstar
8009 + reQ4nQ2nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8010 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8011 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8012 + 2.*(reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8013 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8014 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8015 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8016 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8017 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8018 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8019 + 24.*dMult)
53884472 8020 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
403e3389 8021
e1d101a6 8022 // to be polished:
8023 five6n1n5n1n1n = (reQ6nQ1nQ5nstarQ1nstarQ1nstar
8024 - reQ6nQ1nQ5nstarQ2nstar
8025 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8026 - reQ6nQ4nstarQ1nstarQ1nstar
8027 - reQ7nQ5nstarQ1nstarQ1nstar
8028 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8029 - dMult*reQ6nQ5nstarQ1nstar
8030 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8031 + reQ7nQ6nstarQ1nstar
8032 + 3.*reQ6nQ5nstarQ1nstar
8033 + 2.*reQ7nQ6nstarQ1nstar
8034 + reQ6nQ4nstarQ2nstar
8035 + reQ7nQ5nstarQ2nstar
8036 + dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8037 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8038 + reQ7nQ6nstarQ1nstar
8039 + reQ5nQ4nstarQ1nstar
8040 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8041 + 3.*reQ2nQ1nstarQ1nstar
8042 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8043 + 2.*reQ5nQ4nstarQ1nstar
8044 + 3.*reQ6nQ5nstarQ1nstar
8045 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8046 + reQ5nQ4nstarQ1nstar
8047 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8048 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8049 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8050 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
8051 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8052 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8053 - 2.*dMult*dMult
8054 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8055 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8056 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8057 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8058 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8059 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
8060 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8061 five6n2n4n2n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
8062 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
8063 - ((dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
8064 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n))
8065 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
8066 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
8067 - ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
8068 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8069 + 4.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8070 + pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n
8071 - (2.*dMult-13.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
8072 + dImQ6n*dImQ4n*dReQ2n)
8073 + 7.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
8074 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
8075 + 2.*(dMult-5.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8076 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8077 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8078 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8079 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
8080 + 2.*(3.*dMult-11.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8081 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8082 five6n4n4n4n2n = ((pow(dImQ4n,2.)+pow(dReQ4n,2.))*(dImQ4n*dImQ6n*dReQ2n+dImQ2n*dImQ6n*dReQ4n
8083 - dImQ2n*dImQ4n*dReQ6n+dReQ2n*dReQ4n*dReQ6n)
8084 - (-pow(dImQ4n,2.)*dImQ2n*dImQ10n+dImQ2n*dImQ10n*pow(dReQ4n,2.)
8085 + 2.*dImQ4n*dImQ10n*dReQ4n*dReQ2n-2.*dImQ4n*dImQ2n*dReQ4n*dReQ10n
8086 - pow(dImQ4n,2.)*dReQ2n*dReQ10n+pow(dReQ4n,2.)*dReQ2n*dReQ10n)
8087 - (dImQ2n*dImQ4n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ2n*dReQ4n
8088 + dImQ4n*dImQ8n*dReQ2n*dReQ6n-dImQ2n*dImQ8n*dReQ4n*dReQ6n
8089 - dImQ4n*dImQ6n*dReQ2n*dReQ8n+dImQ2n*dImQ6n*dReQ4n*dReQ8n
8090 + dImQ2n*dImQ4n*dReQ6n*dReQ8n+dReQ2n*dReQ4n*dReQ6n*dReQ8n)
8091 - ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
8092 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8093 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8094 + (dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n+dImQ10n*dImQ8n*dReQ2n)
8095 + 4.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
8096 + dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n)
8097 + 3.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
8098 - 2.*(dMult-6.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
8099 + 4.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
8100 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8101 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))+2.*(dMult-5.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8102 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8103 - pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8104 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8105 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8106 // to be polished:
8107 five6n2n2n5n5n = (reQ6nQ2nQ2nQ5nstarQ5nstar
8108 - reQ6nQ4nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar
8109 - reQ6nQ2nQ5nstarQ3nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8110 - reQ10nQ6nstarQ2nstarQ2nstar-reQ6nQ2nQ5nstarQ3nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8111 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
8112 + reQ5nQ4nstarQ1nstar+reQ8nQ5nstarQ3nstar+reQ8nQ5nstarQ3nstar
8113 + reQ10nQ8nstarQ2nstar+reQ10nQ6nstarQ4nstar+reQ10nQ8nstarQ2nstar
8114 + reQ5nQ4nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8115 + reQ8nQ5nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8116 + reQ8nQ5nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8117 + 2.*(reQ8nQ6nstarQ2nstar+reQ8nQ6nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8118 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
8119 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8120 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8121 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8122 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8123 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8124 + 24.*dMult)
8125 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8126 // to be polished:
8127 five6n5n5n5n1n = (reQ6nQ5nQ5nstarQ5nstarQ1nstar
8128 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8129 - reQ10nQ1nQ6nstarQ5nstar
8130 - dMult*reQ6nQ5nstarQ1nstar
8131 - reQ11nQ5nstarQ5nstarQ1nstar
8132 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8133 - reQ6nQ4nQ5nstarQ5nstar
8134 + reQ5nQ4nstarQ1nstar
8135 + reQ11nQ6nstarQ5nstar
8136 + 3.*reQ6nQ5nstarQ1nstar
8137 + 2.*reQ11nQ6nstarQ5nstar
8138 + dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8139 + reQ11nQ6nstarQ5nstar
8140 + reQ10nQ6nstarQ4nstar
8141 + reQ5nQ4nstarQ1nstar
8142 + reQ11nQ10nstarQ1nstar
8143 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8144 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8145 + 3.*reQ6nQ5nstarQ1nstar
8146 + reQ5nQ4nstarQ1nstar
8147 + 2.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8148 + 3.*reQ10nQ5nstarQ5nstar
8149 + reQ5nQ4nstarQ1nstar
8150 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8151 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8152 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8153 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8154 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
8155 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8156 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8157 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8158 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8159 - 2.*dMult*dMult
8160 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8161 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8162 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8163 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
8164 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8165 // to be polished:
8166 five6n6n5n5n2n = (reQ6nQ6nQ5nstarQ5nstarQ2nstar
8167 - reQ7nQ5nQ6nstarQ6nstar-reQ7nQ5nQ6nstarQ6nstar-reQ10nQ2nQ6nstarQ6nstar
8168 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ4nQ5nstarQ5nstar
8169 - reQ12nQ5nstarQ5nstarQ2nstar-reQ6nQ4nQ5nstarQ5nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8170 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ12nQ6nstarQ6nstar)
8171 + reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ10nQ6nstarQ4nstar
8172 + reQ12nQ10nstarQ2nstar+reQ12nQ7nstarQ5nstar+reQ12nQ7nstarQ5nstar
8173 + reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ5nQ4nstarQ1nstar
8174 + reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ5nQ4nstarQ1nstar
8175 + reQ10nQ6nstarQ4nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8176 + 2.*(reQ10nQ5nstarQ5nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar)
8177 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar)
8178 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8179 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8180 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ10n,2.)+pow(dImQ10n,2.))
8181 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8182 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8183 + 24.*dMult)
8184 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8185 five6n6n6n4n2n = ((pow(dImQ6n,2.)+pow(dReQ6n,2.))*(dImQ4n*dImQ6n*dReQ2n+dImQ2n*dImQ6n*dReQ4n
8186 - dImQ2n*dImQ4n*dReQ6n+dReQ2n*dReQ4n*dReQ6n)
8187 - (dReQ2n*dReQ4n*dReQ6n*dReQ12n-dReQ6n*dReQ12n*dImQ2n*dImQ4n
8188 - dReQ4n*dReQ12n*dImQ2n*dImQ6n-dReQ2n*dReQ12n*dImQ4n*dImQ6n
8189 + dReQ4n*dReQ6n*dImQ2n*dImQ12n+dReQ2n*dReQ6n*dImQ4n*dImQ12n
8190 + dReQ2n*dReQ4n*dImQ6n*dImQ12n-dImQ2n*dImQ4n*dImQ6n*dImQ12n)
8191 - (dImQ2n*pow(dImQ6n,2.)*dImQ10n+2.*dImQ6n*dImQ10n*dReQ2n*dReQ6n
8192 - dImQ2n*dImQ10n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ2n*dReQ10n
8193 + 2.*dImQ2n*dImQ6n*dReQ6n*dReQ10n+dReQ2n*pow(dReQ6n,2.)*dReQ10n)
8194 - ((dReQ8n*dReQ4n-dImQ8n*dImQ4n)*(dReQ6n*dReQ6n-dImQ6n*dImQ6n)
8195 + 2.*(dReQ8n*dImQ4n+dImQ8n*dReQ4n)*dReQ6n*dImQ6n)
8196 + dReQ12n*dReQ10n*dReQ2n-dReQ12n*dImQ10n*dImQ2n+dImQ12n*dReQ10n*dImQ2n+dImQ12n*dImQ10n*dReQ2n
8197 + dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n+dImQ12n*dImQ8n*dReQ4n
8198 + 3.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
8199 + 4.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
8200 + 4.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8201 - 2.*(dMult-6.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
8202 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8203 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8204 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))-2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8205 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))+2.*(3.*dMult-10.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8206 - pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8207 + 2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8208 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8209 // to be polished (and TBI swap with the one above):
8210 five6n6n6n5n1n = (reQ6nQ6nQ6nstarQ5nstarQ1nstar
8211 - reQ7nQ5nQ6nstarQ6nstar
8212 - reQ11nQ1nQ6nstarQ6nstar
8213 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8214 - reQ12nQ6nstarQ5nstarQ1nstar
8215 - dMult*reQ6nQ5nstarQ1nstar
8216 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8217 + reQ6nQ5nstarQ1nstar
8218 + reQ12nQ6nstarQ6nstar
8219 + 3.*dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8220 + 2.*reQ12nQ6nstarQ6nstar
8221 + reQ7nQ6nstarQ1nstar
8222 + reQ12nQ7nstarQ5nstar
8223 + reQ11nQ6nstarQ5nstar
8224 + reQ6nQ5nstarQ1nstar
8225 + reQ12nQ11nstarQ1nstar
8226 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8227 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8228 + 3.*reQ7nQ6nstarQ1nstar
8229 + reQ6nQ5nstarQ1nstar
8230 + 2.*reQ6nQ5nstarQ1nstar
8231 + 3.*reQ11nQ6nstarQ5nstar
8232 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8233 + reQ6nQ5nstarQ1nstar
8234 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8235 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8236 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8237 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))
8238 - 2.*dMult*dMult
8239 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
8240 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8241 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
8242 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8243 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8244 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8245 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8246 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
8247 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8248 // Four distinct harmonics (11):
8249 // to be polished:
8250 five5n2n3n3n1n = (reQ5nQ2nQ3nstarQ3nstarQ1nstar
8251 - reQ5nQ2nQ4nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar-reQ6nQ1nQ5nstarQ2nstar
8252 - reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar
8253 - reQ7nQ3nstarQ3nstarQ1nstar-reQ4nQ2nQ3nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
8254 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar)
8255 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ6nQ5nstarQ1nstar
8256 + reQ7nQ6nstarQ1nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar
8257 + reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8258 + reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8259 + reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
8260 + 2.*(reQ6nQ3nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8261 + 2.*(reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8262 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8263 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8264 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8265 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8266 - 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8267 + 24.*dMult)
8268 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8269 // to be polished:
8270 five5n1n1n4n3n = (reQ5nQ1nQ1nQ4nstarQ3nstar
8271 - reQ5nQ2nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar
8272 - reQ5nQ1nQ4nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8273 - reQ7nQ5nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar-reQ3nQ1nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar
8274 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ7nQ4nstarQ3nstar)
8275 + reQ4nQ2nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
8276 + reQ7nQ6nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ7nQ6nstarQ1nstar
8277 + reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8278 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8279 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8280 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8281 + 2.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8282 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8283 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8284 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8285 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8286 - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8287 + 24.*dMult)
8288 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8289 // to be polished:
8290 five5n3n4n2n2n = (reQ5nQ3nQ4nstarQ2nstarQ2nstar
8291 - reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ5nstarQ3nstar-reQ6nQ2nQ5nstarQ3nstar
8292 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8293 - reQ8nQ4nstarQ2nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar
8294 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ8nQ5nstarQ3nstar)
8295 + reQ5nQ4nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8296 + reQ8nQ6nstarQ2nstar+reQ8nQ4nstarQ4nstar+reQ8nQ6nstarQ2nstar
8297 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8298 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8299 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8300 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8301 + 2.*(reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8302 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8303 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8304 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8305 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8306 - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8307 + 24.*dMult)
8308 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 8309
e1d101a6 8310 // to be polished!!!:
8311 five5n2n1n4n4n = (reQ5nQ2nQ1nQ4nstarQ4nstar
8312 - reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar
8313 - reQ5nQ1nQ4nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar
8314 - reQ8nQ5nstarQ2nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8315 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ8nQ4nstarQ4nstar)
8316 + reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ7nQ4nstarQ3nstar
8317 + reQ8nQ7nstarQ1nstar+reQ8nQ5nstarQ3nstar+reQ8nQ6nstarQ2nstar
8318 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8319 + reQ6nQ4nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ5nQ3nstarQ2nstar
8320 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8321 + 2.*(reQ7nQ5nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8322 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar)
8323 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8324 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8325 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8326 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8327 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8328 + 24.*dMult)
8329 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
403e3389 8330
e1d101a6 8331
8332 // to be polished:
8333 five6n1n3n2n2n = (reQ6nQ1nQ3nstarQ2nstarQ2nstar
8334 - reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8335 - reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ2nstarQ2nstarQ2nstar-reQ6nQ3nstarQ2nstarQ1nstar
8336 - reQ7nQ3nstarQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
8337 + 2.*(reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ7nQ6nstarQ1nstar)
8338 + reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8339 + reQ7nQ5nstarQ2nstar+reQ7nQ4nstarQ3nstar+reQ7nQ5nstarQ2nstar
8340 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8341 + reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar
8342 + reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar
8343 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8344 + 2.*(reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8345 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8346 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8347 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8348 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8349 - 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8350 + 24.*dMult)
8351 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8352
8353
8354 // to be polished:
8355 five6n3n4n4n1n = (reQ6nQ3nQ4nstarQ4nstarQ1nstar
8356 - reQ8nQ1nQ6nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar
8357 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ2nQ4nstarQ4nstar-reQ6nQ4nstarQ1nstarQ1nstar
8358 - reQ9nQ4nstarQ4nstarQ1nstar-reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ4nQ1nQ3nstarQ2nstar
8359 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ9nQ6nstarQ3nstar)
8360 + reQ8nQ6nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8361 + reQ9nQ5nstarQ4nstar+reQ9nQ8nstarQ1nstar+reQ9nQ5nstarQ4nstar
8362 + reQ8nQ5nstarQ3nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8363 + reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar
8364 + reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar
8365 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ8nQ4nstarQ4nstar)
8366 + 2.*(reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8367 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8368 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8369 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8370 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8371 - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
8372 + 24.*dMult)
8373 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8374
8375 // to be polished:
8376 five6n1n1n5n3n = (reQ6nQ1nQ1nQ5nstarQ3nstar
8377 - reQ6nQ2nQ5nstarQ3nstar-reQ7nQ1nQ5nstarQ3nstar-reQ7nQ1nQ5nstarQ3nstar
8378 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ1nQ5nstarQ2nstar
8379 - reQ8nQ6nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar-reQ3nQ1nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8380 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ8nQ5nstarQ3nstar)
8381 + reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar
8382 + reQ8nQ7nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ8nQ7nstarQ1nstar
8383 + reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8384 + reQ7nQ4nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8385 + reQ7nQ4nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8386 + 2.*(reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8387 + 2.*(reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8388 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8389 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8390 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8391 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8392 - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8393 + 24.*dMult)
8394 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8395 // to be polished:
8396 five6n3n5n2n2n = (reQ6nQ3nQ5nstarQ2nstarQ2nstar
8397 - reQ6nQ3nQ5nstarQ4nstar-reQ7nQ2nQ6nstarQ3nstar-reQ7nQ2nQ6nstarQ3nstar
8398 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ2nstarQ2nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8399 - reQ9nQ5nstarQ2nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar
8400 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ9nQ6nstarQ3nstar)
8401 + reQ6nQ4nstarQ2nstar+reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar
8402 + reQ9nQ7nstarQ2nstar+reQ9nQ5nstarQ4nstar+reQ9nQ7nstarQ2nstar
8403 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8404 + reQ7nQ4nstarQ3nstar+reQ4nQ2nstarQ2nstar+reQ5nQ4nstarQ1nstar
8405 + reQ7nQ4nstarQ3nstar+reQ4nQ2nstarQ2nstar+reQ5nQ4nstarQ1nstar
8406 + 2.*(reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8407 + 2.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8408 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8409 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8410 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8411 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8412 - 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8413 + 24.*dMult)
8414 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8415
8416 // to be polished
8417 five6n5n4n4n3n = (reQ6nQ5nQ4nstarQ4nstarQ3nstar
8418 - reQ7nQ4nQ6nstarQ5nstar-reQ7nQ4nQ6nstarQ5nstar-reQ8nQ3nQ6nstarQ5nstar
8419 - reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ2nQ4nstarQ4nstar
8420 - reQ11nQ4nstarQ4nstarQ3nstar-reQ5nQ3nQ4nstarQ4nstar-reQ5nQ2nQ4nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
8421 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ11nQ6nstarQ5nstar)
8422 + reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar
8423 + reQ11nQ8nstarQ3nstar+reQ11nQ7nstarQ4nstar+reQ11nQ7nstarQ4nstar
8424 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
8425 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
8426 + reQ8nQ5nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
8427 + 2.*(reQ8nQ4nstarQ4nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar)
8428 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
8429 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8430 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8431 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8432 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8433 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8434 + 24.*dMult)
8435 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8436 // to be polished:
8437 five6n3n1n5n5n = (reQ6nQ3nQ1nQ5nstarQ5nstar
8438 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar-reQ9nQ1nQ5nstarQ5nstar
8439 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ3nQ5nstarQ4nstar
8440 - reQ10nQ6nstarQ3nstarQ1nstar-reQ6nQ3nQ5nstarQ4nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ1nQ5nstarQ2nstar
8441 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
8442 + reQ5nQ4nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ9nQ5nstarQ4nstar
8443 + reQ10nQ9nstarQ1nstar+reQ10nQ6nstarQ4nstar+reQ10nQ7nstarQ3nstar
8444 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
8445 + reQ7nQ5nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ6nQ4nstarQ2nstar
8446 + reQ9nQ5nstarQ4nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8447 + 2.*(reQ9nQ6nstarQ3nstar+reQ7nQ6nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8448 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar)
8449 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8450 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8451 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ9n,2.)+pow(dImQ9n,2.))
8452 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8453 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8454 + 24.*dMult)
8455 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8456 // to be polished:
8457 five6n6n5n4n3n = (reQ6nQ6nQ5nstarQ4nstarQ3nstar
8458 - reQ7nQ5nQ6nstarQ6nstar-reQ8nQ4nQ6nstarQ6nstar-reQ9nQ3nQ6nstarQ6nstar
8459 - reQ6nQ2nQ5nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar
8460 - reQ12nQ5nstarQ4nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ2nQ5nstarQ3nstar
8461 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ12nQ6nstarQ6nstar)
8462 + reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ9nQ6nstarQ3nstar
8463 + reQ12nQ9nstarQ3nstar+reQ12nQ7nstarQ5nstar+reQ12nQ8nstarQ4nstar
8464 + reQ7nQ6nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8465 + reQ8nQ6nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8466 + reQ9nQ6nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ5nQ3nstarQ2nstar
8467 + 2.*(reQ9nQ5nstarQ4nstar+reQ8nQ5nstarQ3nstar+reQ7nQ4nstarQ3nstar)
8468 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar)
8469 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8470 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8471 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ9n,2.)+pow(dImQ9n,2.))
8472 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8473 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8474 + 24.*dMult)
8475 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8476 // Five distinct harmonics (3):
8477
8478 // to be polished:
8479 five6n2n4n3n1n = (reQ6nQ2nQ4nstarQ3nstarQ1nstar
8480 - reQ6nQ2nQ4nstarQ4nstar-reQ6nQ2nQ5nstarQ3nstar-reQ7nQ1nQ6nstarQ2nstar
8481 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8482 - reQ8nQ4nstarQ3nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
8483 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ8nQ6nstarQ2nstar)
8484 + 1.*(reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ7nQ6nstarQ1nstar)
8485 + 1.*(reQ8nQ7nstarQ1nstar+reQ8nQ4nstarQ4nstar+reQ8nQ5nstarQ3nstar)
8486 + 1.*(reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8487 + 1.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8488 + 1.*(reQ7nQ5nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar)
8489 + 2.*(reQ7nQ4nstarQ3nstar+reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8490 + 2.*(reQ4nQ2nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar) // 3 - 1
8491 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8492 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8493 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8494 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8495 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8496 + 24.*dMult)
8497 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8498
8499
8500 // to be polished:
8501 five6n2n1n5n4n = (reQ6nQ2nQ1nQ5nstarQ4nstar
8502 - reQ6nQ3nQ5nstarQ4nstar-reQ7nQ2nQ5nstarQ4nstar-reQ8nQ1nQ5nstarQ4nstar
8503 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8504 - reQ9nQ6nstarQ2nstarQ1nstar-reQ6nQ2nQ4nstarQ4nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8505 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ9nQ5nstarQ4nstar)
8506 + reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ8nQ5nstarQ3nstar
8507 + reQ9nQ8nstarQ1nstar+reQ9nQ6nstarQ3nstar+reQ9nQ7nstarQ2nstar
8508 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8509 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8510 + reQ8nQ4nstarQ4nstar+reQ4nQ2nstarQ2nstar+reQ6nQ4nstarQ2nstar
8511 + 2.*(reQ8nQ6nstarQ2nstar+reQ7nQ6nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8512 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar)
8513 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8514 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8515 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8516 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8517 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8518 + 24.*dMult)
8519 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8520
8521
8522
8523 // to be polished:
8524 five6n4n5n3n2n = (reQ6nQ4nQ5nstarQ3nstarQ2nstar
8525 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ6nstarQ4nstar-reQ8nQ2nQ6nstarQ4nstar
8526 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8527 - reQ10nQ5nstarQ3nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ4nQ1nQ3nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar
8528 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+reQ10nQ6nstarQ4nstar)
8529 + 1.*(reQ6nQ5nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar)
8530 + 1.*(reQ10nQ8nstarQ2nstar+reQ10nQ5nstarQ5nstar+reQ10nQ7nstarQ3nstar)
8531 + 1.*(reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8532 + 1.*(reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar)
8533 + 1.*(reQ8nQ4nstarQ4nstar+reQ4nQ3nstarQ1nstar+reQ5nQ4nstarQ1nstar)
8534 + 2.*(reQ8nQ5nstarQ3nstar+reQ7nQ5nstarQ2nstar+reQ5nQ3nstarQ2nstar)
8535 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar) // 3 - 1
8536 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8537 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8538 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8539 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8540 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8541 + 24.*dMult)
8542 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8543
8544
8545
8546 f5pCorrelations->Fill(0.5,five3n2n3n1n1n,d5pMultiplicityWeight);
8547 f5pCorrelations->Fill(1.5,five4n1n2n2n1n,d5pMultiplicityWeight);
8548 f5pCorrelations->Fill(2.5,five4n2n3n2n1n,d5pMultiplicityWeight);
8549 f5pCorrelations->Fill(3.5,five4n3n3n2n2n,d5pMultiplicityWeight);
8550 f5pCorrelations->Fill(4.5,five4n2n4n1n1n,d5pMultiplicityWeight);
8551 f5pCorrelations->Fill(5.5,five4n3n4n2n1n,d5pMultiplicityWeight);
8552 f5pCorrelations->Fill(6.5,five5n1n3n2n1n,d5pMultiplicityWeight);
8553 f5pCorrelations->Fill(7.5,five5n2n5n1n1n,d5pMultiplicityWeight);
8554 f5pCorrelations->Fill(8.5,five5n2n4n2n1n,d5pMultiplicityWeight);
8555 f5pCorrelations->Fill(9.5,five5n3n4n3n1n,d5pMultiplicityWeight);
8556 f5pCorrelations->Fill(10.5,five5n4n4n3n2n,d5pMultiplicityWeight);
8557 f5pCorrelations->Fill(11.5,five5n3n5n2n1n,d5pMultiplicityWeight);
8558 f5pCorrelations->Fill(12.5,five5n4n5n2n2n,d5pMultiplicityWeight);
8559 f5pCorrelations->Fill(13.5,five5n4n5n3n1n,d5pMultiplicityWeight);
8560 f5pCorrelations->Fill(14.5,five6n1n3n3n1n,d5pMultiplicityWeight);
8561 f5pCorrelations->Fill(15.5,five6n2n3n3n2n,d5pMultiplicityWeight);
8562 f5pCorrelations->Fill(16.5,five6n1n4n2n1n,d5pMultiplicityWeight);
8563 f5pCorrelations->Fill(17.5,five6n3n4n3n2n,d5pMultiplicityWeight);
8564 f5pCorrelations->Fill(18.5,five6n4n4n3n3n,d5pMultiplicityWeight);
8565 f5pCorrelations->Fill(19.5,five6n2n5n2n1n,d5pMultiplicityWeight);
8566 f5pCorrelations->Fill(20.5,five6n3n5n3n1n,d5pMultiplicityWeight);
8567 f5pCorrelations->Fill(21.5,five6n4n5n4n1n,d5pMultiplicityWeight);
8568 f5pCorrelations->Fill(22.5,five6n5n5n3n3n,d5pMultiplicityWeight);
8569 f5pCorrelations->Fill(23.5,five6n2n6n1n1n,d5pMultiplicityWeight);
8570 f5pCorrelations->Fill(24.5,five6n3n6n2n1n,d5pMultiplicityWeight);
8571 f5pCorrelations->Fill(25.5,five6n4n6n2n2n,d5pMultiplicityWeight);
8572 f5pCorrelations->Fill(26.5,five6n4n6n3n1n,d5pMultiplicityWeight);
8573 f5pCorrelations->Fill(27.5,five6n5n5n4n2n,d5pMultiplicityWeight);
8574 f5pCorrelations->Fill(28.5,five6n5n6n3n2n,d5pMultiplicityWeight);
8575 f5pCorrelations->Fill(29.5,five6n5n6n4n1n,d5pMultiplicityWeight);
8576 //f5pCorrelations->Fill(30.5,-44.,d5pMultiplicityWeight);
8577 f5pCorrelations->Fill(31.5,five2n1n1n1n1n,d5pMultiplicityWeight);
8578 f5pCorrelations->Fill(32.5,five2n2n2n1n1n,d5pMultiplicityWeight);
8579 f5pCorrelations->Fill(33.5,five3n3n2n2n2n,d5pMultiplicityWeight);
8580 f5pCorrelations->Fill(34.5,five4n1n1n1n1n,d5pMultiplicityWeight);
8581 f5pCorrelations->Fill(35.5,five4n2n2n2n2n,d5pMultiplicityWeight);
8582 f5pCorrelations->Fill(36.5,five4n4n4n2n2n,d5pMultiplicityWeight);
8583 f5pCorrelations->Fill(37.5,five6n3n3n3n3n,d5pMultiplicityWeight);
8584 f5pCorrelations->Fill(38.5,five6n6n4n4n4n,d5pMultiplicityWeight);
8585 f5pCorrelations->Fill(39.5,five6n6n6n3n3n,d5pMultiplicityWeight);
8586 //f5pCorrelations->Fill(40.5,-44.,d5pMultiplicityWeight);
8587 f5pCorrelations->Fill(41.5,five3n1n2n1n1n,d5pMultiplicityWeight);
8588 f5pCorrelations->Fill(42.5,five3n2n2n2n1n,d5pMultiplicityWeight);
8589 f5pCorrelations->Fill(43.5,five3n3n3n2n1n,d5pMultiplicityWeight);
8590 f5pCorrelations->Fill(44.5,five4n1n3n1n1n,d5pMultiplicityWeight);
8591 f5pCorrelations->Fill(45.5,five4n1n1n3n3n,d5pMultiplicityWeight);
8592 f5pCorrelations->Fill(46.5,five4n3n3n3n1n,d5pMultiplicityWeight);
8593 f5pCorrelations->Fill(47.5,five4n4n3n3n2n,d5pMultiplicityWeight);
8594 f5pCorrelations->Fill(48.5,five4n4n4n3n1n,d5pMultiplicityWeight);
8595 f5pCorrelations->Fill(49.5,five5n2n1n1n1n,d5pMultiplicityWeight);
8596 f5pCorrelations->Fill(50.5,five5n1n2n2n2n,d5pMultiplicityWeight);
8597 f5pCorrelations->Fill(51.5,five5n2n3n2n2n,d5pMultiplicityWeight);
8598 f5pCorrelations->Fill(52.5,five5n3n3n3n2n,d5pMultiplicityWeight);
8599 f5pCorrelations->Fill(53.5,five5n1n4n1n1n,d5pMultiplicityWeight);
8600 f5pCorrelations->Fill(54.5,five5n4n3n3n3n,d5pMultiplicityWeight);
8601 f5pCorrelations->Fill(55.5,five5n4n4n4n1n,d5pMultiplicityWeight);
8602 f5pCorrelations->Fill(56.5,five5n5n4n3n3n,d5pMultiplicityWeight);
8603 f5pCorrelations->Fill(57.5,five5n5n4n4n2n,d5pMultiplicityWeight);
8604 f5pCorrelations->Fill(58.5,five5n5n5n3n2n,d5pMultiplicityWeight);
8605 f5pCorrelations->Fill(59.5,five5n5n5n4n1n,d5pMultiplicityWeight);
8606 f5pCorrelations->Fill(60.5,five6n2n2n1n1n,d5pMultiplicityWeight);
8607 f5pCorrelations->Fill(61.5,five6n3n1n1n1n,d5pMultiplicityWeight);
8608 f5pCorrelations->Fill(62.5,five6n1n1n4n4n,d5pMultiplicityWeight);
8609 f5pCorrelations->Fill(63.5,five6n1n5n1n1n,d5pMultiplicityWeight);
8610 f5pCorrelations->Fill(64.5,five6n2n4n2n2n,d5pMultiplicityWeight);
8611 f5pCorrelations->Fill(65.5,five6n4n4n4n2n,d5pMultiplicityWeight);
8612 f5pCorrelations->Fill(66.5,five6n2n2n5n5n,d5pMultiplicityWeight);
8613 f5pCorrelations->Fill(67.5,five6n5n5n5n1n,d5pMultiplicityWeight);
8614 f5pCorrelations->Fill(68.5,five6n6n5n5n2n,d5pMultiplicityWeight);
8615 f5pCorrelations->Fill(69.5,five6n6n6n4n2n,d5pMultiplicityWeight);
8616 f5pCorrelations->Fill(70.5,five6n6n6n5n1n,d5pMultiplicityWeight);
8617 //f5pCorrelations->Fill(71.5,-44.,d5pMultiplicityWeight);
8618 f5pCorrelations->Fill(72.5,five5n2n3n3n1n,d5pMultiplicityWeight);
8619 f5pCorrelations->Fill(73.5,five5n1n1n4n3n,d5pMultiplicityWeight);
8620 f5pCorrelations->Fill(74.5,five5n3n4n2n2n,d5pMultiplicityWeight);
8621 f5pCorrelations->Fill(75.5,five5n2n1n4n4n,d5pMultiplicityWeight);
8622 f5pCorrelations->Fill(76.5,five6n1n3n2n2n,d5pMultiplicityWeight);
8623 f5pCorrelations->Fill(77.5,five6n3n4n4n1n,d5pMultiplicityWeight);
8624 f5pCorrelations->Fill(78.5,five6n1n1n5n3n,d5pMultiplicityWeight);
8625 f5pCorrelations->Fill(79.5,five6n3n5n2n2n,d5pMultiplicityWeight);
8626 f5pCorrelations->Fill(80.5,five6n5n4n4n3n,d5pMultiplicityWeight);
8627 f5pCorrelations->Fill(81.5,five6n3n1n5n5n,d5pMultiplicityWeight);
8628 f5pCorrelations->Fill(82.5,five6n6n5n4n3n,d5pMultiplicityWeight);
8629 //f5pCorrelations->Fill(83.5,-44.,d5pMultiplicityWeight);
8630 f5pCorrelations->Fill(84.5,five6n2n4n3n1n,d5pMultiplicityWeight);
8631 f5pCorrelations->Fill(85.5,five6n2n1n5n4n,d5pMultiplicityWeight);
8632 f5pCorrelations->Fill(86.5,five6n4n5n3n2n,d5pMultiplicityWeight);
c10259fb 8633 allMixedCorrelators[56]=five3n2n3n1n1n;
8634 allMixedCorrelators[57]=five4n1n2n2n1n;
8635 allMixedCorrelators[58]=five4n2n3n2n1n;
8636 allMixedCorrelators[59]=five4n3n3n2n2n;
8637 allMixedCorrelators[60]=five4n2n4n1n1n;
8638 allMixedCorrelators[61]=five4n3n4n2n1n;
8639 allMixedCorrelators[62]=five5n1n3n2n1n;
8640 allMixedCorrelators[63]=five5n2n5n1n1n;
8641 allMixedCorrelators[64]=five5n2n4n2n1n;
8642 allMixedCorrelators[65]=five5n3n4n3n1n;
8643 allMixedCorrelators[66]=five5n4n4n3n2n;
8644 allMixedCorrelators[67]=five5n3n5n2n1n;
8645 allMixedCorrelators[68]=five5n4n5n2n2n;
8646 allMixedCorrelators[69]=five5n4n5n3n1n;
8647 allMixedCorrelators[70]=five6n1n3n3n1n;
8648 allMixedCorrelators[71]=five6n2n3n3n2n;
8649 allMixedCorrelators[72]=five6n1n4n2n1n;
8650 allMixedCorrelators[73]=five6n3n4n3n2n;
8651 allMixedCorrelators[74]=five6n4n4n3n3n;
8652 allMixedCorrelators[75]=five6n2n5n2n1n;
8653 allMixedCorrelators[76]=five6n3n5n3n1n;
8654 allMixedCorrelators[77]=five6n4n5n4n1n;
8655 allMixedCorrelators[78]=five6n5n5n3n3n;
8656 allMixedCorrelators[79]=five6n2n6n1n1n;
8657 allMixedCorrelators[80]=five6n3n6n2n1n;
8658 allMixedCorrelators[81]=five6n4n6n2n2n;
8659 allMixedCorrelators[82]=five6n4n6n3n1n;
8660 allMixedCorrelators[83]=five6n5n5n4n2n;
8661 allMixedCorrelators[84]=five6n5n6n3n2n;
8662 allMixedCorrelators[85]=five6n5n6n4n1n;
8663 allMixedCorrelators[86]=five2n1n1n1n1n;
8664 allMixedCorrelators[87]=five2n2n2n1n1n;
8665 allMixedCorrelators[88]=five3n3n2n2n2n;
8666 allMixedCorrelators[89]=five4n1n1n1n1n;
8667 allMixedCorrelators[90]=five4n2n2n2n2n;
8668 allMixedCorrelators[91]=five4n4n4n2n2n;
8669 allMixedCorrelators[92]=five6n3n3n3n3n;
8670 allMixedCorrelators[93]=five6n6n4n4n4n;
8671 allMixedCorrelators[94]=five6n6n6n3n3n;
8672 allMixedCorrelators[95]=five3n1n2n1n1n;
8673 allMixedCorrelators[96]=five3n2n2n2n1n;
8674 allMixedCorrelators[97]=five3n3n3n2n1n;
8675 allMixedCorrelators[98]=five4n1n3n1n1n;
8676 allMixedCorrelators[99]=five4n1n1n3n3n;
8677 allMixedCorrelators[100]=five4n3n3n3n1n;
8678 allMixedCorrelators[101]=five4n4n3n3n2n;
8679 allMixedCorrelators[102]=five4n4n4n3n1n;
8680 allMixedCorrelators[103]=five5n2n1n1n1n;
8681 allMixedCorrelators[104]=five5n1n2n2n2n;
8682 allMixedCorrelators[105]=five5n2n3n2n2n;
8683 allMixedCorrelators[106]=five5n3n3n3n2n;
8684 allMixedCorrelators[107]=five5n1n4n1n1n;
8685 allMixedCorrelators[108]=five5n4n3n3n3n;
8686 allMixedCorrelators[109]=five5n4n4n4n1n;
8687 allMixedCorrelators[110]=five5n5n4n3n3n;
8688 allMixedCorrelators[111]=five5n5n4n4n2n;
8689 allMixedCorrelators[112]=five5n5n5n3n2n;
8690 allMixedCorrelators[113]=five5n5n5n4n1n;
8691 allMixedCorrelators[114]=five6n2n2n1n1n;
8692 allMixedCorrelators[115]=five6n3n1n1n1n;
8693 allMixedCorrelators[116]=five6n1n1n4n4n;
8694 allMixedCorrelators[117]=five6n1n5n1n1n;
8695 allMixedCorrelators[118]=five6n2n4n2n2n;
8696 allMixedCorrelators[119]=five6n4n4n4n2n;
8697 allMixedCorrelators[120]=five6n2n2n5n5n;
8698 allMixedCorrelators[121]=five6n5n5n5n1n;
8699 allMixedCorrelators[122]=five6n6n5n5n2n;
8700 allMixedCorrelators[123]=five6n6n6n4n2n;
8701 allMixedCorrelators[124]=five6n6n6n5n1n;
8702 allMixedCorrelators[125]=five5n2n3n3n1n;
8703 allMixedCorrelators[126]=five5n1n1n4n3n;
8704 allMixedCorrelators[127]=five5n3n4n2n2n;
8705 allMixedCorrelators[128]=five5n2n1n4n4n;
8706 allMixedCorrelators[129]=five6n1n3n2n2n;
8707 allMixedCorrelators[130]=five6n3n4n4n1n;
8708 allMixedCorrelators[131]=five6n1n1n5n3n;
8709 allMixedCorrelators[132]=five6n3n5n2n2n;
8710 allMixedCorrelators[133]=five6n5n4n4n3n;
8711 allMixedCorrelators[134]=five6n3n1n5n5n;
8712 allMixedCorrelators[135]=five6n6n5n4n3n;
8713 allMixedCorrelators[136]=five6n2n4n3n1n;
8714 allMixedCorrelators[137]=five6n2n1n5n4n;
8715 allMixedCorrelators[138]=five6n4n5n3n2n;
e1d101a6 8716 } // end of if(dMult>4.)
b84464d3 8717
c10259fb 8718 // Products of mixed harmonics:
8719 Double_t dwx=0.;
8720 Double_t dwy=0.;
8721 for(Int_t x=1;x<=139;x++)
8722 {
8723 if(x>=1 && x<7)
8724 {
8725 dwx=d2pMultiplicityWeight;
8726 } else if(x>=7 && x<16)
8727 {
8728 dwx=d3pMultiplicityWeight;
8729 } else if(x>=16 && x<57)
8730 {
8731 dwx=d4pMultiplicityWeight;
8732 } else if(x>=57 && x<140)
8733 {
8734 dwx=d5pMultiplicityWeight;
8735 }
8736 for(Int_t y=x+1;y<=139;y++)
8737 {
8738 if(y>=1 && y<7)
8739 {
8740 dwy=d2pMultiplicityWeight;
8741 } else if(y>=7 && y<16)
8742 {
8743 dwy=d3pMultiplicityWeight;
8744 } else if(y>=16 && y<57)
8745 {
8746 dwy=d4pMultiplicityWeight;
8747 } else if(y>=57 && y<140)
8748 {
8749 dwy=d5pMultiplicityWeight;
8750 }
8751 fMixedHarmonicProductOfCorrelations->Fill(x-0.5,y-0.5,allMixedCorrelators[x-1]*allMixedCorrelators[y-1],dwx*dwy);
8752 } // end of for(Int_t y=x+1;y<=139;y++)
8753 } // end of for(Int_t x=1;x<=139;x++)
e1d101a6 8754
8755} // end of void AliFlowAnalysisWithQCumulants::CalculateMixedHarmonics()
489d5531 8756
e1d101a6 8757//===================================================================================================================
8758
8759void AliFlowAnalysisWithQCumulants::CalculateCumulantsMixedHarmonics()
8760{
8761 // Calculate in this method all multi-particle cumulants for azimuthal correlations in mixed harmonics.
8762 // (Remark: For completeness sake, we also calculate here again cumulants in the same harmonic.)
8763
8764 // a) Calculate 2-p cumulants;
8765 // b) Calculate 3-p cumulants;
8766 // c) Calculate 4-p cumulants;
8767 // d) Calculate 5-p cumulants.
8768
8769 // a) Calculate 2-p cumulants:
8770 for(Int_t b=1;b<=6;b++)
8771 {
8772 f2pCumulants->SetBinContent(b,f2pCorrelations->GetBinContent(b));
c10259fb 8773 Double_t dSumWLinear = 0.; // sum of linear event weights
8774 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
8775 Double_t dSpread = 0.; // weighted and biased estimator for sigma
8776 Double_t dError = 0.; // weighted and unbiased estimator for error
8777 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8778 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8779 dSpread = f2pCorrelations->GetBinError(b);
8780 if(pow(dSumWLinear,2.)>dSumWQuadratic)
8781 {
8782 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
8783 f2pCumulants->SetBinError(b,dError);
8784 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 8785 } // end of for(Int_t b=1;b<=6;b++)
8786
8787 // b) Calculate 3-p cumulants:
8788 for(Int_t b=1;b<=10;b++)
8789 {
8790 f3pCumulants->SetBinContent(b,f3pCorrelations->GetBinContent(b));
c10259fb 8791 Double_t dSumWLinear = 0.; // sum of linear event weights
8792 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
8793 Double_t dSpread = 0.; // weighted and biased estimator for sigma
8794 Double_t dError = 0.; // weighted and unbiased estimator for sigma
8795 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(3);
8796 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(3);
8797 dSpread = f3pCorrelations->GetBinError(b);
8798 if(pow(dSumWLinear,2.)>dSumWQuadratic)
8799 {
8800 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
8801 f3pCumulants->SetBinError(b,dError);
8802 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 8803 } // end of for(Int_t b=1;b<=10;b++)
8804
8805 // c) Calculate 4-p cumulants:
8806 // c1) "Single harmonic":
8807 for(Int_t b=1;b<=6;b++)
8808 {
8809 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b)-2.*pow(f2pCorrelations->GetBinContent(b),2.));
c10259fb 8810 Double_t dSumWLinearTwo = 0.; // sum of linear event weights for <2>
8811 Double_t dSumWQuadraticTwo = 0.; // sum of quadratic event weights <2>
8812 Double_t dSpreadTwo = 0.; // weighted and biased estimator for sigma of <2>
8813 Double_t dSumWLinearFour = 0.; // sum of linear event weights for <4>
8814 Double_t dSumWQuadraticFour = 0.; // sum of quadratic event weights <4>
8815 Double_t dSpreadFour = 0.; // weighted and biased estimator for sigma of <4>
8816 dSumWLinearTwo = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8817 dSumWQuadraticTwo = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8818 dSpreadTwo = f2pCorrelations->GetBinError(b);
8819 dSumWLinearFour = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8820 dSumWQuadraticFour = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8821 dSpreadFour = f4pCorrelations->GetBinError(b);
8822 if(pow(dSumWLinearTwo,2.)>dSumWQuadraticTwo && pow(dSumWLinearFour,2.)>dSumWQuadraticFour)
8823 {
8824 Double_t dError = 16.*pow(f2pCorrelations->GetBinContent(b),2.)
8825 * pow((pow(dSumWQuadraticTwo,0.5)/dSumWLinearTwo)*dSpreadTwo*pow(pow(dSumWLinearTwo,2.)/(pow(dSumWLinearTwo,2.)-dSumWQuadraticTwo),0.5),2.)
8826 + pow((pow(dSumWQuadraticFour,0.5)/dSumWLinearFour)*dSpreadFour*pow(pow(dSumWLinearFour,2.)/(pow(dSumWLinearFour,2.)-dSumWQuadraticFour),0.5),2.)
8827 - 8.*f2pCorrelations->GetBinContent(b)
8828 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8829 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(b,b+15))
8830 - f2pCorrelations->GetBinContent(b)*f4pCorrelations->GetBinContent(b))
8831 / (dSumWLinearTwo*dSumWLinearFour-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8832 if(dError>0.)
8833 {
8834 f4pCumulants->SetBinError(b,pow(dError,0.5));
8835 }
8836 } // end of if(pow(dSumWLinearTwo,2.)>dSumWQuadraticTwo && pow(dSumWLinearFour,2.)>dSumWQuadraticFour)
e1d101a6 8837 } // end of for(Int_t b=1;b<=6;b++)
8838 // c2) "Standard candles":
c10259fb 8839 // <4>_{2n,1n|2n,1n}:
e1d101a6 8840 f4pCumulants->SetBinContent(8,f4pCorrelations->GetBinContent(8)-f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1));
c10259fb 8841 {
8842 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8843 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8844 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8845 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
8846 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
8847 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
8848 Double_t dSumWLinearFour2n1n2n1n = 0.; // sum of linear event weights for <4>
8849 Double_t dSumWQuadraticFour2n1n2n1n = 0.; // sum of quadratic event weights <4>
8850 Double_t dSpreadFour2n1n2n1n = 0.; // weighted and biased estimator for sigma of <4>
8851 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8852 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8853 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
8854 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8855 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8856 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
8857 dSumWLinearFour2n1n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8858 dSumWQuadraticFour2n1n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8859 dSpreadFour2n1n2n1n = f4pCorrelations->GetBinError(8);
8860 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
8861 pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
8862 pow(dSumWLinearFour2n1n2n1n,2.)>dSumWQuadraticFour2n1n2n1n)
8863 {
8864 Double_t dError = pow(f2pCorrelations->GetBinContent(2),2.)
8865 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
8866 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
8867 + pow(f2pCorrelations->GetBinContent(1),2.)
8868 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
8869 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
8870 + pow((pow(dSumWQuadraticFour2n1n2n1n,0.5)/dSumWLinearFour2n1n2n1n)
8871 * dSpreadFour2n1n2n1n*pow(pow(dSumWLinearFour2n1n2n1n,2.)/(pow(dSumWLinearFour2n1n2n1n,2.)-dSumWQuadraticFour2n1n2n1n),0.5),2.)
8872 + 2.*f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1)
8873 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8874 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,2))
8875 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2))
8876 / (dSumWLinearTwo1n1n*dSumWLinearTwo2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8877 - 2.*f2pCorrelations->GetBinContent(2)
8878 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8879 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,22))
8880 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(8))
8881 / (dSumWLinearTwo1n1n*dSumWLinearFour2n1n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8882 - 2.*f2pCorrelations->GetBinContent(1)
8883 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8884 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,22))
8885 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(8))
8886 / (dSumWLinearTwo2n2n*dSumWLinearFour2n1n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8887 if(dError>0.)
8888 {
8889 f4pCumulants->SetBinError(8,pow(dError,0.5));
8890 }
8891 } // end of if(...)
8892 } // end of {
8893 // <4>_{3n,1n|3n,1n}:
e1d101a6 8894 f4pCumulants->SetBinContent(9,f4pCorrelations->GetBinContent(9)-f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1));
c10259fb 8895 {
8896 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8897 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8898 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8899 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
8900 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
8901 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
8902 Double_t dSumWLinearFour3n1n3n1n = 0.; // sum of linear event weights for <4>
8903 Double_t dSumWQuadraticFour3n1n3n1n = 0.; // sum of quadratic event weights <4>
8904 Double_t dSpreadFour3n1n3n1n = 0.; // weighted and biased estimator for sigma of <4>
8905 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8906 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8907 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
8908 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8909 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8910 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
8911 dSumWLinearFour3n1n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8912 dSumWQuadraticFour3n1n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8913 dSpreadFour3n1n3n1n = f4pCorrelations->GetBinError(9);
8914 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
8915 pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
8916 pow(dSumWLinearFour3n1n3n1n,2.)>dSumWQuadraticFour3n1n3n1n)
8917 {
8918 Double_t dError = pow(f2pCorrelations->GetBinContent(3),2.)
8919 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
8920 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
8921 + pow(f2pCorrelations->GetBinContent(1),2.)
8922 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
8923 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
8924 + pow((pow(dSumWQuadraticFour3n1n3n1n,0.5)/dSumWLinearFour3n1n3n1n)
8925 * dSpreadFour3n1n3n1n*pow(pow(dSumWLinearFour3n1n3n1n,2.)/(pow(dSumWLinearFour3n1n3n1n,2.)-dSumWQuadraticFour3n1n3n1n),0.5),2.)
8926 + 2.*f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1)
8927 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8928 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,3))
8929 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3))
8930 / (dSumWLinearTwo1n1n*dSumWLinearTwo3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8931 - 2.*f2pCorrelations->GetBinContent(3)
8932 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8933 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,23))
8934 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(9))
8935 / (dSumWLinearTwo1n1n*dSumWLinearFour3n1n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8936 - 2.*f2pCorrelations->GetBinContent(1)
8937 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8938 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,23))
8939 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(9))
8940 / (dSumWLinearTwo3n3n*dSumWLinearFour3n1n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8941 if(dError>0.)
8942 {
8943 f4pCumulants->SetBinError(9,pow(dError,0.5));
8944 }
8945 } // end of if(...)
8946 } // end of {
8947 // <4>_{3n,2n|3n,2n}:
e1d101a6 8948 f4pCumulants->SetBinContent(10,f4pCorrelations->GetBinContent(10)-f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2));
c10259fb 8949 {
8950 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
8951 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
8952 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
8953 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
8954 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
8955 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
8956 Double_t dSumWLinearFour3n2n3n2n = 0.; // sum of linear event weights for <4>
8957 Double_t dSumWQuadraticFour3n2n3n2n = 0.; // sum of quadratic event weights <4>
8958 Double_t dSpreadFour3n2n3n2n = 0.; // weighted and biased estimator for sigma of <4>
8959 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8960 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8961 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
8962 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8963 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8964 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
8965 dSumWLinearFour3n2n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8966 dSumWQuadraticFour3n2n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8967 dSpreadFour3n2n3n2n = f4pCorrelations->GetBinError(10);
8968 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
8969 pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
8970 pow(dSumWLinearFour3n2n3n2n,2.)>dSumWQuadraticFour3n2n3n2n)
8971 {
8972 Double_t dError = pow(f2pCorrelations->GetBinContent(3),2.)
8973 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
8974 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
8975 + pow(f2pCorrelations->GetBinContent(2),2.)
8976 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
8977 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
8978 + pow((pow(dSumWQuadraticFour3n2n3n2n,0.5)/dSumWLinearFour3n2n3n2n)
8979 * dSpreadFour3n2n3n2n*pow(pow(dSumWLinearFour3n2n3n2n,2.)/(pow(dSumWLinearFour3n2n3n2n,2.)-dSumWQuadraticFour3n2n3n2n),0.5),2.)
8980 + 2.*f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2)
8981 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8982 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,3))
8983 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3))
8984 / (dSumWLinearTwo2n2n*dSumWLinearTwo3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8985 - 2.*f2pCorrelations->GetBinContent(3)
8986 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8987 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,24))
8988 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(10))
8989 / (dSumWLinearTwo2n2n*dSumWLinearFour3n2n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8990 - 2.*f2pCorrelations->GetBinContent(2)
8991 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8992 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,24))
8993 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(10))
8994 / (dSumWLinearTwo3n3n*dSumWLinearFour3n2n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8995 if(dError>0.)
8996 {
8997 f4pCumulants->SetBinError(10,pow(dError,0.5));
8998 }
8999 } // end of if(...)
9000 } // end of {
9001 // <4>_{4n,1n|4n,1n}
e1d101a6 9002 f4pCumulants->SetBinContent(11,f4pCorrelations->GetBinContent(11)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(1));
c10259fb 9003 {
9004 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9005 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9006 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9007 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9008 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9009 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9010 Double_t dSumWLinearFour4n1n4n1n = 0.; // sum of linear event weights for <4>
9011 Double_t dSumWQuadraticFour4n1n4n1n = 0.; // sum of quadratic event weights <4>
9012 Double_t dSpreadFour4n1n4n1n = 0.; // weighted and biased estimator for sigma of <4>
9013 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9014 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9015 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9016 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9017 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9018 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9019 dSumWLinearFour4n1n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9020 dSumWQuadraticFour4n1n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9021 dSpreadFour4n1n4n1n = f4pCorrelations->GetBinError(11);
9022 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9023 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9024 pow(dSumWLinearFour4n1n4n1n,2.)>dSumWQuadraticFour4n1n4n1n)
9025 {
9026 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9027 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9028 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9029 + pow(f2pCorrelations->GetBinContent(1),2.)
9030 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9031 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9032 + pow((pow(dSumWQuadraticFour4n1n4n1n,0.5)/dSumWLinearFour4n1n4n1n)
9033 * dSpreadFour4n1n4n1n*pow(pow(dSumWLinearFour4n1n4n1n,2.)/(pow(dSumWLinearFour4n1n4n1n,2.)-dSumWQuadraticFour4n1n4n1n),0.5),2.)
9034 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(1)
9035 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9036 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,4))
9037 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4))
9038 / (dSumWLinearTwo1n1n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9039 - 2.*f2pCorrelations->GetBinContent(4)
9040 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9041 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,25))
9042 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(11))
9043 / (dSumWLinearTwo1n1n*dSumWLinearFour4n1n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9044 - 2.*f2pCorrelations->GetBinContent(1)
9045 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9046 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,25))
9047 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(11))
9048 / (dSumWLinearTwo4n4n*dSumWLinearFour4n1n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9049 if(dError>0.)
9050 {
9051 f4pCumulants->SetBinError(11,pow(dError,0.5));
9052 }
9053 } // end of if(...)
9054 } // end of {
9055 // <4>_{4n,2n|4n,2n}
e1d101a6 9056 f4pCumulants->SetBinContent(12,f4pCorrelations->GetBinContent(12)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(2));
c10259fb 9057 {
9058 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9059 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9060 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9061 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9062 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9063 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9064 Double_t dSumWLinearFour4n2n4n2n = 0.; // sum of linear event weights for <4>
9065 Double_t dSumWQuadraticFour4n2n4n2n = 0.; // sum of quadratic event weights <4>
9066 Double_t dSpreadFour4n2n4n2n = 0.; // weighted and biased estimator for sigma of <4>
9067 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9068 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9069 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9070 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9071 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9072 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9073 dSumWLinearFour4n2n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9074 dSumWQuadraticFour4n2n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9075 dSpreadFour4n2n4n2n = f4pCorrelations->GetBinError(12);
9076 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9077 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9078 pow(dSumWLinearFour4n2n4n2n,2.)>dSumWQuadraticFour4n2n4n2n)
9079 {
9080 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9081 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9082 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9083 + pow(f2pCorrelations->GetBinContent(2),2.)
9084 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9085 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9086 + pow((pow(dSumWQuadraticFour4n2n4n2n,0.5)/dSumWLinearFour4n2n4n2n)
9087 * dSpreadFour4n2n4n2n*pow(pow(dSumWLinearFour4n2n4n2n,2.)/(pow(dSumWLinearFour4n2n4n2n,2.)-dSumWQuadraticFour4n2n4n2n),0.5),2.)
9088 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(2)
9089 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9090 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,4))
9091 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4))
9092 / (dSumWLinearTwo2n2n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9093 - 2.*f2pCorrelations->GetBinContent(4)
9094 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9095 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,25))
9096 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(12))
9097 / (dSumWLinearTwo2n2n*dSumWLinearFour4n2n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9098 - 2.*f2pCorrelations->GetBinContent(2)
9099 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9100 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,25))
9101 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(12))
9102 / (dSumWLinearTwo4n4n*dSumWLinearFour4n2n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9103 if(dError>0.)
9104 {
9105 f4pCumulants->SetBinError(12,pow(dError,0.5));
9106 }
9107 } // end of if(...)
9108 } // end of {
9109 // <4>_{4n,3n|4n,3n}
e1d101a6 9110 f4pCumulants->SetBinContent(13,f4pCorrelations->GetBinContent(13)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(3));
c10259fb 9111 {
9112 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9113 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9114 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9115 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9116 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9117 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9118 Double_t dSumWLinearFour4n3n4n3n = 0.; // sum of linear event weights for <4>
9119 Double_t dSumWQuadraticFour4n3n4n3n = 0.; // sum of quadratic event weights <4>
9120 Double_t dSpreadFour4n3n4n3n = 0.; // weighted and biased estimator for sigma of <4>
9121 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9122 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9123 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9124 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9125 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9126 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9127 dSumWLinearFour4n3n4n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9128 dSumWQuadraticFour4n3n4n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9129 dSpreadFour4n3n4n3n = f4pCorrelations->GetBinError(13);
9130 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9131 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9132 pow(dSumWLinearFour4n3n4n3n,2.)>dSumWQuadraticFour4n3n4n3n)
9133 {
9134 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9135 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9136 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9137 + pow(f2pCorrelations->GetBinContent(3),2.)
9138 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9139 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9140 + pow((pow(dSumWQuadraticFour4n3n4n3n,0.5)/dSumWLinearFour4n3n4n3n)
9141 * dSpreadFour4n3n4n3n*pow(pow(dSumWLinearFour4n3n4n3n,2.)/(pow(dSumWLinearFour4n3n4n3n,2.)-dSumWQuadraticFour4n3n4n3n),0.5),2.)
9142 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(3)
9143 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9144 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,4))
9145 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4))
9146 / (dSumWLinearTwo3n3n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9147 - 2.*f2pCorrelations->GetBinContent(4)
9148 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9149 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,26))
9150 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(13))
9151 / (dSumWLinearTwo3n3n*dSumWLinearFour4n3n4n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9152 - 2.*f2pCorrelations->GetBinContent(3)
9153 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9154 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,26))
9155 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(13))
9156 / (dSumWLinearTwo4n4n*dSumWLinearFour4n3n4n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9157 if(dError>0.)
9158 {
9159 f4pCumulants->SetBinError(13,pow(dError,0.5));
9160 }
9161 } // end of if(...)
9162 } // end of {
9163 // <4>_{5n,1n|5n,1n}
e1d101a6 9164 f4pCumulants->SetBinContent(14,f4pCorrelations->GetBinContent(14)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1));
c10259fb 9165 {
9166 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9167 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9168 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9169 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9170 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9171 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9172 Double_t dSumWLinearFour5n1n5n1n = 0.; // sum of linear event weights for <4>
9173 Double_t dSumWQuadraticFour5n1n5n1n = 0.; // sum of quadratic event weights <4>
9174 Double_t dSpreadFour5n1n5n1n = 0.; // weighted and biased estimator for sigma of <4>
9175 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9176 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9177 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9178 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9179 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9180 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9181 dSumWLinearFour5n1n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9182 dSumWQuadraticFour5n1n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9183 dSpreadFour5n1n5n1n = f4pCorrelations->GetBinError(14);
9184 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9185 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9186 pow(dSumWLinearFour5n1n5n1n,2.)>dSumWQuadraticFour5n1n5n1n)
9187 {
9188 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9189 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9190 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9191 + pow(f2pCorrelations->GetBinContent(1),2.)
9192 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9193 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9194 + pow((pow(dSumWQuadraticFour5n1n5n1n,0.5)/dSumWLinearFour5n1n5n1n)
9195 * dSpreadFour5n1n5n1n*pow(pow(dSumWLinearFour5n1n5n1n,2.)/(pow(dSumWLinearFour5n1n5n1n,2.)-dSumWQuadraticFour5n1n5n1n),0.5),2.)
9196 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)
9197 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9198 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,5))
9199 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5))
9200 / (dSumWLinearTwo1n1n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9201 - 2.*f2pCorrelations->GetBinContent(5)
9202 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9203 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,28))
9204 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(14))
9205 / (dSumWLinearTwo1n1n*dSumWLinearFour5n1n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9206 - 2.*f2pCorrelations->GetBinContent(1)
9207 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9208 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,28))
9209 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(14))
9210 / (dSumWLinearTwo5n5n*dSumWLinearFour5n1n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9211 if(dError>0.)
9212 {
9213 f4pCumulants->SetBinError(14,pow(dError,0.5));
9214 }
9215 } // end of if(...)
9216 } // end of {
9217 // <4>_{5n,2n|5n,2n}
e1d101a6 9218 f4pCumulants->SetBinContent(15,f4pCorrelations->GetBinContent(15)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2));
c10259fb 9219 {
9220 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9221 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9222 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9223 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9224 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9225 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9226 Double_t dSumWLinearFour5n2n5n2n = 0.; // sum of linear event weights for <4>
9227 Double_t dSumWQuadraticFour5n2n5n2n = 0.; // sum of quadratic event weights <4>
9228 Double_t dSpreadFour5n2n5n2n = 0.; // weighted and biased estimator for sigma of <4>
9229 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9230 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9231 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9232 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9233 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9234 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9235 dSumWLinearFour5n2n5n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9236 dSumWQuadraticFour5n2n5n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9237 dSpreadFour5n2n5n2n = f4pCorrelations->GetBinError(15);
9238 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9239 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9240 pow(dSumWLinearFour5n2n5n2n,2.)>dSumWQuadraticFour5n2n5n2n)
9241 {
9242 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9243 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9244 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9245 + pow(f2pCorrelations->GetBinContent(2),2.)
9246 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9247 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9248 + pow((pow(dSumWQuadraticFour5n2n5n2n,0.5)/dSumWLinearFour5n2n5n2n)
9249 * dSpreadFour5n2n5n2n*pow(pow(dSumWLinearFour5n2n5n2n,2.)/(pow(dSumWLinearFour5n2n5n2n,2.)-dSumWQuadraticFour5n2n5n2n),0.5),2.)
9250 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)
9251 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9252 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,5))
9253 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5))
9254 / (dSumWLinearTwo2n2n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9255 - 2.*f2pCorrelations->GetBinContent(5)
9256 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9257 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,29))
9258 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(15))
9259 / (dSumWLinearTwo2n2n*dSumWLinearFour5n2n5n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9260 - 2.*f2pCorrelations->GetBinContent(2)
9261 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9262 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,29))
9263 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(15))
9264 / (dSumWLinearTwo5n5n*dSumWLinearFour5n2n5n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9265 if(dError>0.)
9266 {
9267 f4pCumulants->SetBinError(15,pow(dError,0.5));
9268 }
9269 } // end of if(...)
9270 } // end of {
9271 // <4>_{5n,3n|5n,3n}
e1d101a6 9272 f4pCumulants->SetBinContent(16,f4pCorrelations->GetBinContent(16)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3));
c10259fb 9273 {
9274 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9275 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9276 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9277 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9278 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9279 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9280 Double_t dSumWLinearFour5n3n5n3n = 0.; // sum of linear event weights for <4>
9281 Double_t dSumWQuadraticFour5n3n5n3n = 0.; // sum of quadratic event weights <4>
9282 Double_t dSpreadFour5n3n5n3n = 0.; // weighted and biased estimator for sigma of <4>
9283 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9284 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9285 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9286 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9287 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9288 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9289 dSumWLinearFour5n3n5n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9290 dSumWQuadraticFour5n3n5n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9291 dSpreadFour5n3n5n3n = f4pCorrelations->GetBinError(16);
9292 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9293 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9294 pow(dSumWLinearFour5n3n5n3n,2.)>dSumWQuadraticFour5n3n5n3n)
9295 {
9296 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9297 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9298 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9299 + pow(f2pCorrelations->GetBinContent(3),2.)
9300 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9301 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9302 + pow((pow(dSumWQuadraticFour5n3n5n3n,0.5)/dSumWLinearFour5n3n5n3n)
9303 * dSpreadFour5n3n5n3n*pow(pow(dSumWLinearFour5n3n5n3n,2.)/(pow(dSumWLinearFour5n3n5n3n,2.)-dSumWQuadraticFour5n3n5n3n),0.5),2.)
9304 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)
9305 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9306 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,5))
9307 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5))
9308 / (dSumWLinearTwo3n3n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9309 - 2.*f2pCorrelations->GetBinContent(5)
9310 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9311 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,30))
9312 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(16))
9313 / (dSumWLinearTwo3n3n*dSumWLinearFour5n3n5n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9314 - 2.*f2pCorrelations->GetBinContent(3)
9315 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9316 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,30))
9317 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(16))
9318 / (dSumWLinearTwo5n5n*dSumWLinearFour5n3n5n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9319 if(dError>0.)
9320 {
9321 f4pCumulants->SetBinError(16,pow(dError,0.5));
9322 }
9323 } // end of if(...)
9324 } // end of {
9325 // <4>_{5n,4n|5n,4n}
e1d101a6 9326 f4pCumulants->SetBinContent(17,f4pCorrelations->GetBinContent(17)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4));
c10259fb 9327 {
9328 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9329 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9330 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9331 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9332 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9333 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9334 Double_t dSumWLinearFour5n4n5n4n = 0.; // sum of linear event weights for <4>
9335 Double_t dSumWQuadraticFour5n4n5n4n = 0.; // sum of quadratic event weights <4>
9336 Double_t dSpreadFour5n4n5n4n = 0.; // weighted and biased estimator for sigma of <4>
9337 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9338 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9339 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9340 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9341 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9342 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9343 dSumWLinearFour5n4n5n4n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9344 dSumWQuadraticFour5n4n5n4n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9345 dSpreadFour5n4n5n4n = f4pCorrelations->GetBinError(17);
9346 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9347 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9348 pow(dSumWLinearFour5n4n5n4n,2.)>dSumWQuadraticFour5n4n5n4n)
9349 {
9350 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9351 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9352 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9353 + pow(f2pCorrelations->GetBinContent(4),2.)
9354 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9355 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9356 + pow((pow(dSumWQuadraticFour5n4n5n4n,0.5)/dSumWLinearFour5n4n5n4n)
9357 * dSpreadFour5n4n5n4n*pow(pow(dSumWLinearFour5n4n5n4n,2.)/(pow(dSumWLinearFour5n4n5n4n,2.)-dSumWQuadraticFour5n4n5n4n),0.5),2.)
9358 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4)
9359 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9360 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,5))
9361 - f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(5))
9362 / (dSumWLinearTwo4n4n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9363 - 2.*f2pCorrelations->GetBinContent(5)
9364 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9365 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,31))
9366 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(17))
9367 / (dSumWLinearTwo4n4n*dSumWLinearFour5n4n5n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9368 - 2.*f2pCorrelations->GetBinContent(4)
9369 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9370 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,31))
9371 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(17))
9372 / (dSumWLinearTwo5n5n*dSumWLinearFour5n4n5n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9373 if(dError>0.)
9374 {
9375 f4pCumulants->SetBinError(17,pow(dError,0.5));
9376 }
9377 } // end of if(...)
9378 } // end of {
9379 // <4>_{6n,1n|6n,1n}
e1d101a6 9380 f4pCumulants->SetBinContent(18,f4pCorrelations->GetBinContent(18)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1));
c10259fb 9381 {
9382 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9383 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9384 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9385 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9386 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9387 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9388 Double_t dSumWLinearFour6n1n6n1n = 0.; // sum of linear event weights for <4>
9389 Double_t dSumWQuadraticFour6n1n6n1n = 0.; // sum of quadratic event weights <4>
9390 Double_t dSpreadFour6n1n6n1n = 0.; // weighted and biased estimator for sigma of <4>
9391 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9392 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9393 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9394 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9395 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9396 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9397 dSumWLinearFour6n1n6n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9398 dSumWQuadraticFour6n1n6n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9399 dSpreadFour6n1n6n1n = f4pCorrelations->GetBinError(18);
9400 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9401 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9402 pow(dSumWLinearFour6n1n6n1n,2.)>dSumWQuadraticFour6n1n6n1n)
9403 {
9404 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9405 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9406 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9407 + pow(f2pCorrelations->GetBinContent(1),2.)
9408 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9409 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9410 + pow((pow(dSumWQuadraticFour6n1n6n1n,0.5)/dSumWLinearFour6n1n6n1n)
9411 * dSpreadFour6n1n6n1n*pow(pow(dSumWLinearFour6n1n6n1n,2.)/(pow(dSumWLinearFour6n1n6n1n,2.)-dSumWQuadraticFour6n1n6n1n),0.5),2.)
9412 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)
9413 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9414 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,6))
9415 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6))
9416 / (dSumWLinearTwo1n1n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9417 - 2.*f2pCorrelations->GetBinContent(6)
9418 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9419 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,32))
9420 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(18))
9421 / (dSumWLinearTwo1n1n*dSumWLinearFour6n1n6n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9422 - 2.*f2pCorrelations->GetBinContent(1)
9423 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9424 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,32))
9425 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(18))
9426 / (dSumWLinearTwo6n6n*dSumWLinearFour6n1n6n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9427 if(dError>0.)
9428 {
9429 f4pCumulants->SetBinError(18,pow(dError,0.5));
9430 }
9431 } // end of if(...)
9432 } // end of {
9433 // <4>_{6n,2n|6n,2n}
e1d101a6 9434 f4pCumulants->SetBinContent(19,f4pCorrelations->GetBinContent(19)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2));
c10259fb 9435 {
9436 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9437 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9438 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9439 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9440 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9441 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9442 Double_t dSumWLinearFour6n2n6n2n = 0.; // sum of linear event weights for <4>
9443 Double_t dSumWQuadraticFour6n2n6n2n = 0.; // sum of quadratic event weights <4>
9444 Double_t dSpreadFour6n2n6n2n = 0.; // weighted and biased estimator for sigma of <4>
9445 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9446 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9447 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9448 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9449 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9450 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9451 dSumWLinearFour6n2n6n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9452 dSumWQuadraticFour6n2n6n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9453 dSpreadFour6n2n6n2n = f4pCorrelations->GetBinError(19);
9454 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9455 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9456 pow(dSumWLinearFour6n2n6n2n,2.)>dSumWQuadraticFour6n2n6n2n)
9457 {
9458 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9459 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9460 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9461 + pow(f2pCorrelations->GetBinContent(2),2.)
9462 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9463 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9464 + pow((pow(dSumWQuadraticFour6n2n6n2n,0.5)/dSumWLinearFour6n2n6n2n)
9465 * dSpreadFour6n2n6n2n*pow(pow(dSumWLinearFour6n2n6n2n,2.)/(pow(dSumWLinearFour6n2n6n2n,2.)-dSumWQuadraticFour6n2n6n2n),0.5),2.)
9466 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2)
9467 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9468 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,6))
9469 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6))
9470 / (dSumWLinearTwo2n2n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9471 - 2.*f2pCorrelations->GetBinContent(6)
9472 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9473 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,33))
9474 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(19))
9475 / (dSumWLinearTwo2n2n*dSumWLinearFour6n2n6n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9476 - 2.*f2pCorrelations->GetBinContent(2)
9477 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9478 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,33))
9479 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(19))
9480 / (dSumWLinearTwo6n6n*dSumWLinearFour6n2n6n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9481 if(dError>0.)
9482 {
9483 f4pCumulants->SetBinError(19,pow(dError,0.5));
9484 }
9485 } // end of if(...)
9486 } // end of {
9487 // <4>_{6n,3n|6n,3n}
e1d101a6 9488 f4pCumulants->SetBinContent(20,f4pCorrelations->GetBinContent(20)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3));
c10259fb 9489 {
9490 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9491 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9492 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9493 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9494 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9495 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9496 Double_t dSumWLinearFour6n3n6n3n = 0.; // sum of linear event weights for <4>
9497 Double_t dSumWQuadraticFour6n3n6n3n = 0.; // sum of quadratic event weights <4>
9498 Double_t dSpreadFour6n3n6n3n = 0.; // weighted and biased estimator for sigma of <4>
9499 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9500 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9501 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9502 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9503 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9504 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9505 dSumWLinearFour6n3n6n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9506 dSumWQuadraticFour6n3n6n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9507 dSpreadFour6n3n6n3n = f4pCorrelations->GetBinError(20);
9508 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9509 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9510 pow(dSumWLinearFour6n3n6n3n,2.)>dSumWQuadraticFour6n3n6n3n)
9511 {
9512 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9513 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9514 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9515 + pow(f2pCorrelations->GetBinContent(3),2.)
9516 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9517 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9518 + pow((pow(dSumWQuadraticFour6n3n6n3n,0.5)/dSumWLinearFour6n3n6n3n)
9519 * dSpreadFour6n3n6n3n*pow(pow(dSumWLinearFour6n3n6n3n,2.)/(pow(dSumWLinearFour6n3n6n3n,2.)-dSumWQuadraticFour6n3n6n3n),0.5),2.)
9520 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)
9521 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9522 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,6))
9523 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6))
9524 / (dSumWLinearTwo3n3n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9525 - 2.*f2pCorrelations->GetBinContent(6)
9526 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9527 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,34))
9528 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(20))
9529 / (dSumWLinearTwo3n3n*dSumWLinearFour6n3n6n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9530 - 2.*f2pCorrelations->GetBinContent(3)
9531 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9532 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,34))
9533 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(20))
9534 / (dSumWLinearTwo6n6n*dSumWLinearFour6n3n6n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9535 if(dError>0.)
9536 {
9537 f4pCumulants->SetBinError(20,pow(dError,0.5));
9538 }
9539 } // end of if(...)
9540 } // end of {
9541 // <4>_{6n,4n|6n,4n}
e1d101a6 9542 f4pCumulants->SetBinContent(21,f4pCorrelations->GetBinContent(21)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4));
c10259fb 9543 {
9544 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9545 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9546 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9547 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9548 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9549 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9550 Double_t dSumWLinearFour6n4n6n4n = 0.; // sum of linear event weights for <4>
9551 Double_t dSumWQuadraticFour6n4n6n4n = 0.; // sum of quadratic event weights <4>
9552 Double_t dSpreadFour6n4n6n4n = 0.; // weighted and biased estimator for sigma of <4>
9553 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9554 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9555 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9556 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9557 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9558 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9559 dSumWLinearFour6n4n6n4n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9560 dSumWQuadraticFour6n4n6n4n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9561 dSpreadFour6n4n6n4n = f4pCorrelations->GetBinError(21);
9562 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9563 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9564 pow(dSumWLinearFour6n4n6n4n,2.)>dSumWQuadraticFour6n4n6n4n)
9565 {
9566 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9567 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9568 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9569 + pow(f2pCorrelations->GetBinContent(4),2.)
9570 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9571 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9572 + pow((pow(dSumWQuadraticFour6n4n6n4n,0.5)/dSumWLinearFour6n4n6n4n)
9573 * dSpreadFour6n4n6n4n*pow(pow(dSumWLinearFour6n4n6n4n,2.)/(pow(dSumWLinearFour6n4n6n4n,2.)-dSumWQuadraticFour6n4n6n4n),0.5),2.)
9574 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4)
9575 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9576 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,6))
9577 - f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(6))
9578 / (dSumWLinearTwo4n4n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9579 - 2.*f2pCorrelations->GetBinContent(6)
9580 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9581 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,35))
9582 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(21))
9583 / (dSumWLinearTwo4n4n*dSumWLinearFour6n4n6n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9584 - 2.*f2pCorrelations->GetBinContent(4)
9585 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9586 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,35))
9587 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(21))
9588 / (dSumWLinearTwo6n6n*dSumWLinearFour6n4n6n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9589 if(dError>0.)
9590 {
9591 f4pCumulants->SetBinError(21,pow(dError,0.5));
9592 }
9593 } // end of if(...)
9594 } // end of {
9595 // <4>_{6n,5n|6n,5n}
e1d101a6 9596 f4pCumulants->SetBinContent(22,f4pCorrelations->GetBinContent(22)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5));
c10259fb 9597 {
9598 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9599 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9600 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9601 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9602 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9603 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9604 Double_t dSumWLinearFour6n5n6n5n = 0.; // sum of linear event weights for <4>
9605 Double_t dSumWQuadraticFour6n5n6n5n = 0.; // sum of quadratic event weights <4>
9606 Double_t dSpreadFour6n5n6n5n = 0.; // weighted and biased estimator for sigma of <4>
9607 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9608 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9609 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9610 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9611 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9612 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9613 dSumWLinearFour6n5n6n5n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9614 dSumWQuadraticFour6n5n6n5n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9615 dSpreadFour6n5n6n5n = f4pCorrelations->GetBinError(22);
9616 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9617 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9618 pow(dSumWLinearFour6n5n6n5n,2.)>dSumWQuadraticFour6n5n6n5n)
9619 {
9620 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9621 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9622 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9623 + pow(f2pCorrelations->GetBinContent(5),2.)
9624 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9625 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9626 + pow((pow(dSumWQuadraticFour6n5n6n5n,0.5)/dSumWLinearFour6n5n6n5n)
9627 * dSpreadFour6n5n6n5n*pow(pow(dSumWLinearFour6n5n6n5n,2.)/(pow(dSumWLinearFour6n5n6n5n,2.)-dSumWQuadraticFour6n5n6n5n),0.5),2.)
9628 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5)
9629 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9630 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,6))
9631 - f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6))
9632 / (dSumWLinearTwo5n5n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9633 - 2.*f2pCorrelations->GetBinContent(6)
9634 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9635 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,36))
9636 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(22))
9637 / (dSumWLinearTwo5n5n*dSumWLinearFour6n5n6n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9638 - 2.*f2pCorrelations->GetBinContent(5)
9639 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9640 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,36))
9641 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(22))
9642 / (dSumWLinearTwo6n6n*dSumWLinearFour6n5n6n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9643 if(dError>0.)
9644 {
9645 f4pCumulants->SetBinError(22,pow(dError,0.5));
9646 }
9647 } // end of if(...)
9648 } // end of {
9649
e1d101a6 9650 // c3) "Two distinct harmonics":
9651 for(Int_t b=24;b<=25;b++)
9652 {
9653 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9654 Double_t dSumWLinear = 0.; // sum of linear event weights
9655 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9656 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9657 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9658 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9659 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9660 dSpread = f4pCorrelations->GetBinError(b);
9661 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9662 {
9663 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9664 f4pCumulants->SetBinError(b,dError);
9665 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9666 } // end of for(Int_t b=24;b<=25;b++)
9667 // c4) "Three distinct harmonics":
9668 for(Int_t b=27;b<=36;b++)
9669 {
9670 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9671 Double_t dSumWLinear = 0.; // sum of linear event weights
9672 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9673 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9674 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9675 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9676 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9677 dSpread = f4pCorrelations->GetBinError(b);
9678 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9679 {
9680 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9681 f4pCumulants->SetBinError(b,dError);
9682 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9683 } // end of for(Int_t b=27;b<=36;b++)
9684 // c5) "Four distinct harmonics":
9685 for(Int_t b=38;b<=45;b++)
9686 {
9687 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9688 Double_t dSumWLinear = 0.; // sum of linear event weights
9689 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9690 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9691 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9692 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9693 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9694 dSpread = f4pCorrelations->GetBinError(b);
9695 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9696 {
9697 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9698 f4pCumulants->SetBinError(b,dError);
9699 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9700 } // end of for(Int_t b=38;b<=45;b++)
9701
9702 // d) Calculate 5-p cumulants:
9703 // d1) "Standard candles":
9704 f5pCumulants->SetBinContent(1,f5pCorrelations->GetBinContent(1)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3));
c10259fb 9705 {
9706 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9707 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9708 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9709 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
9710 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
9711 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
9712 Double_t dSumWLinearFive3n2n3n1n1n = 0.; // sum of linear event weights for <4>
9713 Double_t dSumWQuadraticFive3n2n3n1n1n = 0.; // sum of quadratic event weights <4>
9714 Double_t dSpreadFive3n2n3n1n1n = 0.; // weighted and biased estimator for sigma of <4>
9715 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9716 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9717 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9718 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9719 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9720 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
9721 dSumWLinearFive3n2n3n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9722 dSumWQuadraticFive3n2n3n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9723 dSpreadFive3n2n3n1n1n = f5pCorrelations->GetBinError(1);
9724 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9725 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
9726 pow(dSumWLinearFive3n2n3n1n1n,2.)>dSumWQuadraticFive3n2n3n1n1n)
9727 {
9728 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
9729 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9730 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9731 + pow(f2pCorrelations->GetBinContent(3),2.)
9732 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
9733 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
9734 + pow((pow(dSumWQuadraticFive3n2n3n1n1n,0.5)/dSumWLinearFive3n2n3n1n1n)
9735 * dSpreadFive3n2n3n1n1n*pow(pow(dSumWLinearFive3n2n3n1n1n,2.)/(pow(dSumWLinearFive3n2n3n1n1n,2.)-dSumWQuadraticFive3n2n3n1n1n),0.5),2.)
9736 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3)
9737 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9738 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,7))
9739 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(1))
9740 / (dSumWLinearTwo3n3n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9741 - 2.*f3pCorrelations->GetBinContent(1)
9742 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9743 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,57))
9744 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(1))
9745 / (dSumWLinearTwo3n3n*dSumWLinearFive3n2n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9746 - 2.*f2pCorrelations->GetBinContent(3)
9747 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9748 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,57))
9749 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(1))
9750 / (dSumWLinearThree2n1n1n*dSumWLinearFive3n2n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9751 if(dError>0.)
9752 {
9753 f5pCumulants->SetBinError(1,pow(dError,0.5));
9754 }
9755 } // end of if(...)
9756 } // end of {
9757
e1d101a6 9758 f5pCumulants->SetBinContent(2,f5pCorrelations->GetBinContent(2)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1));
c10259fb 9759 {
9760 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9761 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9762 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9763 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
9764 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
9765 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
9766 Double_t dSumWLinearFive4n1n2n2n1n = 0.; // sum of linear event weights for <4>
9767 Double_t dSumWQuadraticFive4n1n2n2n1n = 0.; // sum of quadratic event weights <4>
9768 Double_t dSpreadFive4n1n2n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9769 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9770 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9771 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9772 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9773 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9774 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
9775 dSumWLinearFive4n1n2n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9776 dSumWQuadraticFive4n1n2n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9777 dSpreadFive4n1n2n2n1n = f5pCorrelations->GetBinError(2);
9778 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9779 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
9780 pow(dSumWLinearFive4n1n2n2n1n,2.)>dSumWQuadraticFive4n1n2n2n1n)
9781 {
9782 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
9783 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9784 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9785 + pow(f2pCorrelations->GetBinContent(1),2.)
9786 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
9787 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
9788 + pow((pow(dSumWQuadraticFive4n1n2n2n1n,0.5)/dSumWLinearFive4n1n2n2n1n)
9789 * dSpreadFive4n1n2n2n1n*pow(pow(dSumWLinearFive4n1n2n2n1n,2.)/(pow(dSumWLinearFive4n1n2n2n1n,2.)-dSumWQuadraticFive4n1n2n2n1n),0.5),2.)
9790 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1)
9791 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9792 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,8))
9793 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(2))
9794 / (dSumWLinearTwo1n1n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9795 - 2.*f3pCorrelations->GetBinContent(2)
9796 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9797 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,58))
9798 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(2))
9799 / (dSumWLinearTwo1n1n*dSumWLinearFive4n1n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9800 - 2.*f2pCorrelations->GetBinContent(1)
9801 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9802 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,58))
9803 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(2))
9804 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n1n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9805 if(dError>0.)
9806 {
9807 f5pCumulants->SetBinError(2,pow(dError,0.5));
9808 }
9809 } // end of if(...)
9810 } // end of {
e1d101a6 9811 f5pCumulants->SetBinContent(3,f5pCorrelations->GetBinContent(3)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2));
c10259fb 9812 {
9813 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9814 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9815 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9816 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
9817 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
9818 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
9819 Double_t dSumWLinearFive4n2n3n2n1n = 0.; // sum of linear event weights for <4>
9820 Double_t dSumWQuadraticFive4n2n3n2n1n = 0.; // sum of quadratic event weights <4>
9821 Double_t dSpreadFive4n2n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9822 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9823 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9824 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9825 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9826 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9827 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
9828 dSumWLinearFive4n2n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9829 dSumWQuadraticFive4n2n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9830 dSpreadFive4n2n3n2n1n = f5pCorrelations->GetBinError(3);
9831 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9832 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
9833 pow(dSumWLinearFive4n2n3n2n1n,2.)>dSumWQuadraticFive4n2n3n2n1n)
9834 {
9835 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
9836 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9837 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9838 + pow(f2pCorrelations->GetBinContent(2),2.)
9839 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
9840 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
9841 + pow((pow(dSumWQuadraticFive4n2n3n2n1n,0.5)/dSumWLinearFive4n2n3n2n1n)
9842 * dSpreadFive4n2n3n2n1n*pow(pow(dSumWLinearFive4n2n3n2n1n,2.)/(pow(dSumWLinearFive4n2n3n2n1n,2.)-dSumWQuadraticFive4n2n3n2n1n),0.5),2.)
9843 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2)
9844 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9845 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,11))
9846 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(6))
9847 / (dSumWLinearTwo2n2n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9848 - 2.*f3pCorrelations->GetBinContent(6)
9849 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9850 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,59))
9851 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(3))
9852 / (dSumWLinearTwo2n2n*dSumWLinearFive4n2n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9853 - 2.*f2pCorrelations->GetBinContent(2)
9854 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9855 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,59))
9856 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(3))
9857 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n2n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9858 if(dError>0.)
9859 {
9860 f5pCumulants->SetBinError(3,pow(dError,0.5));
9861 }
9862 } // end of if(...)
9863 } // end of {
e1d101a6 9864 f5pCumulants->SetBinContent(4,f5pCorrelations->GetBinContent(4)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3));
c10259fb 9865 {
9866 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9867 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9868 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9869 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
9870 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
9871 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
9872 Double_t dSumWLinearFive4n3n3n2n2n = 0.; // sum of linear event weights for <4>
9873 Double_t dSumWQuadraticFive4n3n3n2n2n = 0.; // sum of quadratic event weights <4>
9874 Double_t dSpreadFive4n3n3n2n2n = 0.; // weighted and biased estimator for sigma of <4>
9875 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9876 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9877 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9878 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9879 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9880 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
9881 dSumWLinearFive4n3n3n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9882 dSumWQuadraticFive4n3n3n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9883 dSpreadFive4n3n3n2n2n = f5pCorrelations->GetBinError(4);
9884 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9885 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
9886 pow(dSumWLinearFive4n3n3n2n2n,2.)>dSumWQuadraticFive4n3n3n2n2n)
9887 {
9888 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
9889 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9890 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9891 + pow(f2pCorrelations->GetBinContent(3),2.)
9892 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
9893 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
9894 + pow((pow(dSumWQuadraticFive4n3n3n2n2n,0.5)/dSumWLinearFive4n3n3n2n2n)
9895 * dSpreadFive4n3n3n2n2n*pow(pow(dSumWLinearFive4n3n3n2n2n,2.)/(pow(dSumWLinearFive4n3n3n2n2n,2.)-dSumWQuadraticFive4n3n3n2n2n),0.5),2.)
9896 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3)
9897 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9898 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,8))
9899 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(2))
9900 / (dSumWLinearTwo3n3n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9901 - 2.*f3pCorrelations->GetBinContent(2)
9902 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9903 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,60))
9904 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(4))
9905 / (dSumWLinearTwo3n3n*dSumWLinearFive4n3n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9906 - 2.*f2pCorrelations->GetBinContent(3)
9907 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9908 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,60))
9909 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(4))
9910 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n3n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9911 if(dError>0.)
9912 {
9913 f5pCumulants->SetBinError(4,pow(dError,0.5));
9914 }
9915 } // end of if(...)
9916 } // end of {
e1d101a6 9917 f5pCumulants->SetBinContent(5,f5pCorrelations->GetBinContent(5)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4));
c10259fb 9918 {
9919 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9920 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9921 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9922 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
9923 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
9924 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
9925 Double_t dSumWLinearFive4n2n4n1n1n = 0.; // sum of linear event weights for <4>
9926 Double_t dSumWQuadraticFive4n2n4n1n1n = 0.; // sum of quadratic event weights <4>
9927 Double_t dSpreadFive4n2n4n1n1n = 0.; // weighted and biased estimator for sigma of <4>
9928 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9929 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9930 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9931 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9932 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9933 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
9934 dSumWLinearFive4n2n4n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9935 dSumWQuadraticFive4n2n4n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9936 dSpreadFive4n2n4n1n1n = f5pCorrelations->GetBinError(5);
9937 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9938 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
9939 pow(dSumWLinearFive4n2n4n1n1n,2.)>dSumWQuadraticFive4n2n4n1n1n)
9940 {
9941 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
9942 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9943 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9944 + pow(f2pCorrelations->GetBinContent(4),2.)
9945 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
9946 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
9947 + pow((pow(dSumWQuadraticFive4n2n4n1n1n,0.5)/dSumWLinearFive4n2n4n1n1n)
9948 * dSpreadFive4n2n4n1n1n*pow(pow(dSumWLinearFive4n2n4n1n1n,2.)/(pow(dSumWLinearFive4n2n4n1n1n,2.)-dSumWQuadraticFive4n2n4n1n1n),0.5),2.)
9949 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4)
9950 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9951 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,7))
9952 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(1))
9953 / (dSumWLinearTwo4n4n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9954 - 2.*f3pCorrelations->GetBinContent(1)
9955 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9956 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,61))
9957 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(5))
9958 / (dSumWLinearTwo4n4n*dSumWLinearFive4n2n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9959 - 2.*f2pCorrelations->GetBinContent(4)
9960 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9961 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,61))
9962 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(5))
9963 / (dSumWLinearThree2n1n1n*dSumWLinearFive4n2n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9964 if(dError>0.)
9965 {
9966 f5pCumulants->SetBinError(5,pow(dError,0.5));
9967 }
9968 } // end of if(...)
9969 } // end of {
e1d101a6 9970 f5pCumulants->SetBinContent(6,f5pCorrelations->GetBinContent(6)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4));
c10259fb 9971 {
9972 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9973 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9974 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9975 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
9976 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
9977 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
9978 Double_t dSumWLinearFive4n3n4n2n1n = 0.; // sum of linear event weights for <4>
9979 Double_t dSumWQuadraticFive4n3n4n2n1n = 0.; // sum of quadratic event weights <4>
9980 Double_t dSpreadFive4n3n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9981 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9982 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9983 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9984 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9985 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9986 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
9987 dSumWLinearFive4n3n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9988 dSumWQuadraticFive4n3n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9989 dSpreadFive4n3n4n2n1n = f5pCorrelations->GetBinError(6);
9990 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9991 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
9992 pow(dSumWLinearFive4n3n4n2n1n,2.)>dSumWQuadraticFive4n3n4n2n1n)
9993 {
9994 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
9995 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9996 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9997 + pow(f2pCorrelations->GetBinContent(4),2.)
9998 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
9999 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
10000 + pow((pow(dSumWQuadraticFive4n3n4n2n1n,0.5)/dSumWLinearFive4n3n4n2n1n)
10001 * dSpreadFive4n3n4n2n1n*pow(pow(dSumWLinearFive4n3n4n2n1n,2.)/(pow(dSumWLinearFive4n3n4n2n1n,2.)-dSumWQuadraticFive4n3n4n2n1n),0.5),2.)
10002 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4)
10003 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10004 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,10))
10005 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(5))
10006 / (dSumWLinearTwo4n4n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10007 - 2.*f3pCorrelations->GetBinContent(5)
10008 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10009 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,62))
10010 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(6))
10011 / (dSumWLinearTwo4n4n*dSumWLinearFive4n3n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10012 - 2.*f2pCorrelations->GetBinContent(4)
10013 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10014 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,62))
10015 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(6))
10016 / (dSumWLinearThree3n2n1n*dSumWLinearFive4n3n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10017 if(dError>0.)
10018 {
10019 f5pCumulants->SetBinError(6,pow(dError,0.5));
10020 }
10021 } // end of if(...)
10022 } // end of {
e1d101a6 10023 f5pCumulants->SetBinContent(7,f5pCorrelations->GetBinContent(7)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(1));
c10259fb 10024 {
10025 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10026 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10027 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10028 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
10029 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
10030 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
10031 Double_t dSumWLinearFive5n1n3n2n1n = 0.; // sum of linear event weights for <4>
10032 Double_t dSumWQuadraticFive5n1n3n2n1n = 0.; // sum of quadratic event weights <4>
10033 Double_t dSpreadFive5n1n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10034 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10035 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10036 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10037 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10038 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10039 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
10040 dSumWLinearFive5n1n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10041 dSumWQuadraticFive5n1n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10042 dSpreadFive5n1n3n2n1n = f5pCorrelations->GetBinError(7);
10043 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10044 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
10045 pow(dSumWLinearFive5n1n3n2n1n,2.)>dSumWQuadraticFive5n1n3n2n1n)
10046 {
10047 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
10048 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10049 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10050 + pow(f2pCorrelations->GetBinContent(1),2.)
10051 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
10052 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
10053 + pow((pow(dSumWQuadraticFive5n1n3n2n1n,0.5)/dSumWLinearFive5n1n3n2n1n)
10054 * dSpreadFive5n1n3n2n1n*pow(pow(dSumWLinearFive5n1n3n2n1n,2.)/(pow(dSumWLinearFive5n1n3n2n1n,2.)-dSumWQuadraticFive5n1n3n2n1n),0.5),2.)
10055 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(1)
10056 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10057 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,12))
10058 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(7))
10059 / (dSumWLinearTwo1n1n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10060 - 2.*f3pCorrelations->GetBinContent(7)
10061 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10062 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,63))
10063 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(7))
10064 / (dSumWLinearTwo1n1n*dSumWLinearFive5n1n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10065 - 2.*f2pCorrelations->GetBinContent(1)
10066 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10067 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,63))
10068 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(7))
10069 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n1n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10070 if(dError>0.)
10071 {
10072 f5pCumulants->SetBinError(7,pow(dError,0.5));
10073 }
10074 } // end of if(...)
10075 } // end of {
e1d101a6 10076 f5pCumulants->SetBinContent(8,f5pCorrelations->GetBinContent(8)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5));
c10259fb 10077 {
10078 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10079 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10080 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10081 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
10082 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
10083 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
10084 Double_t dSumWLinearFive5n2n5n1n1n = 0.; // sum of linear event weights for <4>
10085 Double_t dSumWQuadraticFive5n2n5n1n1n = 0.; // sum of quadratic event weights <4>
10086 Double_t dSpreadFive5n2n5n1n1n = 0.; // weighted and biased estimator for sigma of <4>
10087 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10088 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10089 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10090 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10091 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10092 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
10093 dSumWLinearFive5n2n5n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10094 dSumWQuadraticFive5n2n5n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10095 dSpreadFive5n2n5n1n1n = f5pCorrelations->GetBinError(8);
10096 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10097 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
10098 pow(dSumWLinearFive5n2n5n1n1n,2.)>dSumWQuadraticFive5n2n5n1n1n)
10099 {
10100 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
10101 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10102 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10103 + pow(f2pCorrelations->GetBinContent(5),2.)
10104 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
10105 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
10106 + pow((pow(dSumWQuadraticFive5n2n5n1n1n,0.5)/dSumWLinearFive5n2n5n1n1n)
10107 * dSpreadFive5n2n5n1n1n*pow(pow(dSumWLinearFive5n2n5n1n1n,2.)/(pow(dSumWLinearFive5n2n5n1n1n,2.)-dSumWQuadraticFive5n2n5n1n1n),0.5),2.)
10108 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5)
10109 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10110 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,7))
10111 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(1))
10112 / (dSumWLinearTwo5n5n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10113 - 2.*f3pCorrelations->GetBinContent(1)
10114 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10115 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,64))
10116 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(8))
10117 / (dSumWLinearTwo5n5n*dSumWLinearFive5n2n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10118 - 2.*f2pCorrelations->GetBinContent(5)
10119 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10120 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,64))
10121 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(8))
10122 / (dSumWLinearThree2n1n1n*dSumWLinearFive5n2n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10123 if(dError>0.)
10124 {
10125 f5pCumulants->SetBinError(8,pow(dError,0.5));
10126 }
10127 } // end of if(...)
10128 } // end of {
e1d101a6 10129 f5pCumulants->SetBinContent(9,f5pCorrelations->GetBinContent(9)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(2));
c10259fb 10130 {
10131 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10132 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10133 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10134 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
10135 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
10136 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
10137 Double_t dSumWLinearFive5n2n4n2n1n = 0.; // sum of linear event weights for <4>
10138 Double_t dSumWQuadraticFive5n2n4n2n1n = 0.; // sum of quadratic event weights <4>
10139 Double_t dSpreadFive5n2n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10140 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10141 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10142 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10143 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10144 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10145 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
10146 dSumWLinearFive5n2n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10147 dSumWQuadraticFive5n2n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10148 dSpreadFive5n2n4n2n1n = f5pCorrelations->GetBinError(9);
10149 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10150 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
10151 pow(dSumWLinearFive5n2n4n2n1n,2.)>dSumWQuadraticFive5n2n4n2n1n)
10152 {
10153 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
10154 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10155 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10156 + pow(f2pCorrelations->GetBinContent(2),2.)
10157 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
10158 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
10159 + pow((pow(dSumWQuadraticFive5n2n4n2n1n,0.5)/dSumWLinearFive5n2n4n2n1n)
10160 * dSpreadFive5n2n4n2n1n*pow(pow(dSumWLinearFive5n2n4n2n1n,2.)/(pow(dSumWLinearFive5n2n4n2n1n,2.)-dSumWQuadraticFive5n2n4n2n1n),0.5),2.)
10161 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(2)
10162 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10163 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,13))
10164 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(8))
10165 / (dSumWLinearTwo2n2n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10166 - 2.*f3pCorrelations->GetBinContent(8)
10167 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10168 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,65))
10169 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(9))
10170 / (dSumWLinearTwo2n2n*dSumWLinearFive5n2n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10171 - 2.*f2pCorrelations->GetBinContent(2)
10172 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10173 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,65))
10174 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(9))
10175 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n2n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10176 if(dError>0.)
10177 {
10178 f5pCumulants->SetBinError(9,pow(dError,0.5));
10179 }
10180 } // end of if(...)
10181 } // end of {
e1d101a6 10182 f5pCumulants->SetBinContent(10,f5pCorrelations->GetBinContent(10)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(3));
c10259fb 10183 {
10184 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10185 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10186 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10187 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
10188 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
10189 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
10190 Double_t dSumWLinearFive5n3n4n3n1n = 0.; // sum of linear event weights for <4>
10191 Double_t dSumWQuadraticFive5n3n4n3n1n = 0.; // sum of quadratic event weights <4>
10192 Double_t dSpreadFive5n3n4n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10193 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10194 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10195 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10196 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10197 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10198 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
10199 dSumWLinearFive5n3n4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10200 dSumWQuadraticFive5n3n4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10201 dSpreadFive5n3n4n3n1n = f5pCorrelations->GetBinError(10);
10202 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10203 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
10204 pow(dSumWLinearFive5n3n4n3n1n,2.)>dSumWQuadraticFive5n3n4n3n1n)
10205 {
10206 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
10207 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10208 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10209 + pow(f2pCorrelations->GetBinContent(3),2.)
10210 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
10211 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
10212 + pow((pow(dSumWQuadraticFive5n3n4n3n1n,0.5)/dSumWLinearFive5n3n4n3n1n)
10213 * dSpreadFive5n3n4n3n1n*pow(pow(dSumWLinearFive5n3n4n3n1n,2.)/(pow(dSumWLinearFive5n3n4n3n1n,2.)-dSumWQuadraticFive5n3n4n3n1n),0.5),2.)
10214 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(3)
10215 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10216 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,13))
10217 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(8))
10218 / (dSumWLinearTwo3n3n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10219 - 2.*f3pCorrelations->GetBinContent(8)
10220 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10221 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,66))
10222 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(10))
10223 / (dSumWLinearTwo3n3n*dSumWLinearFive5n3n4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10224 - 2.*f2pCorrelations->GetBinContent(3)
10225 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10226 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,66))
10227 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(10))
10228 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n3n4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10229 if(dError>0.)
10230 {
10231 f5pCumulants->SetBinError(10,pow(dError,0.5));
10232 }
10233 } // end of if(...)
10234 } // end of {
e1d101a6 10235 f5pCumulants->SetBinContent(11,f5pCorrelations->GetBinContent(11)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(4));
c10259fb 10236 {
10237 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10238 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10239 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10240 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
10241 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
10242 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
10243 Double_t dSumWLinearFive5n4n4n3n2n = 0.; // sum of linear event weights for <4>
10244 Double_t dSumWQuadraticFive5n4n4n3n2n = 0.; // sum of quadratic event weights <4>
10245 Double_t dSpreadFive5n4n4n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10246 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10247 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10248 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10249 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10250 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10251 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
10252 dSumWLinearFive5n4n4n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10253 dSumWQuadraticFive5n4n4n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10254 dSpreadFive5n4n4n3n2n = f5pCorrelations->GetBinError(11);
10255 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10256 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
10257 pow(dSumWLinearFive5n4n4n3n2n,2.)>dSumWQuadraticFive5n4n4n3n2n)
10258 {
10259 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
10260 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10261 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10262 + pow(f2pCorrelations->GetBinContent(4),2.)
10263 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
10264 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
10265 + pow((pow(dSumWQuadraticFive5n4n4n3n2n,0.5)/dSumWLinearFive5n4n4n3n2n)
10266 * dSpreadFive5n4n4n3n2n*pow(pow(dSumWLinearFive5n4n4n3n2n,2.)/(pow(dSumWLinearFive5n4n4n3n2n,2.)-dSumWQuadraticFive5n4n4n3n2n),0.5),2.)
10267 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(4)
10268 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10269 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,12))
10270 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(7))
10271 / (dSumWLinearTwo4n4n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10272 - 2.*f3pCorrelations->GetBinContent(7)
10273 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10274 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,67))
10275 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(11))
10276 / (dSumWLinearTwo4n4n*dSumWLinearFive5n4n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10277 - 2.*f2pCorrelations->GetBinContent(4)
10278 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10279 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,67))
10280 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(11))
10281 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n4n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10282 if(dError>0.)
10283 {
10284 f5pCumulants->SetBinError(11,pow(dError,0.5));
10285 }
10286 } // end of if(...)
10287 } // end of {
e1d101a6 10288 f5pCumulants->SetBinContent(12,f5pCorrelations->GetBinContent(12)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(5));
c10259fb 10289 {
10290 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10291 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10292 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10293 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
10294 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
10295 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
10296 Double_t dSumWLinearFive5n3n5n2n1n = 0.; // sum of linear event weights for <4>
10297 Double_t dSumWQuadraticFive5n3n5n2n1n = 0.; // sum of quadratic event weights <4>
10298 Double_t dSpreadFive5n3n5n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10299 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10300 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10301 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10302 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10303 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10304 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
10305 dSumWLinearFive5n3n5n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10306 dSumWQuadraticFive5n3n5n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10307 dSpreadFive5n3n5n2n1n = f5pCorrelations->GetBinError(12);
10308 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10309 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
10310 pow(dSumWLinearFive5n3n5n2n1n,2.)>dSumWQuadraticFive5n3n5n2n1n)
10311 {
10312 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
10313 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10314 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10315 + pow(f2pCorrelations->GetBinContent(5),2.)
10316 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
10317 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
10318 + pow((pow(dSumWQuadraticFive5n3n5n2n1n,0.5)/dSumWLinearFive5n3n5n2n1n)
10319 * dSpreadFive5n3n5n2n1n*pow(pow(dSumWLinearFive5n3n5n2n1n,2.)/(pow(dSumWLinearFive5n3n5n2n1n,2.)-dSumWQuadraticFive5n3n5n2n1n),0.5),2.)
10320 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(5)
10321 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10322 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,10))
10323 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(5))
10324 / (dSumWLinearTwo5n5n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10325 - 2.*f3pCorrelations->GetBinContent(5)
10326 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10327 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,68))
10328 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(12))
10329 / (dSumWLinearTwo5n5n*dSumWLinearFive5n3n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10330 - 2.*f2pCorrelations->GetBinContent(5)
10331 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10332 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,68))
10333 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(12))
10334 / (dSumWLinearThree3n2n1n*dSumWLinearFive5n3n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10335 if(dError>0.)
10336 {
10337 f5pCumulants->SetBinError(12,pow(dError,0.5));
10338 }
10339 } // end of if(...)
10340 } // end of {
e1d101a6 10341 f5pCumulants->SetBinContent(13,f5pCorrelations->GetBinContent(13)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5));
c10259fb 10342 {
10343 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10344 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10345 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10346 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
10347 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
10348 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
10349 Double_t dSumWLinearFive5n4n5n2n2n = 0.; // sum of linear event weights for <4>
10350 Double_t dSumWQuadraticFive5n4n5n2n2n = 0.; // sum of quadratic event weights <4>
10351 Double_t dSpreadFive5n4n5n2n2n = 0.; // weighted and biased estimator for sigma of <4>
10352 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10353 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10354 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10355 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10356 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10357 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
10358 dSumWLinearFive5n4n5n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10359 dSumWQuadraticFive5n4n5n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10360 dSpreadFive5n4n5n2n2n = f5pCorrelations->GetBinError(13);
10361 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10362 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
10363 pow(dSumWLinearFive5n4n5n2n2n,2.)>dSumWQuadraticFive5n4n5n2n2n)
10364 {
10365 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
10366 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10367 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10368 + pow(f2pCorrelations->GetBinContent(5),2.)
10369 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
10370 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
10371 + pow((pow(dSumWQuadraticFive5n4n5n2n2n,0.5)/dSumWLinearFive5n4n5n2n2n)
10372 * dSpreadFive5n4n5n2n2n*pow(pow(dSumWLinearFive5n4n5n2n2n,2.)/(pow(dSumWLinearFive5n4n5n2n2n,2.)-dSumWQuadraticFive5n4n5n2n2n),0.5),2.)
10373 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5)
10374 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10375 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,8))
10376 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(2))
10377 / (dSumWLinearTwo5n5n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10378 - 2.*f3pCorrelations->GetBinContent(2)
10379 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10380 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,69))
10381 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(13))
10382 / (dSumWLinearTwo5n5n*dSumWLinearFive5n4n5n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10383 - 2.*f2pCorrelations->GetBinContent(5)
10384 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10385 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,69))
10386 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(13))
10387 / (dSumWLinearThree4n2n2n*dSumWLinearFive5n4n5n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10388 if(dError>0.)
10389 {
10390 f5pCumulants->SetBinError(13,pow(dError,0.5));
10391 }
10392 } // end of if(...)
10393 } // end of {
e1d101a6 10394 f5pCumulants->SetBinContent(14,f5pCorrelations->GetBinContent(14)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5));
c10259fb 10395 {
10396 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10397 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10398 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10399 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
10400 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
10401 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
10402 Double_t dSumWLinearFive5n4n5n3n1n = 0.; // sum of linear event weights for <4>
10403 Double_t dSumWQuadraticFive5n4n5n3n1n = 0.; // sum of quadratic event weights <4>
10404 Double_t dSpreadFive5n4n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10405 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10406 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10407 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10408 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10409 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10410 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
10411 dSumWLinearFive5n4n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10412 dSumWQuadraticFive5n4n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10413 dSpreadFive5n4n5n3n1n = f5pCorrelations->GetBinError(14);
10414 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10415 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
10416 pow(dSumWLinearFive5n4n5n3n1n,2.)>dSumWQuadraticFive5n4n5n3n1n)
10417 {
10418 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
10419 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10420 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10421 + pow(f2pCorrelations->GetBinContent(5),2.)
10422 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
10423 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
10424 + pow((pow(dSumWQuadraticFive5n4n5n3n1n,0.5)/dSumWLinearFive5n4n5n3n1n)
10425 * dSpreadFive5n4n5n3n1n*pow(pow(dSumWLinearFive5n4n5n3n1n,2.)/(pow(dSumWLinearFive5n4n5n3n1n,2.)-dSumWQuadraticFive5n4n5n3n1n),0.5),2.)
10426 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5)
10427 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10428 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,11))
10429 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(6))
10430 / (dSumWLinearTwo5n5n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10431 - 2.*f3pCorrelations->GetBinContent(6)
10432 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10433 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,70))
10434 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(14))
10435 / (dSumWLinearTwo5n5n*dSumWLinearFive5n4n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10436 - 2.*f2pCorrelations->GetBinContent(5)
10437 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10438 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,70))
10439 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(14))
10440 / (dSumWLinearThree4n3n1n*dSumWLinearFive5n4n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10441 if(dError>0.)
10442 {
10443 f5pCumulants->SetBinError(14,pow(dError,0.5));
10444 }
10445 } // end of if(...)
10446 } // end of {
e1d101a6 10447 f5pCumulants->SetBinContent(15,f5pCorrelations->GetBinContent(15)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1));
c10259fb 10448 {
10449 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10450 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10451 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10452 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10453 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10454 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10455 Double_t dSumWLinearFive6n1n3n3n1n = 0.; // sum of linear event weights for <4>
10456 Double_t dSumWQuadraticFive6n1n3n3n1n = 0.; // sum of quadratic event weights <4>
10457 Double_t dSpreadFive6n1n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10458 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10459 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10460 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10461 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10462 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10463 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10464 dSumWLinearFive6n1n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10465 dSumWQuadraticFive6n1n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10466 dSpreadFive6n1n3n3n1n = f5pCorrelations->GetBinError(15);
10467 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10468 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10469 pow(dSumWLinearFive6n1n3n3n1n,2.)>dSumWQuadraticFive6n1n3n3n1n)
10470 {
10471 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10472 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10473 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10474 + pow(f2pCorrelations->GetBinContent(1),2.)
10475 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10476 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10477 + pow((pow(dSumWQuadraticFive6n1n3n3n1n,0.5)/dSumWLinearFive6n1n3n3n1n)
10478 * dSpreadFive6n1n3n3n1n*pow(pow(dSumWLinearFive6n1n3n3n1n,2.)/(pow(dSumWLinearFive6n1n3n3n1n,2.)-dSumWQuadraticFive6n1n3n3n1n),0.5),2.)
10479 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1)
10480 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10481 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,9))
10482 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(3))
10483 / (dSumWLinearTwo1n1n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10484 - 2.*f3pCorrelations->GetBinContent(3)
10485 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10486 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,71))
10487 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(15))
10488 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10489 - 2.*f2pCorrelations->GetBinContent(1)
10490 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10491 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,71))
10492 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(15))
10493 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n1n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10494 if(dError>0.)
10495 {
10496 f5pCumulants->SetBinError(15,pow(dError,0.5));
10497 }
10498 } // end of if(...)
10499 } // end of {
e1d101a6 10500 f5pCumulants->SetBinContent(16,f5pCorrelations->GetBinContent(16)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2));
c10259fb 10501 {
10502 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10503 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10504 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10505 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10506 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10507 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10508 Double_t dSumWLinearFive6n2n3n3n2n = 0.; // sum of linear event weights for <4>
10509 Double_t dSumWQuadraticFive6n2n3n3n2n = 0.; // sum of quadratic event weights <4>
10510 Double_t dSpreadFive6n2n3n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10511 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10512 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10513 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10514 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10515 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10516 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10517 dSumWLinearFive6n2n3n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10518 dSumWQuadraticFive6n2n3n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10519 dSpreadFive6n2n3n3n2n = f5pCorrelations->GetBinError(16);
10520 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10521 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10522 pow(dSumWLinearFive6n2n3n3n2n,2.)>dSumWQuadraticFive6n2n3n3n2n)
10523 {
10524 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10525 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10526 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10527 + pow(f2pCorrelations->GetBinContent(2),2.)
10528 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10529 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10530 + pow((pow(dSumWQuadraticFive6n2n3n3n2n,0.5)/dSumWLinearFive6n2n3n3n2n)
10531 * dSpreadFive6n2n3n3n2n*pow(pow(dSumWLinearFive6n2n3n3n2n,2.)/(pow(dSumWLinearFive6n2n3n3n2n,2.)-dSumWQuadraticFive6n2n3n3n2n),0.5),2.)
10532 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2)
10533 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10534 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,9))
10535 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(3))
10536 / (dSumWLinearTwo2n2n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10537 - 2.*f3pCorrelations->GetBinContent(3)
10538 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10539 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,72))
10540 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(16))
10541 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10542 - 2.*f2pCorrelations->GetBinContent(2)
10543 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10544 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,72))
10545 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(16))
10546 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n2n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10547 if(dError>0.)
10548 {
10549 f5pCumulants->SetBinError(16,pow(dError,0.5));
10550 }
10551 } // end of if(...)
10552 } // end of {
e1d101a6 10553 f5pCumulants->SetBinContent(17,f5pCorrelations->GetBinContent(17)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(1));
c10259fb 10554 {
10555 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10556 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10557 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10558 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
10559 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
10560 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
10561 Double_t dSumWLinearFive6n1n4n2n1n = 0.; // sum of linear event weights for <4>
10562 Double_t dSumWQuadraticFive6n1n4n2n1n = 0.; // sum of quadratic event weights <4>
10563 Double_t dSpreadFive6n1n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10564 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10565 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10566 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10567 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10568 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10569 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
10570 dSumWLinearFive6n1n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10571 dSumWQuadraticFive6n1n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10572 dSpreadFive6n1n4n2n1n = f5pCorrelations->GetBinError(17);
10573 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10574 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
10575 pow(dSumWLinearFive6n1n4n2n1n,2.)>dSumWQuadraticFive6n1n4n2n1n)
10576 {
10577 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
10578 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10579 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10580 + pow(f2pCorrelations->GetBinContent(1),2.)
10581 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
10582 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
10583 + pow((pow(dSumWQuadraticFive6n1n4n2n1n,0.5)/dSumWLinearFive6n1n4n2n1n)
10584 * dSpreadFive6n1n4n2n1n*pow(pow(dSumWLinearFive6n1n4n2n1n,2.)/(pow(dSumWLinearFive6n1n4n2n1n,2.)-dSumWQuadraticFive6n1n4n2n1n),0.5),2.)
10585 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(1)
10586 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10587 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,14))
10588 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(9))
10589 / (dSumWLinearTwo1n1n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10590 - 2.*f3pCorrelations->GetBinContent(9)
10591 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10592 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,73))
10593 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(17))
10594 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10595 - 2.*f2pCorrelations->GetBinContent(1)
10596 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10597 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,73))
10598 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(17))
10599 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n1n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10600 if(dError>0.)
10601 {
10602 f5pCumulants->SetBinError(17,pow(dError,0.5));
10603 }
10604 } // end of if(...)
10605 } // end of {
e1d101a6 10606 f5pCumulants->SetBinContent(18,f5pCorrelations->GetBinContent(18)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(3));
c10259fb 10607 {
10608 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10609 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10610 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10611 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
10612 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
10613 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
10614 Double_t dSumWLinearFive6n3n4n3n2n = 0.; // sum of linear event weights for <4>
10615 Double_t dSumWQuadraticFive6n3n4n3n2n = 0.; // sum of quadratic event weights <4>
10616 Double_t dSpreadFive6n3n4n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10617 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10618 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10619 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10620 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10621 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10622 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
10623 dSumWLinearFive6n3n4n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10624 dSumWQuadraticFive6n3n4n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10625 dSpreadFive6n3n4n3n2n = f5pCorrelations->GetBinError(18);
10626 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10627 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
10628 pow(dSumWLinearFive6n3n4n3n2n,2.)>dSumWQuadraticFive6n3n4n3n2n)
10629 {
10630 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
10631 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10632 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10633 + pow(f2pCorrelations->GetBinContent(3),2.)
10634 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
10635 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
10636 + pow((pow(dSumWQuadraticFive6n3n4n3n2n,0.5)/dSumWLinearFive6n3n4n3n2n)
10637 * dSpreadFive6n3n4n3n2n*pow(pow(dSumWLinearFive6n3n4n3n2n,2.)/(pow(dSumWLinearFive6n3n4n3n2n,2.)-dSumWQuadraticFive6n3n4n3n2n),0.5),2.)
10638 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(3)
10639 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10640 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,14))
10641 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(9))
10642 / (dSumWLinearTwo3n3n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10643 - 2.*f3pCorrelations->GetBinContent(9)
10644 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10645 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,74))
10646 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(18))
10647 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10648 - 2.*f2pCorrelations->GetBinContent(3)
10649 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10650 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,74))
10651 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(18))
10652 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n3n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10653 if(dError>0.)
10654 {
10655 f5pCumulants->SetBinError(18,pow(dError,0.5));
10656 }
10657 } // end of if(...)
10658 } // end of {
e1d101a6 10659 f5pCumulants->SetBinContent(19,f5pCorrelations->GetBinContent(19)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4));
c10259fb 10660 {
10661 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10662 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10663 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10664 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10665 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10666 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10667 Double_t dSumWLinearFive6n4n4n3n3n = 0.; // sum of linear event weights for <4>
10668 Double_t dSumWQuadraticFive6n4n4n3n3n = 0.; // sum of quadratic event weights <4>
10669 Double_t dSpreadFive6n4n4n3n3n = 0.; // weighted and biased estimator for sigma of <4>
10670 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10671 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10672 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10673 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10674 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10675 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10676 dSumWLinearFive6n4n4n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10677 dSumWQuadraticFive6n4n4n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10678 dSpreadFive6n4n4n3n3n = f5pCorrelations->GetBinError(19);
10679 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10680 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10681 pow(dSumWLinearFive6n4n4n3n3n,2.)>dSumWQuadraticFive6n4n4n3n3n)
10682 {
10683 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10684 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10685 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10686 + pow(f2pCorrelations->GetBinContent(4),2.)
10687 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10688 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10689 + pow((pow(dSumWQuadraticFive6n4n4n3n3n,0.5)/dSumWLinearFive6n4n4n3n3n)
10690 * dSpreadFive6n4n4n3n3n*pow(pow(dSumWLinearFive6n4n4n3n3n,2.)/(pow(dSumWLinearFive6n4n4n3n3n,2.)-dSumWQuadraticFive6n4n4n3n3n),0.5),2.)
10691 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4)
10692 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10693 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,9))
10694 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(3))
10695 / (dSumWLinearTwo4n4n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10696 - 2.*f3pCorrelations->GetBinContent(3)
10697 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10698 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,75))
10699 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(19))
10700 / (dSumWLinearTwo4n4n*dSumWLinearFive6n4n4n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10701 - 2.*f2pCorrelations->GetBinContent(4)
10702 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10703 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,75))
10704 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(19))
10705 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n4n4n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10706 if(dError>0.)
10707 {
10708 f5pCumulants->SetBinError(19,pow(dError,0.5));
10709 }
10710 } // end of if(...)
10711 } // end of {
e1d101a6 10712 f5pCumulants->SetBinContent(20,f5pCorrelations->GetBinContent(20)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(2));
c10259fb 10713 {
10714 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10715 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10716 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10717 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10718 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10719 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10720 Double_t dSumWLinearFive6n2n5n2n1n = 0.; // sum of linear event weights for <4>
10721 Double_t dSumWQuadraticFive6n2n5n2n1n = 0.; // sum of quadratic event weights <4>
10722 Double_t dSpreadFive6n2n5n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10723 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10724 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10725 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10726 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10727 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10728 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10729 dSumWLinearFive6n2n5n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10730 dSumWQuadraticFive6n2n5n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10731 dSpreadFive6n2n5n2n1n = f5pCorrelations->GetBinError(20);
10732 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10733 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10734 pow(dSumWLinearFive6n2n5n2n1n,2.)>dSumWQuadraticFive6n2n5n2n1n)
10735 {
10736 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10737 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10738 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10739 + pow(f2pCorrelations->GetBinContent(2),2.)
10740 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10741 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10742 + pow((pow(dSumWQuadraticFive6n2n5n2n1n,0.5)/dSumWLinearFive6n2n5n2n1n)
10743 * dSpreadFive6n2n5n2n1n*pow(pow(dSumWLinearFive6n2n5n2n1n,2.)/(pow(dSumWLinearFive6n2n5n2n1n,2.)-dSumWQuadraticFive6n2n5n2n1n),0.5),2.)
10744 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(2)
10745 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10746 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,15))
10747 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(10))
10748 / (dSumWLinearTwo2n2n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10749 - 2.*f3pCorrelations->GetBinContent(10)
10750 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10751 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,76))
10752 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(20))
10753 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10754 - 2.*f2pCorrelations->GetBinContent(2)
10755 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10756 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,76))
10757 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(20))
10758 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n2n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10759 if(dError>0.)
10760 {
10761 f5pCumulants->SetBinError(20,pow(dError,0.5));
10762 }
10763 } // end of if(...)
10764 } // end of {
e1d101a6 10765 f5pCumulants->SetBinContent(21,f5pCorrelations->GetBinContent(21)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(3));
c10259fb 10766 {
10767 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10768 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10769 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10770 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10771 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10772 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10773 Double_t dSumWLinearFive6n3n5n3n1n = 0.; // sum of linear event weights for <4>
10774 Double_t dSumWQuadraticFive6n3n5n3n1n = 0.; // sum of quadratic event weights <4>
10775 Double_t dSpreadFive6n3n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10776 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10777 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10778 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10779 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10780 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10781 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10782 dSumWLinearFive6n3n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10783 dSumWQuadraticFive6n3n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10784 dSpreadFive6n3n5n3n1n = f5pCorrelations->GetBinError(21);
10785 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10786 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10787 pow(dSumWLinearFive6n3n5n3n1n,2.)>dSumWQuadraticFive6n3n5n3n1n)
10788 {
10789 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10790 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10791 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10792 + pow(f2pCorrelations->GetBinContent(3),2.)
10793 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10794 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10795 + pow((pow(dSumWQuadraticFive6n3n5n3n1n,0.5)/dSumWLinearFive6n3n5n3n1n)
10796 * dSpreadFive6n3n5n3n1n*pow(pow(dSumWLinearFive6n3n5n3n1n,2.)/(pow(dSumWLinearFive6n3n5n3n1n,2.)-dSumWQuadraticFive6n3n5n3n1n),0.5),2.)
10797 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(3)
10798 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10799 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,15))
10800 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(10))
10801 / (dSumWLinearTwo3n3n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10802 - 2.*f3pCorrelations->GetBinContent(10)
10803 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10804 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,77))
10805 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(21))
10806 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10807 - 2.*f2pCorrelations->GetBinContent(3)
10808 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10809 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,77))
10810 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(21))
10811 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10812 if(dError>0.)
10813 {
10814 f5pCumulants->SetBinError(21,pow(dError,0.5));
10815 }
10816 } // end of if(...)
10817 } // end of {
e1d101a6 10818 f5pCumulants->SetBinContent(22,f5pCorrelations->GetBinContent(22)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(4));
c10259fb 10819 {
10820 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10821 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10822 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10823 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10824 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10825 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10826 Double_t dSumWLinearFive6n3n5n3n1n = 0.; // sum of linear event weights for <4>
10827 Double_t dSumWQuadraticFive6n3n5n3n1n = 0.; // sum of quadratic event weights <4>
10828 Double_t dSpreadFive6n3n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10829 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10830 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10831 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10832 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10833 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10834 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10835 dSumWLinearFive6n3n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10836 dSumWQuadraticFive6n3n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10837 dSpreadFive6n3n5n3n1n = f5pCorrelations->GetBinError(22);
10838 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10839 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10840 pow(dSumWLinearFive6n3n5n3n1n,2.)>dSumWQuadraticFive6n3n5n3n1n)
10841 {
10842 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10843 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10844 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10845 + pow(f2pCorrelations->GetBinContent(4),2.)
10846 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10847 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10848 + pow((pow(dSumWQuadraticFive6n3n5n3n1n,0.5)/dSumWLinearFive6n3n5n3n1n)
10849 * dSpreadFive6n3n5n3n1n*pow(pow(dSumWLinearFive6n3n5n3n1n,2.)/(pow(dSumWLinearFive6n3n5n3n1n,2.)-dSumWQuadraticFive6n3n5n3n1n),0.5),2.)
10850 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(4)
10851 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10852 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,15))
10853 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(10))
10854 / (dSumWLinearTwo4n4n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10855 - 2.*f3pCorrelations->GetBinContent(10)
10856 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10857 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,78))
10858 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(22))
10859 / (dSumWLinearTwo4n4n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10860 - 2.*f2pCorrelations->GetBinContent(4)
10861 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10862 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,78))
10863 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(22))
10864 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10865 if(dError>0.)
10866 {
10867 f5pCumulants->SetBinError(22,pow(dError,0.5));
10868 }
10869 } // end of if(...)
10870 } // end of {
e1d101a6 10871 f5pCumulants->SetBinContent(23,f5pCorrelations->GetBinContent(23)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5));
c10259fb 10872 {
10873 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10874 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10875 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10876 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10877 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10878 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10879 Double_t dSumWLinearFive6n5n5n3n3n = 0.; // sum of linear event weights for <4>
10880 Double_t dSumWQuadraticFive6n5n5n3n3n = 0.; // sum of quadratic event weights <4>
10881 Double_t dSpreadFive6n5n5n3n3n = 0.; // weighted and biased estimator for sigma of <4>
10882 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10883 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10884 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10885 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10886 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10887 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10888 dSumWLinearFive6n5n5n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10889 dSumWQuadraticFive6n5n5n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10890 dSpreadFive6n5n5n3n3n = f5pCorrelations->GetBinError(23);
10891 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10892 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10893 pow(dSumWLinearFive6n5n5n3n3n,2.)>dSumWQuadraticFive6n5n5n3n3n)
10894 {
10895 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10896 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10897 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10898 + pow(f2pCorrelations->GetBinContent(5),2.)
10899 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10900 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10901 + pow((pow(dSumWQuadraticFive6n5n5n3n3n,0.5)/dSumWLinearFive6n5n5n3n3n)
10902 * dSpreadFive6n5n5n3n3n*pow(pow(dSumWLinearFive6n5n5n3n3n,2.)/(pow(dSumWLinearFive6n5n5n3n3n,2.)-dSumWQuadraticFive6n5n5n3n3n),0.5),2.)
10903 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5)
10904 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10905 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,9))
10906 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(3))
10907 / (dSumWLinearTwo5n5n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10908 - 2.*f3pCorrelations->GetBinContent(3)
10909 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10910 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,79))
10911 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(23))
10912 / (dSumWLinearTwo5n5n*dSumWLinearFive6n5n5n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10913 - 2.*f2pCorrelations->GetBinContent(5)
10914 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10915 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,79))
10916 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(23))
10917 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n5n5n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10918 if(dError>0.)
10919 {
10920 f5pCumulants->SetBinError(23,pow(dError,0.5));
10921 }
10922 } // end of if(...)
10923 } // end of {
e1d101a6 10924 f5pCumulants->SetBinContent(24,f5pCorrelations->GetBinContent(24)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6));
c10259fb 10925 {
10926 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
10927 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
10928 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
10929 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
10930 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
10931 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
10932 Double_t dSumWLinearFive6n2n6n1n1n = 0.; // sum of linear event weights for <4>
10933 Double_t dSumWQuadraticFive6n2n6n1n1n = 0.; // sum of quadratic event weights <4>
10934 Double_t dSpreadFive6n2n6n1n1n = 0.; // weighted and biased estimator for sigma of <4>
10935 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10936 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10937 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
10938 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10939 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10940 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
10941 dSumWLinearFive6n2n6n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10942 dSumWQuadraticFive6n2n6n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10943 dSpreadFive6n2n6n1n1n = f5pCorrelations->GetBinError(24);
10944 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
10945 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
10946 pow(dSumWLinearFive6n2n6n1n1n,2.)>dSumWQuadraticFive6n2n6n1n1n)
10947 {
10948 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
10949 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
10950 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
10951 + pow(f2pCorrelations->GetBinContent(6),2.)
10952 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
10953 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
10954 + pow((pow(dSumWQuadraticFive6n2n6n1n1n,0.5)/dSumWLinearFive6n2n6n1n1n)
10955 * dSpreadFive6n2n6n1n1n*pow(pow(dSumWLinearFive6n2n6n1n1n,2.)/(pow(dSumWLinearFive6n2n6n1n1n,2.)-dSumWQuadraticFive6n2n6n1n1n),0.5),2.)
10956 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6)
10957 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10958 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,7))
10959 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(1))
10960 / (dSumWLinearTwo6n6n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10961 - 2.*f3pCorrelations->GetBinContent(1)
10962 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10963 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,80))
10964 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(24))
10965 / (dSumWLinearTwo6n6n*dSumWLinearFive6n2n6n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10966 - 2.*f2pCorrelations->GetBinContent(6)
10967 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10968 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,80))
10969 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(24))
10970 / (dSumWLinearThree2n1n1n*dSumWLinearFive6n2n6n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10971 if(dError>0.)
10972 {
10973 f5pCumulants->SetBinError(24,pow(dError,0.5));
10974 }
10975 } // end of if(...)
10976 } // end of {
e1d101a6 10977 f5pCumulants->SetBinContent(25,f5pCorrelations->GetBinContent(25)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6));
c10259fb 10978 {
10979 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
10980 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
10981 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
10982 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
10983 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
10984 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
10985 Double_t dSumWLinearFive6n3n6n2n1n = 0.; // sum of linear event weights for <4>
10986 Double_t dSumWQuadraticFive6n3n6n2n1n = 0.; // sum of quadratic event weights <4>
10987 Double_t dSpreadFive6n3n6n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10988 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10989 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10990 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
10991 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10992 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10993 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
10994 dSumWLinearFive6n3n6n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10995 dSumWQuadraticFive6n3n6n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10996 dSpreadFive6n3n6n2n1n = f5pCorrelations->GetBinError(25);
10997 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
10998 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
10999 pow(dSumWLinearFive6n3n6n2n1n,2.)>dSumWQuadraticFive6n3n6n2n1n)
11000 {
11001 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
11002 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11003 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11004 + pow(f2pCorrelations->GetBinContent(6),2.)
11005 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11006 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11007 + pow((pow(dSumWQuadraticFive6n3n6n2n1n,0.5)/dSumWLinearFive6n3n6n2n1n)
11008 * dSpreadFive6n3n6n2n1n*pow(pow(dSumWLinearFive6n3n6n2n1n,2.)/(pow(dSumWLinearFive6n3n6n2n1n,2.)-dSumWQuadraticFive6n3n6n2n1n),0.5),2.)
11009 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6)
11010 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11011 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,10))
11012 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(5))
11013 / (dSumWLinearTwo6n6n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11014 - 2.*f3pCorrelations->GetBinContent(5)
11015 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11016 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,81))
11017 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(25))
11018 / (dSumWLinearTwo6n6n*dSumWLinearFive6n3n6n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11019 - 2.*f2pCorrelations->GetBinContent(6)
11020 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11021 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,81))
11022 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(25))
11023 / (dSumWLinearThree3n2n1n*dSumWLinearFive6n3n6n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11024 if(dError>0.)
11025 {
11026 f5pCumulants->SetBinError(25,pow(dError,0.5));
11027 }
11028 } // end of if(...)
11029 } // end of {
e1d101a6 11030 f5pCumulants->SetBinContent(26,f5pCorrelations->GetBinContent(26)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6));
c10259fb 11031 {
11032 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11033 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11034 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11035 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11036 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11037 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11038 Double_t dSumWLinearFive6n4n6n2n2n = 0.; // sum of linear event weights for <4>
11039 Double_t dSumWQuadraticFive6n4n6n2n2n = 0.; // sum of quadratic event weights <4>
11040 Double_t dSpreadFive6n4n6n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11041 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11042 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11043 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11044 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11045 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11046 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11047 dSumWLinearFive6n4n6n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11048 dSumWQuadraticFive6n4n6n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11049 dSpreadFive6n4n6n2n2n = f5pCorrelations->GetBinError(26);
11050 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11051 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11052 pow(dSumWLinearFive6n4n6n2n2n,2.)>dSumWQuadraticFive6n4n6n2n2n)
11053 {
11054 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
11055 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11056 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11057 + pow(f2pCorrelations->GetBinContent(6),2.)
11058 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11059 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11060 + pow((pow(dSumWQuadraticFive6n4n6n2n2n,0.5)/dSumWLinearFive6n4n6n2n2n)
11061 * dSpreadFive6n4n6n2n2n*pow(pow(dSumWLinearFive6n4n6n2n2n,2.)/(pow(dSumWLinearFive6n4n6n2n2n,2.)-dSumWQuadraticFive6n4n6n2n2n),0.5),2.)
11062 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6)
11063 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11064 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,8))
11065 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(2))
11066 / (dSumWLinearTwo6n6n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11067 - 2.*f3pCorrelations->GetBinContent(2)
11068 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11069 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,82))
11070 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(26))
11071 / (dSumWLinearTwo6n6n*dSumWLinearFive6n4n6n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11072 - 2.*f2pCorrelations->GetBinContent(6)
11073 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11074 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,82))
11075 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(26))
11076 / (dSumWLinearThree4n2n2n*dSumWLinearFive6n4n6n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11077 if(dError>0.)
11078 {
11079 f5pCumulants->SetBinError(26,pow(dError,0.5));
11080 }
11081 } // end of if(...)
11082 } // end of {
e1d101a6 11083 f5pCumulants->SetBinContent(27,f5pCorrelations->GetBinContent(27)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(6));
c10259fb 11084 {
11085 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11086 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11087 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11088 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11089 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11090 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11091 Double_t dSumWLinearFive6n4n6n3n1n = 0.; // sum of linear event weights for <4>
11092 Double_t dSumWQuadraticFive6n4n6n3n1n = 0.; // sum of quadratic event weights <4>
11093 Double_t dSpreadFive6n4n6n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11094 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11095 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11096 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11097 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11098 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11099 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11100 dSumWLinearFive6n4n6n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11101 dSumWQuadraticFive6n4n6n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11102 dSpreadFive6n4n6n3n1n = f5pCorrelations->GetBinError(27);
11103 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11104 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11105 pow(dSumWLinearFive6n4n6n3n1n,2.)>dSumWQuadraticFive6n4n6n3n1n)
11106 {
11107 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
11108 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11109 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11110 + pow(f2pCorrelations->GetBinContent(6),2.)
11111 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11112 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11113 + pow((pow(dSumWQuadraticFive6n4n6n3n1n,0.5)/dSumWLinearFive6n4n6n3n1n)
11114 * dSpreadFive6n4n6n3n1n*pow(pow(dSumWLinearFive6n4n6n3n1n,2.)/(pow(dSumWLinearFive6n4n6n3n1n,2.)-dSumWQuadraticFive6n4n6n3n1n),0.5),2.)
11115 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(6)
11116 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11117 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,11))
11118 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(6))
11119 / (dSumWLinearTwo6n6n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11120 - 2.*f3pCorrelations->GetBinContent(6)
11121 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11122 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,83))
11123 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(27))
11124 / (dSumWLinearTwo6n6n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11125 - 2.*f2pCorrelations->GetBinContent(6)
11126 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11127 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,83))
11128 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(27))
11129 / (dSumWLinearThree4n3n1n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11130 if(dError>0.)
11131 {
11132 f5pCumulants->SetBinError(27,pow(dError,0.5));
11133 }
11134 } // end of if(...)
11135 } // end of {
e1d101a6 11136 f5pCumulants->SetBinContent(28,f5pCorrelations->GetBinContent(28)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(5));
c10259fb 11137 {
11138 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
11139 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
11140 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
11141 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
11142 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
11143 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
11144 Double_t dSumWLinearFive6n4n6n3n1n = 0.; // sum of linear event weights for <4>
11145 Double_t dSumWQuadraticFive6n4n6n3n1n = 0.; // sum of quadratic event weights <4>
11146 Double_t dSpreadFive6n4n6n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11147 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11148 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11149 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
11150 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11151 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11152 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
11153 dSumWLinearFive6n4n6n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11154 dSumWQuadraticFive6n4n6n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11155 dSpreadFive6n4n6n3n1n = f5pCorrelations->GetBinError(28);
11156 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
11157 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
11158 pow(dSumWLinearFive6n4n6n3n1n,2.)>dSumWQuadraticFive6n4n6n3n1n)
11159 {
11160 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
11161 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
11162 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
11163 + pow(f2pCorrelations->GetBinContent(5),2.)
11164 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
11165 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
11166 + pow((pow(dSumWQuadraticFive6n4n6n3n1n,0.5)/dSumWLinearFive6n4n6n3n1n)
11167 * dSpreadFive6n4n6n3n1n*pow(pow(dSumWLinearFive6n4n6n3n1n,2.)/(pow(dSumWLinearFive6n4n6n3n1n,2.)-dSumWQuadraticFive6n4n6n3n1n),0.5),2.)
11168 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(5)
11169 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11170 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,14))
11171 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(9))
11172 / (dSumWLinearTwo5n5n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11173 - 2.*f3pCorrelations->GetBinContent(9)
11174 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11175 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,84))
11176 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(28))
11177 / (dSumWLinearTwo5n5n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11178 - 2.*f2pCorrelations->GetBinContent(5)
11179 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11180 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,84))
11181 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(28))
11182 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11183 if(dError>0.)
11184 {
11185 f5pCumulants->SetBinError(28,pow(dError,0.5));
11186 }
11187 } // end of if(...)
11188 } // end of {
e1d101a6 11189 f5pCumulants->SetBinContent(29,f5pCorrelations->GetBinContent(29)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(6));
c10259fb 11190 {
11191 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11192 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11193 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11194 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
11195 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
11196 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
11197 Double_t dSumWLinearFive6n5n6n3n2n = 0.; // sum of linear event weights for <4>
11198 Double_t dSumWQuadraticFive6n5n6n3n2n = 0.; // sum of quadratic event weights <4>
11199 Double_t dSpreadFive6n5n6n3n2n = 0.; // weighted and biased estimator for sigma of <4>
11200 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11201 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11202 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11203 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11204 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11205 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
11206 dSumWLinearFive6n5n6n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11207 dSumWQuadraticFive6n5n6n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11208 dSpreadFive6n5n6n3n2n = f5pCorrelations->GetBinError(29);
11209 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11210 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
11211 pow(dSumWLinearFive6n5n6n3n2n,2.)>dSumWQuadraticFive6n5n6n3n2n)
11212 {
11213 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
11214 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11215 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11216 + pow(f2pCorrelations->GetBinContent(6),2.)
11217 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
11218 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
11219 + pow((pow(dSumWQuadraticFive6n5n6n3n2n,0.5)/dSumWLinearFive6n5n6n3n2n)
11220 * dSpreadFive6n5n6n3n2n*pow(pow(dSumWLinearFive6n5n6n3n2n,2.)/(pow(dSumWLinearFive6n5n6n3n2n,2.)-dSumWQuadraticFive6n5n6n3n2n),0.5),2.)
11221 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(6)
11222 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11223 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,12))
11224 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(7))
11225 / (dSumWLinearTwo6n6n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11226 - 2.*f3pCorrelations->GetBinContent(7)
11227 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11228 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,85))
11229 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(29))
11230 / (dSumWLinearTwo6n6n*dSumWLinearFive6n5n6n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11231 - 2.*f2pCorrelations->GetBinContent(6)
11232 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11233 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,85))
11234 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(29))
11235 / (dSumWLinearThree5n3n2n*dSumWLinearFive6n5n6n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11236 if(dError>0.)
11237 {
11238 f5pCumulants->SetBinError(29,pow(dError,0.5));
11239 }
11240 } // end of if(...)
11241 } // end of {
e1d101a6 11242 f5pCumulants->SetBinContent(30,f5pCorrelations->GetBinContent(30)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(6));
c10259fb 11243 {
11244 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11245 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11246 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11247 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
11248 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
11249 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
11250 Double_t dSumWLinearFive6n5n6n4n1n = 0.; // sum of linear event weights for <4>
11251 Double_t dSumWQuadraticFive6n5n6n4n1n = 0.; // sum of quadratic event weights <4>
11252 Double_t dSpreadFive6n5n6n4n1n = 0.; // weighted and biased estimator for sigma of <4>
11253 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11254 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11255 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11256 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11257 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11258 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
11259 dSumWLinearFive6n5n6n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11260 dSumWQuadraticFive6n5n6n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11261 dSpreadFive6n5n6n4n1n = f5pCorrelations->GetBinError(30);
11262 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11263 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
11264 pow(dSumWLinearFive6n5n6n4n1n,2.)>dSumWQuadraticFive6n5n6n4n1n)
11265 {
11266 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
11267 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11268 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11269 + pow(f2pCorrelations->GetBinContent(6),2.)
11270 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
11271 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
11272 + pow((pow(dSumWQuadraticFive6n5n6n4n1n,0.5)/dSumWLinearFive6n5n6n4n1n)
11273 * dSpreadFive6n5n6n4n1n*pow(pow(dSumWLinearFive6n5n6n4n1n,2.)/(pow(dSumWLinearFive6n5n6n4n1n,2.)-dSumWQuadraticFive6n5n6n4n1n),0.5),2.)
11274 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(6)
11275 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11276 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,13))
11277 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(8))
11278 / (dSumWLinearTwo6n6n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11279 - 2.*f3pCorrelations->GetBinContent(8)
11280 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11281 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,86))
11282 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(30))
11283 / (dSumWLinearTwo6n6n*dSumWLinearFive6n5n6n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11284 - 2.*f2pCorrelations->GetBinContent(6)
11285 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11286 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,86))
11287 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(30))
11288 / (dSumWLinearThree5n4n1n*dSumWLinearFive6n5n6n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11289 if(dError>0.)
11290 {
11291 f5pCumulants->SetBinError(30,pow(dError,0.5));
11292 }
11293 } // end of if(...)
11294 } // end of {
e1d101a6 11295 // d2) "Two distinct harmonics":
11296 f5pCumulants->SetBinContent(32,f5pCorrelations->GetBinContent(32)-3.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(1));
c10259fb 11297 {
11298 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11299 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11300 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11301 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11302 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11303 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11304 Double_t dSumWLinearFive2n1n1n1n1n = 0.; // sum of linear event weights for <4>
11305 Double_t dSumWQuadraticFive2n1n1n1n1n = 0.; // sum of quadratic event weights <4>
11306 Double_t dSpreadFive2n1n1n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11307 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11308 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11309 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11310 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11311 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11312 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11313 dSumWLinearFive2n1n1n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11314 dSumWQuadraticFive2n1n1n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11315 dSpreadFive2n1n1n1n1n = f5pCorrelations->GetBinError(32);
11316 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11317 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11318 pow(dSumWLinearFive2n1n1n1n1n,2.)>dSumWQuadraticFive2n1n1n1n1n)
11319 {
11320 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(1),2.)
11321 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11322 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11323 + 9.*pow(f2pCorrelations->GetBinContent(1),2.)
11324 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11325 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11326 + pow((pow(dSumWQuadraticFive2n1n1n1n1n,0.5)/dSumWLinearFive2n1n1n1n1n)
11327 * dSpreadFive2n1n1n1n1n*pow(pow(dSumWLinearFive2n1n1n1n1n,2.)/(pow(dSumWLinearFive2n1n1n1n1n,2.)-dSumWQuadraticFive2n1n1n1n1n),0.5),2.)
11328 + 9.*2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(1)
11329 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11330 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,7))
11331 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(1))
11332 / (dSumWLinearTwo1n1n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11333 - 3.*2.*f3pCorrelations->GetBinContent(1)
11334 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11335 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,87))
11336 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(32))
11337 / (dSumWLinearTwo1n1n*dSumWLinearFive2n1n1n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11338 - 3.*2.*f2pCorrelations->GetBinContent(1)
11339 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11340 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,87))
11341 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(32))
11342 / (dSumWLinearThree2n1n1n*dSumWLinearFive2n1n1n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11343 if(dError>0.)
11344 {
11345 f5pCumulants->SetBinError(32,pow(dError,0.5));
11346 }
11347 } // end of if(...)
11348 } // end of {
e1d101a6 11349 f5pCumulants->SetBinContent(33,f5pCorrelations->GetBinContent(33)-2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2));
c10259fb 11350 {
11351 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11352 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11353 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11354 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11355 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11356 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11357 Double_t dSumWLinearFive2n2n2n1n1n = 0.; // sum of linear event weights for <4>
11358 Double_t dSumWQuadraticFive2n2n2n1n1n = 0.; // sum of quadratic event weights <4>
11359 Double_t dSpreadFive2n2n2n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11360 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11361 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11362 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11363 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11364 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11365 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11366 dSumWLinearFive2n2n2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11367 dSumWQuadraticFive2n2n2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11368 dSpreadFive2n2n2n1n1n = f5pCorrelations->GetBinError(33);
11369 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11370 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11371 pow(dSumWLinearFive2n2n2n1n1n,2.)>dSumWQuadraticFive2n2n2n1n1n)
11372 {
11373 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(1),2.)
11374 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11375 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11376 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11377 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11378 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11379 + pow((pow(dSumWQuadraticFive2n2n2n1n1n,0.5)/dSumWLinearFive2n2n2n1n1n)
11380 * dSpreadFive2n2n2n1n1n*pow(pow(dSumWLinearFive2n2n2n1n1n,2.)/(pow(dSumWLinearFive2n2n2n1n1n,2.)-dSumWQuadraticFive2n2n2n1n1n),0.5),2.)
11381 + 4.*2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2)
11382 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11383 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,7))
11384 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(1))
11385 / (dSumWLinearTwo2n2n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11386 - 2.*2.*f3pCorrelations->GetBinContent(1)
11387 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11388 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,88))
11389 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(33))
11390 / (dSumWLinearTwo2n2n*dSumWLinearFive2n2n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11391 - 2.*2.*f2pCorrelations->GetBinContent(2)
11392 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11393 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,88))
11394 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(33))
11395 / (dSumWLinearThree2n1n1n*dSumWLinearFive2n2n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11396 if(dError>0.)
11397 {
11398 f5pCumulants->SetBinError(33,pow(dError,0.5));
11399 }
11400 } // end of if(...)
11401 } // end of {
11402 f5pCumulants->SetBinContent(34,f5pCorrelations->GetBinContent(34));
11403 {
11404 Double_t dSumWLinear = 0.; // sum of linear event weights
11405 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11406 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11407 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11408 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11409 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11410 dSpread = f5pCorrelations->GetBinError(34);
11411 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11412 {
11413 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11414 f5pCumulants->SetBinError(34,dError);
11415 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11416 }
11417 f5pCumulants->SetBinContent(35,f5pCorrelations->GetBinContent(35));
11418 {
11419 Double_t dSumWLinear = 0.; // sum of linear event weights
11420 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11421 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11422 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11423 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11424 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11425 dSpread = f5pCorrelations->GetBinError(35);
11426 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11427 {
11428 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11429 f5pCumulants->SetBinError(35,dError);
11430 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11431 }
e1d101a6 11432 f5pCumulants->SetBinContent(36,f5pCorrelations->GetBinContent(36)-3.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(2));
c10259fb 11433 {
11434 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11435 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11436 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11437 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11438 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11439 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11440 Double_t dSumWLinearFive4n2n2n2n2n = 0.; // sum of linear event weights for <4>
11441 Double_t dSumWQuadraticFive4n2n2n2n2n = 0.; // sum of quadratic event weights <4>
11442 Double_t dSpreadFive4n2n2n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11443 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11444 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11445 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11446 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11447 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11448 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11449 dSumWLinearFive4n2n2n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11450 dSumWQuadraticFive4n2n2n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11451 dSpreadFive4n2n2n2n2n = f5pCorrelations->GetBinError(36);
11452 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11453 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11454 pow(dSumWLinearFive4n2n2n2n2n,2.)>dSumWQuadraticFive4n2n2n2n2n)
11455 {
11456 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(2),2.)
11457 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11458 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11459 + 9.*pow(f2pCorrelations->GetBinContent(2),2.)
11460 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11461 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11462 + pow((pow(dSumWQuadraticFive4n2n2n2n2n,0.5)/dSumWLinearFive4n2n2n2n2n)
11463 * dSpreadFive4n2n2n2n2n*pow(pow(dSumWLinearFive4n2n2n2n2n,2.)/(pow(dSumWLinearFive4n2n2n2n2n,2.)-dSumWQuadraticFive4n2n2n2n2n),0.5),2.)
11464 + 9.*2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(2)
11465 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11466 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,8))
11467 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(2))
11468 / (dSumWLinearTwo2n2n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11469 - 3.*2.*f3pCorrelations->GetBinContent(2)
11470 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11471 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,91))
11472 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(36))
11473 / (dSumWLinearTwo2n2n*dSumWLinearFive4n2n2n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11474 - 3.*2.*f2pCorrelations->GetBinContent(2)
11475 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11476 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,91))
11477 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(36))
11478 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n2n2n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11479 if(dError>0.)
11480 {
11481 f5pCumulants->SetBinError(36,pow(dError,0.5));
11482 }
11483 } // end of if(...)
11484 } // end of {
e1d101a6 11485 f5pCumulants->SetBinContent(37,f5pCorrelations->GetBinContent(37)-2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4));
c10259fb 11486 {
11487 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
11488 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
11489 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
11490 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11491 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11492 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11493 Double_t dSumWLinearFive4n4n4n2n2n = 0.; // sum of linear event weights for <4>
11494 Double_t dSumWQuadraticFive4n4n4n2n2n = 0.; // sum of quadratic event weights <4>
11495 Double_t dSpreadFive4n4n4n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11496 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11497 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11498 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
11499 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11500 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11501 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11502 dSumWLinearFive4n4n4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11503 dSumWQuadraticFive4n4n4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11504 dSpreadFive4n4n4n2n2n = f5pCorrelations->GetBinError(37);
11505 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
11506 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11507 pow(dSumWLinearFive4n4n4n2n2n,2.)>dSumWQuadraticFive4n4n4n2n2n)
11508 {
11509 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(2),2.)
11510 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
11511 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
11512 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
11513 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11514 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11515 + pow((pow(dSumWQuadraticFive4n4n4n2n2n,0.5)/dSumWLinearFive4n4n4n2n2n)
11516 * dSpreadFive4n4n4n2n2n*pow(pow(dSumWLinearFive4n4n4n2n2n,2.)/(pow(dSumWLinearFive4n4n4n2n2n,2.)-dSumWQuadraticFive4n4n4n2n2n),0.5),2.)
11517 + 4.*2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4)
11518 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11519 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,8))
11520 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(2))
11521 / (dSumWLinearTwo4n4n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11522 - 2.*2.*f3pCorrelations->GetBinContent(2)
11523 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11524 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,92))
11525 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(37))
11526 / (dSumWLinearTwo4n4n*dSumWLinearFive4n4n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11527 - 2.*2.*f2pCorrelations->GetBinContent(4)
11528 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11529 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,92))
11530 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(37))
11531 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n4n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11532 if(dError>0.)
11533 {
11534 f5pCumulants->SetBinError(37,pow(dError,0.5));
11535 }
11536 } // end of if(...)
11537 } // end of {
e1d101a6 11538 f5pCumulants->SetBinContent(38,f5pCorrelations->GetBinContent(38)-3.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(3));
c10259fb 11539 {
11540 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11541 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11542 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11543 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
11544 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
11545 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
11546 Double_t dSumWLinearFive6n3n3n3n3n = 0.; // sum of linear event weights for <4>
11547 Double_t dSumWQuadraticFive6n3n3n3n3n = 0.; // sum of quadratic event weights <4>
11548 Double_t dSpreadFive6n3n3n3n3n = 0.; // weighted and biased estimator for sigma of <4>
11549 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11550 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11551 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11552 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11553 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11554 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
11555 dSumWLinearFive6n3n3n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11556 dSumWQuadraticFive6n3n3n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11557 dSpreadFive6n3n3n3n3n = f5pCorrelations->GetBinError(38);
11558 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11559 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
11560 pow(dSumWLinearFive6n3n3n3n3n,2.)>dSumWQuadraticFive6n3n3n3n3n)
11561 {
11562 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(3),2.)
11563 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11564 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11565 + 9.*pow(f2pCorrelations->GetBinContent(3),2.)
11566 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
11567 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
11568 + pow((pow(dSumWQuadraticFive6n3n3n3n3n,0.5)/dSumWLinearFive6n3n3n3n3n)
11569 * dSpreadFive6n3n3n3n3n*pow(pow(dSumWLinearFive6n3n3n3n3n,2.)/(pow(dSumWLinearFive6n3n3n3n3n,2.)-dSumWQuadraticFive6n3n3n3n3n),0.5),2.)
11570 + 9.*2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(3)
11571 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11572 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,9))
11573 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(3))
11574 / (dSumWLinearTwo3n3n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11575 - 3.*2.*f3pCorrelations->GetBinContent(3)
11576 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11577 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,93))
11578 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(38))
11579 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n3n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11580 - 3.*2.*f2pCorrelations->GetBinContent(3)
11581 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11582 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,93))
11583 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(38))
11584 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n3n3n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11585 if(dError>0.)
11586 {
11587 f5pCumulants->SetBinError(38,pow(dError,0.5));
11588 }
11589 } // end of if(...)
11590 } // end of {
11591 f5pCumulants->SetBinContent(39,f5pCorrelations->GetBinContent(39));
11592 {
11593 Double_t dSumWLinear = 0.; // sum of linear event weights
11594 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11595 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11596 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11597 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11598 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11599 dSpread = f5pCorrelations->GetBinError(39);
11600 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11601 {
11602 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11603 f5pCumulants->SetBinError(39,dError);
11604 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11605 }
e1d101a6 11606 f5pCumulants->SetBinContent(40,f5pCorrelations->GetBinContent(40)-2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6));
c10259fb 11607 {
11608 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11609 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11610 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11611 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
11612 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
11613 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
11614 Double_t dSumWLinearFive6n6n6n3n3n = 0.; // sum of linear event weights for <4>
11615 Double_t dSumWQuadraticFive6n6n6n3n3n = 0.; // sum of quadratic event weights <4>
11616 Double_t dSpreadFive6n6n6n3n3n = 0.; // weighted and biased estimator for sigma of <4>
11617 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11618 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11619 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11620 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11621 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11622 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
11623 dSumWLinearFive6n6n6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11624 dSumWQuadraticFive6n6n6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11625 dSpreadFive6n6n6n3n3n = f5pCorrelations->GetBinError(40);
11626 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11627 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
11628 pow(dSumWLinearFive6n6n6n3n3n,2.)>dSumWQuadraticFive6n6n6n3n3n)
11629 {
11630 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(3),2.)
11631 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11632 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11633 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
11634 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
11635 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
11636 + pow((pow(dSumWQuadraticFive6n6n6n3n3n,0.5)/dSumWLinearFive6n6n6n3n3n)
11637 * dSpreadFive6n6n6n3n3n*pow(pow(dSumWLinearFive6n6n6n3n3n,2.)/(pow(dSumWLinearFive6n6n6n3n3n,2.)-dSumWQuadraticFive6n6n6n3n3n),0.5),2.)
11638 + 4.*2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6)
11639 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11640 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,9))
11641 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(3))
11642 / (dSumWLinearTwo6n6n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11643 - 2.*2.*f3pCorrelations->GetBinContent(3)
11644 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11645 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,95))
11646 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(40))
11647 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11648 - 2.*2.*f2pCorrelations->GetBinContent(6)
11649 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11650 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,95))
11651 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(40))
11652 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n6n6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11653 if(dError>0.)
11654 {
11655 f5pCumulants->SetBinError(40,pow(dError,0.5));
11656 }
11657 } // end of if(...)
11658 } // end of {
11659
e1d101a6 11660 // d2) "Three distinct harmonics":
11661 f5pCumulants->SetBinContent(42,f5pCorrelations->GetBinContent(42)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1));
c10259fb 11662 {
11663 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11664 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11665 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11666 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11667 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11668 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11669 Double_t dSumWLinearFive3n1n2n1n1n = 0.; // sum of linear event weights for <4>
11670 Double_t dSumWQuadraticFive3n1n2n1n1n = 0.; // sum of quadratic event weights <4>
11671 Double_t dSpreadFive3n1n2n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11672 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11673 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11674 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11675 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11676 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11677 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11678 dSumWLinearFive3n1n2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11679 dSumWQuadraticFive3n1n2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11680 dSpreadFive3n1n2n1n1n = f5pCorrelations->GetBinError(42);
11681 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11682 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11683 pow(dSumWLinearFive3n1n2n1n1n,2.)>dSumWQuadraticFive3n1n2n1n1n)
11684 {
11685 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11686 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11687 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11688 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
11689 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11690 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11691 + pow((pow(dSumWQuadraticFive3n1n2n1n1n,0.5)/dSumWLinearFive3n1n2n1n1n)
11692 * dSpreadFive3n1n2n1n1n*pow(pow(dSumWLinearFive3n1n2n1n1n,2.)/(pow(dSumWLinearFive3n1n2n1n1n,2.)-dSumWQuadraticFive3n1n2n1n1n),0.5),2.)
11693 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)
11694 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11695 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,10))
11696 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(5))
11697 / (dSumWLinearTwo1n1n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11698 - 2.*2.*f3pCorrelations->GetBinContent(5)
11699 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11700 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,96))
11701 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(42))
11702 / (dSumWLinearTwo1n1n*dSumWLinearFive3n1n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11703 - 2.*2.*f2pCorrelations->GetBinContent(1)
11704 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11705 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,96))
11706 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(42))
11707 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n1n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11708 if(dError>0.)
11709 {
11710 f5pCumulants->SetBinError(42,pow(dError,0.5));
11711 }
11712 } // end of if(...)
11713 } // end of {
e1d101a6 11714 f5pCumulants->SetBinContent(43,f5pCorrelations->GetBinContent(43)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2));
c10259fb 11715 {
11716 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11717 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11718 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11719 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11720 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11721 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11722 Double_t dSumWLinearFive3n2n2n2n1n = 0.; // sum of linear event weights for <4>
11723 Double_t dSumWQuadraticFive3n2n2n2n1n = 0.; // sum of quadratic event weights <4>
11724 Double_t dSpreadFive3n2n2n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11725 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11726 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11727 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11728 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11729 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11730 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11731 dSumWLinearFive3n2n2n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11732 dSumWQuadraticFive3n2n2n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11733 dSpreadFive3n2n2n2n1n = f5pCorrelations->GetBinError(43);
11734 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11735 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11736 pow(dSumWLinearFive3n2n2n2n1n,2.)>dSumWQuadraticFive3n2n2n2n1n)
11737 {
11738 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11739 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11740 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11741 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11742 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11743 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11744 + pow((pow(dSumWQuadraticFive3n2n2n2n1n,0.5)/dSumWLinearFive3n2n2n2n1n)
11745 * dSpreadFive3n2n2n2n1n*pow(pow(dSumWLinearFive3n2n2n2n1n,2.)/(pow(dSumWLinearFive3n2n2n2n1n,2.)-dSumWQuadraticFive3n2n2n2n1n),0.5),2.)
11746 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)
11747 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11748 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,10))
11749 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(5))
11750 / (dSumWLinearTwo2n2n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11751 - 2.*2.*f3pCorrelations->GetBinContent(5)
11752 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11753 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,97))
11754 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(43))
11755 / (dSumWLinearTwo2n2n*dSumWLinearFive3n2n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11756 - 2.*2.*f2pCorrelations->GetBinContent(2)
11757 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11758 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,97))
11759 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(43))
11760 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n2n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11761 if(dError>0.)
11762 {
11763 f5pCumulants->SetBinError(43,pow(dError,0.5));
11764 }
11765 } // end of if(...)
11766 } // end of {
e1d101a6 11767 f5pCumulants->SetBinContent(44,f5pCorrelations->GetBinContent(44)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3));
c10259fb 11768 {
11769 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11770 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11771 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11772 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11773 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11774 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11775 Double_t dSumWLinearFive3n3n3n2n1n = 0.; // sum of linear event weights for <4>
11776 Double_t dSumWQuadraticFive3n3n3n2n1n = 0.; // sum of quadratic event weights <4>
11777 Double_t dSpreadFive3n3n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11778 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11779 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11780 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11781 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11782 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11783 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11784 dSumWLinearFive3n3n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11785 dSumWQuadraticFive3n3n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11786 dSpreadFive3n3n3n2n1n = f5pCorrelations->GetBinError(44);
11787 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11788 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11789 pow(dSumWLinearFive3n3n3n2n1n,2.)>dSumWQuadraticFive3n3n3n2n1n)
11790 {
11791 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11792 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11793 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11794 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
11795 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11796 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11797 + pow((pow(dSumWQuadraticFive3n3n3n2n1n,0.5)/dSumWLinearFive3n3n3n2n1n)
11798 * dSpreadFive3n3n3n2n1n*pow(pow(dSumWLinearFive3n3n3n2n1n,2.)/(pow(dSumWLinearFive3n3n3n2n1n,2.)-dSumWQuadraticFive3n3n3n2n1n),0.5),2.)
11799 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)
11800 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11801 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,10))
11802 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(5))
11803 / (dSumWLinearTwo3n3n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11804 - 2.*2.*f3pCorrelations->GetBinContent(5)
11805 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11806 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,98))
11807 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(44))
11808 / (dSumWLinearTwo3n3n*dSumWLinearFive3n3n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11809 - 2.*2.*f2pCorrelations->GetBinContent(3)
11810 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11811 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,98))
11812 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(44))
11813 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n3n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11814 if(dError>0.)
11815 {
11816 f5pCumulants->SetBinError(44,pow(dError,0.5));
11817 }
11818 } // end of if(...)
11819 } // end of {
e1d101a6 11820 f5pCumulants->SetBinContent(45,f5pCorrelations->GetBinContent(45)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1));
c10259fb 11821 {
11822 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11823 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11824 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11825 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11826 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11827 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11828 Double_t dSumWLinearFive4n1n3n1n1n = 0.; // sum of linear event weights for <4>
11829 Double_t dSumWQuadraticFive4n1n3n1n1n = 0.; // sum of quadratic event weights <4>
11830 Double_t dSpreadFive4n1n3n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11831 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11832 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11833 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11834 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11835 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11836 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11837 dSumWLinearFive4n1n3n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11838 dSumWQuadraticFive4n1n3n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11839 dSpreadFive4n1n3n1n1n = f5pCorrelations->GetBinError(45);
11840 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11841 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11842 pow(dSumWLinearFive4n1n3n1n1n,2.)>dSumWQuadraticFive4n1n3n1n1n)
11843 {
11844 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11845 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11846 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11847 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
11848 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11849 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11850 + pow((pow(dSumWQuadraticFive4n1n3n1n1n,0.5)/dSumWLinearFive4n1n3n1n1n)
11851 * dSpreadFive4n1n3n1n1n*pow(pow(dSumWLinearFive4n1n3n1n1n,2.)/(pow(dSumWLinearFive4n1n3n1n1n,2.)-dSumWQuadraticFive4n1n3n1n1n),0.5),2.)
11852 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)
11853 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11854 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,11))
11855 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(6))
11856 / (dSumWLinearTwo1n1n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11857 - 2.*2.*f3pCorrelations->GetBinContent(6)
11858 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11859 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,99))
11860 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(45))
11861 / (dSumWLinearTwo1n1n*dSumWLinearFive4n1n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11862 - 2.*2.*f2pCorrelations->GetBinContent(1)
11863 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11864 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,99))
11865 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(45))
11866 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n1n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11867 if(dError>0.)
11868 {
11869 f5pCumulants->SetBinError(45,pow(dError,0.5));
11870 }
11871 } // end of if(...)
11872 } // end of {
11873 f5pCumulants->SetBinContent(46,f5pCorrelations->GetBinContent(46));
11874 {
11875 Double_t dSumWLinear = 0.; // sum of linear event weights
11876 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11877 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11878 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11879 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11880 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11881 dSpread = f5pCorrelations->GetBinError(46);
11882 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11883 {
11884 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11885 f5pCumulants->SetBinError(46,dError);
11886 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11887 }
e1d101a6 11888 f5pCumulants->SetBinContent(47,f5pCorrelations->GetBinContent(47)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3));
c10259fb 11889 {
11890 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11891 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11892 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11893 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11894 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11895 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11896 Double_t dSumWLinearFive4n3n3n3n1n = 0.; // sum of linear event weights for <4>
11897 Double_t dSumWQuadraticFive4n3n3n3n1n = 0.; // sum of quadratic event weights <4>
11898 Double_t dSpreadFive4n3n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11899 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11900 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11901 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11902 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11903 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11904 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11905 dSumWLinearFive4n3n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11906 dSumWQuadraticFive4n3n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11907 dSpreadFive4n3n3n3n1n = f5pCorrelations->GetBinError(47);
11908 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11909 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11910 pow(dSumWLinearFive4n3n3n3n1n,2.)>dSumWQuadraticFive4n3n3n3n1n)
11911 {
11912 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11913 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11914 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11915 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
11916 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11917 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11918 + pow((pow(dSumWQuadraticFive4n3n3n3n1n,0.5)/dSumWLinearFive4n3n3n3n1n)
11919 * dSpreadFive4n3n3n3n1n*pow(pow(dSumWLinearFive4n3n3n3n1n,2.)/(pow(dSumWLinearFive4n3n3n3n1n,2.)-dSumWQuadraticFive4n3n3n3n1n),0.5),2.)
11920 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)
11921 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11922 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,11))
11923 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(6))
11924 / (dSumWLinearTwo3n3n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11925 - 2.*2.*f3pCorrelations->GetBinContent(6)
11926 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11927 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,101))
11928 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(47))
11929 / (dSumWLinearTwo3n3n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11930 - 2.*2.*f2pCorrelations->GetBinContent(3)
11931 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11932 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,101))
11933 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(47))
11934 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11935 if(dError>0.)
11936 {
11937 f5pCumulants->SetBinError(47,pow(dError,0.5));
11938 }
11939 } // end of if(...)
11940 } // end of {
11941 f5pCumulants->SetBinContent(48,f5pCorrelations->GetBinContent(48));
11942 {
11943 Double_t dSumWLinear = 0.; // sum of linear event weights
11944 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11945 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11946 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11947 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11948 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11949 dSpread = f5pCorrelations->GetBinError(48);
11950 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11951 {
11952 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11953 f5pCumulants->SetBinError(48,dError);
11954 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11955 }
e1d101a6 11956 f5pCumulants->SetBinContent(49,f5pCorrelations->GetBinContent(49)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4));
c10259fb 11957 {
11958 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
11959 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
11960 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
11961 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11962 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11963 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11964 Double_t dSumWLinearFive4n3n3n3n1n = 0.; // sum of linear event weights for <4>
11965 Double_t dSumWQuadraticFive4n3n3n3n1n = 0.; // sum of quadratic event weights <4>
11966 Double_t dSpreadFive4n3n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11967 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11968 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11969 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
11970 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11971 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11972 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11973 dSumWLinearFive4n3n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11974 dSumWQuadraticFive4n3n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11975 dSpreadFive4n3n3n3n1n = f5pCorrelations->GetBinError(49);
11976 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
11977 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11978 pow(dSumWLinearFive4n3n3n3n1n,2.)>dSumWQuadraticFive4n3n3n3n1n)
11979 {
11980 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11981 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
11982 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
11983 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
11984 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11985 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11986 + pow((pow(dSumWQuadraticFive4n3n3n3n1n,0.5)/dSumWLinearFive4n3n3n3n1n)
11987 * dSpreadFive4n3n3n3n1n*pow(pow(dSumWLinearFive4n3n3n3n1n,2.)/(pow(dSumWLinearFive4n3n3n3n1n,2.)-dSumWQuadraticFive4n3n3n3n1n),0.5),2.)
11988 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4)
11989 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11990 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,11))
11991 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(6))
11992 / (dSumWLinearTwo4n4n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11993 - 2.*2.*f3pCorrelations->GetBinContent(6)
11994 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11995 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,103))
11996 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(49))
11997 / (dSumWLinearTwo4n4n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11998 - 2.*2.*f2pCorrelations->GetBinContent(4)
11999 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12000 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,103))
12001 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(49))
12002 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12003 if(dError>0.)
12004 {
12005 f5pCumulants->SetBinError(49,pow(dError,0.5));
12006 }
12007 } // end of if(...)
12008 } // end of {
12009 f5pCumulants->SetBinContent(50,f5pCorrelations->GetBinContent(50));
12010 {
12011 Double_t dSumWLinear = 0.; // sum of linear event weights
12012 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12013 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12014 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12015 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12016 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12017 dSpread = f5pCorrelations->GetBinError(50);
12018 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12019 {
12020 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12021 f5pCumulants->SetBinError(50,dError);
12022 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12023 }
12024 f5pCumulants->SetBinContent(51,f5pCorrelations->GetBinContent(51));
12025 {
12026 Double_t dSumWLinear = 0.; // sum of linear event weights
12027 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12028 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12029 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12030 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12031 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12032 dSpread = f5pCorrelations->GetBinError(51);
12033 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12034 {
12035 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12036 f5pCumulants->SetBinError(51,dError);
12037 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12038 }
e1d101a6 12039 f5pCumulants->SetBinContent(52,f5pCorrelations->GetBinContent(52)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(2));
c10259fb 12040 {
12041 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
12042 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
12043 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
12044 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12045 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12046 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12047 Double_t dSumWLinearFive5n2n3n2n2n = 0.; // sum of linear event weights for <4>
12048 Double_t dSumWQuadraticFive5n2n3n2n2n = 0.; // sum of quadratic event weights <4>
12049 Double_t dSpreadFive5n2n3n2n2n = 0.; // weighted and biased estimator for sigma of <4>
12050 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12051 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12052 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
12053 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12054 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12055 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12056 dSumWLinearFive5n2n3n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12057 dSumWQuadraticFive5n2n3n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12058 dSpreadFive5n2n3n2n2n = f5pCorrelations->GetBinError(52);
12059 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
12060 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12061 pow(dSumWLinearFive5n2n3n2n2n,2.)>dSumWQuadraticFive5n2n3n2n2n)
12062 {
12063 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12064 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
12065 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
12066 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
12067 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12068 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12069 + pow((pow(dSumWQuadraticFive5n2n3n2n2n,0.5)/dSumWLinearFive5n2n3n2n2n)
12070 * dSpreadFive5n2n3n2n2n*pow(pow(dSumWLinearFive5n2n3n2n2n,2.)/(pow(dSumWLinearFive5n2n3n2n2n,2.)-dSumWQuadraticFive5n2n3n2n2n),0.5),2.)
12071 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(2)
12072 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12073 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,12))
12074 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(7))
12075 / (dSumWLinearTwo2n2n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12076 - 2.*2.*f3pCorrelations->GetBinContent(7)
12077 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12078 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,106))
12079 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(52))
12080 / (dSumWLinearTwo2n2n*dSumWLinearFive5n2n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12081 - 2.*2.*f2pCorrelations->GetBinContent(2)
12082 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12083 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,106))
12084 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(52))
12085 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n2n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12086 if(dError>0.)
12087 {
12088 f5pCumulants->SetBinError(52,pow(dError,0.5));
12089 }
12090 } // end of if(...)
12091 } // end of {
e1d101a6 12092 f5pCumulants->SetBinContent(53,f5pCorrelations->GetBinContent(53)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(3));
c10259fb 12093 {
12094 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
12095 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
12096 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
12097 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12098 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12099 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12100 Double_t dSumWLinearFive5n3n3n3n2n = 0.; // sum of linear event weights for <4>
12101 Double_t dSumWQuadraticFive5n3n3n3n2n = 0.; // sum of quadratic event weights <4>
12102 Double_t dSpreadFive5n3n3n3n2n = 0.; // weighted and biased estimator for sigma of <4>
12103 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12104 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12105 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
12106 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12107 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12108 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12109 dSumWLinearFive5n3n3n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12110 dSumWQuadraticFive5n3n3n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12111 dSpreadFive5n3n3n3n2n = f5pCorrelations->GetBinError(53);
12112 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
12113 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12114 pow(dSumWLinearFive5n3n3n3n2n,2.)>dSumWQuadraticFive5n3n3n3n2n)
12115 {
12116 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12117 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
12118 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
12119 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
12120 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12121 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12122 + pow((pow(dSumWQuadraticFive5n3n3n3n2n,0.5)/dSumWLinearFive5n3n3n3n2n)
12123 * dSpreadFive5n3n3n3n2n*pow(pow(dSumWLinearFive5n3n3n3n2n,2.)/(pow(dSumWLinearFive5n3n3n3n2n,2.)-dSumWQuadraticFive5n3n3n3n2n),0.5),2.)
12124 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(3)
12125 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12126 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,12))
12127 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(7))
12128 / (dSumWLinearTwo3n3n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12129 - 2.*2.*f3pCorrelations->GetBinContent(7)
12130 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12131 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,107))
12132 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(53))
12133 / (dSumWLinearTwo3n3n*dSumWLinearFive5n3n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12134 - 2.*2.*f2pCorrelations->GetBinContent(3)
12135 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12136 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,107))
12137 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(53))
12138 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n3n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12139 if(dError>0.)
12140 {
12141 f5pCumulants->SetBinError(53,pow(dError,0.5));
12142 }
12143 } // end of if(...)
12144 } // end of {
12145 f5pCumulants->SetBinContent(54,f5pCorrelations->GetBinContent(54)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(1));
12146 {
12147 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
12148 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
12149 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
12150 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12151 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12152 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12153 Double_t dSumWLinearFive5n1n4n1n1n = 0.; // sum of linear event weights for <4>
12154 Double_t dSumWQuadraticFive5n1n4n1n1n = 0.; // sum of quadratic event weights <4>
12155 Double_t dSpreadFive5n1n4n1n1n = 0.; // weighted and biased estimator for sigma of <4>
12156 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12157 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12158 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
12159 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12160 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12161 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12162 dSumWLinearFive5n1n4n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12163 dSumWQuadraticFive5n1n4n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12164 dSpreadFive5n1n4n1n1n = f5pCorrelations->GetBinError(54);
12165 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
12166 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12167 pow(dSumWLinearFive5n1n4n1n1n,2.)>dSumWQuadraticFive5n1n4n1n1n)
12168 {
12169 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12170 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
12171 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
12172 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
12173 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12174 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12175 + pow((pow(dSumWQuadraticFive5n1n4n1n1n,0.5)/dSumWLinearFive5n1n4n1n1n)
12176 * dSpreadFive5n1n4n1n1n*pow(pow(dSumWLinearFive5n1n4n1n1n,2.)/(pow(dSumWLinearFive5n1n4n1n1n,2.)-dSumWQuadraticFive5n1n4n1n1n),0.5),2.)
12177 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(1)
12178 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12179 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,13))
12180 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(8))
12181 / (dSumWLinearTwo1n1n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12182 - 2.*2.*f3pCorrelations->GetBinContent(8)
12183 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12184 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,108))
12185 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(54))
12186 / (dSumWLinearTwo1n1n*dSumWLinearFive5n1n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12187 - 2.*2.*f2pCorrelations->GetBinContent(1)
12188 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12189 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,108))
12190 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(54))
12191 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n1n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12192 if(dError>0.)
12193 {
12194 f5pCumulants->SetBinError(54,pow(dError,0.5));
12195 }
12196 } // end of if(...)
12197 } // end of {
12198
12199 f5pCumulants->SetBinContent(55,f5pCorrelations->GetBinContent(55));
12200 {
12201 Double_t dSumWLinear = 0.; // sum of linear event weights
12202 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12203 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12204 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12205 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12206 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12207 dSpread = f5pCorrelations->GetBinError(55);
12208 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12209 {
12210 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12211 f5pCumulants->SetBinError(55,dError);
12212 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12213 }
12214 f5pCumulants->SetBinContent(56,f5pCorrelations->GetBinContent(56)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(4));
12215 {
12216 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12217 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12218 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12219 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12220 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12221 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12222 Double_t dSumWLinearFive5n4n4n4n1n = 0.; // sum of linear event weights for <4>
12223 Double_t dSumWQuadraticFive5n4n4n4n1n = 0.; // sum of quadratic event weights <4>
12224 Double_t dSpreadFive5n4n4n4n1n = 0.; // weighted and biased estimator for sigma of <4>
12225 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12226 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12227 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12228 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12229 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12230 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12231 dSumWLinearFive5n4n4n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12232 dSumWQuadraticFive5n4n4n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12233 dSpreadFive5n4n4n4n1n = f5pCorrelations->GetBinError(56);
12234 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12235 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12236 pow(dSumWLinearFive5n4n4n4n1n,2.)>dSumWQuadraticFive5n4n4n4n1n)
12237 {
12238 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12239 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12240 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12241 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12242 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12243 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12244 + pow((pow(dSumWQuadraticFive5n4n4n4n1n,0.5)/dSumWLinearFive5n4n4n4n1n)
12245 * dSpreadFive5n4n4n4n1n*pow(pow(dSumWLinearFive5n4n4n4n1n,2.)/(pow(dSumWLinearFive5n4n4n4n1n,2.)-dSumWQuadraticFive5n4n4n4n1n),0.5),2.)
12246 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(4)
12247 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12248 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,13))
12249 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(8))
12250 / (dSumWLinearTwo4n4n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12251 - 2.*2.*f3pCorrelations->GetBinContent(8)
12252 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12253 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,110))
12254 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(56))
12255 / (dSumWLinearTwo4n4n*dSumWLinearFive5n4n4n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12256 - 2.*2.*f2pCorrelations->GetBinContent(4)
12257 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12258 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,110))
12259 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(56))
12260 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n4n4n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12261 if(dError>0.)
12262 {
12263 f5pCumulants->SetBinError(56,pow(dError,0.5));
12264 }
12265 } // end of if(...)
12266 } // end of {
12267 f5pCumulants->SetBinContent(57,f5pCorrelations->GetBinContent(57));
12268 {
12269 Double_t dSumWLinear = 0.; // sum of linear event weights
12270 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12271 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12272 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12273 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12274 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12275 dSpread = f5pCorrelations->GetBinError(57);
12276 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12277 {
12278 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12279 f5pCumulants->SetBinError(57,dError);
12280 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12281 }
12282 f5pCumulants->SetBinContent(58,f5pCorrelations->GetBinContent(58));
12283 {
12284 Double_t dSumWLinear = 0.; // sum of linear event weights
12285 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12286 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12287 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12288 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12289 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12290 dSpread = f5pCorrelations->GetBinError(58);
12291 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12292 {
12293 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12294 f5pCumulants->SetBinError(58,dError);
12295 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12296 }
e1d101a6 12297 f5pCumulants->SetBinContent(59,f5pCorrelations->GetBinContent(59)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(5));
c10259fb 12298 {
12299 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12300 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12301 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12302 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12303 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12304 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12305 Double_t dSumWLinearFive5n5n5n3n2n = 0.; // sum of linear event weights for <4>
12306 Double_t dSumWQuadraticFive5n5n5n3n2n = 0.; // sum of quadratic event weights <4>
12307 Double_t dSpreadFive5n5n5n3n2n = 0.; // weighted and biased estimator for sigma of <4>
12308 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12309 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12310 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12311 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12312 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12313 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12314 dSumWLinearFive5n5n5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12315 dSumWQuadraticFive5n5n5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12316 dSpreadFive5n5n5n3n2n = f5pCorrelations->GetBinError(59);
12317 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12318 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12319 pow(dSumWLinearFive5n5n5n3n2n,2.)>dSumWQuadraticFive5n5n5n3n2n)
12320 {
12321 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12322 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12323 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12324 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12325 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12326 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12327 + pow((pow(dSumWQuadraticFive5n5n5n3n2n,0.5)/dSumWLinearFive5n5n5n3n2n)
12328 * dSpreadFive5n5n5n3n2n*pow(pow(dSumWLinearFive5n5n5n3n2n,2.)/(pow(dSumWLinearFive5n5n5n3n2n,2.)-dSumWQuadraticFive5n5n5n3n2n),0.5),2.)
12329 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(5)
12330 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12331 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,12))
12332 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(7))
12333 / (dSumWLinearTwo5n5n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12334 - 2.*2.*f3pCorrelations->GetBinContent(7)
12335 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12336 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,113))
12337 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(59))
12338 / (dSumWLinearTwo5n5n*dSumWLinearFive5n5n5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12339 - 2.*2.*f2pCorrelations->GetBinContent(5)
12340 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12341 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,113))
12342 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(59))
12343 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n5n5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12344 if(dError>0.)
12345 {
12346 f5pCumulants->SetBinError(59,pow(dError,0.5));
12347 }
12348 } // end of if(...)
12349 } // end of {
e1d101a6 12350 f5pCumulants->SetBinContent(60,f5pCorrelations->GetBinContent(60)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(5));
c10259fb 12351 {
12352 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12353 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12354 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12355 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12356 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12357 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12358 Double_t dSumWLinearFive5n5n5n4n1n = 0.; // sum of linear event weights for <4>
12359 Double_t dSumWQuadraticFive5n5n5n4n1n = 0.; // sum of quadratic event weights <4>
12360 Double_t dSpreadFive5n5n5n4n1n = 0.; // weighted and biased estimator for sigma of <4>
12361 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12362 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12363 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12364 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12365 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12366 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12367 dSumWLinearFive5n5n5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12368 dSumWQuadraticFive5n5n5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12369 dSpreadFive5n5n5n4n1n = f5pCorrelations->GetBinError(60);
12370 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12371 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12372 pow(dSumWLinearFive5n5n5n4n1n,2.)>dSumWQuadraticFive5n5n5n4n1n)
12373 {
12374 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12375 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12376 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12377 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12378 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12379 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12380 + pow((pow(dSumWQuadraticFive5n5n5n4n1n,0.5)/dSumWLinearFive5n5n5n4n1n)
12381 * dSpreadFive5n5n5n4n1n*pow(pow(dSumWLinearFive5n5n5n4n1n,2.)/(pow(dSumWLinearFive5n5n5n4n1n,2.)-dSumWQuadraticFive5n5n5n4n1n),0.5),2.)
12382 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(5)
12383 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12384 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,13))
12385 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(8))
12386 / (dSumWLinearTwo5n5n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12387 - 2.*2.*f3pCorrelations->GetBinContent(8)
12388 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12389 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,114))
12390 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(60))
12391 / (dSumWLinearTwo5n5n*dSumWLinearFive5n5n5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12392 - 2.*2.*f2pCorrelations->GetBinContent(5)
12393 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12394 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,114))
12395 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(60))
12396 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n5n5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12397 if(dError>0.)
12398 {
12399 f5pCumulants->SetBinError(60,pow(dError,0.5));
12400 }
12401 } // end of if(...)
12402 } // end of {
12403 f5pCumulants->SetBinContent(61,f5pCorrelations->GetBinContent(61));
12404 {
12405 Double_t dSumWLinear = 0.; // sum of linear event weights
12406 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12407 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12408 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12409 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12410 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12411 dSpread = f5pCorrelations->GetBinError(61);
12412 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12413 {
12414 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12415 f5pCumulants->SetBinError(61,dError);
12416 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12417 }
12418 f5pCumulants->SetBinContent(62,f5pCorrelations->GetBinContent(62));
12419 {
12420 Double_t dSumWLinear = 0.; // sum of linear event weights
12421 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12422 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12423 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12424 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12425 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12426 dSpread = f5pCorrelations->GetBinError(62);
12427 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12428 {
12429 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12430 f5pCumulants->SetBinError(62,dError);
12431 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12432 }
12433 f5pCumulants->SetBinContent(63,f5pCorrelations->GetBinContent(63));
12434 {
12435 Double_t dSumWLinear = 0.; // sum of linear event weights
12436 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12437 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12438 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12439 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12440 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12441 dSpread = f5pCorrelations->GetBinError(63);
12442 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12443 {
12444 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12445 f5pCumulants->SetBinError(63,dError);
12446 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12447 }
e1d101a6 12448 f5pCumulants->SetBinContent(64,f5pCorrelations->GetBinContent(64)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(1));
c10259fb 12449 {
12450 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
12451 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
12452 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
12453 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12454 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12455 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12456 Double_t dSumWLinearFive6n1n5n1n1n = 0.; // sum of linear event weights for <4>
12457 Double_t dSumWQuadraticFive6n1n5n1n1n = 0.; // sum of quadratic event weights <4>
12458 Double_t dSpreadFive6n1n5n1n1n = 0.; // weighted and biased estimator for sigma of <4>
12459 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12460 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12461 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
12462 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12463 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12464 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12465 dSumWLinearFive6n1n5n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12466 dSumWQuadraticFive6n1n5n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12467 dSpreadFive6n1n5n1n1n = f5pCorrelations->GetBinError(64);
12468 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
12469 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12470 pow(dSumWLinearFive6n1n5n1n1n,2.)>dSumWQuadraticFive6n1n5n1n1n)
12471 {
12472 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12473 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
12474 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
12475 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
12476 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12477 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12478 + pow((pow(dSumWQuadraticFive6n1n5n1n1n,0.5)/dSumWLinearFive6n1n5n1n1n)
12479 * dSpreadFive6n1n5n1n1n*pow(pow(dSumWLinearFive6n1n5n1n1n,2.)/(pow(dSumWLinearFive6n1n5n1n1n,2.)-dSumWQuadraticFive6n1n5n1n1n),0.5),2.)
12480 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(1)
12481 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12482 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,15))
12483 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(10))
12484 / (dSumWLinearTwo1n1n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12485 - 2.*2.*f3pCorrelations->GetBinContent(10)
12486 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12487 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,118))
12488 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(64))
12489 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12490 - 2.*2.*f2pCorrelations->GetBinContent(1)
12491 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12492 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,118))
12493 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(64))
12494 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n1n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12495 if(dError>0.)
12496 {
12497 f5pCumulants->SetBinError(64,pow(dError,0.5));
12498 }
12499 } // end of if(...)
12500 } // end of {
e1d101a6 12501 f5pCumulants->SetBinContent(65,f5pCorrelations->GetBinContent(65)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(2));
c10259fb 12502 {
12503 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
12504 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
12505 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
12506 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12507 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12508 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12509 Double_t dSumWLinearFive6n2n4n2n2n = 0.; // sum of linear event weights for <4>
12510 Double_t dSumWQuadraticFive6n2n4n2n2n = 0.; // sum of quadratic event weights <4>
12511 Double_t dSpreadFive6n2n4n2n2n = 0.; // weighted and biased estimator for sigma of <4>
12512 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12513 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12514 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
12515 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12516 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12517 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12518 dSumWLinearFive6n2n4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12519 dSumWQuadraticFive6n2n4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12520 dSpreadFive6n2n4n2n2n = f5pCorrelations->GetBinError(65);
12521 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
12522 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12523 pow(dSumWLinearFive6n2n4n2n2n,2.)>dSumWQuadraticFive6n2n4n2n2n)
12524 {
12525 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12526 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
12527 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
12528 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
12529 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12530 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12531 + pow((pow(dSumWQuadraticFive6n2n4n2n2n,0.5)/dSumWLinearFive6n2n4n2n2n)
12532 * dSpreadFive6n2n4n2n2n*pow(pow(dSumWLinearFive6n2n4n2n2n,2.)/(pow(dSumWLinearFive6n2n4n2n2n,2.)-dSumWQuadraticFive6n2n4n2n2n),0.5),2.)
12533 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(2)
12534 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12535 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,14))
12536 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(9))
12537 / (dSumWLinearTwo2n2n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12538 - 2.*2.*f3pCorrelations->GetBinContent(9)
12539 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12540 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,119))
12541 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(65))
12542 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12543 - 2.*2.*f2pCorrelations->GetBinContent(2)
12544 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12545 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,119))
12546 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(65))
12547 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n2n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12548 if(dError>0.)
12549 {
12550 f5pCumulants->SetBinError(65,pow(dError,0.5));
12551 }
12552 } // end of if(...)
12553 } // end of {
12554 f5pCumulants->SetBinContent(66,f5pCorrelations->GetBinContent(66)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(4));
12555 {
12556 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12557 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12558 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12559 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12560 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12561 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12562 Double_t dSumWLinearFive6n4n4n4n2n = 0.; // sum of linear event weights for <4>
12563 Double_t dSumWQuadraticFive6n4n4n4n2n = 0.; // sum of quadratic event weights <4>
12564 Double_t dSpreadFive6n4n4n4n2n = 0.; // weighted and biased estimator for sigma of <4>
12565 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12566 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12567 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12568 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12569 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12570 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12571 dSumWLinearFive6n4n4n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12572 dSumWQuadraticFive6n4n4n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12573 dSpreadFive6n4n4n4n2n = f5pCorrelations->GetBinError(66);
12574 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12575 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12576 pow(dSumWLinearFive6n4n4n4n2n,2.)>dSumWQuadraticFive6n4n4n4n2n)
12577 {
12578 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12579 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12580 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12581 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12582 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12583 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12584 + pow((pow(dSumWQuadraticFive6n4n4n4n2n,0.5)/dSumWLinearFive6n4n4n4n2n)
12585 * dSpreadFive6n4n4n4n2n*pow(pow(dSumWLinearFive6n4n4n4n2n,2.)/(pow(dSumWLinearFive6n4n4n4n2n,2.)-dSumWQuadraticFive6n4n4n4n2n),0.5),2.)
12586 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(4)
12587 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12588 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,14))
12589 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(9))
12590 / (dSumWLinearTwo4n4n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12591 - 2.*2.*f3pCorrelations->GetBinContent(9)
12592 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12593 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,120))
12594 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(66))
12595 / (dSumWLinearTwo4n4n*dSumWLinearFive6n4n4n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12596 - 2.*2.*f2pCorrelations->GetBinContent(4)
12597 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12598 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,120))
12599 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(66))
12600 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n4n4n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12601 if(dError>0.)
12602 {
12603 f5pCumulants->SetBinError(66,pow(dError,0.5));
12604 }
12605 } // end of if(...)
12606 } // end of {
12607 f5pCumulants->SetBinContent(67,f5pCorrelations->GetBinContent(67));
12608 {
12609 Double_t dSumWLinear = 0.; // sum of linear event weights
12610 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12611 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12612 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12613 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12614 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12615 dSpread = f5pCorrelations->GetBinError(67);
12616 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12617 {
12618 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12619 f5pCumulants->SetBinError(67,dError);
12620 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12621 }
e1d101a6 12622 f5pCumulants->SetBinContent(68,f5pCorrelations->GetBinContent(68)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(5));
c10259fb 12623 {
12624 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12625 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12626 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12627 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12628 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12629 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12630 Double_t dSumWLinearFive6n5n5n5n1n = 0.; // sum of linear event weights for <4>
12631 Double_t dSumWQuadraticFive6n5n5n5n1n = 0.; // sum of quadratic event weights <4>
12632 Double_t dSpreadFive6n5n5n5n1n = 0.; // weighted and biased estimator for sigma of <4>
12633 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12634 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12635 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12636 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12637 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12638 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12639 dSumWLinearFive6n5n5n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12640 dSumWQuadraticFive6n5n5n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12641 dSpreadFive6n5n5n5n1n = f5pCorrelations->GetBinError(68);
12642 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12643 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12644 pow(dSumWLinearFive6n5n5n5n1n,2.)>dSumWQuadraticFive6n5n5n5n1n)
12645 {
12646 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12647 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12648 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12649 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12650 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12651 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12652 + pow((pow(dSumWQuadraticFive6n5n5n5n1n,0.5)/dSumWLinearFive6n5n5n5n1n)
12653 * dSpreadFive6n5n5n5n1n*pow(pow(dSumWLinearFive6n5n5n5n1n,2.)/(pow(dSumWLinearFive6n5n5n5n1n,2.)-dSumWQuadraticFive6n5n5n5n1n),0.5),2.)
12654 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(5)
12655 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12656 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,15))
12657 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(10))
12658 / (dSumWLinearTwo5n5n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12659 - 2.*2.*f3pCorrelations->GetBinContent(10)
12660 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12661 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,122))
12662 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(68))
12663 / (dSumWLinearTwo5n5n*dSumWLinearFive6n5n5n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12664 - 2.*2.*f2pCorrelations->GetBinContent(5)
12665 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12666 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,122))
12667 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(68))
12668 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n5n5n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12669 if(dError>0.)
12670 {
12671 f5pCumulants->SetBinError(68,pow(dError,0.5));
12672 }
12673 } // end of if(...)
12674 } // end of {
12675 f5pCumulants->SetBinContent(69,f5pCorrelations->GetBinContent(69));
12676 {
12677 Double_t dSumWLinear = 0.; // sum of linear event weights
12678 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12679 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12680 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12681 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12682 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12683 dSpread = f5pCorrelations->GetBinError(69);
12684 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12685 {
12686 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12687 f5pCumulants->SetBinError(69,dError);
12688 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12689 }
e1d101a6 12690 f5pCumulants->SetBinContent(70,f5pCorrelations->GetBinContent(70)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(6));
c10259fb 12691 {
12692 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
12693 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
12694 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
12695 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12696 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12697 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12698 Double_t dSumWLinearFive6n6n6n4n2n = 0.; // sum of linear event weights for <4>
12699 Double_t dSumWQuadraticFive6n6n6n4n2n = 0.; // sum of quadratic event weights <4>
12700 Double_t dSpreadFive6n6n6n4n2n = 0.; // weighted and biased estimator for sigma of <4>
12701 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12702 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12703 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
12704 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12705 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12706 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12707 dSumWLinearFive6n6n6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12708 dSumWQuadraticFive6n6n6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12709 dSpreadFive6n6n6n4n2n = f5pCorrelations->GetBinError(70);
12710 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
12711 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12712 pow(dSumWLinearFive6n6n6n4n2n,2.)>dSumWQuadraticFive6n6n6n4n2n)
12713 {
12714 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12715 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
12716 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
12717 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
12718 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12719 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12720 + pow((pow(dSumWQuadraticFive6n6n6n4n2n,0.5)/dSumWLinearFive6n6n6n4n2n)
12721 * dSpreadFive6n6n6n4n2n*pow(pow(dSumWLinearFive6n6n6n4n2n,2.)/(pow(dSumWLinearFive6n6n6n4n2n,2.)-dSumWQuadraticFive6n6n6n4n2n),0.5),2.)
12722 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(6)
12723 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12724 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,14))
12725 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(9))
12726 / (dSumWLinearTwo6n6n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12727 - 2.*2.*f3pCorrelations->GetBinContent(9)
12728 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12729 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,124))
12730 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(70))
12731 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12732 - 2.*2.*f2pCorrelations->GetBinContent(6)
12733 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12734 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,124))
12735 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(70))
12736 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n6n6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12737 if(dError>0.)
12738 {
12739 f5pCumulants->SetBinError(70,pow(dError,0.5));
12740 }
12741 } // end of if(...)
12742 } // end of {
12743
12744
12745
12746
12747
e1d101a6 12748 f5pCumulants->SetBinContent(71,f5pCorrelations->GetBinContent(71)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(6));
c10259fb 12749 {
12750 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
12751 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
12752 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
12753 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12754 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12755 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12756 Double_t dSumWLinearFive6n6n6n5n1n = 0.; // sum of linear event weights for <4>
12757 Double_t dSumWQuadraticFive6n6n6n5n1n = 0.; // sum of quadratic event weights <4>
12758 Double_t dSpreadFive6n6n6n5n1n = 0.; // weighted and biased estimator for sigma of <4>
12759 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12760 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12761 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
12762 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12763 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12764 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12765 dSumWLinearFive6n6n6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12766 dSumWQuadraticFive6n6n6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12767 dSpreadFive6n6n6n5n1n = f5pCorrelations->GetBinError(71);
12768 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
12769 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12770 pow(dSumWLinearFive6n6n6n5n1n,2.)>dSumWQuadraticFive6n6n6n5n1n)
12771 {
12772 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12773 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
12774 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
12775 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
12776 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12777 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12778 + pow((pow(dSumWQuadraticFive6n6n6n5n1n,0.5)/dSumWLinearFive6n6n6n5n1n)
12779 * dSpreadFive6n6n6n5n1n*pow(pow(dSumWLinearFive6n6n6n5n1n,2.)/(pow(dSumWLinearFive6n6n6n5n1n,2.)-dSumWQuadraticFive6n6n6n5n1n),0.5),2.)
12780 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(6)
12781 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12782 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,15))
12783 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(10))
12784 / (dSumWLinearTwo6n6n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12785 - 2.*2.*f3pCorrelations->GetBinContent(10)
12786 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12787 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,125))
12788 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(71))
12789 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12790 - 2.*2.*f2pCorrelations->GetBinContent(6)
12791 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12792 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,125))
12793 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(71))
12794 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n6n6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12795 if(dError>0.)
12796 {
12797 f5pCumulants->SetBinError(71,pow(dError,0.5));
12798 }
12799 } // end of if(...)
12800 } // end of {
e1d101a6 12801 // d3) "Four distinct harmonics":
12802 for(Int_t b=73;b<=83;b++)
12803 {
12804 f5pCumulants->SetBinContent(b,f5pCorrelations->GetBinContent(b));
c10259fb 12805 Double_t dSumWLinear = 0.; // sum of linear event weights
12806 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12807 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12808 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12809 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12810 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12811 dSpread = f5pCorrelations->GetBinError(b);
12812 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12813 {
12814 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12815 f5pCumulants->SetBinError(b,dError);
12816 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 12817 } // end of for(Int_t b=73;b<=83;b++)
12818 // d4) "Five distinct harmonics":
12819 for(Int_t b=85;b<=87;b++)
12820 {
12821 f5pCumulants->SetBinContent(b,f5pCorrelations->GetBinContent(b));
c10259fb 12822 Double_t dSumWLinear = 0.; // sum of linear event weights
12823 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12824 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12825 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12826 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12827 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12828 dSpread = f5pCorrelations->GetBinError(b);
12829 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12830 {
12831 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12832 f5pCumulants->SetBinError(b,dError);
12833 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 12834 } // end of for(Int_t b=85;b<=87;b++)
12835
12836} // end of void AliFlowAnalysisWithQCumulants::CalculateCumulantsMixedHarmonics()
12837
12838//===================================================================================================================
489d5531 12839
e5834fcb 12840void AliFlowAnalysisWithQCumulants::StorePhiDistributionForOneEvent(AliFlowEventSimple *anEvent)
12841{
12842 // Store phi distribution for one event to illustrate flow.
12843
12844 if(fPhiDistributionForOneEvent->GetEntries()>0){return;} // store only phi distribution for one event
12845
12846 Double_t vMin = fPhiDistributionForOneEventSettings[0];
12847 Double_t vMax = fPhiDistributionForOneEventSettings[1];
12848 Double_t refMultMin = fPhiDistributionForOneEventSettings[2];
12849 Double_t refMultMax = fPhiDistributionForOneEventSettings[3];
12850
12851 Double_t vEBE = 0.;
12852 Double_t cumulant4thEBE = fIntFlowCorrelationsEBE->GetBinContent(2)-2.*pow(fIntFlowCorrelationsEBE->GetBinContent(1),2.);
12853 if(cumulant4thEBE<0.)
12854 {
12855 vEBE = pow(-1.*cumulant4thEBE,0.25);
12856 if((vEBE>vMin && vEBE<vMax) && (fReferenceMultiplicityEBE>refMultMin && fReferenceMultiplicityEBE<refMultMax))
12857 {
3958eee6 12858 fPhiDistributionForOneEvent->SetTitle(Form("v_{%i} = %f",fHarmonic,vEBE));
e5834fcb 12859 for(Int_t p=0;p<anEvent->NumberOfTracks();p++)
12860 {
12861 if(anEvent->GetTrack(p)->InRPSelection())
12862 {
12863 fPhiDistributionForOneEvent->Fill(anEvent->GetTrack(p)->Phi());
12864 }
12865 } // end of for(Int_t p=0;p<anEvent->NumberOfTracks();p++)
3958eee6 12866 } else
12867 {
12868 fPhiDistributionForOneEvent->SetTitle(Form("v_{%i} = %f, out of specified boundaries",fHarmonic,vEBE));
12869 }
12870
e5834fcb 12871 } // end of if(cumulant4thEBE<0.)
12872
12873} // end of void AliFlowAnalysisWithQCumulants::StorePhiDistributionForOneEvent(AliFlowEventSimple *anEvent)
12874
e1d101a6 12875//===================================================================================================================
489d5531 12876
12877void AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrelations()
12878{
0328db2d 12879 // Calculate averages of products of correlations for integrated flow.
df23c5ae 12880
3842bdcd 12881 // Multiplicity bin of an event (relevant for all histos vs M):
12882 Double_t dMultiplicityBin = 0.;
df23c5ae 12883 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 12884 {
df23c5ae 12885 dMultiplicityBin = fNumberOfRPsEBE+0.5;
12886 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 12887 {
12888 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 12889 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
12890 {
12891 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
12892 }
3842bdcd 12893
489d5531 12894 Int_t counter = 0;
12895
12896 for(Int_t ci1=1;ci1<4;ci1++)
12897 {
12898 for(Int_t ci2=ci1+1;ci2<=4;ci2++)
12899 {
ff70ca91 12900 fIntFlowProductOfCorrelationsPro->Fill(0.5+counter,
12901 fIntFlowCorrelationsEBE->GetBinContent(ci1)*
12902 fIntFlowCorrelationsEBE->GetBinContent(ci2),
12903 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
12904 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
12905 // products versus multiplicity: // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 12906 if(fCalculateCumulantsVsM)
12907 {
3842bdcd 12908 fIntFlowProductOfCorrelationsVsMPro[counter]->Fill(dMultiplicityBin, // to be improved: dMult => sum of weights ?
b3dacf6b 12909 fIntFlowCorrelationsEBE->GetBinContent(ci1)*
12910 fIntFlowCorrelationsEBE->GetBinContent(ci2),
12911 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
12912 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
12913 } // end of if(fCalculateCumulantsVsM)
ff70ca91 12914 counter++;
489d5531 12915 }
12916 }
12917
12918} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrelations()
12919
12920
e1d101a6 12921//=======================================================================================================================
489d5531 12922
12923
0328db2d 12924void AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrectionTermsForNUA()
12925{
12926 // Calculate averages of products of correction terms for NUA.
12927
12928 // a) Binning of fIntFlowProductOfCorrectionTermsForNUAPro is organized as follows:
12929 // 1st bin: <<2><cos(phi)>>
12930 // 2nd bin: <<2><sin(phi)>>
12931 // 3rd bin: <<cos(phi)><sin(phi)>>
12932 // 4th bin: <<2><cos(phi1+phi2)>>
12933 // 5th bin: <<2><sin(phi1+phi2)>>
12934 // 6th bin: <<2><cos(phi1-phi2-phi3)>>
12935 // 7th bin: <<2><sin(phi1-phi2-phi3)>>
12936 // 8th bin: <<4><cos(phi1)>>
12937 // 9th bin: <<4><sin(phi1)>>
12938 // 10th bin: <<4><cos(phi1+phi2)>>
12939 // 11th bin: <<4><sin(phi1+phi2)>>
12940 // 12th bin: <<4><cos(phi1-phi2-phi3)>>
12941 // 13th bin: <<4><sin(phi1-phi2-phi3)>>
12942 // 14th bin: <<cos(phi1)><cos(phi1+phi2)>>
12943 // 15th bin: <<cos(phi1)><sin(phi1+phi2)>>
12944 // 16th bin: <<cos(phi1)><cos(phi1-phi2-phi3)>>
12945 // 17th bin: <<cos(phi1)><sin(phi1-phi2-phi3)>>
12946 // 18th bin: <<sin(phi1)><cos(phi1+phi2)>>
12947 // 19th bin: <<sin(phi1)><sin(phi1+phi2)>>
12948 // 20th bin: <<sin(phi1)><cos(phi1-phi2-phi3)>>
12949 // 21st bin: <<sin(phi1)><sin(phi1-phi2-phi3)>>
12950 // 22nd bin: <<cos(phi1+phi2)><sin(phi1+phi2)>>
12951 // 23rd bin: <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>
12952 // 24th bin: <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>
12953 // 25th bin: <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>
12954 // 26th bin: <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>
12955 // 27th bin: <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>
12956
12957 // <<2><cos(phi)>>:
12958 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(0.5,
12959 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1),
12960 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12961 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
12962 // <<2><sin(phi)>>:
12963 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(1.5,
12964 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
12965 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12966 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
12967 // <<cos(phi)><sin(phi)>>:
12968 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(2.5,
12969 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
12970 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
12971 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
12972 // <<2><cos(phi1+phi2)>>:
12973 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(3.5,
12974 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
12975 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12976 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
12977 // <<2><sin(phi1+phi2)>>:
12978 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(4.5,
12979 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
12980 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12981 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
12982 // <<2><cos(phi1-phi2-phi3)>>:
12983 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(5.5,
12984 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
12985 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12986 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
12987 // <<2><sin(phi1-phi2-phi3)>>:
12988 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(6.5,
12989 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
12990 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12991 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
12992 // <<4><cos(phi1)>>:
12993 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(7.5,
12994 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1),
12995 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
12996 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
12997 // <<4><sin(phi1)>>:
12998 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(8.5,
12999 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
13000 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13001 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
13002 // <<4><cos(phi1+phi2)>>:
13003 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(9.5,
13004 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13005 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13006 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
13007 // <<4><sin(phi1+phi2)>>:
13008 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(10.5,
13009 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13010 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13011 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13012 // <<4><cos(phi1-phi2-phi3)>>:
13013 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(11.5,
13014 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13015 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13016 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13017 // <<4><sin(phi1-phi2-phi3)>>:
13018 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(12.5,
13019 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13020 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13021 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13022 // <<cos(phi1)><cos(phi1+phi2)>>:
13023 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(13.5,
13024 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13025 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13026 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
13027 // <<cos(phi1)><sin(phi1+phi2)>>:
13028 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(14.5,
13029 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13030 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13031 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13032 // <<cos(phi1)><cos(phi1-phi2-phi3)>>:
13033 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(15.5,
13034 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13035 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13036 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13037 // <<cos(phi1)><sin(phi1-phi2-phi3)>>:
13038 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(16.5,
13039 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13040 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13041 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13042 // <<sin(phi1)><cos(phi1+phi2)>>:
13043 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(17.5,
13044 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13045 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13046 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
13047 // <<sin(phi1)><sin(phi1+phi2)>>:
13048 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(18.5,
13049 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13050 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13051 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13052 // <<sin(phi1)><cos(phi1-phi2-phi3)>>:
13053 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(19.5,
13054 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13055 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13056 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13057 // <<sin(phi1)><sin(phi1-phi2-phi3)>>:
13058 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(20.5,
13059 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13060 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13061 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13062 // <<cos(phi1+phi2)><sin(phi1+phi2)>>:
13063 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(21.5,
13064 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13065 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13066 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13067 // <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>:
13068 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(22.5,
13069 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13070 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13071 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13072 // <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>:
13073 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(23.5,
13074 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13075 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13076 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13077 // <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>:
13078 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(24.5,
13079 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13080 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)
13081 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13082 // <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>:
13083 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(25.5,
13084 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13085 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)
13086 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13087 // <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>:
13088 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(26.5,
13089 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13090 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)
13091 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13092
13093} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrectionTermsForNUA()
13094
e1d101a6 13095//=======================================================================================================================
0328db2d 13096
489d5531 13097void AliFlowAnalysisWithQCumulants::CalculateCovariancesIntFlow()
13098{
13099 // a) Calculate unbiased estimators Cov(<2>,<4>), Cov(<2>,<6>), Cov(<2>,<8>), Cov(<4>,<6>), Cov(<4>,<8>) and Cov(<6>,<8>)
13100 // for covariances V_(<2>,<4>), V_(<2>,<6>), V_(<2>,<8>), V_(<4>,<6>), V_(<4>,<8>) and V_(<6>,<8>).
13101 // b) Store in histogram fIntFlowCovariances for instance the following:
13102 //
13103 // Cov(<2>,<4>) * (sum_{i=1}^{N} w_{<2>}_i w_{<4>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<4>}_j)]
13104 //
13105 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<4>} is event weight for <4>.
13106 // c) Binning of fIntFlowCovariances is organized as follows:
13107 //
13108 // 1st bin: Cov(<2>,<4>) * (sum_{i=1}^{N} w_{<2>}_i w_{<4>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<4>}_j)]
13109 // 2nd bin: Cov(<2>,<6>) * (sum_{i=1}^{N} w_{<2>}_i w_{<6>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<6>}_j)]
13110 // 3rd bin: Cov(<2>,<8>) * (sum_{i=1}^{N} w_{<2>}_i w_{<8>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<8>}_j)]
13111 // 4th bin: Cov(<4>,<6>) * (sum_{i=1}^{N} w_{<4>}_i w_{<6>}_i )/[(sum_{i=1}^{N} w_{<4>}_i) * (sum_{j=1}^{N} w_{<6>}_j)]
13112 // 5th bin: Cov(<4>,<8>) * (sum_{i=1}^{N} w_{<4>}_i w_{<8>}_i )/[(sum_{i=1}^{N} w_{<4>}_i) * (sum_{j=1}^{N} w_{<8>}_j)]
13113 // 6th bin: Cov(<6>,<8>) * (sum_{i=1}^{N} w_{<6>}_i w_{<8>}_i )/[(sum_{i=1}^{N} w_{<6>}_i) * (sum_{j=1}^{N} w_{<8>}_j)]
b3dacf6b 13114 //
489d5531 13115
b3dacf6b 13116 // Average 2-, 4-, 6- and 8-particle correlations for all events:
489d5531 13117 Double_t correlation[4] = {0.};
13118 for(Int_t ci=0;ci<4;ci++)
13119 {
13120 correlation[ci] = fIntFlowCorrelationsPro->GetBinContent(ci+1);
13121 }
b3dacf6b 13122 // Average products of 2-, 4-, 6- and 8-particle correlations:
489d5531 13123 Double_t productOfCorrelations[4][4] = {{0.}};
13124 Int_t productOfCorrelationsLabel = 1;
b3dacf6b 13125 // Denominators in the expressions for the unbiased estimator for covariance:
489d5531 13126 Double_t denominator[4][4] = {{0.}};
13127 Int_t sumOfProductOfEventWeightsLabel1 = 1;
b3dacf6b 13128 // Weight dependent prefactor which multiply unbiased estimators for covariances:
489d5531 13129 Double_t wPrefactor[4][4] = {{0.}};
13130 Int_t sumOfProductOfEventWeightsLabel2 = 1;
13131 for(Int_t c1=0;c1<4;c1++)
13132 {
13133 for(Int_t c2=c1+1;c2<4;c2++)
13134 {
13135 productOfCorrelations[c1][c2] = fIntFlowProductOfCorrelationsPro->GetBinContent(productOfCorrelationsLabel);
b3dacf6b 13136 if(TMath::Abs(fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)) > 1.e-44 && TMath::Abs(fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1)) > 1.e-44)
13137 {
13138 denominator[c1][c2] = 1.-(fIntFlowSumOfProductOfEventWeights->GetBinContent(sumOfProductOfEventWeightsLabel1))
13139 / (fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)
13140 * fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1));
13141 wPrefactor[c1][c2] = fIntFlowSumOfProductOfEventWeights->GetBinContent(sumOfProductOfEventWeightsLabel2)
13142 / (fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)
13143 * fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1));
489d5531 13144 }
b3dacf6b 13145 productOfCorrelationsLabel++; // to be improved - do I need here all 3 counters?
489d5531 13146 sumOfProductOfEventWeightsLabel1++;
13147 sumOfProductOfEventWeightsLabel2++;
b3dacf6b 13148 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13149 } // end of for(Int_t c1=0;c1<4;c1++)
489d5531 13150
489d5531 13151 Int_t covarianceLabel = 1;
13152 for(Int_t c1=0;c1<4;c1++)
13153 {
13154 for(Int_t c2=c1+1;c2<4;c2++)
13155 {
b3dacf6b 13156 if(TMath::Abs(denominator[c1][c2]) > 1.e-44)
489d5531 13157 {
b3dacf6b 13158 // Covariances:
489d5531 13159 Double_t cov = (productOfCorrelations[c1][c2]-correlation[c1]*correlation[c2])/denominator[c1][c2];
b3dacf6b 13160 // Covariances multiplied with weight dependent prefactor:
489d5531 13161 Double_t wCov = cov * wPrefactor[c1][c2];
13162 fIntFlowCovariances->SetBinContent(covarianceLabel,wCov);
13163 }
13164 covarianceLabel++;
b3dacf6b 13165 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13166 } // end of for(Int_t c1=0;c1<4;c1++)
489d5531 13167
b3dacf6b 13168 // Versus multiplicity:
13169 if(!fCalculateCumulantsVsM){return;}
9da1a4f3 13170 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
13171 for(Int_t b=1;b<=nBins;b++)
13172 {
b3dacf6b 13173 // Average 2-, 4-, 6- and 8-particle correlations for all events:
9da1a4f3 13174 Double_t correlationVsM[4] = {0.};
13175 for(Int_t ci=0;ci<4;ci++)
13176 {
13177 correlationVsM[ci] = fIntFlowCorrelationsVsMPro[ci]->GetBinContent(b);
13178 } // end of for(Int_t ci=0;ci<4;ci++)
b3dacf6b 13179 // Average products of 2-, 4-, 6- and 8-particle correlations:
9da1a4f3 13180 Double_t productOfCorrelationsVsM[4][4] = {{0.}};
13181 Int_t productOfCorrelationsLabelVsM = 1;
b3dacf6b 13182 // Denominators in the expressions for the unbiased estimator for covariance:
9da1a4f3 13183 Double_t denominatorVsM[4][4] = {{0.}};
13184 Int_t sumOfProductOfEventWeightsLabel1VsM = 1;
b3dacf6b 13185 // Weight dependent prefactor which multiply unbiased estimators for covariances:
9da1a4f3 13186 Double_t wPrefactorVsM[4][4] = {{0.}};
13187 Int_t sumOfProductOfEventWeightsLabel2VsM = 1;
13188 for(Int_t c1=0;c1<4;c1++)
13189 {
13190 for(Int_t c2=c1+1;c2<4;c2++)
13191 {
13192 productOfCorrelationsVsM[c1][c2] = fIntFlowProductOfCorrelationsVsMPro[productOfCorrelationsLabelVsM-1]->GetBinContent(b);
b3dacf6b 13193 if(TMath::Abs(fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)) > 1.e-44 && TMath::Abs(fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b)) > 1.e-44)
13194 {
13195 denominatorVsM[c1][c2] = 1.-(fIntFlowSumOfProductOfEventWeightsVsM[sumOfProductOfEventWeightsLabel1VsM-1]->GetBinContent(b))
13196 / (fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)
13197 * fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b));
13198 wPrefactorVsM[c1][c2] = fIntFlowSumOfProductOfEventWeightsVsM[sumOfProductOfEventWeightsLabel2VsM-1]->GetBinContent(b)
13199 / (fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)
13200 * fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b));
9da1a4f3 13201 }
13202 productOfCorrelationsLabelVsM++;
13203 sumOfProductOfEventWeightsLabel1VsM++;
13204 sumOfProductOfEventWeightsLabel2VsM++;
13205 } // end of for(Int_t c1=0;c1<4;c1++)
13206 } // end of for(Int_t c2=c1+1;c2<4;c2++)
b3dacf6b 13207
9da1a4f3 13208 Int_t covarianceLabelVsM = 1;
13209 for(Int_t c1=0;c1<4;c1++)
13210 {
13211 for(Int_t c2=c1+1;c2<4;c2++)
13212 {
b3dacf6b 13213 if(TMath::Abs(denominatorVsM[c1][c2]) > 1.e-44)
9da1a4f3 13214 {
b3dacf6b 13215 // Covariances:
9da1a4f3 13216 Double_t covVsM = (productOfCorrelationsVsM[c1][c2]-correlationVsM[c1]*correlationVsM[c2])/denominatorVsM[c1][c2];
b3dacf6b 13217 // Covariances multiplied with weight dependent prefactor:
9da1a4f3 13218 Double_t wCovVsM = covVsM * wPrefactorVsM[c1][c2];
13219 fIntFlowCovariancesVsM[covarianceLabelVsM-1]->SetBinContent(b,wCovVsM);
13220 }
13221 covarianceLabelVsM++;
b3dacf6b 13222 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13223 } // end of for(Int_t c1=0;c1<4;c1++)
9da1a4f3 13224 } // end of for(Int_t b=1;b<=nBins;b++)
13225
489d5531 13226} // end of AliFlowAnalysisWithQCumulants::CalculateCovariancesIntFlow()
13227
e1d101a6 13228//=======================================================================================================================
489d5531 13229
0328db2d 13230void AliFlowAnalysisWithQCumulants::CalculateCovariancesNUAIntFlow()
13231{
13232 // a) Calculate unbiased estimators Cov(*,*) for true covariances V_(*,*) for NUA terms.
13233 // b) Store in histogram fIntFlowCovariancesNUA for instance the following:
13234 //
13235 // Cov(<2>,<cos(phi)>) * (sum_{i=1}^{N} w_{<2>}_i w_{<cos(phi)>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<cos(phi)>}_j)]
13236 //
13237 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<cos(phi)>} is event weight for <cos(phi)>.
13238 // c) Binning of fIntFlowCovariancesNUA is organized as follows:
13239 //
13240 // 1st bin: Cov(<2>,<cos(phi)>) * (sum_{i=1}^{N} w_{<2>}_i w_{<cos(phi)>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<cos(phi)>}_j)]
13241 // 2nd bin: Cov(<2>,<sin(phi)>) * (sum_{i=1}^{N} w_{<2>}_i w_{<sin(phi)>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<sin(phi)>}_j)]
13242 // 3rd bin: Cov(<cos(phi)>,<sin(phi)>) * (sum_{i=1}^{N} w_{<cos(phi)>}_i w_{<sin(phi)>}_i )/[(sum_{i=1}^{N} w_{<cos(phi)>}_i) * (sum_{j=1}^{N} w_{<sin(phi)>}_j)]
13243 // ...
13244
13245 // Cov(<2>,<cos(phi)>):
13246 Double_t product1 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(1); // <<2><cos(phi)>>
13247 Double_t term1st1 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13248 Double_t term2nd1 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi)>>
13249 Double_t sumOfW1st1 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13250 Double_t sumOfW2nd1 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi)>}
13251 Double_t sumOfWW1 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(1); // W_{<2>} * W_{<cos(phi)>}
13252 // numerator in the expression for the the unbiased estimator for covariance:
13253 Double_t numerator1 = product1 - term1st1*term2nd1;
13254 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13255 Double_t denominator1 = 0.;
13256 if(TMath::Abs(sumOfW1st1*sumOfW2nd1)>0.)
13257 {
13258 denominator1 = 1.-sumOfWW1/(sumOfW1st1*sumOfW2nd1);
13259 if(TMath::Abs(denominator1)>0.)
13260 {
13261 // covariance:
13262 Double_t covariance1 = numerator1/denominator1;
13263 // weight dependent prefactor for covariance:
13264 Double_t wPrefactor1 = sumOfWW1/(sumOfW1st1*sumOfW2nd1);
13265 // finally, store "weighted" covariance:
13266 fIntFlowCovariancesNUA->SetBinContent(1,wPrefactor1*covariance1);
13267 } // end of if(TMath::Abs(denominator)>0.)
13268 } // end of if(TMath::Abs(sumOfW1st1*sumOfW2nd1)>0.)
13269
0328db2d 13270 // Cov(<2>,<sin(phi)>):
13271 Double_t product2 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(2); // <<2><sin(phi)>>
13272 Double_t term1st2 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13273 Double_t term2nd2 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi)>>
13274 Double_t sumOfW1st2 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13275 Double_t sumOfW2nd2 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi)>}
13276 Double_t sumOfWW2 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(2); // W_{<2>} * W_{<sin(phi)>}
13277 // numerator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13278 Double_t numerator2 = product2 - term1st2*term2nd2;
0328db2d 13279 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13280 Double_t denominator2 = 0.;
13281 if(TMath::Abs(sumOfW1st2*sumOfW2nd2)>0.)
13282 {
13283 denominator2 = 1.-sumOfWW2/(sumOfW1st2*sumOfW2nd2);
13284 if(TMath::Abs(denominator2)>0.)
13285 {
13286 // covariance:
13287 Double_t covariance2 = numerator2/denominator2;
13288 // weight dependent prefactor for covariance:
13289 Double_t wPrefactor2 = sumOfWW2/(sumOfW1st2*sumOfW2nd2);
13290 // finally, store "weighted" covariance:
13291 fIntFlowCovariancesNUA->SetBinContent(2,wPrefactor2*covariance2);
13292 } // end of if(TMath::Abs(denominator2)>0.)
13293 } // end of if(TMath::Abs(sumOfW1st2*sumOfW2nd2)>0.)
0328db2d 13294
13295 // Cov(<cos(phi)>,<sin(phi)>):
13296 Double_t product3 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(3); // <<cos(phi)><sin(phi)>>
13297 Double_t term1st3 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi)>>
13298 Double_t term2nd3 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi)>>
13299 Double_t sumOfW1st3 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi)>}
13300 Double_t sumOfW2nd3 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi)>}
13301 Double_t sumOfWW3 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(3); // W_{<cos(phi)>} * W_{<sin(phi)>}
13302 // numerator in the expression for the the unbiased estimator for covariance:
13303 Double_t numerator3 = product3 - term1st3*term2nd3;
13304 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13305 Double_t denominator3 = 0;
13306 if(TMath::Abs(sumOfW1st3*sumOfW2nd3)>0.)
13307 {
13308 denominator3 = 1.-sumOfWW3/(sumOfW1st3*sumOfW2nd3);
13309 if(TMath::Abs(denominator3)>0.)
13310 {
13311 // covariance:
13312 Double_t covariance3 = numerator3/denominator3;
13313 // weight dependent prefactor for covariance:
13314 Double_t wPrefactor3 = sumOfWW3/(sumOfW1st3*sumOfW2nd3);
13315 // finally, store "weighted" covariance:
13316 fIntFlowCovariancesNUA->SetBinContent(3,wPrefactor3*covariance3);
13317 } // end of if(TMath::Abs(denominator3)>0.)
13318 } // end of if(TMath::Abs(sumOfW1st3*sumOfW2nd3)>0.)
0328db2d 13319
13320 // Cov(<2>,<cos(phi1+phi2)>):
13321 Double_t product4 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(4); // <<2><cos(phi1+phi2)>>
13322 Double_t term1st4 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13323 Double_t term2nd4 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13324 Double_t sumOfW1st4 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13325 Double_t sumOfW2nd4 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13326 Double_t sumOfWW4 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(4); // W_{<2>} * W_{<cos(phi1+phi2)>}
13327 // numerator in the expression for the the unbiased estimator for covariance:
13328 Double_t numerator4 = product4 - term1st4*term2nd4;
13329 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13330 Double_t denominator4 = 0.;
13331 if(TMath::Abs(sumOfW1st4*sumOfW2nd4)>0.)
13332 {
13333 denominator4 = 1.-sumOfWW4/(sumOfW1st4*sumOfW2nd4);
13334 if(TMath::Abs(denominator4)>0.)
13335 {
13336 // covariance:
13337 Double_t covariance4 = numerator4/denominator4;
13338 // weight dependent prefactor for covariance:
13339 Double_t wPrefactor4 = sumOfWW4/(sumOfW1st4*sumOfW2nd4);
13340 // finally, store "weighted" covariance:
13341 fIntFlowCovariancesNUA->SetBinContent(4,wPrefactor4*covariance4);
13342 } // end of if(TMath::Abs(denominator4)>0.)
13343 } // end of if(TMath::Abs(sumOfW1st4*sumOfW2nd4)>0.)
13344
0328db2d 13345 // Cov(<2>,<sin(phi1+phi2)>):
13346 Double_t product5 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(5); // <<2><sin(phi1+phi2)>>
13347 Double_t term1st5 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13348 Double_t term2nd5 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13349 Double_t sumOfW1st5 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13350 Double_t sumOfW2nd5 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13351 Double_t sumOfWW5 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(5); // W_{<2>} * W_{<sin(phi1+phi2)>}
13352 // numerator in the expression for the the unbiased estimator for covariance:
13353 Double_t numerator5 = product5 - term1st5*term2nd5;
13354 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13355 Double_t denominator5 = 0.;
13356 if(TMath::Abs(sumOfW1st5*sumOfW2nd5)>0.)
13357 {
13358 denominator5 = 1.-sumOfWW5/(sumOfW1st5*sumOfW2nd5);
13359 if(TMath::Abs(denominator5)>0.)
13360 {
13361 // covariance:
13362 Double_t covariance5 = numerator5/denominator5;
13363 // weight dependent prefactor for covariance:
13364 Double_t wPrefactor5 = sumOfWW5/(sumOfW1st5*sumOfW2nd5);
13365 // finally, store "weighted" covariance:
13366 fIntFlowCovariancesNUA->SetBinContent(5,wPrefactor5*covariance5);
13367 } // end of if(TMath::Abs(denominator5)>0.)
13368 } // end of if(TMath::Abs(sumOfW1st5*sumOfW2nd5)>0.)
13369
0328db2d 13370 // Cov(<2>,<cos(phi1-phi2-phi3)>):
13371 Double_t product6 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(6); // <<2><cos(phi1-phi2-phi3)>>
13372 Double_t term1st6 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13373 Double_t term2nd6 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13374 Double_t sumOfW1st6 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13375 Double_t sumOfW2nd6 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13376 Double_t sumOfWW6 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(6); // W_{<2>} * W_{<cos(phi1-phi2-phi3)>}
13377 // numerator in the expression for the the unbiased estimator for covariance:
13378 Double_t numerator6 = product6 - term1st6*term2nd6;
13379 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13380 Double_t denominator6 = 0.;
13381 if(TMath::Abs(sumOfW1st6*sumOfW2nd6)>0.)
13382 {
13383 denominator6 = 1.-sumOfWW6/(sumOfW1st6*sumOfW2nd6);
13384 if(TMath::Abs(denominator6)>0.)
13385 {
13386 // covariance:
13387 Double_t covariance6 = numerator6/denominator6;
13388 // weight dependent prefactor for covariance:
13389 Double_t wPrefactor6 = sumOfWW6/(sumOfW1st6*sumOfW2nd6);
13390 // finally, store "weighted" covariance:
13391 fIntFlowCovariancesNUA->SetBinContent(6,wPrefactor6*covariance6);
13392 } // end of if(TMath::Abs(denominator6)>0.)
13393 } // end of if(TMath::Abs(sumOfW1st6*sumOfW2nd6)>0.)
13394
0328db2d 13395 // Cov(<2>,<sin(phi1-phi2-phi3)>):
13396 Double_t product7 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(7); // <<2><sin(phi1-phi2-phi3)>>
13397 Double_t term1st7 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13398 Double_t term2nd7 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13399 Double_t sumOfW1st7 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13400 Double_t sumOfW2nd7 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13401 Double_t sumOfWW7 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(7); // W_{<2>} * W_{<sin(phi1-phi2-phi3)>}
13402 // numerator in the expression for the the unbiased estimator for covariance:
13403 Double_t numerator7 = product7 - term1st7*term2nd7;
13404 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13405 Double_t denominator7 = 0.;
13406 if(TMath::Abs(sumOfW1st7*sumOfW2nd7)>0.)
13407 {
13408 denominator7 = 1.-sumOfWW7/(sumOfW1st7*sumOfW2nd7);
13409 if(TMath::Abs(denominator7)>0.)
13410 {
13411 // covariance:
13412 Double_t covariance7 = numerator7/denominator7;
13413 // weight dependent prefactor for covariance:
13414 Double_t wPrefactor7 = sumOfWW7/(sumOfW1st7*sumOfW2nd7);
13415 // finally, store "weighted" covariance:
13416 fIntFlowCovariancesNUA->SetBinContent(7,wPrefactor7*covariance7);
13417 } // end of if(TMath::Abs(denominator7)>0.)
13418 } // end of if(TMath::Abs(sumOfW1st7*sumOfW2nd7)>0.)
13419
0328db2d 13420 // Cov(<4>,<cos(phi1>):
13421 Double_t product8 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(8); // <<4><cos(phi1)>>
13422 Double_t term1st8 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13423 Double_t term2nd8 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13424 Double_t sumOfW1st8 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13425 Double_t sumOfW2nd8 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13426 Double_t sumOfWW8 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(8); // W_{<4>} * W_{<cos(phi1)>}
13427 // numerator in the expression for the the unbiased estimator for covariance:
13428 Double_t numerator8 = product8 - term1st8*term2nd8;
13429 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13430 Double_t denominator8 = 0.;
13431 if(TMath::Abs(sumOfW1st8*sumOfW2nd8)>0.)
13432 {
13433 denominator8 = 1.-sumOfWW8/(sumOfW1st8*sumOfW2nd8);
13434 if(TMath::Abs(denominator8)>0.)
13435 {
13436 // covariance:
13437 Double_t covariance8 = numerator8/denominator8;
13438 // weight dependent prefactor for covariance:
13439 Double_t wPrefactor8 = sumOfWW8/(sumOfW1st8*sumOfW2nd8);
13440 // finally, store "weighted" covariance:
13441 fIntFlowCovariancesNUA->SetBinContent(8,wPrefactor8*covariance8);
13442 } // end of if(TMath::Abs(denominator8)>0.)
13443 } // end of if(TMath::Abs(sumOfW1st8*sumOfW2nd8)>0.)
13444
0328db2d 13445 // Cov(<4>,<sin(phi1)>):
13446 Double_t product9 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(9); // <<4><sin(phi1)>>
13447 Double_t term1st9 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13448 Double_t term2nd9 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13449 Double_t sumOfW1st9 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13450 Double_t sumOfW2nd9 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13451 Double_t sumOfWW9 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(9); // W_{<4>} * W_{<sin(phi1)>}
13452 // numerator in the expression for the the unbiased estimator for covariance:
13453 Double_t numerator9 = product9 - term1st9*term2nd9;
13454 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13455 Double_t denominator9 = 0.;
13456 if(TMath::Abs(sumOfW1st9*sumOfW2nd9)>0.)
13457 {
13458 denominator9 = 1.-sumOfWW9/(sumOfW1st9*sumOfW2nd9);
13459 if(TMath::Abs(denominator9)>0.)
13460 {
13461 // covariance:
13462 Double_t covariance9 = numerator9/denominator9;
13463 // weight dependent prefactor for covariance:
13464 Double_t wPrefactor9 = sumOfWW9/(sumOfW1st9*sumOfW2nd9);
13465 // finally, store "weighted" covariance:
13466 fIntFlowCovariancesNUA->SetBinContent(9,wPrefactor9*covariance9);
13467 }
13468 } // end of if(TMath::Abs(sumOfW1st9*sumOfW2nd9)>0.)
13469
0328db2d 13470 // Cov(<4>,<cos(phi1+phi2)>):
13471 Double_t product10 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(10); // <<4><cos(phi1+phi2)>>
13472 Double_t term1st10 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13473 Double_t term2nd10 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13474 Double_t sumOfW1st10 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13475 Double_t sumOfW2nd10 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13476 Double_t sumOfWW10 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(10); // W_{<4>} * W_{<cos(phi1+phi2)>}
13477 // numerator in the expression for the the unbiased estimator for covariance:
13478 Double_t numerator10 = product10 - term1st10*term2nd10;
13479 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13480 Double_t denominator10 = 0.;
13481 if(TMath::Abs(sumOfW1st10*sumOfW2nd10)>0.)
13482 {
13483 denominator10 = 1.-sumOfWW10/(sumOfW1st10*sumOfW2nd10);
13484 if(TMath::Abs(denominator10)>0.)
13485 {
13486 // covariance:
13487 Double_t covariance10 = numerator10/denominator10;
13488 // weight dependent prefactor for covariance:
13489 Double_t wPrefactor10 = sumOfWW10/(sumOfW1st10*sumOfW2nd10);
13490 // finally, store "weighted" covariance:
13491 fIntFlowCovariancesNUA->SetBinContent(10,wPrefactor10*covariance10);
13492 } // end of if(TMath::Abs(denominator10)>0.)
13493 } // end of if(TMath::Abs(sumOfW1st10*sumOfW2nd10)>0.)
13494
0328db2d 13495 // Cov(<4>,<sin(phi1+phi2)>):
13496 Double_t product11 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(11); // <<4><sin(phi1+phi2)>>
13497 Double_t term1st11 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13498 Double_t term2nd11 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13499 Double_t sumOfW1st11 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13500 Double_t sumOfW2nd11 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13501 Double_t sumOfWW11 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(11); // W_{<4>} * W_{<sin(phi1+phi2)>}
13502 // numerator in the expression for the the unbiased estimator for covariance:
13503 Double_t numerator11 = product11 - term1st11*term2nd11;
13504 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13505 Double_t denominator11 = 0.;
13506 if(TMath::Abs(sumOfW1st11*sumOfW2nd11)>0.)
13507 {
13508 denominator11 = 1.-sumOfWW11/(sumOfW1st11*sumOfW2nd11);
13509 if(TMath::Abs(denominator11)>0.)
13510 {
13511 // covariance:
13512 Double_t covariance11 = numerator11/denominator11;
13513 // weight dependent prefactor for covariance:
13514 Double_t wPrefactor11 = sumOfWW11/(sumOfW1st11*sumOfW2nd11);
13515 // finally, store "weighted" covariance:
13516 fIntFlowCovariancesNUA->SetBinContent(11,wPrefactor11*covariance11);
13517 } // end of if(TMath::Abs(denominator11)>0.)
13518 } // end of if(TMath::Abs(sumOfW1st11*sumOfW2nd11)>0.)
0328db2d 13519
13520 // Cov(<4>,<cos(phi1-phi2-phi3)>):
13521 Double_t product12 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(12); // <<4><cos(phi1-phi2-phi3)>>
13522 Double_t term1st12 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13523 Double_t term2nd12 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13524 Double_t sumOfW1st12 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13525 Double_t sumOfW2nd12 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13526 Double_t sumOfWW12 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(12); // W_{<4>} * W_{<cos(phi1-phi2-phi3)>}
13527 // numerator in the expression for the the unbiased estimator for covariance:
13528 Double_t numerator12 = product12 - term1st12*term2nd12;
13529 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13530 Double_t denominator12 = 0.;
13531 if(TMath::Abs(sumOfW1st12*sumOfW2nd12)>0.)
13532 {
13533 denominator12 = 1.-sumOfWW12/(sumOfW1st12*sumOfW2nd12);
13534 if(TMath::Abs(denominator12)>0.)
13535 {
13536 // covariance:
13537 Double_t covariance12 = numerator12/denominator12;
13538 // weight dependent prefactor for covariance:
13539 Double_t wPrefactor12 = sumOfWW12/(sumOfW1st12*sumOfW2nd12);
13540 // finally, store "weighted" covariance:
13541 fIntFlowCovariancesNUA->SetBinContent(12,wPrefactor12*covariance12);
13542 } // end of if(TMath::Abs(denominator12)>0.)
13543 } // end of if(TMath::Abs(sumOfW1st12*sumOfW2nd12)>0.)
0328db2d 13544
13545 // Cov(<4>,<sin(phi1-phi2-phi3)>):
13546 Double_t product13 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(13); // <<4><sin(phi1-phi2-phi3)>>
13547 Double_t term1st13 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13548 Double_t term2nd13 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13549 Double_t sumOfW1st13 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13550 Double_t sumOfW2nd13 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13551 Double_t sumOfWW13 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(13); // W_{<4>} * W_{<sin(phi1-phi2-phi3)>}
13552 // numerator in the expression for the the unbiased estimator for covariance:
13553 Double_t numerator13 = product13 - term1st13*term2nd13;
13554 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13555 Double_t denominator13 = 0.;
13556 if(TMath::Abs(sumOfW1st13*sumOfW2nd13)>0.)
13557 {
13558 denominator13 = 1.-sumOfWW13/(sumOfW1st13*sumOfW2nd13);
13559 if(TMath::Abs(denominator13)>0.)
13560 {
13561 // covariance:
13562 Double_t covariance13 = numerator13/denominator13;
13563 // weight dependent prefactor for covariance:
13564 Double_t wPrefactor13 = sumOfWW13/(sumOfW1st13*sumOfW2nd13);
13565 // finally, store "weighted" covariance:
13566 fIntFlowCovariancesNUA->SetBinContent(13,wPrefactor13*covariance13);
13567 } // end of if(TMath::Abs(denominator13)>0.)
13568 } // end of if(TMath::Abs(sumOfW1st13*sumOfW2nd13)>0.)
0328db2d 13569
13570 // Cov(<cos(phi1)>,<cos(phi1+phi2)>):
13571 Double_t product14 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(14); // <<cos(phi1)><cos(phi1+phi2)>>
13572 Double_t term1st14 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13573 Double_t term2nd14 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13574 Double_t sumOfW1st14 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13575 Double_t sumOfW2nd14 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13576 Double_t sumOfWW14 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(14); // W_{<cos(phi1)>} * W_{<cos(phi1+phi2)>}
13577 // numerator in the expression for the the unbiased estimator for covariance:
13578 Double_t numerator14 = product14 - term1st14*term2nd14;
13579 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13580 Double_t denominator14 = 0.;
13581 if(TMath::Abs(sumOfW1st14*sumOfW2nd14)>0.)
13582 {
13583 denominator14 = 1.-sumOfWW14/(sumOfW1st14*sumOfW2nd14);
13584 if(TMath::Abs(denominator14)>0.)
13585 {
13586 // covariance:
13587 Double_t covariance14 = numerator14/denominator14;
13588 // weight dependent prefactor for covariance:
13589 Double_t wPrefactor14 = sumOfWW14/(sumOfW1st14*sumOfW2nd14);
13590 // finally, store "weighted" covariance:
13591 fIntFlowCovariancesNUA->SetBinContent(14,wPrefactor14*covariance14);
13592 } // end of if(TMath::Abs(denominator14)>0.)
13593 } // end of if(TMath::Abs(sumOfW1st14*sumOfW2nd14)>0.)
0328db2d 13594
13595 // Cov(<cos(phi1)>,<sin(phi1+phi2)>):
13596 Double_t product15 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(15); // <<cos(phi1)><sin(phi1+phi2)>>
13597 Double_t term1st15 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13598 Double_t term2nd15 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13599 Double_t sumOfW1st15 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13600 Double_t sumOfW2nd15 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13601 Double_t sumOfWW15 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(15); // W_{<cos(phi1)>} * W_{<sin(phi1+phi2)>}
13602 // numerator in the expression for the the unbiased estimator for covariance:
13603 Double_t numerator15 = product15 - term1st15*term2nd15;
13604 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13605 Double_t denominator15 = 0.;
13606 if(TMath::Abs(sumOfW1st15*sumOfW2nd15)>0.)
13607 {
13608 denominator15 = 1.-sumOfWW15/(sumOfW1st15*sumOfW2nd15);
13609 if(TMath::Abs(denominator15)>0.)
13610 {
13611 // covariance:
13612 Double_t covariance15 = numerator15/denominator15;
13613 // weight dependent prefactor for covariance:
13614 Double_t wPrefactor15 = sumOfWW15/(sumOfW1st15*sumOfW2nd15);
13615 // finally, store "weighted" covariance:
13616 fIntFlowCovariancesNUA->SetBinContent(15,wPrefactor15*covariance15);
13617 } // end of if(TMath::Abs(denominator15)>0.)
13618 } // end of if(TMath::Abs(sumOfW1st15*sumOfW2nd15)>0.)
13619
0328db2d 13620 // Cov(<cos(phi1)>,<cos(phi1-phi2-phi3)>):
13621 Double_t product16 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(16); // <<cos(phi1)><cos(phi1-phi2-phi3)>>
13622 Double_t term1st16 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13623 Double_t term2nd16 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13624 Double_t sumOfW1st16 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13625 Double_t sumOfW2nd16 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13626 Double_t sumOfWW16 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(16); // W_{<cos(phi1)>} * W_{<cos(phi1-phi2-phi3)>}
13627 // numerator in the expression for the the unbiased estimator for covariance:
13628 Double_t numerator16 = product16 - term1st16*term2nd16;
13629 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13630 Double_t denominator16 = 0.;
13631 if(TMath::Abs(sumOfW1st16*sumOfW2nd16)>0.)
13632 {
13633 denominator16 = 1.-sumOfWW16/(sumOfW1st16*sumOfW2nd16);
13634 if(TMath::Abs(denominator16)>0.)
13635 {
13636 // covariance:
13637 Double_t covariance16 = numerator16/denominator16;
13638 // weight dependent prefactor for covariance:
13639 Double_t wPrefactor16 = sumOfWW16/(sumOfW1st16*sumOfW2nd16);
13640 // finally, store "weighted" covariance:
13641 fIntFlowCovariancesNUA->SetBinContent(16,wPrefactor16*covariance16);
13642 } // end of if(TMath::Abs(denominator16)>0.)
13643 } // end ofif(TMath::Abs(sumOfW1st16*sumOfW2nd16)>0.)
13644
0328db2d 13645 // Cov(<cos(phi1)>,<sin(phi1-phi2-phi3)>):
13646 Double_t product17 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(17); // <<cos(phi1)><sin(phi1-phi2-phi3)>>
13647 Double_t term1st17 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13648 Double_t term2nd17 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13649 Double_t sumOfW1st17 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13650 Double_t sumOfW2nd17 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13651 Double_t sumOfWW17 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(17); // W_{<cos(phi1)>} * W_{<sin(phi1-phi2-phi3)>}
13652 // numerator in the expression for the the unbiased estimator for covariance:
13653 Double_t numerator17 = product17 - term1st17*term2nd17;
13654 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13655 Double_t denominator17 = 0.;
13656 if(TMath::Abs(sumOfW1st17*sumOfW2nd17)>0.)
13657 {
13658 denominator17 = 1.-sumOfWW17/(sumOfW1st17*sumOfW2nd17);
13659 if(TMath::Abs(denominator17)>0.)
13660 {
13661 // covariance:
13662 Double_t covariance17 = numerator17/denominator17;
13663 // weight dependent prefactor for covariance:
13664 Double_t wPrefactor17 = sumOfWW17/(sumOfW1st17*sumOfW2nd17);
13665 // finally, store "weighted" covariance:
13666 fIntFlowCovariancesNUA->SetBinContent(17,wPrefactor17*covariance17);
13667 } // end of if(TMath::Abs(denominator17)>0.)
13668 } // end of if(TMath::Abs(sumOfW1st17*sumOfW2nd17)>0.)
0328db2d 13669
13670 // Cov(<sin(phi1)>,<cos(phi1+phi2)>):
13671 Double_t product18 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(18); // <<sin(phi1)><cos(phi1+phi2)>>
13672 Double_t term1st18 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13673 Double_t term2nd18 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13674 Double_t sumOfW1st18 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13675 Double_t sumOfW2nd18 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13676 Double_t sumOfWW18 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(18); // W_{<sin(phi1)>} * W_{<cos(phi1+phi2)>}
13677 // numerator in the expression for the the unbiased estimator for covariance:
13678 Double_t numerator18 = product18 - term1st18*term2nd18;
13679 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13680 Double_t denominator18 = 0.;
13681 if(TMath::Abs(sumOfW1st18*sumOfW2nd18)>0.)
13682 {
13683 denominator18 = 1.-sumOfWW18/(sumOfW1st18*sumOfW2nd18);
13684 if(TMath::Abs(denominator18)>0.)
13685 {
13686 // covariance:
13687 Double_t covariance18 = numerator18/denominator18;
13688 // weight dependent prefactor for covariance:
13689 Double_t wPrefactor18 = sumOfWW18/(sumOfW1st18*sumOfW2nd18);
13690 // finally, store "weighted" covariance:
13691 fIntFlowCovariancesNUA->SetBinContent(18,wPrefactor18*covariance18);
13692 } // end of if(TMath::Abs(denominator18)>0.)
13693 } // end of if(TMath::Abs(sumOfW1st18*sumOfW2nd18)>0.)
0328db2d 13694
13695 // Cov(<sin(phi1)>,<sin(phi1+phi2)>):
13696 Double_t product19 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(19); // <<sin(phi1)><sin(phi1+phi2)>>
13697 Double_t term1st19 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13698 Double_t term2nd19 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13699 Double_t sumOfW1st19 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13700 Double_t sumOfW2nd19 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13701 Double_t sumOfWW19 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(19); // W_{<sin(phi1)>} * W_{<sin(phi1+phi2)>}
13702 // numerator in the expression for the the unbiased estimator for covariance:
13703 Double_t numerator19 = product19 - term1st19*term2nd19;
13704 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13705 Double_t denominator19 = 0.;
13706 if(TMath::Abs(sumOfW1st19*sumOfW2nd19)>0.)
13707 {
13708 denominator19 = 1.-sumOfWW19/(sumOfW1st19*sumOfW2nd19);
13709 if(TMath::Abs(denominator19)>0.)
13710 {
13711 // covariance:
13712 Double_t covariance19 = numerator19/denominator19;
13713 // weight dependent prefactor for covariance:
13714 Double_t wPrefactor19 = sumOfWW19/(sumOfW1st19*sumOfW2nd19);
13715 // finally, store "weighted" covariance:
13716 fIntFlowCovariancesNUA->SetBinContent(19,wPrefactor19*covariance19);
13717 } // end of if(TMath::Abs(denominator19)>0.)
13718 } // end of if(TMath::Abs(sumOfW1st19*sumOfW2nd19)>0.)
13719
0328db2d 13720 // Cov(<sin(phi1)>,<cos(phi1-phi2-phi3)>):
13721 Double_t product20 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(20); // <<sin(phi1)><cos(phi1-phi2-phi3)>>
13722 Double_t term1st20 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13723 Double_t term2nd20 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13724 Double_t sumOfW1st20 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13725 Double_t sumOfW2nd20 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13726 Double_t sumOfWW20 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(20); // W_{<sin(phi1)>} * W_{<cos(phi1-phi2-phi3)>}
13727 // numerator in the expression for the the unbiased estimator for covariance:
13728 Double_t numerator20 = product20 - term1st20*term2nd20;
13729 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13730 Double_t denominator20 = 0.;
13731 if(TMath::Abs(sumOfW1st20*sumOfW2nd20)>0.)
13732 {
13733 denominator20 = 1.-sumOfWW20/(sumOfW1st20*sumOfW2nd20);
13734 if(TMath::Abs(denominator20)>0.)
13735 {
13736 // covariance:
13737 Double_t covariance20 = numerator20/denominator20;
13738 // weight dependent prefactor for covariance:
13739 Double_t wPrefactor20 = sumOfWW20/(sumOfW1st20*sumOfW2nd20);
13740 // finally, store "weighted" covariance:
13741 fIntFlowCovariancesNUA->SetBinContent(20,wPrefactor20*covariance20);
13742 } // end of if(TMath::Abs(denominator20)>0.)
13743 } // end of if(TMath::Abs(sumOfW1st20*sumOfW2nd20)>0.)
0328db2d 13744
13745 // Cov(<sin(phi1)>,<sin(phi1-phi2-phi3)>):
13746 Double_t product21 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(21); // <<sin(phi1)><sin(phi1-phi2-phi3)>>
13747 Double_t term1st21 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13748 Double_t term2nd21 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13749 Double_t sumOfW1st21 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13750 Double_t sumOfW2nd21 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13751 Double_t sumOfWW21 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(21); // W_{<sin(phi1)>} * W_{<sin(phi1-phi2-phi3)>}
13752 // numerator in the expression for the the unbiased estimator for covariance:
13753 Double_t numerator21 = product21 - term1st21*term2nd21;
13754 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13755 Double_t denominator21 = 0.;
13756 if(TMath::Abs(sumOfW1st21*sumOfW2nd21)>0.)
13757 {
13758 denominator21 = 1.-sumOfWW21/(sumOfW1st21*sumOfW2nd21);
13759 if(TMath::Abs(denominator21)>0.)
13760 {
13761 // covariance:
13762 Double_t covariance21 = numerator21/denominator21;
13763 // weight dependent prefactor for covariance:
13764 Double_t wPrefactor21 = sumOfWW21/(sumOfW1st21*sumOfW2nd21);
13765 // finally, store "weighted" covariance:
13766 fIntFlowCovariancesNUA->SetBinContent(21,wPrefactor21*covariance21);
13767 } // end of if(TMath::Abs(denominator21)>0.)
13768 } // end of if(TMath::Abs(sumOfW1st21*sumOfW2nd21)>0.)
0328db2d 13769
13770 // Cov(<cos(phi1+phi2)>,<sin(phi1+phi2)>):
13771 Double_t product22 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(22); // <<cos(phi1+phi2)><sin(phi1+phi2)>>
13772 Double_t term1st22 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13773 Double_t term2nd22 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13774 Double_t sumOfW1st22 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13775 Double_t sumOfW2nd22 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13776 Double_t sumOfWW22 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(22); // W_{<cos(phi1+phi2)>} * W_{<sin(phi1+phi2)>}
13777 // numerator in the expression for the the unbiased estimator for covariance:
13778 Double_t numerator22 = product22 - term1st22*term2nd22;
13779 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13780 Double_t denominator22 = 0.;
13781 if(TMath::Abs(sumOfW1st22*sumOfW2nd22)>0.)
13782 {
13783 denominator22 = 1.-sumOfWW22/(sumOfW1st22*sumOfW2nd22);
13784 if(TMath::Abs(denominator22)>0.)
13785 {
13786 // covariance:
13787 Double_t covariance22 = numerator22/denominator22;
13788 // weight dependent prefactor for covariance:
13789 Double_t wPrefactor22 = sumOfWW22/(sumOfW1st22*sumOfW2nd22);
13790 // finally, store "weighted" covariance:
13791 fIntFlowCovariancesNUA->SetBinContent(22,wPrefactor22*covariance22);
13792 } // end of if(TMath::Abs(denominator22)>0.)
13793 } // end of if(TMath::Abs(sumOfW1st22*sumOfW2nd22)>0.)
0328db2d 13794
13795 // Cov(<cos(phi1+phi2)>,<cos(phi1-phi2-phi3)>):
13796 Double_t product23 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(23); // <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>
13797 Double_t term1st23 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13798 Double_t term2nd23 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13799 Double_t sumOfW1st23 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13800 Double_t sumOfW2nd23 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13801 Double_t sumOfWW23 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(23); // W_{<cos(phi1+phi2)>} * W_{<cos(phi1-phi2-phi3)>}
13802 // numerator in the expression for the the unbiased estimator for covariance:
13803 Double_t numerator23 = product23 - term1st23*term2nd23;
13804 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13805 Double_t denominator23 = 0.;
13806 if(TMath::Abs(sumOfW1st23*sumOfW2nd23)>0.)
13807 {
13808 denominator23 = 1.-sumOfWW23/(sumOfW1st23*sumOfW2nd23);
13809 if(TMath::Abs(denominator23)>0.)
13810 {
13811 // covariance:
13812 Double_t covariance23 = numerator23/denominator23;
13813 // weight dependent prefactor for covariance:
13814 Double_t wPrefactor23 = sumOfWW23/(sumOfW1st23*sumOfW2nd23);
13815 // finally, store "weighted" covariance:
13816 fIntFlowCovariancesNUA->SetBinContent(23,wPrefactor23*covariance23);
13817 } // end of if(TMath::Abs(denominator23)>0.)
13818 } // end of if(TMath::Abs(sumOfW1st23*sumOfW2nd23)>0.)
13819
0328db2d 13820 // Cov(<cos(phi1+phi2)>,<sin(phi1-phi2-phi3)>):
13821 Double_t product24 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(24); // <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>
13822 Double_t term1st24 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13823 Double_t term2nd24 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13824 Double_t sumOfW1st24 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13825 Double_t sumOfW2nd24 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13826 Double_t sumOfWW24 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(24); // W_{<cos(phi1+phi2)>} * W_{<sin(phi1-phi2-phi3)>}
13827 // numerator in the expression for the the unbiased estimator for covariance:
13828 Double_t numerator24 = product24 - term1st24*term2nd24;
13829 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13830 Double_t denominator24 = 0.;
13831 if(TMath::Abs(sumOfW1st24*sumOfW2nd24)>0.)
13832 {
13833 denominator24 = 1.-sumOfWW24/(sumOfW1st24*sumOfW2nd24);
13834 if(TMath::Abs(denominator24)>0.)
13835 {
13836 // covariance:
13837 Double_t covariance24 = numerator24/denominator24;
13838 // weight dependent prefactor for covariance:
13839 Double_t wPrefactor24 = sumOfWW24/(sumOfW1st24*sumOfW2nd24);
13840 // finally, store "weighted" covariance:
13841 fIntFlowCovariancesNUA->SetBinContent(24,wPrefactor24*covariance24);
13842 } // end of if(TMath::Abs(denominator24)>0.)
13843 } // end of if(TMath::Abs(sumOfW1st24*sumOfW2nd24)>0.)
0328db2d 13844
13845 // Cov(<sin(phi1+phi2)>,<cos(phi1-phi2-phi3)>):
13846 Double_t product25 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(25); // <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>
13847 Double_t term1st25 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13848 Double_t term2nd25 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13849 Double_t sumOfW1st25 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13850 Double_t sumOfW2nd25 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13851 Double_t sumOfWW25 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(25); // W_{<sin(phi1+phi2)>} * W_{<cos(phi1-phi2-phi3)>}
13852 // numerator in the expression for the the unbiased estimator for covariance:
13853 Double_t numerator25 = product25 - term1st25*term2nd25;
13854 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13855 Double_t denominator25 = 0.;
13856 if(TMath::Abs(sumOfW1st25*sumOfW2nd25)>0.)
13857 {
13858 denominator25 = 1.-sumOfWW25/(sumOfW1st25*sumOfW2nd25);
13859 if(TMath::Abs(denominator25)>0.)
13860 {
13861 // covariance:
13862 Double_t covariance25 = numerator25/denominator25;
13863 // weight dependent prefactor for covariance:
13864 Double_t wPrefactor25 = sumOfWW25/(sumOfW1st25*sumOfW2nd25);
13865 // finally, store "weighted" covariance:
13866 fIntFlowCovariancesNUA->SetBinContent(25,wPrefactor25*covariance25);
13867 } // end of if(TMath::Abs(denominator25)>0.)
13868 } // end of if(TMath::Abs(sumOfW1st25*sumOfW2nd25)>0.)
13869
0328db2d 13870 // Cov(<sin(phi1+phi2)>,<sin(phi1-phi2-phi3)>):
13871 Double_t product26 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(26); // <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>
13872 Double_t term1st26 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13873 Double_t term2nd26 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13874 Double_t sumOfW1st26 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13875 Double_t sumOfW2nd26 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13876 Double_t sumOfWW26 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(26); // W_{<sin(phi1+phi2)>} * W_{<sin(phi1-phi2-phi3)>}
13877 // numerator in the expression for the the unbiased estimator for covariance:
13878 Double_t numerator26 = product26 - term1st26*term2nd26;
13879 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13880 Double_t denominator26 = 0.;
13881 if(TMath::Abs(sumOfW1st26*sumOfW2nd26)>0.)
13882 {
13883 denominator26 = 1.-sumOfWW26/(sumOfW1st26*sumOfW2nd26);
13884 if(TMath::Abs(denominator26)>0.)
13885 {
13886 // covariance:
13887 Double_t covariance26 = numerator26/denominator26;
13888 // weight dependent prefactor for covariance:
13889 Double_t wPrefactor26 = sumOfWW26/(sumOfW1st26*sumOfW2nd26);
13890 // finally, store "weighted" covariance:
13891 fIntFlowCovariancesNUA->SetBinContent(26,wPrefactor26*covariance26);
13892 } // end of if(TMath::Abs(denominator26)>0.)
13893 } // end of if(TMath::Abs(sumOfW1st26*sumOfW2nd26)>0.)
13894
0328db2d 13895 // Cov(<cos(phi1-phi2-phi3)>,<sin(phi1-phi2-phi3)>):
13896 Double_t product27 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(27); // <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>
b92ea2b9 13897 Double_t term1st27 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
0328db2d 13898 Double_t term2nd27 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
b92ea2b9 13899 Double_t sumOfW1st27 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
0328db2d 13900 Double_t sumOfW2nd27 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13901 Double_t sumOfWW27 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(27); // W_{<cos(phi1-phi2-phi3)>} * W_{<sin(phi1-phi2-phi3)>}
13902 // numerator in the expression for the the unbiased estimator for covariance:
13903 Double_t numerator27 = product27 - term1st27*term2nd27;
13904 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13905 Double_t denominator27 = 0.;
13906 if(TMath::Abs(sumOfW1st27*sumOfW2nd27)>0.)
13907 {
13908 denominator27 = 1.-sumOfWW27/(sumOfW1st27*sumOfW2nd27);
13909 if(TMath::Abs(denominator27)>0.)
13910 {
13911 // covariance:
13912 Double_t covariance27 = numerator27/denominator27;
13913 // weight dependent prefactor for covariance:
13914 Double_t wPrefactor27 = sumOfWW27/(sumOfW1st27*sumOfW2nd27);
13915 // finally, store "weighted" covariance:
13916 fIntFlowCovariancesNUA->SetBinContent(27,wPrefactor27*covariance27);
13917 } // end of if(TMath::Abs(denominator27)>0.)
13918 } // end of if(TMath::Abs(sumOfW1st27*sumOfW2nd27)>0.)
13919
0328db2d 13920} // end of AliFlowAnalysisWithQCumulants::CalculateCovariancesNUAIntFlow()
13921
e1d101a6 13922//=======================================================================================================================
0328db2d 13923
489d5531 13924void AliFlowAnalysisWithQCumulants::FinalizeCorrelationsIntFlow()
13925{
13926 // From profile fIntFlowCorrelationsPro access measured correlations and spread,
13927 // correctly calculate the statistical errors and store the final results and
13928 // statistical errors for correlations in histogram fIntFlowCorrelationsHist.
13929 //
13930 // Remark: Statistical error of correlation is calculated as:
13931 //
13932 // statistical error = termA * spread * termB:
13933 // termA = sqrt{sum_{i=1}^{N} w^2}/(sum_{i=1}^{N} w)
13934 // termB = 1/sqrt(1-termA^2)
b3dacf6b 13935 //
13936
489d5531 13937 for(Int_t ci=1;ci<=4;ci++) // correlation index
13938 {
b40a910e 13939 if(fIntFlowCorrelationsPro->GetBinEffectiveEntries(ci) < 2 || fIntFlowSquaredCorrelationsPro->GetBinEffectiveEntries(ci) < 2)
13940 {
13941 fIntFlowCorrelationsPro->SetBinError(ci,0.);
13942 fIntFlowSquaredCorrelationsPro->SetBinError(ci,0.);
13943 continue;
13944 }
489d5531 13945 Double_t correlation = fIntFlowCorrelationsPro->GetBinContent(ci);
b40a910e 13946 Double_t squaredCorrelation = fIntFlowSquaredCorrelationsPro->GetBinContent(ci);
13947 Double_t spread = 0.;
13948 if(squaredCorrelation-correlation*correlation >= 0.)
13949 {
13950 spread = pow(squaredCorrelation-correlation*correlation,0.5);
13951 } else
13952 {
13953 cout<<endl;
13954 cout<<Form(" WARNING: Imaginary 'spread' for %d-particle correlation!!!! ",2*ci)<<endl;
13955 cout<<endl;
13956 }
489d5531 13957 Double_t sumOfLinearEventWeights = fIntFlowSumOfEventWeights[0]->GetBinContent(ci);
13958 Double_t sumOfQuadraticEventWeights = fIntFlowSumOfEventWeights[1]->GetBinContent(ci);
13959 Double_t termA = 0.;
13960 Double_t termB = 0.;
b3dacf6b 13961 if(TMath::Abs(sumOfLinearEventWeights) > 0.) // to be improved - shall I omitt here Abs() ?
489d5531 13962 {
13963 termA = pow(sumOfQuadraticEventWeights,0.5)/sumOfLinearEventWeights;
13964 } else
13965 {
b3dacf6b 13966 cout<<endl;
13967 cout<<" WARNING (QC): sumOfLinearEventWeights == 0 in method FinalizeCorrelationsIntFlow() !!!!"<<endl;
13968 cout<<" (for "<<2*ci<<"-particle correlation)"<<endl;
13969 cout<<endl;
489d5531 13970 }
13971 if(1.-pow(termA,2.) > 0.)
13972 {
13973 termB = 1./pow(1-pow(termA,2.),0.5);
13974 } else
13975 {
b3dacf6b 13976 cout<<endl;
13977 cout<<" WARNING (QC): 1.-pow(termA,2.) <= 0 in method FinalizeCorrelationsIntFlow() !!!!"<<endl;
13978 cout<<" (for "<<2*ci<<"-particle correlation)"<<endl;
13979 cout<<endl;
489d5531 13980 }
13981 Double_t statisticalError = termA * spread * termB;
13982 fIntFlowCorrelationsHist->SetBinContent(ci,correlation);
13983 fIntFlowCorrelationsHist->SetBinError(ci,statisticalError);
ff70ca91 13984 } // end of for(Int_t ci=1;ci<=4;ci++) // correlation index
13985
b3dacf6b 13986 // Versus multiplicity:
13987 if(!fCalculateCumulantsVsM){return;}
ff70ca91 13988 for(Int_t ci=0;ci<=3;ci++) // correlation index
13989 {
13990 Int_t nBins = fIntFlowCorrelationsVsMPro[ci]->GetNbinsX();
13991 for(Int_t b=1;b<=nBins;b++) // looping over multiplicity bins
13992 {
b40a910e 13993 if(fIntFlowCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b) < 2 || fIntFlowSquaredCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b) < 2)
13994 {
13995 fIntFlowCorrelationsVsMPro[ci]->SetBinError(b,0.);
13996 fIntFlowSquaredCorrelationsVsMPro[ci]->SetBinError(b,0.);
13997 continue;
13998 }
ff70ca91 13999 Double_t correlationVsM = fIntFlowCorrelationsVsMPro[ci]->GetBinContent(b);
b40a910e 14000 Double_t squaredCorrelationVsM = fIntFlowSquaredCorrelationsVsMPro[ci]->GetBinContent(b);
14001 Double_t spreadVsM = 0.;
14002 if(squaredCorrelationVsM-correlationVsM*correlationVsM >= 0.)
14003 {
14004 spreadVsM = pow(squaredCorrelationVsM-correlationVsM*correlationVsM,0.5);
14005 } else
14006 {
14007 cout<<endl;
14008 cout<<Form(" WARNING (QC): Imaginary 'spreadVsM' for ci = %d, bin = %d, entries = %f !!!!",
14009 ci,b,fIntFlowCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b))<<endl;
14010 cout<<endl;
14011 }
ff70ca91 14012 Double_t sumOfLinearEventWeightsVsM = fIntFlowSumOfEventWeightsVsM[ci][0]->GetBinContent(b);
14013 Double_t sumOfQuadraticEventWeightsVsM = fIntFlowSumOfEventWeightsVsM[ci][1]->GetBinContent(b);
14014 Double_t termAVsM = 0.;
14015 Double_t termBVsM = 0.;
b40a910e 14016 if(sumOfLinearEventWeightsVsM > 0.)
ff70ca91 14017 {
14018 termAVsM = pow(sumOfQuadraticEventWeightsVsM,0.5)/sumOfLinearEventWeightsVsM;
b3dacf6b 14019 }
ff70ca91 14020 if(1.-pow(termAVsM,2.) > 0.)
14021 {
14022 termBVsM = 1./pow(1-pow(termAVsM,2.),0.5);
b3dacf6b 14023 }
ff70ca91 14024 Double_t statisticalErrorVsM = termAVsM * spreadVsM * termBVsM;
14025 fIntFlowCorrelationsVsMHist[ci]->SetBinContent(b,correlationVsM);
14026 fIntFlowCorrelationsVsMHist[ci]->SetBinError(b,statisticalErrorVsM);
14027 } // end of for(Int_t b=1;b<=nBins;b++)
14028 } // end of for(Int_t ci=1;ci<=4;ci++) // correlation index
14029
489d5531 14030} // end of AliFlowAnalysisWithQCumulants::FinalizeCorrelationsIntFlow()
14031
e1d101a6 14032//=======================================================================================================================
489d5531 14033
489d5531 14034void AliFlowAnalysisWithQCumulants::FillAverageMultiplicities(Int_t nRP)
14035{
b77b6434 14036 // Fill profile fAverageMultiplicity to hold average multiplicities and
14037 // number of events for events with nRP>=0, nRP>=1, ... , and nRP>=8
489d5531 14038
14039 // Binning of fAverageMultiplicity is organized as follows:
14040 // 1st bin: all events (including the empty ones)
14041 // 2nd bin: event with # of RPs greater or equal to 1
14042 // 3rd bin: event with # of RPs greater or equal to 2
14043 // 4th bin: event with # of RPs greater or equal to 3
14044 // 5th bin: event with # of RPs greater or equal to 4
14045 // 6th bin: event with # of RPs greater or equal to 5
14046 // 7th bin: event with # of RPs greater or equal to 6
14047 // 8th bin: event with # of RPs greater or equal to 7
14048 // 9th bin: event with # of RPs greater or equal to 8
14049
489d5531 14050 if(nRP<0)
14051 {
b77b6434 14052 cout<<endl;
14053 cout<<" WARNING (QC): nRP<0 in in AFAWQC::FAM() !!!!"<<endl;
14054 cout<<endl;
489d5531 14055 exit(0);
14056 }
14057
14058 for(Int_t i=0;i<9;i++)
14059 {
b77b6434 14060 if(nRP>=i){fAvMultiplicity->Fill(i+0.5,nRP,1);}
489d5531 14061 }
14062
14063} // end of AliFlowAnalysisWithQCumulants::FillAverageMultiplicities(nRP)
14064
e1d101a6 14065//=======================================================================================================================
489d5531 14066
489d5531 14067void AliFlowAnalysisWithQCumulants::CalculateCumulantsIntFlow()
b3dacf6b 14068{
b92ea2b9 14069 // a) Calculate Q-cumulants from the measured multiparticle correlations;
14070 // b) Propagate the statistical errors from measured multiparticle correlations to statistical errors of Q-cumulants;
14071 // c) Remark: Q-cumulants calculated in this method are biased by non-uniform acceptance of detector !!!!
14072 // Method CalculateQcumulantsCorrectedForNUAIntFlow() is called afterwards to correct for this bias;
14073 // d) Store the results and statistical error of Q-cumulants in histogram fIntFlowQcumulants.
14074 // Binning of fIntFlowQcumulants is organized as follows:
489d5531 14075 //
b3dacf6b 14076 // 1st bin: QC{2}
14077 // 2nd bin: QC{4}
14078 // 3rd bin: QC{6}
14079 // 4th bin: QC{8}
14080 //
489d5531 14081
b3dacf6b 14082 // Correlations:
489d5531 14083 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
14084 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
14085 Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
14086 Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
b3dacf6b 14087 // Statistical errors of average 2-, 4-, 6- and 8-particle azimuthal correlations:
489d5531 14088 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1); // statistical error of <2>
14089 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2); // statistical error of <4>
14090 Double_t sixError = fIntFlowCorrelationsHist->GetBinError(3); // statistical error of <6>
14091 Double_t eightError = fIntFlowCorrelationsHist->GetBinError(4); // statistical error of <8>
b3dacf6b 14092 // Covariances (multiplied by prefactor depending on weights - see comments in CalculateCovariancesIntFlow()):
8e1cefdd 14093 Double_t wCov24 = 0.; // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14094 Double_t wCov26 = 0.; // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14095 Double_t wCov28 = 0.; // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14096 Double_t wCov46 = 0.; // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14097 Double_t wCov48 = 0.; // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14098 Double_t wCov68 = 0.; // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
14099 if(!fForgetAboutCovariances)
14100 {
14101 wCov24 = fIntFlowCovariances->GetBinContent(1); // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14102 wCov26 = fIntFlowCovariances->GetBinContent(2); // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14103 wCov28 = fIntFlowCovariances->GetBinContent(3); // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14104 wCov46 = fIntFlowCovariances->GetBinContent(4); // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14105 wCov48 = fIntFlowCovariances->GetBinContent(5); // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14106 wCov68 = fIntFlowCovariances->GetBinContent(6); // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
14107 }
489d5531 14108 // Q-cumulants:
14109 Double_t qc2 = 0.; // QC{2}
14110 Double_t qc4 = 0.; // QC{4}
14111 Double_t qc6 = 0.; // QC{6}
14112 Double_t qc8 = 0.; // QC{8}
b3dacf6b 14113 if(TMath::Abs(two) > 0.){qc2 = two;}
14114 if(TMath::Abs(four) > 0.){qc4 = four-2.*pow(two,2.);}
14115 if(TMath::Abs(six) > 0.){qc6 = six-9.*two*four+12.*pow(two,3.);}
14116 if(TMath::Abs(eight) > 0.){qc8 = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);}
14117 // Statistical errors of Q-cumulants:
489d5531 14118 Double_t qc2Error = 0.;
14119 Double_t qc4Error = 0.;
14120 Double_t qc6Error = 0.;
b3dacf6b 14121 Double_t qc8Error = 0.;
14122 // Squared statistical errors of Q-cumulants:
489d5531 14123 //Double_t qc2ErrorSquared = 0.;
14124 Double_t qc4ErrorSquared = 0.;
14125 Double_t qc6ErrorSquared = 0.;
b3dacf6b 14126 Double_t qc8ErrorSquared = 0.;
14127 // Statistical error of QC{2}:
14128 qc2Error = twoError;
14129 // Statistical error of QC{4}:
489d5531 14130 qc4ErrorSquared = 16.*pow(two,2.)*pow(twoError,2)+pow(fourError,2.)
14131 - 8.*two*wCov24;
14132 if(qc4ErrorSquared>0.)
14133 {
14134 qc4Error = pow(qc4ErrorSquared,0.5);
14135 } else
14136 {
b3dacf6b 14137 cout<<" WARNING (QC): Statistical error of QC{4} is imaginary !!!!"<<endl;
14138 }
14139 // Statistical error of QC{6}:
489d5531 14140 qc6ErrorSquared = 81.*pow(4.*pow(two,2.)-four,2.)*pow(twoError,2.)
14141 + 81.*pow(two,2.)*pow(fourError,2.)
14142 + pow(sixError,2.)
14143 - 162.*two*(4.*pow(two,2.)-four)*wCov24
14144 + 18.*(4.*pow(two,2.)-four)*wCov26
b3dacf6b 14145 - 18.*two*wCov46;
489d5531 14146 if(qc6ErrorSquared>0.)
14147 {
14148 qc6Error = pow(qc6ErrorSquared,0.5);
14149 } else
14150 {
b3dacf6b 14151 cout<<" WARNING (QC): Statistical error of QC{6} is imaginary !!!!"<<endl;
14152 }
14153 // Statistical error of QC{8}:
489d5531 14154 qc8ErrorSquared = 256.*pow(36.*pow(two,3.)-18.*four*two+six,2.)*pow(twoError,2.)
14155 + 1296.*pow(4.*pow(two,2.)-four,2.)*pow(fourError,2.)
14156 + 256.*pow(two,2.)*pow(sixError,2.)
14157 + pow(eightError,2.)
14158 - 1152.*(36.*pow(two,3.)-18.*four*two+six)*(4.*pow(two,2.)-four)*wCov24
14159 + 512.*two*(36.*pow(two,3.)-18.*four*two+six)*wCov26
14160 - 32.*(36.*pow(two,3.)-18.*four*two+six)*wCov28
14161 - 1152.*two*(4.*pow(two,2.)-four)*wCov46
14162 + 72.*(4.*pow(two,2.)-four)*wCov48
14163 - 32.*two*wCov68;
14164 if(qc8ErrorSquared>0.)
14165 {
14166 qc8Error = pow(qc8ErrorSquared,0.5);
14167 } else
14168 {
b3dacf6b 14169 cout<<"WARNING (QC): Statistical error of QC{8} is imaginary !!!!"<<endl;
489d5531 14170 }
b3dacf6b 14171 // Store the results and statistical errors for Q-cumulants:
14172 if(TMath::Abs(qc2)>0.)
14173 {
14174 fIntFlowQcumulants->SetBinContent(1,qc2);
14175 fIntFlowQcumulants->SetBinError(1,qc2Error);
14176 }
14177 if(TMath::Abs(qc4)>0.)
14178 {
14179 fIntFlowQcumulants->SetBinContent(2,qc4);
14180 fIntFlowQcumulants->SetBinError(2,qc4Error);
14181 }
14182 if(TMath::Abs(qc6)>0.)
14183 {
14184 fIntFlowQcumulants->SetBinContent(3,qc6);
14185 fIntFlowQcumulants->SetBinError(3,qc6Error);
14186 }
14187 if(TMath::Abs(qc8)>0.)
14188 {
14189 fIntFlowQcumulants->SetBinContent(4,qc8);
14190 fIntFlowQcumulants->SetBinError(4,qc8Error);
14191 }
14192
14193 // Versus multiplicity:
14194 if(!fCalculateCumulantsVsM){return;}
9da1a4f3 14195 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
b3dacf6b 14196 Double_t value[4] = {0.}; // QCs vs M
14197 Double_t error[4] = {0.}; // error of QCs vs M
14198 Double_t dSum1[4] = {0.}; // sum value_i/(error_i)^2
14199 Double_t dSum2[4] = {0.}; // sum 1/(error_i)^2
9da1a4f3 14200 for(Int_t b=1;b<=nBins;b++)
14201 {
b3dacf6b 14202 // Correlations:
9da1a4f3 14203 two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>>
14204 four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>>
14205 six = fIntFlowCorrelationsVsMHist[2]->GetBinContent(b); // <<6>>
14206 eight = fIntFlowCorrelationsVsMHist[3]->GetBinContent(b); // <<8>>
b3dacf6b 14207 // Statistical errors of average 2-, 4-, 6- and 8-particle azimuthal correlations:
9da1a4f3 14208 twoError = fIntFlowCorrelationsVsMHist[0]->GetBinError(b); // statistical error of <2>
14209 fourError = fIntFlowCorrelationsVsMHist[1]->GetBinError(b); // statistical error of <4>
14210 sixError = fIntFlowCorrelationsVsMHist[2]->GetBinError(b); // statistical error of <6>
14211 eightError = fIntFlowCorrelationsVsMHist[3]->GetBinError(b); // statistical error of <8>
b3dacf6b 14212 // Covariances (multiplied by prefactor depending on weights - see comments in CalculateCovariancesIntFlow()):
8e1cefdd 14213 if(!fForgetAboutCovariances)
14214 {
14215 wCov24 = fIntFlowCovariancesVsM[0]->GetBinContent(b); // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14216 wCov26 = fIntFlowCovariancesVsM[1]->GetBinContent(b); // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14217 wCov28 = fIntFlowCovariancesVsM[2]->GetBinContent(b); // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14218 wCov46 = fIntFlowCovariancesVsM[3]->GetBinContent(b); // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14219 wCov48 = fIntFlowCovariancesVsM[4]->GetBinContent(b); // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14220 wCov68 = fIntFlowCovariancesVsM[5]->GetBinContent(b); // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
14221 }
9da1a4f3 14222 // Q-cumulants:
14223 qc2 = 0.; // QC{2}
14224 qc4 = 0.; // QC{4}
14225 qc6 = 0.; // QC{6}
14226 qc8 = 0.; // QC{8}
b3dacf6b 14227 if(TMath::Abs(two) > 0.){qc2 = two;}
14228 if(TMath::Abs(four) > 0.){qc4 = four-2.*pow(two,2.);}
14229 if(TMath::Abs(six) > 0.){qc6 = six-9.*two*four+12.*pow(two,3.);}
14230 if(TMath::Abs(eight) > 0.){qc8 = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);}
14231 // Statistical errors of Q-cumulants:
9da1a4f3 14232 qc2Error = 0.;
14233 qc4Error = 0.;
14234 qc6Error = 0.;
b3dacf6b 14235 qc8Error = 0.;
14236 // Squared statistical errors of Q-cumulants:
9da1a4f3 14237 //Double_t qc2ErrorSquared = 0.;
14238 qc4ErrorSquared = 0.;
14239 qc6ErrorSquared = 0.;
b3dacf6b 14240 qc8ErrorSquared = 0.;
14241 // Statistical error of QC{2}:
14242 qc2Error = twoError;
14243 // Statistical error of QC{4}:
9da1a4f3 14244 qc4ErrorSquared = 16.*pow(two,2.)*pow(twoError,2)+pow(fourError,2.)
14245 - 8.*two*wCov24;
14246 if(qc4ErrorSquared>0.)
14247 {
14248 qc4Error = pow(qc4ErrorSquared,0.5);
14249 } else
14250 {
14251 // cout<<"WARNING: Statistical error of QC{4} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
b3dacf6b 14252 }
14253 // Statistical error of QC{6}:
9da1a4f3 14254 qc6ErrorSquared = 81.*pow(4.*pow(two,2.)-four,2.)*pow(twoError,2.)
14255 + 81.*pow(two,2.)*pow(fourError,2.)
14256 + pow(sixError,2.)
14257 - 162.*two*(4.*pow(two,2.)-four)*wCov24
14258 + 18.*(4.*pow(two,2.)-four)*wCov26
b3dacf6b 14259 - 18.*two*wCov46;
9da1a4f3 14260 if(qc6ErrorSquared>0.)
14261 {
14262 qc6Error = pow(qc6ErrorSquared,0.5);
14263 } else
14264 {
14265 // cout<<"WARNING: Statistical error of QC{6} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
b3dacf6b 14266 }
14267 // Statistical error of QC{8}:
9da1a4f3 14268 qc8ErrorSquared = 256.*pow(36.*pow(two,3.)-18.*four*two+six,2.)*pow(twoError,2.)
14269 + 1296.*pow(4.*pow(two,2.)-four,2.)*pow(fourError,2.)
14270 + 256.*pow(two,2.)*pow(sixError,2.)
14271 + pow(eightError,2.)
14272 - 1152.*(36.*pow(two,3.)-18.*four*two+six)*(4.*pow(two,2.)-four)*wCov24
14273 + 512.*two*(36.*pow(two,3.)-18.*four*two+six)*wCov26
14274 - 32.*(36.*pow(two,3.)-18.*four*two+six)*wCov28
14275 - 1152.*two*(4.*pow(two,2.)-four)*wCov46
14276 + 72.*(4.*pow(two,2.)-four)*wCov48
14277 - 32.*two*wCov68;
14278 if(qc8ErrorSquared>0.)
14279 {
14280 qc8Error = pow(qc8ErrorSquared,0.5);
14281 } else
14282 {
14283 // cout<<"WARNING: Statistical error of QC{8} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
14284 }
b3dacf6b 14285 // Store the results and statistical errors for Q-cumulants:
14286 if(TMath::Abs(qc2)>0.)
14287 {
14288 fIntFlowQcumulantsVsM[0]->SetBinContent(b,qc2);
14289 fIntFlowQcumulantsVsM[0]->SetBinError(b,qc2Error);
14290 }
14291 if(TMath::Abs(qc4)>0.)
14292 {
14293 fIntFlowQcumulantsVsM[1]->SetBinContent(b,qc4);
14294 fIntFlowQcumulantsVsM[1]->SetBinError(b,qc4Error);
14295 }
14296 if(TMath::Abs(qc6)>0.)
14297 {
14298 fIntFlowQcumulantsVsM[2]->SetBinContent(b,qc6);
14299 fIntFlowQcumulantsVsM[2]->SetBinError(b,qc6Error);
14300 }
14301 if(TMath::Abs(qc8)>0.)
14302 {
14303 fIntFlowQcumulantsVsM[3]->SetBinContent(b,qc8);
14304 fIntFlowQcumulantsVsM[3]->SetBinError(b,qc8Error);
14305 }
14306 // Rebin in M:
14307 for(Int_t co=0;co<4;co++)
14308 {
b40a910e 14309 if(fIntFlowCorrelationsVsMPro[co]->GetBinEffectiveEntries(b)<2){continue;}
b3dacf6b 14310 value[co] = fIntFlowQcumulantsVsM[co]->GetBinContent(b);
14311 error[co] = fIntFlowQcumulantsVsM[co]->GetBinError(b);
14312 if(error[co]>0.)
14313 {
14314 dSum1[co]+=value[co]/(error[co]*error[co]);
14315 dSum2[co]+=1./(error[co]*error[co]);
14316 }
14317 } // end of for(Int_t co=0;co<4;co++)
9da1a4f3 14318 } // end of for(Int_t b=1;b<=nBins;b++)
b3dacf6b 14319 // Store rebinned Q-cumulants:
14320 for(Int_t co=0;co<4;co++)
14321 {
14322 if(dSum2[co]>0.)
14323 {
14324 fIntFlowQcumulantsRebinnedInM->SetBinContent(co+1,dSum1[co]/dSum2[co]);
14325 fIntFlowQcumulantsRebinnedInM->SetBinError(co+1,pow(1./dSum2[co],0.5));
14326 }
14327 } // end of for(Int_t co=0;co<4;co++)
14328
489d5531 14329} // end of AliFlowAnalysisWithQCumulants::CalculateCumulantsIntFlow()
14330
489d5531 14331//================================================================================================================================
14332
b92ea2b9 14333void AliFlowAnalysisWithQCumulants::CalculateReferenceFlow()
489d5531 14334{
b92ea2b9 14335 // a) Calculate the final results for reference flow estimates from Q-cumulants;
14336 // b) Propagate the statistical errors to reference flow estimates from statistical error of Q-cumulants;
0328db2d 14337 // c) Store the results and statistical errors of reference flow estimates in histogram fIntFlow.
489d5531 14338 // Binning of fIntFlow is organized as follows:
14339 //
b3dacf6b 14340 // 1st bin: v{2,QC}
14341 // 2nd bin: v{4,QC}
14342 // 3rd bin: v{6,QC}
14343 // 4th bin: v{8,QC}
14344 //
489d5531 14345
b3dacf6b 14346 // Reference flow estimates:
489d5531 14347 Double_t v2 = 0.; // v{2,QC}
14348 Double_t v4 = 0.; // v{4,QC}
14349 Double_t v6 = 0.; // v{6,QC}
14350 Double_t v8 = 0.; // v{8,QC}
b3dacf6b 14351 // Reference flow's statistical errors:
14352 Double_t v2Error = 0.; // v{2,QC} stat. error
14353 Double_t v4Error = 0.; // v{4,QC} stat. error
14354 Double_t v6Error = 0.; // v{6,QC} stat. error
14355 Double_t v8Error = 0.; // v{8,QC} stat. error
14356
b92ea2b9 14357 // Q-cumulants:
14358 Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); // QC{2}
14359 Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); // QC{4}
14360 Double_t qc6 = fIntFlowQcumulants->GetBinContent(3); // QC{6}
14361 Double_t qc8 = fIntFlowQcumulants->GetBinContent(4); // QC{8}
14362 // Q-cumulants's statistical errors:
14363 Double_t qc2Error = fIntFlowQcumulants->GetBinError(1); // QC{2} stat. error
14364 Double_t qc4Error = fIntFlowQcumulants->GetBinError(2); // QC{4} stat. error
14365 Double_t qc6Error = fIntFlowQcumulants->GetBinError(3); // QC{6} stat. error
14366 Double_t qc8Error = fIntFlowQcumulants->GetBinError(4); // QC{8} stat. error
14367 // Calculate reference flow estimates from Q-cumulants:
1268c371 14368 if(qc2>=0.){v2 = pow(qc2,0.5);}
b92ea2b9 14369 if(qc4<=0.){v4 = pow(-1.*qc4,1./4.);}
14370 if(qc6>=0.){v6 = pow((1./4.)*qc6,1./6.);}
14371 if(qc8<=0.){v8 = pow((-1./33.)*qc8,1./8.);}
14372 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14373 if(qc2>0.){v2Error = (1./2.)*pow(qc2,-0.5)*qc2Error;}
b92ea2b9 14374 if(qc4<0.){v4Error = (1./4.)*pow(-qc4,-3./4.)*qc4Error;}
14375 if(qc6>0.){v6Error = (1./6.)*pow(2.,-1./3.)*pow(qc6,-5./6.)*qc6Error;}
14376 if(qc8<0.){v8Error = (1./8.)*pow(33.,-1./8.)*pow(-qc8,-7./8.)*qc8Error;}
14377 // Print warnings for the 'wrong sign' cumulants:
14378 if(TMath::Abs(v2) < 1.e-44)
14379 {
14380 cout<<" WARNING: Wrong sign QC{2}, couldn't calculate v{2,QC} !!!!"<<endl;
14381 }
14382 if(TMath::Abs(v4) < 1.e-44)
14383 {
14384 cout<<" WARNING: Wrong sign QC{4}, couldn't calculate v{4,QC} !!!!"<<endl;
14385 }
14386 if(TMath::Abs(v6) < 1.e-44)
14387 {
14388 cout<<" WARNING: Wrong sign QC{6}, couldn't calculate v{6,QC} !!!!"<<endl;
14389 }
14390 if(TMath::Abs(v8) < 1.e-44)
14391 {
14392 cout<<" WARNING: Wrong sign QC{8}, couldn't calculate v{8,QC} !!!!"<<endl;
14393 }
14394 // Store the results and statistical errors of integrated flow estimates:
14395 fIntFlow->SetBinContent(1,v2);
14396 fIntFlow->SetBinError(1,v2Error);
14397 fIntFlow->SetBinContent(2,v4);
14398 fIntFlow->SetBinError(2,v4Error);
14399 fIntFlow->SetBinContent(3,v6);
14400 fIntFlow->SetBinError(3,v6Error);
14401 fIntFlow->SetBinContent(4,v8);
14402 fIntFlow->SetBinError(4,v8Error);
14403
14404 // Versus multiplicity:
14405 if(!fCalculateCumulantsVsM){return;}
14406 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
14407 for(Int_t b=1;b<=nBins;b++)
9da1a4f3 14408 {
14409 // Q-cumulants:
b92ea2b9 14410 Double_t qc2VsM = fIntFlowQcumulantsVsM[0]->GetBinContent(b); // QC{2}
14411 Double_t qc4VsM = fIntFlowQcumulantsVsM[1]->GetBinContent(b); // QC{4}
14412 Double_t qc6VsM = fIntFlowQcumulantsVsM[2]->GetBinContent(b); // QC{6}
14413 Double_t qc8VsM = fIntFlowQcumulantsVsM[3]->GetBinContent(b); // QC{8}
b3dacf6b 14414 // Q-cumulants's statistical errors:
b92ea2b9 14415 Double_t qc2ErrorVsM = fIntFlowQcumulantsVsM[0]->GetBinError(b); // QC{2} stat. error
14416 Double_t qc4ErrorVsM = fIntFlowQcumulantsVsM[1]->GetBinError(b); // QC{4} stat. error
14417 Double_t qc6ErrorVsM = fIntFlowQcumulantsVsM[2]->GetBinError(b); // QC{6} stat. error
14418 Double_t qc8ErrorVsM = fIntFlowQcumulantsVsM[3]->GetBinError(b); // QC{8} stat. error
b3dacf6b 14419 // Reference flow estimates:
b92ea2b9 14420 Double_t v2VsM = 0.; // v{2,QC}
14421 Double_t v4VsM = 0.; // v{4,QC}
14422 Double_t v6VsM = 0.; // v{6,QC}
14423 Double_t v8VsM = 0.; // v{8,QC}
14424 // Reference flow estimates errors:
14425 Double_t v2ErrorVsM = 0.; // v{2,QC} stat. error
14426 Double_t v4ErrorVsM = 0.; // v{4,QC} stat. error
14427 Double_t v6ErrorVsM = 0.; // v{6,QC} stat. error
14428 Double_t v8ErrorVsM = 0.; // v{8,QC} stat. error
b3dacf6b 14429 // Calculate reference flow estimates from Q-cumulants:
1268c371 14430 if(qc2VsM>=0.){v2VsM = pow(qc2VsM,0.5);}
b92ea2b9 14431 if(qc4VsM<=0.){v4VsM = pow(-1.*qc4VsM,1./4.);}
14432 if(qc6VsM>=0.){v6VsM = pow((1./4.)*qc6VsM,1./6.);}
14433 if(qc8VsM<=0.){v8VsM = pow((-1./33.)*qc8VsM,1./8.);}
b3dacf6b 14434 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14435 if(qc2VsM>0.){v2ErrorVsM = (1./2.)*pow(qc2VsM,-0.5)*qc2ErrorVsM;}
b92ea2b9 14436 if(qc4VsM<0.){v4ErrorVsM = (1./4.)*pow(-qc4VsM,-3./4.)*qc4ErrorVsM;}
14437 if(qc6VsM>0.){v6ErrorVsM = (1./6.)*pow(2.,-1./3.)*pow(qc6VsM,-5./6.)*qc6ErrorVsM;}
14438 if(qc8VsM<0.){v8ErrorVsM = (1./8.)*pow(33.,-1./8.)*pow(-qc8VsM,-7./8.)*qc8ErrorVsM;}
b3dacf6b 14439 // Store the results and statistical errors of integrated flow estimates:
b92ea2b9 14440 fIntFlowVsM[0]->SetBinContent(b,v2VsM);
14441 fIntFlowVsM[0]->SetBinError(b,v2ErrorVsM);
14442 fIntFlowVsM[1]->SetBinContent(b,v4VsM);
14443 fIntFlowVsM[1]->SetBinError(b,v4ErrorVsM);
14444 fIntFlowVsM[2]->SetBinContent(b,v6VsM);
14445 fIntFlowVsM[2]->SetBinError(b,v6ErrorVsM);
14446 fIntFlowVsM[3]->SetBinContent(b,v8VsM);
14447 fIntFlowVsM[3]->SetBinError(b,v8ErrorVsM);
14448 } // end of for(Int_t b=1;b<=nBins;b++)
14449
14450 // 'Rebinned in M' calculation: // to be improved - this can be implemented better:
14451 // Reference flow estimates:
14452 Double_t v2RebinnedInM = 0.; // v{2,QC}
14453 Double_t v4RebinnedInM = 0.; // v{4,QC}
14454 Double_t v6RebinnedInM = 0.; // v{6,QC}
14455 Double_t v8RebinnedInM = 0.; // v{8,QC}
14456 // Reference flow's statistical errors:
14457 Double_t v2ErrorRebinnedInM = 0.; // v{2,QC} stat. error
14458 Double_t v4ErrorRebinnedInM = 0.; // v{4,QC} stat. error
14459 Double_t v6ErrorRebinnedInM = 0.; // v{6,QC} stat. error
14460 Double_t v8ErrorRebinnedInM = 0.; // v{8,QC} stat. error
14461 // Q-cumulants:
14462 Double_t qc2RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(1); // QC{2}
14463 Double_t qc4RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(2); // QC{4}
14464 Double_t qc6RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(3); // QC{6}
14465 Double_t qc8RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(4); // QC{8}
14466 // Q-cumulants's statistical errors:
14467 Double_t qc2ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(1); // QC{2} stat. error
14468 Double_t qc4ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(2); // QC{4} stat. error
14469 Double_t qc6ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(3); // QC{6} stat. error
14470 Double_t qc8ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(4); // QC{8} stat. error
14471 // Calculate reference flow estimates from Q-cumulants:
1268c371 14472 if(qc2RebinnedInM>=0.){v2RebinnedInM = pow(qc2RebinnedInM,0.5);}
b92ea2b9 14473 if(qc4RebinnedInM<=0.){v4RebinnedInM = pow(-1.*qc4RebinnedInM,1./4.);}
14474 if(qc6RebinnedInM>=0.){v6RebinnedInM = pow((1./4.)*qc6RebinnedInM,1./6.);}
14475 if(qc8RebinnedInM<=0.){v8RebinnedInM = pow((-1./33.)*qc8RebinnedInM,1./8.);}
14476 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14477 if(qc2RebinnedInM>0.){v2ErrorRebinnedInM = (1./2.)*pow(qc2RebinnedInM,-0.5)*qc2ErrorRebinnedInM;}
b92ea2b9 14478 if(qc4RebinnedInM<0.){v4ErrorRebinnedInM = (1./4.)*pow(-qc4RebinnedInM,-3./4.)*qc4ErrorRebinnedInM;}
14479 if(qc6RebinnedInM>0.){v6ErrorRebinnedInM = (1./6.)*pow(2.,-1./3.)*pow(qc6RebinnedInM,-5./6.)*qc6ErrorRebinnedInM;}
14480 if(qc8RebinnedInM<0.){v8ErrorRebinnedInM = (1./8.)*pow(33.,-1./8.)*pow(-qc8RebinnedInM,-7./8.)*qc8ErrorRebinnedInM;}
14481 // Print warnings for the 'wrong sign' cumulants:
14482 if(TMath::Abs(v2RebinnedInM) < 1.e-44)
14483 {
14484 cout<<" WARNING: Wrong sign QC{2} rebinned in M, couldn't calculate v{2,QC} !!!!"<<endl;
14485 }
14486 if(TMath::Abs(v4RebinnedInM) < 1.e-44)
14487 {
14488 cout<<" WARNING: Wrong sign QC{4} rebinned in M, couldn't calculate v{4,QC} !!!!"<<endl;
14489 }
14490 if(TMath::Abs(v6RebinnedInM) < 1.e-44)
14491 {
14492 cout<<" WARNING: Wrong sign QC{6} rebinned in M, couldn't calculate v{6,QC} !!!!"<<endl;
14493 }
14494 if(TMath::Abs(v8RebinnedInM) < 1.e-44)
14495 {
14496 cout<<" WARNING: Wrong sign QC{8} rebinned in M, couldn't calculate v{8,QC} !!!!"<<endl;
14497 }
14498 // Store the results and statistical errors of integrated flow estimates:
14499 fIntFlowRebinnedInM->SetBinContent(1,v2RebinnedInM);
14500 fIntFlowRebinnedInM->SetBinError(1,v2ErrorRebinnedInM);
14501 fIntFlowRebinnedInM->SetBinContent(2,v4RebinnedInM);
14502 fIntFlowRebinnedInM->SetBinError(2,v4ErrorRebinnedInM);
14503 fIntFlowRebinnedInM->SetBinContent(3,v6RebinnedInM);
14504 fIntFlowRebinnedInM->SetBinError(3,v6ErrorRebinnedInM);
14505 fIntFlowRebinnedInM->SetBinContent(4,v8RebinnedInM);
14506 fIntFlowRebinnedInM->SetBinError(4,v8ErrorRebinnedInM);
14507
14508} // end of AliFlowAnalysisWithQCumulants::CalculateReferenceFlow()
489d5531 14509
489d5531 14510//================================================================================================================================
14511
489d5531 14512void AliFlowAnalysisWithQCumulants::FillCommonHistResultsIntFlow()
14513{
0dd3b008 14514 // Fill in AliFlowCommonHistResults histograms relevant for reference flow.
489d5531 14515
0dd3b008 14516 // There are two possibilities here:
14517 // a) Store minimum bias reference flow - use SetMinimumBiasReferenceFlow(kTRUE). This result is
14518 // biased by the interplay between nonflow correlations and multiplicity fluctuations and is
14519 // also stored in local histogram fIntFlow;
14520 // b) Store reference flow obtained from flow analysis performed at fixed multiplicity and
14521 // rebinned only at the end of the day - use SetMinimumBiasReferenceFlow(kFALSE). This result
14522 // is also stored in local histogram fIntFlowRebinnedInM.
489d5531 14523
0dd3b008 14524 // Reference flow estimates:
14525 Double_t v[4] = {0.};
14526 // Statistical errors of reference flow estimates:
14527 Double_t vError[4] = {0.};
489d5531 14528
0dd3b008 14529 for(Int_t b=0;b<4;b++)
14530 {
14531 if(fMinimumBiasReferenceFlow)
14532 {
14533 v[b] = fIntFlow->GetBinContent(b+1);
14534 vError[b] = fIntFlow->GetBinError(b+1);
14535 } else
14536 {
14537 v[b] = fIntFlowRebinnedInM->GetBinContent(b+1);
14538 vError[b] = fIntFlowRebinnedInM->GetBinError(b+1);
14539 }
14540 } // end of for(Int_t b=0;b<4;b++)
14541
14542 // Fill AliFlowCommonHistResults histogram:
14543 fCommonHistsResults2nd->FillIntegratedFlow(v[0],vError[0]); // to be improved (hardwired 2nd in the name)
14544 fCommonHistsResults4th->FillIntegratedFlow(v[1],vError[1]); // to be improved (hardwired 4th in the name)
403e3389 14545 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)) // to be improved (calculate also 6th and 8th order)
489d5531 14546 {
0dd3b008 14547 fCommonHistsResults6th->FillIntegratedFlow(v[2],vError[2]); // to be improved (hardwired 6th in the name)
14548 fCommonHistsResults8th->FillIntegratedFlow(v[3],vError[3]); // to be improved (hardwired 8th in the name)
489d5531 14549 }
14550
14551} // end of AliFlowAnalysisWithQCumulants::FillCommonHistResultsIntFlow()
14552
489d5531 14553//================================================================================================================================
14554
489d5531 14555void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelationsUsingParticleWeights()
14556{
14557 // Calculate all correlations needed for integrated flow using particle weights.
14558
14559 // Remark 1: When particle weights are used the binning of fIntFlowCorrelationAllPro is organized as follows:
14560 //
14561 // 1st bin: <2>_{1n|1n} = two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
14562 // 2nd bin: <2>_{2n|2n} = two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
14563 // 3rd bin: <2>_{3n|3n} = two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
14564 // 4th bin: <2>_{4n|4n} = two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
14565 // 5th bin: ---- EMPTY ----
14566 // 6th bin: <3>_{2n|1n,1n} = three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
14567 // 7th bin: <3>_{3n|2n,1n} = ...
14568 // 8th bin: <3>_{4n|2n,2n} = ...
14569 // 9th bin: <3>_{4n|3n,1n} = ...
14570 // 10th bin: ---- EMPTY ----
14571 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
14572 // 12th bin: <4>_{2n,1n|2n,1n} = ...
14573 // 13th bin: <4>_{2n,2n|2n,2n} = ...
14574 // 14th bin: <4>_{3n|1n,1n,1n} = ...
14575 // 15th bin: <4>_{3n,1n|3n,1n} = ...
14576 // 16th bin: <4>_{3n,1n|2n,2n} = ...
14577 // 17th bin: <4>_{4n|2n,1n,1n} = ...
14578 // 18th bin: ---- EMPTY ----
14579 // 19th bin: <5>_{2n|1n,1n,1n,1n} = ...
14580 // 20th bin: <5>_{2n,2n|2n,1n,1n} = ...
14581 // 21st bin: <5>_{3n,1n|2n,1n,1n} = ...
14582 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = ...
14583 // 23rd bin: ---- EMPTY ----
14584 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = ...
14585 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = ...
14586 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = ...
14587 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = ...
14588 // 28th bin: ---- EMPTY ----
14589 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = ...
14590 // 30th bin: ---- EMPTY ----
14591 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = ...
14592
14593 // Remark 2: When particle weights are used there are some extra correlations. They are stored in
14594 // fIntFlowExtraCorrelationsPro binning of which is organized as follows:
14595
14596 // 1st bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
14597 // 2nd bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
14598
14599 // multiplicity (number of particles used to determine the reaction plane)
1268c371 14600 Double_t dMult = (*fSpk)(0,0);
489d5531 14601
14602 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
14603 Double_t dReQ1n1k = (*fReQ)(0,1);
14604 Double_t dReQ2n2k = (*fReQ)(1,2);
14605 Double_t dReQ3n3k = (*fReQ)(2,3);
14606 Double_t dReQ4n4k = (*fReQ)(3,4);
14607 Double_t dReQ1n3k = (*fReQ)(0,3);
14608 Double_t dImQ1n1k = (*fImQ)(0,1);
14609 Double_t dImQ2n2k = (*fImQ)(1,2);
14610 Double_t dImQ3n3k = (*fImQ)(2,3);
14611 Double_t dImQ4n4k = (*fImQ)(3,4);
14612 Double_t dImQ1n3k = (*fImQ)(0,3);
14613
14614 // dMs are variables introduced in order to simplify some Eqs. bellow:
14615 //..............................................................................................
1268c371 14616 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
14617 Double_t dM22 = (*fSpk)(1,2)-(*fSpk)(0,4); // dM22 = sum_{i,j=1,i!=j}^M w_i^2 w_j^2
14618 Double_t dM33 = (*fSpk)(1,3)-(*fSpk)(0,6); // dM33 = sum_{i,j=1,i!=j}^M w_i^3 w_j^3
14619 Double_t dM44 = (*fSpk)(1,4)-(*fSpk)(0,8); // dM44 = sum_{i,j=1,i!=j}^M w_i^4 w_j^4
14620 Double_t dM31 = (*fSpk)(0,3)*(*fSpk)(0,1)-(*fSpk)(0,4); // dM31 = sum_{i,j=1,i!=j}^M w_i^3 w_j
14621 Double_t dM211 = (*fSpk)(0,2)*(*fSpk)(1,1)-2.*(*fSpk)(0,3)*(*fSpk)(0,1)
14622 - (*fSpk)(1,2)+2.*(*fSpk)(0,4); // dM211 = sum_{i,j,k=1,i!=j!=k}^M w_i^2 w_j w_k
14623 Double_t dM1111 = (*fSpk)(3,1)-6.*(*fSpk)(0,2)*(*fSpk)(1,1)
14624 + 8.*(*fSpk)(0,3)*(*fSpk)(0,1)
14625 + 3.*(*fSpk)(1,2)-6.*(*fSpk)(0,4); // dM1111 = sum_{i,j,k,l=1,i!=j!=k!=l}^M w_i w_j w_k w_l
489d5531 14626 //..............................................................................................
14627
14628 // 2-particle correlations:
14629 Double_t two1n1nW1W1 = 0.; // <w1 w2 cos(n*(phi1-phi2))>
14630 Double_t two2n2nW2W2 = 0.; // <w1^2 w2^2 cos(2n*(phi1-phi2))>
14631 Double_t two3n3nW3W3 = 0.; // <w1^3 w2^3 cos(3n*(phi1-phi2))>
14632 Double_t two4n4nW4W4 = 0.; // <w1^4 w2^4 cos(4n*(phi1-phi2))>
14633 if(dMult>1)
14634 {
14635 if(dM11)
14636 {
1268c371 14637 two1n1nW1W1 = (pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSpk)(0,2))/dM11;
489d5531 14638 // average correlation <w1 w2 cos(n*(phi1-phi2))> for single event:
14639 fIntFlowCorrelationsEBE->SetBinContent(1,two1n1nW1W1);
14640 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(1,dM11);
14641 // average correlation <w1 w2 cos(n*(phi1-phi2))> for all events:
b40a910e 14642 fIntFlowCorrelationsPro->Fill(0.5,two1n1nW1W1,dM11);
14643 // average squared correlation <w1 w2 cos(n*(phi1-phi2))> for all events:
14644 fIntFlowSquaredCorrelationsPro->Fill(0.5,two1n1nW1W1*two1n1nW1W1,dM11);
489d5531 14645 fIntFlowCorrelationsAllPro->Fill(0.5,two1n1nW1W1,dM11);
14646 }
14647 if(dM22)
14648 {
1268c371 14649 two2n2nW2W2 = (pow(dReQ2n2k,2)+pow(dImQ2n2k,2)-(*fSpk)(0,4))/dM22;
489d5531 14650 // ...
14651 // average correlation <w1^2 w2^2 cos(2n*(phi1-phi2))> for all events:
14652 fIntFlowCorrelationsAllPro->Fill(1.5,two2n2nW2W2,dM22);
14653 }
14654 if(dM33)
14655 {
1268c371 14656 two3n3nW3W3 = (pow(dReQ3n3k,2)+pow(dImQ3n3k,2)-(*fSpk)(0,6))/dM33;
489d5531 14657 // ...
14658 // average correlation <w1^3 w2^3 cos(3n*(phi1-phi2))> for all events:
14659 fIntFlowCorrelationsAllPro->Fill(2.5,two3n3nW3W3,dM33);
14660 }
14661 if(dM44)
14662 {
1268c371 14663 two4n4nW4W4 = (pow(dReQ4n4k,2)+pow(dImQ4n4k,2)-(*fSpk)(0,8))/dM44;
489d5531 14664 // ...
14665 // average correlation <w1^4 w2^4 cos(4n*(phi1-phi2))> for all events:
14666 fIntFlowCorrelationsAllPro->Fill(3.5,two4n4nW4W4,dM44);
14667 }
14668 } // end of if(dMult>1)
14669
14670 // extra 2-particle correlations:
14671 Double_t two1n1nW3W1 = 0.; // <w1^3 w2 cos(n*(phi1-phi2))>
14672 Double_t two1n1nW1W1W2 = 0.; // <w1 w2 w3^2 cos(n*(phi1-phi2))>
14673 if(dMult>1)
14674 {
14675 if(dM31)
14676 {
1268c371 14677 two1n1nW3W1 = (dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k-(*fSpk)(0,4))/dM31;
489d5531 14678 fIntFlowExtraCorrelationsPro->Fill(0.5,two1n1nW3W1,dM31);
14679 }
14680 if(dM211)
14681 {
1268c371 14682 two1n1nW1W1W2 = ((*fSpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSpk)(0,2))
489d5531 14683 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k
1268c371 14684 - (*fSpk)(0,4)))/dM211;
489d5531 14685 fIntFlowExtraCorrelationsPro->Fill(1.5,two1n1nW1W1W2,dM211);
14686 }
14687 } // end of if(dMult>1)
14688 //..............................................................................................
14689
14690 //..............................................................................................
14691 // 3-particle correlations:
14692 Double_t three2n1n1nW2W1W1 = 0.; // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
14693
14694 if(dMult>2)
14695 {
14696 if(dM211)
14697 {
14698 three2n1n1nW2W1W1 = (pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k
14699 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
14700 - pow(dReQ2n2k,2)-pow(dImQ2n2k,2)
1268c371 14701 + 2.*(*fSpk)(0,4))/dM211;
489d5531 14702 fIntFlowCorrelationsAllPro->Fill(5.5,three2n1n1nW2W1W1,dM211);
14703 }
14704 } // end of if(dMult>2)
14705 //..............................................................................................
14706
14707 //..............................................................................................
14708 // 4-particle correlations:
14709 Double_t four1n1n1n1nW1W1W1W1 = 0.; // <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
14710 if(dMult>3)
14711 {
14712 if(dM1111)
14713 {
14714 four1n1n1n1nW1W1W1W1 = (pow(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.),2)
14715 - 2.*(pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k)
14716 + 8.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
14717 + (pow(dReQ2n2k,2)+pow(dImQ2n2k,2))
1268c371 14718 - 4.*(*fSpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
14719 - 6.*(*fSpk)(0,4)+2.*(*fSpk)(1,2))/dM1111;
489d5531 14720
14721 // average correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for single event:
14722 fIntFlowCorrelationsEBE->SetBinContent(2,four1n1n1n1nW1W1W1W1);
14723 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(2,dM1111);
14724 // average correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for all events:
14725 fIntFlowCorrelationsPro->Fill(1.5,four1n1n1n1nW1W1W1W1,dM1111);
b40a910e 14726 // average squared correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for all events:
14727 fIntFlowSquaredCorrelationsPro->Fill(1.5,four1n1n1n1nW1W1W1W1*four1n1n1n1nW1W1W1W1,dM1111);
489d5531 14728 fIntFlowCorrelationsAllPro->Fill(10.5,four1n1n1n1nW1W1W1W1,dM1111);
14729 }
14730 } // end of if(dMult>3)
14731 //..............................................................................................
14732
14733} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelationsUsingParticleWeights()
14734
e1d101a6 14735//=======================================================================================================================
489d5531 14736
489d5531 14737void AliFlowAnalysisWithQCumulants::InitializeArraysForIntFlow()
14738{
14739 // Initialize all arrays used to calculate integrated flow.
14740
14741 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14742 {
14743 fIntFlowCorrectionTermsForNUAEBE[sc] = NULL;
0328db2d 14744 fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc] = NULL;
489d5531 14745 fIntFlowCorrectionTermsForNUAPro[sc] = NULL;
14746 fIntFlowCorrectionTermsForNUAHist[sc] = NULL;
b92ea2b9 14747 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2001bc3a 14748 {
14749 fIntFlowCorrectionTermsForNUAVsMPro[sc][ci] = NULL;
14750 }
0328db2d 14751 for(Int_t power=0;power<2;power++) // linear or quadratic
14752 {
14753 fIntFlowSumOfEventWeightsNUA[sc][power] = NULL;
14754 }
489d5531 14755 }
14756 for(Int_t power=0;power<2;power++) // linear or quadratic
14757 {
14758 fIntFlowSumOfEventWeights[power] = NULL;
14759 }
b3dacf6b 14760 for(Int_t i=0;i<4;i++) // print on the screen the final results (0=RF, 1=RP, 2=POI, 3=RF (rebbined in M))
489d5531 14761 {
14762 fPrintFinalResults[i] = kTRUE;
14763 }
ff70ca91 14764 for(Int_t ci=0;ci<4;ci++) // correlation index or cumulant order
14765 {
14766 fIntFlowCorrelationsVsMPro[ci] = NULL;
b40a910e 14767 fIntFlowSquaredCorrelationsVsMPro[ci] = NULL;
ff70ca91 14768 fIntFlowCorrelationsVsMHist[ci] = NULL;
14769 fIntFlowQcumulantsVsM[ci] = NULL;
14770 fIntFlowVsM[ci] = NULL;
2001bc3a 14771 fIntFlowDetectorBiasVsM[ci] = NULL;
ff70ca91 14772 for(Int_t lc=0;lc<2;lc++)
14773 {
14774 fIntFlowSumOfEventWeightsVsM[ci][lc] = NULL;
14775 }
14776 }
14777 for(Int_t pi=0;pi<6;pi++) // product or covariance index
14778 {
14779 fIntFlowProductOfCorrelationsVsMPro[pi] = NULL;
14780 fIntFlowCovariancesVsM[pi] = NULL;
14781 fIntFlowSumOfProductOfEventWeightsVsM[pi] = NULL;
14782 }
403e3389 14783 for(Int_t ci=0;ci<64;ci++) // correlation index for all correlations vs M profiles (to be improved - hardwired 64)
3435cacb 14784 {
14785 fIntFlowCorrelationsAllVsMPro[ci] = NULL;
14786 }
14787
489d5531 14788} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForIntFlow()
14789
e1d101a6 14790//=======================================================================================================================
489d5531 14791
489d5531 14792void AliFlowAnalysisWithQCumulants::InitializeArraysForDiffFlow()
14793{
14794 // Initialize all arrays needed to calculate differential flow.
14795 // a) Initialize lists holding profiles;
14796 // b) Initialize lists holding histograms;
14797 // c) Initialize event-by-event quantities;
14798 // d) Initialize profiles;
14799 // e) Initialize histograms holding final results.
14800
14801 // a) Initialize lists holding profiles;
14802 for(Int_t t=0;t<2;t++) // type (RP, POI)
14803 {
14804 for(Int_t pe=0;pe<2;pe++) // pt or eta
14805 {
14806 fDiffFlowCorrelationsProList[t][pe] = NULL;
14807 fDiffFlowProductOfCorrelationsProList[t][pe] = NULL;
14808 fDiffFlowCorrectionsProList[t][pe] = NULL;
14809 }
1268c371 14810 // 2D:
14811 f2DDiffFlowCorrelationsProList[t] = NULL;
489d5531 14812 }
14813
14814 // b) Initialize lists holding histograms;
14815 for(Int_t t=0;t<2;t++) // type (RP, POI)
14816 {
14817 for(Int_t pe=0;pe<2;pe++) // pt or eta
14818 {
14819 fDiffFlowCorrelationsHistList[t][pe] = NULL;
14820 for(Int_t power=0;power<2;power++)
14821 {
14822 fDiffFlowSumOfEventWeightsHistList[t][pe][power] = NULL;
14823 } // end of for(Int_t power=0;power<2;power++)
14824 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe] = NULL;
14825 fDiffFlowCorrectionsHistList[t][pe] = NULL;
14826 fDiffFlowCovariancesHistList[t][pe] = NULL;
14827 fDiffFlowCumulantsHistList[t][pe] = NULL;
1268c371 14828 fDiffFlowDetectorBiasHistList[t][pe] = NULL;
489d5531 14829 fDiffFlowHistList[t][pe] = NULL;
14830 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
14831 } // enf of for(Int_t t=0;t<2;t++) // type (RP, POI)
14832
14833 // c) Initialize event-by-event quantities:
14834 // 1D:
14835 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
14836 {
14837 for(Int_t pe=0;pe<2;pe++) // pt or eta
14838 {
14839 for(Int_t m=0;m<4;m++) // multiple of harmonic
14840 {
14841 for(Int_t k=0;k<9;k++) // power of weight
14842 {
14843 fReRPQ1dEBE[t][pe][m][k] = NULL;
14844 fImRPQ1dEBE[t][pe][m][k] = NULL;
14845 fs1dEBE[t][pe][k] = NULL; // to be improved (this doesn't need to be within loop over m)
14846 }
14847 }
14848 }
14849 }
14850 // 1D:
14851 for(Int_t t=0;t<2;t++) // type (RP or POI)
14852 {
14853 for(Int_t pe=0;pe<2;pe++) // pt or eta
14854 {
14855 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14856 {
14857 for(Int_t cti=0;cti<9;cti++) // correction term index
14858 {
14859 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti] = NULL;
14860 }
14861 }
14862 }
14863 }
14864 // 2D:
14865 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
14866 {
14867 for(Int_t m=0;m<4;m++) // multiple of harmonic
14868 {
14869 for(Int_t k=0;k<9;k++) // power of weight
14870 {
14871 fReRPQ2dEBE[t][m][k] = NULL;
14872 fImRPQ2dEBE[t][m][k] = NULL;
14873 fs2dEBE[t][k] = NULL; // to be improved (this doesn't need to be within loop over m)
14874 }
14875 }
14876 }
14877
14878 // d) Initialize profiles:
14879 for(Int_t t=0;t<2;t++) // type: RP or POI
14880 {
14881 for(Int_t pe=0;pe<2;pe++) // pt or eta
14882 {
14883 for(Int_t ci=0;ci<4;ci++) // correlation index
14884 {
14885 fDiffFlowCorrelationsPro[t][pe][ci] = NULL;
b40a910e 14886 fDiffFlowSquaredCorrelationsPro[t][pe][ci] = NULL;
489d5531 14887 } // end of for(Int_t ci=0;ci<4;ci++)
14888 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14889 {
14890 for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14891 {
14892 fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2] = NULL;
14893 } // end of for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14894 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14895 // correction terms for nua:
14896 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14897 {
14898 for(Int_t cti=0;cti<9;cti++) // correction term index
14899 {
14900 fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] = NULL;
14901 }
14902 }
64e500e3 14903 // other differential correlators:
14904 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14905 {
14906 for(Int_t ci=0;ci<1;ci++) // correction term index
14907 {
14908 fOtherDiffCorrelators[t][pe][sc][ci] = NULL;
14909 }
14910 }
489d5531 14911 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
1268c371 14912 for(Int_t ci=0;ci<4;ci++) // correlation index
14913 {
14914 f2DDiffFlowCorrelationsPro[t][ci] = NULL;
14915 }
489d5531 14916 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
14917
14918 // e) Initialize histograms holding final results.
14919 for(Int_t t=0;t<2;t++) // type: RP or POI
14920 {
14921 for(Int_t pe=0;pe<2;pe++) // pt or eta
14922 {
14923 for(Int_t ci=0;ci<4;ci++) // correlation index
14924 {
14925 fDiffFlowCorrelationsHist[t][pe][ci] = NULL;
14926 fDiffFlowCumulants[t][pe][ci] = NULL;
1268c371 14927 fDiffFlowDetectorBias[t][pe][ci] = NULL;
489d5531 14928 fDiffFlow[t][pe][ci] = NULL;
14929 } // end of for(Int_t ci=0;ci<4;ci++)
14930 for(Int_t covarianceIndex=0;covarianceIndex<5;covarianceIndex++)
14931 {
14932 fDiffFlowCovariances[t][pe][covarianceIndex] = NULL;
14933 } // end of for(Int_t covarianceIndex=0;covarianceIndex<5;covarianceIndex++)
14934 // correction terms for nua:
14935 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14936 {
14937 for(Int_t cti=0;cti<9;cti++) // correction term index
14938 {
14939 fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] = NULL;
14940 }
14941 }
14942 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
1268c371 14943 for(Int_t ci=0;ci<4;ci++) // correlation index
14944 {
14945 f2DDiffFlowCumulants[t][ci] = NULL;
14946 f2DDiffFlow[t][ci] = NULL;
14947 }
489d5531 14948 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
14949
14950 // sum of event weights for reduced correlations:
14951 for(Int_t t=0;t<2;t++) // type = RP or POI
14952 {
14953 for(Int_t pe=0;pe<2;pe++) // pt or eta
14954 {
14955 for(Int_t p=0;p<2;p++) // power of weight is 1 or 2
14956 {
14957 for(Int_t ew=0;ew<4;ew++) // event weight index for reduced correlations
14958 {
14959 fDiffFlowSumOfEventWeights[t][pe][p][ew] = NULL;
14960 }
14961 }
14962 }
14963 }
14964 // product of event weights for both types of correlations:
14965 for(Int_t t=0;t<2;t++) // type = RP or POI
14966 {
14967 for(Int_t pe=0;pe<2;pe++) // pt or eta
14968 {
14969 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14970 {
14971 for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14972 {
14973 fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] = NULL;
14974 }
14975 }
14976 }
14977 }
1268c371 14978
14979} // end of AliFlowAnalysisWithQCumulants::InitializeArraysForDiffFlow()
14980
e1d101a6 14981//=======================================================================================================================
489d5531 14982
1268c371 14983void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulants(TString type, TString ptOrEta)
14984{
14985 // Calculate differential flow cumulants from measured multiparticle correlations.
489d5531 14986
1268c371 14987 // REMARK: Cumulants calculated in this method are NOT corrected for non-uniform acceptance.
14988 // This correction, if enabled via setter SetApplyCorrectionForNUA(Bool_t), is applied
14989 // in the method CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
489d5531 14990
1268c371 14991 Int_t t = 0;
14992 Int_t pe = 0;
14993
14994 if(type == "RP")
14995 {
14996 t = 0;
14997 } else if(type == "POI")
14998 {
14999 t = 1;
15000 }
15001
15002 if(ptOrEta == "Pt")
15003 {
15004 pe = 0;
15005 } else if(ptOrEta == "Eta")
15006 {
15007 pe = 1;
15008 }
15009
15010 // Common:
15011 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 15012
1268c371 15013 // Correlation <<2>>:
15014 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1);
15015 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1);
489d5531 15016
1268c371 15017 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
489d5531 15018 {
1268c371 15019 // Reduced correlations:
15020 Double_t twoPrime = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b); // <<2'>>
15021 Double_t twoPrimeError = fDiffFlowCorrelationsHist[t][pe][0]->GetBinError(b); // stat. error of <<2'>>
15022 Double_t fourPrime = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b); // <<4'>>
15023 Double_t fourPrimeError = fDiffFlowCorrelationsHist[t][pe][1]->GetBinError(b); // stat. error of <<4'>>
15024 // Covariances:
15025 Double_t wCovTwoTwoReduced = fDiffFlowCovariances[t][pe][0]->GetBinContent(b); // Cov(<2>,<2'>) * prefactor(<2>,<2'>)
15026 Double_t wCovTwoFourReduced = fDiffFlowCovariances[t][pe][1]->GetBinContent(b); // Cov(<2>,<4'>) * prefactor(<2>,<4'>)
15027 Double_t wCovTwoReducedFourReduced = fDiffFlowCovariances[t][pe][4]->GetBinContent(b); // Cov(<2'>,<4'>) * prefactor(<2'>,<4'>)
15028 // QC{2'}:
15029 Double_t qc2Prime = twoPrime; // QC{2'}
15030 Double_t qc2PrimeError = twoPrimeError; // stat. error of QC{2'}
15031 fDiffFlowCumulants[t][pe][0]->SetBinContent(b,qc2Prime);
15032 fDiffFlowCumulants[t][pe][0]->SetBinError(b,qc2PrimeError);
15033 // QC{4'}:
15034 Double_t qc4Prime = fourPrime - 2.*twoPrime*two; // QC{4'} = <<4'>> - 2*<<2'>><<2>>
15035 Double_t qc4PrimeError = 0.; // stat. error of QC{4'}
15036 Double_t qc4PrimeErrorSquared = 4.*pow(twoPrime,2.)*pow(twoError,2.)
15037 + 4.*pow(two,2.)*pow(twoPrimeError,2.)
15038 + pow(fourPrimeError,2.)
15039 + 8.*two*twoPrime*wCovTwoTwoReduced
15040 - 4.*twoPrime*wCovTwoFourReduced
15041 - 4.*two*wCovTwoReducedFourReduced;
15042 if(qc4PrimeErrorSquared>0.)
15043 {
15044 qc4PrimeError = pow(qc4PrimeErrorSquared,0.5);
489d5531 15045 }
1268c371 15046 fDiffFlowCumulants[t][pe][1]->SetBinContent(b,qc4Prime);
15047 fDiffFlowCumulants[t][pe][1]->SetBinError(b,qc4PrimeError);
489d5531 15048 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 15049
1268c371 15050} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulants(TString type, Bool_t useParticleWeights, TString eventWeights);
489d5531 15051
e1d101a6 15052//=======================================================================================================================
489d5531 15053
1268c371 15054void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCumulants(TString type)
489d5531 15055{
1268c371 15056 // Calculate 2D differential cumulants.
489d5531 15057
1268c371 15058 // Remark: correction for detector effects and error propagation not implemented yet for 2D differential cumulants.
489d5531 15059
1268c371 15060 Int_t t = 0;
489d5531 15061
15062 if(type == "RP")
15063 {
1268c371 15064 t = 0;
489d5531 15065 } else if(type == "POI")
15066 {
1268c371 15067 t = 1;
15068 }
15069
15070 // Reference correlation <<2>>:
15071 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1);
489d5531 15072
1268c371 15073 // Looping over all (pt,eta) bins and calculating differential flow cumulants:
15074 for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 15075 {
15076 for(Int_t e=1;e<=fnBinsEta;e++)
15077 {
1268c371 15078 // Reduced correlations:
15079 Double_t twoPrime = f2DDiffFlowCorrelationsPro[t][0]->GetBinContent(f2DDiffFlowCorrelationsPro[t][0]->GetBin(p,e)); // <<2'>>(pt,eta)
15080 Double_t fourPrime = f2DDiffFlowCorrelationsPro[t][1]->GetBinContent(f2DDiffFlowCorrelationsPro[t][1]->GetBin(p,e)); // <<4'>>(pt,eta)
15081 // Cumulants:
15082 Double_t qc2Prime = twoPrime; // QC{2'} = <<2'>>
15083 f2DDiffFlowCumulants[t][0]->SetBinContent(f2DDiffFlowCumulants[t][0]->GetBin(p,e),qc2Prime);
15084 Double_t qc4Prime = fourPrime - 2.*twoPrime*two; // QC{4'} = <<4'>> - 2*<<2'>><<2>>
15085 f2DDiffFlowCumulants[t][1]->SetBinContent(f2DDiffFlowCumulants[t][1]->GetBin(p,e),qc4Prime);
489d5531 15086 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
489d5531 15087 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
15088
1268c371 15089} // end of void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCumulants(TString type)
489d5531 15090
e1d101a6 15091//=======================================================================================================================
489d5531 15092
489d5531 15093void AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(TString type)
15094{
1268c371 15095 // Calculate final results for integrated flow of RPs and POIs.
489d5531 15096
1268c371 15097 // to be improved - check if the integrated flow calculation here is actually correct
15098
15099 Int_t t = 0; // RP = 0, POI = 1
489d5531 15100
15101 if(type == "RP")
15102 {
1268c371 15103 t = 0;
489d5531 15104 } else if(type == "POI")
15105 {
1268c371 15106 t = 1;
15107 }
489d5531 15108
489d5531 15109 // pt yield:
15110 TH1F *yield2ndPt = NULL;
15111 TH1F *yield4thPt = NULL;
15112 TH1F *yield6thPt = NULL;
15113 TH1F *yield8thPt = NULL;
15114
15115 if(type == "POI")
15116 {
dd442cd2 15117 if(fFillMultipleControlHistograms)
15118 {
15119 yield2ndPt = (TH1F*)(fCommonHists2nd->GetHistPtPOI())->Clone();
15120 yield4thPt = (TH1F*)(fCommonHists4th->GetHistPtPOI())->Clone();
15121 yield6thPt = (TH1F*)(fCommonHists6th->GetHistPtPOI())->Clone();
15122 yield8thPt = (TH1F*)(fCommonHists8th->GetHistPtPOI())->Clone();
15123 } else
15124 {
15125 yield2ndPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15126 yield4thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15127 yield6thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15128 yield8thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15129 }
489d5531 15130 }
15131 else if(type == "RP")
15132 {
dd442cd2 15133 if(fFillMultipleControlHistograms)
15134 {
15135 yield2ndPt = (TH1F*)(fCommonHists2nd->GetHistPtRP())->Clone();
15136 yield4thPt = (TH1F*)(fCommonHists4th->GetHistPtRP())->Clone();
15137 yield6thPt = (TH1F*)(fCommonHists6th->GetHistPtRP())->Clone();
15138 yield8thPt = (TH1F*)(fCommonHists8th->GetHistPtRP())->Clone();
15139 } else
15140 {
15141 yield2ndPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15142 yield4thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15143 yield6thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15144 yield8thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15145 }
489d5531 15146 }
15147
0d11c335 15148 if(!yield2ndPt){return;}
15149 if(!yield4thPt){return;}
15150 if(!yield6thPt){return;}
15151 if(!yield8thPt){return;}
15152
489d5531 15153 Int_t nBinsPt = yield2ndPt->GetNbinsX();
15154
15155 TH1D *flow2ndPt = NULL;
15156 TH1D *flow4thPt = NULL;
15157 TH1D *flow6thPt = NULL;
15158 TH1D *flow8thPt = NULL;
15159
15160 // to be improved (hardwired pt index)
15161 flow2ndPt = (TH1D*)fDiffFlow[t][0][0]->Clone();
15162 flow4thPt = (TH1D*)fDiffFlow[t][0][1]->Clone();
15163 flow6thPt = (TH1D*)fDiffFlow[t][0][2]->Clone();
15164 flow8thPt = (TH1D*)fDiffFlow[t][0][3]->Clone();
0d11c335 15165
15166 if(!flow2ndPt){return;}
15167 if(!flow4thPt){return;}
15168 if(!flow6thPt){return;}
15169 if(!flow8thPt){return;}
489d5531 15170
15171 Double_t dvn2nd = 0., dvn4th = 0., dvn6th = 0., dvn8th = 0.; // differential flow
15172 Double_t dErrvn2nd = 0., dErrvn4th = 0., dErrvn6th = 0., dErrvn8th = 0.; // error on differential flow
15173
15174 Double_t dVn2nd = 0., dVn4th = 0., dVn6th = 0., dVn8th = 0.; // integrated flow
15175 Double_t dErrVn2nd = 0., dErrVn4th = 0., dErrVn6th = 0., dErrVn8th = 0.; // error on integrated flow
15176
15177 Double_t dYield2nd = 0., dYield4th = 0., dYield6th = 0., dYield8th = 0.; // pt yield
15178 Double_t dSum2nd = 0., dSum4th = 0., dSum6th = 0., dSum8th = 0.; // needed for normalizing integrated flow
15179
15180 // looping over pt bins:
15181 for(Int_t p=1;p<nBinsPt+1;p++)
15182 {
15183 dvn2nd = flow2ndPt->GetBinContent(p);
15184 dvn4th = flow4thPt->GetBinContent(p);
15185 dvn6th = flow6thPt->GetBinContent(p);
15186 dvn8th = flow8thPt->GetBinContent(p);
15187
15188 dErrvn2nd = flow2ndPt->GetBinError(p);
15189 dErrvn4th = flow4thPt->GetBinError(p);
15190 dErrvn6th = flow6thPt->GetBinError(p);
15191 dErrvn8th = flow8thPt->GetBinError(p);
15192
15193 dYield2nd = yield2ndPt->GetBinContent(p);
15194 dYield4th = yield4thPt->GetBinContent(p);
15195 dYield6th = yield6thPt->GetBinContent(p);
15196 dYield8th = yield8thPt->GetBinContent(p);
15197
15198 dVn2nd += dvn2nd*dYield2nd;
15199 dVn4th += dvn4th*dYield4th;
15200 dVn6th += dvn6th*dYield6th;
15201 dVn8th += dvn8th*dYield8th;
15202
15203 dSum2nd += dYield2nd;
15204 dSum4th += dYield4th;
15205 dSum6th += dYield6th;
15206 dSum8th += dYield8th;
15207
15208 dErrVn2nd += dYield2nd*dYield2nd*dErrvn2nd*dErrvn2nd; // ro be improved (check this relation)
15209 dErrVn4th += dYield4th*dYield4th*dErrvn4th*dErrvn4th;
15210 dErrVn6th += dYield6th*dYield6th*dErrvn6th*dErrvn6th;
15211 dErrVn8th += dYield8th*dYield8th*dErrvn8th*dErrvn8th;
15212
15213 } // end of for(Int_t p=1;p<nBinsPt+1;p++)
15214
15215 // normalizing the results for integrated flow:
15216 if(dSum2nd)
15217 {
15218 dVn2nd /= dSum2nd;
15219 dErrVn2nd /= (dSum2nd*dSum2nd);
15220 dErrVn2nd = TMath::Sqrt(dErrVn2nd);
15221 }
15222 if(dSum4th)
15223 {
15224 dVn4th /= dSum4th;
15225 dErrVn4th /= (dSum4th*dSum4th);
15226 dErrVn4th = TMath::Sqrt(dErrVn4th);
15227 }
15228 //if(dSum6th) dVn6th/=dSum6th;
15229 //if(dSum8th) dVn8th/=dSum8th;
15230
15231 // storing the results for integrated flow in common histos: (to be improved: new method for this?)
15232 if(type == "POI")
15233 {
15234 fCommonHistsResults2nd->FillIntegratedFlowPOI(dVn2nd,dErrVn2nd);
15235 fCommonHistsResults4th->FillIntegratedFlowPOI(dVn4th,dErrVn4th);
15236 fCommonHistsResults6th->FillIntegratedFlowPOI(dVn6th,0.); // to be improved (errors)
15237 fCommonHistsResults8th->FillIntegratedFlowPOI(dVn8th,0.); // to be improved (errors)
15238 }
15239 else if (type == "RP")
15240 {
15241 fCommonHistsResults2nd->FillIntegratedFlowRP(dVn2nd,dErrVn2nd);
15242 fCommonHistsResults4th->FillIntegratedFlowRP(dVn4th,dErrVn4th);
15243 fCommonHistsResults6th->FillIntegratedFlowRP(dVn6th,0.); // to be improved (errors)
15244 fCommonHistsResults8th->FillIntegratedFlowRP(dVn8th,0.); // to be improved (errors)
15245 }
15246
15247 delete flow2ndPt;
15248 delete flow4thPt;
15249 //delete flow6thPt;
15250 //delete flow8thPt;
15251
15252 delete yield2ndPt;
15253 delete yield4thPt;
15254 delete yield6thPt;
15255 delete yield8thPt;
15256
15257} // end of AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(TString type)
15258
e1d101a6 15259//=======================================================================================================================
489d5531 15260
489d5531 15261void AliFlowAnalysisWithQCumulants::InitializeArraysForDistributions()
15262{
15263 // Initialize all arrays used for distributions.
15264
15265 // a) Initialize arrays of histograms used to hold distributions of correlations;
15266 // b) Initialize array to hold min and max values of correlations.
15267
15268 // a) Initialize arrays of histograms used to hold distributions of correlations:
15269 for(Int_t di=0;di<4;di++) // distribution index
15270 {
15271 fDistributions[di] = NULL;
15272 }
15273
15274 // b) Initialize default min and max values of correlations:
15275 // (Remark: The default values bellow were chosen for v2=5% and M=500)
15276 fMinValueOfCorrelation[0] = -0.01; // <2>_min
15277 fMaxValueOfCorrelation[0] = 0.04; // <2>_max
15278 fMinValueOfCorrelation[1] = -0.00002; // <4>_min
15279 fMaxValueOfCorrelation[1] = 0.00015; // <4>_max
15280 fMinValueOfCorrelation[2] = -0.0000003; // <6>_min
15281 fMaxValueOfCorrelation[2] = 0.0000006; // <6>_max
15282 fMinValueOfCorrelation[3] = -0.000000006; // <8>_min
15283 fMaxValueOfCorrelation[3] = 0.000000003; // <8>_max
15284
15285} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForDistributions()
15286
e1d101a6 15287//=======================================================================================================================
489d5531 15288
e5834fcb 15289void AliFlowAnalysisWithQCumulants::InitializeArraysForVarious()
15290{
15291 // Initialize all arrays used for various unclassified objects.
15292
15293 for(Int_t p=0;p<4;p++) // [v_min,v_max,refMult_min,refMult_max]
15294 {
15295 fPhiDistributionForOneEventSettings[p] = 0.;
15296 }
15297
15298} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForVarious()
15299
e1d101a6 15300//=======================================================================================================================
489d5531 15301
15302void AliFlowAnalysisWithQCumulants::BookEverythingForDistributions()
15303{
15304 // a) Book profile to hold all flags for distributions of correlations;
15305 // b) Book all histograms to hold distributions of correlations.
15306
15307 TString correlationIndex[4] = {"<2>","<4>","<6>","<8>"}; // to be improved (should I promote this to data members?)
15308
15309 // a) Book profile to hold all flags for distributions of correlations:
15310 TString distributionsFlagsName = "fDistributionsFlags";
15311 distributionsFlagsName += fAnalysisLabel->Data();
15312 fDistributionsFlags = new TProfile(distributionsFlagsName.Data(),"Flags for Distributions of Correlations",9,0,9);
15313 fDistributionsFlags->SetTickLength(-0.01,"Y");
15314 fDistributionsFlags->SetMarkerStyle(25);
15315 fDistributionsFlags->SetLabelSize(0.05);
15316 fDistributionsFlags->SetLabelOffset(0.02,"Y");
e1d101a6 15317 fDistributionsFlags->SetStats(kFALSE);
489d5531 15318 fDistributionsFlags->GetXaxis()->SetBinLabel(1,"Store or not?");
15319 fDistributionsFlags->GetXaxis()->SetBinLabel(2,"<2>_{min}");
15320 fDistributionsFlags->GetXaxis()->SetBinLabel(3,"<2>_{max}");
15321 fDistributionsFlags->GetXaxis()->SetBinLabel(4,"<4>_{min}");
15322 fDistributionsFlags->GetXaxis()->SetBinLabel(5,"<4>_{max}");
15323 fDistributionsFlags->GetXaxis()->SetBinLabel(6,"<6>_{min}");
15324 fDistributionsFlags->GetXaxis()->SetBinLabel(7,"<6>_{max}");
15325 fDistributionsFlags->GetXaxis()->SetBinLabel(8,"<8>_{min}");
15326 fDistributionsFlags->GetXaxis()->SetBinLabel(9,"<8>_{max}");
15327 fDistributionsList->Add(fDistributionsFlags);
15328
15329 // b) Book all histograms to hold distributions of correlations.
15330 if(fStoreDistributions)
15331 {
15332 TString distributionsName = "fDistributions";
15333 distributionsName += fAnalysisLabel->Data();
15334 for(Int_t di=0;di<4;di++) // distribution index
15335 {
15336 fDistributions[di] = new TH1D(Form("Distribution of %s",correlationIndex[di].Data()),Form("Distribution of %s",correlationIndex[di].Data()),10000,fMinValueOfCorrelation[di],fMaxValueOfCorrelation[di]);
15337 fDistributions[di]->SetXTitle(correlationIndex[di].Data());
15338 fDistributionsList->Add(fDistributions[di]);
15339 } // end of for(Int_t di=0;di<4;di++) // distribution index
15340 } // end of if(fStoreDistributions)
15341
15342} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForDistributions()
15343
e1d101a6 15344//=======================================================================================================================
489d5531 15345
e5834fcb 15346void AliFlowAnalysisWithQCumulants::BookEverythingForVarious()
15347{
15348 // Book all objects for various unclassified quantities.
15349
15350 if(!fStorePhiDistributionForOneEvent){return;}
15351
15352 // a) Book histogram holding phi distribution for single event to illustrate flow.
15353
15354 // a) Book histogram holding phi distribution for single event to illustrate flow:
15355 fPhiDistributionForOneEvent = new TH1D("fPhiDistributionForOneEvent","",360,0.,TMath::TwoPi());
15356 fPhiDistributionForOneEvent->GetXaxis()->SetTitle("#phi");
15357 fVariousList->Add(fPhiDistributionForOneEvent);
15358
15359} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForVarious()
15360
e1d101a6 15361//=======================================================================================================================
489d5531 15362
15363void AliFlowAnalysisWithQCumulants::StoreFlagsForDistributions()
15364{
15365 // Store all flags for distributiuons of correlations in profile fDistributionsFlags.
15366
15367 if(!fDistributionsFlags)
15368 {
15369 cout<<"WARNING: fDistributionsFlags is NULL in AFAWQC::SDF() !!!!"<<endl;
15370 exit(0);
15371 }
15372
15373 fDistributionsFlags->Fill(0.5,(Int_t)fStoreDistributions); // histos with distributions of correlations stored or not in the output file
15374 // store min and max values of correlations:
15375 for(Int_t di=0;di<4;di++) // distribution index
15376 {
15377 fDistributionsFlags->Fill(1.5+2.*(Double_t)di,fMinValueOfCorrelation[di]);
15378 fDistributionsFlags->Fill(2.5+2.*(Double_t)di,fMaxValueOfCorrelation[di]);
15379 }
15380
15381} // end of void AliFlowAnalysisWithQCumulants::StoreFlagsForDistributions()
15382
e1d101a6 15383//=======================================================================================================================
489d5531 15384
489d5531 15385void AliFlowAnalysisWithQCumulants::StoreDistributionsOfCorrelations()
15386{
15387 // Store distributions of correlations.
15388
15389 if(!(fIntFlowCorrelationsEBE && fIntFlowEventWeightsForCorrelationsEBE))
15390 {
15391 cout<<"WARNING: fIntFlowCorrelationsEBE && fIntFlowEventWeightsForCorrelationsEBE"<<endl;
15392 cout<<" is NULL in AFAWQC::SDOC() !!!!"<<endl;
15393 exit(0);
15394 }
15395
15396 for(Int_t di=0;di<4;di++) // distribution index
15397 {
15398 if(!fDistributions[di])
15399 {
15400 cout<<"WARNING: fDistributions[di] is NULL in AFAWQC::SDOC() !!!!"<<endl;
15401 cout<<"di = "<<di<<endl;
15402 exit(0);
15403 } else
15404 {
15405 fDistributions[di]->Fill(fIntFlowCorrelationsEBE->GetBinContent(di+1),fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(di+1));
15406 }
15407 } // end of for(Int_t di=0;di<4;di++) // distribution index
15408
15409} // end of void AliFlowAnalysisWithQCumulants::StoreDistributionsOfCorrelations()
15410
e1d101a6 15411//=======================================================================================================================
489d5531 15412
489d5531 15413void AliFlowAnalysisWithQCumulants::BookAndNestAllLists()
15414{
15415 // Book and nest all lists nested in the base list fHistList.
15416 // a) Book and nest lists for integrated flow;
15417 // b) Book and nest lists for differential flow;
15418 // c) Book and nest list for particle weights;
15419 // d) Book and nest list for distributions;
e5834fcb 15420 // e) Book and nest list for various unclassified objects;
e1d101a6 15421 // f) Book and nest list for other differential correlators;
15422 // g) Book and nest list for nested loops;
df23c5ae 15423 // h) Book and nest lists for mixed harmonics;
15424 // i) Book and nest lists for control histograms.
489d5531 15425
15426 // a) Book and nest all lists for integrated flow:
1268c371 15427 // Base list for integrated flow:
489d5531 15428 fIntFlowList = new TList();
15429 fIntFlowList->SetName("Integrated Flow");
15430 fIntFlowList->SetOwner(kTRUE);
15431 fHistList->Add(fIntFlowList);
1268c371 15432 // List holding profiles:
489d5531 15433 fIntFlowProfiles = new TList();
15434 fIntFlowProfiles->SetName("Profiles");
15435 fIntFlowProfiles->SetOwner(kTRUE);
15436 fIntFlowList->Add(fIntFlowProfiles);
3435cacb 15437 // List holding all profiles with results for correlations vs M:
15438 if(fCalculateAllCorrelationsVsM)
15439 {
15440 fIntFlowAllCorrelationsVsM = new TList();
15441 fIntFlowAllCorrelationsVsM->SetName("Correlations vs M");
15442 fIntFlowAllCorrelationsVsM->SetOwner(kTRUE);
15443 fIntFlowProfiles->Add(fIntFlowAllCorrelationsVsM);
15444 } // end of if(fCalculateAllCorrelationsVsM)
1268c371 15445 // List holding histograms with results:
489d5531 15446 fIntFlowResults = new TList();
15447 fIntFlowResults->SetName("Results");
15448 fIntFlowResults->SetOwner(kTRUE);
15449 fIntFlowList->Add(fIntFlowResults);
15450
1268c371 15451 // b) Book and nest lists for differential flow:
15452 this->BookAndNestListsForDifferentialFlow();
15453
15454 // c) Book and nest list for particle weights:
15455 fWeightsList->SetName("Weights");
15456 fWeightsList->SetOwner(kTRUE);
15457 fHistList->Add(fWeightsList);
15458
15459 // d) Book and nest list for distributions:
15460 fDistributionsList = new TList();
15461 fDistributionsList->SetName("Distributions");
15462 fDistributionsList->SetOwner(kTRUE);
15463 fHistList->Add(fDistributionsList);
15464
15465 // e) Book and nest list for various unclassified objects:
15466 if(fStorePhiDistributionForOneEvent)
15467 {
15468 fVariousList = new TList();
15469 fVariousList->SetName("Various");
15470 fVariousList->SetOwner(kTRUE);
15471 fHistList->Add(fVariousList);
15472 }
15473
64e500e3 15474 // f) Book and nest list for other differential correlators:
15475 fOtherDiffCorrelatorsList = new TList();
15476 fOtherDiffCorrelatorsList->SetName("Other differential correlators");
15477 fOtherDiffCorrelatorsList->SetOwner(kTRUE);
62e36168 15478 if(fCalculateDiffFlow){fHistList->Add(fOtherDiffCorrelatorsList);} // TBI: Use another flag here instead of fCalculateDiffFlow
64e500e3 15479
15480 // g) Book and nest list for nested loops:
1268c371 15481 fNestedLoopsList = new TList();
15482 fNestedLoopsList->SetName("Nested Loops");
15483 fNestedLoopsList->SetOwner(kTRUE);
15484 fHistList->Add(fNestedLoopsList);
e1d101a6 15485
15486 // h) Book and nest lists for mixed harmonics:
15487 // Base list for mixed harmonics:
15488 fMixedHarmonicsList = new TList();
15489 fMixedHarmonicsList->SetName("Mixed Harmonics");
15490 fMixedHarmonicsList->SetOwner(kTRUE);
15491 fHistList->Add(fMixedHarmonicsList);
15492 // List holding profiles:
15493 fMixedHarmonicsProfiles = new TList();
15494 fMixedHarmonicsProfiles->SetName("Profiles");
15495 fMixedHarmonicsProfiles->SetOwner(kTRUE);
15496 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsProfiles);}
15497 // List holding histograms with results:
15498 fMixedHarmonicsResults = new TList();
15499 fMixedHarmonicsResults->SetName("Results");
15500 fMixedHarmonicsResults->SetOwner(kTRUE);
15501 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsResults);}
c10259fb 15502 // List holding objects for statistical error propagation of mixed harmonics:
15503 fMixedHarmonicsErrorPropagation = new TList();
15504 fMixedHarmonicsErrorPropagation->SetName("Error Propagation");
15505 fMixedHarmonicsErrorPropagation->SetOwner(kTRUE);
15506 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsErrorPropagation);}
e1d101a6 15507
df23c5ae 15508 // i) Book and nest lists for control histograms:
15509 // Base list for mixed harmonics:
15510 fControlHistogramsList = new TList();
15511 fControlHistogramsList->SetName("Control Histograms");
15512 fControlHistogramsList->SetOwner(kTRUE);
15513 fHistList->Add(fControlHistogramsList);
15514
1268c371 15515} // end of void AliFlowAnalysisWithQCumulants::BookAndNestAllLists()
15516
e1d101a6 15517//=======================================================================================================================
1268c371 15518
15519void AliFlowAnalysisWithQCumulants::BookAndNestListsForDifferentialFlow()
15520{
15521 // Book and nest lists for differential flow.
15522
15523 // Base list for differential flow objects:
489d5531 15524 fDiffFlowList = new TList();
15525 fDiffFlowList->SetName("Differential Flow");
15526 fDiffFlowList->SetOwner(kTRUE);
15527 fHistList->Add(fDiffFlowList);
1268c371 15528
15529 // Local flags:
15530 TString typeFlag[2] = {"RP","POI"};
15531 TString ptEtaFlag[2] = {"p_{T}","#eta"};
15532 TString powerFlag[2] = {"linear","quadratic"};
15533
15534 // 2D:
15535 if(fCalculate2DDiffFlow)
15536 {
15537 fDiffFlow2D = new TList();
15538 fDiffFlow2D->SetName("2D");
15539 fDiffFlow2D->SetOwner(kTRUE);
15540 fDiffFlowList->Add(fDiffFlow2D);
15541 for(Int_t t=0;t<2;t++)
15542 {
15543 f2DDiffFlowCorrelationsProList[t] = new TList();
15544 f2DDiffFlowCorrelationsProList[t]->SetOwner(kTRUE);
15545 f2DDiffFlowCorrelationsProList[t]->SetName(Form("Profiles with 2D correlations (%s)",typeFlag[t].Data()));
15546 fDiffFlow2D->Add(f2DDiffFlowCorrelationsProList[t]);
15547 } // end of for(Int_t t=0;t<2;t++)
15548 } // end of if(fCalculate2DDiffFlow)
15549
15550 // What follows bellow in this method is relevant only for 1D differential flow:
15551 if(!fCalculateDiffFlow){return;}
15552
15553 // List holding profiles:
489d5531 15554 fDiffFlowProfiles = new TList();
15555 fDiffFlowProfiles->SetName("Profiles");
15556 fDiffFlowProfiles->SetOwner(kTRUE);
15557 fDiffFlowList->Add(fDiffFlowProfiles);
1268c371 15558 // List holding histograms with results:
489d5531 15559 fDiffFlowResults = new TList();
15560 fDiffFlowResults->SetName("Results");
15561 fDiffFlowResults->SetOwner(kTRUE);
15562 fDiffFlowList->Add(fDiffFlowResults);
1268c371 15563 // Flags used for naming nested lists in list fDiffFlowProfiles and fDiffFlowResults:
489d5531 15564 TList list;
15565 list.SetOwner(kTRUE);
1268c371 15566 // Nested lists in fDiffFlowProfiles (~/Differential Flow/Profiles):
489d5531 15567 for(Int_t t=0;t<2;t++) // type: RP or POI
15568 {
62e36168 15569 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 15570 {
15571 // list holding profiles with correlations:
15572 fDiffFlowCorrelationsProList[t][pe] = (TList*)list.Clone();
15573 fDiffFlowCorrelationsProList[t][pe]->SetName(Form("Profiles with correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15574 fDiffFlowProfiles->Add(fDiffFlowCorrelationsProList[t][pe]);
15575 // list holding profiles with products of correlations:
15576 fDiffFlowProductOfCorrelationsProList[t][pe] = (TList*)list.Clone();
15577 fDiffFlowProductOfCorrelationsProList[t][pe]->SetName(Form("Profiles with products of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15578 fDiffFlowProfiles->Add(fDiffFlowProductOfCorrelationsProList[t][pe]);
15579 // list holding profiles with corrections:
15580 fDiffFlowCorrectionsProList[t][pe] = (TList*)list.Clone();
15581 fDiffFlowCorrectionsProList[t][pe]->SetName(Form("Profiles with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15582 fDiffFlowProfiles->Add(fDiffFlowCorrectionsProList[t][pe]);
15583 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
15584 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15585 // nested lists in fDiffFlowResults (~/Differential Flow/Results):
15586 for(Int_t t=0;t<2;t++) // type: RP or POI
15587 {
62e36168 15588 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 15589 {
15590 // list holding histograms with correlations:
15591 fDiffFlowCorrelationsHistList[t][pe] = (TList*)list.Clone();
15592 fDiffFlowCorrelationsHistList[t][pe]->SetName(Form("Correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15593 fDiffFlowResults->Add(fDiffFlowCorrelationsHistList[t][pe]);
15594 // list holding histograms with corrections:
15595 fDiffFlowCorrectionsHistList[t][pe] = (TList*)list.Clone();
15596 fDiffFlowCorrectionsHistList[t][pe]->SetName(Form("Histograms with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15597 fDiffFlowResults->Add(fDiffFlowCorrectionsHistList[t][pe]);
15598 for(Int_t power=0;power<2;power++)
15599 {
15600 // list holding histograms with sums of event weights:
15601 fDiffFlowSumOfEventWeightsHistList[t][pe][power] = (TList*)list.Clone();
15602 fDiffFlowSumOfEventWeightsHistList[t][pe][power]->SetName(Form("Sum of %s event weights (%s, %s)",powerFlag[power].Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15603 fDiffFlowResults->Add(fDiffFlowSumOfEventWeightsHistList[t][pe][power]);
15604 } // end of for(Int_t power=0;power<2;power++)
15605 // list holding histograms with sums of products of event weights:
15606 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe] = (TList*)list.Clone();
15607 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]->SetName(Form("Sum of products of event weights (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15608 fDiffFlowResults->Add(fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]);
15609 // list holding histograms with covariances of correlations:
15610 fDiffFlowCovariancesHistList[t][pe] = (TList*)list.Clone();
15611 fDiffFlowCovariancesHistList[t][pe]->SetName(Form("Covariances of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15612 fDiffFlowResults->Add(fDiffFlowCovariancesHistList[t][pe]);
15613 // list holding histograms with differential Q-cumulants:
15614 fDiffFlowCumulantsHistList[t][pe] = (TList*)list.Clone();
15615 fDiffFlowCumulantsHistList[t][pe]->SetName(Form("Differential Q-cumulants (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15616 fDiffFlowResults->Add(fDiffFlowCumulantsHistList[t][pe]);
1268c371 15617 // list holding histograms which quantify detector bias to differential Q-cumulants:
15618 fDiffFlowDetectorBiasHistList[t][pe] = (TList*)list.Clone();
15619 fDiffFlowDetectorBiasHistList[t][pe]->SetName(Form("Detector bias (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15620 fDiffFlowResults->Add(fDiffFlowDetectorBiasHistList[t][pe]);
489d5531 15621 // list holding histograms with differential flow estimates from Q-cumulants:
15622 fDiffFlowHistList[t][pe] = (TList*)list.Clone();
15623 fDiffFlowHistList[t][pe]->SetName(Form("Differential flow (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15624 fDiffFlowResults->Add(fDiffFlowHistList[t][pe]);
15625 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
15626 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15627
1268c371 15628} // end of void AliFlowAnalysisWithQCumulants::BookAndNestListsForDifferentialFlow()
489d5531 15629
e1d101a6 15630//=======================================================================================================================
489d5531 15631
489d5531 15632void AliFlowAnalysisWithQCumulants::FillCommonHistResultsDiffFlow(TString type)
15633{
1268c371 15634 // Fill common result histograms for differential flow.
489d5531 15635
1268c371 15636 Int_t t = 0;
489d5531 15637
15638 if(type == "RP")
15639 {
1268c371 15640 t = 0;
489d5531 15641 } else if(type == "POI")
15642 {
1268c371 15643 t = 1;
489d5531 15644 }
1268c371 15645
15646 // to be improved - check all pointers used in this method
489d5531 15647
15648 if(!(fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th))
15649 {
15650 cout<<"WARNING: fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th"<<endl;
15651 cout<<" is NULL in AFAWQC::FCHRIF() !!!!"<<endl;
15652 exit(0);
15653 }
15654
15655 // pt:
15656 for(Int_t p=1;p<=fnBinsPt;p++)
15657 {
15658 Double_t v2 = fDiffFlow[t][0][0]->GetBinContent(p);
15659 Double_t v4 = fDiffFlow[t][0][1]->GetBinContent(p);
15660 Double_t v6 = fDiffFlow[t][0][2]->GetBinContent(p);
15661 Double_t v8 = fDiffFlow[t][0][3]->GetBinContent(p);
15662
15663 Double_t v2Error = fDiffFlow[t][0][0]->GetBinError(p);
15664 Double_t v4Error = fDiffFlow[t][0][1]->GetBinError(p);
15665 //Double_t v6Error = fFinalFlow1D[t][pW][nua][0][2]->GetBinError(p);
15666 //Double_t v8Error = fFinalFlow1D[t][pW][nua][0][3]->GetBinError(p);
15667
15668 if(type == "RP")
15669 {
15670 fCommonHistsResults2nd->FillDifferentialFlowPtRP(p,v2,v2Error);
15671 fCommonHistsResults4th->FillDifferentialFlowPtRP(p,v4,v4Error);
15672 fCommonHistsResults6th->FillDifferentialFlowPtRP(p,v6,0.);
15673 fCommonHistsResults8th->FillDifferentialFlowPtRP(p,v8,0.);
15674 } else if(type == "POI")
15675 {
15676 fCommonHistsResults2nd->FillDifferentialFlowPtPOI(p,v2,v2Error);
15677 fCommonHistsResults4th->FillDifferentialFlowPtPOI(p,v4,v4Error);
15678 fCommonHistsResults6th->FillDifferentialFlowPtPOI(p,v6,0.);
15679 fCommonHistsResults8th->FillDifferentialFlowPtPOI(p,v8,0.);
15680 }
15681 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
15682
15683 // eta:
62e36168 15684 if(!fCalculateDiffFlowVsEta){return;}
489d5531 15685 for(Int_t e=1;e<=fnBinsEta;e++)
15686 {
15687 Double_t v2 = fDiffFlow[t][1][0]->GetBinContent(e);
15688 Double_t v4 = fDiffFlow[t][1][1]->GetBinContent(e);
15689 Double_t v6 = fDiffFlow[t][1][2]->GetBinContent(e);
15690 Double_t v8 = fDiffFlow[t][1][3]->GetBinContent(e);
15691
15692 Double_t v2Error = fDiffFlow[t][1][0]->GetBinError(e);
15693 Double_t v4Error = fDiffFlow[t][1][1]->GetBinError(e);
15694 //Double_t v6Error = fDiffFlow[t][1][2]->GetBinError(e);
15695 //Double_t v8Error = fDiffFlow[t][1][3]->GetBinError(e);
15696
15697 if(type == "RP")
15698 {
15699 fCommonHistsResults2nd->FillDifferentialFlowEtaRP(e,v2,v2Error);
15700 fCommonHistsResults4th->FillDifferentialFlowEtaRP(e,v4,v4Error);
15701 fCommonHistsResults6th->FillDifferentialFlowEtaRP(e,v6,0.);
15702 fCommonHistsResults8th->FillDifferentialFlowEtaRP(e,v8,0.);
15703 } else if(type == "POI")
15704 {
15705 fCommonHistsResults2nd->FillDifferentialFlowEtaPOI(e,v2,v2Error);
15706 fCommonHistsResults4th->FillDifferentialFlowEtaPOI(e,v4,v4Error);
15707 fCommonHistsResults6th->FillDifferentialFlowEtaPOI(e,v6,0.);
15708 fCommonHistsResults8th->FillDifferentialFlowEtaPOI(e,v8,0.);
15709 }
15710 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
15711
15712} // end of void AliFlowAnalysisWithQCumulants::FillCommonHistResultsDiffFlow(TString type, Bool_t useParticleWeights, TString eventWeights, Bool_t correctedForNUA)
15713
e1d101a6 15714//=======================================================================================================================
489d5531 15715
1268c371 15716void AliFlowAnalysisWithQCumulants::CommonConstants(TString method)
489d5531 15717{
1268c371 15718 // Access and store common constants.
15719
15720 // a) If this method was called in Init() access common constants from AliFlowCommonConstants;
15721 // b) If this method was called in Init() book and fill TProfile to hold constants accessed in a);
15722 // c) If this method was called in Finish() access common constants from TProfile booked and filled in b).
15723
15724 if(method == "Init")
15725 {
15726 // a) If this method was called in Init() access common constants from AliFlowCommonConstants:
15727 fnBinsPhi = AliFlowCommonConstants::GetMaster()->GetNbinsPhi();
15728 fPhiMin = AliFlowCommonConstants::GetMaster()->GetPhiMin();
15729 fPhiMax = AliFlowCommonConstants::GetMaster()->GetPhiMax();
15730 if(fnBinsPhi){fPhiBinWidth = (fPhiMax-fPhiMin)/fnBinsPhi;}
15731 fnBinsPt = AliFlowCommonConstants::GetMaster()->GetNbinsPt();
15732 fPtMin = AliFlowCommonConstants::GetMaster()->GetPtMin();
15733 fPtMax = AliFlowCommonConstants::GetMaster()->GetPtMax();
15734 if(fnBinsPt){fPtBinWidth = (fPtMax-fPtMin)/fnBinsPt;}
15735 fnBinsEta = AliFlowCommonConstants::GetMaster()->GetNbinsEta();
15736 fEtaMin = AliFlowCommonConstants::GetMaster()->GetEtaMin();
15737 fEtaMax = AliFlowCommonConstants::GetMaster()->GetEtaMax();
15738 if(fnBinsEta){fEtaBinWidth = (fEtaMax-fEtaMin)/fnBinsEta;}
15739
15740 // b) If this method was called in Init() book and fill TProfile to hold constants accessed in a):
15741 TString fCommonConstantsName = "fCommonConstants";
15742 fCommonConstantsName += fAnalysisLabel->Data();
15743 fCommonConstants = new TProfile(fCommonConstantsName.Data(),"Common constants",9,0.,9.);
15744 fCommonConstants->SetLabelSize(0.05);
15745 fCommonConstants->GetXaxis()->SetBinLabel(1,"nBins (#phi)");
15746 fCommonConstants->Fill(0.5,fnBinsPhi);
15747 fCommonConstants->GetXaxis()->SetBinLabel(2,"#phi_{min}");
15748 fCommonConstants->Fill(1.5,fPhiMin);
15749 fCommonConstants->GetXaxis()->SetBinLabel(3,"#phi_{max}");
15750 fCommonConstants->Fill(2.5,fPhiMax);
15751 fCommonConstants->GetXaxis()->SetBinLabel(4,"nBins (p_{t})");
15752 fCommonConstants->Fill(3.5,fnBinsPt);
15753 fCommonConstants->GetXaxis()->SetBinLabel(5,"(p_{t})_{min}");
15754 fCommonConstants->Fill(4.5,fPtMin);
15755 fCommonConstants->GetXaxis()->SetBinLabel(6,"(p_{t})_{max}");
15756 fCommonConstants->Fill(5.5,fPtMax);
15757 fCommonConstants->GetXaxis()->SetBinLabel(7,"nBins (#eta)");
15758 fCommonConstants->Fill(6.5,fnBinsEta);
15759 fCommonConstants->GetXaxis()->SetBinLabel(8,"#eta_{min}");
15760 fCommonConstants->Fill(7.5,fEtaMin);
15761 fCommonConstants->GetXaxis()->SetBinLabel(9,"#eta_{max}");
15762 fCommonConstants->Fill(8.5,fEtaMax);
15763 fHistList->Add(fCommonConstants);
15764 } // end of if(method == "Init")
15765 else if(method == "Finish")
15766 {
15767 // c) If this method was called in Finish() access common constants from TProfile booked and filled in b):
15768 if(!fCommonConstants)
15769 {
15770 printf("\n WARNING (QC): fCommonConstants is NULL in AFAWQC::AC(\"%s\") !!!!\n\n",method.Data());
15771 exit(0);
15772 }
15773 fnBinsPhi = (Int_t)fCommonConstants->GetBinContent(1);
15774 fPhiMin = fCommonConstants->GetBinContent(2);
15775 fPhiMax = fCommonConstants->GetBinContent(3);
15776 if(fnBinsPhi){fPhiBinWidth = (fPhiMax-fPhiMin)/fnBinsPhi;}
15777 fnBinsPt = (Int_t)fCommonConstants->GetBinContent(4);
15778 fPtMin = fCommonConstants->GetBinContent(5);
15779 fPtMax = fCommonConstants->GetBinContent(6);
15780 if(fnBinsPt){fPtBinWidth = (fPtMax-fPtMin)/fnBinsPt;}
15781 fnBinsEta = (Int_t)fCommonConstants->GetBinContent(7);
15782 fEtaMin = fCommonConstants->GetBinContent(8);
15783 fEtaMax = fCommonConstants->GetBinContent(9);
15784 if(fnBinsEta){fEtaBinWidth = (fEtaMax-fEtaMin)/fnBinsEta;}
15785 } // end of else if(method == "Finish")
15786
15787} // end of void AliFlowAnalysisWithQCumulants::CommonConstants(TString method)
489d5531 15788
e1d101a6 15789//=======================================================================================================================
489d5531 15790
489d5531 15791void AliFlowAnalysisWithQCumulants::CrossCheckSettings()
15792{
df23c5ae 15793 // a) Cross-check if the choice for multiplicity weights make sense;
15794 // b) Cross-check if the choice for multiplicity itself make sense.
15795
15796 // a) Cross-check if the choice for multiplicity weights make sense:
15797 if((!fMultiplicityWeight->Contains("combinations")) &&
15798 (!fMultiplicityWeight->Contains("unit")) &&
15799 (!fMultiplicityWeight->Contains("multiplicity")) )
489d5531 15800 {
15801 cout<<"WARNING (QC): Multiplicity weight can be either \"combinations\", \"unit\""<<endl;
15802 cout<<" or \"multiplicity\". Certainly not \""<<fMultiplicityWeight->Data()<<"\"."<<endl;
15803 exit(0);
15804 }
df23c5ae 15805
489d5531 15806} // end of void AliFlowAnalysisWithQCumulants::CrossCheckSettings()
15807
e1d101a6 15808//=======================================================================================================================
489d5531 15809
489d5531 15810void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeights()
15811{
0328db2d 15812 // Calculate sum of linear and quadratic event weights for correlations.
2001bc3a 15813
df23c5ae 15814 // TBI re-think what is the right multiplicity when particle weights are used!
3842bdcd 15815
15816 // Multiplicity bin of an event (relevant for all histos vs M):
15817 Double_t dMultiplicityBin = 0.;
df23c5ae 15818 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 15819 {
df23c5ae 15820 dMultiplicityBin = fNumberOfRPsEBE+0.5;
15821 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 15822 {
15823 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 15824 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
15825 {
15826 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
15827 }
9f33751d 15828
489d5531 15829 for(Int_t p=0;p<2;p++) // power-1
15830 {
15831 for(Int_t ci=0;ci<4;ci++) // correlation index
15832 {
15833 fIntFlowSumOfEventWeights[p]->Fill(ci+0.5,pow(fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci+1),p+1));
b3dacf6b 15834 if(fCalculateCumulantsVsM)
15835 {
3842bdcd 15836 fIntFlowSumOfEventWeightsVsM[ci][p]->Fill(dMultiplicityBin,pow(fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci+1),p+1)); // to be improved: dMult => sum of weights?
b3dacf6b 15837 }
489d5531 15838 }
15839 }
15840
15841} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeights()
15842
e1d101a6 15843//=======================================================================================================================
489d5531 15844
0328db2d 15845void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeightsNUA()
489d5531 15846{
0328db2d 15847 // Calculate sum of linear and quadratic event weights for NUA terms.
15848
15849 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
489d5531 15850 {
0328db2d 15851 for(Int_t p=0;p<2;p++) // power-1
15852 {
b92ea2b9 15853 for(Int_t ci=0;ci<4;ci++) // nua term index
0328db2d 15854 {
15855 fIntFlowSumOfEventWeightsNUA[sc][p]->Fill(ci+0.5,pow(fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc]->GetBinContent(ci+1),p+1));
489d5531 15856 }
0328db2d 15857 }
15858 }
15859
15860} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeightsNUA()
489d5531 15861
e1d101a6 15862//=======================================================================================================================
0328db2d 15863
0328db2d 15864void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeights()
15865{
ff70ca91 15866 // Calculate sum of product of event weights for correlations.
2001bc3a 15867
df23c5ae 15868 // TBI re-think what is the right multiplicity when particle weights are used!
3842bdcd 15869
15870 // Multiplicity bin of an event (relevant for all histos vs M):
15871 Double_t dMultiplicityBin = 0.;
df23c5ae 15872 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 15873 {
df23c5ae 15874 dMultiplicityBin = fNumberOfRPsEBE+0.5;
15875 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 15876 {
15877 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 15878 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
15879 {
15880 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
15881 }
2001bc3a 15882
489d5531 15883 Int_t counter = 0;
15884
15885 for(Int_t ci1=1;ci1<4;ci1++)
15886 {
15887 for(Int_t ci2=ci1+1;ci2<=4;ci2++)
15888 {
ff70ca91 15889 fIntFlowSumOfProductOfEventWeights->Fill(0.5+counter,
15890 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
b3dacf6b 15891 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
15892 if(fCalculateCumulantsVsM)
15893 {
3842bdcd 15894 fIntFlowSumOfProductOfEventWeightsVsM[counter]->Fill(dMultiplicityBin, // to be improved: dMult => sum of weights?
b3dacf6b 15895 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
15896 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
15897 } // end of if(fCalculateCumulantsVsM)
ff70ca91 15898 counter++;
489d5531 15899 }
15900 }
15901
0328db2d 15902} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeights()
15903
e1d101a6 15904//=======================================================================================================================
0328db2d 15905
0328db2d 15906void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeightsNUA()
15907{
15908 // Calculate sum of product of event weights for NUA terms.
15909
15910 // w_{<2>} * w_{<cos(#phi)>}:
15911 fIntFlowSumOfProductOfEventWeightsNUA->Fill(0.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15912 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
15913 // w_{<2>} * w_{<sin(#phi)>}:
15914 fIntFlowSumOfProductOfEventWeightsNUA->Fill(1.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15915 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15916 // w_{<cos(#phi)> * w_{<sin(#phi)>}:
15917 fIntFlowSumOfProductOfEventWeightsNUA->Fill(2.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15918 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15919 // w_{<2>} * w{<cos(phi1+phi2)>}
15920 fIntFlowSumOfProductOfEventWeightsNUA->Fill(3.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15921 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15922 // w_{<2>} * w{<sin(phi1+phi2)>}
15923 fIntFlowSumOfProductOfEventWeightsNUA->Fill(4.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15924 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15925 // w_{<2>} * w{<cos(phi1-phi2-phi3)>}
15926 fIntFlowSumOfProductOfEventWeightsNUA->Fill(5.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15927 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15928 // w_{<2>} * w{<sin(phi1-phi2-phi3)>}
15929 fIntFlowSumOfProductOfEventWeightsNUA->Fill(6.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15930 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15931 // w_{<4>} * w{<cos(phi1)>}
15932 fIntFlowSumOfProductOfEventWeightsNUA->Fill(7.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15933 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
15934 // w_{<4>} * w{<sin(phi1)>}
15935 fIntFlowSumOfProductOfEventWeightsNUA->Fill(8.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15936 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15937 // w_{<4>} * w{<cos(phi1+phi2)>}
15938 fIntFlowSumOfProductOfEventWeightsNUA->Fill(9.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15939 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15940 // w_{<4>} * w{<sin(phi1+phi2)>}
15941 fIntFlowSumOfProductOfEventWeightsNUA->Fill(10.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15942 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15943 // w_{<4>} * w{<cos(phi1-phi2-phi3)>}
15944 fIntFlowSumOfProductOfEventWeightsNUA->Fill(11.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15945 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15946 // w_{<4>} * w{<sin(phi1-phi2-phi3)>}
15947 fIntFlowSumOfProductOfEventWeightsNUA->Fill(12.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15948 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15949 // w_{<cos(phi1)>} * w{<cos(phi1+phi2)>}
15950 fIntFlowSumOfProductOfEventWeightsNUA->Fill(13.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15951 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15952 // w_{<cos(phi1)>} * w{<sin(phi1+phi2)>}
15953 fIntFlowSumOfProductOfEventWeightsNUA->Fill(14.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15954 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15955 // w_{<cos(phi1)>} * w{<cos(phi1-phi2-phi3)>}
15956 fIntFlowSumOfProductOfEventWeightsNUA->Fill(15.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15957 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15958 // w_{<cos(phi1)>} * w{<sin(phi1-phi2-phi3)>}
15959 fIntFlowSumOfProductOfEventWeightsNUA->Fill(16.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15960 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15961 // w_{<sin(phi1)>} * w{<cos(phi1+phi2)>}
15962 fIntFlowSumOfProductOfEventWeightsNUA->Fill(17.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15963 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15964 // w_{<sin(phi1)>} * w{<sin(phi1+phi2)>}
15965 fIntFlowSumOfProductOfEventWeightsNUA->Fill(18.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15966 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15967 // w_{<sin(phi1)>} * w{<cos(phi1-phi2-phi3)>}
15968 fIntFlowSumOfProductOfEventWeightsNUA->Fill(19.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15969 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15970 // w_{<sin(phi1)>} * w{<sin(phi1-phi2-phi3)>}
15971 fIntFlowSumOfProductOfEventWeightsNUA->Fill(20.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15972 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15973 // w_{<cos(phi1+phi2)>} * w{<sin(phi1+phi2))>}
15974 fIntFlowSumOfProductOfEventWeightsNUA->Fill(21.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15975 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15976 // w_{<cos(phi1+phi2)>} * w{<cos(phi1-phi2-phi3)>}
15977 fIntFlowSumOfProductOfEventWeightsNUA->Fill(22.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15978 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15979 // w_{<cos(phi1+phi2)>} * w{<sin(phi1-phi2-phi3)>}
15980 fIntFlowSumOfProductOfEventWeightsNUA->Fill(23.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15981 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15982 // w_{<sin(phi1+phi2)>} * w{<cos(phi1-phi2-phi3)>}
15983 fIntFlowSumOfProductOfEventWeightsNUA->Fill(24.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)*
15984 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15985 // w_{<sin(phi1+phi2)>} * w{<sin(phi1-phi2-phi3)>}
15986 fIntFlowSumOfProductOfEventWeightsNUA->Fill(25.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)*
15987 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15988 // w_{<cos(phi1-phi2-phi3)>} * w{<sin(phi1-phi2-phi3)>}
15989 fIntFlowSumOfProductOfEventWeightsNUA->Fill(26.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)*
15990 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15991
15992} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowIntFlowSumOfProductOfEventWeightsNUA()
489d5531 15993
e1d101a6 15994//=======================================================================================================================
489d5531 15995
489d5531 15996void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelations(TString type, TString ptOrEta)
15997{
1268c371 15998 // Calculate reduced correlations for RPs or POIs for all pt and eta bins.
489d5531 15999
1268c371 16000 // Multiplicity:
16001 Double_t dMult = (*fSpk)(0,0);
489d5531 16002
16003 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16004 Double_t dReQ1n = (*fReQ)(0,0);
16005 Double_t dReQ2n = (*fReQ)(1,0);
16006 //Double_t dReQ3n = (*fReQ)(2,0);
16007 //Double_t dReQ4n = (*fReQ)(3,0);
16008 Double_t dImQ1n = (*fImQ)(0,0);
16009 Double_t dImQ2n = (*fImQ)(1,0);
16010 //Double_t dImQ3n = (*fImQ)(2,0);
16011 //Double_t dImQ4n = (*fImQ)(3,0);
16012
16013 // reduced correlations are stored in fDiffFlowCorrelationsPro[0=RP,1=POI][0=pt,1=eta][correlation index]. Correlation index runs as follows:
16014 //
16015 // 0: <<2'>>
16016 // 1: <<4'>>
16017 // 2: <<6'>>
16018 // 3: <<8'>>
16019
ea239361 16020 //Int_t t = 0; // type flag
2a98ceb8 16021 Int_t pe = 0; // ptEta flag
489d5531 16022
16023 if(type == "RP")
16024 {
ea239361 16025 //t = 0;
489d5531 16026 } else if(type == "POI")
16027 {
ea239361 16028 //t = 1;
489d5531 16029 }
16030
16031 if(ptOrEta == "Pt")
16032 {
16033 pe = 0;
16034 } else if(ptOrEta == "Eta")
16035 {
16036 pe = 1;
16037 }
16038
16039 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16040 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16041 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16042 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16043
16044 // looping over all bins and calculating reduced correlations:
16045 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16046 {
16047 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
16048 Double_t p1n0kRe = 0.;
16049 Double_t p1n0kIm = 0.;
16050
16051 // number of POIs in particular pt or eta bin:
16052 Double_t mp = 0.;
16053
16054 // real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
16055 Double_t q1n0kRe = 0.;
16056 Double_t q1n0kIm = 0.;
16057 Double_t q2n0kRe = 0.;
16058 Double_t q2n0kIm = 0.;
16059
16060 // number of particles which are both RPs and POIs in particular pt or eta bin:
16061 Double_t mq = 0.;
16062
16063 if(type == "POI")
16064 {
16065 // q_{m*n,0}:
16066 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
16067 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
16068 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
16069 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
16070 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
16071 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
16072 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
16073 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
16074
16075 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16076 }
16077 else if(type == "RP")
16078 {
16079 // q_{m*n,0}:
16080 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
16081 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
16082 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
16083 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
16084 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
16085 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
16086 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
16087 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
16088
16089 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16090 }
16091
16092 if(type == "POI")
16093 {
16094 // p_{m*n,0}:
16095 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
16096 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
16097 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
16098 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
16099
16100 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16101
ea239361 16102 //t = 1; // typeFlag = RP or POI
489d5531 16103 }
16104 else if(type == "RP")
16105 {
16106 // p_{m*n,0} = q_{m*n,0}:
16107 p1n0kRe = q1n0kRe;
16108 p1n0kIm = q1n0kIm;
16109
16110 mp = mq;
16111
ea239361 16112 //t = 0; // typeFlag = RP or POI
489d5531 16113 }
16114
1268c371 16115 // 2'-particle correlation for particular pt or eta bin:
489d5531 16116 Double_t two1n1nPtEta = 0.;
b40a910e 16117 Double_t mWeight2pPrime = 0.; // multiplicity weight for <2'>
489d5531 16118 if(mp*dMult-mq)
16119 {
16120 two1n1nPtEta = (p1n0kRe*dReQ1n+p1n0kIm*dImQ1n-mq)
16121 / (mp*dMult-mq);
b40a910e 16122 // determine multiplicity weight:
df23c5ae 16123 if(fMultiplicityWeight->Contains("combinations"))
b40a910e 16124 {
16125 mWeight2pPrime = mp*dMult-mq;
df23c5ae 16126 } else if(fMultiplicityWeight->Contains("unit"))
b40a910e 16127 {
16128 mWeight2pPrime = 1.;
16129 }
489d5531 16130 if(type == "POI") // to be improved (I do not this if)
16131 {
16132 // fill profile to get <<2'>> for POIs
b40a910e 16133 fDiffFlowCorrelationsPro[1][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta,mWeight2pPrime);
16134 // fill profile to get <<2'>^2> for POIs
16135 fDiffFlowSquaredCorrelationsPro[1][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta*two1n1nPtEta,mWeight2pPrime);
489d5531 16136 // histogram to store <2'> for POIs e-b-e (needed in some other methods):
16137 fDiffFlowCorrelationsEBE[1][pe][0]->SetBinContent(b,two1n1nPtEta);
b40a910e 16138 fDiffFlowEventWeightsForCorrelationsEBE[1][pe][0]->SetBinContent(b,mWeight2pPrime);
489d5531 16139 }
16140 else if(type == "RP") // to be improved (I do not this if)
16141 {
16142 // profile to get <<2'>> for RPs:
b40a910e 16143 fDiffFlowCorrelationsPro[0][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta,mWeight2pPrime);
16144 // profile to get <<2'>^2> for RPs:
16145 fDiffFlowSquaredCorrelationsPro[0][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta*two1n1nPtEta,mWeight2pPrime);
489d5531 16146 // histogram to store <2'> for RPs e-b-e (needed in some other methods):
16147 fDiffFlowCorrelationsEBE[0][pe][0]->SetBinContent(b,two1n1nPtEta);
b40a910e 16148 fDiffFlowEventWeightsForCorrelationsEBE[0][pe][0]->SetBinContent(b,mWeight2pPrime);
489d5531 16149 }
16150 } // end of if(mp*dMult-mq)
16151
16152 // 4'-particle correlation:
16153 Double_t four1n1n1n1nPtEta = 0.;
b40a910e 16154 Double_t mWeight4pPrime = 0.; // multiplicity weight for <4'>
489d5531 16155 if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16156 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
16157 {
16158 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16159 - q2n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
16160 - 2.*q2n0kIm*dReQ1n*dImQ1n
16161 - p1n0kRe*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
16162 + p1n0kIm*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
16163 - 2.*dMult*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16164 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*mq
16165 + 6.*(q1n0kRe*dReQ1n+q1n0kIm*dImQ1n)
16166 + 1.*(q2n0kRe*dReQ2n+q2n0kIm*dImQ2n)
16167 + 2.*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16168 + 2.*mq*dMult
16169 - 6.*mq)
16170 / ((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16171 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.));
b40a910e 16172 // determine multiplicity weight:
df23c5ae 16173 if(fMultiplicityWeight->Contains("combinations"))
b40a910e 16174 {
16175 mWeight4pPrime = (mp-mq)*dMult*(dMult-1.)*(dMult-2.) + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
df23c5ae 16176 } else if(fMultiplicityWeight->Contains("unit"))
b40a910e 16177 {
16178 mWeight4pPrime = 1.;
16179 }
489d5531 16180 if(type == "POI")
16181 {
16182 // profile to get <<4'>> for POIs:
b40a910e 16183 fDiffFlowCorrelationsPro[1][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta,mWeight4pPrime);
16184 // profile to get <<4'>^2> for POIs:
16185 fDiffFlowSquaredCorrelationsPro[1][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta*four1n1n1n1nPtEta,mWeight4pPrime);
489d5531 16186 // histogram to store <4'> for POIs e-b-e (needed in some other methods):
16187 fDiffFlowCorrelationsEBE[1][pe][1]->SetBinContent(b,four1n1n1n1nPtEta);
b40a910e 16188 fDiffFlowEventWeightsForCorrelationsEBE[1][pe][1]->SetBinContent(b,mWeight4pPrime);
489d5531 16189 }
16190 else if(type == "RP")
16191 {
16192 // profile to get <<4'>> for RPs:
b40a910e 16193 fDiffFlowCorrelationsPro[0][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta,mWeight4pPrime);
16194 // profile to get <<4'>^2> for RPs:
16195 fDiffFlowSquaredCorrelationsPro[0][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta*four1n1n1n1nPtEta,mWeight4pPrime);
489d5531 16196 // histogram to store <4'> for RPs e-b-e (needed in some other methods):
16197 fDiffFlowCorrelationsEBE[0][pe][1]->SetBinContent(b,four1n1n1n1nPtEta);
b40a910e 16198 fDiffFlowEventWeightsForCorrelationsEBE[0][pe][1]->SetBinContent(b,mWeight4pPrime);
489d5531 16199 }
16200 } // end of if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16201 // +mq*(dMult-1.)*(dMult-2.)*(dMult-3.))
16202
16203 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16204
16205
16206} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelations(TString type, TString ptOrEta);
16207
e1d101a6 16208//=======================================================================================================================
489d5531 16209
64e500e3 16210void AliFlowAnalysisWithQCumulants::CalculateOtherDiffCorrelators(TString type, TString ptOrEta)
16211{
16212 // Calculate other differential correlators for RPs or POIs for all pt and eta bins.
16213
16214 // Multiplicity:
16215 Double_t dMult = (*fSpk)(0,0);
16216
16217 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16218 Double_t dReQ1n = (*fReQ)(0,0);
16219 Double_t dReQ2n = (*fReQ)(1,0);
16220 Double_t dReQ3n = (*fReQ)(2,0);
16221 //Double_t dReQ4n = (*fReQ)(3,0);
16222 Double_t dImQ1n = (*fImQ)(0,0);
16223 Double_t dImQ2n = (*fImQ)(1,0);
16224 Double_t dImQ3n = (*fImQ)(2,0);
16225 //Double_t dImQ4n = (*fImQ)(3,0);
16226
16227 // Other correlations are stored in fOtherDiffCorrelators[2][2][2][1], [0=RP,1=POI][0=pt,1=eta][0=sin terms,1=cos terms][correlator index]
16228 // Correlation index runs as follows:
16229 //
16230 // 0: <exp[in(psi1-3phi2+2phi3)]>
16231
16232 Int_t t = 0; // type flag
16233 Int_t pe = 0; // ptEta flag
16234
16235 if(type == "RP")
16236 {
16237 t = 0;
16238 } else if(type == "POI")
16239 {
16240 t = 1;
16241 }
16242
16243 if(ptOrEta == "Pt")
16244 {
16245 pe = 0;
16246 } else if(ptOrEta == "Eta")
16247 {
16248 pe = 1;
16249 }
16250
16251 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16252 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16253 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16254 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16255
16256 // looping over all bins and calculating reduced correlations:
16257 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16258 {
16259 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
16260 Double_t p1n0kRe = 0.;
16261 Double_t p1n0kIm = 0.;
16262
16263 // number of POIs in particular pt or eta bin:
16264 Double_t mp = 0.;
16265
16266 // real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
16267 Double_t q1n0kRe = 0.;
16268 Double_t q1n0kIm = 0.;
16269 Double_t q2n0kRe = 0.;
16270 Double_t q2n0kIm = 0.;
16271 Double_t q3n0kRe = 0.;
16272 Double_t q3n0kIm = 0.;
16273
16274 // number of particles which are both RPs and POIs in particular pt or eta bin:
16275 Double_t mq = 0.;
16276
16277 if(type == "POI")
16278 {
16279 // q_{m*n,0}:
16280 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
16281 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
16282 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
16283 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
16284 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
16285 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
16286 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
16287 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
16288 q3n0kRe = fReRPQ1dEBE[2][pe][2][0]->GetBinContent(fReRPQ1dEBE[2][pe][2][0]->GetBin(b))
16289 * fReRPQ1dEBE[2][pe][2][0]->GetBinEntries(fReRPQ1dEBE[2][pe][2][0]->GetBin(b));
16290 q3n0kIm = fImRPQ1dEBE[2][pe][2][0]->GetBinContent(fImRPQ1dEBE[2][pe][2][0]->GetBin(b))
16291 * fImRPQ1dEBE[2][pe][2][0]->GetBinEntries(fImRPQ1dEBE[2][pe][2][0]->GetBin(b));
16292
16293 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16294 }
16295 else if(type == "RP")
16296 {
16297 // q_{m*n,0}:
16298 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
16299 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
16300 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
16301 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
16302 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
16303 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
16304 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
16305 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
16306 q3n0kRe = fReRPQ1dEBE[0][pe][2][0]->GetBinContent(fReRPQ1dEBE[0][pe][2][0]->GetBin(b))
16307 * fReRPQ1dEBE[0][pe][2][0]->GetBinEntries(fReRPQ1dEBE[0][pe][2][0]->GetBin(b));
16308 q3n0kIm = fImRPQ1dEBE[0][pe][2][0]->GetBinContent(fImRPQ1dEBE[0][pe][2][0]->GetBin(b))
16309 * fImRPQ1dEBE[0][pe][2][0]->GetBinEntries(fImRPQ1dEBE[0][pe][2][0]->GetBin(b));
16310
16311 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16312 }
16313
16314 if(type == "POI")
16315 {
16316 // p_{m*n,0}:
16317 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
16318 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
16319 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
16320 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
16321
16322 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16323
16324 t = 1; // typeFlag = RP or POI
16325 }
16326 else if(type == "RP")
16327 {
16328 // p_{m*n,0} = q_{m*n,0}:
16329 p1n0kRe = q1n0kRe;
16330 p1n0kIm = q1n0kIm;
16331
16332 mp = mq;
16333
16334 t = 0; // typeFlag = RP or POI
16335 }
16336
16337 // 3'-particle correlators:
16338 // Taeney-Yan correlator:
16339 Double_t dTaeneyYan = 0.;
16340 Double_t mWeightTaeneyYan = 0.; // multiplicity weight for Taeney-Yan correlator
16341 if((mp*dMult-2.*mq)*(dMult-1.) > 0.) // to be improved - is this condition fully justified?
16342 {
16343 dTaeneyYan = (dReQ3n*(p1n0kRe*dReQ2n-p1n0kIm*dImQ2n)+dImQ3n*(p1n0kIm*dReQ2n+p1n0kRe*dImQ2n)
16344 - p1n0kRe*dReQ1n - p1n0kIm*dImQ1n
16345 - q2n0kRe*dReQ2n - q2n0kIm*dImQ2n
16346 - q3n0kRe*dReQ3n - q3n0kIm*dImQ3n
16347 + 2.*mq)
16348 / ((mp*dMult-2.*mq)*(dMult-1.));
16349 // determine multiplicity weight:
df23c5ae 16350 if(fMultiplicityWeight->Contains("combinations"))
64e500e3 16351 {
16352 mWeightTaeneyYan = (mp*dMult-2.*mq)*(dMult-1.);
df23c5ae 16353 } else if(fMultiplicityWeight->Contains("unit"))
64e500e3 16354 {
16355 mWeightTaeneyYan = 1.;
16356 }
16357 // Fill profiles:
16358 fOtherDiffCorrelators[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dTaeneyYan,mWeightTaeneyYan);
16359 } // end of if((mp*dMult-2.*mq)*(dMult-1.) > 0.)
16360
16361 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16362
16363} // end of void AliFlowAnalysisWithQCumulants::CalculateOtherDiffCorrelators(TString type, TString ptOrEta)
16364
e1d101a6 16365//=======================================================================================================================
64e500e3 16366
1268c371 16367void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCorrelations(TString type)
16368{
16369 // Calculate all reduced correlations needed for 2D differential flow for each (pt,eta) bin.
16370
16371 // Multiplicity:
16372 Double_t dMult = (*fSpk)(0,0);
16373 // Real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16374 Double_t dReQ1n = (*fReQ)(0,0);
16375 Double_t dReQ2n = (*fReQ)(1,0);
16376 //Double_t dReQ3n = (*fReQ)(2,0);
16377 //Double_t dReQ4n = (*fReQ)(3,0);
16378 Double_t dImQ1n = (*fImQ)(0,0);
16379 Double_t dImQ2n = (*fImQ)(1,0);
16380 //Double_t dImQ3n = (*fImQ)(2,0);
16381 //Double_t dImQ4n = (*fImQ)(3,0);
16382
16383 // 2D reduced correlations are stored in TProfile2D f2DDiffFlowCorrelationsPro[0=RP,1=POI][correlation index].
16384 // Correlation index runs as follows:
16385 // 0: <<2'>>
16386 // 1: <<4'>>
16387 // 2: <<6'>>
16388 // 3: <<8'>>
16389
16390 Int_t t = 0; // type flag
16391 if(type == "RP")
16392 {
16393 t = 0;
16394 } else if(type == "POI")
16395 {
16396 t = 1;
16397 }
16398
16399 // Looping over all (pt,eta) bins and calculating correlations needed for differential flow:
16400 for(Int_t p=1;p<=fnBinsPt;p++)
16401 {
16402 for(Int_t e=1;e<=fnBinsEta;e++)
16403 {
16404 // Real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular (pt,eta) bin):
16405 Double_t p1n0kRe = 0.;
16406 Double_t p1n0kIm = 0.;
16407 // Number of POIs in particular pt or eta bin:
16408 Double_t mp = 0.;
16409 // Real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for 'RP && POI particles' in particular pt or eta bin):
16410 Double_t q1n0kRe = 0.;
16411 Double_t q1n0kIm = 0.;
16412 Double_t q2n0kRe = 0.;
16413 Double_t q2n0kIm = 0.;
16414 // Number of 'RP && POI particles' in particular pt or eta bin:
16415 Double_t mq = 0.;
16416 if(type == "POI")
16417 {
16418 // q_{m*n,0}:
16419 q1n0kRe = fReRPQ2dEBE[2][0][0]->GetBinContent(fReRPQ2dEBE[2][0][0]->GetBin(p,e))
16420 * fReRPQ2dEBE[2][0][0]->GetBinEntries(fReRPQ2dEBE[2][0][0]->GetBin(p,e));
16421 q1n0kIm = fImRPQ2dEBE[2][0][0]->GetBinContent(fImRPQ2dEBE[2][0][0]->GetBin(p,e))
16422 * fImRPQ2dEBE[2][0][0]->GetBinEntries(fImRPQ2dEBE[2][0][0]->GetBin(p,e));
16423 q2n0kRe = fReRPQ2dEBE[2][1][0]->GetBinContent(fReRPQ2dEBE[2][1][0]->GetBin(p,e))
16424 * fReRPQ2dEBE[2][1][0]->GetBinEntries(fReRPQ2dEBE[2][1][0]->GetBin(p,e));
16425 q2n0kIm = fImRPQ2dEBE[2][1][0]->GetBinContent(fImRPQ2dEBE[2][1][0]->GetBin(p,e))
16426 * fImRPQ2dEBE[2][1][0]->GetBinEntries(fImRPQ2dEBE[2][1][0]->GetBin(p,e));
16427 // m_{q}:
16428 mq = fReRPQ2dEBE[2][0][0]->GetBinEntries(fReRPQ2dEBE[2][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16429 } // end of if(type == "POI")
16430 else if(type == "RP")
16431 {
16432 // q_{m*n,0}:
16433 q1n0kRe = fReRPQ2dEBE[0][0][0]->GetBinContent(fReRPQ2dEBE[0][0][0]->GetBin(p,e))
16434 * fReRPQ2dEBE[0][0][0]->GetBinEntries(fReRPQ2dEBE[0][0][0]->GetBin(p,e));
16435 q1n0kIm = fImRPQ2dEBE[0][0][0]->GetBinContent(fImRPQ2dEBE[0][0][0]->GetBin(p,e))
16436 * fImRPQ2dEBE[0][0][0]->GetBinEntries(fImRPQ2dEBE[0][0][0]->GetBin(p,e));
16437 q2n0kRe = fReRPQ2dEBE[0][1][0]->GetBinContent(fReRPQ2dEBE[0][1][0]->GetBin(p,e))
16438 * fReRPQ2dEBE[0][1][0]->GetBinEntries(fReRPQ2dEBE[0][1][0]->GetBin(p,e));
16439 q2n0kIm = fImRPQ2dEBE[0][1][0]->GetBinContent(fImRPQ2dEBE[0][1][0]->GetBin(p,e))
16440 * fImRPQ2dEBE[0][1][0]->GetBinEntries(fImRPQ2dEBE[0][1][0]->GetBin(p,e));
16441 // m_{q}:
16442 mq = fReRPQ2dEBE[0][0][0]->GetBinEntries(fReRPQ2dEBE[0][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16443 } // end of else if(type == "RP")
16444 if(type == "POI")
16445 {
16446 // p_{m*n,0}:
16447 p1n0kRe = fReRPQ2dEBE[1][0][0]->GetBinContent(fReRPQ2dEBE[1][0][0]->GetBin(p,e))
16448 * fReRPQ2dEBE[1][0][0]->GetBinEntries(fReRPQ2dEBE[1][0][0]->GetBin(p,e));
16449 p1n0kIm = fImRPQ2dEBE[1][0][0]->GetBinContent(fImRPQ2dEBE[1][0][0]->GetBin(p,e))
16450 * fImRPQ2dEBE[1][0][0]->GetBinEntries(fImRPQ2dEBE[1][0][0]->GetBin(p,e));
16451 // m_{p}
16452 mp = fReRPQ2dEBE[1][0][0]->GetBinEntries(fReRPQ2dEBE[1][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16453
16454 t = 1; // typeFlag = RP or POI
16455 } // end of if(type == "POI")
16456 else if(type == "RP")
16457 {
16458 // p_{m*n,0} = q_{m*n,0}:
16459 p1n0kRe = q1n0kRe;
16460 p1n0kIm = q1n0kIm;
16461 // m_{p} = m_{q}:
16462 mp = mq;
16463
16464 t = 0; // typeFlag = RP or POI
16465 } // end of if(type == "RP")
16466
16467 // 2'-particle correlation for particular (pt,eta) bin:
16468 Double_t two1n1nPtEta = 0.;
16469 Double_t mWeight2pPrime = 0.; // multiplicity weight for <2'>
16470 if(mp*dMult-mq)
16471 {
16472 two1n1nPtEta = (p1n0kRe*dReQ1n+p1n0kIm*dImQ1n-mq)
16473 / (mp*dMult-mq);
16474 // Determine multiplicity weight:
df23c5ae 16475 if(fMultiplicityWeight->Contains("combinations"))
1268c371 16476 {
16477 mWeight2pPrime = mp*dMult-mq;
df23c5ae 16478 } else if(fMultiplicityWeight->Contains("unit"))
1268c371 16479 {
16480 mWeight2pPrime = 1.;
16481 }
16482 // Fill 2D profile holding <<2'>>:
16483 f2DDiffFlowCorrelationsPro[t][0]->Fill(fPtMin+(p-1)*fPtBinWidth,fEtaMin+(e-1)*fEtaBinWidth,two1n1nPtEta,mWeight2pPrime);
16484 } // end of if(mp*dMult-mq)
16485
16486 // 4'-particle correlation:
16487 Double_t four1n1n1n1nPtEta = 0.;
16488 Double_t mWeight4pPrime = 0.; // multiplicity weight for <4'>
16489 if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16490 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
16491 {
16492 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16493 - q2n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
16494 - 2.*q2n0kIm*dReQ1n*dImQ1n
16495 - p1n0kRe*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
16496 + p1n0kIm*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
16497 - 2.*dMult*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16498 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*mq
16499 + 6.*(q1n0kRe*dReQ1n+q1n0kIm*dImQ1n)
16500 + 1.*(q2n0kRe*dReQ2n+q2n0kIm*dImQ2n)
16501 + 2.*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16502 + 2.*mq*dMult
16503 - 6.*mq)
16504 / ((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16505 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.));
16506 // Determine multiplicity weight:
df23c5ae 16507 if(fMultiplicityWeight->Contains("combinations"))
1268c371 16508 {
16509 mWeight4pPrime = (mp-mq)*dMult*(dMult-1.)*(dMult-2.) + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
df23c5ae 16510 } else if(fMultiplicityWeight->Contains("unit"))
1268c371 16511 {
16512 mWeight4pPrime = 1.;
16513 }
16514 // Fill 2D profile holding <<4'>>:
16515 f2DDiffFlowCorrelationsPro[t][1]->Fill(fPtMin+(p-1)*fPtBinWidth,fEtaMin+(e-1)*fEtaBinWidth,four1n1n1n1nPtEta,mWeight4pPrime);
16516 } // end of if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16517 // +mq*(dMult-1.)*(dMult-2.)*(dMult-3.))
16518 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
16519 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
16520
16521} // end of AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCorrelations(TString type)
16522
e1d101a6 16523//=======================================================================================================================
1268c371 16524
489d5531 16525void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfEventWeights(TString type, TString ptOrEta)
16526{
16527 // Calculate sums of various event weights for reduced correlations.
16528 // (These quantitites are needed in expressions for unbiased estimators relevant for the statistical errors.)
16529
2a98ceb8 16530 Int_t typeFlag = 0;
16531 Int_t ptEtaFlag = 0;
489d5531 16532
16533 if(type == "RP")
16534 {
16535 typeFlag = 0;
16536 } else if(type == "POI")
16537 {
16538 typeFlag = 1;
16539 }
16540
16541 if(ptOrEta == "Pt")
16542 {
16543 ptEtaFlag = 0;
16544 } else if(ptOrEta == "Eta")
16545 {
16546 ptEtaFlag = 1;
16547 }
16548
16549 // shortcuts:
16550 Int_t t = typeFlag;
16551 Int_t pe = ptEtaFlag;
16552
16553 // binning:
16554 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16555 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16556 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16557 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16558
16559 for(Int_t rpq=0;rpq<3;rpq++)
16560 {
16561 for(Int_t m=0;m<4;m++)
16562 {
16563 for(Int_t k=0;k<9;k++)
16564 {
16565 if(!fReRPQ1dEBE[rpq][pe][m][k])
16566 {
16567 cout<<"WARNING: fReRPQ1dEBE[rpq][pe][m][k] is NULL in AFAWQC::CSAPOEWFDF() !!!!"<<endl;
16568 cout<<"pe = "<<pe<<endl;
16569 cout<<"rpq = "<<rpq<<endl;
16570 cout<<"m = "<<m<<endl;
16571 cout<<"k = "<<k<<endl;
16572 exit(0);
16573 }
16574 }
16575 }
16576 }
16577
16578 // multiplicities:
1268c371 16579 Double_t dMult = (*fSpk)(0,0); // total event multiplicity
489d5531 16580 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16581 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16582 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16583
16584 // event weights for reduced correlations:
16585 Double_t dw2 = 0.; // event weight for <2'>
16586 Double_t dw4 = 0.; // event weight for <4'>
16587 //Double_t dw6 = 0.; // event weight for <6'>
16588 //Double_t dw8 = 0.; // event weight for <8'>
16589
16590 // looping over bins:
16591 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16592 {
16593 if(type == "RP")
16594 {
16595 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16596 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16597 } else if(type == "POI")
16598 {
16599 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16600 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16601 }
16602
16603 // event weight for <2'>:
16604 dw2 = mp*dMult-mq;
16605 fDiffFlowSumOfEventWeights[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2);
16606 fDiffFlowSumOfEventWeights[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw2,2.));
16607
16608 // event weight for <4'>:
16609 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16610 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16611 fDiffFlowSumOfEventWeights[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4);
16612 fDiffFlowSumOfEventWeights[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw4,2.));
16613
16614 // event weight for <6'>:
16615 //dw6 = ...;
16616 //fDiffFlowSumOfEventWeights[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6);
16617 //fDiffFlowSumOfEventWeights[t][pe][t][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw6,2.));
16618
16619 // event weight for <8'>:
16620 //dw8 = ...;
16621 //fDiffFlowSumOfEventWeights[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw8);
16622 //fDiffFlowSumOfEventWeights[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw8,2.));
16623 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16624
16625} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfEventWeights()
16626
16627
e1d101a6 16628//=======================================================================================================================
489d5531 16629
16630
16631void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfProductOfEventWeights(TString type, TString ptOrEta)
16632{
16633 // Calculate sum of products of various event weights for both types of correlations (the ones for int. and diff. flow).
16634 // (These quantitites are needed in expressions for unbiased estimators relevant for the statistical errors.)
16635 //
16636 // Important: To fill fDiffFlowSumOfProductOfEventWeights[][][][] use bellow table (i,j) with following constraints:
16637 // 1.) i<j
16638 // 2.) do not store terms which DO NOT include reduced correlations;
16639 // Table:
16640 // [0=<2>,1=<2'>,2=<4>,3=<4'>,4=<6>,5=<6'>,6=<8>,7=<8'>] x [0=<2>,1=<2'>,2=<4>,3=<4'>,4=<6>,5=<6'>,6=<8>,7=<8'>]
16641
2a98ceb8 16642 Int_t typeFlag = 0;
16643 Int_t ptEtaFlag = 0;
489d5531 16644
16645 if(type == "RP")
16646 {
16647 typeFlag = 0;
16648 } else if(type == "POI")
16649 {
16650 typeFlag = 1;
16651 }
16652
16653 if(ptOrEta == "Pt")
16654 {
16655 ptEtaFlag = 0;
16656 } else if(ptOrEta == "Eta")
16657 {
16658 ptEtaFlag = 1;
16659 }
16660
16661 // shortcuts:
16662 Int_t t = typeFlag;
16663 Int_t pe = ptEtaFlag;
16664
16665 // binning:
16666 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16667 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16668 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16669 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16670
16671 // protection:
16672 for(Int_t rpq=0;rpq<3;rpq++)
16673 {
16674 for(Int_t m=0;m<4;m++)
16675 {
16676 for(Int_t k=0;k<9;k++)
16677 {
16678 if(!fReRPQ1dEBE[rpq][pe][m][k])
16679 {
16680 cout<<"WARNING: fReRPQ1dEBE[rpq][pe][m][k] is NULL in AFAWQC::CSAPOEWFDF() !!!!"<<endl;
16681 cout<<"pe = "<<pe<<endl;
16682 cout<<"rpq = "<<rpq<<endl;
16683 cout<<"m = "<<m<<endl;
16684 cout<<"k = "<<k<<endl;
16685 exit(0);
16686 }
16687 }
16688 }
16689 }
16690
16691 // multiplicities:
1268c371 16692 Double_t dMult = (*fSpk)(0,0); // total event multiplicity
489d5531 16693 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16694 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16695 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16696
16697 // event weights for correlations:
16698 Double_t dW2 = dMult*(dMult-1); // event weight for <2>
16699 Double_t dW4 = dMult*(dMult-1)*(dMult-2)*(dMult-3); // event weight for <4>
16700 Double_t dW6 = dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5); // event weight for <6>
16701 Double_t dW8 = dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5)*(dMult-6)*(dMult-7); // event weight for <8>
16702
16703 // event weights for reduced correlations:
16704 Double_t dw2 = 0.; // event weight for <2'>
16705 Double_t dw4 = 0.; // event weight for <4'>
16706 //Double_t dw6 = 0.; // event weight for <6'>
16707 //Double_t dw8 = 0.; // event weight for <8'>
16708
16709 // looping over bins:
16710 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16711 {
16712 if(type == "RP")
16713 {
16714 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16715 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16716 } else if(type == "POI")
16717 {
16718 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16719 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16720 }
16721
16722 // event weight for <2'>:
16723 dw2 = mp*dMult-mq;
16724 fDiffFlowSumOfProductOfEventWeights[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw2); // storing product of even weights for <2> and <2'>
16725 fDiffFlowSumOfProductOfEventWeights[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW4); // storing product of even weights for <4> and <2'>
16726 fDiffFlowSumOfProductOfEventWeights[t][pe][1][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW6); // storing product of even weights for <6> and <2'>
16727 fDiffFlowSumOfProductOfEventWeights[t][pe][1][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW8); // storing product of even weights for <8> and <2'>
16728
16729 // event weight for <4'>:
16730 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16731 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16732 fDiffFlowSumOfProductOfEventWeights[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw4); // storing product of even weights for <2> and <4'>
16733 fDiffFlowSumOfProductOfEventWeights[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw4); // storing product of even weights for <2'> and <4'>
16734 fDiffFlowSumOfProductOfEventWeights[t][pe][2][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw4); // storing product of even weights for <4> and <4'>
16735 fDiffFlowSumOfProductOfEventWeights[t][pe][3][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dW6); // storing product of even weights for <6> and <4'>
16736 fDiffFlowSumOfProductOfEventWeights[t][pe][3][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dW8); // storing product of even weights for <8> and <4'>
16737
16738 // event weight for <6'>:
16739 //dw6 = ...;
16740 //fDiffFlowSumOfProductOfEventWeights[t][pe][0][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw6); // storing product of even weights for <2> and <6'>
16741 //fDiffFlowSumOfProductOfEventWeights[t][pe][1][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw6); // storing product of even weights for <2'> and <6'>
16742 //fDiffFlowSumOfProductOfEventWeights[t][pe][2][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw6); // storing product of even weights for <4> and <6'>
16743 //fDiffFlowSumOfProductOfEventWeights[t][pe][3][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dw6); // storing product of even weights for <4'> and <6'>
16744 //fDiffFlowSumOfProductOfEventWeights[t][pe][4][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW6*dw6); // storing product of even weights for <6> and <6'>
16745 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dW8); // storing product of even weights for <6'> and <8>
16746 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dw8); // storing product of even weights for <6'> and <8'>
16747
16748 // event weight for <8'>:
16749 //dw8 = ...;
16750 //fDiffFlowSumOfProductOfEventWeights[t][pe][0][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw8); // storing product of even weights for <2> and <8'>
16751 //fDiffFlowSumOfProductOfEventWeights[t][pe][1][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw8); // storing product of even weights for <2'> and <8'>
16752 //fDiffFlowSumOfProductOfEventWeights[t][pe][2][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw8); // storing product of even weights for <4> and <8'>
16753 //fDiffFlowSumOfProductOfEventWeights[t][pe][3][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dw8); // storing product of even weights for <4'> and <8'>
16754 //fDiffFlowSumOfProductOfEventWeights[t][pe][4][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW6*dw8); // storing product of even weights for <6> and <8'>
16755 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dw8); // storing product of even weights for <6'> and <8'>
16756 //fDiffFlowSumOfProductOfEventWeights[t][pe][6][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW8*dw8); // storing product of even weights for <8> and <8'>
16757
16758 // Table:
16759 // [0=<2>,1=<2'>,2=<4>,3=<4'>,4=<6>,5=<6'>,6=<8>,7=<8'>] x [0=<2>,1=<2'>,2=<4>,3=<4'>,4=<6>,5=<6'>,6=<8>,7=<8'>]
16760
16761 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16762
16763
16764
16765} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfProductOfEventWeights(TString type, TString ptOrEta)
16766
e1d101a6 16767//=======================================================================================================================
489d5531 16768
489d5531 16769void AliFlowAnalysisWithQCumulants::FinalizeReducedCorrelations(TString type, TString ptOrEta)
16770{
16771 // Transfer profiles into histograms and calculate statistical errors correctly.
16772
1268c371 16773 Int_t t = 0; // RP or POI
16774 Int_t pe = 0; // pt or eta
489d5531 16775
16776 if(type == "RP")
16777 {
1268c371 16778 t = 0;
489d5531 16779 } else if(type == "POI")
16780 {
1268c371 16781 t = 1;
489d5531 16782 }
16783
16784 if(ptOrEta == "Pt")
16785 {
1268c371 16786 pe = 0;
489d5531 16787 } else if(ptOrEta == "Eta")
16788 {
1268c371 16789 pe = 1;
489d5531 16790 }
1268c371 16791
16792 for(Int_t rci=0;rci<4;rci++) // to be improved - moved into the method CheckPointersUsedInFinish()
489d5531 16793 {
16794 if(!fDiffFlowCorrelationsPro[t][pe][rci])
16795 {
16796 cout<<"WARNING: fDiffFlowCorrelationsPro[t][pe][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16797 cout<<"t = "<<t<<endl;
16798 cout<<"pe = "<<pe<<endl;
16799 cout<<"rci = "<<rci<<endl;
16800 exit(0);
16801 }
b40a910e 16802 if(!fDiffFlowSquaredCorrelationsPro[t][pe][rci])
16803 {
16804 cout<<"WARNING: fDiffFlowSquaredCorrelationsPro[t][pe][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16805 cout<<"t = "<<t<<endl;
16806 cout<<"pe = "<<pe<<endl;
16807 cout<<"rci = "<<rci<<endl;
16808 exit(0);
16809 }
489d5531 16810 for(Int_t power=0;power<2;power++)
16811 {
16812 if(!fDiffFlowSumOfEventWeights[t][pe][power][rci])
16813 {
16814 cout<<"WARNING: fDiffFlowSumOfEventWeights[t][pe][power][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16815 cout<<"t = "<<t<<endl;
16816 cout<<"pe = "<<pe<<endl;
16817 cout<<"power = "<<power<<endl;
16818 cout<<"rci = "<<rci<<endl;
16819 exit(0);
16820 }
16821 } // end of for(Int_t power=0;power<2;power++)
16822 } // end of for(Int_t rci=0;rci<4;rci++)
16823
16824 // common:
b40a910e 16825 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 16826 // transfer 1D profile into 1D histogram:
16827 Double_t correlation = 0.;
b40a910e 16828 Double_t squaredCorrelation = 0.;
489d5531 16829 Double_t spread = 0.;
16830 Double_t sumOfWeights = 0.; // sum of weights for particular reduced correlations for particular pt or eta bin
16831 Double_t sumOfSquaredWeights = 0.; // sum of squared weights for particular reduced correlations for particular pt or eta bin
16832 Double_t error = 0.; // error = termA * spread * termB
16833 // termA = (sqrt(sumOfSquaredWeights)/sumOfWeights)
16834 // termB = 1/pow(1-termA^2,0.5)
16835 Double_t termA = 0.;
16836 Double_t termB = 0.;
16837 for(Int_t rci=0;rci<4;rci++) // index of reduced correlation
16838 {
16839 for(Int_t b=1;b<=nBinsPtEta[pe];b++) // number of pt or eta bins
16840 {
b40a910e 16841 if(fDiffFlowCorrelationsPro[t][pe][rci]->GetBinEffectiveEntries(b) < 2 ||
16842 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->GetBinEffectiveEntries(b) < 2)
16843 {
16844 fDiffFlowCorrelationsPro[t][pe][rci]->SetBinError(b,0.);
16845 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->SetBinError(b,0.);
16846 continue; // to be improved - should I ignore results in pt bins with one entry for reduced correlations or not?
16847 }
489d5531 16848 correlation = fDiffFlowCorrelationsPro[t][pe][rci]->GetBinContent(b);
b40a910e 16849 squaredCorrelation = fDiffFlowSquaredCorrelationsPro[t][pe][rci]->GetBinContent(b);
16850 if(squaredCorrelation-correlation*correlation >= 0.)
16851 {
16852 spread = pow(squaredCorrelation-correlation*correlation,0.5);
16853 } else
16854 {
16855 cout<<endl;
16856 cout<<Form(" WARNING: Imaginary 'spread' for rci = %d, pe = %d, bin = %d !!!!",rci,pe,b)<<endl;
16857 cout<<endl;
16858 }
489d5531 16859 sumOfWeights = fDiffFlowSumOfEventWeights[t][pe][0][rci]->GetBinContent(b);
16860 sumOfSquaredWeights = fDiffFlowSumOfEventWeights[t][pe][1][rci]->GetBinContent(b);
1268c371 16861 if(TMath::Abs(sumOfWeights)>0.){termA = (pow(sumOfSquaredWeights,0.5)/sumOfWeights);}
16862 if(1.-pow(termA,2.)>0.){termB = 1./pow(1.-pow(termA,2.),0.5);}
489d5531 16863 error = termA*spread*termB; // final error (unbiased estimator for standard deviation)
16864 fDiffFlowCorrelationsHist[t][pe][rci]->SetBinContent(b,correlation);
16865 fDiffFlowCorrelationsHist[t][pe][rci]->SetBinError(b,error);
16866 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16867 } // end of for(Int_t rci=0;rci<4;rci++)
16868
16869} // end of void AliFlowAnalysisWithQCumulants::FinalizeReducedCorrelations(TString type, TString ptOrEta)
16870
e1d101a6 16871//=======================================================================================================================
489d5531 16872
489d5531 16873void AliFlowAnalysisWithQCumulants::CalculateDiffFlowProductOfCorrelations(TString type, TString ptOrEta)
16874{
16875 // store products: <2><2'>, <2><4'>, <2><6'>, <2><8'>, <2'><4>,
16876 // <2'><4'>, <2'><6>, <2'><6'>, <2'><8>, <2'><8'>,
16877 // <4><4'>, <4><6'>, <4><8'>, <4'><6>, <4'><6'>,
16878 // <4'><8>, <4'><8'>, <6><6'>, <6><8'>, <6'><8>,
16879 // <6'><8'>, <8><8'>.
16880
2a98ceb8 16881 Int_t typeFlag = 0;
16882 Int_t ptEtaFlag = 0;
489d5531 16883
16884 if(type == "RP")
16885 {
16886 typeFlag = 0;
16887 } else if(type == "POI")
16888 {
16889 typeFlag = 1;
16890 }
16891
16892 if(ptOrEta == "Pt")
16893 {
16894 ptEtaFlag = 0;
16895 } else if(ptOrEta == "Eta")
16896 {
16897 ptEtaFlag = 1;
16898 }
16899
16900 // shortcuts:
16901 Int_t t = typeFlag;
16902 Int_t pe = ptEtaFlag;
16903
16904 // common:
16905 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16906 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16907 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16908
16909 // protections // to be improved (add protection for all pointers in this method)
16910 if(!fIntFlowCorrelationsEBE)
16911 {
16912 cout<<"WARNING: fIntFlowCorrelationsEBE is NULL in AFAWQC::CDFPOC() !!!!"<<endl;
16913 exit(0);
16914 }
16915
16916 /*
1268c371 16917 Double_t dMult = (*fSpk)(0,0); // multiplicity (number of particles used to determine the reaction plane)
489d5531 16918 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16919 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16920 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16921 */
16922
16923 // e-b-e correlations:
16924 Double_t twoEBE = fIntFlowCorrelationsEBE->GetBinContent(1); // <2>
16925 Double_t fourEBE = fIntFlowCorrelationsEBE->GetBinContent(2); // <4>
16926 Double_t sixEBE = fIntFlowCorrelationsEBE->GetBinContent(3); // <6>
16927 Double_t eightEBE = fIntFlowCorrelationsEBE->GetBinContent(4); // <8>
16928
16929 // event weights for correlations:
16930 Double_t dW2 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1); // event weight for <2>
16931 Double_t dW4 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2); // event weight for <4>
16932 Double_t dW6 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(3); // event weight for <6>
16933 Double_t dW8 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(4); // event weight for <8>
16934
16935 // e-b-e reduced correlations:
16936 Double_t twoReducedEBE = 0.; // <2'>
16937 Double_t fourReducedEBE = 0.; // <4'>
ea239361 16938 //Double_t sixReducedEBE = 0.; // <6'>
16939 //Double_t eightReducedEBE = 0.; // <8'>
489d5531 16940
16941 // event weights for reduced correlations:
16942 Double_t dw2 = 0.; // event weight for <2'>
16943 Double_t dw4 = 0.; // event weight for <4'>
16944 //Double_t dw6 = 0.; // event weight for <6'>
16945 //Double_t dw8 = 0.; // event weight for <8'>
16946
16947 // looping over bins:
16948 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16949 {
16950 // e-b-e reduced correlations:
16951 twoReducedEBE = fDiffFlowCorrelationsEBE[t][pe][0]->GetBinContent(b);
16952 fourReducedEBE = fDiffFlowCorrelationsEBE[t][pe][1]->GetBinContent(b);
ea239361 16953 //sixReducedEBE = fDiffFlowCorrelationsEBE[t][pe][2]->GetBinContent(b);
16954 //eightReducedEBE = fDiffFlowCorrelationsEBE[t][pe][3]->GetBinContent(b);
489d5531 16955
16956 /*
16957 // to be improved (I should not do this here again)
16958 if(type == "RP")
16959 {
16960 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16961 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16962 } else if(type == "POI")
16963 {
16964 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16965 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16966 }
16967
16968 // event weights for reduced correlations:
16969 dw2 = mp*dMult-mq; // weight for <2'>
16970 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16971 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.); // weight for <4'>
16972 //dw6 = ...
16973 //dw8 = ...
16974
16975 */
16976
16977 dw2 = fDiffFlowEventWeightsForCorrelationsEBE[t][pe][0]->GetBinContent(b);
16978 dw4 = fDiffFlowEventWeightsForCorrelationsEBE[t][pe][1]->GetBinContent(b);
16979
16980 // storing all products:
16981 fDiffFlowProductOfCorrelationsPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*twoReducedEBE,dW2*dw2); // storing <2><2'>
16982 fDiffFlowProductOfCorrelationsPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*twoReducedEBE,dW4*dw2); // storing <4><2'>
16983 fDiffFlowProductOfCorrelationsPro[t][pe][1][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*twoReducedEBE,dW6*dw2); // storing <6><2'>
16984 fDiffFlowProductOfCorrelationsPro[t][pe][1][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*twoReducedEBE,dW8*dw2); // storing <8><2'>
16985
16986 // event weight for <4'>:
16987 fDiffFlowProductOfCorrelationsPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*fourReducedEBE,dW2*dw4); // storing <2><4'>
16988 fDiffFlowProductOfCorrelationsPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*fourReducedEBE,dw2*dw4); // storing <2'><4'>
16989 fDiffFlowProductOfCorrelationsPro[t][pe][2][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*fourReducedEBE,dW4*dw4); // storing <4><4'>
16990 fDiffFlowProductOfCorrelationsPro[t][pe][3][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*fourReducedEBE,dW6*dw4); // storing <6><4'>
16991 fDiffFlowProductOfCorrelationsPro[t][pe][3][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*fourReducedEBE,dW8*dw4); // storing <8><4'>
16992
16993 // event weight for <6'>:
16994 //dw6 = ...;
16995 //fDiffFlowProductOfCorrelationsPro[t][pe][0][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*sixReducedEBE,dW2*dw6); // storing <2><6'>
16996 //fDiffFlowProductOfCorrelationsPro[t][pe][1][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*sixReducedEBE,dw2*dw6); // storing <2'><6'>
16997 //fDiffFlowProductOfCorrelationsPro[t][pe][2][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*sixReducedEBE,dW4*dw6); // storing <4><6'>
16998 //fDiffFlowProductOfCorrelationsPro[t][pe][3][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourReducedEBE*sixReducedEBE,dw4*dw6); // storing <4'><6'>
16999 //fDiffFlowProductOfCorrelationsPro[t][pe][4][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*sixReducedEBE,dW6*dw6); // storing <6><6'>
17000 //fDiffFlowProductOfCorrelationsPro[t][pe][5][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightEBE,dw6*dW8); // storing <6'><8>
17001 //fDiffFlowProductOfCorrelationsPro[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightReducedEBE,dw6*dw8); // storing <6'><8'>
17002
17003 // event weight for <8'>:
17004 //dw8 = ...;
17005 //fDiffFlowProductOfCorrelationsPro[t][pe][0][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*eightReducedEBE,dW2*dw8); // storing <2><8'>
17006 //fDiffFlowProductOfCorrelationsPro[t][pe][1][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*eightReducedEBE,dw2*dw8); // storing <2'><8'>
17007 //fDiffFlowProductOfCorrelationsPro[t][pe][2][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*eightReducedEBE,dW4*dw8); // storing <4><8'>
17008 //fDiffFlowProductOfCorrelationsPro[t][pe][3][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourReducedEBE*eightReducedEBE,dw4*dw8); // storing <4'><8'>
17009 //fDiffFlowProductOfCorrelationsPro[t][pe][4][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*eightReducedEBE,dW6*dw8); // storing <6><8'>
17010 //fDiffFlowProductOfCorrelationsPro[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightReducedEBE,dw6*dw8); // storing <6'><8'>
17011 //fDiffFlowProductOfCorrelationsPro[t][pe][6][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*eightReducedEBE,dW8*dw8); // storing <8><8'>
17012 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++
17013
17014} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowProductOfCorrelations(TString type, TString ptOrEta)
17015
e1d101a6 17016//=======================================================================================================================
489d5531 17017
489d5531 17018void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCovariances(TString type, TString ptOrEta) // to be improved (reimplemented)
17019{
17020 // a) Calculate unbiased estimators Cov(<2>,<2'>), Cov(<2>,<4'>), Cov(<4>,<2'>), Cov(<4>,<4'>) and Cov(<2'>,<4'>)
17021 // for covariances V(<2>,<2'>), V(<2>,<4'>), V(<4>,<2'>), V(<4>,<4'>) and V(<2'>,<4'>).
17022 // b) Store in histogram fDiffFlowCovariances[t][pe][index] for instance the following:
17023 //
17024 // Cov(<2>,<2'>) * (sum_{i=1}^{N} w_{<2>}_i w_{<2'>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<2'>}_j)]
17025 //
17026 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<2'>} is event weight for <2'>.
17027 // c) Binning of fDiffFlowCovariances[t][pe][index] is organized as follows:
17028 //
17029 // 1st bin: Cov(<2>,<2'>) * (sum_{i=1}^{N} w_{<2>}_i w_{<2'>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<2'>}_j)]
17030 // 2nd bin: Cov(<2>,<4'>) * (sum_{i=1}^{N} w_{<2>}_i w_{<4'>}_i )/[(sum_{i=1}^{N} w_{<2>}_i) * (sum_{j=1}^{N} w_{<4'>}_j)]
17031 // 3rd bin: Cov(<4>,<2'>) * (sum_{i=1}^{N} w_{<4>}_i w_{<2'>}_i )/[(sum_{i=1}^{N} w_{<4>}_i) * (sum_{j=1}^{N} w_{<2'>}_j)]
17032 // 4th bin: Cov(<4>,<4'>) * (sum_{i=1}^{N} w_{<4>}_i w_{<4'>}_i )/[(sum_{i=1}^{N} w_{<4>}_i) * (sum_{j=1}^{N} w_{<4'>}_j)]
17033 // 5th bin: Cov(<2'>,<4'>) * (sum_{i=1}^{N} w_{<2'>}_i w_{<4'>}_i )/[(sum_{i=1}^{N} w_{<2'>}_i) * (sum_{j=1}^{N} w_{<4'>}_j)]
17034 // ...
17035
2a98ceb8 17036 Int_t typeFlag = 0;
17037 Int_t ptEtaFlag = 0;
489d5531 17038
17039 if(type == "RP")
17040 {
17041 typeFlag = 0;
17042 } else if(type == "POI")
17043 {
17044 typeFlag = 1;
17045 }
17046
17047 if(ptOrEta == "Pt")
17048 {
17049 ptEtaFlag = 0;
17050 } else if(ptOrEta == "Eta")
17051 {
17052 ptEtaFlag = 1;
17053 }
17054
17055 // shortcuts:
17056 Int_t t = typeFlag;
17057 Int_t pe = ptEtaFlag;
17058
17059 // common:
17060 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
17061 //Double_t minPtEta[2] = {fPtMin,fEtaMin};
17062 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
17063 //Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
17064
17065 // average correlations:
17066 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
17067 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
17068 //Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
17069 //Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
17070
17071 // sum of weights for correlation:
17072 Double_t sumOfWeightsForTwo = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // sum_{i=1}^{N} w_{<2>}
17073 Double_t sumOfWeightsForFour = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // sum_{i=1}^{N} w_{<4>}
17074 //Double_t sumOfWeightsForSix = fIntFlowSumOfEventWeights[0]->GetBinContent(3); // sum_{i=1}^{N} w_{<6>}
17075 //Double_t sumOfWeightsForEight = fIntFlowSumOfEventWeights[0]->GetBinContent(4); // sum_{i=1}^{N} w_{<8>}
17076
17077 // average reduced correlations:
17078 Double_t twoReduced = 0.; // <<2'>>
17079 Double_t fourReduced = 0.; // <<4'>>
17080 //Double_t sixReduced = 0.; // <<6'>>
17081 //Double_t eightReduced = 0.; // <<8'>>
17082
17083 // sum of weights for reduced correlation:
17084 Double_t sumOfWeightsForTwoReduced = 0.; // sum_{i=1}^{N} w_{<2'>}
17085 Double_t sumOfWeightsForFourReduced = 0.; // sum_{i=1}^{N} w_{<4'>}
17086 //Double_t sumOfWeightsForSixReduced = 0.; // sum_{i=1}^{N} w_{<6'>}
17087 //Double_t sumOfWeightsForEightReduced = 0.; // sum_{i=1}^{N} w_{<8'>}
17088
17089 // product of weights for reduced correlation:
17090 Double_t productOfWeightsForTwoTwoReduced = 0.; // sum_{i=1}^{N} w_{<2>}w_{<2'>}
17091 Double_t productOfWeightsForTwoFourReduced = 0.; // sum_{i=1}^{N} w_{<2>}w_{<4'>}
17092 Double_t productOfWeightsForFourTwoReduced = 0.; // sum_{i=1}^{N} w_{<4>}w_{<2'>}
17093 Double_t productOfWeightsForFourFourReduced = 0.; // sum_{i=1}^{N} w_{<4>}w_{<4'>}
17094 Double_t productOfWeightsForTwoReducedFourReduced = 0.; // sum_{i=1}^{N} w_{<2'>}w_{<4'>}
17095 // ...
17096
17097 // products for differential flow:
17098 Double_t twoTwoReduced = 0; // <<2><2'>>
17099 Double_t twoFourReduced = 0; // <<2><4'>>
17100 Double_t fourTwoReduced = 0; // <<4><2'>>
17101 Double_t fourFourReduced = 0; // <<4><4'>>
17102 Double_t twoReducedFourReduced = 0; // <<2'><4'>>
17103
17104 // denominators in the expressions for the unbiased estimators for covariances:
17105 // denominator = 1 - term1/(term2*term3)
17106 // prefactor = term1/(term2*term3)
17107 Double_t denominator = 0.;
17108 Double_t prefactor = 0.;
17109 Double_t term1 = 0.;
17110 Double_t term2 = 0.;
17111 Double_t term3 = 0.;
17112
17113 // unbiased estimators for covariances for differential flow:
17114 Double_t covTwoTwoReduced = 0.; // Cov(<2>,<2'>)
17115 Double_t wCovTwoTwoReduced = 0.; // Cov(<2>,<2'>) * prefactor(w_{<2>},w_{<2'>})
17116 Double_t covTwoFourReduced = 0.; // Cov(<2>,<4'>)
17117 Double_t wCovTwoFourReduced = 0.; // Cov(<2>,<4'>) * prefactor(w_{<2>},w_{<4'>})
17118 Double_t covFourTwoReduced = 0.; // Cov(<4>,<2'>)
17119 Double_t wCovFourTwoReduced = 0.; // Cov(<4>,<2'>) * prefactor(w_{<4>},w_{<2'>})
17120 Double_t covFourFourReduced = 0.; // Cov(<4>,<4'>)
17121 Double_t wCovFourFourReduced = 0.; // Cov(<4>,<4'>) * prefactor(w_{<4>},w_{<4'>})
17122 Double_t covTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>)
17123 Double_t wCovTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>) * prefactor(w_{<2'>},w_{<4'>})
17124
17125 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17126 {
17127 // average reduced corelations:
17128 twoReduced = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b);
17129 fourReduced = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b);
17130 // average products:
17131 twoTwoReduced = fDiffFlowProductOfCorrelationsPro[t][pe][0][1]->GetBinContent(b);
17132 twoFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][0][3]->GetBinContent(b);
17133 fourTwoReduced = fDiffFlowProductOfCorrelationsPro[t][pe][1][2]->GetBinContent(b);
17134 fourFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][2][3]->GetBinContent(b);
17135 twoReducedFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][1][3]->GetBinContent(b);
17136 // sum of weights for reduced correlations:
17137 sumOfWeightsForTwoReduced = fDiffFlowSumOfEventWeights[t][pe][0][0]->GetBinContent(b);
17138 sumOfWeightsForFourReduced = fDiffFlowSumOfEventWeights[t][pe][0][1]->GetBinContent(b);
17139 // products of weights for correlations:
17140 productOfWeightsForTwoTwoReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][0][1]->GetBinContent(b);
17141 productOfWeightsForTwoFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][0][3]->GetBinContent(b);
17142 productOfWeightsForFourTwoReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][1][2]->GetBinContent(b);
17143 productOfWeightsForFourFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][2][3]->GetBinContent(b);
17144 productOfWeightsForTwoReducedFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][1][3]->GetBinContent(b);
17145 // denominator for the unbiased estimator for covariances: 1 - term1/(term2*term3)
17146 // prefactor (multiplies Cov's) = term1/(term2*term3)
17147 // <2>,<2'>:
17148 term1 = productOfWeightsForTwoTwoReduced;
17149 term2 = sumOfWeightsForTwo;
17150 term3 = sumOfWeightsForTwoReduced;
17151 if(term2*term3>0.)
17152 {
17153 denominator = 1.-term1/(term2*term3);
17154 prefactor = term1/(term2*term3);
1268c371 17155 if(TMath::Abs(denominator)>1.e-6)
489d5531 17156 {
17157 covTwoTwoReduced = (twoTwoReduced-two*twoReduced)/denominator;
17158 wCovTwoTwoReduced = covTwoTwoReduced*prefactor;
17159 fDiffFlowCovariances[t][pe][0]->SetBinContent(b,wCovTwoTwoReduced);
17160 }
17161 }
17162 // <2>,<4'>:
17163 term1 = productOfWeightsForTwoFourReduced;
17164 term2 = sumOfWeightsForTwo;
17165 term3 = sumOfWeightsForFourReduced;
17166 if(term2*term3>0.)
17167 {
17168 denominator = 1.-term1/(term2*term3);
17169 prefactor = term1/(term2*term3);
1268c371 17170 if(TMath::Abs(denominator)>1.e-6)
489d5531 17171 {
17172 covTwoFourReduced = (twoFourReduced-two*fourReduced)/denominator;
17173 wCovTwoFourReduced = covTwoFourReduced*prefactor;
17174 fDiffFlowCovariances[t][pe][1]->SetBinContent(b,wCovTwoFourReduced);
17175 }
17176 }
17177 // <4>,<2'>:
17178 term1 = productOfWeightsForFourTwoReduced;
17179 term2 = sumOfWeightsForFour;
17180 term3 = sumOfWeightsForTwoReduced;
17181 if(term2*term3>0.)
17182 {
17183 denominator = 1.-term1/(term2*term3);
17184 prefactor = term1/(term2*term3);
1268c371 17185 if(TMath::Abs(denominator)>1.e-6)
489d5531 17186 {
17187 covFourTwoReduced = (fourTwoReduced-four*twoReduced)/denominator;
17188 wCovFourTwoReduced = covFourTwoReduced*prefactor;
17189 fDiffFlowCovariances[t][pe][2]->SetBinContent(b,wCovFourTwoReduced);
17190 }
17191 }
17192 // <4>,<4'>:
17193 term1 = productOfWeightsForFourFourReduced;
17194 term2 = sumOfWeightsForFour;
17195 term3 = sumOfWeightsForFourReduced;
17196 if(term2*term3>0.)
17197 {
17198 denominator = 1.-term1/(term2*term3);
17199 prefactor = term1/(term2*term3);
1268c371 17200 if(TMath::Abs(denominator)>1.e-6)
489d5531 17201 {
17202 covFourFourReduced = (fourFourReduced-four*fourReduced)/denominator;
17203 wCovFourFourReduced = covFourFourReduced*prefactor;
17204 fDiffFlowCovariances[t][pe][3]->SetBinContent(b,wCovFourFourReduced);
17205 }
17206 }
17207 // <2'>,<4'>:
17208 term1 = productOfWeightsForTwoReducedFourReduced;
17209 term2 = sumOfWeightsForTwoReduced;
17210 term3 = sumOfWeightsForFourReduced;
17211 if(term2*term3>0.)
17212 {
17213 denominator = 1.-term1/(term2*term3);
17214 prefactor = term1/(term2*term3);
1268c371 17215 if(TMath::Abs(denominator)>1.e-6)
489d5531 17216 {
17217 covTwoReducedFourReduced = (twoReducedFourReduced-twoReduced*fourReduced)/denominator;
17218 wCovTwoReducedFourReduced = covTwoReducedFourReduced*prefactor;
17219 fDiffFlowCovariances[t][pe][4]->SetBinContent(b,wCovTwoReducedFourReduced);
17220 }
17221 }
17222 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17223
17224} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCovariances(TString type, TString ptOrEta)
17225
e1d101a6 17226//=======================================================================================================================
489d5531 17227
489d5531 17228void AliFlowAnalysisWithQCumulants::CalculateDiffFlow(TString type, TString ptOrEta)
17229{
1268c371 17230 // Calculate final results for differential flow.
489d5531 17231
1268c371 17232 // REMARK: Differential flow calculated in this method is NOT corrected for non-uniform acceptance.
17233 // This correction, if enabled via setter SetApplyCorrectionForNUA(Bool_t), is applied in the method
17234 // CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta)
17235
17236 Int_t t = 0; // RP or POI
17237 Int_t pe = 0; // pt or eta
489d5531 17238
17239 if(type == "RP")
17240 {
1268c371 17241 t = 0;
489d5531 17242 } else if(type == "POI")
17243 {
1268c371 17244 t = 1;
489d5531 17245 }
17246
17247 if(ptOrEta == "Pt")
17248 {
1268c371 17249 pe = 0;
489d5531 17250 } else if(ptOrEta == "Eta")
17251 {
1268c371 17252 pe = 1;
489d5531 17253 }
1268c371 17254
17255 // Common:
489d5531 17256 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
1268c371 17257 // Correlations:
489d5531 17258 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
1268c371 17259 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
17260 // Statistical errors of correlations:
489d5531 17261 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1);
17262 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2);
1268c371 17263 // Reduced correlations:
489d5531 17264 Double_t twoReduced = 0.; // <<2'>>
17265 Double_t fourReduced = 0.; // <<4'>>
1268c371 17266 // Statistical errors of reduced correlations:
489d5531 17267 Double_t twoReducedError = 0.;
17268 Double_t fourReducedError = 0.;
1268c371 17269 // Covariances:
8e1cefdd 17270 Double_t wCovTwoFour = 0.; // Cov(<2>,<4>) * prefactor(<2>,<4>)
17271 if(!fForgetAboutCovariances)
17272 {
17273 wCovTwoFour = fIntFlowCovariances->GetBinContent(1); // Cov(<2>,<4>) * prefactor(<2>,<4>)
17274 }
489d5531 17275 Double_t wCovTwoTwoReduced = 0.; // Cov(<2>,<2'>) * prefactor(<2>,<2'>)
17276 Double_t wCovTwoFourReduced = 0.; // Cov(<2>,<4'>) * prefactor(<2>,<4'>)
17277 Double_t wCovFourTwoReduced = 0.; // Cov(<4>,<2'>) * prefactor(<4>,<2'>)
17278 Double_t wCovFourFourReduced = 0.; // Cov(<4>,<4'>) * prefactor(<4>,<4'>)
17279 Double_t wCovTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>) * prefactor(<2'>,<4'>)
1268c371 17280 // Differential flow:
489d5531 17281 Double_t v2Prime = 0.; // v'{2}
17282 Double_t v4Prime = 0.; // v'{4}
1268c371 17283 // Statistical error of differential flow:
489d5531 17284 Double_t v2PrimeError = 0.;
17285 Double_t v4PrimeError = 0.;
1268c371 17286 // Squared statistical error of differential flow:
489d5531 17287 Double_t v2PrimeErrorSquared = 0.;
17288 Double_t v4PrimeErrorSquared = 0.;
1268c371 17289 // Loop over pt or eta bins:
489d5531 17290 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17291 {
1268c371 17292 // Reduced correlations and statistical errors:
489d5531 17293 twoReduced = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b);
17294 twoReducedError = fDiffFlowCorrelationsHist[t][pe][0]->GetBinError(b);
17295 fourReduced = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b);
17296 fourReducedError = fDiffFlowCorrelationsHist[t][pe][1]->GetBinError(b);
1268c371 17297 // Covariances:
8e1cefdd 17298 if(!fForgetAboutCovariances)
17299 {
17300 wCovTwoTwoReduced = fDiffFlowCovariances[t][pe][0]->GetBinContent(b);
17301 wCovTwoFourReduced = fDiffFlowCovariances[t][pe][1]->GetBinContent(b);
17302 wCovFourTwoReduced = fDiffFlowCovariances[t][pe][2]->GetBinContent(b);
17303 wCovFourFourReduced = fDiffFlowCovariances[t][pe][3]->GetBinContent(b);
17304 wCovTwoReducedFourReduced = fDiffFlowCovariances[t][pe][4]->GetBinContent(b);
17305 }
1268c371 17306 // Differential flow:
489d5531 17307 // v'{2}:
17308 if(two>0.)
17309 {
17310 v2Prime = twoReduced/pow(two,0.5);
1268c371 17311 v2PrimeErrorSquared = (1./4.)*pow(two,-3.)*(pow(twoReduced,2.)*pow(twoError,2.)
17312 + 4.*pow(two,2.)*pow(twoReducedError,2.)
17313 - 4.*two*twoReduced*wCovTwoTwoReduced);
17314 if(v2PrimeErrorSquared>0.){v2PrimeError = pow(v2PrimeErrorSquared,0.5);}
17315 if(TMath::Abs(v2Prime)>0.)
17316 {
17317 fDiffFlow[t][pe][0]->SetBinContent(b,v2Prime);
17318 fDiffFlow[t][pe][0]->SetBinError(b,v2PrimeError);
17319 }
17320 } // end of if(two>0.)
489d5531 17321 // differential flow:
17322 // v'{4}
17323 if(2.*pow(two,2.)-four > 0.)
17324 {
17325 v4Prime = (2.*two*twoReduced-fourReduced)/pow(2.*pow(two,2.)-four,3./4.);
1268c371 17326 v4PrimeErrorSquared = pow(2.*pow(two,2.)-four,-7./2.)
17327 * (pow(2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced,2.)*pow(twoError,2.)
17328 + (9./16.)*pow(2.*two*twoReduced-fourReduced,2.)*pow(fourError,2.)
17329 + 4.*pow(two,2.)*pow(2.*pow(two,2.)-four,2.)*pow(twoReducedError,2.)
17330 + pow(2.*pow(two,2.)-four,2.)*pow(fourReducedError,2.)
17331 - (3./2.)*(2.*two*twoReduced-fourReduced)
17332 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoFour
17333 - 4.*two*(2.*pow(two,2.)-four)
17334 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoTwoReduced
17335 + 2.*(2.*pow(two,2.)-four)
17336 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoFourReduced
17337 + 3.*two*(2.*pow(two,2.)-four)*(2.*two*twoReduced-fourReduced)*wCovFourTwoReduced
17338 - (3./2.)*(2.*pow(two,2.)-four)*(2.*two*twoReduced-fourReduced)*wCovFourFourReduced
17339 - 4.*two*pow(2.*pow(two,2.)-four,2.)*wCovTwoReducedFourReduced);
17340 if(v4PrimeErrorSquared>0.){v4PrimeError = pow(v4PrimeErrorSquared,0.5);}
17341 if(TMath::Abs(v4Prime)>0.)
17342 {
17343 fDiffFlow[t][pe][1]->SetBinContent(b,v4Prime);
17344 fDiffFlow[t][pe][1]->SetBinError(b,v4PrimeError);
17345 }
17346 } // end of if(2.*pow(two,2.)-four > 0.)
489d5531 17347 } // end of for(Int_t b=1;b<=fnBinsPtEta[pe];b++)
1268c371 17348
17349} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlow(TString type, Bool_t useParticleWeights)
17350
e1d101a6 17351//=======================================================================================================================
1268c371 17352
17353void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlow(TString type)
17354{
17355 // Calculate final results for 2D diferential flow.
17356
17357 // to be improved - check pointers used in this method
17358
17359 Int_t t = 0; // RP or POI
17360
17361 if(type == "RP")
17362 {
17363 t = 0;
17364 } else if(type == "POI")
17365 {
17366 t = 1;
17367 }
489d5531 17368
1268c371 17369 // Differential flow:
17370 Double_t v2Prime = 0.; // v'{2}
17371 Double_t v4Prime = 0.; // v'{4}
17372 // Differential cumulants:
17373 Double_t qc2Prime = 0.; // QC{2'}
17374 Double_t qc4Prime = 0.; // QC{4'}
17375 // Looping over all (pt,eta) bins and calculating differential flow:
17376 for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 17377 {
1268c371 17378 for(Int_t e=1;e<=fnBinsEta;e++)
489d5531 17379 {
1268c371 17380 // QC{2'}:
17381 qc2Prime = f2DDiffFlowCumulants[t][0]->GetBinContent(f2DDiffFlowCumulants[t][0]->GetBin(p,e));
17382 if(qc2Prime>=0.)
17383 {
17384 v2Prime = pow(qc2Prime,0.5);
17385 f2DDiffFlow[t][0]->SetBinContent(f2DDiffFlow[t][0]->GetBin(p,e),v2Prime);
17386 }
17387 // QC{4'}:
17388 qc4Prime = f2DDiffFlowCumulants[t][1]->GetBinContent(f2DDiffFlowCumulants[t][1]->GetBin(p,e));
17389 if(qc4Prime<=0.)
17390 {
17391 v4Prime = pow(-1.*qc4Prime,1./4.);
17392 f2DDiffFlow[t][1]->SetBinContent(f2DDiffFlow[t][1]->GetBin(p,e),v4Prime);
17393 }
17394 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
17395 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
17396
17397} // end of void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlow(TString type)
489d5531 17398
e1d101a6 17399//=======================================================================================================================
489d5531 17400
489d5531 17401void AliFlowAnalysisWithQCumulants::StoreIntFlowFlags()
17402{
17403 // a) Store all flags for integrated flow in profile fIntFlowFlags.
17404
17405 if(!fIntFlowFlags)
17406 {
17407 cout<<"WARNING: fIntFlowFlags is NULL in AFAWQC::SFFIF() !!!!"<<endl;
17408 exit(0);
17409 }
17410
17411 // particle weights used or not:
403e3389 17412 fIntFlowFlags->Fill(0.5,(Int_t)fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights);
489d5531 17413 // which event weights were used:
df23c5ae 17414 if(fMultiplicityWeight->Contains("combinations"))
489d5531 17415 {
17416 fIntFlowFlags->Fill(1.5,0); // 0 = "combinations" (default)
df23c5ae 17417 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 17418 {
17419 fIntFlowFlags->Fill(1.5,1); // 1 = "unit"
df23c5ae 17420 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 17421 {
17422 fIntFlowFlags->Fill(1.5,2); // 2 = "multiplicity"
17423 }
489d5531 17424 fIntFlowFlags->Fill(2.5,(Int_t)fApplyCorrectionForNUA);
17425 fIntFlowFlags->Fill(3.5,(Int_t)fPrintFinalResults[0]);
17426 fIntFlowFlags->Fill(4.5,(Int_t)fPrintFinalResults[1]);
17427 fIntFlowFlags->Fill(5.5,(Int_t)fPrintFinalResults[2]);
b3dacf6b 17428 fIntFlowFlags->Fill(6.5,(Int_t)fPrintFinalResults[3]);
17429 fIntFlowFlags->Fill(7.5,(Int_t)fApplyCorrectionForNUAVsM);
b77b6434 17430 fIntFlowFlags->Fill(8.5,(Int_t)fPropagateErrorAlsoFromNIT);
b3dacf6b 17431 fIntFlowFlags->Fill(9.5,(Int_t)fCalculateCumulantsVsM);
0dd3b008 17432 fIntFlowFlags->Fill(10.5,(Int_t)fMinimumBiasReferenceFlow);
8e1cefdd 17433 fIntFlowFlags->Fill(11.5,(Int_t)fForgetAboutCovariances);
e5834fcb 17434 fIntFlowFlags->Fill(12.5,(Int_t)fStorePhiDistributionForOneEvent);
dd442cd2 17435 fIntFlowFlags->Fill(13.5,(Int_t)fFillMultipleControlHistograms);
3435cacb 17436 fIntFlowFlags->Fill(14.5,(Int_t)fCalculateAllCorrelationsVsM);
df23c5ae 17437 // which multiplicity was used:
17438 if(fMultiplicityIs==AliFlowCommonConstants::kRP) // # of Reference Particles
17439 {
17440 fIntFlowFlags->Fill(15.5,0); // 0 = # of Reference Particles
17441 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
17442 {
17443 fIntFlowFlags->Fill(15.5,1); // 1 = ref. mult. from ESD
17444 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
17445 {
17446 fIntFlowFlags->Fill(15.5,2); // 2 = # of Particles of Interest
17447 }
d9e6d8bb 17448 fIntFlowFlags->Fill(16.5,(Int_t)fExactNoRPs);
df23c5ae 17449
489d5531 17450} // end of void AliFlowAnalysisWithQCumulants::StoreIntFlowFlags()
17451
e1d101a6 17452//=======================================================================================================================
489d5531 17453
489d5531 17454void AliFlowAnalysisWithQCumulants::StoreDiffFlowFlags()
17455{
17456 // Store all flags for differential flow in the profile fDiffFlowFlags.
17457
17458 if(!fDiffFlowFlags)
17459 {
1268c371 17460 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::SDFF() !!!!\n\n");
489d5531 17461 exit(0);
17462 }
17463
1268c371 17464 fDiffFlowFlags->Fill(0.5,fCalculateDiffFlow); // calculate differential flow
403e3389 17465 fDiffFlowFlags->Fill(1.5,fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights); // particle weights used or not?
1268c371 17466 //fDiffFlowFlags->Fill(2.5,""); // which event weight was used? ("combinations", "unit" or "multiplicity") to be improved - finalized
17467 fDiffFlowFlags->Fill(3.5,fApplyCorrectionForNUA); // corrected for non-uniform acceptance or not
17468 fDiffFlowFlags->Fill(4.5,fCalculate2DDiffFlow); // calculate also 2D differential flow vs (pt,eta)
62e36168 17469 fDiffFlowFlags->Fill(5.5,fCalculateDiffFlowVsEta); // if you set kFALSE only differential flow vs pt is calculated
1268c371 17470
489d5531 17471} // end of void AliFlowAnalysisWithQCumulants::StoreDiffFlowFlags()
17472
e1d101a6 17473//=======================================================================================================================
17474
17475void AliFlowAnalysisWithQCumulants::StoreMixedHarmonicsFlags()
17476{
17477 // Store all flags for mixed harmonics in profile fMixedHarmonicsFlags.
17478
17479 if(!fMixedHarmonicsFlags)
17480 {
17481 cout<<"WARNING: fMixedHarmonicsFlags is NULL in AFAWQC::SMHF() !!!!"<<endl;
17482 exit(0);
17483 }
17484
17485 fMixedHarmonicsFlags->Fill(0.5,(Int_t)fCalculateMixedHarmonics);
17486 fMixedHarmonicsFlags->Fill(1.5,(Int_t)fHarmonic);
17487 fMixedHarmonicsFlags->Fill(2.5,(Int_t)fCalculateMixedHarmonicsVsM);
17488 // Which multiplicity weight was used?:
17489
df23c5ae 17490 if(fMultiplicityWeight->Contains("combinations"))
e1d101a6 17491 {
17492 fMixedHarmonicsFlags->Fill(3.5,0); // 0 = "combinations" (default)
df23c5ae 17493 } else if(fMultiplicityWeight->Contains("unit"))
e1d101a6 17494 {
17495 fMixedHarmonicsFlags->Fill(3.5,1); // 1 = "unit"
df23c5ae 17496 } else if(fMultiplicityWeight->Contains("multiplicity"))
e1d101a6 17497 {
17498 fMixedHarmonicsFlags->Fill(3.5,2); // 2 = "multiplicity"
17499 }
17500
17501} // end of void AliFlowAnalysisWithQCumulants::StoreMixedHarmonicsFlags()
17502
17503//=======================================================================================================================
489d5531 17504
489d5531 17505void AliFlowAnalysisWithQCumulants::GetPointersForCommonHistograms()
17506{
17507 // Access all pointers to common control and common result histograms and profiles.
17508
1268c371 17509 TString sCommonConstantsName = "fCommonConstants";
17510 sCommonConstantsName += fAnalysisLabel->Data();
17511 fCommonConstants = dynamic_cast<TProfile*>(fHistList->FindObject(sCommonConstantsName.Data()));
17512 if(!fCommonConstants)
17513 {
17514 printf("\n WARNING (QC): fCommonConstants is NULL in AFAWQC::GPFCH() !!!!\n\n");
17515 exit(0);
17516 }
17517
17518 // to be improved - lines bellow can be implemented better.
17519
489d5531 17520 TString commonHistsName = "AliFlowCommonHistQC";
17521 commonHistsName += fAnalysisLabel->Data();
17522 AliFlowCommonHist *commonHist = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHistsName.Data()));
b77b6434 17523 if(commonHist)
17524 {
17525 this->SetCommonHists(commonHist);
17526 if(fCommonHists->GetHarmonic())
17527 {
17528 fHarmonic = (Int_t)(fCommonHists->GetHarmonic())->GetBinContent(1);
17529 }
17530 } // end of if(commonHist)
489d5531 17531 TString commonHists2ndOrderName = "AliFlowCommonHist2ndOrderQC";
17532 commonHists2ndOrderName += fAnalysisLabel->Data();
17533 AliFlowCommonHist *commonHist2nd = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists2ndOrderName.Data()));
17534 if(commonHist2nd) this->SetCommonHists2nd(commonHist2nd);
17535 TString commonHists4thOrderName = "AliFlowCommonHist4thOrderQC";
17536 commonHists4thOrderName += fAnalysisLabel->Data();
17537 AliFlowCommonHist *commonHist4th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists4thOrderName.Data()));
17538 if(commonHist4th) this->SetCommonHists4th(commonHist4th);
17539 TString commonHists6thOrderName = "AliFlowCommonHist6thOrderQC";
17540 commonHists6thOrderName += fAnalysisLabel->Data();
17541 AliFlowCommonHist *commonHist6th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists6thOrderName.Data()));
17542 if(commonHist6th) this->SetCommonHists6th(commonHist6th);
17543 TString commonHists8thOrderName = "AliFlowCommonHist8thOrderQC";
17544 commonHists8thOrderName += fAnalysisLabel->Data();
17545 AliFlowCommonHist *commonHist8th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists8thOrderName.Data()));
dd442cd2 17546 if(commonHist8th) this->SetCommonHists8th(commonHist8th);
17547
489d5531 17548 TString commonHistResults2ndOrderName = "AliFlowCommonHistResults2ndOrderQC";
17549 commonHistResults2ndOrderName += fAnalysisLabel->Data();
b77b6434 17550 AliFlowCommonHistResults *commonHistRes2nd = dynamic_cast<AliFlowCommonHistResults*>
17551 (fHistList->FindObject(commonHistResults2ndOrderName.Data()));
489d5531 17552 if(commonHistRes2nd) this->SetCommonHistsResults2nd(commonHistRes2nd);
17553 TString commonHistResults4thOrderName = "AliFlowCommonHistResults4thOrderQC";
17554 commonHistResults4thOrderName += fAnalysisLabel->Data();
17555 AliFlowCommonHistResults *commonHistRes4th = dynamic_cast<AliFlowCommonHistResults*>
17556 (fHistList->FindObject(commonHistResults4thOrderName.Data()));
17557 if(commonHistRes4th) this->SetCommonHistsResults4th(commonHistRes4th);
17558 TString commonHistResults6thOrderName = "AliFlowCommonHistResults6thOrderQC";
17559 commonHistResults6thOrderName += fAnalysisLabel->Data();
17560 AliFlowCommonHistResults *commonHistRes6th = dynamic_cast<AliFlowCommonHistResults*>
17561 (fHistList->FindObject(commonHistResults6thOrderName.Data()));
17562 if(commonHistRes6th) this->SetCommonHistsResults6th(commonHistRes6th);
17563 TString commonHistResults8thOrderName = "AliFlowCommonHistResults8thOrderQC";
17564 commonHistResults8thOrderName += fAnalysisLabel->Data();
17565 AliFlowCommonHistResults *commonHistRes8th = dynamic_cast<AliFlowCommonHistResults*>
17566 (fHistList->FindObject(commonHistResults8thOrderName.Data()));
17567 if(commonHistRes8th) this->SetCommonHistsResults8th(commonHistRes8th);
17568
17569} // end of void AliFlowAnalysisWithQCumulants::GetPointersForCommonHistograms()
17570
e1d101a6 17571//=======================================================================================================================
489d5531 17572
489d5531 17573void AliFlowAnalysisWithQCumulants::GetPointersForParticleWeightsHistograms()
17574{
17575 // Get pointers for histograms with particle weights.
17576
17577 TList *weightsList = dynamic_cast<TList*>(fHistList->FindObject("Weights"));
ca5f47e7 17578 if(!weightsList){printf("\n WARNING (QC): weightsList is NULL in AFAWQC::GPFPWH() !!!!\n");exit(0);}
17579 this->SetWeightsList(weightsList);
489d5531 17580 TString fUseParticleWeightsName = "fUseParticleWeightsQC"; // to be improved (hirdwired label QC)
17581 fUseParticleWeightsName += fAnalysisLabel->Data();
17582 TProfile *useParticleWeights = dynamic_cast<TProfile*>(weightsList->FindObject(fUseParticleWeightsName.Data()));
17583 if(useParticleWeights)
17584 {
17585 this->SetUseParticleWeights(useParticleWeights);
17586 fUsePhiWeights = (Int_t)fUseParticleWeights->GetBinContent(1);
17587 fUsePtWeights = (Int_t)fUseParticleWeights->GetBinContent(2);
17588 fUseEtaWeights = (Int_t)fUseParticleWeights->GetBinContent(3);
403e3389 17589 fUseTrackWeights = (Int_t)fUseParticleWeights->GetBinContent(4);
489d5531 17590 }
17591} // end of void AliFlowAnalysisWithQCumulants::GetPointersForParticleWeightsHistograms();
17592
e1d101a6 17593//=======================================================================================================================
489d5531 17594
489d5531 17595void AliFlowAnalysisWithQCumulants::GetPointersForIntFlowHistograms()
17596{
17597 // Get pointers for histograms and profiles relevant for integrated flow:
17598 // a) Get pointer to base list for integrated flow holding profile fIntFlowFlags and lists fIntFlowProfiles and fIntFlowResults.
17599 // b) Get pointer to profile fIntFlowFlags holding all flags for integrated flow.
17600 // c) Get pointer to list fIntFlowProfiles and pointers to all objects that she holds.
17601 // d) Get pointer to list fIntFlowResults and pointers to all objects that she holds.
17602
17603 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data member?)
17604 TString powerFlag[2] = {"linear","quadratic"}; // to be improved (should I promote this to data member?)
b40a910e 17605 TString correlationFlag[4] = {"#LT#LT2#GT#GT","#LT#LT4#GT#GT","#LT#LT6#GT#GT","#LT#LT8#GT#GT"}; // to be improved (should I promote this to data member?)
17606 TString squaredCorrelationFlag[4] = {"#LT#LT2#GT^{2}#GT","#LT#LT4#GT^{2}#GT","#LT#LT6#GT^{2}#GT","#LT#LT8#GT^{2}#GT"}; // to be improved (should I promote this to data member?)
489d5531 17607
17608 // a) Get pointer to base list for integrated flow holding profile fIntFlowFlags and lists fIntFlowProfiles and fIntFlowResults:
17609 TList *intFlowList = NULL;
17610 intFlowList = dynamic_cast<TList*>(fHistList->FindObject("Integrated Flow"));
17611 if(!intFlowList)
17612 {
17613 cout<<"WARNING: intFlowList is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17614 exit(0);
17615 }
17616
b92ea2b9 17617 // b) Get pointer to profile fIntFlowFlags holding all flags for integrated flow:
17618 TString intFlowFlagsName = "fIntFlowFlags";
17619 intFlowFlagsName += fAnalysisLabel->Data();
17620 TProfile *intFlowFlags = dynamic_cast<TProfile*>(intFlowList->FindObject(intFlowFlagsName.Data()));
17621 if(intFlowFlags)
17622 {
17623 this->SetIntFlowFlags(intFlowFlags);
17624 fApplyCorrectionForNUA = (Bool_t)intFlowFlags->GetBinContent(3);
17625 fApplyCorrectionForNUAVsM = (Bool_t)intFlowFlags->GetBinContent(8);
17626 fCalculateCumulantsVsM = (Bool_t)intFlowFlags->GetBinContent(10);
17627 } else
17628 {
17629 cout<<"WARNING: intFlowFlags is NULL in FAWQC::GPFIFH() !!!!"<<endl;
17630 }
489d5531 17631
17632 // c) Get pointer to list fIntFlowProfiles and pointers to all objects that she holds:
17633 TList *intFlowProfiles = NULL;
17634 intFlowProfiles = dynamic_cast<TList*>(intFlowList->FindObject("Profiles"));
17635 if(intFlowProfiles)
17636 {
17637 // average multiplicities:
17638 TString avMultiplicityName = "fAvMultiplicity";
17639 avMultiplicityName += fAnalysisLabel->Data();
17640 TProfile *avMultiplicity = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(avMultiplicityName.Data()));
17641 if(avMultiplicity)
17642 {
17643 this->SetAvMultiplicity(avMultiplicity);
17644 } else
17645 {
17646 cout<<"WARNING: avMultiplicity is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17647 }
17648 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with wrong errors!):
17649 TString intFlowCorrelationsProName = "fIntFlowCorrelationsPro";
17650 intFlowCorrelationsProName += fAnalysisLabel->Data();
17651 TProfile *intFlowCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowCorrelationsProName.Data()));
17652 if(intFlowCorrelationsPro)
17653 {
17654 this->SetIntFlowCorrelationsPro(intFlowCorrelationsPro);
17655 } else
17656 {
17657 cout<<"WARNING: intFlowCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17658 }
b40a910e 17659 // average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8^2>>:
17660 TString intFlowSquaredCorrelationsProName = "fIntFlowSquaredCorrelationsPro";
17661 intFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
17662 TProfile *intFlowSquaredCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowSquaredCorrelationsProName.Data()));
17663 if(intFlowSquaredCorrelationsPro)
17664 {
17665 this->SetIntFlowSquaredCorrelationsPro(intFlowSquaredCorrelationsPro);
17666 } else
17667 {
17668 cout<<"WARNING: intFlowSquaredCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17669 }
b3dacf6b 17670 if(fCalculateCumulantsVsM)
ff70ca91 17671 {
b40a910e 17672 // Average correlations <<2>>, <<4>>, <<6>> and <<8>> versus multiplicity for all events (error is wrong here):
b3dacf6b 17673 TString intFlowCorrelationsVsMProName = "fIntFlowCorrelationsVsMPro";
17674 intFlowCorrelationsVsMProName += fAnalysisLabel->Data();
17675 for(Int_t ci=0;ci<4;ci++) // correlation index
ff70ca91 17676 {
b3dacf6b 17677 TProfile *intFlowCorrelationsVsMPro = dynamic_cast<TProfile*>
17678 (intFlowProfiles->FindObject(Form("%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data())));
17679 if(intFlowCorrelationsVsMPro)
17680 {
17681 this->SetIntFlowCorrelationsVsMPro(intFlowCorrelationsVsMPro,ci);
17682 } else
17683 {
17684 cout<<"WARNING: "<<Form("intFlowCorrelationsVsMPro[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17685 }
17686 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b40a910e 17687 // Average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> versus multiplicity for all events:
17688 TString intFlowSquaredCorrelationsVsMProName = "fIntFlowSquaredCorrelationsVsMPro";
17689 intFlowSquaredCorrelationsVsMProName += fAnalysisLabel->Data();
17690 for(Int_t ci=0;ci<4;ci++) // correlation index
17691 {
17692 TProfile *intFlowSquaredCorrelationsVsMPro = dynamic_cast<TProfile*>
17693 (intFlowProfiles->FindObject(Form("%s, %s",intFlowSquaredCorrelationsVsMProName.Data(),squaredCorrelationFlag[ci].Data())));
17694 if(intFlowSquaredCorrelationsVsMPro)
17695 {
17696 this->SetIntFlowSquaredCorrelationsVsMPro(intFlowSquaredCorrelationsVsMPro,ci);
17697 } else
17698 {
17699 cout<<"WARNING: "<<Form("intFlowSquaredCorrelationsVsMPro[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17700 }
17701 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b3dacf6b 17702 } // end of if(fCalculateCumulantsVsM)
489d5531 17703 // average all correlations for integrated flow (with wrong errors!):
17704 TString intFlowCorrelationsAllProName = "fIntFlowCorrelationsAllPro";
17705 intFlowCorrelationsAllProName += fAnalysisLabel->Data();
17706 TProfile *intFlowCorrelationsAllPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowCorrelationsAllProName.Data()));
17707 if(intFlowCorrelationsAllPro)
17708 {
17709 this->SetIntFlowCorrelationsAllPro(intFlowCorrelationsAllPro);
17710 } else
17711 {
17712 cout<<"WARNING: intFlowCorrelationsAllPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17713 }
17714 // average extra correlations for integrated flow (which appear only when particle weights are used):
17715 // (to be improved: Weak point in implementation, I am assuming here that method GetPointersForParticleWeightsHistograms() was called)
403e3389 17716 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 17717 {
17718 TString intFlowExtraCorrelationsProName = "fIntFlowExtraCorrelationsPro";
17719 intFlowExtraCorrelationsProName += fAnalysisLabel->Data();
17720 TProfile *intFlowExtraCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowExtraCorrelationsProName.Data()));
17721 if(intFlowExtraCorrelationsPro)
17722 {
17723 this->SetIntFlowExtraCorrelationsPro(intFlowExtraCorrelationsPro);
17724 } else
17725 {
17726 cout<<"WARNING: intFlowExtraCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17727 }
403e3389 17728 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 17729 // average products of correlations <2>, <4>, <6> and <8>:
17730 TString intFlowProductOfCorrelationsProName = "fIntFlowProductOfCorrelationsPro";
17731 intFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
17732 TProfile *intFlowProductOfCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowProductOfCorrelationsProName.Data()));
17733 if(intFlowProductOfCorrelationsPro)
17734 {
17735 this->SetIntFlowProductOfCorrelationsPro(intFlowProductOfCorrelationsPro);
17736 } else
17737 {
17738 cout<<"WARNING: intFlowProductOfCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17739 }
17740 // average product of correlations <2>, <4>, <6> and <8> versus multiplicity
17741 // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 17742 if(fCalculateCumulantsVsM)
17743 {
17744 TString intFlowProductOfCorrelationsVsMProName = "fIntFlowProductOfCorrelationsVsMPro";
17745 intFlowProductOfCorrelationsVsMProName += fAnalysisLabel->Data();
403e3389 17746 TString productFlag[6] = {"#LT#LT2#GT#LT4#GT#GT","#LT#LT2#GT#LT6#GT#GT","#LT#LT2#GT#LT8#GT#GT",
17747 "#LT#LT4#GT#LT6#GT#GT","#LT#LT4#GT#LT8#GT#GT","#LT#LT6#GT#LT8#GT#GT"};
b3dacf6b 17748 for(Int_t pi=0;pi<6;pi++)
17749 {
17750 TProfile *intFlowProductOfCorrelationsVsMPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(Form("%s, %s",intFlowProductOfCorrelationsVsMProName.Data(),productFlag[pi].Data())));
17751 if(intFlowProductOfCorrelationsVsMPro)
17752 {
17753 this->SetIntFlowProductOfCorrelationsVsMPro(intFlowProductOfCorrelationsVsMPro,pi);
17754 } else
17755 {
17756 cout<<"WARNING: "<<Form("intFlowProductOfCorrelationsVsMPro[%d]",pi)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17757 }
17758 } // end of for(Int_t pi=0;pi<6;pi++)
17759 } // end of if(fCalculateCumulantsVsM)
489d5531 17760 // average correction terms for non-uniform acceptance (with wrong errors!):
17761 for(Int_t sc=0;sc<2;sc++)
17762 {
17763 TString intFlowCorrectionTermsForNUAProName = "fIntFlowCorrectionTermsForNUAPro";
17764 intFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
17765 TProfile *intFlowCorrectionTermsForNUAPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject((Form("%s: %s terms",intFlowCorrectionTermsForNUAProName.Data(),sinCosFlag[sc].Data()))));
17766 if(intFlowCorrectionTermsForNUAPro)
17767 {
17768 this->SetIntFlowCorrectionTermsForNUAPro(intFlowCorrectionTermsForNUAPro,sc);
17769 } else
17770 {
17771 cout<<"WARNING: intFlowCorrectionTermsForNUAPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17772 cout<<"sc = "<<sc<<endl;
17773 }
2001bc3a 17774 // versus multiplicity:
b3dacf6b 17775 if(fCalculateCumulantsVsM)
2001bc3a 17776 {
b3dacf6b 17777 TString correctionTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
17778 TString intFlowCorrectionTermsForNUAVsMProName = "fIntFlowCorrectionTermsForNUAVsMPro";
17779 intFlowCorrectionTermsForNUAVsMProName += fAnalysisLabel->Data();
17780 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2001bc3a 17781 {
b3dacf6b 17782 TProfile *intFlowCorrectionTermsForNUAVsMPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(Form("%s: #LT#LT%s%s#GT#GT",intFlowCorrectionTermsForNUAVsMProName.Data(),sinCosFlag[sc].Data(),correctionTermFlag[ci].Data())));
17783 if(intFlowCorrectionTermsForNUAVsMPro)
17784 {
17785 this->SetIntFlowCorrectionTermsForNUAVsMPro(intFlowCorrectionTermsForNUAVsMPro,sc,ci);
17786 } else
17787 {
17788 cout<<"WARNING: intFlowCorrectionTermsForNUAVsMPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17789 cout<<"sc = "<<sc<<endl;
17790 cout<<"ci = "<<ci<<endl;
17791 }
17792 } // end of for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
17793 } // end of if(fCalculateCumulantsVsM)
489d5531 17794 } // end of for(Int_t sc=0;sc<2;sc++)
0328db2d 17795 // average products of correction terms for NUA:
17796 TString intFlowProductOfCorrectionTermsForNUAProName = "fIntFlowProductOfCorrectionTermsForNUAPro";
17797 intFlowProductOfCorrectionTermsForNUAProName += fAnalysisLabel->Data();
17798 TProfile *intFlowProductOfCorrectionTermsForNUAPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowProductOfCorrectionTermsForNUAProName.Data()));
17799 if(intFlowProductOfCorrectionTermsForNUAPro)
17800 {
17801 this->SetIntFlowProductOfCorrectionTermsForNUAPro(intFlowProductOfCorrectionTermsForNUAPro);
17802 } else
17803 {
17804 cout<<"WARNING: intFlowProductOfCorrectionTermsForNUAPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17805 }
489d5531 17806 } else // to if(intFlowProfiles)
17807 {
17808 cout<<"WARNING: intFlowProfiles is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17809 }
17810
17811 // d) Get pointer to list fIntFlowResults and pointers to all objects that she holds.
17812 TList *intFlowResults = NULL;
17813 intFlowResults = dynamic_cast<TList*>(intFlowList->FindObject("Results"));
17814 if(intFlowResults)
17815 {
17816 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with correct errors!):
17817 TString intFlowCorrelationsHistName = "fIntFlowCorrelationsHist";
17818 intFlowCorrelationsHistName += fAnalysisLabel->Data();
17819 TH1D *intFlowCorrelationsHist = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCorrelationsHistName.Data()));
17820 if(intFlowCorrelationsHist)
17821 {
17822 this->SetIntFlowCorrelationsHist(intFlowCorrelationsHist);
17823 } else
17824 {
17825 cout<<"WARNING: intFlowCorrelationsHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17826 }
ff70ca91 17827 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with correct errors!) vs M:
b3dacf6b 17828 if(fCalculateCumulantsVsM)
ff70ca91 17829 {
b3dacf6b 17830 TString intFlowCorrelationsVsMHistName = "fIntFlowCorrelationsVsMHist";
17831 intFlowCorrelationsVsMHistName += fAnalysisLabel->Data();
17832 for(Int_t ci=0;ci<4;ci++) // correlation index
ff70ca91 17833 {
b3dacf6b 17834 TH1D *intFlowCorrelationsVsMHist = dynamic_cast<TH1D*>
17835 (intFlowResults->FindObject(Form("%s, %s",intFlowCorrelationsVsMHistName.Data(),correlationFlag[ci].Data())));
17836 if(intFlowCorrelationsVsMHist)
17837 {
17838 this->SetIntFlowCorrelationsVsMHist(intFlowCorrelationsVsMHist,ci);
17839 } else
17840 {
17841 cout<<"WARNING: "<<Form("intFlowCorrelationsVsMHist[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17842 }
17843 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
17844 } // end of if(fCalculateCumulantsVsM)
489d5531 17845 // average all correlations for integrated flow (with correct errors!):
17846 TString intFlowCorrelationsAllHistName = "fIntFlowCorrelationsAllHist";
17847 intFlowCorrelationsAllHistName += fAnalysisLabel->Data();
17848 TH1D *intFlowCorrelationsAllHist = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCorrelationsAllHistName.Data()));
17849 if(intFlowCorrelationsAllHist)
17850 {
17851 this->SetIntFlowCorrelationsAllHist(intFlowCorrelationsAllHist);
17852 } else
17853 {
17854 cout<<"WARNING: intFlowCorrelationsAllHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17855 }
17856 // average correction terms for non-uniform acceptance (with correct errors!):
17857 TString intFlowCorrectionTermsForNUAHistName = "fIntFlowCorrectionTermsForNUAHist";
17858 intFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
17859 for(Int_t sc=0;sc<2;sc++)
17860 {
17861 TH1D *intFlowCorrectionTermsForNUAHist = dynamic_cast<TH1D*>(intFlowResults->FindObject((Form("%s: %s terms",intFlowCorrectionTermsForNUAHistName.Data(),sinCosFlag[sc].Data()))));
17862 if(intFlowCorrectionTermsForNUAHist)
17863 {
17864 this->SetIntFlowCorrectionTermsForNUAHist(intFlowCorrectionTermsForNUAHist,sc);
17865 } else
17866 {
17867 cout<<"WARNING: intFlowCorrectionTermsForNUAHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17868 cout<<"sc = "<<sc<<endl;
17869 }
17870 } // end of for(Int_t sc=0;sc<2;sc++)
17871 // covariances (multiplied with weight dependent prefactor):
17872 TString intFlowCovariancesName = "fIntFlowCovariances";
17873 intFlowCovariancesName += fAnalysisLabel->Data();
17874 TH1D *intFlowCovariances = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCovariancesName.Data()));
17875 if(intFlowCovariances)
17876 {
17877 this->SetIntFlowCovariances(intFlowCovariances);
17878 } else
17879 {
17880 cout<<"WARNING: intFlowCovariances is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17881 }
17882 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8>:
17883 TString intFlowSumOfEventWeightsName = "fIntFlowSumOfEventWeights";
17884 intFlowSumOfEventWeightsName += fAnalysisLabel->Data();
17885 for(Int_t power=0;power<2;power++)
17886 {
17887 TH1D *intFlowSumOfEventWeights = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s: %s",intFlowSumOfEventWeightsName.Data(),powerFlag[power].Data())));
17888 if(intFlowSumOfEventWeights)
17889 {
17890 this->SetIntFlowSumOfEventWeights(intFlowSumOfEventWeights,power);
17891 } else
17892 {
17893 cout<<"WARNING: intFlowSumOfEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17894 cout<<"power = "<<power<<endl;
17895 }
17896 } // end of for(Int_t power=0;power<2;power++)
17897 // sum of products of event weights for correlations <2>, <4>, <6> and <8>:
17898 TString intFlowSumOfProductOfEventWeightsName = "fIntFlowSumOfProductOfEventWeights";
17899 intFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
17900 TH1D *intFlowSumOfProductOfEventWeights = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowSumOfProductOfEventWeightsName.Data()));
17901 if(intFlowSumOfProductOfEventWeights)
17902 {
17903 this->SetIntFlowSumOfProductOfEventWeights(intFlowSumOfProductOfEventWeights);
17904 } else
17905 {
17906 cout<<"WARNING: intFlowSumOfProductOfEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17907 }
ff70ca91 17908 // final result for covariances of correlations (multiplied with weight dependent prefactor) versus M
17909 // [0=Cov(2,4),1=Cov(2,6),2=Cov(2,8),3=Cov(4,6),4=Cov(4,8),5=Cov(6,8)]:
b3dacf6b 17910 if(fCalculateCumulantsVsM)
ff70ca91 17911 {
b3dacf6b 17912 TString intFlowCovariancesVsMName = "fIntFlowCovariancesVsM";
17913 intFlowCovariancesVsMName += fAnalysisLabel->Data();
17914 TString covarianceFlag[6] = {"Cov(<2>,<4>)","Cov(<2>,<6>)","Cov(<2>,<8>)","Cov(<4>,<6>)","Cov(<4>,<8>)","Cov(<6>,<8>)"};
17915 for(Int_t ci=0;ci<6;ci++)
17916 {
17917 TH1D *intFlowCovariancesVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data())));
17918 if(intFlowCovariancesVsM)
ff70ca91 17919 {
b3dacf6b 17920 this->SetIntFlowCovariancesVsM(intFlowCovariancesVsM,ci);
ff70ca91 17921 } else
17922 {
b3dacf6b 17923 cout<<"WARNING: "<<Form("intFlowCovariancesVsM[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17924 }
b3dacf6b 17925 } // end of for(Int_t ci=0;ci<6;ci++)
17926 } // end of if(fCalculateCumulantsVsM)
17927 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8> versus multiplicity
17928 // [0=sum{w_{<2>}},1=sum{w_{<4>}},2=sum{w_{<6>}},3=sum{w_{<8>}}][0=linear 1,1=quadratic]:
17929 if(fCalculateCumulantsVsM)
17930 {
17931 TString intFlowSumOfEventWeightsVsMName = "fIntFlowSumOfEventWeightsVsM";
17932 intFlowSumOfEventWeightsVsMName += fAnalysisLabel->Data();
17933 TString sumFlag[2][4] = {{"#sum_{i=1}^{N} w_{<2>}","#sum_{i=1}^{N} w_{<4>}","#sum_{i=1}^{N} w_{<6>}","#sum_{i=1}^{N} w_{<8>}"},
17934 {"#sum_{i=1}^{N} w_{<2>}^{2}","#sum_{i=1}^{N} w_{<4>}^{2}","#sum_{i=1}^{N} w_{<6>}^{2}","#sum_{i=1}^{N} w_{<8>}^{2}"}};
17935 for(Int_t si=0;si<4;si++)
17936 {
17937 for(Int_t power=0;power<2;power++)
17938 {
17939 TH1D *intFlowSumOfEventWeightsVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowSumOfEventWeightsVsMName.Data(),sumFlag[power][si].Data())));
17940 if(intFlowSumOfEventWeightsVsM)
17941 {
17942 this->SetIntFlowSumOfEventWeightsVsM(intFlowSumOfEventWeightsVsM,si,power);
17943 } else
17944 {
17945 cout<<"WARNING: "<<Form("intFlowSumOfEventWeightsVsM[%d][%d]",si,power)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17946 }
17947 } // end of for(Int_t power=0;power<2;power++)
17948 } // end of for(Int_t si=0;si<4;si++)
17949 } // end of if(fCalculateCumulantsVsM)
ff70ca91 17950 // sum of products of event weights for correlations <2>, <4>, <6> and <8> vs M
17951 // [0=sum{w_{<2>}w_{<4>}},1=sum{w_{<2>}w_{<6>}},2=sum{w_{<2>}w_{<8>}},
17952 // 3=sum{w_{<4>}w_{<6>}},4=sum{w_{<4>}w_{<8>}},5=sum{w_{<6>}w_{<8>}}]:
b3dacf6b 17953 if(fCalculateCumulantsVsM)
ff70ca91 17954 {
b3dacf6b 17955 TString intFlowSumOfProductOfEventWeightsVsMName = "fIntFlowSumOfProductOfEventWeightsVsM";
17956 intFlowSumOfProductOfEventWeightsVsMName += fAnalysisLabel->Data();
17957 TString sopowFlag[6] = {"#sum_{i=1}^{N} w_{<2>} w_{<4>}","#sum_{i=1}^{N} w_{<2>} w_{<6>}","#sum_{i=1}^{N} w_{<2>} w_{<8>}",
17958 "#sum_{i=1}^{N} w_{<4>} w_{<6>}","#sum_{i=1}^{N} w_{<4>} w_{<8>}","#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
17959 for(Int_t pi=0;pi<6;pi++)
ff70ca91 17960 {
b3dacf6b 17961 TH1D *intFlowSumOfProductOfEventWeightsVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowSumOfProductOfEventWeightsVsMName.Data(),sopowFlag[pi].Data())));
17962 if(intFlowSumOfProductOfEventWeightsVsM)
17963 {
17964 this->SetIntFlowSumOfProductOfEventWeightsVsM(intFlowSumOfProductOfEventWeightsVsM,pi);
17965 } else
17966 {
17967 cout<<"WARNING: "<<Form("intFlowSumOfProductOfEventWeightsVsM[%d]",pi)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17968 }
17969 } // end of for(Int_t pi=0;pi<6;pi++)
17970 } // end of if(fCalculateCumulantsVsM)
0328db2d 17971 // covariances for NUA (multiplied with weight dependent prefactor):
17972 TString intFlowCovariancesNUAName = "fIntFlowCovariancesNUA";
17973 intFlowCovariancesNUAName += fAnalysisLabel->Data();
17974 TH1D *intFlowCovariancesNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCovariancesNUAName.Data()));
17975 if(intFlowCovariancesNUA)
17976 {
17977 this->SetIntFlowCovariancesNUA(intFlowCovariancesNUA);
17978 } else
17979 {
17980 cout<<"WARNING: intFlowCovariancesNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17981 }
17982 // sum of linear and quadratic event weights NUA terms:
17983 TString intFlowSumOfEventWeightsNUAName = "fIntFlowSumOfEventWeightsNUA";
17984 intFlowSumOfEventWeightsNUAName += fAnalysisLabel->Data();
17985 for(Int_t sc=0;sc<2;sc++)
17986 {
17987 for(Int_t power=0;power<2;power++)
17988 {
17989 TH1D *intFlowSumOfEventWeightsNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s: %s, %s",intFlowSumOfEventWeightsNUAName.Data(),powerFlag[power].Data(),sinCosFlag[sc].Data())));
17990 if(intFlowSumOfEventWeightsNUA)
17991 {
17992 this->SetIntFlowSumOfEventWeightsNUA(intFlowSumOfEventWeightsNUA,sc,power);
17993 } else
17994 {
17995 cout<<"WARNING: intFlowSumOfEventWeightsNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17996 cout<<"sc = "<<sc<<endl;
17997 cout<<"power = "<<power<<endl;
17998 }
17999 } // end of for(Int_t power=0;power<2;power++)
18000 } // end of for(Int_t sc=0;sc<2;sc++)
18001 // sum of products of event weights for NUA terms:
18002 TString intFlowSumOfProductOfEventWeightsNUAName = "fIntFlowSumOfProductOfEventWeightsNUA";
18003 intFlowSumOfProductOfEventWeightsNUAName += fAnalysisLabel->Data();
18004 TH1D *intFlowSumOfProductOfEventWeightsNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowSumOfProductOfEventWeightsNUAName.Data()));
18005 if(intFlowSumOfProductOfEventWeightsNUA)
18006 {
18007 this->SetIntFlowSumOfProductOfEventWeightsNUA(intFlowSumOfProductOfEventWeightsNUA);
18008 } else
18009 {
18010 cout<<"WARNING: intFlowSumOfProductOfEventWeightsNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18011 }
b3dacf6b 18012 // Final results for reference Q-cumulants:
489d5531 18013 TString intFlowQcumulantsName = "fIntFlowQcumulants";
18014 intFlowQcumulantsName += fAnalysisLabel->Data();
18015 TH1D *intFlowQcumulants = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsName.Data()));
18016 if(intFlowQcumulants)
18017 {
18018 this->SetIntFlowQcumulants(intFlowQcumulants);
18019 } else
18020 {
18021 cout<<"WARNING: intFlowQcumulants is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18022 }
b3dacf6b 18023 // Final results for reference Q-cumulants rebinned in M:
18024 if(fCalculateCumulantsVsM)
18025 {
18026 TString intFlowQcumulantsRebinnedInMName = "fIntFlowQcumulantsRebinnedInM";
18027 intFlowQcumulantsRebinnedInMName += fAnalysisLabel->Data();
18028 TH1D *intFlowQcumulantsRebinnedInM = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsRebinnedInMName.Data()));
18029 if(intFlowQcumulantsRebinnedInM)
18030 {
18031 this->SetIntFlowQcumulantsRebinnedInM(intFlowQcumulantsRebinnedInM);
18032 } else
18033 {
18034 cout<<"WARNING: intFlowQcumulantsRebinnedInM is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18035 }
18036 } // end of if(fCalculateCumulantsVsM)
b92ea2b9 18037 // Ratio between error squared: with/without non-isotropic terms:
18038 TString intFlowQcumulantsErrorSquaredRatioName = "fIntFlowQcumulantsErrorSquaredRatio";
18039 intFlowQcumulantsErrorSquaredRatioName += fAnalysisLabel->Data();
18040 TH1D *intFlowQcumulantsErrorSquaredRatio = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsErrorSquaredRatioName.Data()));
18041 if(intFlowQcumulantsErrorSquaredRatio)
18042 {
18043 this->SetIntFlowQcumulantsErrorSquaredRatio(intFlowQcumulantsErrorSquaredRatio);
18044 } else
18045 {
18046 cout<<" WARNING: intntFlowQcumulantsErrorSquaredRatio is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18047 }
ff70ca91 18048 // final results for integrated Q-cumulants versus multiplicity:
ff70ca91 18049 TString cumulantFlag[4] = {"QC{2}","QC{4}","QC{6}","QC{8}"};
b3dacf6b 18050 if(fCalculateCumulantsVsM)
ff70ca91 18051 {
b3dacf6b 18052 TString intFlowQcumulantsVsMName = "fIntFlowQcumulantsVsM";
18053 intFlowQcumulantsVsMName += fAnalysisLabel->Data();
18054 for(Int_t co=0;co<4;co++) // cumulant order
ff70ca91 18055 {
b3dacf6b 18056 TH1D *intFlowQcumulantsVsM = dynamic_cast<TH1D*>
18057 (intFlowResults->FindObject(Form("%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data())));
18058 if(intFlowQcumulantsVsM)
18059 {
18060 this->SetIntFlowQcumulantsVsM(intFlowQcumulantsVsM,co);
18061 } else
18062 {
18063 cout<<"WARNING: "<<Form("intFlowQcumulantsVsM[%d]",co)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18064 }
18065 } // end of for(Int_t co=0;co<4;co++) // cumulant order
18066 } // end of if(fCalculateCumulantsVsM)
18067 // Final reference flow estimates from Q-cumulants:
489d5531 18068 TString intFlowName = "fIntFlow";
18069 intFlowName += fAnalysisLabel->Data();
18070 TH1D *intFlow = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowName.Data()));
18071 if(intFlow)
18072 {
18073 this->SetIntFlow(intFlow);
18074 } else
18075 {
18076 cout<<"WARNING: intFlow is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 18077 }
b3dacf6b 18078 // Final reference flow estimates from Q-cumulants vs M rebinned in M:
18079 if(fCalculateCumulantsVsM)
ff70ca91 18080 {
b3dacf6b 18081 TString intFlowRebinnedInMName = "fIntFlowRebinnedInM";
18082 intFlowRebinnedInMName += fAnalysisLabel->Data();
18083 TH1D *intFlowRebinnedInM = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowRebinnedInMName.Data()));
18084 if(intFlowRebinnedInM)
ff70ca91 18085 {
b3dacf6b 18086 this->SetIntFlowRebinnedInM(intFlowRebinnedInM);
18087 } else
ff70ca91 18088 {
b3dacf6b 18089 cout<<"WARNING: intFlowRebinnedInM is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18090 }
18091 } // end of if(fCalculateCumulantsVsM)
18092 // integrated flow from Q-cumulants versus multiplicity:
18093 if(fCalculateCumulantsVsM)
18094 {
18095 TString intFlowVsMName = "fIntFlowVsM";
18096 intFlowVsMName += fAnalysisLabel->Data();
b77b6434 18097 TString flowFlag[4] = {Form("v_{%d}{2,QC}",fHarmonic),Form("v_{%d}{4,QC}",fHarmonic),Form("v_{%d}{6,QC}",fHarmonic),Form("v_{%d}{8,QC}",fHarmonic)};
b3dacf6b 18098 for(Int_t co=0;co<4;co++) // cumulant order
18099 {
18100 TH1D *intFlowVsM = dynamic_cast<TH1D*>
b77b6434 18101 (intFlowResults->FindObject(Form("%s, %s",intFlowVsMName.Data(),flowFlag[co].Data())));
b3dacf6b 18102 if(intFlowVsM)
18103 {
18104 this->SetIntFlowVsM(intFlowVsM,co);
18105 } else
18106 {
18107 cout<<"WARNING: "<<Form("intFlowVsM[%d]",co)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18108 }
18109 } // end of for(Int_t co=0;co<4;co++) // cumulant order
18110 } // end of if(fCalculateCumulantsVsM)
2001bc3a 18111 // quantifying detector effects effects to correlations:
18112 TString intFlowDetectorBiasName = "fIntFlowDetectorBias";
18113 intFlowDetectorBiasName += fAnalysisLabel->Data();
18114 TH1D *intFlowDetectorBias = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowDetectorBiasName.Data()));
18115 if(intFlowDetectorBias)
18116 {
18117 this->SetIntFlowDetectorBias(intFlowDetectorBias);
18118 } else
18119 {
18120 cout<<"WARNING: intFlowDetectorBias is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18121 }
18122 // quantifying detector effects effects to correlations vs multiplicity:
b77b6434 18123 if(fCalculateCumulantsVsM)
2001bc3a 18124 {
3c5d5752 18125 TString intFlowDetectorBiasVsMName = "fIntFlowDetectorBiasVsM";
18126 intFlowDetectorBiasVsMName += fAnalysisLabel->Data();
18127 for(Int_t ci=0;ci<4;ci++) // correlation index
2001bc3a 18128 {
3c5d5752 18129 TH1D *intFlowDetectorBiasVsM = dynamic_cast<TH1D*>
18130 (intFlowResults->FindObject(Form("%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data())));
18131 if(intFlowDetectorBiasVsM)
18132 {
18133 this->SetIntFlowDetectorBiasVsM(intFlowDetectorBiasVsM,ci);
18134 } else
18135 {
18136 cout<<"WARNING: "<<Form("intFlowDetectorBiasVsM[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18137 }
18138 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b77b6434 18139 } // end of if(fCalculateCumulantsVsM)
489d5531 18140 } else // to if(intFlowResults)
18141 {
18142 cout<<"WARNING: intFlowResults is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18143 }
ff70ca91 18144
489d5531 18145} // end of void AliFlowAnalysisWithQCumulants::GetPointersForIntFlowHistograms()
18146
e1d101a6 18147//=======================================================================================================================
489d5531 18148
1268c371 18149void AliFlowAnalysisWithQCumulants::GetPointersFor2DDiffFlowHistograms()
18150{
18151 // Get pointers for 2D differential flow histograms.
18152 // a) Check pointers used in this method;
18153 // b) Get pointers to 2D differential flow lists;
18154 // c) Get pointers to 2D differential flow profiles;
18155 // d) Get pointers to 2D differential flow histograms.
18156
18157 // a) Check pointers used in this method:
18158 if(!fDiffFlowList)
18159 {
18160 printf("\n WARNING (QC): fDiffFlowList is NULL in AFAWQC::GPF2DDFH() !!!!\n");
18161 printf(" Call method GetPointersForDiffFlowHistograms() first.\n\n");
18162 exit(0);
18163 }
18164 if(!fDiffFlowFlags)
18165 {
18166 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::GPF2DDFH() !!!!\n\n");
18167 printf(" Call method GetPointersForDiffFlowHistograms() first.\n\n");
18168 exit(0);
18169 }
18170
18171 // b) Get pointers to 2D differential flow lists:
18172 this->SetCalculate2DDiffFlow((Bool_t)fDiffFlowFlags->GetBinContent(5)); // to be improved - hardwired 5
18173 if(!fCalculate2DDiffFlow){return;}
18174 TString typeFlag[2] = {"RP","POI"};
18175 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18176 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18177 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18178 // Base list:
18179 TString diffFlow2DListName = "2D";
18180 diffFlow2DListName += fAnalysisLabel->Data();
18181 fDiffFlow2D = dynamic_cast<TList*>(fDiffFlowList->FindObject(diffFlow2DListName.Data()));
18182 if(!fDiffFlow2D)
18183 {
18184 printf("\n WARNING (QC): fDiffFlow2D is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18185 exit(0);
18186 }
18187 // Lists holding profiles with 2D correlations:
18188 TString s2DDiffFlowCorrelationsProListName = "Profiles with 2D correlations";
18189 s2DDiffFlowCorrelationsProListName += fAnalysisLabel->Data(); // to be improved
18190 for(Int_t t=0;t<2;t++)
18191 {
18192 f2DDiffFlowCorrelationsProList[t] = dynamic_cast<TList*>(fDiffFlow2D->FindObject(Form("Profiles with 2D correlations (%s)",typeFlag[t].Data())));
18193 if(!f2DDiffFlowCorrelationsProList[t])
18194 {
18195 printf("\n WARNING (QC): f2DDiffFlowCorrelationsProList[%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t);
18196 exit(0);
18197 }
18198 } // end of for(Int_t t=0;t<2;t++)
18199
18200 // c) Get pointers to 2D differential flow profiles:
18201 TString s2DDiffFlowCorrelationsProName = "f2DDiffFlowCorrelationsPro";
18202 s2DDiffFlowCorrelationsProName += fAnalysisLabel->Data();
18203 for(Int_t t=0;t<2;t++) // type: RP or POI
18204 {
18205 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18206 {
18207 f2DDiffFlowCorrelationsPro[t][rci] = dynamic_cast<TProfile2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowCorrelationsProName.Data(),typeFlag[t].Data(),reducedCorrelationIndex[rci].Data())));
18208 if(!f2DDiffFlowCorrelationsPro[t][rci])
18209 {
18210 printf("\n WARNING (QC): f2DDiffFlowCorrelationsPro[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18211 exit(0);
18212 } else
18213 {
18214 this->Set2DDiffFlowCorrelationsPro(f2DDiffFlowCorrelationsPro[t][rci],t,rci);
18215 }
18216 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18217 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18218
18219 // d) Get pointers to 2D differential flow histograms:
18220 TString s2DDiffFlowCumulantsName = "f2DDiffFlowCumulants";
18221 s2DDiffFlowCumulantsName += fAnalysisLabel->Data();
18222 TString s2DDiffFlowName = "f2DDiffFlow";
18223 s2DDiffFlowName += fAnalysisLabel->Data();
18224 for(Int_t t=0;t<2;t++) // type: RP or POI
18225 {
18226 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18227 {
18228 // 2D differential cumulants:
18229 f2DDiffFlowCumulants[t][rci] = dynamic_cast<TH2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowCumulantsName.Data(),typeFlag[t].Data(),differentialCumulantIndex[rci].Data())));
18230 if(!f2DDiffFlowCumulants[t][rci])
18231 {
18232 printf("\n WARNING (QC): f2DDiffFlowCumulants[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18233 exit(0);
18234 } else
18235 {
18236 this->Set2DDiffFlowCumulants(f2DDiffFlowCumulants[t][rci],t,rci);
18237 }
18238 // 2D differential flow:
18239 f2DDiffFlow[t][rci] = dynamic_cast<TH2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowName.Data(),typeFlag[t].Data(),differentialFlowIndex[rci].Data())));
18240 if(!f2DDiffFlow[t][rci])
18241 {
18242 printf("\n WARNING (QC): f2DDiffFlow[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18243 exit(0);
18244 } else
18245 {
18246 this->Set2DDiffFlow(f2DDiffFlow[t][rci],t,rci);
18247 }
18248 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18249 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18250
18251} // end of void AliFlowAnalysisWithQCumulants::GetPointersFor2DDiffFlowHistograms()
18252
e1d101a6 18253//=======================================================================================================================
1268c371 18254
64e500e3 18255void AliFlowAnalysisWithQCumulants::GetPointersForOtherDiffCorrelators()
18256{
18257 // Get pointers for other differential correlators.
18258 // a) Get pointer to list with other differential correlators;
18259 // b) Declare local flags;
18260 // c) Get pointers to other differential profiles.
18261
62e36168 18262 if(!fCalculateDiffFlow){return;} // TBI: This must eventually be moved somewhere else
18263
64e500e3 18264 // a) Get pointer to list with other differential correlators:
18265 fOtherDiffCorrelatorsList = dynamic_cast<TList*>(fHistList->FindObject("Other differential correlators"));
18266 if(!fOtherDiffCorrelatorsList)
18267 {
18268 printf("\n WARNING (QC): fOtherDiffCorrelatorsList is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18269 exit(0);
18270 }
18271
18272 // b) Declare local flags: // (to be improved - promoted to data members)
18273 TString typeFlag[2] = {"RP","POI"};
18274 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18275 TString sinCosFlag[2] = {"sin","cos"};
18276
18277 // c) Get pointers to other differential profiles:
18278 TString otherDiffCorrelatorsName = "fOtherDiffCorrelators";
18279 otherDiffCorrelatorsName += fAnalysisLabel->Data();
18280 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18281 {
62e36168 18282 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 18283 {
18284 for(Int_t sc=0;sc<2;sc++) // sin or cos
18285 {
18286 for(Int_t ci=0;ci<1;ci++) // correlator index
18287 {
18288 fOtherDiffCorrelators[t][pe][sc][ci] = dynamic_cast<TProfile*>(fOtherDiffCorrelatorsList->FindObject(Form("%s, %s, %s, %s, ci = %d",otherDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1)));
18289 if(!fOtherDiffCorrelators[t][pe][sc][ci])
18290 {
18291 printf("\n WARNING (QC): fOtherDiffCorrelators[%i][%i][%i][%i] is NULL in AFAWQC::GPFODC() !!!!\n\n",t,pe,sc,ci);
18292 exit(0);
18293 } else
18294 {
18295 this->SetOtherDiffCorrelators(fOtherDiffCorrelators[t][pe][sc][ci],t,pe,sc,ci);
18296 }
18297 } // end of for(Int_t ci=0;ci<1;ci++) // correlator index
18298 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18299 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18300 } // end of for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18301
18302} // end of void AliFlowAnalysisWithQCumulants::GetPointersForOtherDiffCorrelators()
18303
e1d101a6 18304//=======================================================================================================================
64e500e3 18305
489d5531 18306void AliFlowAnalysisWithQCumulants::GetPointersForDiffFlowHistograms()
18307{
18308 // Get pointer to all objects relevant for differential flow.
1268c371 18309 // a) Get pointer to base list for differential flow fDiffFlowList;
18310 // b) Get pointer to profile fDiffFlowFlags holding all flags for differential flow. Access and set some flags;
18311 // c) Get pointers to nested lists fDiffFlowListProfiles and fDiffFlowListResults;
18312 // d) Define flags locally (to be improved: should I promote these flags to data members?);
18313 // e) Get pointers to all nested lists in fDiffFlowListProfiles and to profiles which they hold;
18314 // f) Get pointers to all nested lists in fDiffFlowListResults and to histograms which they hold.
18315
18316 // a) Get pointer to base list for differential flow fDiffFlowList:
18317 fDiffFlowList = dynamic_cast<TList*>(fHistList->FindObject("Differential Flow"));
18318 if(!fDiffFlowList)
489d5531 18319 {
1268c371 18320 printf("\n WARNING (QC): fDiffFlowList is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18321 exit(0);
18322 }
1268c371 18323
18324 // b) Get pointer to profile fDiffFlowFlags holding all flags for differential flow. Access and set some flags:
18325 TString diffFlowFlagsName = "fDiffFlowFlags";
18326 diffFlowFlagsName += fAnalysisLabel->Data();
18327 fDiffFlowFlags = dynamic_cast<TProfile*>(fDiffFlowList->FindObject(diffFlowFlagsName.Data()));
18328 if(fDiffFlowFlags)
18329 {
62d19320 18330 this->SetCalculateDiffFlow((Bool_t)fDiffFlowFlags->GetBinContent(1)); // to be improved - hardwired 1
62e36168 18331 this->SetCalculateDiffFlowVsEta((Bool_t)fDiffFlowFlags->GetBinContent(6)); // to be improved - hardwired 6
1268c371 18332 } else
18333 {
18334 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18335 printf("\n Flags in method Finish() are wrong.\n\n");
18336 exit(0);
18337 }
18338
18339 if(!fCalculateDiffFlow){return;} // IMPORTANT: do not move this anywhere above in this method (to be improved)
18340
18341 // c) Get pointers to nested lists fDiffFlowListProfiles and fDiffFlowListResults:
18342 // List holding nested lists holding profiles:
489d5531 18343 TList *diffFlowListProfiles = NULL;
1268c371 18344 diffFlowListProfiles = dynamic_cast<TList*>(fDiffFlowList->FindObject("Profiles"));
489d5531 18345 if(!diffFlowListProfiles)
18346 {
1268c371 18347 printf("\n WARNING (QC): diffFlowListProfiles is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18348 exit(0);
18349 }
1268c371 18350 // List holding nested lists holding histograms with final results:
489d5531 18351 TList *diffFlowListResults = NULL;
1268c371 18352 diffFlowListResults = dynamic_cast<TList*>(fDiffFlowList->FindObject("Results"));
489d5531 18353 if(!diffFlowListResults)
18354 {
1268c371 18355 printf("\n WARNING (QC): diffFlowListResults is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18356 exit(0);
18357 }
18358
1268c371 18359 // d) Define flags locally (to be improved: should I promote these flags to data members?):
18360 TString typeFlag[2] = {"RP","POI"};
18361 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18362 TString powerFlag[2] = {"linear","quadratic"};
18363 TString sinCosFlag[2] = {"sin","cos"};
18364 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18365 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18366 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18367 TString reducedSquaredCorrelationIndex[4] = {"<2'>^{2}","<4'>^{2}","<6'>^{2}","<8'>^{2}"};
18368 TString mixedCorrelationIndex[8] = {"<2>","<2'>","<4>","<4'>","<6>","<6'>","<8>","<8'>"};
18369 TString covarianceName[5] = {"Cov(<2>,<2'>)","Cov(<2>,<4'>)","Cov(<4>,<2'>)","Cov(<4>,<4'>)","Cov(<2'>,<4'>)"};
489d5531 18370
1268c371 18371 // e) Get pointers to all nested lists in fDiffFlowListProfiles and to profiles which they hold:
489d5531 18372 // correlations:
18373 TList *diffFlowCorrelationsProList[2][2] = {{NULL}};
18374 TString diffFlowCorrelationsProName = "fDiffFlowCorrelationsPro";
18375 diffFlowCorrelationsProName += fAnalysisLabel->Data();
b40a910e 18376 TProfile *diffFlowCorrelationsPro[2][2][4] = {{{NULL}}};
18377 // squared correlations:
18378 TString diffFlowSquaredCorrelationsProName = "fDiffFlowSquaredCorrelationsPro";
18379 diffFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
18380 TProfile *diffFlowSquaredCorrelationsPro[2][2][4] = {{{NULL}}};
489d5531 18381 // products of correlations:
18382 TList *diffFlowProductOfCorrelationsProList[2][2] = {{NULL}};
18383 TString diffFlowProductOfCorrelationsProName = "fDiffFlowProductOfCorrelationsPro";
18384 diffFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
18385 TProfile *diffFlowProductOfCorrelationsPro[2][2][8][8] = {{{{NULL}}}};
18386 // corrections:
18387 TList *diffFlowCorrectionsProList[2][2] = {{NULL}};
18388 TString diffFlowCorrectionTermsForNUAProName = "fDiffFlowCorrectionTermsForNUAPro";
18389 diffFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
18390 TProfile *diffFlowCorrectionTermsForNUAPro[2][2][2][10] = {{{{NULL}}}};
18391 for(Int_t t=0;t<2;t++)
18392 {
62e36168 18393 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++)
489d5531 18394 {
18395 diffFlowCorrelationsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18396 if(!diffFlowCorrelationsProList[t][pe])
18397 {
18398 cout<<"WARNING: diffFlowCorrelationsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18399 cout<<"t = "<<t<<endl;
18400 cout<<"pe = "<<pe<<endl;
18401 exit(0);
18402 }
18403 for(Int_t ci=0;ci<4;ci++) // correlation index
18404 {
b40a910e 18405 // reduced correlations:
489d5531 18406 diffFlowCorrelationsPro[t][pe][ci] = dynamic_cast<TProfile*>(diffFlowCorrelationsProList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[ci].Data())));
18407 if(diffFlowCorrelationsPro[t][pe][ci])
18408 {
18409 this->SetDiffFlowCorrelationsPro(diffFlowCorrelationsPro[t][pe][ci],t,pe,ci);
18410 } else
18411 {
18412 cout<<"WARNING: diffFlowCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18413 cout<<"t = "<<t<<endl;
18414 cout<<"pe = "<<pe<<endl;
18415 cout<<"ci = "<<ci<<endl;
18416 }
b40a910e 18417 // reduced squared correlations:
18418 diffFlowSquaredCorrelationsPro[t][pe][ci] = dynamic_cast<TProfile*>(diffFlowCorrelationsProList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowSquaredCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedSquaredCorrelationIndex[ci].Data())));
18419 if(diffFlowSquaredCorrelationsPro[t][pe][ci])
18420 {
18421 this->SetDiffFlowSquaredCorrelationsPro(diffFlowSquaredCorrelationsPro[t][pe][ci],t,pe,ci);
18422 } else
18423 {
18424 cout<<"WARNING: diffFlowSquaredCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18425 cout<<"t = "<<t<<endl;
18426 cout<<"pe = "<<pe<<endl;
18427 cout<<"ci = "<<ci<<endl;
18428 }
489d5531 18429 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18430 // products of correlations:
18431 diffFlowProductOfCorrelationsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with products of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18432 if(!diffFlowProductOfCorrelationsProList[t][pe])
18433 {
18434 cout<<"WARNING: ddiffFlowProductOfCorrelationsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18435 cout<<"t = "<<t<<endl;
18436 cout<<"pe = "<<pe<<endl;
18437 exit(0);
18438 }
18439 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18440 {
18441 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18442 {
18443 diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2] = dynamic_cast<TProfile*>(diffFlowProductOfCorrelationsProList[t][pe]->FindObject(Form("%s, %s, %s, %s, %s",diffFlowProductOfCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data())));
18444 if(diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2])
18445 {
18446 this->SetDiffFlowProductOfCorrelationsPro(diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2],t,pe,mci1,mci2);
18447 } else
18448 {
b40a910e 18449 cout<<"WARNING: diffFlowProductOfCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
489d5531 18450 cout<<"t = "<<t<<endl;
18451 cout<<"pe = "<<pe<<endl;
18452 cout<<"mci1 = "<<mci1<<endl;
18453 cout<<"mci2 = "<<mci2<<endl;
18454 }
18455 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18456 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18457 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18458 // corrections:
18459 diffFlowCorrectionsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18460 if(!diffFlowCorrectionsProList[t][pe])
18461 {
18462 cout<<"WARNING: diffFlowCorrectionsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18463 cout<<"t = "<<t<<endl;
18464 cout<<"pe = "<<pe<<endl;
18465 exit(0);
18466 }
18467 // correction terms for NUA:
18468 for(Int_t sc=0;sc<2;sc++) // sin or cos
18469 {
18470 for(Int_t cti=0;cti<9;cti++) // correction term index
18471 {
18472 diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] = dynamic_cast<TProfile*>(diffFlowCorrectionsProList[t][pe]->FindObject(Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1)));
18473 if(diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti])
18474 {
18475 this->SetDiffFlowCorrectionTermsForNUAPro(diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti],t,pe,sc,cti);
18476 } else
18477 {
18478 cout<<"WARNING: diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18479 cout<<"t = "<<t<<endl;
18480 cout<<"pe = "<<pe<<endl;
18481 cout<<"sc = "<<sc<<endl;
18482 cout<<"cti = "<<cti<<endl;
18483 }
18484 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
18485 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18486 // ...
18487 } // end of for(Int_t pe=0;pe<2;pe++)
18488 } // end of for(Int_t t=0;t<2;t++)
18489
1268c371 18490 // f) Get pointers to all nested lists in fDiffFlowListResults and to histograms which they hold:
489d5531 18491 // reduced correlations:
18492 TList *diffFlowCorrelationsHistList[2][2] = {{NULL}};
18493 TString diffFlowCorrelationsHistName = "fDiffFlowCorrelationsHist";
18494 diffFlowCorrelationsHistName += fAnalysisLabel->Data();
18495 TH1D *diffFlowCorrelationsHist[2][2][4] = {{{NULL}}};
18496 // corrections for NUA:
18497 TList *diffFlowCorrectionsHistList[2][2] = {{NULL}};
18498 TString diffFlowCorrectionTermsForNUAHistName = "fDiffFlowCorrectionTermsForNUAHist";
18499 diffFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
18500 TH1D *diffFlowCorrectionTermsForNUAHist[2][2][2][10] = {{{{NULL}}}};
18501 // differential Q-cumulants:
18502 TList *diffFlowCumulantsHistList[2][2] = {{NULL}};
18503 TString diffFlowCumulantsName = "fDiffFlowCumulants";
18504 diffFlowCumulantsName += fAnalysisLabel->Data();
18505 TH1D *diffFlowCumulants[2][2][4] = {{{NULL}}};
1268c371 18506 // detector bias to differential Q-cumulants:
18507 TList *diffFlowDetectorBiasHistList[2][2] = {{NULL}};
18508 TString diffFlowDetectorBiasName = "fDiffFlowDetectorBias";
18509 diffFlowDetectorBiasName += fAnalysisLabel->Data();
18510 TH1D *diffFlowDetectorBias[2][2][4] = {{{NULL}}};
489d5531 18511 // differential flow estimates from Q-cumulants:
18512 TList *diffFlowHistList[2][2] = {{NULL}};
18513 TString diffFlowName = "fDiffFlow";
18514 diffFlowName += fAnalysisLabel->Data();
18515 TH1D *diffFlow[2][2][4] = {{{NULL}}};
18516 // differential covariances:
18517 TList *diffFlowCovariancesHistList[2][2] = {{NULL}};
18518 TString diffFlowCovariancesName = "fDiffFlowCovariances";
18519 diffFlowCovariancesName += fAnalysisLabel->Data();
18520 TH1D *diffFlowCovariances[2][2][5] = {{{NULL}}};
18521 for(Int_t t=0;t<2;t++) // type: RP or POI
18522 {
62e36168 18523 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18524 {
18525 // reduced correlations:
18526 diffFlowCorrelationsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18527 if(!diffFlowCorrelationsHistList[t][pe])
18528 {
18529 cout<<"WARNING: diffFlowCorrelationsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18530 cout<<"t = "<<t<<endl;
18531 cout<<"pe = "<<pe<<endl;
18532 exit(0);
18533 }
18534 for(Int_t index=0;index<4;index++)
18535 {
18536 diffFlowCorrelationsHist[t][pe][index] = dynamic_cast<TH1D*>(diffFlowCorrelationsHistList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowCorrelationsHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[index].Data())));
18537 if(diffFlowCorrelationsHist[t][pe][index])
18538 {
18539 this->SetDiffFlowCorrelationsHist(diffFlowCorrelationsHist[t][pe][index],t,pe,index);
18540 } else
18541 {
18542 cout<<"WARNING: diffFlowCorrelationsHist[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18543 cout<<"t = "<<t<<endl;
18544 cout<<"pe = "<<pe<<endl;
18545 cout<<"index = "<<index<<endl;
18546 exit(0);
18547 }
18548 } // end of for(Int_t index=0;index<4;index++)
18549 // corrections:
18550 diffFlowCorrectionsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Histograms with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18551 if(!diffFlowCorrectionsHistList[t][pe])
18552 {
18553 cout<<"WARNING: diffFlowCorrectionsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18554 cout<<"t = "<<t<<endl;
18555 cout<<"pe = "<<pe<<endl;
18556 exit(0);
18557 }
18558 // correction terms for NUA:
18559 for(Int_t sc=0;sc<2;sc++) // sin or cos
18560 {
18561 for(Int_t cti=0;cti<9;cti++) // correction term index
18562 {
18563 diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] = dynamic_cast<TH1D*>(diffFlowCorrectionsHistList[t][pe]->FindObject(Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1)));
18564 if(diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti])
18565 {
18566 this->SetDiffFlowCorrectionTermsForNUAHist(diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti],t,pe,sc,cti);
18567 } else
18568 {
18569 cout<<"WARNING: diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18570 cout<<"t = "<<t<<endl;
18571 cout<<"pe = "<<pe<<endl;
18572 cout<<"sc = "<<sc<<endl;
18573 cout<<"cti = "<<cti<<endl;
18574 }
18575 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
18576 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18577 // ...
18578 // differential Q-cumulants:
18579 diffFlowCumulantsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Differential Q-cumulants (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18580 if(!diffFlowCumulantsHistList[t][pe])
18581 {
18582 cout<<"WARNING: diffFlowCumulantsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18583 cout<<"t = "<<t<<endl;
18584 cout<<"pe = "<<pe<<endl;
18585 exit(0);
18586 }
18587 for(Int_t index=0;index<4;index++)
18588 {
18589 diffFlowCumulants[t][pe][index] = dynamic_cast<TH1D*>(diffFlowCumulantsHistList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowCumulantsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data())));
18590 if(diffFlowCumulants[t][pe][index])
18591 {
18592 this->SetDiffFlowCumulants(diffFlowCumulants[t][pe][index],t,pe,index);
18593 } else
18594 {
18595 cout<<"WARNING: diffFlowCumulants[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18596 cout<<"t = "<<t<<endl;
18597 cout<<"pe = "<<pe<<endl;
18598 cout<<"index = "<<index<<endl;
18599 exit(0);
18600 }
18601 } // end of for(Int_t index=0;index<4;index++)
1268c371 18602 // Detector bias to differential Q-cumulants:
18603 diffFlowDetectorBiasHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Detector bias (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18604 if(!diffFlowDetectorBiasHistList[t][pe])
18605 {
18606 cout<<"WARNING: diffFlowDetectorBiasHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18607 cout<<"t = "<<t<<endl;
18608 cout<<"pe = "<<pe<<endl;
18609 exit(0);
18610 }
18611 for(Int_t index=0;index<4;index++)
18612 {
18613 diffFlowDetectorBias[t][pe][index] = dynamic_cast<TH1D*>(diffFlowDetectorBiasHistList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowDetectorBiasName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data())));
18614 if(diffFlowDetectorBias[t][pe][index])
18615 {
18616 this->SetDiffFlowDetectorBias(diffFlowDetectorBias[t][pe][index],t,pe,index);
18617 } else
18618 {
18619 cout<<"WARNING: diffFlowDetectorBias[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18620 cout<<"t = "<<t<<endl;
18621 cout<<"pe = "<<pe<<endl;
18622 cout<<"index = "<<index<<endl;
18623 exit(0);
18624 }
18625 } // end of for(Int_t index=0;index<4;index++)
489d5531 18626 // differential flow estimates from Q-cumulants:
18627 diffFlowHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Differential flow (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18628 if(!diffFlowHistList[t][pe])
18629 {
18630 cout<<"WARNING: diffFlowHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18631 cout<<"t = "<<t<<endl;
18632 cout<<"pe = "<<pe<<endl;
18633 exit(0);
18634 }
18635 for(Int_t index=0;index<4;index++)
18636 {
18637 diffFlow[t][pe][index] = dynamic_cast<TH1D*>(diffFlowHistList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialFlowIndex[index].Data())));
18638 if(diffFlow[t][pe][index])
18639 {
18640 this->SetDiffFlow(diffFlow[t][pe][index],t,pe,index);
18641 } else
18642 {
18643 cout<<"WARNING: diffFlow[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18644 cout<<"t = "<<t<<endl;
18645 cout<<"pe = "<<pe<<endl;
18646 cout<<"index = "<<index<<endl;
18647 exit(0);
18648 }
18649 } // end of for(Int_t index=0;index<4;index++)
18650 // differential covariances:
18651 diffFlowCovariancesHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Covariances of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18652 if(!diffFlowCovariancesHistList[t][pe])
18653 {
18654 cout<<"WARNING: diffFlowCovariancesHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18655 cout<<"t = "<<t<<endl;
18656 cout<<"pe = "<<pe<<endl;
18657 exit(0);
18658 }
18659 for(Int_t covIndex=0;covIndex<5;covIndex++)
18660 {
18661 diffFlowCovariances[t][pe][covIndex] = dynamic_cast<TH1D*>(diffFlowCovariancesHistList[t][pe]->FindObject(Form("%s, %s, %s, %s",diffFlowCovariancesName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),covarianceName[covIndex].Data())));
18662 if(diffFlowCovariances[t][pe][covIndex])
18663 {
18664 this->SetDiffFlowCovariances(diffFlowCovariances[t][pe][covIndex],t,pe,covIndex);
18665 } else
18666 {
18667 cout<<"WARNING: diffFlowCovariances[t][pe][covIndex] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18668 cout<<"t = "<<t<<endl;
18669 cout<<"pe = "<<pe<<endl;
18670 cout<<"covIndex = "<<covIndex<<endl;
18671 exit(0);
18672 }
18673 } // end of for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
18674 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18675 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18676 // sum of event weights for reduced correlations:
18677 TList *diffFlowSumOfEventWeightsHistList[2][2][2] = {{{NULL}}};
18678 TString diffFlowSumOfEventWeightsName = "fDiffFlowSumOfEventWeights";
18679 diffFlowSumOfEventWeightsName += fAnalysisLabel->Data();
18680 TH1D *diffFlowSumOfEventWeights[2][2][2][4] = {{{{NULL}}}};
18681 for(Int_t t=0;t<2;t++) // type is RP or POI
18682 {
62e36168 18683 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18684 {
18685 for(Int_t p=0;p<2;p++) // power of event weights is either 1 or 2
18686 {
18687 diffFlowSumOfEventWeightsHistList[t][pe][p] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Sum of %s event weights (%s, %s)",powerFlag[p].Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18688 if(!diffFlowSumOfEventWeightsHistList[t][pe][p])
18689 {
18690 cout<<"WARNING: diffFlowSumOfEventWeightsHistList[t][pe][p] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18691 cout<<"t = "<<t<<endl;
18692 cout<<"pe = "<<pe<<endl;
18693 cout<<"power = "<<p<<endl;
18694 exit(0);
18695 }
18696 for(Int_t ew=0;ew<4;ew++) // index of reduced correlation
18697 {
18698 diffFlowSumOfEventWeights[t][pe][p][ew] = dynamic_cast<TH1D*>(diffFlowSumOfEventWeightsHistList[t][pe][p]->FindObject(Form("%s, %s, %s, %s, %s",diffFlowSumOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),powerFlag[p].Data(),reducedCorrelationIndex[ew].Data())));
18699 if(diffFlowSumOfEventWeights[t][pe][p][ew])
18700 {
18701 this->SetDiffFlowSumOfEventWeights(diffFlowSumOfEventWeights[t][pe][p][ew],t,pe,p,ew);
18702 } else
18703 {
18704 cout<<"WARNING: diffFlowSumOfEventWeights[t][pe][p][ew] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18705 cout<<"t = "<<t<<endl;
18706 cout<<"pe = "<<pe<<endl;
18707 cout<<"power = "<<p<<endl;
18708 cout<<"ew = "<<ew<<endl;
18709 exit(0);
18710 }
18711 }
18712 } // end of for(Int_t p=0;p<2;p++) // power of event weights is either 1 or 2
18713 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18714 } // end of for(Int_t t=0;t<2;t++) // type is RP or POI
18715 //
18716 TList *diffFlowSumOfProductOfEventWeightsHistList[2][2] = {{NULL}};
18717 TString diffFlowSumOfProductOfEventWeightsName = "fDiffFlowSumOfProductOfEventWeights";
18718 diffFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
18719 TH1D *diffFlowSumOfProductOfEventWeights[2][2][8][8] = {{{{NULL}}}};
18720 for(Int_t t=0;t<2;t++) // type is RP or POI
18721 {
62e36168 18722 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18723 {
18724 diffFlowSumOfProductOfEventWeightsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Sum of products of event weights (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18725 if(!diffFlowSumOfProductOfEventWeightsHistList[t][pe])
18726 {
18727 cout<<"WARNING: diffFlowSumOfProductOfEventWeightsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18728 cout<<"t = "<<t<<endl;
18729 cout<<"pe = "<<pe<<endl;
18730 exit(0);
18731 }
18732 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18733 {
18734 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18735 {
18736 diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] = dynamic_cast<TH1D*>(diffFlowSumOfProductOfEventWeightsHistList[t][pe]->FindObject(Form("%s, %s, %s, %s, %s",diffFlowSumOfProductOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data())));
18737 if(diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2])
18738 {
18739 this->SetDiffFlowSumOfProductOfEventWeights(diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2],t,pe,mci1,mci2);
18740 } else
18741 {
18742 cout<<"WARNING: diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18743 cout<<"t = "<<t<<endl;
18744 cout<<"pe = "<<pe<<endl;
18745 cout<<"mci1 = "<<mci1<<endl;
18746 cout<<"mci2 = "<<mci2<<endl;
18747 exit(0);
18748 }
18749 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18750 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18751 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18752 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18753 } // end of for(Int_t t=0;t<2;t++) // type is RP or POI
18754
18755} // end void AliFlowAnalysisWithQCumulants::GetPointersForDiffFlowHistograms()
18756
e1d101a6 18757//=======================================================================================================================
489d5531 18758
1268c371 18759void AliFlowAnalysisWithQCumulants::BookEverythingFor2DDifferentialFlow()
18760{
18761 // Book all objects needed for 2D differential flow.
18762 // a) Define flags locally (to be improved: should I promote flags to data members?);
18763 // b) Book e-b-e quantities;
18764 // c) Book 2D profiles;
18765 // d) Book 2D histograms.
18766
18767 if(!fCalculate2DDiffFlow){return;}
18768
18769 // a) Define flags locally (to be improved: should I promote flags to data members?):
18770 TString typeFlag[2] = {"RP","POI"};
18771 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18772 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18773 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18774
18775 // b) Book e-b-e quantities:
18776 TProfile2D styleRe("typeMultiplePowerRe","typeMultiplePowerRe",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18777 TProfile2D styleIm("typeMultiplePowerIm","typeMultiplePowerIm",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18778 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18779 {
18780 for(Int_t m=0;m<4;m++)
18781 {
18782 for(Int_t k=0;k<9;k++)
18783 {
18784 fReRPQ2dEBE[t][m][k] = (TProfile2D*)styleRe.Clone(Form("typeFlag%dmultiple%dpower%dRe",t,m,k));
18785 fImRPQ2dEBE[t][m][k] = (TProfile2D*)styleIm.Clone(Form("typeFlag%dmultiple%dpower%dIm",t,m,k));
18786 }
18787 }
18788 }
18789 TProfile2D styleS("typePower","typePower",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18790 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18791 {
18792 for(Int_t k=0;k<9;k++)
18793 {
18794 fs2dEBE[t][k] = (TProfile2D*)styleS.Clone(Form("typeFlag%dpower%d",t,k));
18795 }
18796 }
18797
18798 // c) Book 2D profiles:
18799 TString s2DDiffFlowCorrelationsProName = "f2DDiffFlowCorrelationsPro";
18800 s2DDiffFlowCorrelationsProName += fAnalysisLabel->Data();
18801 for(Int_t t=0;t<2;t++) // type: RP or POI
18802 {
18803 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18804 {
18805 f2DDiffFlowCorrelationsPro[t][rci] = new TProfile2D(Form("%s, %s, %s",s2DDiffFlowCorrelationsProName.Data(),typeFlag[t].Data(),reducedCorrelationIndex[rci].Data()),Form("%s, %s, %s",s2DDiffFlowCorrelationsProName.Data(),typeFlag[t].Data(),reducedCorrelationIndex[rci].Data()),fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"");
18806 f2DDiffFlowCorrelationsPro[t][rci]->Sumw2();
18807 f2DDiffFlowCorrelationsPro[t][rci]->SetXTitle("p_{t}");
18808 f2DDiffFlowCorrelationsPro[t][rci]->SetYTitle("#eta");
18809 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlowCorrelationsPro[t][rci]);
18810 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18811 } // end of for(Int_t t=0;t<2;t++) // type: RP or POIs
18812
18813 // d) Book 2D histograms:
18814 TString s2DDiffFlowCumulantsName = "f2DDiffFlowCumulants";
18815 s2DDiffFlowCumulantsName += fAnalysisLabel->Data();
18816 TString s2DDiffFlowName = "f2DDiffFlow";
18817 s2DDiffFlowName += fAnalysisLabel->Data();
18818 for(Int_t t=0;t<2;t++) // type: RP or POI
18819 {
18820 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18821 {
18822 // 2D diferential cumulants:
18823 f2DDiffFlowCumulants[t][rci] = new TH2D(Form("%s, %s, %s",s2DDiffFlowCumulantsName.Data(),typeFlag[t].Data(),differentialCumulantIndex[rci].Data()),Form("%s, %s, %s",s2DDiffFlowCumulantsName.Data(),typeFlag[t].Data(),differentialCumulantIndex[rci].Data()),fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18824 f2DDiffFlowCumulants[t][rci]->SetXTitle("p_{t}");
18825 f2DDiffFlowCumulants[t][rci]->SetYTitle("#eta");
18826 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlowCumulants[t][rci]); // to be improved - moved to another list
18827 // 2D differential flow:
18828 f2DDiffFlow[t][rci] = new TH2D(Form("%s, %s, %s",s2DDiffFlowName.Data(),typeFlag[t].Data(),differentialFlowIndex[rci].Data()),Form("%s, %s, %s",s2DDiffFlowName.Data(),typeFlag[t].Data(),differentialFlowIndex[rci].Data()),fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18829 f2DDiffFlow[t][rci]->SetXTitle("p_{t}");
18830 f2DDiffFlow[t][rci]->SetYTitle("#eta");
18831 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlow[t][rci]); // to be improved - moved to another list
18832 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18833 } // end of for(Int_t t=0;t<2;t++) // type: RP or POIs
18834
18835} // void AliFlowAnalysisWithQCumulants::BookEverythingFor2DDifferentialFlow()
18836
e1d101a6 18837//=======================================================================================================================
489d5531 18838
18839void AliFlowAnalysisWithQCumulants::BookEverythingForDifferentialFlow()
18840{
18841 // Book all histograms and profiles needed for differential flow.
1268c371 18842 // a) Book profile to hold all flags for differential flow;
18843 // b) Define flags locally (to be improved: should I promote flags to data members?);
489d5531 18844 // c) Book e-b-e quantities;
18845 // d) Book profiles;
18846 // e) Book histograms holding final results.
18847
1268c371 18848 // a) Book profile to hold all flags for differential flow:
18849 TString diffFlowFlagsName = "fDiffFlowFlags";
18850 diffFlowFlagsName += fAnalysisLabel->Data();
62e36168 18851 fDiffFlowFlags = new TProfile(diffFlowFlagsName.Data(),"Flags for differential flow",6,0,6);
1268c371 18852 fDiffFlowFlags->SetTickLength(-0.01,"Y");
18853 fDiffFlowFlags->SetMarkerStyle(25);
18854 fDiffFlowFlags->SetLabelSize(0.04,"X");
18855 fDiffFlowFlags->SetLabelOffset(0.02,"Y");
e1d101a6 18856 fDiffFlowFlags->SetStats(kFALSE);
1268c371 18857 fDiffFlowFlags->GetXaxis()->SetBinLabel(1,"Calculate diff. flow");
18858 fDiffFlowFlags->GetXaxis()->SetBinLabel(2,"Particle weights");
18859 fDiffFlowFlags->GetXaxis()->SetBinLabel(3,"Event weights");
18860 fDiffFlowFlags->GetXaxis()->SetBinLabel(4,"Correct for NUA");
18861 fDiffFlowFlags->GetXaxis()->SetBinLabel(5,"Calculate 2D diff. flow");
62e36168 18862 fDiffFlowFlags->GetXaxis()->SetBinLabel(6,"Calculate diff. flow vs eta");
1268c371 18863 fDiffFlowList->Add(fDiffFlowFlags);
18864
18865 if(!fCalculateDiffFlow){return;}
18866
18867 // b) Define flags locally (to be improved: should I promote flags to data members?):
489d5531 18868 TString typeFlag[2] = {"RP","POI"};
18869 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18870 TString powerFlag[2] = {"linear","quadratic"};
18871 TString sinCosFlag[2] = {"sin","cos"};
18872 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18873 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18874 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
b40a910e 18875 TString reducedSquaredCorrelationIndex[4] = {"<2'>^{2}","<4'>^{2}","<6'>^{2}","<8'>^{2}"};
489d5531 18876 TString mixedCorrelationIndex[8] = {"<2>","<2'>","<4>","<4'>","<6>","<6'>","<8>","<8'>"};
18877 TString covarianceName[5] = {"Cov(<2>,<2'>)","Cov(<2>,<4'>)","Cov(<4>,<2'>)","Cov(<4>,<4'>)","Cov(<2'>,<4'>)"};
18878 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
18879 Double_t minPtEta[2] = {fPtMin,fEtaMin};
18880 Double_t maxPtEta[2] = {fPtMax,fEtaMax};
1268c371 18881
489d5531 18882 // c) Book e-b-e quantities:
18883 // Event-by-event r_{m*n,k}(pt,eta), p_{m*n,k}(pt,eta) and q_{m*n,k}(pt,eta)
18884 // Explanantion of notation:
18885 // 1.) n is harmonic, m is multiple of harmonic;
18886 // 2.) k is power of particle weight;
18887 // 3.) r_{m*n,k}(pt,eta) = Q-vector evaluated in harmonic m*n for RPs in particular (pt,eta) bin (i-th RP is weighted with w_i^k);
18888 // 4.) p_{m*n,k}(pt,eta) = Q-vector evaluated in harmonic m*n for POIs in particular (pt,eta) bin
18889 // (if i-th POI is also RP, than it is weighted with w_i^k);
18890 // 5.) q_{m*n,k}(pt,eta) = Q-vector evaluated in harmonic m*n for particles which are both RPs and POIs in particular (pt,eta) bin
18891 // (i-th RP&&POI is weighted with w_i^k)
18892
18893 // 1D:
18894 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP && POI )
18895 {
62e36168 18896 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18897 {
18898 for(Int_t m=0;m<4;m++) // multiple of harmonic
18899 {
18900 for(Int_t k=0;k<9;k++) // power of particle weight
18901 {
18902 fReRPQ1dEBE[t][pe][m][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%dpower%dRe",t,pe,m,k),
18903 Form("TypeFlag%dpteta%dmultiple%dpower%dRe",t,pe,m,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18904 fImRPQ1dEBE[t][pe][m][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%dpower%dIm",t,pe,m,k),
18905 Form("TypeFlag%dpteta%dmultiple%dpower%dIm",t,pe,m,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18906 }
18907 }
18908 }
18909 }
18910 // to be improved (add explanation of fs1dEBE[t][pe][k]):
18911 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18912 {
62e36168 18913 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18914 {
18915 for(Int_t k=0;k<9;k++) // power of particle weight
18916 {
18917 fs1dEBE[t][pe][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%d",t,pe,k),
18918 Form("TypeFlag%dpteta%dmultiple%d",t,pe,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18919 }
18920 }
18921 }
18922 // correction terms for nua:
18923 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18924 {
62e36168 18925 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18926 {
18927 for(Int_t sc=0;sc<2;sc++) // sin or cos
18928 {
18929 for(Int_t cti=0;cti<9;cti++) // correction term index
18930 {
18931 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti] = new TH1D(Form("typeFlag%d pteta%d sincos%d cti%d",t,pe,sc,cti),
18932 Form("typeFlag%d pteta%d sincos%d cti%d",t,pe,sc,cti),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18933 }
18934 }
18935 }
18936 }
489d5531 18937 // reduced correlations e-b-e:
18938 TString diffFlowCorrelationsEBEName = "fDiffFlowCorrelationsEBE";
18939 diffFlowCorrelationsEBEName += fAnalysisLabel->Data();
18940 for(Int_t t=0;t<2;t++) // type: RP or POI
18941 {
62e36168 18942 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18943 {
18944 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18945 {
18946 fDiffFlowCorrelationsEBE[t][pe][rci] = new TH1D(Form("%s, %s, %s, %s",diffFlowCorrelationsEBEName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),Form("%s, %s, %s, %s",diffFlowCorrelationsEBEName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18947 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18948 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18949 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18950 // event weights for reduced correlations e-b-e:
18951 TString diffFlowEventWeightsForCorrelationsEBEName = "fDiffFlowEventWeightsForCorrelationsEBE";
18952 diffFlowEventWeightsForCorrelationsEBEName += fAnalysisLabel->Data();
18953 for(Int_t t=0;t<2;t++) // type: RP or POI
18954 {
62e36168 18955 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18956 {
18957 for(Int_t rci=0;rci<4;rci++) // event weight for reduced correlation index
18958 {
18959 fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci] = new TH1D(Form("%s, %s, %s, eW for %s",diffFlowEventWeightsForCorrelationsEBEName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),Form("%s, %s, %s, eW for %s",diffFlowEventWeightsForCorrelationsEBEName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18960 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18961 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18962 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18963
18964 // d) Book profiles;
18965 // reduced correlations:
18966 TString diffFlowCorrelationsProName = "fDiffFlowCorrelationsPro";
18967 diffFlowCorrelationsProName += fAnalysisLabel->Data();
b40a910e 18968 // reduced squared correlations:
18969 TString diffFlowSquaredCorrelationsProName = "fDiffFlowSquaredCorrelationsPro";
18970 diffFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
489d5531 18971 // corrections terms:
18972 TString diffFlowCorrectionTermsForNUAProName = "fDiffFlowCorrectionTermsForNUAPro";
18973 diffFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
b40a910e 18974 // reduced correlations:
489d5531 18975 for(Int_t t=0;t<2;t++) // type: RP or POI
18976 {
62e36168 18977 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18978 {
18979 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18980 {
489d5531 18981 fDiffFlowCorrelationsPro[t][pe][rci] = new TProfile(Form("%s, %s, %s, %s",diffFlowCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),Form("%s, %s, %s, %s",diffFlowCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[rci].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe],"s");
b40a910e 18982 fDiffFlowCorrelationsPro[t][pe][rci]->Sumw2();
489d5531 18983 fDiffFlowCorrelationsPro[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
18984 fDiffFlowCorrelationsProList[t][pe]->Add(fDiffFlowCorrelationsPro[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
18985 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18986 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18987 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
b40a910e 18988 // reduced squared correlations:
18989 for(Int_t t=0;t<2;t++) // type: RP or POI
18990 {
62e36168 18991 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
b40a910e 18992 {
18993 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18994 {
18995 fDiffFlowSquaredCorrelationsPro[t][pe][rci] = new TProfile(Form("%s, %s, %s, %s",diffFlowSquaredCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedSquaredCorrelationIndex[rci].Data()),Form("%s, %s, %s, %s",diffFlowSquaredCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedSquaredCorrelationIndex[rci].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe],"s");
18996 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->Sumw2();
18997 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
18998 fDiffFlowCorrelationsProList[t][pe]->Add(fDiffFlowSquaredCorrelationsPro[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
18999 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
19000 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
19001 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
489d5531 19002 // correction terms for nua:
19003 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19004 {
62e36168 19005 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19006 {
19007 for(Int_t sc=0;sc<2;sc++) // sin or cos
19008 {
19009 for(Int_t cti=0;cti<9;cti++) // correction term index
19010 {
19011 fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] = new TProfile(Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19012 fDiffFlowCorrectionsProList[t][pe]->Add(fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]);
19013 }
19014 }
19015 }
19016 }
64e500e3 19017 // Other differential correlators:
19018 TString otherDiffCorrelatorsName = "fOtherDiffCorrelators";
19019 otherDiffCorrelatorsName += fAnalysisLabel->Data();
19020 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19021 {
62e36168 19022 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 19023 {
19024 for(Int_t sc=0;sc<2;sc++) // sin or cos
19025 {
19026 for(Int_t ci=0;ci<1;ci++) // correlator index
19027 {
19028 fOtherDiffCorrelators[t][pe][sc][ci] = new TProfile(Form("%s, %s, %s, %s, ci = %d",otherDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1),Form("%s, %s, %s, %s, ci = %d",otherDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19029 fOtherDiffCorrelators[t][pe][sc][ci]->Sumw2();
19030 fOtherDiffCorrelatorsList->Add(fOtherDiffCorrelators[t][pe][sc][ci]);
19031 }
19032 }
19033 }
19034 }
489d5531 19035 // e) Book histograms holding final results.
19036 // reduced correlations:
19037 TString diffFlowCorrelationsHistName = "fDiffFlowCorrelationsHist";
19038 diffFlowCorrelationsHistName += fAnalysisLabel->Data();
19039 // corrections terms:
19040 TString diffFlowCorrectionTermsForNUAHistName = "fDiffFlowCorrectionTermsForNUAHist";
19041 diffFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
19042 // differential covariances:
19043 TString diffFlowCovariancesName = "fDiffFlowCovariances";
19044 diffFlowCovariancesName += fAnalysisLabel->Data();
19045 // differential Q-cumulants:
19046 TString diffFlowCumulantsName = "fDiffFlowCumulants";
19047 diffFlowCumulantsName += fAnalysisLabel->Data();
1268c371 19048 // Detector bias to differential Q-cumulants:
19049 TString diffFlowDetectorBiasName = "fDiffFlowDetectorBias";
19050 diffFlowDetectorBiasName += fAnalysisLabel->Data();
489d5531 19051 // differential flow:
19052 TString diffFlowName = "fDiffFlow";
19053 diffFlowName += fAnalysisLabel->Data();
19054 for(Int_t t=0;t<2;t++) // type: RP or POI
19055 {
62e36168 19056 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19057 {
19058 for(Int_t index=0;index<4;index++)
19059 {
19060 // reduced correlations:
19061 fDiffFlowCorrelationsHist[t][pe][index] = new TH1D(Form("%s, %s, %s, %s",diffFlowCorrelationsHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[index].Data()),Form("%s, %s, %s, %s",diffFlowCorrelationsHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[index].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19062 fDiffFlowCorrelationsHist[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19063 fDiffFlowCorrelationsHistList[t][pe]->Add(fDiffFlowCorrelationsHist[t][pe][index]);
19064 // differential Q-cumulants:
19065 fDiffFlowCumulants[t][pe][index] = new TH1D(Form("%s, %s, %s, %s",diffFlowCumulantsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data()),Form("%s, %s, %s, %s",diffFlowCumulantsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19066 fDiffFlowCumulants[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19067 fDiffFlowCumulantsHistList[t][pe]->Add(fDiffFlowCumulants[t][pe][index]);
1268c371 19068 // Detector bias to differential Q-cumulants:
19069 fDiffFlowDetectorBias[t][pe][index] = new TH1D(Form("%s, %s, %s, %s",diffFlowDetectorBiasName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data()),Form("%s, %s, %s, %s",diffFlowDetectorBiasName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialCumulantIndex[index].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19070 fDiffFlowDetectorBias[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19071 fDiffFlowDetectorBias[t][pe][index]->SetTitle(Form("#frac{corrected}{measured} %s",differentialCumulantIndex[index].Data()));
19072 fDiffFlowDetectorBiasHistList[t][pe]->Add(fDiffFlowDetectorBias[t][pe][index]);
489d5531 19073 // differential flow estimates from Q-cumulants:
19074 fDiffFlow[t][pe][index] = new TH1D(Form("%s, %s, %s, %s",diffFlowName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialFlowIndex[index].Data()),Form("%s, %s, %s, %s",diffFlowName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),differentialFlowIndex[index].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19075 fDiffFlow[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19076 fDiffFlowHistList[t][pe]->Add(fDiffFlow[t][pe][index]);
19077 } // end of for(Int_t index=0;index<4;index++)
19078 for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
19079 {
19080 // differential covariances:
19081 fDiffFlowCovariances[t][pe][covIndex] = new TH1D(Form("%s, %s, %s, %s",diffFlowCovariancesName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),covarianceName[covIndex].Data()),Form("%s, %s, %s, %s",diffFlowCovariancesName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),covarianceName[covIndex].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19082 fDiffFlowCovariances[t][pe][covIndex]->SetXTitle(ptEtaFlag[pe].Data());
19083 fDiffFlowCovariancesHistList[t][pe]->Add(fDiffFlowCovariances[t][pe][covIndex]);
19084 } // end of for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
19085 // products of both types of correlations:
19086 TString diffFlowProductOfCorrelationsProName = "fDiffFlowProductOfCorrelationsPro";
19087 diffFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
19088 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19089 {
19090 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19091 {
19092 fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2] = new TProfile(Form("%s, %s, %s, %s, %s",diffFlowProductOfCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data()),Form("%s, %s, %s, %s #times %s",diffFlowProductOfCorrelationsProName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19093 fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2]->SetXTitle(ptEtaFlag[pe].Data());
19094 fDiffFlowProductOfCorrelationsProList[t][pe]->Add(fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2]);
19095 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
19096 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19097 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19098 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
19099 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
19100 // sums of event weights for reduced correlations:
19101 TString diffFlowSumOfEventWeightsName = "fDiffFlowSumOfEventWeights";
19102 diffFlowSumOfEventWeightsName += fAnalysisLabel->Data();
19103 for(Int_t t=0;t<2;t++) // type is RP or POI
19104 {
62e36168 19105 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19106 {
19107 for(Int_t p=0;p<2;p++) // power of weights is either 1 or 2
19108 {
19109 for(Int_t ew=0;ew<4;ew++) // index of reduced correlation
19110 {
19111 fDiffFlowSumOfEventWeights[t][pe][p][ew] = new TH1D(Form("%s, %s, %s, %s, %s",diffFlowSumOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),powerFlag[p].Data(),reducedCorrelationIndex[ew].Data()),Form("%s, %s, %s, power = %s, %s",diffFlowSumOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),powerFlag[p].Data(),reducedCorrelationIndex[ew].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19112 fDiffFlowSumOfEventWeights[t][pe][p][ew]->SetXTitle(ptEtaFlag[pe].Data());
19113 fDiffFlowSumOfEventWeightsHistList[t][pe][p]->Add(fDiffFlowSumOfEventWeights[t][pe][p][ew]); // to be improved (add dedicated list to hold all this)
19114 }
19115 }
19116 }
19117 }
19118 // sum of products of event weights for both types of correlations:
19119 TString diffFlowSumOfProductOfEventWeightsName = "fDiffFlowSumOfProductOfEventWeights";
19120 diffFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
19121 for(Int_t t=0;t<2;t++) // type is RP or POI
19122 {
62e36168 19123 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19124 {
19125 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19126 {
19127 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19128 {
19129 fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] = new TH1D(Form("%s, %s, %s, %s, %s",diffFlowSumOfProductOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data()),Form("%s, %s, %s, %s #times %s",diffFlowSumOfProductOfEventWeightsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),mixedCorrelationIndex[mci1].Data(),mixedCorrelationIndex[mci2].Data()),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19130 fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2]->SetXTitle(ptEtaFlag[pe].Data());
19131 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]->Add(fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2]);
19132 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
19133 }
19134 }
19135 }
19136 }
19137 // correction terms for nua:
19138 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19139 {
62e36168 19140 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19141 {
19142 for(Int_t sc=0;sc<2;sc++) // sin or cos
19143 {
19144 for(Int_t cti=0;cti<9;cti++) // correction term index
19145 {
19146 fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] = new TH1D(Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),Form("%s, %s, %s, %s, cti = %d",diffFlowCorrectionTermsForNUAHistName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
19147 fDiffFlowCorrectionsHistList[t][pe]->Add(fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti]);
19148 }
19149 }
19150 }
19151 }
19152
19153} // end of AliFlowAnalysisWithQCumulants::BookEverythingForDifferentialFlow()
19154
e1d101a6 19155//=======================================================================================================================
489d5531 19156
489d5531 19157void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow()
19158{
19159 // Calculate generalized Q-cumulants (cumulants corrected for non-unifom acceptance).
19160
b92ea2b9 19161 // Isotropic cumulants:
53884472 19162 Double_t QC2 = fIntFlowQcumulants->GetBinContent(1);
19163 Double_t QC2Error = fIntFlowQcumulants->GetBinError(1);
19164 Double_t QC4 = fIntFlowQcumulants->GetBinContent(2);
19165 Double_t QC4Error = fIntFlowQcumulants->GetBinError(2);
19166 //Double_t QC6 = fIntFlowQcumulants->GetBinContent(3);
19167 //Double_t QC6Error = fIntFlowQcumulants->GetBinError(3);
19168 //Double_t QC8 = fIntFlowQcumulants->GetBinContent(4);
19169 //Double_t QC8Error = fIntFlowQcumulants->GetBinError(4);
b92ea2b9 19170
19171 // Measured 2-, 4-, 6- and 8-particle correlations:
489d5531 19172 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
b92ea2b9 19173 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1); // statistical error of <<2>>
489d5531 19174 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
b92ea2b9 19175 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2); // statistical error of <<4>>
489d5531 19176 //Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
489d5531 19177 //Double_t sixError = fIntFlowCorrelationsHist->GetBinError(3); // statistical error of <<6>>
b92ea2b9 19178 //Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
489d5531 19179 //Double_t eightError = fIntFlowCorrelationsHist->GetBinError(4); // statistical error of <<8>>
b92ea2b9 19180
19181 // Non-isotropic terms:
19182 Double_t c1 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(1); // <<cos(n*phi1)>>
19183 Double_t c1Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(1); // statistical error of <<cos(n*phi1)>>
19184 Double_t c2 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(2); // <<cos(n*(phi1+phi2))>>
19185 Double_t c2Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(2); // statistical error of <<cos(n*(phi1+phi2))>>
19186 Double_t c3 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(3); // <<cos(n*(phi1-phi2-phi3))>>
19187 Double_t c3Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(3); // statistical error of <<cos(n*(phi1-phi2-phi3))>>
19188 Double_t s1 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(1); // <<sin(n*phi1)>>
19189 Double_t s1Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(1); // statistical error of <<sin(n*phi1)>>
19190 Double_t s2 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(2); // <<sin(n*(phi1+phi2))>>
19191 Double_t s2Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(2); // statistical error of <<sin(n*(phi1+phi2))>>
19192 Double_t s3 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(3); // <<sin(n*(phi1-phi2-phi3))>>
19193 Double_t s3Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(3); // statistical error of <<sin(n*(phi1-phi2-phi3))>>
19194
19195 // Shortcuts:
19196 Double_t a1 = 2.*pow(c1,2.)+2.*pow(s1,2.)-two;
19197 Double_t a2 = 6.*pow(c1,3.)-2.*c1*c2+c3+6.*c1*pow(s1,2.)-2.*s1*s2-4.*c1*two;
19198 Double_t a3 = 2.*pow(s1,2.)-2.*pow(c1,2.)+c2;
19199 Double_t a4 = 6.*pow(s1,3.)+6.*pow(c1,2.)*s1+2.*c2*s1-2.*c1*s2-s3-4.*s1*two;
19200 Double_t a5 = 4.*c1*s1-s2;
19201
19202 // Covariances (including weight dependent prefactor):
8e1cefdd 19203 Double_t wCov1 = 0.; // w*Cov(<2>,<cos(phi))
19204 Double_t wCov2 = 0.; // w*Cov(<2>,<sin(phi))
19205 Double_t wCov3 = 0.; // w*Cov(<cos(phi),<sin(phi))
19206 Double_t wCov4 = 0.; // w*Cov(<2>,<4>)
19207 Double_t wCov5 = 0.; // w*Cov(<2>,<cos(#phi_{1}+#phi_{2})>)
19208 Double_t wCov6 = 0.; // w*Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19209 Double_t wCov7 = 0.; // w*Cov(<2>,<sin(#phi_{1}+#phi_{2})>)
19210 Double_t wCov8 = 0.; // w*Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19211 Double_t wCov9 = 0.; // w*Cov(<4>,<cos(#phi)>
19212 Double_t wCov10 = 0.; // w*Cov(<4>,<cos(#phi_{1}+#phi_{2})>)
19213 Double_t wCov11 = 0.; // w*Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19214 Double_t wCov12 = 0.; // w*Cov(<4>,<sin(#phi)>
19215 Double_t wCov13 = 0.; // w*Cov(<4>,<sin(#phi_{1}+#phi_{2})>)
19216 Double_t wCov14 = 0.; // w*Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19217 Double_t wCov15 = 0.; // w*Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19218 Double_t wCov16 = 0.; // w*Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19219 Double_t wCov17 = 0.; // w*Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19220 Double_t wCov18 = 0.; // w*Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19221 Double_t wCov19 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19222 Double_t wCov20 = 0.; // w*Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19223 Double_t wCov21 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)
19224 Double_t wCov22 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19225 Double_t wCov23 = 0.; // w*Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19226 Double_t wCov24 = 0.; // w*Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19227 Double_t wCov25 = 0.; // w*Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)
19228 Double_t wCov26 = 0.; // w*Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19229 Double_t wCov27 = 0.; // w*Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19230 Double_t wCov28 = 0.; // w*Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19231 if(!fForgetAboutCovariances)
19232 {
19233 wCov1 = fIntFlowCovariancesNUA->GetBinContent(1); // w*Cov(<2>,<cos(phi))
19234 wCov2 = fIntFlowCovariancesNUA->GetBinContent(2); // w*Cov(<2>,<sin(phi))
19235 wCov3 = fIntFlowCovariancesNUA->GetBinContent(3); // w*Cov(<cos(phi),<sin(phi))
19236 wCov4 = fIntFlowCovariances->GetBinContent(1); // w*Cov(<2>,<4>)
19237 wCov5 = fIntFlowCovariancesNUA->GetBinContent(4); // w*Cov(<2>,<cos(#phi_{1}+#phi_{2})>)
19238 wCov6 = fIntFlowCovariancesNUA->GetBinContent(6); // w*Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19239 wCov7 = fIntFlowCovariancesNUA->GetBinContent(5); // w*Cov(<2>,<sin(#phi_{1}+#phi_{2})>)
19240 wCov8 = fIntFlowCovariancesNUA->GetBinContent(7); // w*Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19241 wCov9 = fIntFlowCovariancesNUA->GetBinContent(8); // w*Cov(<4>,<cos(#phi)>
19242 wCov10 = fIntFlowCovariancesNUA->GetBinContent(10); // w*Cov(<4>,<cos(#phi_{1}+#phi_{2})>)
19243 wCov11 = fIntFlowCovariancesNUA->GetBinContent(12); // w*Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19244 wCov12 = fIntFlowCovariancesNUA->GetBinContent(9); // w*Cov(<4>,<sin(#phi)>
19245 wCov13 = fIntFlowCovariancesNUA->GetBinContent(11); // w*Cov(<4>,<sin(#phi_{1}+#phi_{2})>)
19246 wCov14 = fIntFlowCovariancesNUA->GetBinContent(13); // w*Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19247 wCov15 = fIntFlowCovariancesNUA->GetBinContent(14); // w*Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19248 wCov16 = fIntFlowCovariancesNUA->GetBinContent(16); // w*Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19249 wCov17 = fIntFlowCovariancesNUA->GetBinContent(15); // w*Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19250 wCov18 = fIntFlowCovariancesNUA->GetBinContent(17); // w*Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19251 wCov19 = fIntFlowCovariancesNUA->GetBinContent(23); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19252 wCov20 = fIntFlowCovariancesNUA->GetBinContent(18); // w*Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19253 wCov21 = fIntFlowCovariancesNUA->GetBinContent(22); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)
19254 wCov22 = fIntFlowCovariancesNUA->GetBinContent(24); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19255 wCov23 = fIntFlowCovariancesNUA->GetBinContent(20); // w*Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19256 wCov24 = fIntFlowCovariancesNUA->GetBinContent(25); // w*Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19257 wCov25 = fIntFlowCovariancesNUA->GetBinContent(27); // w*Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)
19258 wCov26 = fIntFlowCovariancesNUA->GetBinContent(19); // w*Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19259 wCov27 = fIntFlowCovariancesNUA->GetBinContent(21); // w*Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19260 wCov28 = fIntFlowCovariancesNUA->GetBinContent(26); // w*Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19261 } // end of if(!fForgetAboutCovariances)
19262
b92ea2b9 19263 // Calculating generalized QC{2}:
19264 // Generalized QC{2}:
19265 Double_t gQC2 = two - pow(c1,2.) - pow(s1,2.);
19266 if(fApplyCorrectionForNUA){fIntFlowQcumulants->SetBinContent(1,gQC2);}
19267 // Statistical error of generalized QC{2}:
19268 Double_t gQC2ErrorSquared = pow(twoError,2.)+4.*pow(c1,2.)*pow(c1Error,2.)
19269 + 4.*pow(s1,2.)*pow(s1Error,2.)
19270 - 4*c1*wCov1-4*s1*wCov2
19271 + 8.*c1*s1*wCov3;
19272 // Store ratio of error squared - with/without NUA terms:
19273 Double_t ratioErrorSquaredQC2 = 0.;
19274 if(fIntFlowQcumulants->GetBinError(1)>0.)
19275 {
19276 ratioErrorSquaredQC2 = (gQC2ErrorSquared/pow(fIntFlowQcumulants->GetBinError(1),2.));
19277 fIntFlowQcumulantsErrorSquaredRatio->SetBinContent(1,ratioErrorSquaredQC2);
19278 }
19279 // If enabled, store error by including non-isotropic terms:
b77b6434 19280 if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19281 {
19282 if(gQC2ErrorSquared>=0.)
19283 {
19284 fIntFlowQcumulants->SetBinError(1,pow(gQC2ErrorSquared,0.5));
19285 } else
19286 {
19287 fIntFlowQcumulants->SetBinError(1,0.);
19288 cout<<endl;
19289 cout<<" WARNING (QC): Statistical error of generalized QC{2} is imaginary !!!!"<<endl;
19290 cout<<endl;
19291 }
b77b6434 19292 } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19293 // Quantify detector bias to QC{2}:
53884472 19294 if(TMath::Abs(QC2)>0.)
b92ea2b9 19295 {
53884472 19296 fIntFlowDetectorBias->SetBinContent(1,gQC2/QC2);
19297 if(QC2Error>0.)
b92ea2b9 19298 {
53884472 19299 Double_t errorSquared = gQC2ErrorSquared/pow(QC2,2.)+pow(gQC2,2.)*pow(QC2Error,2.)/pow(QC2,4.);
b92ea2b9 19300 if(errorSquared>0.)
19301 {
19302 fIntFlowDetectorBias->SetBinError(1,pow(errorSquared,0.5));
19303 }
19304 }
53884472 19305 } // end of if(TMath::Abs(QC2)>0.)
b92ea2b9 19306
19307 // Calculating generalized QC{4}:
19308 // Generalized QC{4}:
19309 Double_t gQC4 = four-2.*pow(two,2.)
19310 - 4.*c1*c3+4.*s1*s3-pow(c2,2.)-pow(s2,2.)
19311 + 4.*c2*(pow(c1,2.)-pow(s1,2.))+8.*s2*s1*c1
19312 + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.);
19313 if(fApplyCorrectionForNUA){fIntFlowQcumulants->SetBinContent(2,gQC4);}
19314 // Statistical error of generalized QC{4}:
19315 Double_t gQC4ErrorSquared = 16.*pow(a1,2.)*pow(twoError,2.)+pow(fourError,2.)+16.*pow(a2,2.)*pow(c1Error,2.)
19316 + 4.*pow(a3,2.)*pow(c2Error,2.)+16.*pow(c1,2.)*pow(c3Error,2.)
19317 + 16.*pow(a4,2.)*pow(s1Error,2.)+4.*pow(a5,2.)*pow(s2Error,2.)
19318 + 16.*pow(s1,2.)*pow(s3Error,2.)+8.*a1*wCov4-32.*a1*a2*wCov1
19319 - 16.*a3*a1*wCov5-32.*c1*a1*wCov6-32.*a1*a4*wCov2+16.*a5*a1*wCov7
19320 + 32.*s1*a1*wCov8-8.*a2*wCov9-4.*a3*wCov10-8.*c1*wCov11-8.*a4*wCov12
19321 + 4.*a5*wCov13+8.*s1*wCov14+16.*a3*a2*wCov15+32.*c1*a2*wCov16+32.*a2*a4*wCov3
19322 - 16.*a5*a2*wCov17-32.*s1*a2*wCov18+16.*c1*a3*wCov19+16.*a3*a4*wCov20
19323 - 8.*a3*a5*wCov21-16.*s1*a3*wCov22+32.*c1*a4*wCov23-16.*c1*a5*wCov24
19324 - 32.*c1*s1*wCov25-16.*a5*a4*wCov26-32.*s1*a4*wCov27+16.*s1*a5*wCov28;
19325 // Store ratio of error squared - with/without NUA terms:
19326 Double_t ratioErrorSquaredQC4 = 0.;
19327 if(fIntFlowQcumulants->GetBinError(2)>0.)
19328 {
19329 ratioErrorSquaredQC4 = (gQC4ErrorSquared/pow(fIntFlowQcumulants->GetBinError(2),2.));
19330 fIntFlowQcumulantsErrorSquaredRatio->SetBinContent(2,ratioErrorSquaredQC4);
19331 }
b77b6434 19332 if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19333 {
19334 if(gQC4ErrorSquared>=0.)
19335 {
19336 fIntFlowQcumulants->SetBinError(2,pow(gQC4ErrorSquared,0.5));
19337 } else
19338 {
19339 fIntFlowQcumulants->SetBinError(2,0.);
19340 cout<<endl;
19341 cout<<" WARNING (QC): Statistical error of generalized QC{4} is imaginary !!!!"<<endl;
19342 cout<<endl;
19343 }
b77b6434 19344 } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19345 // Quantify detector bias to QC{4}:
53884472 19346 if(TMath::Abs(QC4)>0.)
b92ea2b9 19347 {
53884472 19348 fIntFlowDetectorBias->SetBinContent(2,gQC4/QC4);
19349 if(QC4Error>0.)
b92ea2b9 19350 {
53884472 19351 Double_t errorSquared = gQC4ErrorSquared/pow(QC4,2.)+pow(gQC4,2.)*pow(QC4Error,2.)/pow(QC4,4.);
b92ea2b9 19352 if(errorSquared>0.)
19353 {
19354 fIntFlowDetectorBias->SetBinError(2,pow(errorSquared,0.5));
19355 }
19356 }
53884472 19357 } // end of if(TMath::Abs(QC4)>0.)
489d5531 19358
b92ea2b9 19359
19360 // .... to be improved (continued for 6th and 8th order) ....
19361
19362
2001bc3a 19363 // versus multiplicity:
b77b6434 19364 if(fCalculateCumulantsVsM) // to be improved - propagate error for nua terms vs M
2001bc3a 19365 {
19366 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
b77b6434 19367 Double_t value[4] = {0.}; // QCs vs M
19368 Double_t error[4] = {0.}; // error of QCs vs M
19369 Double_t dSum1[4] = {0.}; // sum value_i/(error_i)^2
19370 Double_t dSum2[4] = {0.}; // sum 1/(error_i)^2
2001bc3a 19371 for(Int_t b=1;b<=nBins;b++)
19372 {
b92ea2b9 19373 // Measured correlations:
2001bc3a 19374 two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>> vs M
19375 four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>> vs M
b92ea2b9 19376 // Isotropic cumulants:
53884472 19377 QC2 = two;
19378 QC4 = four-2.*pow(two,2.);
b92ea2b9 19379 // Non-isotropic terms:
19380 c1 = fIntFlowCorrectionTermsForNUAVsMPro[1][0]->GetBinContent(b); // <<cos(n*phi1)>>
19381 c2 = fIntFlowCorrectionTermsForNUAVsMPro[1][1]->GetBinContent(b); // <<cos(n*(phi1+phi2))>>
19382 c3 = fIntFlowCorrectionTermsForNUAVsMPro[1][2]->GetBinContent(b); // <<cos(n*(phi1-phi2-phi3))>>
19383 s1 = fIntFlowCorrectionTermsForNUAVsMPro[0][0]->GetBinContent(b); // <<sin(n*phi1)>>
19384 s2 = fIntFlowCorrectionTermsForNUAVsMPro[0][1]->GetBinContent(b); // <<sin(n*(phi1+phi2))>>
19385 s3 = fIntFlowCorrectionTermsForNUAVsMPro[0][2]->GetBinContent(b); // <<sin(n*(phi1-phi2-phi3))>>
19386 // Generalized QC{2} vs M:
19387 gQC2 = two - pow(c1,2.) - pow(s1,2.);
b77b6434 19388 if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[0]->SetBinContent(b,gQC2);}
b92ea2b9 19389 // Generalized QC{4} vs M:
19390 gQC4 = four-2.*pow(two,2.)
19391 - 4.*c1*c3+4.*s1*s3-pow(c2,2.)-pow(s2,2.)
19392 + 4.*c2*(pow(c1,2.)-pow(s1,2.))+8.*s2*s1*c1
19393 + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.);
b77b6434 19394 if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[1]->SetBinContent(b,gQC4);}
b92ea2b9 19395 // Detector bias vs M:
53884472 19396 if(TMath::Abs(QC2)>0.)
b92ea2b9 19397 {
53884472 19398 fIntFlowDetectorBiasVsM[0]->SetBinContent(b,gQC2/QC2);
19399 } // end of if(TMath::Abs(QC2)>0.)
19400 if(TMath::Abs(QC4)>0.)
b92ea2b9 19401 {
53884472 19402 fIntFlowDetectorBiasVsM[1]->SetBinContent(b,gQC4/QC4);
19403 } // end of if(TMath::Abs(QC4)>0.)
b77b6434 19404 // Rebin in M:
19405 for(Int_t co=0;co<4;co++)
19406 {
19407 value[co] = fIntFlowQcumulantsVsM[co]->GetBinContent(b);
19408 error[co] = fIntFlowQcumulantsVsM[co]->GetBinError(b);
19409 if(error[co]>0.)
19410 {
19411 dSum1[co]+=value[co]/(error[co]*error[co]);
19412 dSum2[co]+=1./(error[co]*error[co]);
19413 }
19414 } // end of for(Int_t co=0;co<4;co++)
19415 } // end of for(Int_t b=1;b<=nBins;b++)
19416 // Store rebinned Q-cumulants:
19417 if(fApplyCorrectionForNUAVsM)
19418 {
19419 for(Int_t co=0;co<4;co++)
19420 {
19421 if(dSum2[co]>0.)
19422 {
19423 fIntFlowQcumulantsRebinnedInM->SetBinContent(co+1,dSum1[co]/dSum2[co]);
19424 fIntFlowQcumulantsRebinnedInM->SetBinError(co+1,pow(1./dSum2[co],0.5));
19425 }
19426 } // end of for(Int_t co=0;co<4;co++)
19427 } // end of if(fApplyCorrectionForNUAVsM)
19428 } // end of if(fCalculateCumulantsVsM)
2001bc3a 19429
489d5531 19430} // end of void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow()
0328db2d 19431
e1d101a6 19432//=======================================================================================================================
489d5531 19433
489d5531 19434void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUAIntFlow()
19435{
0328db2d 19436 // From profile fIntFlowCorrectionTermsForNUAPro[sc] access measured correction terms for NUA
489d5531 19437 // and their spread, correctly calculate the statistical errors and store the final
0328db2d 19438 // results and statistical errors for correction terms for NUA in histogram fIntFlowCorrectionTermsForNUAHist[sc].
489d5531 19439 //
19440 // Remark: Statistical error of correction temrs is calculated as:
19441 //
19442 // statistical error = termA * spread * termB:
19443 // termA = sqrt{sum_{i=1}^{N} w^2}/(sum_{i=1}^{N} w)
19444 // termB = 1/sqrt(1-termA^2)
19445
b92ea2b9 19446 TString sinCosFlag[2] = {"sin","cos"}; // to be improved - promore this to data member?
19447 TString nonisotropicTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
19448
489d5531 19449 for(Int_t sc=0;sc<2;sc++) // sin or cos correction terms
19450 {
b92ea2b9 19451 for(Int_t ci=1;ci<=4;ci++) // correction term index (to be improved - hardwired 4)
489d5531 19452 {
19453 Double_t correction = fIntFlowCorrectionTermsForNUAPro[sc]->GetBinContent(ci);
0328db2d 19454 Double_t spread = fIntFlowCorrectionTermsForNUAPro[sc]->GetBinError(ci);
19455 Double_t sumOfLinearEventWeights = fIntFlowSumOfEventWeightsNUA[sc][0]->GetBinContent(ci);
19456 Double_t sumOfQuadraticEventWeights = fIntFlowSumOfEventWeightsNUA[sc][1]->GetBinContent(ci);
19457 Double_t termA = 0.;
19458 Double_t termB = 0.;
b92ea2b9 19459 if(TMath::Abs(sumOfLinearEventWeights)>1.e-44)
0328db2d 19460 {
19461 termA = pow(sumOfQuadraticEventWeights,0.5)/sumOfLinearEventWeights;
19462 } else
19463 {
b92ea2b9 19464 cout<<" WARNING (QC): sumOfLinearEventWeights == 0 in AFAWQC::FCTFNIF() !!!!"<<endl;
19465 cout<<Form(" (for <<%s[%s]>> non-isotropic term)",sinCosFlag[sc].Data(),nonisotropicTermFlag[ci-1].Data())<<endl;
0328db2d 19466 }
489d5531 19467 if(1.-pow(termA,2.) > 0.)
19468 {
19469 termB = 1./pow(1-pow(termA,2.),0.5);
19470 } else
19471 {
b92ea2b9 19472 cout<<" WARNING (QC): 1.-pow(termA,2.) <= 0 in AFAWQC::FCTFNIF() !!!!"<<endl;
19473 cout<<Form(" (for <<%s[%s]>> non-isotropic term)",sinCosFlag[sc].Data(),nonisotropicTermFlag[ci-1].Data())<<endl;
489d5531 19474 }
19475 Double_t statisticalError = termA * spread * termB;
489d5531 19476 fIntFlowCorrectionTermsForNUAHist[sc]->SetBinContent(ci,correction);
0328db2d 19477 fIntFlowCorrectionTermsForNUAHist[sc]->SetBinError(ci,statisticalError);
b92ea2b9 19478 } // end of for(Int_t ci=1;ci<=4;ci++) // correction term index
489d5531 19479 } // end of for(Int sc=0;sc<2;sc++) // sin or cos correction terms
19480
19481} // end of void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUAIntFlow()
19482
e1d101a6 19483//=======================================================================================================================
489d5531 19484
489d5531 19485void AliFlowAnalysisWithQCumulants::GetPointersForNestedLoopsHistograms()
19486{
19487 // Get pointers to all objects relevant for calculations with nested loops.
19488
19489 TList *nestedLoopsList = dynamic_cast<TList*>(fHistList->FindObject("Nested Loops"));
19490 if(nestedLoopsList)
19491 {
19492 this->SetNestedLoopsList(nestedLoopsList);
19493 } else
19494 {
19495 cout<<"WARNING: nestedLoopsList is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19496 exit(0);
19497 }
19498
19499 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
19500 TString typeFlag[2] = {"RP","POI"}; // to be improved (should I promote this to data members?)
19501 TString ptEtaFlag[2] = {"p_{T}","#eta"}; // to be improved (should I promote this to data members?)
19502 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"}; // to be improved (should I promote this to data members?)
19503
19504 TString evaluateNestedLoopsName = "fEvaluateNestedLoops";
19505 evaluateNestedLoopsName += fAnalysisLabel->Data();
19506 TProfile *evaluateNestedLoops = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(evaluateNestedLoopsName.Data()));
19507 Bool_t bEvaluateIntFlowNestedLoops = kFALSE;
19508 Bool_t bEvaluateDiffFlowNestedLoops = kFALSE;
19509 if(evaluateNestedLoops)
19510 {
19511 this->SetEvaluateNestedLoops(evaluateNestedLoops);
19512 bEvaluateIntFlowNestedLoops = (Int_t)evaluateNestedLoops->GetBinContent(1);
19513 bEvaluateDiffFlowNestedLoops = (Int_t)evaluateNestedLoops->GetBinContent(2);
19514 }
19515 // nested loops relevant for integrated flow:
19516 if(bEvaluateIntFlowNestedLoops)
19517 {
19518 // correlations:
19519 TString intFlowDirectCorrelationsName = "fIntFlowDirectCorrelations";
19520 intFlowDirectCorrelationsName += fAnalysisLabel->Data();
19521 TProfile *intFlowDirectCorrelations = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(intFlowDirectCorrelationsName.Data()));
19522 if(intFlowDirectCorrelations)
19523 {
19524 this->SetIntFlowDirectCorrelations(intFlowDirectCorrelations);
19525 } else
19526 {
19527 cout<<"WARNING: intFlowDirectCorrelations is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19528 exit(0);
19529 }
403e3389 19530 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 19531 {
19532 TString intFlowExtraDirectCorrelationsName = "fIntFlowExtraDirectCorrelations";
19533 intFlowExtraDirectCorrelationsName += fAnalysisLabel->Data();
19534 TProfile *intFlowExtraDirectCorrelations = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(intFlowExtraDirectCorrelationsName.Data()));
19535 if(intFlowExtraDirectCorrelations)
19536 {
19537 this->SetIntFlowExtraDirectCorrelations(intFlowExtraDirectCorrelations);
19538 } else
19539 {
19540 cout<<"WARNING: intFlowExtraDirectCorrelations is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19541 exit(0);
19542 }
403e3389 19543 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 19544 // correction terms for non-uniform acceptance:
19545 TString intFlowDirectCorrectionTermsForNUAName = "fIntFlowDirectCorrectionTermsForNUA";
19546 intFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
19547 TProfile *intFlowDirectCorrectionTermsForNUA[2] = {NULL};
19548 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
19549 {
19550 intFlowDirectCorrectionTermsForNUA[sc] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s: %s terms",intFlowDirectCorrectionTermsForNUAName.Data(),sinCosFlag[sc].Data())));
19551 if(intFlowDirectCorrectionTermsForNUA[sc])
19552 {
19553 this->SetIntFlowDirectCorrectionTermsForNUA(intFlowDirectCorrectionTermsForNUA[sc],sc);
19554 } else
19555 {
19556 cout<<"WARNING: intFlowDirectCorrectionTermsForNUA[sc] is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19557 cout<<"sc = "<<sc<<endl;
19558 exit(0);
19559 }
19560 } // end of for(Int_t sc=0;sc<2;sc++)
e1d101a6 19561 // Mixed harmonics:
19562 if(fCalculateMixedHarmonics)
19563 {
19564 TString mixedHarmonicsNestedLoopsName = "fMixedHarmonicsNestedLoops";
19565 mixedHarmonicsNestedLoopsName += fAnalysisLabel->Data();
19566 TProfile *mixedHarmonicsNestedLoops = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(mixedHarmonicsNestedLoopsName.Data()));
19567 if(mixedHarmonicsNestedLoops)
19568 {
19569 this->SetMixedHarmonicsNestedLoops(mixedHarmonicsNestedLoops);
19570 } else
19571 {
19572 cout<<"WARNING: mixedHarmonicsNestedLoops is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19573 exit(0);
19574 }
19575 } // end of if(fCalculateMixedHarmonics)
489d5531 19576 } // end of if(bEvaluateIntFlowNestedLoops)
19577
19578 // nested loops relevant for differential flow:
19579 if(bEvaluateDiffFlowNestedLoops)
19580 {
19581 // correlations:
19582 TString diffFlowDirectCorrelationsName = "fDiffFlowDirectCorrelations";
19583 diffFlowDirectCorrelationsName += fAnalysisLabel->Data();
19584 TProfile *diffFlowDirectCorrelations[2][2][4] = {{{NULL}}};
19585 for(Int_t t=0;t<2;t++)
19586 {
19587 for(Int_t pe=0;pe<2;pe++)
19588 {
19589 for(Int_t ci=0;ci<4;ci++) // correlation index
19590 {
19591 diffFlowDirectCorrelations[t][pe][ci] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s, %s, %s, %s",diffFlowDirectCorrelationsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),reducedCorrelationIndex[ci].Data())));
19592 if(diffFlowDirectCorrelations[t][pe][ci])
19593 {
19594 this->SetDiffFlowDirectCorrelations(diffFlowDirectCorrelations[t][pe][ci],t,pe,ci);
19595 } else
19596 {
19597 cout<<"WARNING: diffFlowDirectCorrelations[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19598 cout<<"t = "<<t<<endl;
19599 cout<<"pe = "<<pe<<endl;
19600 cout<<"ci = "<<ci<<endl;
19601 }
19602 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
19603 } // end of for(Int_t pe=0;pe<2;pe++)
19604 } // end of for(Int_t t=0;t<2;t++)
19605 // correction terms for non-uniform acceptance:
19606 TString diffFlowDirectCorrectionTermsForNUAName = "fDiffFlowDirectCorrectionTermsForNUA";
19607 diffFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
19608 TProfile *diffFlowDirectCorrectionTermsForNUA[2][2][2][10] = {{{{NULL}}}};
19609 for(Int_t t=0;t<2;t++)
19610 {
19611 for(Int_t pe=0;pe<2;pe++)
19612 {
19613 // correction terms for NUA:
19614 for(Int_t sc=0;sc<2;sc++) // sin or cos
19615 {
19616 for(Int_t cti=0;cti<9;cti++) // correction term index
19617 {
19618 diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s, %s, %s, %s, cti = %d",diffFlowDirectCorrectionTermsForNUAName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),cti+1)));
19619 if(diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti])
19620 {
19621 this->SetDiffFlowDirectCorrectionTermsForNUA(diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti],t,pe,sc,cti);
19622 } else
19623 {
19624 cout<<"WARNING: diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19625 cout<<"t = "<<t<<endl;
19626 cout<<"pe = "<<pe<<endl;
19627 cout<<"sc = "<<sc<<endl;
19628 cout<<"cti = "<<cti<<endl;
19629 }
19630 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
19631 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
19632 } // end of for(Int_t pe=0;pe<2;pe++)
19633 } // end of for(Int_t t=0;t<2;t++)
64e500e3 19634 // other differential correlators:
19635 TString otherDirectDiffCorrelatorsName = "fOtherDirectDiffCorrelators";
19636 otherDirectDiffCorrelatorsName += fAnalysisLabel->Data();
19637 TProfile *otherDirectDiffCorrelators[2][2][2][1] = {{{{NULL}}}};
19638 for(Int_t t=0;t<2;t++)
19639 {
e1d101a6 19640 for(Int_t pe=0;pe<2;pe++)
19641 {
19642 // correction terms for NUA:
19643 for(Int_t sc=0;sc<2;sc++) // sin or cos
19644 {
19645 for(Int_t ci=0;ci<1;ci++) // correlator index
19646 {
19647 otherDirectDiffCorrelators[t][pe][sc][ci] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s, %s, %s, %s, ci = %d",otherDirectDiffCorrelatorsName.Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data(),sinCosFlag[sc].Data(),ci+1)));
19648 if(otherDirectDiffCorrelators[t][pe][sc][ci])
19649 {
19650 this->SetOtherDirectDiffCorrelators(otherDirectDiffCorrelators[t][pe][sc][ci],t,pe,sc,ci);
19651 } else
19652 {
19653 cout<<"WARNING: otherDirectDiffCorrelators[t][pe][sc][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19654 cout<<"t = "<<t<<endl;
19655 cout<<"pe = "<<pe<<endl;
19656 cout<<"sc = "<<sc<<endl;
19657 cout<<"ci = "<<ci<<endl;
19658 }
19659 } // end of for(Int_t ci=0;ci<9;ci++) // correction term index
19660 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
19661 } // end of for(Int_t pe=0;pe<2;pe++)
19662 } // end of for(Int_t t=0;t<2;t++)
19663 // number of RPs and POIs in selected pt and eta bins for cross-checkings:
19664 TString noOfParticlesInBinName = "fNoOfParticlesInBin";
19665 TH1D *noOfParticlesInBin = NULL;
19666 noOfParticlesInBin = dynamic_cast<TH1D*>(nestedLoopsList->FindObject(noOfParticlesInBinName.Data()));
19667 if(noOfParticlesInBin)
19668 {
19669 this->SetNoOfParticlesInBin(noOfParticlesInBin);
19670 } else
19671 {
19672 cout<<endl;
19673 cout<<" WARNING (QC): noOfParticlesInBin is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19674 cout<<endl;
19675 }
19676 } // end of if(bEvaluateDiffFlowNestedLoops)
19677
19678} // end of void AliFlowAnalysisWithQCumulants::GetPointersForNestedLoopsHistograms()
19679
19680//=======================================================================================================================
19681
19682void AliFlowAnalysisWithQCumulants::GetPointersForMixedHarmonicsHistograms()
19683{
19684 // Get pointers to all objects relevant for mixed harmonics.
19685
19686 // a) Get pointer to base list for mixed harmonics;
19687 // b) Get pointer to TProfile fMixedHarmonicsFlags holding all flags for mixed harmonics;
19688 // c) Get pointer to list fMixedHarmonicsProfiles and pointers to all objects that she holds;
c10259fb 19689 // d) Get pointer to list fMixedHarmonicsResults and pointers to all objects that she holds;
19690 // e) Get pointer to list fMixedHarmonicsErrorPropagation and pointers to all objects that she holds.
e1d101a6 19691
19692 // a) Get pointer to base list for mixed harmonics:
19693 TList *mixedHarmonicsList = dynamic_cast<TList*>(fHistList->FindObject("Mixed Harmonics"));
19694 if(mixedHarmonicsList)
19695 {
19696 this->SetMixedHarmonicsList(mixedHarmonicsList);
19697 } else
19698 {
19699 cout<<"WARNING: mixedHarmonicsList is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19700 exit(0);
19701 }
19702
19703 // b) Get pointer to TProfile fMixedHarmonicsFlags holding all flags for mixed harmonics:
19704 TString mixedHarmonicsFlagsName = "fMixedHarmonicsFlags";
19705 mixedHarmonicsFlagsName += fAnalysisLabel->Data();
19706 TProfile *mixedHarmonicsFlags = dynamic_cast<TProfile*>
19707 (mixedHarmonicsList->FindObject(mixedHarmonicsFlagsName.Data()));
19708 if(mixedHarmonicsFlags)
19709 {
19710 this->SetMixedHarmonicsFlags(mixedHarmonicsFlags);
19711 fCalculateMixedHarmonics = (Bool_t)mixedHarmonicsFlags->GetBinContent(1);
19712 fCalculateMixedHarmonicsVsM = (Bool_t)mixedHarmonicsFlags->GetBinContent(3);
19713 } else
19714 {
19715 cout<<"WARNING: mixedHarmonicsFlags is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19716 exit(0);
19717 }
19718
19719 if(!fCalculateMixedHarmonics){return;}
19720
19721 // c) Get pointer to list fMixedHarmonicsProfiles and pointers to all objects that she holds:
19722 TList *mixedHarmonicsProfiles = NULL;
19723 mixedHarmonicsProfiles = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Profiles"));
19724 if(mixedHarmonicsProfiles)
19725 {
19726 // 2p:
19727 TString s2pCorrelationsName = "f2pCorrelations";
19728 s2pCorrelationsName += fAnalysisLabel->Data();
19729 TProfile *p2pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s2pCorrelationsName.Data()));
19730 if(p2pCorrelations)
19731 {
19732 this->Set2pCorrelations(p2pCorrelations);
19733 } else
19734 {
19735 cout<<"WARNING: p2pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19736 exit(0);
19737 }
19738 // 3p:
19739 TString s3pCorrelationsName = "f3pCorrelations";
19740 s3pCorrelationsName += fAnalysisLabel->Data();
19741 TProfile *p3pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s3pCorrelationsName.Data()));
19742 if(p3pCorrelations)
19743 {
19744 this->Set3pCorrelations(p3pCorrelations);
19745 } else
19746 {
19747 cout<<"WARNING: p3pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19748 exit(0);
19749 }
19750 // 4p:
19751 TString s4pCorrelationsName = "f4pCorrelations";
19752 s4pCorrelationsName += fAnalysisLabel->Data();
19753 TProfile *p4pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s4pCorrelationsName.Data()));
19754 if(p4pCorrelations)
19755 {
19756 this->Set4pCorrelations(p4pCorrelations);
19757 } else
19758 {
19759 cout<<"WARNING: p4pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19760 exit(0);
19761 }
19762 // 5p:
19763 TString s5pCorrelationsName = "f5pCorrelations";
19764 s5pCorrelationsName += fAnalysisLabel->Data();
19765 TProfile *p5pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s5pCorrelationsName.Data()));
19766 if(p5pCorrelations)
19767 {
19768 this->Set5pCorrelations(p5pCorrelations);
19769 } else
19770 {
19771 cout<<"WARNING: p5pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19772 exit(0);
19773 }
19774 /* TBI not needed for the time being
19775 // 6p:
19776 TString s6pCorrelationsName = "f6pCorrelations";
19777 s6pCorrelationsName += fAnalysisLabel->Data();
19778 TProfile *p6pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s6pCorrelationsName.Data()));
19779 if(p6pCorrelations)
19780 {
19781 this->Set6pCorrelations(p6pCorrelations);
19782 } else
19783 {
19784 cout<<"WARNING: p6pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19785 exit(0);
19786 }
19787 // 7p:
19788 TString s7pCorrelationsName = "f7pCorrelations";
19789 s7pCorrelationsName += fAnalysisLabel->Data();
19790 TProfile *p7pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s7pCorrelationsName.Data()));
19791 if(p7pCorrelations)
19792 {
19793 this->Set7pCorrelations(p7pCorrelations);
19794 } else
19795 {
19796 cout<<"WARNING: p7pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19797 exit(0);
19798 }
19799 // 8p:
19800 TString s8pCorrelationsName = "f8pCorrelations";
19801 s8pCorrelationsName += fAnalysisLabel->Data();
19802 TProfile *p8pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s8pCorrelationsName.Data()));
19803 if(p8pCorrelations)
19804 {
19805 this->Set8pCorrelations(p8pCorrelations);
19806 } else
19807 {
19808 cout<<"WARNING: p8pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19809 exit(0);
19810 }
19811 */
19812 } else // to if(mixedHarmonicsProfiles)
19813 {
19814 cout<<"WARNING: mixedHarmonicsProfiles is NULL in FAWQC::GPFMHH() !!!!"<<endl;
19815 exit(0);
19816 }
19817
19818 // d) Get pointer to list fMixedHarmonicsResults and pointers to all objects that she holds.
19819 TList *mixedHarmonicsResults = NULL;
19820 mixedHarmonicsResults = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Results"));
19821 if(mixedHarmonicsResults)
19822 {
19823 // 2p:
19824 TString s2pCumulantsName = "f2pCumulants";
19825 s2pCumulantsName += fAnalysisLabel->Data();
19826 TH1D *p2pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s2pCumulantsName.Data()));
19827 if(p2pCumulants)
19828 {
19829 this->Set2pCumulants(p2pCumulants);
19830 } else
64e500e3 19831 {
e1d101a6 19832 cout<<"WARNING: p2pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19833 exit(0);
19834 }
19835 // 3p:
19836 TString s3pCumulantsName = "f3pCumulants";
19837 s3pCumulantsName += fAnalysisLabel->Data();
19838 TH1D *p3pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s3pCumulantsName.Data()));
19839 if(p3pCumulants)
19840 {
19841 this->Set3pCumulants(p3pCumulants);
19842 } else
19843 {
19844 cout<<"WARNING: p3pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19845 exit(0);
19846 }
19847 // 4p:
19848 TString s4pCumulantsName = "f4pCumulants";
19849 s4pCumulantsName += fAnalysisLabel->Data();
19850 TH1D *p4pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s4pCumulantsName.Data()));
19851 if(p4pCumulants)
19852 {
19853 this->Set4pCumulants(p4pCumulants);
19854 } else
19855 {
19856 cout<<"WARNING: p4pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19857 exit(0);
19858 }
19859 // 5p:
19860 TString s5pCumulantsName = "f5pCumulants";
19861 s5pCumulantsName += fAnalysisLabel->Data();
19862 TH1D *p5pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s5pCumulantsName.Data()));
19863 if(p5pCumulants)
19864 {
19865 this->Set5pCumulants(p5pCumulants);
19866 } else
19867 {
19868 cout<<"WARNING: p5pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19869 exit(0);
19870 }
19871 } else // to if(mixedHarmonicsResults)
489d5531 19872 {
e1d101a6 19873 cout<<"WARNING: mixedHarmonicsResults is NULL in FAWQC::GPFMHH() !!!!"<<endl;
19874 }
489d5531 19875
c10259fb 19876 // e) Get pointer to list fMixedHarmonicsErrorPropagation and pointers to all objects that she holds:
19877 TList *mixedHarmonicsErrorPropagation = NULL;
19878 mixedHarmonicsErrorPropagation = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Error Propagation"));
19879 if(mixedHarmonicsErrorPropagation)
19880 {
19881 TString sMixedHarmonicEventWeightsName = "fMixedHarmonicEventWeights";
19882 sMixedHarmonicEventWeightsName += fAnalysisLabel->Data();
19883 TString powerFlag[2] = {"linear","quadratic"};
19884 for(Int_t power=0;power<2;power++)
19885 {
19886 TH1D *hMixedHarmonicEventWeights = dynamic_cast<TH1D*>(mixedHarmonicsErrorPropagation->FindObject(Form("%s: %s",sMixedHarmonicEventWeightsName.Data(),powerFlag[power].Data())));
19887 if(hMixedHarmonicEventWeights)
19888 {
19889 this->SetMixedHarmonicEventWeights(hMixedHarmonicEventWeights,power);
19890 } else
19891 {
19892 cout<<"WARNING: hMixedHarmonicEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
19893 cout<<"power = "<<power<<endl;
19894 exit(0);
19895 }
19896 } // end of for(Int_t power=0;power<2;power++)
19897 TString sMixedHarmonicProductOfEventWeightsName = "fMixedHarmonicProductOfEventWeights";
19898 sMixedHarmonicProductOfEventWeightsName += fAnalysisLabel->Data();
19899 TH2D *hMixedHarmonicProductOfEventWeights = dynamic_cast<TH2D*>(mixedHarmonicsErrorPropagation->FindObject(sMixedHarmonicProductOfEventWeightsName.Data()));
19900 if(hMixedHarmonicProductOfEventWeights)
19901 {
19902 this->SetMixedHarmonicProductOfEventWeights(hMixedHarmonicProductOfEventWeights);
19903 } else
19904 {
19905 cout<<"WARNING: hMixedHarmonicProductOfEventWeights is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19906 exit(0);
19907 }
19908 TString sMixedHarmonicProductOfCorrelationsName = "fMixedHarmonicProductOfCorrelations";
19909 sMixedHarmonicProductOfCorrelationsName += fAnalysisLabel->Data();
19910 TProfile2D *hMixedHarmonicProductOfCorrelations = dynamic_cast<TProfile2D*>(mixedHarmonicsErrorPropagation->FindObject(sMixedHarmonicProductOfCorrelationsName.Data()));
19911 if(hMixedHarmonicProductOfCorrelations)
19912 {
19913 this->SetMixedHarmonicProductOfCorrelations(hMixedHarmonicProductOfCorrelations);
19914 } else
19915 {
19916 cout<<"WARNING: hMixedHarmonicProductOfCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19917 exit(0);
19918 }
19919 } // end of if(mixedHarmonicsErrorPropagation)
19920
e1d101a6 19921} // end of void AliFlowAnalysisWithQCumulants::GetPointersForMixedHarmonicsHistograms()
489d5531 19922
e1d101a6 19923//=======================================================================================================================
489d5531 19924
489d5531 19925void AliFlowAnalysisWithQCumulants::StoreHarmonic()
19926{
19927 // Store flow harmonic in common control histograms.
19928
19929 (fCommonHists->GetHarmonic())->Fill(0.5,fHarmonic);
dd442cd2 19930 if(fFillMultipleControlHistograms)
19931 {
19932 (fCommonHists2nd->GetHarmonic())->Fill(0.5,fHarmonic);
19933 (fCommonHists4th->GetHarmonic())->Fill(0.5,fHarmonic);
19934 (fCommonHists6th->GetHarmonic())->Fill(0.5,fHarmonic);
19935 (fCommonHists8th->GetHarmonic())->Fill(0.5,fHarmonic);
19936 }
19937
489d5531 19938} // end of void AliFlowAnalysisWithQCumulants::StoreHarmonic()
19939
e1d101a6 19940//=======================================================================================================================
489d5531 19941
489d5531 19942void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelationsUsingParticleWeights(TString type, TString ptOrEta) // type = RP or POI
19943{
19944 // Calculate all correlations needed for differential flow using particle weights.
19945
2a98ceb8 19946 Int_t t = 0; // type flag
19947 Int_t pe = 0; // ptEta flag
489d5531 19948
19949 if(type == "RP")
19950 {
19951 t = 0;
19952 } else if(type == "POI")
19953 {
19954 t = 1;
19955 }
19956
19957 if(ptOrEta == "Pt")
19958 {
19959 pe = 0;
19960 } else if(ptOrEta == "Eta")
19961 {
19962 pe = 1;
19963 }
19964
19965 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
19966 Double_t minPtEta[2] = {fPtMin,fEtaMin};
19967 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
19968 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
19969
19970 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
19971 Double_t dReQ1n1k = (*fReQ)(0,1);
19972 Double_t dReQ2n2k = (*fReQ)(1,2);
19973 Double_t dReQ1n3k = (*fReQ)(0,3);
19974 //Double_t dReQ4n4k = (*fReQ)(3,4);
19975 Double_t dImQ1n1k = (*fImQ)(0,1);
19976 Double_t dImQ2n2k = (*fImQ)(1,2);
19977 Double_t dImQ1n3k = (*fImQ)(0,3);
19978 //Double_t dImQ4n4k = (*fImQ)(3,4);
19979
1268c371 19980 // S^M_{p,k} (see .h file for the definition of fSpk):
19981 Double_t dSM1p1k = (*fSpk)(0,1);
19982 Double_t dSM1p2k = (*fSpk)(0,2);
19983 Double_t dSM1p3k = (*fSpk)(0,3);
19984 Double_t dSM2p1k = (*fSpk)(1,1);
19985 Double_t dSM3p1k = (*fSpk)(2,1);
489d5531 19986
19987 // looping over all bins and calculating reduced correlations:
19988 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
19989 {
19990 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular (pt,eta) bin):
19991 Double_t p1n0kRe = 0.;
19992 Double_t p1n0kIm = 0.;
19993
19994 // number of POIs in particular (pt,eta) bin):
19995 Double_t mp = 0.;
19996
19997 // real and imaginary parts of q_{m*n,k}:
19998 // (weighted Q-vector evaluated for particles which are both RPs and POIs in particular (pt,eta) bin)
19999 Double_t q1n2kRe = 0.;
20000 Double_t q1n2kIm = 0.;
20001 Double_t q2n1kRe = 0.;
20002 Double_t q2n1kIm = 0.;
20003
20004 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
20005 Double_t s1p1k = 0.;
20006 Double_t s1p2k = 0.;
20007 Double_t s1p3k = 0.;
20008
20009 // M0111 from Eq. (118) in QC2c (to be improved (notation))
20010 Double_t dM0111 = 0.;
20011
20012 if(type == "POI")
20013 {
20014 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20015 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20016 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20017 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20018
20019 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20020
20021 t = 1; // typeFlag = RP or POI
20022
20023 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
20024 q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
20025 * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
20026 q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
20027 * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
20028 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
20029 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
20030 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
20031 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
20032
20033 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
20034 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
20035 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
20036 s1p3k = pow(fs1dEBE[2][pe][3]->GetBinContent(b)*fs1dEBE[2][pe][3]->GetBinEntries(b),1.);
20037
20038 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
20039 dM0111 = mp*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
20040 - 3.*(s1p1k*(dSM2p1k-dSM1p2k)
20041 + 2.*(s1p3k-s1p2k*dSM1p1k));
20042 }
20043 else if(type == "RP")
20044 {
20045 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
20046 q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
20047 * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
20048 q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
20049 * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
20050 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
20051 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
20052 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
20053 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
20054
20055 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
20056 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
20057 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
20058 s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
20059
20060 // to be improved (cross-checked):
20061 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20062 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20063 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20064 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20065
20066 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20067
20068 t = 0; // typeFlag = RP or POI
20069
20070 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
20071 dM0111 = mp*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
20072 - 3.*(s1p1k*(dSM2p1k-dSM1p2k)
20073 + 2.*(s1p3k-s1p2k*dSM1p1k));
20074 //...............................................................................................
20075 }
20076
20077 // 2'-particle correlation:
20078 Double_t two1n1nW0W1 = 0.;
20079 if(mp*dSM1p1k-s1p1k)
20080 {
20081 two1n1nW0W1 = (p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k-s1p1k)
20082 / (mp*dSM1p1k-s1p1k);
20083
20084 // fill profile to get <<2'>>
b40a910e 20085 fDiffFlowCorrelationsPro[t][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nW0W1,mp*dSM1p1k-s1p1k);
20086 // fill profile to get <<2'>^2>
20087 fDiffFlowSquaredCorrelationsPro[t][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nW0W1*two1n1nW0W1,mp*dSM1p1k-s1p1k);
489d5531 20088 // histogram to store <2'> e-b-e (needed in some other methods):
20089 fDiffFlowCorrelationsEBE[t][pe][0]->SetBinContent(b,two1n1nW0W1);
20090 fDiffFlowEventWeightsForCorrelationsEBE[t][pe][0]->SetBinContent(b,mp*dSM1p1k-s1p1k);
20091 } // end of if(mp*dSM1p1k-s1p1k)
20092
20093 // 4'-particle correlation:
20094 Double_t four1n1n1n1nW0W1W1W1 = 0.;
20095 if(dM0111)
20096 {
20097 four1n1n1n1nW0W1W1W1 = ((pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*(p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k)
20098 - q2n1kRe*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))
20099 - 2.*q2n1kIm*dReQ1n1k*dImQ1n1k
20100 - p1n0kRe*(dReQ1n1k*dReQ2n2k+dImQ1n1k*dImQ2n2k)
20101 + p1n0kIm*(dImQ1n1k*dReQ2n2k-dReQ1n1k*dImQ2n2k)
20102 - 2.*dSM1p2k*(p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k)
20103 - 2.*(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*s1p1k
20104 + 6.*(q1n2kRe*dReQ1n1k+q1n2kIm*dImQ1n1k)
20105 + 1.*(q2n1kRe*dReQ2n2k+q2n1kIm*dImQ2n2k)
20106 + 2.*(p1n0kRe*dReQ1n3k+p1n0kIm*dImQ1n3k)
20107 + 2.*s1p1k*dSM1p2k
20108 - 6.*s1p3k)
20109 / dM0111; // to be improved (notation of dM0111)
20110
20111 // fill profile to get <<4'>>
b40a910e 20112 fDiffFlowCorrelationsPro[t][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nW0W1W1W1,dM0111);
20113 // fill profile to get <<4'>^2>
20114 fDiffFlowSquaredCorrelationsPro[t][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nW0W1W1W1*four1n1n1n1nW0W1W1W1,dM0111);
489d5531 20115 // histogram to store <4'> e-b-e (needed in some other methods):
20116 fDiffFlowCorrelationsEBE[t][pe][1]->SetBinContent(b,four1n1n1n1nW0W1W1W1);
20117 fDiffFlowEventWeightsForCorrelationsEBE[t][pe][1]->SetBinContent(b,dM0111);
20118 } // end of if(dM0111)
20119 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20120
20121} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelationsUsingParticleWeights(TString type, TString ptOrEta); // type = RP or POI
20122
e1d101a6 20123//=======================================================================================================================
489d5531 20124
489d5531 20125void AliFlowAnalysisWithQCumulants::FillCommonControlHistograms(AliFlowEventSimple *anEvent)
20126{
20127 // Fill common control histograms.
20128
df23c5ae 20129 Int_t nRP = anEvent->GetNumberOfRPs(); // number of Reference Particles
489d5531 20130 fCommonHists->FillControlHistograms(anEvent);
dd442cd2 20131 if(fFillMultipleControlHistograms)
489d5531 20132 {
dd442cd2 20133 if(nRP>1)
489d5531 20134 {
dd442cd2 20135 fCommonHists2nd->FillControlHistograms(anEvent);
20136 if(nRP>3)
489d5531 20137 {
dd442cd2 20138 fCommonHists4th->FillControlHistograms(anEvent);
20139 if(nRP>5)
489d5531 20140 {
dd442cd2 20141 fCommonHists6th->FillControlHistograms(anEvent);
20142 if(nRP>7)
20143 {
20144 fCommonHists8th->FillControlHistograms(anEvent);
20145 } // end of if(nRP>7)
20146 } // end of if(nRP>5)
20147 } // end of if(nRP>3)
20148 } // end of if(nRP>1)
20149 } // end of if(fFillMultipleControlHistograms)
489d5531 20150
20151} // end of void AliFlowAnalysisWithQCumulants::FillCommonControlHistograms(AliFlowEventSimple *anEvent)
20152
e1d101a6 20153//=======================================================================================================================
489d5531 20154
df23c5ae 20155void AliFlowAnalysisWithQCumulants::FillControlHistograms(AliFlowEventSimple *anEvent)
20156{
20157 // Fill common control histograms.
20158
20159 Int_t nRPs = anEvent->GetNumberOfRPs(); // number of Reference Particles
20160 Int_t nPOIs = anEvent->GetNumberOfPOIs(); // number of Particles Of Interest
20161 Int_t nRefMult = anEvent->GetReferenceMultiplicity(); // reference multiplicity for current event (TBI: This call is not really needed here, use fReferenceMultiplicityEBE instead)
20162
20163 fCorrelationNoRPsVsRefMult->Fill(nRPs,nRefMult);
20164 fCorrelationNoPOIsVsRefMult->Fill(nPOIs,nRefMult);
20165 fCorrelationNoRPsVsNoPOIs->Fill(nRPs,nPOIs);
20166
20167} // end of void AliFlowAnalysisWithQCumulants::FillControlHistograms(AliFlowEventSimple *anEvent)
20168
20169//=======================================================================================================================
20170
489d5531 20171void AliFlowAnalysisWithQCumulants::ResetEventByEventQuantities()
20172{
20173 // Reset all event by event quantities.
20174
1268c371 20175 // Reference flow:
489d5531 20176 fReQ->Zero();
20177 fImQ->Zero();
1268c371 20178 fSpk->Zero();
489d5531 20179 fIntFlowCorrelationsEBE->Reset();
20180 fIntFlowEventWeightsForCorrelationsEBE->Reset();
20181 fIntFlowCorrelationsAllEBE->Reset();
20182
b92ea2b9 20183 for(Int_t sc=0;sc<2;sc++)
489d5531 20184 {
b92ea2b9 20185 fIntFlowCorrectionTermsForNUAEBE[sc]->Reset();
20186 fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc]->Reset();
489d5531 20187 }
20188
1268c371 20189 // Differential flow:
20190 if(fCalculateDiffFlow)
489d5531 20191 {
1268c371 20192 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
489d5531 20193 {
62e36168 20194 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // 1D in pt or eta
489d5531 20195 {
1268c371 20196 for(Int_t m=0;m<4;m++) // multiple of harmonic
489d5531 20197 {
1268c371 20198 for(Int_t k=0;k<9;k++) // power of weight
20199 {
20200 if(fReRPQ1dEBE[t][pe][m][k]) fReRPQ1dEBE[t][pe][m][k]->Reset();
20201 if(fImRPQ1dEBE[t][pe][m][k]) fImRPQ1dEBE[t][pe][m][k]->Reset();
20202 }
20203 }
489d5531 20204 }
1268c371 20205 }
20206 for(Int_t t=0;t<3;t++) // type (0 = RP, 1 = POI, 2 = RP&&POI )
20207 {
62e36168 20208 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // 1D in pt or eta
489d5531 20209 {
1268c371 20210 for(Int_t k=0;k<9;k++)
20211 {
20212 if(fs1dEBE[t][pe][k]) fs1dEBE[t][pe][k]->Reset();
20213 }
489d5531 20214 }
20215 }
1268c371 20216 // e-b-e reduced correlations:
20217 for(Int_t t=0;t<2;t++) // type (0 = RP, 1 = POI)
20218 {
62e36168 20219 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 20220 {
1268c371 20221 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
20222 {
20223 if(fDiffFlowCorrelationsEBE[t][pe][rci]) fDiffFlowCorrelationsEBE[t][pe][rci]->Reset();
20224 if(fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci]) fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci]->Reset();
20225 }
489d5531 20226 }
1268c371 20227 }
20228 // correction terms for NUA:
20229 for(Int_t t=0;t<2;t++) // type (0 = RP, 1 = POI)
20230 {
62e36168 20231 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 20232 {
1268c371 20233 for(Int_t sc=0;sc<2;sc++) // sin or cos
489d5531 20234 {
1268c371 20235 for(Int_t cti=0;cti<9;cti++) // correction term index
20236 {
489d5531 20237 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti]->Reset();
1268c371 20238 }
489d5531 20239 }
1268c371 20240 }
20241 }
20242 } // end of if(fCalculateDiffFlow)
20243
489d5531 20244 // 2D (pt,eta)
1268c371 20245 if(fCalculate2DDiffFlow)
489d5531 20246 {
20247 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
20248 {
20249 for(Int_t m=0;m<4;m++) // multiple of harmonic
20250 {
20251 for(Int_t k=0;k<9;k++) // power of weight
20252 {
b77b6434 20253 if(fReRPQ2dEBE[t][m][k]){fReRPQ2dEBE[t][m][k]->Reset();}
20254 if(fImRPQ2dEBE[t][m][k]){fImRPQ2dEBE[t][m][k]->Reset();}
489d5531 20255 }
20256 }
20257 }
20258 for(Int_t t=0;t<3;t++) // type (0 = RP, 1 = POI, 2 = RP&&POI )
20259 {
20260 for(Int_t k=0;k<9;k++)
20261 {
b77b6434 20262 if(fs2dEBE[t][k]){fs2dEBE[t][k]->Reset();}
489d5531 20263 }
20264 }
1268c371 20265 } // end of if(fCalculate2DDiffFlow)
489d5531 20266
20267} // end of void AliFlowAnalysisWithQCumulants::ResetEventByEventQuantities();
20268
e1d101a6 20269//=======================================================================================================================
489d5531 20270
489d5531 20271void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTerms(TString type, TString ptOrEta)
20272{
20273 // Calculate correction terms for non-uniform acceptance for differential flow (sin terms).
20274
20275 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][0][cti], where cti runs as follows:
20276 // 0: <<sin n(psi1)>>
20277 // 1: <<sin n(psi1+phi2)>>
20278 // 2: <<sin n(psi1+phi2-phi3)>>
20279 // 3: <<sin n(psi1-phi2-phi3)>>:
20280 // 4:
20281 // 5:
20282 // 6:
20283
20284 // multiplicity:
1268c371 20285 Double_t dMult = (*fSpk)(0,0);
489d5531 20286
20287 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
20288 Double_t dReQ1n = (*fReQ)(0,0);
20289 Double_t dReQ2n = (*fReQ)(1,0);
20290 //Double_t dReQ3n = (*fReQ)(2,0);
20291 //Double_t dReQ4n = (*fReQ)(3,0);
20292 Double_t dImQ1n = (*fImQ)(0,0);
20293 Double_t dImQ2n = (*fImQ)(1,0);
20294 //Double_t dImQ3n = (*fImQ)(2,0);
20295 //Double_t dImQ4n = (*fImQ)(3,0);
20296
2a98ceb8 20297 Int_t t = 0; // type flag
20298 Int_t pe = 0; // ptEta flag
489d5531 20299
20300 if(type == "RP")
20301 {
20302 t = 0;
20303 } else if(type == "POI")
20304 {
20305 t = 1;
20306 }
20307
20308 if(ptOrEta == "Pt")
20309 {
20310 pe = 0;
20311 } else if(ptOrEta == "Eta")
20312 {
20313 pe = 1;
20314 }
20315
20316 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20317 Double_t minPtEta[2] = {fPtMin,fEtaMin};
20318 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20319 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20320
20321 // looping over all bins and calculating correction terms:
20322 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20323 {
20324 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
20325 Double_t p1n0kRe = 0.;
20326 Double_t p1n0kIm = 0.;
20327
20328 // number of POIs in particular pt or eta bin:
20329 Double_t mp = 0.;
20330
20331 // real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
20332 Double_t q1n0kRe = 0.;
20333 Double_t q1n0kIm = 0.;
20334 Double_t q2n0kRe = 0.;
20335 Double_t q2n0kIm = 0.;
20336
20337 // number of particles which are both RPs and POIs in particular pt or eta bin:
20338 Double_t mq = 0.;
20339
20340 if(type == "POI")
20341 {
20342 // q_{m*n,0}:
20343 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
20344 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
20345 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
20346 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
20347 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
20348 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
20349 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
20350 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
20351
20352 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20353 }
20354 else if(type == "RP")
20355 {
20356 // q_{m*n,0}:
20357 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20358 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20359 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20360 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20361 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
20362 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
20363 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
20364 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
20365
20366 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20367 }
20368 if(type == "POI")
20369 {
20370 // p_{m*n,0}:
20371 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20372 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20373 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20374 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20375
20376 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20377
20378 t = 1; // typeFlag = RP or POI
20379 }
20380 else if(type == "RP")
20381 {
20382 // p_{m*n,0} = q_{m*n,0}:
20383 p1n0kRe = q1n0kRe;
20384 p1n0kIm = q1n0kIm;
20385
20386 mp = mq;
20387
20388 t = 0; // typeFlag = RP or POI
20389 }
20390
20391 // <<sin n(psi1)>>:
20392 Double_t sinP1nPsi = 0.;
20393 if(mp)
20394 {
20395 sinP1nPsi = p1n0kIm/mp;
20396 // fill profile for <<sin n(psi1)>>:
20397 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi,mp);
20398 // histogram to store <sin n(psi1)> e-b-e (needed in some other methods):
20399 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][0]->SetBinContent(b,sinP1nPsi);
20400 } // end of if(mp)
20401
20402 // <<sin n(psi1+phi2)>>:
20403 Double_t sinP1nPsiP1nPhi = 0.;
20404 if(mp*dMult-mq)
20405 {
20406 sinP1nPsiP1nPhi = (p1n0kRe*dImQ1n+p1n0kIm*dReQ1n-q2n0kIm)/(mp*dMult-mq);
20407 // fill profile for <<sin n(psi1+phi2)>>:
20408 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsiP1nPhi,mp*dMult-mq);
20409 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20410 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][1]->SetBinContent(b,sinP1nPsiP1nPhi);
20411 } // end of if(mp*dMult-mq)
20412
20413 // <<sin n(psi1+phi2-phi3)>>:
20414 Double_t sinP1nPsi1P1nPhi2MPhi3 = 0.;
20415 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20416 {
20417 sinP1nPsi1P1nPhi2MPhi3 = (p1n0kIm*(pow(dImQ1n,2.)+pow(dReQ1n,2.)-dMult)
20418 - 1.*(q2n0kIm*dReQ1n-q2n0kRe*dImQ1n)
20419 - mq*dImQ1n+2.*q1n0kIm)
20420 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20421 // fill profile for <<sin n(psi1+phi2)>>:
20422 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1P1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20423 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20424 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][2]->SetBinContent(b,sinP1nPsi1P1nPhi2MPhi3);
20425 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20426
20427 // <<sin n(psi1-phi2-phi3)>>:
20428 Double_t sinP1nPsi1M1nPhi2MPhi3 = 0.;
20429 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20430 {
20431 sinP1nPsi1M1nPhi2MPhi3 = (p1n0kIm*(pow(dReQ1n,2.)-pow(dImQ1n,2.))-2.*p1n0kRe*dReQ1n*dImQ1n
20432 - 1.*(p1n0kIm*dReQ2n-p1n0kRe*dImQ2n)
20433 + 2.*mq*dImQ1n-2.*q1n0kIm)
20434 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20435 // fill profile for <<sin n(psi1+phi2)>>:
20436 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1M1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20437 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20438 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][3]->SetBinContent(b,sinP1nPsi1M1nPhi2MPhi3);
20439 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20440 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20441
20442} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTerms(TString type, TString ptOrEta)
20443
20444
e1d101a6 20445//=======================================================================================================================
489d5531 20446
20447
20448void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTerms(TString type, TString ptOrEta)
20449{
20450 // Calculate correction terms for non-uniform acceptance for differential flow (cos terms).
20451
20452 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][1][cti], where cti runs as follows:
20453 // 0: <<cos n(psi)>>
20454 // 1: <<cos n(psi1+phi2)>>
20455 // 2: <<cos n(psi1+phi2-phi3)>>
20456 // 3: <<cos n(psi1-phi2-phi3)>>
20457 // 4:
20458 // 5:
20459 // 6:
20460
20461 // multiplicity:
1268c371 20462 Double_t dMult = (*fSpk)(0,0);
489d5531 20463
20464 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
20465 Double_t dReQ1n = (*fReQ)(0,0);
20466 Double_t dReQ2n = (*fReQ)(1,0);
20467 //Double_t dReQ3n = (*fReQ)(2,0);
20468 //Double_t dReQ4n = (*fReQ)(3,0);
20469 Double_t dImQ1n = (*fImQ)(0,0);
20470 Double_t dImQ2n = (*fImQ)(1,0);
20471 //Double_t dImQ3n = (*fImQ)(2,0);
20472 //Double_t dImQ4n = (*fImQ)(3,0);
20473
2a98ceb8 20474 Int_t t = 0; // type flag
20475 Int_t pe = 0; // ptEta flag
489d5531 20476
20477 if(type == "RP")
20478 {
20479 t = 0;
20480 } else if(type == "POI")
20481 {
20482 t = 1;
20483 }
20484
20485 if(ptOrEta == "Pt")
20486 {
20487 pe = 0;
20488 } else if(ptOrEta == "Eta")
20489 {
20490 pe = 1;
20491 }
20492
20493 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20494 Double_t minPtEta[2] = {fPtMin,fEtaMin};
20495 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20496 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20497
20498 // looping over all bins and calculating correction terms:
20499 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20500 {
20501 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
20502 Double_t p1n0kRe = 0.;
20503 Double_t p1n0kIm = 0.;
20504
20505 // number of POIs in particular pt or eta bin:
20506 Double_t mp = 0.;
20507
20508 // real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
20509 Double_t q1n0kRe = 0.;
20510 Double_t q1n0kIm = 0.;
20511 Double_t q2n0kRe = 0.;
20512 Double_t q2n0kIm = 0.;
20513
20514 // number of particles which are both RPs and POIs in particular pt or eta bin:
20515 Double_t mq = 0.;
20516
20517 if(type == "POI")
20518 {
20519 // q_{m*n,0}:
20520 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
20521 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
20522 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
20523 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
20524 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
20525 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
20526 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
20527 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
20528
20529 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20530 }
20531 else if(type == "RP")
20532 {
20533 // q_{m*n,0}:
20534 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20535 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20536 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20537 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20538 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
20539 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
20540 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
20541 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
20542
20543 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20544 }
20545 if(type == "POI")
20546 {
20547 // p_{m*n,0}:
20548 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20549 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20550 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20551 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20552
20553 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20554
20555 t = 1; // typeFlag = RP or POI
20556 }
20557 else if(type == "RP")
20558 {
20559 // p_{m*n,0} = q_{m*n,0}:
20560 p1n0kRe = q1n0kRe;
20561 p1n0kIm = q1n0kIm;
20562
20563 mp = mq;
20564
20565 t = 0; // typeFlag = RP or POI
20566 }
20567
20568 // <<cos n(psi1)>>:
20569 Double_t cosP1nPsi = 0.;
20570 if(mp)
20571 {
20572 cosP1nPsi = p1n0kRe/mp;
20573
20574 // fill profile for <<cos n(psi1)>>:
20575 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi,mp);
20576 // histogram to store <cos n(psi1)> e-b-e (needed in some other methods):
20577 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][0]->SetBinContent(b,cosP1nPsi);
20578 } // end of if(mp)
20579
20580 // <<cos n(psi1+phi2)>>:
20581 Double_t cosP1nPsiP1nPhi = 0.;
20582 if(mp*dMult-mq)
20583 {
20584 cosP1nPsiP1nPhi = (p1n0kRe*dReQ1n-p1n0kIm*dImQ1n-q2n0kRe)/(mp*dMult-mq);
20585 // fill profile for <<sin n(psi1+phi2)>>:
20586 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsiP1nPhi,mp*dMult-mq);
20587 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20588 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][1]->SetBinContent(b,cosP1nPsiP1nPhi);
20589 } // end of if(mp*dMult-mq)
20590
20591 // <<cos n(psi1+phi2-phi3)>>:
20592 Double_t cosP1nPsi1P1nPhi2MPhi3 = 0.;
20593 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20594 {
20595 cosP1nPsi1P1nPhi2MPhi3 = (p1n0kRe*(pow(dImQ1n,2.)+pow(dReQ1n,2.)-dMult)
20596 - 1.*(q2n0kRe*dReQ1n+q2n0kIm*dImQ1n)
20597 - mq*dReQ1n+2.*q1n0kRe)
20598 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20599 // fill profile for <<sin n(psi1+phi2)>>:
20600 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1P1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20601 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20602 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][2]->SetBinContent(b,cosP1nPsi1P1nPhi2MPhi3);
20603 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20604
20605 // <<cos n(psi1-phi2-phi3)>>:
20606 Double_t cosP1nPsi1M1nPhi2MPhi3 = 0.;
20607 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20608 {
20609 cosP1nPsi1M1nPhi2MPhi3 = (p1n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))+2.*p1n0kIm*dReQ1n*dImQ1n
20610 - 1.*(p1n0kRe*dReQ2n+p1n0kIm*dImQ2n)
20611 - 2.*mq*dReQ1n+2.*q1n0kRe)
20612 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20613 // fill profile for <<sin n(psi1+phi2)>>:
20614 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1M1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20615 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20616 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][3]->SetBinContent(b,cosP1nPsi1M1nPhi2MPhi3);
20617 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20618 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20619
20620} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTerms(TString type, TString ptOrEta)
20621
e1d101a6 20622//=========================================================================================================================
489d5531 20623
489d5531 20624void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUADiffFlow(TString type, TString ptOrEta)
20625{
1268c371 20626 // Transfer profiles into histogams and correctly propagate the error.
489d5531 20627
2a98ceb8 20628 Int_t t = 0; // type flag
20629 Int_t pe = 0; // ptEta flag
489d5531 20630
20631 if(type == "RP")
20632 {
20633 t = 0;
20634 } else if(type == "POI")
20635 {
20636 t = 1;
20637 }
20638
20639 if(ptOrEta == "Pt")
20640 {
20641 pe = 0;
20642 } else if(ptOrEta == "Eta")
20643 {
20644 pe = 1;
20645 }
20646
20647 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20648 //Double_t minPtEta[2] = {fPtMin,fEtaMin};
20649 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20650 //Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20651
20652 for(Int_t sc=0;sc<2;sc++) // sin or cos
20653 {
20654 for(Int_t cti=0;cti<9;cti++) // correction term index
20655 {
20656 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20657 {
20658 Double_t correctionTerm = fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]->GetBinContent(b);
20659 fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti]->SetBinContent(b,correctionTerm);
20660 // to be improved (propagate error correctly)
20661 // ...
20662 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20663 } // correction term index
20664 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
20665
20666}// end of void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUADiffFlow(TString type, TString ptOrEta)
20667
e1d101a6 20668//=========================================================================================================================
489d5531 20669
489d5531 20670void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
20671{
1268c371 20672 // Calculate generalized differential flow cumulants (corrected for non-uniform acceptance).
20673
20674 // to be improved - propagate error also from non-isotropic terms
489d5531 20675
1268c371 20676 Int_t t = 0; // RP = 0, POI = 1
20677 Int_t pe = 0; // pt = 0, eta = 1
489d5531 20678
20679 if(type == "RP")
20680 {
1268c371 20681 t = 0;
489d5531 20682 } else if(type == "POI")
20683 {
1268c371 20684 t = 1;
489d5531 20685 }
20686
20687 if(ptOrEta == "Pt")
20688 {
1268c371 20689 pe = 0;
489d5531 20690 } else if(ptOrEta == "Eta")
20691 {
1268c371 20692 pe = 1;
489d5531 20693 }
1268c371 20694
20695 // Common:
489d5531 20696 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 20697 // 2-particle correlation:
20698 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
1268c371 20699 // sinus terms coming from reference flow:
489d5531 20700 Double_t sinP1nPhi = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(1); // <<sin(n*phi1)>>
20701 Double_t sinP1nPhi1P1nPhi2 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(2); // <<sin(n*(phi1+phi2))>>
20702 Double_t sinP1nPhi1M1nPhi2M1nPhi3 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(3); // <<sin(n*(phi1-phi2-phi3))>>
1268c371 20703 // cosinus terms coming from reference flow:
489d5531 20704 Double_t cosP1nPhi = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(1); // <<cos(n*phi1)>>
20705 Double_t cosP1nPhi1P1nPhi2 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(2); // <<cos(n*(phi1+phi2))>>
20706 Double_t cosP1nPhi1M1nPhi2M1nPhi3 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(3); // <<cos(n*(phi1-phi2-phi3))>>
20707
20708 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20709 {
20710 Double_t twoPrime = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b); // <<2'>>
20711 Double_t fourPrime = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b); // <<4'>>
20712 Double_t sinP1nPsi = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][0]->GetBinContent(b); // <<sin n(Psi)>>
20713 Double_t cosP1nPsi = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][0]->GetBinContent(b); // <<cos n(Psi)>>
20714 Double_t sinP1nPsi1P1nPhi2 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][1]->GetBinContent(b); // <<sin n(psi1+phi2)>>
20715 Double_t cosP1nPsi1P1nPhi2 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][1]->GetBinContent(b); // <<cos n(psi1+phi2)>>
20716 Double_t sinP1nPsi1P1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][2]->GetBinContent(b); // <<sin n(psi1+phi2-phi3)>>
20717 Double_t cosP1nPsi1P1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][2]->GetBinContent(b); // <<cos n(psi1+phi2-phi3)>>
20718 Double_t sinP1nPsi1M1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][3]->GetBinContent(b); // <<sin n(psi1-phi2-phi3)>>
20719 Double_t cosP1nPsi1M1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][3]->GetBinContent(b); // <<cos n(psi1-phi2-phi3)>>
1268c371 20720 // Generalized QC{2'}:
489d5531 20721 Double_t qc2Prime = twoPrime - sinP1nPsi*sinP1nPhi - cosP1nPsi*cosP1nPhi;
1268c371 20722 if(fApplyCorrectionForNUA)
20723 {
20724 fDiffFlowCumulants[t][pe][0]->SetBinContent(b,qc2Prime);
20725 }
20726 if(TMath::Abs(twoPrime)>0.)
20727 {
20728 fDiffFlowDetectorBias[t][pe][0]->SetBinContent(b,qc2Prime/twoPrime); // detector bias = generalized/isotropic cumulant.
20729 }
20730 // Generalized QC{4'}:
489d5531 20731 Double_t qc4Prime = fourPrime-2.*twoPrime*two
20732 - cosP1nPsi*cosP1nPhi1M1nPhi2M1nPhi3
20733 + sinP1nPsi*sinP1nPhi1M1nPhi2M1nPhi3
20734 - cosP1nPhi*cosP1nPsi1M1nPhi2M1nPhi3
20735 + sinP1nPhi*sinP1nPsi1M1nPhi2M1nPhi3
20736 - 2.*cosP1nPhi*cosP1nPsi1P1nPhi2M1nPhi3
20737 - 2.*sinP1nPhi*sinP1nPsi1P1nPhi2M1nPhi3
20738 - cosP1nPsi1P1nPhi2*cosP1nPhi1P1nPhi2
20739 - sinP1nPsi1P1nPhi2*sinP1nPhi1P1nPhi2
20740 + 2.*cosP1nPhi1P1nPhi2*(cosP1nPsi*cosP1nPhi-sinP1nPsi*sinP1nPhi)
20741 + 2.*sinP1nPhi1P1nPhi2*(cosP1nPsi*sinP1nPhi+sinP1nPsi*cosP1nPhi)
20742 + 4.*two*(cosP1nPsi*cosP1nPhi+sinP1nPsi*sinP1nPhi)
20743 + 2.*cosP1nPsi1P1nPhi2*(pow(cosP1nPhi,2.)-pow(sinP1nPhi,2.))
20744 + 4.*sinP1nPsi1P1nPhi2*cosP1nPhi*sinP1nPhi
20745 + 4.*twoPrime*(pow(cosP1nPhi,2.)+pow(sinP1nPhi,2.))
20746 - 6.*(pow(cosP1nPhi,2.)-pow(sinP1nPhi,2.))
20747 * (cosP1nPsi*cosP1nPhi-sinP1nPsi*sinP1nPhi)
20748 - 12.*cosP1nPhi*sinP1nPhi
20749 * (sinP1nPsi*cosP1nPhi+cosP1nPsi*sinP1nPhi);
1268c371 20750 if(fApplyCorrectionForNUA)
20751 {
20752 fDiffFlowCumulants[t][pe][1]->SetBinContent(b,qc4Prime);
20753 }
20754 if(TMath::Abs(fourPrime-2.*twoPrime*two)>0.)
20755 {
20756 fDiffFlowDetectorBias[t][pe][1]->SetBinContent(b,qc4Prime/(fourPrime-2.*twoPrime*two)); // detector bias = generalized/isotropic cumulant.
20757 }
489d5531 20758 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
20759
20760} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
20761
1268c371 20762//==================================================================================================================================
489d5531 20763
20764void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta)
20765{
20766 // Calculate differential flow corrected for non-uniform acceptance.
20767
1268c371 20768 // to be improved: eventually I will have to access here masured correlations and NUA terms
20769 // instead of cumulants in order to propagate statistical error correctly also
20770 // to NUA terms (propagating errors directly from cumulants is WRONG for
20771 // differential flow becuase that doesn't account at all cross-covariance terms)
489d5531 20772
1268c371 20773 // REMARK: When NUA correction is apllied error for differential flow DOES NOT get corrected,
20774 // i.e. only value is being corrected, error is still the one relevant for isotropic
20775 // case. This eventually will be resolved.
20776
20777
20778 Int_t t = 0; // RP or POI
20779 Int_t pe = 0; // pt or eta
489d5531 20780
20781 if(type == "RP")
20782 {
1268c371 20783 t = 0;
489d5531 20784 } else if(type == "POI")
20785 {
1268c371 20786 t = 1;
20787 }
489d5531 20788 if(ptOrEta == "Pt")
20789 {
1268c371 20790 pe = 0;
489d5531 20791 } else if(ptOrEta == "Eta")
20792 {
1268c371 20793 pe = 1;
489d5531 20794 }
20795
1268c371 20796 // Common:
489d5531 20797 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
1268c371 20798 // Reference Q-cumulants
20799 Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); // QC{2}
20800 Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); // QC{4}
20801 // Loop over pt or eta bins:
489d5531 20802 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20803 {
1268c371 20804 // Differential Q-cumulants:
20805 Double_t qc2Prime = fDiffFlowCumulants[t][pe][0]->GetBinContent(b); // QC{2'}
20806 Double_t qc4Prime = fDiffFlowCumulants[t][pe][1]->GetBinContent(b); // QC{4'}
489d5531 20807 // v'{2}:
1268c371 20808 if(qc2>0.)
489d5531 20809 {
1268c371 20810 Double_t v2Prime = qc2Prime/pow(qc2,0.5);
20811 if(TMath::Abs(v2Prime)>0.){fDiffFlow[t][pe][0]->SetBinContent(b,v2Prime);}
489d5531 20812 }
489d5531 20813 // v'{4}:
1268c371 20814 if(qc4<0.)
489d5531 20815 {
1268c371 20816 Double_t v4Prime = -qc4Prime/pow(-qc4,3./4.);
20817 if(TMath::Abs(v4Prime)>0.){fDiffFlow[t][pe][1]->SetBinContent(b,v4Prime);}
489d5531 20818 }
20819 } // end of for(Int_t b=1;b<=fnBinsPtEta[pe];b++)
20820
20821} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta);
20822
e1d101a6 20823//=========================================================================================================================
489d5531 20824
0328db2d 20825void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 20826{
20827 // Evaluate with nested loops multiparticle correlations for integrated flow (without using the particle weights).
20828
20829 // Remark: Results are stored in profile fIntFlowDirectCorrelations whose binning is organized as follows:
20830 //
20831 // 1st bin: <2>_{1n|1n} = two1n1n = cos(n*(phi1-phi2))>
20832 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n*(phi1-phi2))>
20833 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n*(phi1-phi2))>
20834 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n*(phi1-phi2))>
20835 // 5th bin: ---- EMPTY ----
20836 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n*(2.*phi1-phi2-phi3))>
20837 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n*(3.*phi1-2.*phi2-phi3))>
20838 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
20839 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n*(4.*phi1-3.*phi2-phi3))>
20840 // 10th bin: ---- EMPTY ----
20841 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n*(phi1+phi2-phi3-phi4))>
20842 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(2.*n*(phi1+phi2-phi3-phi4))>
20843 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
20844 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n*(3.*phi1-phi2-phi3-phi4))>
20845 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
20846 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
20847 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n*(3.*phi1+phi2-3.*phi3-phi4))>
20848 // 18th bin: ---- EMPTY ----
20849 // 19th bin: <5>_{2n|1n,1n,1n,1n} = five2n1n1n1n1n = <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
20850 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
20851 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
20852 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
20853 // 23rd bin: ---- EMPTY ----
20854 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
20855 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
20856 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
20857 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
20858 // 28th bin: ---- EMPTY ----
20859 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
20860 // 30th bin: ---- EMPTY ----
20861 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
8ed4edc7 20862 // 32nd bin: ---- EMPTY ----
b84464d3 20863 // Extra correlations for 3p TY study:
8ed4edc7 20864 // 33rd bin: <4>_{4n,2n|3n,3n}= four4n2n3n3n = <cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4))>
b84464d3 20865 // 34th bin: <5>_{3n,3n|2n,2n,2n} = five3n3n2n2n2n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
20866 // Extra correlations for 6p TY study:
20867 // 35th bin: <2>_{5n|5n} = two5n5n = <cos(5n*(phi1-phi2)> T
20868 // 36th bin: <2>_{6n|6n} = two6n6n = <cos(6n*(phi1-phi2)> T
20869 // 37th bin: <3>_{5n|3n,2n} = three5n3n2n = <cos(n*(5*phi1-3*phi2-2*phi3)>
20870 // 38th bin: <3>_{5n|4n,1n} = three5n4n1n = <cos(n*(5*phi1-4*phi2-1*phi3)>
20871 // 39th bin: <3>_{6n|3n,3n} = three6n3n3n = <cos(n*(6*phi1-3*phi2-3*phi3)> T
20872 // 40th bin: <3>_{6n|4n,2n} = three6n4n2n = <cos(n*(6*phi1-4*phi2-2*phi3)> T
20873 // 41st bin: <3>_{6n|5n,1n} = three6n5n1n = <cos(n*(6*phi1-5*phi2-1*phi3)>
20874 // 42nd bin: <4>_{6n|3n,2n,1n} = four6n3n2n1n = <cos(n*(6*phi1-3*phi2-2*phi3-1*phi4)>
20875 // 43rd bin: <4>_{3n,2n|3n,2n} = four3n2n3n2n = <cos(n*(3*phi1+2*phi2-3*phi3-2*phi4)>
20876 // 44th bin: <4>_{4n,1n|3n,2n} = four4n1n3n2n = <cos(n*(4*phi1+1*phi2-3*phi3-2*phi4)>
20877 // 45th bin: <4>_{3n,3n|3n,3n} = four3n3n3n3n = <cos(3.*n*(phi1+phi2-phi3-phi4))> T
20878 // 46th bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n*(4*phi1+2*phi2-3*phi3-3*phi4)>
20879 // 47th bin: <4>_{5n,1n|3n,3n} = four5n1n3n3n = <cos(n*(5*phi1+1*phi2-3*phi3-3*phi4)>
20880 // 48th bin: <4>_{4n,2n|4n,2n} = four4n2n4n2n = <cos(n*(4*phi1+2*phi2-4*phi3-2*phi4)> T
20881 // 49th bin: <4>_{5n,1n|4n,2n} = four5n1n4n2n = <cos(n*(5*phi1+1*phi2-4*phi3-2*phi4)>
20882 // 50th bin: <4>_{5n|3n,1n,1n} = four5n3n1n1n = <cos(n*(5*phi1-3*phi2-1*phi3-1*phi4)>
20883 // 51st bin: <4>_{5n|2n,2n,1n} = four5n2n2n1n = <cos(n*(5*phi1-2*phi2-2*phi3-1*phi4)>
20884 // 52nd bin: <4>_{5n,1n|5n,1n} = four5n1n5n1n = <cos(n*(5*phi1+1*phi2-5*phi3-1*phi4)>
20885 // 53rd bin: <5>_{3n,3n|3n,2n,1n} = four3n3n3n2n1n = <cos(n*(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
20886 // 54th bin: <5>_{4n,2n|3n,2n,1n} = four4n2n3n2n1n = <cos(n*(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
20887 // 55th bin: <5>_{3n,2n|3n,1n,1n} = four3n2n3n1n1n = <cos(n*(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
20888 // 56th bin: <5>_{3n,2n|2n,2n,1n} = four3n2n2n2n1n = <cos(n*(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
20889 // 57th bin: <5>_{5n,1n|3n,2n,1n} = four5n1n3n2n1n = <cos(n*(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
20890 // 58th bin: <6>_{3n,2n,1n|3n,2n,1n} = six3n2n1n3n2n1n = <cos(n*(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
8ed4edc7 20891
489d5531 20892 Int_t nPrim = anEvent->NumberOfTracks();
20893 AliFlowTrackSimple *aftsTrack = NULL;
20894 Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
20895 Int_t n = fHarmonic;
20896 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 20897 Double_t dMult = (*fSpk)(0,0);
489d5531 20898 cout<<endl;
20899 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
20900 if(dMult<2)
20901 {
20902 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
20903 } else if (dMult>fMaxAllowedMultiplicity)
20904 {
20905 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
20906 } else
20907 {
20908 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
20909 }
20910
20911 // 2-particle correlations:
20912 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
20913 {
20914 for(Int_t i1=0;i1<nPrim;i1++)
20915 {
20916 aftsTrack=anEvent->GetTrack(i1);
20917 if(!(aftsTrack->InRPSelection())) continue;
20918 phi1=aftsTrack->Phi();
20919 for(Int_t i2=0;i2<nPrim;i2++)
20920 {
20921 if(i2==i1)continue;
20922 aftsTrack=anEvent->GetTrack(i2);
20923 if(!(aftsTrack->InRPSelection())) continue;
20924 phi2=aftsTrack->Phi();
20925 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
20926 // fill the profile with 2-p correlations:
b84464d3 20927 fIntFlowDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),1.); // <cos(n*(phi1-phi2))>
20928 fIntFlowDirectCorrelations->Fill(1.5,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
20929 fIntFlowDirectCorrelations->Fill(2.5,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
20930 fIntFlowDirectCorrelations->Fill(3.5,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>
20931 fIntFlowDirectCorrelations->Fill(34.5,cos(5.*n*(phi1-phi2)),1.); // <cos(5n*(phi1-phi2))>
20932 fIntFlowDirectCorrelations->Fill(35.5,cos(6.*n*(phi1-phi2)),1.); // <cos(6n*(phi1-phi2))>
489d5531 20933 } // end of for(Int_t i2=0;i2<nPrim;i2++)
20934 } // end of for(Int_t i1=0;i1<nPrim;i1++)
20935 } // end of if(nPrim>=2)
20936
20937 // 3-particle correlations:
20938 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
20939 {
20940 for(Int_t i1=0;i1<nPrim;i1++)
20941 {
20942 aftsTrack=anEvent->GetTrack(i1);
20943 if(!(aftsTrack->InRPSelection())) continue;
20944 phi1=aftsTrack->Phi();
20945 for(Int_t i2=0;i2<nPrim;i2++)
20946 {
20947 if(i2==i1)continue;
20948 aftsTrack=anEvent->GetTrack(i2);
20949 if(!(aftsTrack->InRPSelection())) continue;
20950 phi2=aftsTrack->Phi();
20951 for(Int_t i3=0;i3<nPrim;i3++)
20952 {
20953 if(i3==i1||i3==i2)continue;
20954 aftsTrack=anEvent->GetTrack(i3);
20955 if(!(aftsTrack->InRPSelection())) continue;
20956 phi3=aftsTrack->Phi();
20957 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
20958 // fill the profile with 3-p correlations:
b84464d3 20959 fIntFlowDirectCorrelations->Fill(5.,cos(2.*n*phi1-n*(phi2+phi3)),1.); //<3>_{2n|nn,n}
20960 fIntFlowDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.); //<3>_{3n|2n,n}
20961 fIntFlowDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); //<3>_{4n|2n,2n}
20962 fIntFlowDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),1.); //<3>_{4n|3n,n}
20963 fIntFlowDirectCorrelations->Fill(36.5,cos(5.*n*phi1-3.*n*phi2-2.*n*phi3),1.); //<3>_{5n|3n,2n}
20964 fIntFlowDirectCorrelations->Fill(37.5,cos(5.*n*phi1-4.*n*phi2-1.*n*phi3),1.); //<3>_{5n|4n,1n}
20965 fIntFlowDirectCorrelations->Fill(38.5,cos(6.*n*phi1-3.*n*phi2-3.*n*phi3),1.); //<3>_{6n|3n,3n}
20966 fIntFlowDirectCorrelations->Fill(39.5,cos(6.*n*phi1-4.*n*phi2-2.*n*phi3),1.); //<3>_{6n|4n,2n}
20967 fIntFlowDirectCorrelations->Fill(40.5,cos(6.*n*phi1-5.*n*phi2-1.*n*phi3),1.); //<3>_{6n|5n,1n}
489d5531 20968 } // end of for(Int_t i3=0;i3<nPrim;i3++)
20969 } // end of for(Int_t i2=0;i2<nPrim;i2++)
20970 } // end of for(Int_t i1=0;i1<nPrim;i1++)
20971 } // end of if(nPrim>=3)
20972
20973 // 4-particle correlations:
20974 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
20975 {
20976 for(Int_t i1=0;i1<nPrim;i1++)
20977 {
20978 aftsTrack=anEvent->GetTrack(i1);
20979 if(!(aftsTrack->InRPSelection())) continue;
20980 phi1=aftsTrack->Phi();
20981 for(Int_t i2=0;i2<nPrim;i2++)
20982 {
20983 if(i2==i1)continue;
20984 aftsTrack=anEvent->GetTrack(i2);
20985 if(!(aftsTrack->InRPSelection())) continue;
20986 phi2=aftsTrack->Phi();
20987 for(Int_t i3=0;i3<nPrim;i3++)
20988 {
20989 if(i3==i1||i3==i2)continue;
20990 aftsTrack=anEvent->GetTrack(i3);
20991 if(!(aftsTrack->InRPSelection())) continue;
20992 phi3=aftsTrack->Phi();
20993 for(Int_t i4=0;i4<nPrim;i4++)
20994 {
20995 if(i4==i1||i4==i2||i4==i3)continue;
20996 aftsTrack=anEvent->GetTrack(i4);
20997 if(!(aftsTrack->InRPSelection())) continue;
20998 phi4=aftsTrack->Phi();
20999 if(nPrim==4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush;
21000 // fill the profile with 4-p correlations:
21001 fIntFlowDirectCorrelations->Fill(10.,cos(n*phi1+n*phi2-n*phi3-n*phi4),1.); // <4>_{n,n|n,n}
21002 fIntFlowDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),1.); // <4>_{2n,n|2n,n}
21003 fIntFlowDirectCorrelations->Fill(12.,cos(2.*n*phi1+2*n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{2n,2n|2n,2n}
21004 fIntFlowDirectCorrelations->Fill(13.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),1.); // <4>_{3n|n,n,n}
21005 fIntFlowDirectCorrelations->Fill(14.,cos(3.*n*phi1+n*phi2-3.*n*phi3-n*phi4),1.); // <4>_{3n,n|3n,n}
21006 fIntFlowDirectCorrelations->Fill(15.,cos(3.*n*phi1+n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{3n,n|2n,2n}
21007 fIntFlowDirectCorrelations->Fill(16.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),1.); // <4>_{4n|2n,n,n}
b84464d3 21008 fIntFlowDirectCorrelations->Fill(32.,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
21009 fIntFlowDirectCorrelations->Fill(41.5,cos(n*(6.*phi1-3.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{6n|3n,2n,1n}
21010 fIntFlowDirectCorrelations->Fill(42.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{3n,2n|3n,2n}
21011 fIntFlowDirectCorrelations->Fill(43.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{4n,1n|3n,2n}
21012 fIntFlowDirectCorrelations->Fill(44.5,cos(n*(3.*phi1+3.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{3n,3n|3n,3n}
21013 fIntFlowDirectCorrelations->Fill(45.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
21014 fIntFlowDirectCorrelations->Fill(46.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{5n,1n|3n,3n}
21015 fIntFlowDirectCorrelations->Fill(47.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{4n,2n|4n,2n}
21016 fIntFlowDirectCorrelations->Fill(48.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{5n,1n|4n,2n}
21017 fIntFlowDirectCorrelations->Fill(49.5,cos(n*(5.*phi1-3.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{5n|3n,1n,1n}
21018 fIntFlowDirectCorrelations->Fill(50.5,cos(n*(5.*phi1-2.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{5n|2n,2n,1n}
403e3389 21019 fIntFlowDirectCorrelations->Fill(51.5,cos(n*(5.*phi1+1.*phi2-5.*phi3-1.*phi4)),1.); // <4>_{5n,1n|5n,1n}
21020 fIntFlowDirectCorrelations->Fill(58.5,cos(n*(6.*phi1-4.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{6n|4n,1n,1n}
21021 fIntFlowDirectCorrelations->Fill(59.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{6n|2n,2n,2n}
489d5531 21022 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21023 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21024 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21025 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21026 } // end of if(nPrim>=)
21027
21028 // 5-particle correlations:
21029 if(nPrim>=5 && nPrim<=fMaxAllowedMultiplicity)
21030 {
21031 for(Int_t i1=0;i1<nPrim;i1++)
21032 {
21033 aftsTrack=anEvent->GetTrack(i1);
21034 if(!(aftsTrack->InRPSelection())) continue;
21035 phi1=aftsTrack->Phi();
21036 for(Int_t i2=0;i2<nPrim;i2++)
21037 {
21038 if(i2==i1)continue;
21039 aftsTrack=anEvent->GetTrack(i2);
21040 if(!(aftsTrack->InRPSelection())) continue;
21041 phi2=aftsTrack->Phi();
21042 for(Int_t i3=0;i3<nPrim;i3++)
21043 {
21044 if(i3==i1||i3==i2)continue;
21045 aftsTrack=anEvent->GetTrack(i3);
21046 if(!(aftsTrack->InRPSelection())) continue;
21047 phi3=aftsTrack->Phi();
21048 for(Int_t i4=0;i4<nPrim;i4++)
21049 {
21050 if(i4==i1||i4==i2||i4==i3)continue;
21051 aftsTrack=anEvent->GetTrack(i4);
21052 if(!(aftsTrack->InRPSelection())) continue;
21053 phi4=aftsTrack->Phi();
21054 for(Int_t i5=0;i5<nPrim;i5++)
21055 {
21056 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21057 aftsTrack=anEvent->GetTrack(i5);
21058 if(!(aftsTrack->InRPSelection())) continue;
21059 phi5=aftsTrack->Phi();
21060 if(nPrim==5) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<"\r"<<flush;
21061 // fill the profile with 5-p correlations:
b84464d3 21062 fIntFlowDirectCorrelations->Fill(18.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1.); // <5>_{2n,n|n,n,n}
21063 fIntFlowDirectCorrelations->Fill(19.,cos(2.*n*phi1+2.*n*phi2-2.*n*phi3-n*phi4-n*phi5),1.); // <5>_{2n,2n|2n,n,n}
21064 fIntFlowDirectCorrelations->Fill(20.,cos(3.*n*phi1+n*phi2-2.*n*phi3-n*phi4-n*phi5),1.); // <5>_{3n,n|2n,n,n}
21065 fIntFlowDirectCorrelations->Fill(21.,cos(4.*n*phi1-n*phi2-n*phi3-n*phi4-n*phi5),1.); // <5>_{4n|n,n,n,n}
21066 fIntFlowDirectCorrelations->Fill(33.,cos(3.*n*phi1+3.*n*phi2-2.*n*phi3-2.*n*phi4-2.*n*phi5),1.); // <5>_{3n,3n|2n,2n,2n}
21067 fIntFlowDirectCorrelations->Fill(52.5,cos(3.*n*phi1+3.*n*phi2-3.*n*phi3-2.*n*phi4-1.*n*phi5),1.); // <5>_{3n,3n|3n,2n,1n}
21068 fIntFlowDirectCorrelations->Fill(53.5,cos(4.*n*phi1+2.*n*phi2-3.*n*phi3-2.*n*phi4-1.*n*phi5),1.); // <5>_{4n,2n|3n,2n,1n}
21069 fIntFlowDirectCorrelations->Fill(54.5,cos(3.*n*phi1+2.*n*phi2-3.*n*phi3-1.*n*phi4-1.*n*phi5),1.); // <5>_{3n,2n|3n,1n,1n}
21070 fIntFlowDirectCorrelations->Fill(55.5,cos(3.*n*phi1+2.*n*phi2-2.*n*phi3-2.*n*phi4-1.*n*phi5),1.); // <5>_{3n,2n|2n,2n,1n}
21071 fIntFlowDirectCorrelations->Fill(56.5,cos(5.*n*phi1+1.*n*phi2-3.*n*phi3-2.*n*phi4-1.*n*phi5),1.); // <5>_{5n,1n|3n,2n,1n}
403e3389 21072 fIntFlowDirectCorrelations->Fill(60.5,cos(6.*n*phi1-2.*n*phi2-2.*n*phi3-1.*n*phi4-1.*n*phi5),1.); // <5>_{6n|2n,2n,1n,1n}
21073 fIntFlowDirectCorrelations->Fill(61.5,cos(4.*n*phi1+1.*n*phi2+1.*n*phi3-3.*n*phi4-3.*n*phi5),1.); // <5>_{4n,1n,1n|3n,3n}
489d5531 21074 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21075 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21076 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21077 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21078 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21079 } // end of if(nPrim>=5)
21080
21081 // 6-particle correlations:
21082 if(nPrim>=6 && nPrim<=fMaxAllowedMultiplicity)
21083 {
21084 for(Int_t i1=0;i1<nPrim;i1++)
21085 {
21086 aftsTrack=anEvent->GetTrack(i1);
21087 if(!(aftsTrack->InRPSelection())) continue;
21088 phi1=aftsTrack->Phi();
21089 for(Int_t i2=0;i2<nPrim;i2++)
21090 {
21091 if(i2==i1)continue;
21092 aftsTrack=anEvent->GetTrack(i2);
21093 if(!(aftsTrack->InRPSelection())) continue;
21094 phi2=aftsTrack->Phi();
21095 for(Int_t i3=0;i3<nPrim;i3++)
21096 {
21097 if(i3==i1||i3==i2)continue;
21098 aftsTrack=anEvent->GetTrack(i3);
21099 if(!(aftsTrack->InRPSelection())) continue;
21100 phi3=aftsTrack->Phi();
21101 for(Int_t i4=0;i4<nPrim;i4++)
21102 {
21103 if(i4==i1||i4==i2||i4==i3)continue;
21104 aftsTrack=anEvent->GetTrack(i4);
21105 if(!(aftsTrack->InRPSelection())) continue;
21106 phi4=aftsTrack->Phi();
21107 for(Int_t i5=0;i5<nPrim;i5++)
21108 {
21109 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21110 aftsTrack=anEvent->GetTrack(i5);
21111 if(!(aftsTrack->InRPSelection())) continue;
21112 phi5=aftsTrack->Phi();
21113 for(Int_t i6=0;i6<nPrim;i6++)
21114 {
21115 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21116 aftsTrack=anEvent->GetTrack(i6);
21117 if(!(aftsTrack->InRPSelection())) continue;
21118 phi6=aftsTrack->Phi();
21119 if(nPrim==6) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<"\r"<<flush;
21120 // fill the profile with 6-p correlations:
403e3389 21121 fIntFlowDirectCorrelations->Fill(23.,cos(n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6),1.); // <6>_{1n,1n,1n|1n,1n,1n}
21122 fIntFlowDirectCorrelations->Fill(24.,cos(2.*n*phi1+n*phi2+n*phi3-2.*n*phi4-n*phi5-n*phi6),1.); // <6>_{2n,1n,1n|2n,1n,1n}
21123 fIntFlowDirectCorrelations->Fill(25.,cos(2.*n*phi1+2.*n*phi2-n*phi3-n*phi4-n*phi5-n*phi6),1.); // <6>_{2n,2n|1n,1n,1n,1n}
21124 fIntFlowDirectCorrelations->Fill(26.,cos(3.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5-n*phi6),1.); // <6>_{3n,1n|1n,1n,1n,1n}
b84464d3 21125 fIntFlowDirectCorrelations->Fill(57.5,cos(3.*n*phi1+2.*n*phi2+1.*n*phi3-3.*n*phi4-2.*n*phi5-1.*n*phi6),1.); // <6>_{3n,2n,1n|3n,2n,1n}
403e3389 21126 fIntFlowDirectCorrelations->Fill(62.5,cos(3.*n*phi1+3.*n*phi2-2.*n*phi3-2.*n*phi4-1.*n*phi5-1.*n*phi6),1.); // <6>_{3n,3n|2n,2n,1n,1n}
489d5531 21127 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21128 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21129 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21130 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21131 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21132 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21133 } // end of if(nPrim>=6)
21134
21135 // 7-particle correlations:
21136 if(nPrim>=7 && nPrim<=fMaxAllowedMultiplicity)
21137 {
21138 for(Int_t i1=0;i1<nPrim;i1++)
21139 {
21140 aftsTrack=anEvent->GetTrack(i1);
21141 if(!(aftsTrack->InRPSelection())) continue;
21142 phi1=aftsTrack->Phi();
21143 for(Int_t i2=0;i2<nPrim;i2++)
21144 {
21145 if(i2==i1)continue;
21146 aftsTrack=anEvent->GetTrack(i2);
21147 if(!(aftsTrack->InRPSelection())) continue;
21148 phi2=aftsTrack->Phi();
21149 for(Int_t i3=0;i3<nPrim;i3++)
21150 {
21151 if(i3==i1||i3==i2)continue;
21152 aftsTrack=anEvent->GetTrack(i3);
21153 if(!(aftsTrack->InRPSelection())) continue;
21154 phi3=aftsTrack->Phi();
21155 for(Int_t i4=0;i4<nPrim;i4++)
21156 {
21157 if(i4==i1||i4==i2||i4==i3)continue;
21158 aftsTrack=anEvent->GetTrack(i4);
21159 if(!(aftsTrack->InRPSelection())) continue;
21160 phi4=aftsTrack->Phi();
21161 for(Int_t i5=0;i5<nPrim;i5++)
21162 {
21163 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21164 aftsTrack=anEvent->GetTrack(i5);
21165 if(!(aftsTrack->InRPSelection())) continue;
21166 phi5=aftsTrack->Phi();
21167 for(Int_t i6=0;i6<nPrim;i6++)
21168 {
21169 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21170 aftsTrack=anEvent->GetTrack(i6);
21171 if(!(aftsTrack->InRPSelection())) continue;
21172 phi6=aftsTrack->Phi();
21173 for(Int_t i7=0;i7<nPrim;i7++)
21174 {
21175 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
21176 aftsTrack=anEvent->GetTrack(i7);
21177 if(!(aftsTrack->InRPSelection())) continue;
21178 phi7=aftsTrack->Phi();
21179 if(nPrim==7) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<" "<<i7<<"\r"<<flush;
21180 // fill the profile with 7-p correlation:
21181 fIntFlowDirectCorrelations->Fill(28.,cos(2.*n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6-n*phi7),1.); // <7>_{2n,n,n|n,n,n,n}
21182 } // end of for(Int_t i7=0;i7<nPrim;i7++)
21183 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21184 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21185 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21186 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21187 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21188 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21189 } // end of if(nPrim>=7)
21190
21191 // 8-particle correlations:
21192 if(nPrim>=8 && nPrim<=fMaxAllowedMultiplicity)
21193 {
21194 for(Int_t i1=0;i1<nPrim;i1++)
21195 {
21196 aftsTrack=anEvent->GetTrack(i1);
21197 if(!(aftsTrack->InRPSelection())) continue;
21198 phi1=aftsTrack->Phi();
21199 for(Int_t i2=0;i2<nPrim;i2++)
21200 {
21201 if(i2==i1)continue;
21202 aftsTrack=anEvent->GetTrack(i2);
21203 if(!(aftsTrack->InRPSelection())) continue;
21204 phi2=aftsTrack->Phi();
21205 for(Int_t i3=0;i3<nPrim;i3++)
21206 {
21207 if(i3==i1||i3==i2)continue;
21208 aftsTrack=anEvent->GetTrack(i3);
21209 if(!(aftsTrack->InRPSelection())) continue;
21210 phi3=aftsTrack->Phi();
21211 for(Int_t i4=0;i4<nPrim;i4++)
21212 {
21213 if(i4==i1||i4==i2||i4==i3)continue;
21214 aftsTrack=anEvent->GetTrack(i4);
21215 if(!(aftsTrack->InRPSelection())) continue;
21216 phi4=aftsTrack->Phi();
21217 for(Int_t i5=0;i5<nPrim;i5++)
21218 {
21219 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21220 aftsTrack=anEvent->GetTrack(i5);
21221 if(!(aftsTrack->InRPSelection())) continue;
21222 phi5=aftsTrack->Phi();
21223 for(Int_t i6=0;i6<nPrim;i6++)
21224 {
21225 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21226 aftsTrack=anEvent->GetTrack(i6);
21227 if(!(aftsTrack->InRPSelection())) continue;
21228 phi6=aftsTrack->Phi();
21229 for(Int_t i7=0;i7<nPrim;i7++)
21230 {
21231 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
21232 aftsTrack=anEvent->GetTrack(i7);
21233 if(!(aftsTrack->InRPSelection())) continue;
21234 phi7=aftsTrack->Phi();
21235 for(Int_t i8=0;i8<nPrim;i8++)
21236 {
21237 if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)continue;
21238 aftsTrack=anEvent->GetTrack(i8);
21239 if(!(aftsTrack->InRPSelection())) continue;
21240 phi8=aftsTrack->Phi();
21241 cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<" "<<i7<<" "<<i8<<"\r"<<flush;
21242 // fill the profile with 8-p correlation:
21243 fIntFlowDirectCorrelations->Fill(30.,cos(n*phi1+n*phi2+n*phi3+n*phi4-n*phi5-n*phi6-n*phi7-n*phi8),1.); // <8>_{n,n,n,n|n,n,n,n}
21244 } // end of for(Int_t i8=0;i8<nPrim;i8++)
21245 } // end of for(Int_t i7=0;i7<nPrim;i7++)
21246 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21247 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21248 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21249 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21250 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21251 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21252 } // end of if(nPrim>=8)
21253
21254 cout<<endl;
21255
21256} // end of AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoops(AliFlowEventSimple* anEvent)
21257
e1d101a6 21258//================================================================================================================
21259
21260void AliFlowAnalysisWithQCumulants::EvaluateMixedHarmonicsWithNestedLoops(AliFlowEventSimple * const anEvent)
21261{
21262 // Evaluate with nested loops multi-particle correlations for mixed harmonics.
21263
21264 Int_t nPrim = anEvent->NumberOfTracks();
21265 AliFlowTrackSimple *aftsTrack = NULL;
21266 Double_t phi1=0.;
21267 Double_t phi2=0.;
21268 Double_t phi3=0.;
21269 Double_t phi4=0.;
21270 Double_t phi5=0.;
21271 /*Double_t phi6=0.;
21272 Double_t phi7=0.;
21273 Double_t phi8=0.;*/
21274 Int_t n = fHarmonic;
21275 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // TBI: is such casting safe in general?
21276 Double_t dMult = (*fSpk)(0,0);
21277 cout<<endl;
21278 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21279 if(dMult<2)
21280 {
21281 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21282 } else if (dMult>fMaxAllowedMultiplicity)
21283 {
21284 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21285 } else
21286 {
21287 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
21288 }
21289
21290 // 2-particle correlations:
21291 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21292 {
21293 for(Int_t i1=0;i1<nPrim;i1++)
21294 {
21295 aftsTrack=anEvent->GetTrack(i1);
21296 if(!(aftsTrack->InRPSelection())) continue;
21297 phi1=aftsTrack->Phi();
21298 for(Int_t i2=0;i2<nPrim;i2++)
21299 {
21300 if(i2==i1)continue;
21301 aftsTrack=anEvent->GetTrack(i2);
21302 if(!(aftsTrack->InRPSelection())) continue;
21303 phi2=aftsTrack->Phi();
21304 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21305 // Fill the profile fMixedHarmonicsNestedLoops with 2-p correlations:
21306 fMixedHarmonicsNestedLoops->Fill(0.5,cos(1.*n*(phi1-phi2)),1.); // <cos(1n*(phi1-phi2))>
21307 fMixedHarmonicsNestedLoops->Fill(1.5,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
21308 fMixedHarmonicsNestedLoops->Fill(2.5,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
21309 fMixedHarmonicsNestedLoops->Fill(3.5,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>
21310 fMixedHarmonicsNestedLoops->Fill(4.5,cos(5.*n*(phi1-phi2)),1.); // <cos(5n*(phi1-phi2))>
21311 fMixedHarmonicsNestedLoops->Fill(5.5,cos(6.*n*(phi1-phi2)),1.); // <cos(6n*(phi1-phi2))>
21312 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21313 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21314 } // end of if(nPrim>=2)
21315
21316 // 3-particle correlations:
21317 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21318 {
21319 for(Int_t i1=0;i1<nPrim;i1++)
21320 {
21321 aftsTrack=anEvent->GetTrack(i1);
21322 if(!(aftsTrack->InRPSelection())) continue;
21323 phi1=aftsTrack->Phi();
21324 for(Int_t i2=0;i2<nPrim;i2++)
21325 {
21326 if(i2==i1)continue;
21327 aftsTrack=anEvent->GetTrack(i2);
21328 if(!(aftsTrack->InRPSelection())) continue;
21329 phi2=aftsTrack->Phi();
21330 for(Int_t i3=0;i3<nPrim;i3++)
21331 {
21332 if(i3==i1||i3==i2)continue;
21333 aftsTrack=anEvent->GetTrack(i3);
21334 if(!(aftsTrack->InRPSelection())) continue;
21335 phi3=aftsTrack->Phi();
21336 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
21337 // Fill the profile fMixedHarmonicsNestedLoops with 3-p correlations:
21338 fMixedHarmonicsNestedLoops->Fill( 6.5,cos(2.*n*phi1-n*(phi2+phi3)),1.); // <3>_{2n|1n,1n}
21339 fMixedHarmonicsNestedLoops->Fill( 7.5,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); // <3>_{4n|2n,2n}
21340 fMixedHarmonicsNestedLoops->Fill( 8.5,cos(6.*n*phi1-3.*n*phi2-3.*n*phi3),1.); // <3>_{6n|3n,3n}
21341 fMixedHarmonicsNestedLoops->Fill(10.5,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.); // <3>_{3n|2n,1n}
21342 fMixedHarmonicsNestedLoops->Fill(11.5,cos(4.*n*phi1-3.*n*phi2-1.*n*phi3),1.); // <3>_{4n|3n,1n}
21343 fMixedHarmonicsNestedLoops->Fill(12.5,cos(5.*n*phi1-3.*n*phi2-2.*n*phi3),1.); // <3>_{5n|3n,2n}
21344 fMixedHarmonicsNestedLoops->Fill(13.5,cos(5.*n*phi1-4.*n*phi2-1.*n*phi3),1.); // <3>_{5n|4n,1n}
21345 fMixedHarmonicsNestedLoops->Fill(14.5,cos(6.*n*phi1-4.*n*phi2-2.*n*phi3),1.); // <3>_{6n|4n,2n}
21346 fMixedHarmonicsNestedLoops->Fill(15.5,cos(6.*n*phi1-5.*n*phi2-1.*n*phi3),1.); // <3>_{6n|5n,1n}
21347 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21348 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21349 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21350 } // end of if(nPrim>=3)
21351
21352 // 4-particle correlations:
21353 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
21354 {
21355 for(Int_t i1=0;i1<nPrim;i1++)
21356 {
21357 aftsTrack=anEvent->GetTrack(i1);
21358 if(!(aftsTrack->InRPSelection())) continue;
21359 phi1=aftsTrack->Phi();
21360 for(Int_t i2=0;i2<nPrim;i2++)
21361 {
21362 if(i2==i1)continue;
21363 aftsTrack=anEvent->GetTrack(i2);
21364 if(!(aftsTrack->InRPSelection())) continue;
21365 phi2=aftsTrack->Phi();
21366 for(Int_t i3=0;i3<nPrim;i3++)
21367 {
21368 if(i3==i1||i3==i2)continue;
21369 aftsTrack=anEvent->GetTrack(i3);
21370 if(!(aftsTrack->InRPSelection())) continue;
21371 phi3=aftsTrack->Phi();
21372 for(Int_t i4=0;i4<nPrim;i4++)
21373 {
21374 if(i4==i1||i4==i2||i4==i3)continue;
21375 aftsTrack=anEvent->GetTrack(i4);
21376 if(!(aftsTrack->InRPSelection())) continue;
21377 phi4=aftsTrack->Phi();
21378 if(nPrim==4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush;
21379 // fill the profile with 4-p correlations:
21380 fMixedHarmonicsNestedLoops->Fill(16.5,cos(1.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{1n,1n|1n,1n}
21381 fMixedHarmonicsNestedLoops->Fill(17.5,cos(2.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{2n,2n|2n,2n}
21382 fMixedHarmonicsNestedLoops->Fill(18.5,cos(3.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{3n,3n|3n,3n}
21383 fMixedHarmonicsNestedLoops->Fill(19.5,cos(4.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{4n,4n|4n,4n}
21384 fMixedHarmonicsNestedLoops->Fill(20.5,cos(5.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{5n,5n|5n,5n}
21385 fMixedHarmonicsNestedLoops->Fill(21.5,cos(6.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{6n,6n|6n,6n}
21386 fMixedHarmonicsNestedLoops->Fill(23.5,cos(n*(2.*phi1+1.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{2n,1n|2n,1n}
21387 fMixedHarmonicsNestedLoops->Fill(24.5,cos(n*(3.*phi1+1.*phi2-3.*phi3-1.*phi4)),1.); // <4>_{3n,1n|3n,1n}
21388 fMixedHarmonicsNestedLoops->Fill(25.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{3n,2n|3n,2n}
21389 fMixedHarmonicsNestedLoops->Fill(26.5,cos(n*(4.*phi1+1.*phi2-4.*phi3-1.*phi4)),1.); // <4>_{4n,1n|4n,1n}
21390 fMixedHarmonicsNestedLoops->Fill(27.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{4n,2n|4n,2n}
21391 fMixedHarmonicsNestedLoops->Fill(28.5,cos(n*(4.*phi1+3.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{4n,3n|4n,3n}
21392 fMixedHarmonicsNestedLoops->Fill(29.5,cos(n*(5.*phi1+1.*phi2-5.*phi3-1.*phi4)),1.); // <4>_{5n,1n|5n,1n}
21393 fMixedHarmonicsNestedLoops->Fill(30.5,cos(n*(5.*phi1+2.*phi2-5.*phi3-2.*phi4)),1.); // <4>_{5n,2n|5n,2n}
21394 fMixedHarmonicsNestedLoops->Fill(31.5,cos(n*(5.*phi1+3.*phi2-5.*phi3-3.*phi4)),1.); // <4>_{5n,3n|5n,3n}
21395 fMixedHarmonicsNestedLoops->Fill(32.5,cos(n*(5.*phi1+4.*phi2-5.*phi3-4.*phi4)),1.); // <4>_{5n,4n|5n,4n}
21396 fMixedHarmonicsNestedLoops->Fill(33.5,cos(n*(6.*phi1+1.*phi2-6.*phi3-1.*phi4)),1.); // <4>_{6n,1n|6n,1n}
21397 fMixedHarmonicsNestedLoops->Fill(34.5,cos(n*(6.*phi1+2.*phi2-6.*phi3-2.*phi4)),1.); // <4>_{6n,2n|6n,2n}
21398 fMixedHarmonicsNestedLoops->Fill(35.5,cos(n*(6.*phi1+3.*phi2-6.*phi3-3.*phi4)),1.); // <4>_{6n,3n|6n,3n}
21399 fMixedHarmonicsNestedLoops->Fill(36.5,cos(n*(6.*phi1+4.*phi2-6.*phi3-4.*phi4)),1.); // <4>_{6n,4n|6n,4n}
21400 fMixedHarmonicsNestedLoops->Fill(37.5,cos(n*(6.*phi1+5.*phi2-6.*phi3-5.*phi4)),1.); // <4>_{6n,5n|6n,5n}
21401 fMixedHarmonicsNestedLoops->Fill(39.5,cos(n*(3.*phi1-1.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{3n|1n,1n,1n}
21402 fMixedHarmonicsNestedLoops->Fill(40.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{6n|2n,2n,2n}
21403 fMixedHarmonicsNestedLoops->Fill(42.5,cos(n*(3.*phi1+1.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{3n,1n|2n,2n}
21404 fMixedHarmonicsNestedLoops->Fill(43.5,cos(n*(4.*phi1-2.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{4n|2n,1n,1n}
21405 fMixedHarmonicsNestedLoops->Fill(44.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
21406 fMixedHarmonicsNestedLoops->Fill(45.5,cos(n*(5.*phi1-2.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{5n|2n,2n,1n}
21407 fMixedHarmonicsNestedLoops->Fill(46.5,cos(n*(5.*phi1-3.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{5n|3n,1n,1n}
21408 fMixedHarmonicsNestedLoops->Fill(47.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{5n,1n|3n,3n}
21409 fMixedHarmonicsNestedLoops->Fill(48.5,cos(n*(5.*phi1+3.*phi2-4.*phi3-4.*phi4)),1.); // <4>_{5n,3n|4n,4n}
21410 fMixedHarmonicsNestedLoops->Fill(49.5,cos(n*(6.*phi1-4.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{6n|4n,1n,1n}
21411 fMixedHarmonicsNestedLoops->Fill(50.5,cos(n*(6.*phi1+2.*phi2-4.*phi3-4.*phi4)),1.); // <4>_{6n,2n|4n,4n}
21412 fMixedHarmonicsNestedLoops->Fill(51.5,cos(n*(6.*phi1+4.*phi2-5.*phi3-5.*phi4)),1.); // <4>_{6n,4n|5n,5n}
21413 fMixedHarmonicsNestedLoops->Fill(53.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{4n,1n|3n,2n}
21414 fMixedHarmonicsNestedLoops->Fill(54.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{5n,1n|4n,2n}
21415 fMixedHarmonicsNestedLoops->Fill(55.5,cos(n*(5.*phi1+2.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{5n,2n|4n,3n}
21416 fMixedHarmonicsNestedLoops->Fill(56.5,cos(n*(6.*phi1+1.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{6n,1n|4n,3n}
21417 fMixedHarmonicsNestedLoops->Fill(57.5,cos(n*(6.*phi1+1.*phi2-5.*phi3-2.*phi4)),1.); // <4>_{6n,1n|5n,2n}
21418 fMixedHarmonicsNestedLoops->Fill(58.5,cos(n*(6.*phi1-3.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{6n|3n,2n,1n}
21419 fMixedHarmonicsNestedLoops->Fill(59.5,cos(n*(6.*phi1+2.*phi2-5.*phi3-3.*phi4)),1.); // <4>_{6n,2n|5n,3n}
21420 fMixedHarmonicsNestedLoops->Fill(60.5,cos(n*(6.*phi1+3.*phi2-5.*phi3-4.*phi4)),1.); // <4>_{6n,3n|5n,4n}
21421 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21422 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21423 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21424 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21425 } // end of if(nPrim>=)
21426
21427 // 5-particle correlations:
21428 if(nPrim>=5 && nPrim<=fMaxAllowedMultiplicity)
21429 {
21430 for(Int_t i1=0;i1<nPrim;i1++)
21431 {
21432 aftsTrack=anEvent->GetTrack(i1);
21433 if(!(aftsTrack->InRPSelection())) continue;
21434 phi1=aftsTrack->Phi();
21435 for(Int_t i2=0;i2<nPrim;i2++)
21436 {
21437 if(i2==i1)continue;
21438 aftsTrack=anEvent->GetTrack(i2);
21439 if(!(aftsTrack->InRPSelection())) continue;
21440 phi2=aftsTrack->Phi();
21441 for(Int_t i3=0;i3<nPrim;i3++)
21442 {
21443 if(i3==i1||i3==i2)continue;
21444 aftsTrack=anEvent->GetTrack(i3);
21445 if(!(aftsTrack->InRPSelection())) continue;
21446 phi3=aftsTrack->Phi();
21447 for(Int_t i4=0;i4<nPrim;i4++)
21448 {
21449 if(i4==i1||i4==i2||i4==i3)continue;
21450 aftsTrack=anEvent->GetTrack(i4);
21451 if(!(aftsTrack->InRPSelection())) continue;
21452 phi4=aftsTrack->Phi();
21453 for(Int_t i5=0;i5<nPrim;i5++)
21454 {
21455 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21456 aftsTrack=anEvent->GetTrack(i5);
21457 if(!(aftsTrack->InRPSelection())) continue;
21458 phi5=aftsTrack->Phi();
21459 if(nPrim==5) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<"\r"<<flush;
21460 // fill the profile with 5-p correlations:
21461 fMixedHarmonicsNestedLoops->Fill(61.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5))>
21462 fMixedHarmonicsNestedLoops->Fill(62.5,cos(n*(4.*phi1+1.*phi2-2.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+1*phi2-2*phi3-2*phi4-1*phi5))>
21463 fMixedHarmonicsNestedLoops->Fill(63.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5))>
21464 fMixedHarmonicsNestedLoops->Fill(64.5,cos(n*(4.*phi1+3.*phi2-3.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(4*phi1+3*phi2-3*phi3-2*phi4-2*phi5))>
21465 fMixedHarmonicsNestedLoops->Fill(65.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+2*phi2-4*phi3-1*phi4-1*phi5))>
21466 fMixedHarmonicsNestedLoops->Fill(66.5,cos(n*(4.*phi1+3.*phi2-4.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+3*phi2-4*phi3-2*phi4-1*phi5))>
21467 fMixedHarmonicsNestedLoops->Fill(67.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5))>
21468 fMixedHarmonicsNestedLoops->Fill(68.5,cos(n*(5.*phi1+2.*phi2-5.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+2*phi2-5*phi3-1*phi4-1*phi5))>
21469 fMixedHarmonicsNestedLoops->Fill(69.5,cos(n*(5.*phi1+2.*phi2-4.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+2*phi2-4*phi3-2*phi4-1*phi5))>
21470 fMixedHarmonicsNestedLoops->Fill(70.5,cos(n*(5.*phi1+3.*phi2-4.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+3*phi2-4*phi3-3*phi4-1*phi5))>
21471 fMixedHarmonicsNestedLoops->Fill(71.5,cos(n*(5.*phi1+4.*phi2-4.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+4*phi2-4*phi3-3*phi4-2*phi5))>
21472 fMixedHarmonicsNestedLoops->Fill(72.5,cos(n*(5.*phi1+3.*phi2-5.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+3*phi2-5*phi3-2*phi4-1*phi5))>
21473 fMixedHarmonicsNestedLoops->Fill(73.5,cos(n*(5.*phi1+4.*phi2-5.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+4*phi2-5*phi3-2*phi4-2*phi5))>
21474 fMixedHarmonicsNestedLoops->Fill(74.5,cos(n*(5.*phi1+4.*phi2-5.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+4*phi2-5*phi3-3*phi4-1*phi5))>
21475 fMixedHarmonicsNestedLoops->Fill(75.5,cos(n*(6.*phi1+1.*phi2-3.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+1*phi2-3*phi3-3*phi4-1*phi5))>
21476 fMixedHarmonicsNestedLoops->Fill(76.5,cos(n*(6.*phi1+2.*phi2-3.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+2*phi2-3*phi3-3*phi4-2*phi5))>
21477 fMixedHarmonicsNestedLoops->Fill(77.5,cos(n*(6.*phi1+1.*phi2-4.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+1*phi2-4*phi3-2*phi4-1*phi5))>
21478 fMixedHarmonicsNestedLoops->Fill(78.5,cos(n*(6.*phi1+3.*phi2-4.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+3*phi2-4*phi3-3*phi4-2*phi5))>
21479 fMixedHarmonicsNestedLoops->Fill(79.5,cos(n*(6.*phi1+4.*phi2-4.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+4*phi2-4*phi3-3*phi4-3*phi5))>
21480 fMixedHarmonicsNestedLoops->Fill(80.5,cos(n*(6.*phi1+2.*phi2-5.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+2*phi2-5*phi3-2*phi4-1*phi5))>
21481 fMixedHarmonicsNestedLoops->Fill(81.5,cos(n*(6.*phi1+3.*phi2-5.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+3*phi2-5*phi3-3*phi4-1*phi5))>
21482 fMixedHarmonicsNestedLoops->Fill(82.5,cos(n*(6.*phi1+4.*phi2-5.*phi3-4.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+4*phi2-5*phi3-4*phi4-1*phi5))>
21483 fMixedHarmonicsNestedLoops->Fill(83.5,cos(n*(6.*phi1+5.*phi2-5.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+5*phi2-5*phi3-3*phi4-3*phi5))>
21484 fMixedHarmonicsNestedLoops->Fill(84.5,cos(n*(6.*phi1+2.*phi2-6.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+2*phi2-6*phi3-1*phi4-1*phi5))>
21485 fMixedHarmonicsNestedLoops->Fill(85.5,cos(n*(6.*phi1+3.*phi2-6.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+3*phi2-6*phi3-2*phi4-1*phi5))>
21486 fMixedHarmonicsNestedLoops->Fill(86.5,cos(n*(6.*phi1+4.*phi2-6.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+4*phi2-6*phi3-2*phi4-2*phi5))>
21487 fMixedHarmonicsNestedLoops->Fill(87.5,cos(n*(6.*phi1+4.*phi2-6.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+4*phi2-6*phi3-3*phi4-1*phi5))>
21488 fMixedHarmonicsNestedLoops->Fill(88.5,cos(n*(6.*phi1+5.*phi2-5.*phi3-4.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+5*phi2-5*phi3-4*phi4-2*phi5))>
21489 fMixedHarmonicsNestedLoops->Fill(89.5,cos(n*(6.*phi1+5.*phi2-6.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+5*phi2-6*phi3-3*phi4-2*phi5))>
21490 fMixedHarmonicsNestedLoops->Fill(90.5,cos(n*(6.*phi1+5.*phi2-6.*phi3-4.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+5*phi2-6*phi3-4*phi4-1*phi5))>
21491 //fMixedHarmonicsNestedLoops->Fill(91.5,-44.,1.); // empty
21492 fMixedHarmonicsNestedLoops->Fill(92.5,cos(n*(2.*phi1+1.*phi2-1.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(2*phi1+1*phi2-1*phi3-1*phi4-1*phi5))>
21493 fMixedHarmonicsNestedLoops->Fill(93.5,cos(n*(2.*phi1+2.*phi2-2.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(2*phi1+2*phi2-2*phi3-1*phi4-1*phi5))>
21494 fMixedHarmonicsNestedLoops->Fill(94.5,cos(n*(3.*phi1+3.*phi2-2.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
21495 fMixedHarmonicsNestedLoops->Fill(95.5,cos(n*(4.*phi1-1.*phi2-1.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(4*phi1-1*phi2-1*phi3-1*phi4-1*phi5))>
21496 fMixedHarmonicsNestedLoops->Fill(96.5,cos(n*(4.*phi1+2.*phi2-2.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(4*phi1+2*phi2-2*phi3-2*phi4-2*phi5))>
21497 fMixedHarmonicsNestedLoops->Fill(97.5,cos(n*(4.*phi1+4.*phi2-4.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(4*phi1+4*phi2-4*phi3-2*phi4-2*phi5))>
21498 fMixedHarmonicsNestedLoops->Fill(98.5,cos(n*(6.*phi1+3.*phi2-3.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+3*phi2-3*phi3-3*phi4-3*phi5))>
21499 fMixedHarmonicsNestedLoops->Fill(99.5,cos(n*(6.*phi1+6.*phi2-4.*phi3-4.*phi4-4.*phi5)),1.); // <cos(n(6*phi1+6*phi2-4*phi3-4*phi4-4*phi5))>
21500 fMixedHarmonicsNestedLoops->Fill(100.5,cos(n*(6.*phi1+6.*phi2-6.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+6*phi2-6*phi3-3*phi4-3*phi5))>
21501 //fMixedHarmonicsNestedLoops->Fill(101.5,-44.,1.); // empty
21502 fMixedHarmonicsNestedLoops->Fill(102.5,cos(n*(3.*phi1+1.*phi2-2.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(3*phi1+1*phi2-2*phi3-1*phi4-1*phi5))>
21503 fMixedHarmonicsNestedLoops->Fill(103.5,cos(n*(3.*phi1+2.*phi2-2.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5))>
21504 fMixedHarmonicsNestedLoops->Fill(104.5,cos(n*(3.*phi1+3.*phi2-3.*phi3-2.*phi4-1.*phi5)),1.); // <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5))>
21505 fMixedHarmonicsNestedLoops->Fill(105.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+1*phi2-3*phi3-1*phi4-1*phi5))>
21506 fMixedHarmonicsNestedLoops->Fill(106.5,cos(n*(4.*phi1+1.*phi2+1.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5))>
21507 fMixedHarmonicsNestedLoops->Fill(107.5,cos(n*(4.*phi1+3.*phi2-3.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+3*phi2-3*phi3-3*phi4-1*phi5))>
21508 fMixedHarmonicsNestedLoops->Fill(108.5,cos(n*(4.*phi1+4.*phi2-3.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(4*phi1+4*phi2-3*phi3-3*phi4-2*phi5))>
21509 fMixedHarmonicsNestedLoops->Fill(109.5,cos(n*(4.*phi1+4.*phi2-4.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(4*phi1+4*phi2-4*phi3-3*phi4-1*phi5))>
21510 fMixedHarmonicsNestedLoops->Fill(110.5,cos(n*(5.*phi1-2.*phi2-1.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(5*phi1-2*phi2-1*phi3-1*phi4-1*phi5))>
21511 fMixedHarmonicsNestedLoops->Fill(111.5,cos(n*(5.*phi1+1.*phi2-2.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+1*phi2-2*phi3-2*phi4-2*phi5))>
21512 fMixedHarmonicsNestedLoops->Fill(112.5,cos(n*(5.*phi1+2.*phi2-3.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+2*phi2-3*phi3-2*phi4-2*phi5))>
21513 fMixedHarmonicsNestedLoops->Fill(113.5,cos(n*(5.*phi1+3.*phi2-3.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+3*phi2-3*phi3-3*phi4-2*phi5))>
21514 fMixedHarmonicsNestedLoops->Fill(114.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+1*phi2-4*phi3-1*phi4-1*phi5))>
21515 fMixedHarmonicsNestedLoops->Fill(115.5,cos(n*(5.*phi1+4.*phi2-3.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(5*phi1+4*phi2-3*phi3-3*phi4-3*phi5))>
21516 fMixedHarmonicsNestedLoops->Fill(116.5,cos(n*(5.*phi1+4.*phi2-4.*phi3-4.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+4*phi2-4*phi3-4*phi4-1*phi5))>
21517 fMixedHarmonicsNestedLoops->Fill(117.5,cos(n*(5.*phi1+5.*phi2-4.*phi3-3.*phi4-3.*phi5)),1.); // <cos(n(5*phi1+5*phi2-4*phi3-3*phi4-3*phi5))>
21518 fMixedHarmonicsNestedLoops->Fill(118.5,cos(n*(5.*phi1+5.*phi2-4.*phi3-4.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+5*phi2-4*phi3-4*phi4-2*phi5))>
21519 fMixedHarmonicsNestedLoops->Fill(119.5,cos(n*(5.*phi1+5.*phi2-5.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+5*phi2-5*phi3-3*phi4-2*phi5))>
21520 fMixedHarmonicsNestedLoops->Fill(120.5,cos(n*(5.*phi1+5.*phi2-5.*phi3-4.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+5*phi2-5*phi3-4*phi4-1*phi5))>
21521 fMixedHarmonicsNestedLoops->Fill(121.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5))>
21522 fMixedHarmonicsNestedLoops->Fill(122.5,cos(n*(6.*phi1-3.*phi2-1.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(6*phi1-3*phi2-1*phi3-1*phi4-1*phi5))>
21523 fMixedHarmonicsNestedLoops->Fill(123.5,cos(n*(6.*phi1+1.*phi2+1.*phi3-4.*phi4-4.*phi5)),1.); // <cos(n(6*phi1+1*phi2+1*phi3-4*phi4-4*phi5))>
21524 fMixedHarmonicsNestedLoops->Fill(124.5,cos(n*(6.*phi1+1.*phi2-5.*phi3-1.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+1*phi2-5*phi3-1*phi4-1*phi5))>
21525 fMixedHarmonicsNestedLoops->Fill(125.5,cos(n*(6.*phi1+2.*phi2-4.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+2*phi2-4*phi3-2*phi4-2*phi5))>
21526 fMixedHarmonicsNestedLoops->Fill(126.5,cos(n*(6.*phi1+4.*phi2-4.*phi3-4.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+4*phi2-4*phi3-4*phi4-2*phi5))>
21527 fMixedHarmonicsNestedLoops->Fill(127.5,cos(n*(6.*phi1+2.*phi2+2.*phi3-5.*phi4-5.*phi5)),1.); // <cos(n(6*phi1+2*phi2+2*phi3-5*phi4-5*phi5))>
21528 fMixedHarmonicsNestedLoops->Fill(128.5,cos(n*(6.*phi1+5.*phi2-5.*phi3-5.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+5*phi2-5*phi3-5*phi4-1*phi5))>
21529 fMixedHarmonicsNestedLoops->Fill(129.5,cos(n*(6.*phi1+6.*phi2-5.*phi3-5.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+6*phi2-5*phi3-5*phi4-2*phi5))>
21530 fMixedHarmonicsNestedLoops->Fill(130.5,cos(n*(6.*phi1+6.*phi2-6.*phi3-4.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+6*phi2-6*phi3-4*phi4-2*phi5))>
21531 fMixedHarmonicsNestedLoops->Fill(131.5,cos(n*(6.*phi1+6.*phi2-6.*phi3-5.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+6*phi2-6*phi3-5*phi4-1*phi5))> // TBI swap with the one above
21532 //fMixedHarmonicsNestedLoops->Fill(132.5,-44.,1.); // empty
21533 fMixedHarmonicsNestedLoops->Fill(133.5,cos(n*(5.*phi1+2.*phi2-3.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(5*phi1+2*phi2-3*phi3-3*phi4-1*phi5))>
21534 fMixedHarmonicsNestedLoops->Fill(134.5,cos(n*(5.*phi1+1.*phi2+1.*phi3-4.*phi4-3.*phi5)),1.); // <cos(n(5*phi1+1*phi2+1*phi3-4*phi4-3*phi5))>
21535 fMixedHarmonicsNestedLoops->Fill(135.5,cos(n*(5.*phi1+3.*phi2-4.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(5*phi1+3*phi2-4*phi3-2*phi4-2*phi5))>
21536 fMixedHarmonicsNestedLoops->Fill(136.5,cos(n*(5.*phi1+2.*phi2+1.*phi3-4.*phi4-4.*phi5)),1.); // <cos(n(5*phi1+2*phi2+1*phi3-4*phi4-4*phi5))>
21537 fMixedHarmonicsNestedLoops->Fill(137.5,cos(n*(6.*phi1+1.*phi2-3.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+1*phi2-3*phi3-2*phi4-2*phi5))>
21538 fMixedHarmonicsNestedLoops->Fill(138.5,cos(n*(6.*phi1+3.*phi2-4.*phi3-4.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+3*phi2-4*phi3-4*phi4-1*phi5))>
21539 fMixedHarmonicsNestedLoops->Fill(139.5,cos(n*(6.*phi1+1.*phi2+1.*phi3-5.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
21540 fMixedHarmonicsNestedLoops->Fill(140.5,cos(n*(6.*phi1+3.*phi2-5.*phi3-2.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+3*phi2-5*phi3-2*phi4-2*phi5))>
21541 fMixedHarmonicsNestedLoops->Fill(141.5,cos(n*(6.*phi1+5.*phi2-4.*phi3-4.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+5*phi2-4*phi3-4*phi4-3*phi5))>
21542 fMixedHarmonicsNestedLoops->Fill(142.5,cos(n*(6.*phi1+3.*phi2+1.*phi3-5.*phi4-5.*phi5)),1.); // <cos(n(6*phi1+3*phi2+1*phi3-5*phi4-5*phi5))>
21543 fMixedHarmonicsNestedLoops->Fill(143.5,cos(n*(6.*phi1+6.*phi2-5.*phi3-4.*phi4-3.*phi5)),1.); // <cos(n(6*phi1+6*phi2-5*phi3-4*phi4-3*phi5))>
21544 //fMixedHarmonicsNestedLoops->Fill(144.5,-44.,1.); // empty
21545 fMixedHarmonicsNestedLoops->Fill(145.5,cos(n*(6.*phi1+2.*phi2-4.*phi3-3.*phi4-1.*phi5)),1.); // <cos(n(6*phi1+2*phi2-4*phi3-3*phi4-1*phi5))>
21546 fMixedHarmonicsNestedLoops->Fill(146.5,cos(n*(6.*phi1+2.*phi2+1.*phi3-5.*phi4-4.*phi5)),1.); // <cos(n(6*phi1+2*phi2+1*phi3-5*phi4-4*phi5))>
21547 fMixedHarmonicsNestedLoops->Fill(147.5,cos(n*(6.*phi1+4.*phi2-5.*phi3-3.*phi4-2.*phi5)),1.); // <cos(n(6*phi1+4*phi2-5*phi3-3*phi4-2*phi5))>
21548 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21549 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21550 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21551 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21552 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21553 } // end of if(nPrim>=5)
21554
21555 // QW44
489d5531 21556
e1d101a6 21557} // end of void AliFlowAnalysisWithQCumulants::EvaluateMixedHarmonicsWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 21558
e1d101a6 21559//================================================================================================================
489d5531 21560
21561void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrelations()
21562{
21563 // Cross-check results for multiparticle correlations needed for int. flow: results from Q-vectors vs results from nested loops.
21564
21565 cout<<endl;
21566 cout<<endl;
21567 cout<<" *****************************************"<<endl;
21568 cout<<" **** cross-checking the correlations ****"<<endl;
21569 cout<<" **** for integrated flow ****"<<endl;
403e3389 21570 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 21571 {
21572 cout<<" **** (particle weights not used) ****"<<endl;
21573 } else
21574 {
21575 cout<<" **** (particle weights used) ****"<<endl;
21576 }
21577 cout<<" *****************************************"<<endl;
21578 cout<<endl;
21579 cout<<endl;
21580
403e3389 21581 Int_t ciMax = 64; // to be improved (removed eventually when I calculate 6th and 8th order with particle weights)
489d5531 21582
403e3389 21583 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 21584 {
21585 ciMax = 11;
21586 }
21587
21588 for(Int_t ci=1;ci<=ciMax;ci++)
21589 {
21590 if(strcmp((fIntFlowCorrelationsAllPro->GetXaxis())->GetBinLabel(ci), "") == 0) continue; // to be improved (access finalized histogram here)
21591 cout<<(fIntFlowCorrelationsAllPro->GetXaxis())->GetBinLabel(ci)<<":"<<endl; // to be improved (access finalized histogram here)
21592 cout<<"from Q-vectors = "<<fIntFlowCorrelationsAllPro->GetBinContent(ci)<<endl; // to be improved (access finalized histogram here)
21593 cout<<"from nested loops = "<<fIntFlowDirectCorrelations->GetBinContent(ci)<<endl;
21594 cout<<endl;
21595 }
e1d101a6 21596
21597 if(!fCalculateMixedHarmonics){return;}
21598
21599 cout<<endl;
21600 cout<<endl;
21601 cout<<" *****************************************"<<endl;
21602 cout<<" **** cross-checking the correlations ****"<<endl;
21603 cout<<" **** for mixed harmonics ****"<<endl;
21604 cout<<" *****************************************"<<endl;
21605 cout<<endl;
21606 cout<<endl;
21607
21608 // 2-p:
21609 for(Int_t ci=1;ci<=6;ci++)
21610 {
21611 cout<<(f2pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21612 cout<<"from Q-vectors = "<<f2pCorrelations->GetBinContent(ci)<<endl;
21613 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci)<<endl;
21614 cout<<endl;
21615 } // end of for(Int_t ci=1;ci<=6;ci++)
21616
21617 // 3-p:
21618 for(Int_t ci=1;ci<=10;ci++)
21619 {
21620 if(4==ci){continue;} // skipping the empty bins
21621 cout<<(f3pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21622 cout<<"from Q-vectors = "<<f3pCorrelations->GetBinContent(ci)<<endl;
21623 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6)<<endl;
21624 cout<<endl;
21625 } // end of for(Int_t ci=1;ci<=10;ci++)
21626
21627 // 4-p:
21628 for(Int_t ci=1;ci<=45;ci++)
21629 {
21630 if(7==ci||23==ci||26==ci||37==ci){continue;} // skipping the empty bins
21631 cout<<(f4pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21632 cout<<"from Q-vectors = "<<f4pCorrelations->GetBinContent(ci)<<endl;
21633 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10)<<endl;
21634 //if(TMath::Abs(f4pCorrelations->GetBinContent(ci)-fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10))
21635 // > 1.e-10){exit(0);}
21636 cout<<endl;
21637 } // end of for(Int_t ci=1;ci<=45;ci++)
21638
21639 for(Int_t ci=1;ci<=87;ci++)
21640 {
21641 if(31==ci||41==ci||72==ci||84==ci){continue;} // skipping the empty bins
21642 cout<<(f5pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21643 cout<<"from Q-vectors = "<<f5pCorrelations->GetBinContent(ci)<<endl;
21644 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10+45)<<endl;
21645 if(TMath::Abs(f5pCorrelations->GetBinContent(ci)-fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10+45))
21646 > 1.e-10){exit(0);}
21647 cout<<endl;
21648 } // end of for(Int_t ci=1;ci<=87;ci++)
21649
21650 return;
21651
489d5531 21652} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrelations()
21653
e1d101a6 21654//=======================================================================================================================
489d5531 21655
489d5531 21656void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrectionTermsForNUA()
21657{
21658 // Cross-check results for corrections terms for non-uniform acceptance needed for int. flow: results from Q-vectors vs results from nested loops.
21659
21660 cout<<endl;
21661 cout<<endl;
21662 cout<<" *********************************************"<<endl;
21663 cout<<" **** cross-checking the correction terms ****"<<endl;
21664 cout<<" **** for non-uniform acceptance relevant ****"<<endl;
21665 cout<<" **** for integrated flow ****"<<endl;
403e3389 21666 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 21667 {
21668 cout<<" **** (particle weights not used) ****"<<endl;
21669 } else
21670 {
21671 cout<<" **** (particle weights used) ****"<<endl;
21672 }
21673 cout<<" *********************************************"<<endl;
21674 cout<<endl;
21675 cout<<endl;
21676
b92ea2b9 21677 for(Int_t ci=1;ci<=4;ci++) // correction term index (to be improved - hardwired 4)
489d5531 21678 {
21679 for(Int_t sc=0;sc<2;sc++) // sin or cos term
21680 {
21681 if(strcmp((fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->GetBinLabel(ci), "") == 0) continue; // to be improved (access finalized histogram here)
21682 cout<<(fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->GetBinLabel(ci)<<":"<<endl; // to be improved (access finalized histogram here)
21683 cout<<"from Q-vectors = "<<fIntFlowCorrectionTermsForNUAPro[sc]->GetBinContent(ci)<<endl; // to be improved (access finalized histogram here)
21684 cout<<"from nested loops = "<<fIntFlowDirectCorrectionTermsForNUA[sc]->GetBinContent(ci)<<endl;
21685 cout<<endl;
21686 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos term
21687 } // end of for(Int_t ci=1;ci<=10;ci++) // correction term index
21688
21689} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrectionTermsForNUA()
21690
e1d101a6 21691//=======================================================================================================================
489d5531 21692
0328db2d 21693void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent)
489d5531 21694{
21695 // Evaluate with nested loops multiparticle correlations for integrated flow (using the particle weights).
21696
21697 // Results are stored in profile fIntFlowDirectCorrelations.
21698 // Remark 1: When particle weights are used the binning of fIntFlowDirectCorrelations is organized as follows:
21699 //
21700 // 1st bin: <2>_{1n|1n} = two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
21701 // 2nd bin: <2>_{2n|2n} = two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
21702 // 3rd bin: <2>_{3n|3n} = two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
21703 // 4th bin: <2>_{4n|4n} = two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
21704 // 5th bin: ---- EMPTY ----
21705 // 6th bin: <3>_{2n|1n,1n} = three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
21706 // 7th bin: <3>_{3n|2n,1n} = ...
21707 // 8th bin: <3>_{4n|2n,2n} = ...
21708 // 9th bin: <3>_{4n|3n,1n} = ...
21709 // 10th bin: ---- EMPTY ----
21710 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
21711 // 12th bin: <4>_{2n,1n|2n,1n} = ...
21712 // 13th bin: <4>_{2n,2n|2n,2n} = ...
21713 // 14th bin: <4>_{3n|1n,1n,1n} = ...
21714 // 15th bin: <4>_{3n,1n|3n,1n} = ...
21715 // 16th bin: <4>_{3n,1n|2n,2n} = ...
21716 // 17th bin: <4>_{4n|2n,1n,1n} = ...
21717 // 18th bin: ---- EMPTY ----
21718 // 19th bin: <5>_{2n|1n,1n,1n,1n} = ...
21719 // 20th bin: <5>_{2n,2n|2n,1n,1n} = ...
21720 // 21st bin: <5>_{3n,1n|2n,1n,1n} = ...
21721 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = ...
21722 // 23rd bin: ---- EMPTY ----
21723 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = ...
21724 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = ...
21725 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = ...
21726 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = ...
21727 // 28th bin: ---- EMPTY ----
21728 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = ...
21729 // 30th bin: ---- EMPTY ----
21730 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = ...
57340a27 21731
489d5531 21732 // Remark 2: When particle weights are used there are some extra correlations. They are stored in
21733 // fIntFlowExtraDirectCorrelations binning of which is organized as follows:
57340a27 21734
489d5531 21735 // 1st bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
21736 // 2nd bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
21737 // ...
57340a27 21738
489d5531 21739 Int_t nPrim = anEvent->NumberOfTracks();
21740 AliFlowTrackSimple *aftsTrack = NULL;
21741 //Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
21742 //Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
21743 Double_t phi1=0., phi2=0., phi3=0., phi4=0.;
21744 Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1.;
21745 Int_t n = fHarmonic;
21746 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 21747 Double_t dMult = (*fSpk)(0,0);
489d5531 21748 cout<<endl;
21749 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21750 if(dMult<2)
21751 {
21752 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21753 } else if (dMult>fMaxAllowedMultiplicity)
21754 {
21755 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21756 } else
21757 {
21758 cout<<"... evaluating nested loops (using particle weights) ..."<<endl;
21759 }
21760
21761 // 2-particle correlations:
21762 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21763 {
21764 // 2 nested loops multiparticle correlations using particle weights:
21765 for(Int_t i1=0;i1<nPrim;i1++)
21766 {
21767 aftsTrack=anEvent->GetTrack(i1);
21768 if(!(aftsTrack->InRPSelection())) continue;
21769 phi1=aftsTrack->Phi();
21770 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21771 for(Int_t i2=0;i2<nPrim;i2++)
21772 {
21773 if(i2==i1)continue;
21774 aftsTrack=anEvent->GetTrack(i2);
21775 if(!(aftsTrack->InRPSelection())) continue;
21776 phi2=aftsTrack->Phi();
21777 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21778 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21779 // 2-p correlations using particle weights:
21780 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),wPhi1*wPhi2); // <w1 w2 cos( n*(phi1-phi2))>
21781 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(1.5,cos(2.*n*(phi1-phi2)),pow(wPhi1,2)*pow(wPhi2,2)); // <w1^2 w2^2 cos(2n*(phi1-phi2))>
21782 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(2.5,cos(3.*n*(phi1-phi2)),pow(wPhi1,3)*pow(wPhi2,3)); // <w1^3 w2^3 cos(3n*(phi1-phi2))>
21783 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(3.5,cos(4.*n*(phi1-phi2)),pow(wPhi1,4)*pow(wPhi2,4)); // <w1^4 w2^4 cos(4n*(phi1-phi2))>
21784 // extra correlations:
21785 // 2-p extra correlations (do not appear if particle weights are not used):
21786 if(fUsePhiWeights) fIntFlowExtraDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),pow(wPhi1,3)*wPhi2); // <w1^3 w2 cos(n*(phi1-phi2))>
21787 // ...
21788 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21789 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21790 } // end of if(nPrim>=2)
21791
21792 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
57340a27 21793 {
489d5531 21794 // 3 nested loops multiparticle correlations using particle weights:
21795 for(Int_t i1=0;i1<nPrim;i1++)
57340a27 21796 {
489d5531 21797 aftsTrack=anEvent->GetTrack(i1);
21798 if(!(aftsTrack->InRPSelection())) continue;
21799 phi1=aftsTrack->Phi();
21800 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21801 for(Int_t i2=0;i2<nPrim;i2++)
21802 {
21803 if(i2==i1)continue;
21804 aftsTrack=anEvent->GetTrack(i2);
21805 if(!(aftsTrack->InRPSelection())) continue;
21806 phi2=aftsTrack->Phi();
21807 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21808 for(Int_t i3=0;i3<nPrim;i3++)
21809 {
21810 if(i3==i1||i3==i2)continue;
21811 aftsTrack=anEvent->GetTrack(i3);
21812 if(!(aftsTrack->InRPSelection())) continue;
21813 phi3=aftsTrack->Phi();
21814 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
21815 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
21816 // 3-p correlations using particle weights:
21817 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(5.5,cos(2.*n*phi1-n*(phi2+phi3)),pow(wPhi1,2)*wPhi2*wPhi3); // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
21818 // ...
21819 // extra correlations:
21820 // 2-p extra correlations (do not appear if particle weights are not used):
21821 if(fUsePhiWeights) fIntFlowExtraDirectCorrelations->Fill(1.5,cos(n*(phi1-phi2)),wPhi1*wPhi2*pow(wPhi3,2)); // <w1 w2 w3^2 cos(n*(phi1-phi2))>
21822 // ...
21823 // 3-p extra correlations (do not appear if particle weights are not used):
21824 // ...
21825 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21826 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21827 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21828 } // end of if(nPrim>=3)
57340a27 21829
489d5531 21830 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
21831 {
21832 // 4 nested loops multiparticle correlations using particle weights:
21833 for(Int_t i1=0;i1<nPrim;i1++)
21834 {
21835 aftsTrack=anEvent->GetTrack(i1);
21836 if(!(aftsTrack->InRPSelection())) continue;
21837 phi1=aftsTrack->Phi();
21838 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21839 for(Int_t i2=0;i2<nPrim;i2++)
21840 {
21841 if(i2==i1)continue;
21842 aftsTrack=anEvent->GetTrack(i2);
21843 if(!(aftsTrack->InRPSelection())) continue;
21844 phi2=aftsTrack->Phi();
21845 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21846 for(Int_t i3=0;i3<nPrim;i3++)
21847 {
21848 if(i3==i1||i3==i2)continue;
21849 aftsTrack=anEvent->GetTrack(i3);
21850 if(!(aftsTrack->InRPSelection())) continue;
21851 phi3=aftsTrack->Phi();
21852 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
21853 for(Int_t i4=0;i4<nPrim;i4++)
21854 {
21855 if(i4==i1||i4==i2||i4==i3)continue;
21856 aftsTrack=anEvent->GetTrack(i4);
21857 if(!(aftsTrack->InRPSelection())) continue;
21858 phi4=aftsTrack->Phi();
21859 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
21860 if(nPrim>=4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush; // to be improved (replace eventually this if statement with if(nPrim==4))
21861 // 4-p correlations using particle weights:
21862 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(10.5,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4);
21863 // extra correlations:
21864 // 2-p extra correlations (do not appear if particle weights are not used):
21865 // ...
21866 // 3-p extra correlations (do not appear if particle weights are not used):
21867 // ...
21868 // 4-p extra correlations (do not appear if particle weights are not used):
21869 // ...
21870 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21871 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21872 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21873 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21874 } // end of if(nPrim>=4)
57340a27 21875
489d5531 21876 cout<<endl;
57340a27 21877
489d5531 21878} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent)
57340a27 21879
e1d101a6 21880//=======================================================================================================================
489d5531 21881
489d5531 21882void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowExtraCorrelations()
57340a27 21883{
489d5531 21884 // Cross-check results for extra multiparticle correlations needed for int. flow
21885 // which appear only when particle weights are used: results from Q-vectors vs results from nested loops.
57340a27 21886
489d5531 21887 cout<<endl;
21888 cout<<endl;
21889 cout<<" ***********************************************"<<endl;
21890 cout<<" **** cross-checking the extra correlations ****"<<endl;
21891 cout<<" **** for integrated flow ****"<<endl;
21892 cout<<" ***********************************************"<<endl;
21893 cout<<endl;
21894 cout<<endl;
21895
21896 for(Int_t eci=1;eci<=2;eci++) // to be improved (increased eciMax eventually when I calculate 6th and 8th)
57340a27 21897 {
489d5531 21898 if(strcmp((fIntFlowExtraCorrelationsPro->GetXaxis())->GetBinLabel(eci), "") == 0) continue;
21899 cout<<(fIntFlowExtraCorrelationsPro->GetXaxis())->GetBinLabel(eci)<<":"<<endl;
21900 cout<<"from Q-vectors = "<<fIntFlowExtraCorrelationsPro->GetBinContent(eci)<<endl;
21901 cout<<"from nested loops = "<<fIntFlowExtraDirectCorrelations->GetBinContent(eci)<<endl;
21902 cout<<endl;
21903 }
57340a27 21904
489d5531 21905} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowExtraCorrelations()
57340a27 21906
e1d101a6 21907//=======================================================================================================================
3b552efe 21908
0328db2d 21909void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 21910{
21911 // Evaluate with nested loops correction terms for non-uniform acceptance relevant for NONAME integrated flow (to be improved (name)).
21912 //
21913 // Remark: Both sin and cos correction terms are calculated in this method. Sin terms are stored in fIntFlowDirectCorrectionTermsForNUA[0],
21914 // and cos terms in fIntFlowDirectCorrectionTermsForNUA[1]. Binning of fIntFlowDirectCorrectionTermsForNUA[sc] is organized as follows
21915 // (sc stands for either sin or cos):
21916
21917 // 1st bin: <<sc(n*(phi1))>>
21918 // 2nd bin: <<sc(n*(phi1+phi2))>>
21919 // 3rd bin: <<sc(n*(phi1-phi2-phi3))>>
21920 // 4th bin: <<sc(n*(2phi1-phi2))>>
21921
21922 Int_t nPrim = anEvent->NumberOfTracks();
21923 AliFlowTrackSimple *aftsTrack = NULL;
21924 Double_t phi1=0., phi2=0., phi3=0.;
21925 Int_t n = fHarmonic;
21926 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 21927 Double_t dMult = (*fSpk)(0,0);
489d5531 21928 cout<<endl;
21929 cout<<"Correction terms for non-uniform acceptance: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21930 if(dMult<1)
3b552efe 21931 {
489d5531 21932 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21933 } else if (dMult>fMaxAllowedMultiplicity)
3b552efe 21934 {
489d5531 21935 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21936 } else
21937 {
21938 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
21939 }
21940
21941 if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
21942 {
21943 // 1-particle correction terms for non-uniform acceptance:
21944 for(Int_t i1=0;i1<nPrim;i1++)
21945 {
21946 aftsTrack=anEvent->GetTrack(i1);
21947 if(!(aftsTrack->InRPSelection())) continue;
21948 phi1=aftsTrack->Phi();
21949 if(nPrim==1) cout<<i1<<"\r"<<flush;
21950 // sin terms:
21951 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(0.5,sin(n*phi1),1.); // <sin(n*phi1)>
21952 // cos terms:
21953 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(0.5,cos(n*phi1),1.); // <cos(n*phi1)>
21954 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21955 } // end of if(nPrim>=1)
21956
21957 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21958 {
21959 // 2-particle correction terms for non-uniform acceptance:
21960 for(Int_t i1=0;i1<nPrim;i1++)
21961 {
21962 aftsTrack=anEvent->GetTrack(i1);
21963 if(!(aftsTrack->InRPSelection())) continue;
21964 phi1=aftsTrack->Phi();
21965 for(Int_t i2=0;i2<nPrim;i2++)
3b552efe 21966 {
489d5531 21967 if(i2==i1)continue;
21968 aftsTrack=anEvent->GetTrack(i2);
21969 if(!(aftsTrack->InRPSelection())) continue;
21970 phi2=aftsTrack->Phi();
21971 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21972 // sin terms:
3b552efe 21973 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(1.5,sin(n*(phi1+phi2)),1.); // <<sin(n*(phi1+phi2))>>
489d5531 21974 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(3.5,sin(n*(2*phi1-phi2)),1.); // <<sin(n*(2*phi1-phi2))>>
21975 // cos terms:
3b552efe 21976 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(1.5,cos(n*(phi1+phi2)),1.); // <<cos(n*(phi1+phi2))>>
489d5531 21977 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(3.5,cos(n*(2*phi1-phi2)),1.); // <<cos(n*(2*phi1-phi2))>>
21978 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21979 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21980 } // end of if(nPrim>=2)
21981
21982 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21983 {
21984 // 3-particle correction terms for non-uniform acceptance:
21985 for(Int_t i1=0;i1<nPrim;i1++)
21986 {
21987 aftsTrack=anEvent->GetTrack(i1);
21988 if(!(aftsTrack->InRPSelection())) continue;
21989 phi1=aftsTrack->Phi();
21990 for(Int_t i2=0;i2<nPrim;i2++)
21991 {
21992 if(i2==i1)continue;
21993 aftsTrack=anEvent->GetTrack(i2);
21994 if(!(aftsTrack->InRPSelection())) continue;
21995 phi2=aftsTrack->Phi();
21996 for(Int_t i3=0;i3<nPrim;i3++)
21997 {
21998 if(i3==i1||i3==i2)continue;
21999 aftsTrack=anEvent->GetTrack(i3);
22000 if(!(aftsTrack->InRPSelection())) continue;
22001 phi3=aftsTrack->Phi();
22002 if(nPrim>=3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush; // to be improved (eventually I will change this if statement)
22003 // sin terms:
22004 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(2.5,sin(n*(phi1-phi2-phi3)),1.); // <<sin(n*(phi1-phi2-phi3))>>
22005 // cos terms:
22006 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(2.5,cos(n*(phi1-phi2-phi3)),1.); // <<cos(n*(phi1-phi2-phi3))>>
22007 } // end of for(Int_t i3=0;i3<nPrim;i3++)
22008 } // end of for(Int_t i2=0;i2<nPrim;i2++)
22009 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22010 } // end of if(nPrim>=3)
22011
22012 cout<<endl;
22013}
64e500e3 22014
e1d101a6 22015//=======================================================================================================================
64e500e3 22016
0328db2d 22017void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22018{
22019 // Evaluate reduced correlations with nested loops without using the particle weights.
22020
22021 // Remark 1: Reduced correlations are evaluated in pt bin number fCrossCheckInPtBinNo and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22022 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrelations[t][pe][ci], where indices runs as follows:
22023 // [0=RP,1=POI][0=Pt,1=Eta][0=<2'>,1=<4'>,2=<6'>,3=<8'>]
22024 // Remark 3: <2'> = <cos(n*(psi1-phi2))>
22025 // <4'> = <cos(n*(psi1+phi2-phi3-phi4))>
22026 // ...
22027
2a98ceb8 22028 Int_t typeFlag = 0;
22029 Int_t ptEtaFlag = 0;
489d5531 22030 if(type == "RP")
22031 {
22032 typeFlag = 0;
22033 } else if(type == "POI")
22034 {
22035 typeFlag = 1;
22036 }
22037 if(ptOrEta == "Pt")
22038 {
22039 ptEtaFlag = 0;
22040 } else if(ptOrEta == "Eta")
22041 {
22042 ptEtaFlag = 1;
22043 }
22044 // shortcuts:
22045 Int_t t = typeFlag;
22046 Int_t pe = ptEtaFlag;
22047
22048 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22049 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22050 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22051
22052 Int_t nPrim = anEvent->NumberOfTracks();
22053 AliFlowTrackSimple *aftsTrack = NULL;
22054
22055 Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22056
3b552efe 22057 Int_t n = fHarmonic;
489d5531 22058
22059 // 2'-particle correlations:
22060 for(Int_t i1=0;i1<nPrim;i1++)
22061 {
22062 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22063 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22064 if(typeFlag==1) // this is diff flow of POIs
489d5531 22065 {
22066 if(ptOrEta == "Pt")
22067 {
22068 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22069 } else if (ptOrEta == "Eta")
22070 {
22071 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22072 }
22073 } else // this is diff flow of RPs
22074 {
489d5531 22075 if(ptOrEta == "Pt")
22076 {
22077 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22078 } else if (ptOrEta == "Eta")
22079 {
22080 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22081 }
22082 }
489d5531 22083
22084 psi1=aftsTrack->Phi();
22085 for(Int_t i2=0;i2<nPrim;i2++)
22086 {
22087 if(i2==i1)continue;
22088 aftsTrack=anEvent->GetTrack(i2);
22089 // RP condition (!(first) particle in the correlator must be RP):
22090 if(!(aftsTrack->InRPSelection()))continue;
22091 phi2=aftsTrack->Phi();
22092 // 2'-particle correlations:
22093 fDiffFlowDirectCorrelations[t][pe][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(1.*n*(psi1-phi2)),1.); // <cos(n*(psi1-phi2))
22094 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22095 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22096
22097 /*
22098
22099 // 3'-particle correlations:
22100 for(Int_t i1=0;i1<nPrim;i1++)
22101 {
22102 aftsTrack=anEvent->GetTrack(i1);
22103 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22104 if(ptOrEta == "Pt")
22105 {
22106 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22107 } else if (ptOrEta == "Eta")
22108 {
22109 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22110 }
22111 psi1=aftsTrack->Phi();
22112 for(Int_t i2=0;i2<nPrim;i2++)
22113 {
22114 if(i2==i1)continue;
22115 aftsTrack=anEvent->GetTrack(i2);
22116 // RP condition (!(first) particle in the correlator must be RP):
22117 if(!(aftsTrack->InRPSelection())) continue;
22118 phi2=aftsTrack->Phi();
22119 for(Int_t i3=0;i3<nPrim;i3++)
22120 {
22121 if(i3==i1||i3==i2)continue;
22122 aftsTrack=anEvent->GetTrack(i3);
22123 // RP condition (!(first) particle in the correlator must be RP):
22124 if(!(aftsTrack->InRPSelection())) continue;
22125 phi3=aftsTrack->Phi();
22126 // to be improved : where to store it? ->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(2.*phi1-phi2-phi3)),1.); // <w1 w2 w3 cos(n(2psi1-phi2-phi3))>
22127 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22128 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22129 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22130
22131 */
22132
22133 // 4'-particle correlations:
22134 for(Int_t i1=0;i1<nPrim;i1++)
22135 {
22136 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22137 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22138 if(typeFlag==1) // this is diff flow of POIs
489d5531 22139 {
22140 if(ptOrEta == "Pt")
22141 {
22142 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22143 } else if (ptOrEta == "Eta")
22144 {
22145 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22146 }
22147 } else // this is diff flow of RPs
22148 {
489d5531 22149 if(ptOrEta == "Pt")
22150 {
22151 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22152 } else if (ptOrEta == "Eta")
22153 {
22154 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22155 }
22156 }
489d5531 22157
22158 psi1=aftsTrack->Phi();
22159 for(Int_t i2=0;i2<nPrim;i2++)
22160 {
22161 if(i2==i1) continue;
22162 aftsTrack=anEvent->GetTrack(i2);
22163 // RP condition (!(first) particle in the correlator must be RP):
22164 if(!(aftsTrack->InRPSelection())) continue;
22165 phi2=aftsTrack->Phi();
22166 for(Int_t i3=0;i3<nPrim;i3++)
22167 {
22168 if(i3==i1||i3==i2) continue;
22169 aftsTrack=anEvent->GetTrack(i3);
22170 // RP condition (!(first) particle in the correlator must be RP):
22171 if(!(aftsTrack->InRPSelection())) continue;
22172 phi3=aftsTrack->Phi();
22173 for(Int_t i4=0;i4<nPrim;i4++)
22174 {
22175 if(i4==i1||i4==i2||i4==i3) continue;
22176 aftsTrack=anEvent->GetTrack(i4);
22177 // RP condition (!(first) particle in the correlator must be RP):
22178 if(!(aftsTrack->InRPSelection())) continue;
22179 phi4=aftsTrack->Phi();
22180 // 4'-particle correlations:
22181 fDiffFlowDirectCorrelations[t][pe][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3-phi4)),1.); // <cos(n(psi1+phi2-phi3-phi4))>
22182 }//end of for(Int_t i4=0;i4<nPrim;i4++)
22183 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22184 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22185 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22186
22187 // count # of RPs and POIs in selected pt and eta bins for cross-checkings:
3b552efe 22188 for(Int_t i=0;i<nPrim;i++)
22189 {
22190 aftsTrack=anEvent->GetTrack(i);
22191 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22192 if(typeFlag==1) // this is diff flow of POIs
489d5531 22193 {
22194 if(ptOrEta == "Pt")
22195 {
22196 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22197 } else if (ptOrEta == "Eta")
22198 {
22199 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22200 }
22201 } else // this is diff flow of RPs
22202 {
489d5531 22203 if(ptOrEta == "Pt")
22204 {
22205 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22206 } else if (ptOrEta == "Eta")
22207 {
22208 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22209 }
22210 }
22211 if(t==1)t++;
22212 fNoOfParticlesInBin->Fill(t+pe+0.5);
489d5531 22213 }
22214
22215} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoops(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22216
e1d101a6 22217//=======================================================================================================================
489d5531 22218
64e500e3 22219void AliFlowAnalysisWithQCumulants::EvaluateOtherDiffCorrelatorsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22220{
22221 // Evaluate other differential correlators with nested loops without using the particle weights.
22222
22223 // Remark 1: Other differential correlators are evaluated in pt bin number fCrossCheckInPtBinNo
22224 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22225 // Remark 2: Results are stored in 1 bin profiles fOtherDirectDiffCorrelators[t][pe][sc][ci], where indices runs as follows:
22226 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms][ci = correlator index]
22227 // Remark 3: Correlator index 'ci' runs as follows:
22228 // 0: <exp(n*(psi1-3phi2+2phi3))> (Teaney-Yan correlator)
22229
22230 Int_t typeFlag = 0;
22231 Int_t ptEtaFlag = 0;
22232 if(type == "RP")
22233 {
22234 typeFlag = 0;
22235 } else if(type == "POI")
22236 {
22237 typeFlag = 1;
22238 }
22239 if(ptOrEta == "Pt")
22240 {
22241 ptEtaFlag = 0;
22242 } else if(ptOrEta == "Eta")
22243 {
22244 ptEtaFlag = 1;
22245 }
22246 // shortcuts:
22247 Int_t t = typeFlag;
22248 Int_t pe = ptEtaFlag;
22249
22250 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22251 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22252 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22253
22254 Int_t nPrim = anEvent->NumberOfTracks();
22255 AliFlowTrackSimple *aftsTrack = NULL;
22256
22257 Double_t psi1=0., phi2=0., phi3=0.;
22258
22259 Int_t n = fHarmonic;
22260
22261 // 3-p correlators:
22262 for(Int_t i1=0;i1<nPrim;i1++)
22263 {
22264 aftsTrack=anEvent->GetTrack(i1);
22265 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22266 if(typeFlag==1) // this is diff flow of POIs
22267 {
22268 if(ptOrEta == "Pt")
22269 {
22270 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22271 } else if (ptOrEta == "Eta")
22272 {
22273 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22274 }
22275 } else // this is diff flow of RPs
22276 {
22277 if(ptOrEta == "Pt")
22278 {
22279 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22280 } else if (ptOrEta == "Eta")
22281 {
22282 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22283 }
22284 }
22285 psi1=aftsTrack->Phi();
22286 for(Int_t i2=0;i2<nPrim;i2++)
22287 {
22288 if(i2==i1) continue;
22289 aftsTrack=anEvent->GetTrack(i2);
22290 // RP condition (!(first) particle in the correlator must be RP):
22291 if(!(aftsTrack->InRPSelection())) continue;
22292 phi2=aftsTrack->Phi();
22293 for(Int_t i3=0;i3<nPrim;i3++)
22294 {
22295 if(i3==i1||i3==i2) continue;
22296 aftsTrack=anEvent->GetTrack(i3);
22297 // RP condition (!(first) particle in the correlator must be RP):
22298 if(!(aftsTrack->InRPSelection())) continue;
22299 phi3=aftsTrack->Phi();
22300 // Fill 3-p correlators:
22301 fOtherDirectDiffCorrelators[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1-3.*phi2+2.*phi3)),1.); // <cos(n(psi1-3.*phi2+2.*phi3))>
22302 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22303 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22304 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22305} // end of void AliFlowAnalysisWithQCumulants::EvaluateOtherDiffCorrelatorsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22306
e1d101a6 22307//=======================================================================================================================
489d5531 22308
22309void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrelations(TString type, TString ptOrEta)
22310{
22311 // Compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22312
2a98ceb8 22313 Int_t typeFlag = 0;
22314 Int_t ptEtaFlag = 0;
489d5531 22315 if(type == "RP")
22316 {
22317 typeFlag = 0;
22318 } else if(type == "POI")
22319 {
22320 typeFlag = 1;
22321 }
22322 if(ptOrEta == "Pt")
22323 {
22324 ptEtaFlag = 0;
22325 } else if(ptOrEta == "Eta")
22326 {
22327 ptEtaFlag = 1;
22328 }
22329 // shortcuts:
22330 Int_t t = typeFlag;
22331 Int_t pe = ptEtaFlag;
22332
22333 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22334 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22335 TString reducedCorrelations[4] = {"<<cos(n(psi1-phi2))>>","<<cos(n(psi1+phi2-phi3-phi4))>>","",""}; // to be improved (access this from pro or hist)
22336 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22337 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22338
22339 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22340
22341
22342 cout<<endl;
22343 cout<<" *****************************************"<<endl;
22344 cout<<" **** cross-checking the correlations ****"<<endl;
22345 cout<<" **** for differential flow ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22346 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 22347 {
22348 cout<<" **** (particle weights not used) ****"<<endl;
22349 } else
22350 {
22351 cout<<" **** (particle weights used) ****"<<endl;
22352 }
22353 cout<<" *****************************************"<<endl;
22354 cout<<endl;
22355 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22356 cout<<endl;
22357
22358 for(Int_t rci=0;rci<2;rci++) // to be improved (calculate 6th and 8th order)
22359 {
22360 cout<<" "<<reducedCorrelations[rci].Data()<<":"<<endl;
22361 cout<<" from Q-vectors = "<<fDiffFlowCorrelationsPro[t][pe][rci]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22362 cout<<" from nested loops = "<<fDiffFlowDirectCorrelations[t][pe][rci]->GetBinContent(1)<<endl;
22363 cout<<endl;
22364 } // end of for(Int_t rci=0;rci<4;rci++)
22365
22366} // end of void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrelations(TString type, TString ptOrEta)
22367
e1d101a6 22368//=======================================================================================================================
3b552efe 22369
64e500e3 22370void AliFlowAnalysisWithQCumulants::CrossCheckOtherDiffCorrelators(TString type, TString ptOrEta)
22371{
22372 // Compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22373
22374 Int_t typeFlag = 0;
22375 Int_t ptEtaFlag = 0;
22376 if(type == "RP")
22377 {
22378 typeFlag = 0;
22379 } else if(type == "POI")
22380 {
22381 typeFlag = 1;
22382 }
22383 if(ptOrEta == "Pt")
22384 {
22385 ptEtaFlag = 0;
22386 } else if(ptOrEta == "Eta")
22387 {
22388 ptEtaFlag = 1;
22389 }
22390 // shortcuts:
22391 Int_t t = typeFlag;
22392 Int_t pe = ptEtaFlag;
22393
22394 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22395 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22396 TString otherCorrelators[1] = {"<<cos(n(psi1-3phi2+2phi3))>>"}; // to be improved (access this from pro or hist)
22397 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22398 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22399
22400 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22401
22402 cout<<endl;
22403 cout<<" *****************************************"<<endl;
22404 cout<<" **** cross-checking the other ****"<<endl;
22405 cout<<" **** diff. correlators ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22406 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
64e500e3 22407 {
22408 cout<<" **** (particle weights not used) ****"<<endl;
22409 } else
22410 {
22411 cout<<" **** (particle weights used) ****"<<endl;
22412 }
22413 cout<<" *****************************************"<<endl;
22414 cout<<endl;
22415 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22416 cout<<endl;
22417
22418 for(Int_t ci=0;ci<1;ci++)
22419 {
22420 cout<<" "<<otherCorrelators[ci].Data()<<":"<<endl;
22421 cout<<" from Q-vectors = "<<fOtherDiffCorrelators[t][pe][1][ci]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22422 cout<<" from nested loops = "<<fOtherDirectDiffCorrelators[t][pe][1][ci]->GetBinContent(1)<<endl;
22423 cout<<endl;
22424 } // end of for(Int_t ci=0;ci<1;ci++)
22425
22426} // end of void AliFlowAnalysisWithQCumulants::CrossCheckOtherDiffCorrelators(TString type, TString ptOrEta)
22427
e1d101a6 22428//=======================================================================================================================
64e500e3 22429
489d5531 22430void AliFlowAnalysisWithQCumulants::PrintNumberOfParticlesInSelectedBin()
3b552efe 22431{
22432 // Print on the screen number of RPs and POIs in selected pt and eta bin for cross checkings.
22433
22434 cout<<endl;
22435 cout<<"Number of RPs in selected pt bin = "<<fNoOfParticlesInBin->GetBinContent(1)<<endl;
22436 cout<<"Number of RPs in selected eta bin = "<<fNoOfParticlesInBin->GetBinContent(2)<<endl;
22437 cout<<"Number of POIs in selected pt bin = "<<fNoOfParticlesInBin->GetBinContent(3)<<endl;
22438 cout<<"Number of POIs in selected eta bin = "<<fNoOfParticlesInBin->GetBinContent(4)<<endl;
22439
489d5531 22440} // end of void AliFlowAnalysisWithQCumulants::PrintNumberOfParticlesInSelectedBin()
22441
e1d101a6 22442//=======================================================================================================================
3b552efe 22443
0328db2d 22444void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22445{
22446 // Evaluate reduced correlations with nested loops without using the particle weights.
22447
22448 // Remark 1: Reduced correlations are evaluated in pt bin number fCrossCheckInPtBinNo and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22449 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrelations[t][pe][ci], where indices runs as follows:
22450 // [0=RP,1=POI][0=Pt,1=Eta][0=<2'>,1=<4'>,2=<6'>,3=<8'>]
22451 // Remark 3: <2'> = <w2 cos(n*(psi1-phi2))>
22452 // <4'> = <w2 w3 w4 cos(n*(psi1+phi2-phi3-phi4))>
22453 // ...
22454
2a98ceb8 22455 Int_t typeFlag = 0;
22456 Int_t ptEtaFlag = 0;
489d5531 22457 if(type == "RP")
22458 {
22459 typeFlag = 0;
22460 } else if(type == "POI")
22461 {
22462 typeFlag = 1;
22463 }
22464 if(ptOrEta == "Pt")
22465 {
22466 ptEtaFlag = 0;
22467 } else if(ptOrEta == "Eta")
22468 {
22469 ptEtaFlag = 1;
22470 }
22471 // shortcuts:
22472 Int_t t = typeFlag;
22473 Int_t pe = ptEtaFlag;
22474
22475 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22476 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22477 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22478
22479 Int_t nPrim = anEvent->NumberOfTracks();
22480 AliFlowTrackSimple *aftsTrack = NULL;
22481
22482 Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22483 Double_t wPhi2=1., wPhi3=1., wPhi4=1.;// wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
22484
22485 Int_t n = fHarmonic;
22486
22487 // 2'-particle correlations:
22488 for(Int_t i1=0;i1<nPrim;i1++)
22489 {
22490 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22491 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22492 if(typeFlag==1) // this is diff flow of POIs
489d5531 22493 {
22494 if(ptOrEta == "Pt")
22495 {
22496 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22497 } else if (ptOrEta == "Eta")
22498 {
22499 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22500 }
22501 } else // this is diff flow of RPs
22502 {
489d5531 22503 if(ptOrEta == "Pt")
22504 {
22505 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22506 } else if (ptOrEta == "Eta")
22507 {
22508 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22509 }
489d5531 22510 }
22511 psi1=aftsTrack->Phi();
22512 for(Int_t i2=0;i2<nPrim;i2++)
22513 {
22514 if(i2==i1) continue;
22515 aftsTrack=anEvent->GetTrack(i2);
22516 // RP condition (!(first) particle in the correlator must be RP):
22517 if(!(aftsTrack->InRPSelection())) continue;
22518 phi2=aftsTrack->Phi();
22519 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22520 // 2'-particle correlations:
22521 fDiffFlowDirectCorrelations[t][pe][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(1.*n*(psi1-phi2)),wPhi2); // <w2 cos(n*(psi1-phi2))
22522 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22523 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22524
22525 // 4'-particle correlations:
22526 for(Int_t i1=0;i1<nPrim;i1++)
22527 {
22528 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22529 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22530 if(typeFlag==1) // this is diff flow of POIs
489d5531 22531 {
22532 if(ptOrEta == "Pt")
22533 {
22534 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22535 } else if (ptOrEta == "Eta")
22536 {
22537 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22538 }
22539 } else // this is diff flow of RPs
22540 {
489d5531 22541 if(ptOrEta == "Pt")
22542 {
22543 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22544 } else if (ptOrEta == "Eta")
22545 {
22546 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22547 }
489d5531 22548 }
22549 psi1=aftsTrack->Phi();
22550 for(Int_t i2=0;i2<nPrim;i2++)
22551 {
22552 if(i2==i1) continue;
22553 aftsTrack=anEvent->GetTrack(i2);
22554 // RP condition (!(first) particle in the correlator must be RP):
22555 if(!(aftsTrack->InRPSelection())) continue;
22556 phi2=aftsTrack->Phi();
22557 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22558 for(Int_t i3=0;i3<nPrim;i3++)
22559 {
22560 if(i3==i1||i3==i2) continue;
22561 aftsTrack=anEvent->GetTrack(i3);
22562 // RP condition (!(first) particle in the correlator must be RP):
22563 if(!(aftsTrack->InRPSelection())) continue;
22564 phi3=aftsTrack->Phi();
22565 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
22566 for(Int_t i4=0;i4<nPrim;i4++)
22567 {
22568 if(i4==i1||i4==i2||i4==i3) continue;
22569 aftsTrack=anEvent->GetTrack(i4);
22570 // RP condition (!(first) particle in the correlator must be RP):
22571 if(!(aftsTrack->InRPSelection())) continue;
22572 phi4=aftsTrack->Phi();
22573 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
22574 // 4'-particle correlations <w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))>:
22575 fDiffFlowDirectCorrelations[t][pe][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3-phi4)),wPhi2*wPhi3*wPhi4);
22576 }//end of for(Int_t i4=0;i4<nPrim;i4++)
22577 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22578 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22579 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22580
22581 // count # of RPs and POIs in selected pt and eta bins for cross-checkings: (to be improved - moved to dedicated method)
3b552efe 22582 for(Int_t i=0;i<nPrim;i++)
22583 {
489d5531 22584 aftsTrack=anEvent->GetTrack(i);
22585 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22586 if(typeFlag==1) // this is diff flow of POIs
22587 {
22588 if(ptOrEta == "Pt")
22589 {
22590 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22591 } else if (ptOrEta == "Eta")
22592 {
22593 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22594 }
22595 } else // this is diff flow of RPs
22596 {
22597 if(ptOrEta == "Pt")
22598 {
22599 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22600 } else if (ptOrEta == "Eta")
22601 {
22602 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22603 }
22604 }
22605 if(t==1)t++;
22606 fNoOfParticlesInBin->Fill(t+pe+0.5);
22607 }
22608
22609} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22610
e1d101a6 22611//=======================================================================================================================
489d5531 22612
0328db2d 22613void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22614{
22615 // Evaluate with nested loops correction terms for non-uniform acceptance (both sin and cos terms) relevant for differential flow.
22616
22617 // Remark 1: Reduced correction terms for non-uniform acceptance are evaluated in pt bin number fCrossCheckInPtBinNo
22618 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22619 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrections[t][pe][sc][cti], where first three indices runs as:
22620 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms], whilst the cti (correction term index) runs as follows:
22621 // cti:
22622 // 0: <<sc n(psi1)>>
22623 // 1: <<sc n(psi1+phi2)>>
22624 // 2: <<sc n(psi1+phi2-phi3)>>
22625 // 3: <<sc n(psi1-phi2-phi3)>>
22626 // 4:
22627 // 5:
22628 // 6:
22629
2a98ceb8 22630 Int_t typeFlag = 0;
22631 Int_t ptEtaFlag = 0;
489d5531 22632 if(type == "RP")
22633 {
22634 typeFlag = 0;
22635 } else if(type == "POI")
22636 {
22637 typeFlag = 1;
22638 }
22639 if(ptOrEta == "Pt")
22640 {
22641 ptEtaFlag = 0;
22642 } else if(ptOrEta == "Eta")
22643 {
22644 ptEtaFlag = 1;
22645 }
22646 // shortcuts:
22647 Int_t t = typeFlag;
22648 Int_t pe = ptEtaFlag;
22649
22650 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22651 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22652 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22653
22654 Int_t nPrim = anEvent->NumberOfTracks();
22655 AliFlowTrackSimple *aftsTrack = NULL;
22656
22657 Double_t psi1=0., phi2=0., phi3=0.;// phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22658
22659 Int_t n = fHarmonic;
22660
22661 // 1-particle correction terms:
22662 for(Int_t i1=0;i1<nPrim;i1++)
22663 {
22664 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22665 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22666 if(typeFlag==1) // this is diff flow of POIs
489d5531 22667 {
22668 if(ptOrEta == "Pt")
22669 {
22670 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22671 } else if (ptOrEta == "Eta")
22672 {
22673 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22674 }
22675 } else // this is diff flow of RPs
22676 {
489d5531 22677 if(ptOrEta == "Pt")
22678 {
22679 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22680 } else if (ptOrEta == "Eta")
22681 {
22682 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22683 }
22684 }
489d5531 22685 psi1=aftsTrack->Phi();
22686 // sin terms:
22687 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*psi1),1.); // <<sin(n*(psi1))>>
22688 // cos terms:
22689 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*psi1),1.); // <<cos(n*(psi1))>>
22690 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22691
22692 // 2-particle correction terms:
22693 for(Int_t i1=0;i1<nPrim;i1++)
22694 {
22695 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22696 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22697 if(typeFlag==1) // this is diff flow of POIs
489d5531 22698 {
22699 if(ptOrEta == "Pt")
22700 {
22701 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22702 } else if (ptOrEta == "Eta")
22703 {
22704 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22705 }
22706 } else // this is diff flow of RPs
22707 {
489d5531 22708 if(ptOrEta == "Pt")
22709 {
22710 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22711 } else if (ptOrEta == "Eta")
22712 {
22713 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22714 }
489d5531 22715 }
22716 psi1=aftsTrack->Phi();
22717 for(Int_t i2=0;i2<nPrim;i2++)
22718 {
22719 if(i2==i1) continue;
22720 aftsTrack=anEvent->GetTrack(i2);
22721 // RP condition (!(first) particle in the correlator must be RP):
22722 if(!(aftsTrack->InRPSelection())) continue;
22723 phi2=aftsTrack->Phi();
22724 // sin terms:
22725 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2)),1.); // <<sin(n*(psi1+phi2))>>
22726 // cos terms:
22727 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2)),1.); // <<cos(n*(psi1+phi2))>>
22728 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22729 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22730
22731 // 3-particle correction terms:
22732 for(Int_t i1=0;i1<nPrim;i1++)
22733 {
22734 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22735 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22736 if(typeFlag==1) // this is diff flow of POIs
489d5531 22737 {
22738 if(ptOrEta == "Pt")
22739 {
22740 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22741 } else if (ptOrEta == "Eta")
22742 {
22743 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22744 }
22745 } else // this is diff flow of RPs
22746 {
489d5531 22747 if(ptOrEta == "Pt")
22748 {
22749 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22750 } else if (ptOrEta == "Eta")
22751 {
22752 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22753 }
489d5531 22754 }
22755 psi1=aftsTrack->Phi();
22756 for(Int_t i2=0;i2<nPrim;i2++)
22757 {
22758 if(i2==i1) continue;
22759 aftsTrack=anEvent->GetTrack(i2);
22760 // RP condition (!(first) particle in the correlator must be RP):
22761 if(!(aftsTrack->InRPSelection())) continue;
22762 phi2=aftsTrack->Phi();
22763 for(Int_t i3=0;i3<nPrim;i3++)
22764 {
22765 if(i3==i1||i3==i2) continue;
22766 aftsTrack=anEvent->GetTrack(i3);
22767 // RP condition (!(first) particle in the correlator must be RP):
22768 if(!(aftsTrack->InRPSelection())) continue;
22769 phi3=aftsTrack->Phi();
22770 // sin terms:
22771 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2-phi3)),1.); // <<sin(n*(psi1+phi2-phi3))>>
22772 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1-phi2-phi3)),1.); // <<sin(n*(psi1-phi2-phi3))>>
22773 // cos terms:
22774 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3)),1.); // <<cos(n*(psi1+phi2-phi3))>>
22775 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1-phi2-phi3)),1.); // <<cos(n*(psi1-phi2-phi3))>>
22776 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22777 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22778 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22779
22780} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22781
22782
e1d101a6 22783//=======================================================================================================================
489d5531 22784
22785
22786void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrectionTermsForNUA(TString type, TString ptOrEta)
22787{
22788 // Compare corrections temrs for non-uniform acceptance needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22789
2a98ceb8 22790 Int_t typeFlag = 0;
22791 Int_t ptEtaFlag = 0;
489d5531 22792 if(type == "RP")
22793 {
22794 typeFlag = 0;
22795 } else if(type == "POI")
22796 {
22797 typeFlag = 1;
22798 }
22799 if(ptOrEta == "Pt")
22800 {
22801 ptEtaFlag = 0;
22802 } else if(ptOrEta == "Eta")
22803 {
22804 ptEtaFlag = 1;
22805 }
22806 // shortcuts:
22807 Int_t t = typeFlag;
22808 Int_t pe = ptEtaFlag;
22809
22810 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22811 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22812 //TString sinCosFlag[2] = {"sin","cos"}; // to be improved (eventually promote to data member)
22813 TString reducedCorrectionSinTerms[4] = {"<<sin(n(psi1))>>","<<sin(n(psi1+phi2))>>","<<sin(n*(psi1+phi2-phi3))>>","<<sin(n*(psi1-phi2-phi3))>>"}; // to be improved (access this from pro or hist)
22814 TString reducedCorrectionCosTerms[4] = {"<<cos(n(psi1))>>","<<cos(n(psi1+phi2))>>","<<cos(n*(psi1+phi2-phi3))>>","<<cos(n*(psi1-phi2-phi3))>>"}; // to be improved (access this from pro or hist)
22815 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22816 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22817
22818 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22819
22820 cout<<endl;
22821 cout<<" ******************************************"<<endl;
22822 cout<<" **** cross-checking the correction ****"<<endl;
46b94261 22823 cout<<" **** terms for non-uniform acceptance ****"<<endl;
489d5531 22824 cout<<" **** for differential flow ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22825 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 22826 {
22827 cout<<" **** (particle weights not used) ****"<<endl;
22828 } else
22829 {
22830 cout<<" **** (particle weights used) ****"<<endl;
22831 }
22832 cout<<" ******************************************"<<endl;
22833 cout<<endl;
22834 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22835 cout<<endl;
22836
22837 for(Int_t cti=0;cti<4;cti++) // correction term index
22838 {
22839 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
22840 {
22841 if(sc==0) // to be improved (this can be implemented better)
22842 {
22843 cout<<" "<<reducedCorrectionSinTerms[cti].Data()<<":"<<endl;
22844 } else
22845 {
22846 cout<<" "<<reducedCorrectionCosTerms[cti].Data()<<":"<<endl;
22847 }
22848 cout<<" from Q-vectors = "<<fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22849 cout<<" from nested loops = "<<fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti]->GetBinContent(1)<<endl;
22850 cout<<endl;
22851 }
22852 } // end of for(Int_t rci=0;rci<4;rci++)
22853
22854} // end of void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrectionTermsForNUA(TString type, TString ptOrEta)
22855
e1d101a6 22856//=======================================================================================================================
57340a27 22857
489d5531 22858void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights()
22859{
22860 // Calculate corrections using particle weights for non-uniform acceptance of the detector for no-name integrated flow (cos terms).
22861
22862 // **********************************************************************
22863 // **** weighted corrections for non-uniform acceptance (cos terms): ****
22864 // **********************************************************************
57340a27 22865
489d5531 22866 // Remark 1: When particle weights are used the binning of fIntFlowCorrectionTermsForNUAPro[1] is organized as follows:
57340a27 22867 //
489d5531 22868 // 1st bin: <<w1 cos(n*(phi1))>> = cosP1nW1
22869 // 2nd bin: <<w1 w2 cos(n*(phi1+phi2))>> = cosP1nP1nW1W1
22870 // 3rd bin: <<w1 w2 w3 cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1nW1W1W1
22871 // ...
22872
22873 // multiplicity (number of particles used to determine the reaction plane)
1268c371 22874 Double_t dMult = (*fSpk)(0,0);
489d5531 22875
22876 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
22877 Double_t dReQ1n1k = (*fReQ)(0,1);
22878 Double_t dReQ2n2k = (*fReQ)(1,2);
22879 //Double_t dReQ3n3k = (*fReQ)(2,3);
22880 //Double_t dReQ4n4k = (*fReQ)(3,4);
22881 Double_t dReQ1n3k = (*fReQ)(0,3);
22882 Double_t dImQ1n1k = (*fImQ)(0,1);
22883 Double_t dImQ2n2k = (*fImQ)(1,2);
22884 //Double_t dImQ3n3k = (*fImQ)(2,3);
22885 //Double_t dImQ4n4k = (*fImQ)(3,4);
22886 //Double_t dImQ1n3k = (*fImQ)(0,3);
22887
22888 // dMs are variables introduced in order to simplify some Eqs. bellow:
22889 //..............................................................................................
1268c371 22890 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
22891 Double_t dM111 = (*fSpk)(2,1)-3.*(*fSpk)(0,2)*(*fSpk)(0,1)
22892 + 2.*(*fSpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
489d5531 22893 //..............................................................................................
ecac11c2 22894 // 1-particle:
489d5531 22895 Double_t cosP1nW1 = 0.; // <<w1 cos(n*(phi1))>>
22896
1268c371 22897 if(dMult>0 && TMath::Abs((*fSpk)(0,1))>1.e-6)
489d5531 22898 {
1268c371 22899 cosP1nW1 = dReQ1n1k/(*fSpk)(0,1);
489d5531 22900
22901 // average weighted 1-particle correction (cos terms) for non-uniform acceptance for single event:
22902 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(1,cosP1nW1);
22903
22904 // final average weighted 1-particle correction (cos terms) for non-uniform acceptance for all events:
1268c371 22905 fIntFlowCorrectionTermsForNUAPro[1]->Fill(0.5,cosP1nW1,(*fSpk)(0,1));
489d5531 22906 }
22907
22908 // 2-particle:
22909 Double_t cosP1nP1nW1W1 = 0.; // <<w1 w2 cos(n*(phi1+phi2))>>
22910
1268c371 22911 if(dMult>1 && TMath::Abs(dM11)>1.e-6)
489d5531 22912 {
22913 cosP1nP1nW1W1 = (pow(dReQ1n1k,2)-pow(dImQ1n1k,2)-dReQ2n2k)/dM11;
22914
22915 // average weighted 2-particle correction (cos terms) for non-uniform acceptance for single event:
22916 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(2,cosP1nP1nW1W1);
22917
22918 // final average weighted 2-particle correction (cos terms) for non-uniform acceptance for all events:
22919 fIntFlowCorrectionTermsForNUAPro[1]->Fill(1.5,cosP1nP1nW1W1,dM11);
22920 }
22921
22922 // 3-particle:
22923 Double_t cosP1nM1nM1nW1W1W1 = 0.; // <<w1 w2 w3 cos(n*(phi1-phi2-phi3))>>
22924
1268c371 22925 if(dMult>2 && TMath::Abs(dM111)>1.e-6)
489d5531 22926 {
57340a27 22927 cosP1nM1nM1nW1W1W1 = (dReQ1n1k*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
22928 - dReQ1n1k*dReQ2n2k-dImQ1n1k*dImQ2n2k
1268c371 22929 - 2.*((*fSpk)(0,2))*dReQ1n1k
489d5531 22930 + 2.*dReQ1n3k)
22931 / dM111;
22932
22933 // average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for single event:
22934 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(3,cosP1nM1nM1nW1W1W1);
22935
22936 // final average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for all events:
22937 fIntFlowCorrectionTermsForNUAPro[1]->Fill(2.5,cosP1nM1nM1nW1W1W1,dM111);
22938 }
22939
22940} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights()
22941
22942
e1d101a6 22943//=======================================================================================================================
489d5531 22944
22945
22946void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights()
22947{
22948 // calculate corrections using particle weights for non-uniform acceptance of the detector for no-name integrated flow (sin terms)
22949
22950 // **********************************************************************
22951 // **** weighted corrections for non-uniform acceptance (sin terms): ****
22952 // **********************************************************************
22953
22954 // Remark 1: When particle weights are used the binning of fIntFlowCorrectionTermsForNUAPro[0] is organized as follows:
57340a27 22955 //
489d5531 22956 // 1st bin: <<w1 sin(n*(phi1))>> = sinP1nW1
22957 // 2nd bin: <<w1 w2 sin(n*(phi1+phi2))>> = sinP1nP1nW1W1
22958 // 3rd bin: <<w1 w2 w3 sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1nW1W1W1
22959 // ...
22960
22961 // multiplicity (number of particles used to determine the reaction plane)
1268c371 22962 Double_t dMult = (*fSpk)(0,0);
489d5531 22963
22964 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
22965 Double_t dReQ1n1k = (*fReQ)(0,1);
22966 Double_t dReQ2n2k = (*fReQ)(1,2);
22967 //Double_t dReQ3n3k = (*fReQ)(2,3);
22968 //Double_t dReQ4n4k = (*fReQ)(3,4);
22969 //Double_t dReQ1n3k = (*fReQ)(0,3);
22970 Double_t dImQ1n1k = (*fImQ)(0,1);
22971 Double_t dImQ2n2k = (*fImQ)(1,2);
22972 //Double_t dImQ3n3k = (*fImQ)(2,3);
22973 //Double_t dImQ4n4k = (*fImQ)(3,4);
22974 Double_t dImQ1n3k = (*fImQ)(0,3);
22975
22976 // dMs are variables introduced in order to simplify some Eqs. bellow:
22977 //..............................................................................................
1268c371 22978 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
22979 Double_t dM111 = (*fSpk)(2,1)-3.*(*fSpk)(0,2)*(*fSpk)(0,1)
22980 + 2.*(*fSpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
489d5531 22981 //..............................................................................................
22982
22983 // 1-particle:
22984 Double_t sinP1nW1 = 0.; // <<w1 sin(n*(phi1))>>
22985
1268c371 22986 if(dMult>0 && TMath::Abs((*fSpk)(0,1))>1.e-6)
489d5531 22987 {
1268c371 22988 sinP1nW1 = dImQ1n1k/((*fSpk)(0,1));
489d5531 22989
22990 // average weighted 1-particle correction (sin terms) for non-uniform acceptance for single event:
22991 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(1,sinP1nW1);
22992
22993 // final average weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
1268c371 22994 fIntFlowCorrectionTermsForNUAPro[0]->Fill(0.5,sinP1nW1,(*fSpk)(0,1));
489d5531 22995 }
22996
22997 // 2-particle:
22998 Double_t sinP1nP1nW1W1 = 0.; // <<w1 w2 sin(n*(phi1+phi2))>>
22999
1268c371 23000 if(dMult>1 && TMath::Abs(dM11)>1.e-6)
489d5531 23001 {
23002 sinP1nP1nW1W1 = (2.*dReQ1n1k*dImQ1n1k-dImQ2n2k)/dM11;
23003
23004 // average weighted 2-particle correction (sin terms) for non-uniform acceptance for single event:
23005 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(2,sinP1nP1nW1W1);
23006
23007 // final average weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
23008 fIntFlowCorrectionTermsForNUAPro[0]->Fill(1.5,sinP1nP1nW1W1,dM11);
23009 }
23010
23011 // 3-particle:
23012 Double_t sinP1nM1nM1nW1W1W1 = 0.; // <<w1 w2 w3 sin(n*(phi1-phi2-phi3))>>
23013
1268c371 23014 if(dMult>2 && TMath::Abs(dM111)>1.e-6)
489d5531 23015 {
57340a27 23016 sinP1nM1nM1nW1W1W1 = (-dImQ1n1k*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
23017 + dReQ1n1k*dImQ2n2k-dImQ1n1k*dReQ2n2k
1268c371 23018 + 2.*((*fSpk)(0,2))*dImQ1n1k
489d5531 23019 - 2.*dImQ1n3k)
23020 / dM111;
23021
23022 // average weighted 3-particle correction (sin terms) for non-uniform acceptance for single event:
23023 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(3,sinP1nM1nM1nW1W1W1);
23024
23025 // final average weighted 3-particle correction (sin terms) for non-uniform acceptance for all events:
23026 fIntFlowCorrectionTermsForNUAPro[0]->Fill(2.5,sinP1nM1nM1nW1W1W1,dM111);
23027 }
23028
23029} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights()
23030
e1d101a6 23031//=======================================================================================================================
489d5531 23032
0328db2d 23033void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent)
489d5531 23034{
23035 // Evaluate with nested loops correction terms for non-uniform acceptance for integrated flow (using the particle weights).
23036
57340a27 23037 // Results are stored in profiles fIntFlowDirectCorrectionTermsForNUA[0] (sin terms) and
23038 // fIntFlowDirectCorrectionTermsForNUA[1] (cos terms).
489d5531 23039
57340a27 23040 // Remark 1: When particle weights are used the binning of fIntFlowDirectCorrectionTermsForNUA[sc] is
489d5531 23041 // organized as follows (sc stands for either sin or cos):
23042 //
23043 // 1st bin: <<w1 sc(n*(phi1))>> = scP1nW1
23044 // 2nd bin: <<w1 w2 sc(n*(phi1+phi2))>> = scP1nP1nW1W1
23045 // 3rd bin: <<w1 w2 w3 sc(n*(phi1-phi2-phi3))>> = scP1nM1nM1nW1W1W1
3b552efe 23046 // ...
489d5531 23047
23048 Int_t nPrim = anEvent->NumberOfTracks();
23049 AliFlowTrackSimple *aftsTrack = NULL;
23050 //Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
23051 //Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
23052 Double_t phi1=0., phi2=0., phi3=0.;
23053 Double_t wPhi1=1., wPhi2=1., wPhi3=1.;
23054 Int_t n = fHarmonic;
23055 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 23056 Double_t dMult = (*fSpk)(0,0);
489d5531 23057 cout<<endl;
23058 cout<<"Correction terms for non-uniform acceptance: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
23059 if(dMult<1)
23060 {
23061 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
23062 } else if (dMult>fMaxAllowedMultiplicity)
23063 {
23064 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
23065 } else
23066 {
23067 cout<<"... evaluating nested loops (using particle weights) ..."<<endl;
23068 }
23069
23070 // 1-particle correction terms using particle weights:
23071 if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
23072 {
23073 for(Int_t i1=0;i1<nPrim;i1++)
23074 {
23075 aftsTrack=anEvent->GetTrack(i1);
23076 if(!(aftsTrack->InRPSelection())) continue;
23077 phi1=aftsTrack->Phi();
23078 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
57340a27 23079 // 1-particle correction terms using particle weights:
489d5531 23080 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(0.5,sin(n*phi1),wPhi1); // <w1 sin(n*phi1)>
23081 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(0.5,cos(n*phi1),wPhi1); // <w1 cos(n*phi1)>
57340a27 23082 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23083 } // end of if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
23084
489d5531 23085 // 2-particle correction terms using particle weights:
23086 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
23087 {
23088 for(Int_t i1=0;i1<nPrim;i1++)
23089 {
23090 aftsTrack=anEvent->GetTrack(i1);
23091 if(!(aftsTrack->InRPSelection())) continue;
23092 phi1=aftsTrack->Phi();
23093 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23094 for(Int_t i2=0;i2<nPrim;i2++)
23095 {
23096 if(i2==i1)continue;
23097 aftsTrack=anEvent->GetTrack(i2);
23098 if(!(aftsTrack->InRPSelection())) continue;
23099 phi2=aftsTrack->Phi();
23100 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23101 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
57340a27 23102 // 2-p correction terms using particle weights:
489d5531 23103 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(1.5,sin(n*(phi1+phi2)),wPhi1*wPhi2); // <w1 w2 sin(n*(phi1+phi2))>
23104 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(1.5,cos(n*(phi1+phi2)),wPhi1*wPhi2); // <w1 w2 cos(n*(phi1+phi2))>
23105 } // end of for(Int_t i2=0;i2<nPrim;i2++)
23106 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23107 } // end of if(nPrim>=2)
23108
23109 // 3-particle correction terms using particle weights:
23110 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
23111 {
23112 for(Int_t i1=0;i1<nPrim;i1++)
23113 {
23114 aftsTrack=anEvent->GetTrack(i1);
23115 if(!(aftsTrack->InRPSelection())) continue;
23116 phi1=aftsTrack->Phi();
23117 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23118 for(Int_t i2=0;i2<nPrim;i2++)
23119 {
23120 if(i2==i1)continue;
23121 aftsTrack=anEvent->GetTrack(i2);
23122 if(!(aftsTrack->InRPSelection())) continue;
23123 phi2=aftsTrack->Phi();
23124 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23125 for(Int_t i3=0;i3<nPrim;i3++)
23126 {
23127 if(i3==i1||i3==i2)continue;
23128 aftsTrack=anEvent->GetTrack(i3);
23129 if(!(aftsTrack->InRPSelection())) continue;
23130 phi3=aftsTrack->Phi();
23131 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23132 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
57340a27 23133 // 3-p correction terms using particle weights:
489d5531 23134 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(2.5,sin(n*(phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 sin(n*(phi1-phi2-phi3))>
23135 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(2.5,cos(n*(phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 cos(n*(phi1-phi2-phi3))>
23136 } // end of for(Int_t i3=0;i3<nPrim;i3++)
23137 } // end of for(Int_t i2=0;i2<nPrim;i2++)
23138 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23139 } // end of if(nPrim>=3)
23140
57340a27 23141 /*
23142
489d5531 23143 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
23144 {
23145 // 4 nested loops multiparticle correlations using particle weights:
23146 for(Int_t i1=0;i1<nPrim;i1++)
23147 {
23148 aftsTrack=anEvent->GetTrack(i1);
23149 if(!(aftsTrack->InRPSelection())) continue;
23150 phi1=aftsTrack->Phi();
23151 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23152 for(Int_t i2=0;i2<nPrim;i2++)
23153 {
23154 if(i2==i1)continue;
23155 aftsTrack=anEvent->GetTrack(i2);
23156 if(!(aftsTrack->InRPSelection())) continue;
23157 phi2=aftsTrack->Phi();
23158 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23159 for(Int_t i3=0;i3<nPrim;i3++)
23160 {
23161 if(i3==i1||i3==i2)continue;
23162 aftsTrack=anEvent->GetTrack(i3);
23163 if(!(aftsTrack->InRPSelection())) continue;
23164 phi3=aftsTrack->Phi();
23165 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23166 for(Int_t i4=0;i4<nPrim;i4++)
23167 {
23168 if(i4==i1||i4==i2||i4==i3)continue;
23169 aftsTrack=anEvent->GetTrack(i4);
23170 if(!(aftsTrack->InRPSelection())) continue;
23171 phi4=aftsTrack->Phi();
23172 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
23173 if(nPrim>=4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush; // to be improved (replace eventually this if statement with if(nPrim==4))
23174 // 4-p correlations using particle weights:
23175 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(10.5,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4);
23176 // extra correlations:
23177 // 2-p extra correlations (do not appear if particle weights are not used):
23178 // ...
23179 // 3-p extra correlations (do not appear if particle weights are not used):
23180 // ...
23181 // 4-p extra correlations (do not appear if particle weights are not used):
23182 // ...
23183 } // end of for(Int_t i4=0;i4<nPrim;i4++)
23184 } // end of for(Int_t i3=0;i3<nPrim;i3++)
23185 } // end of for(Int_t i2=0;i2<nPrim;i2++)
23186 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23187 } // end of if(nPrim>=4)
23188
23189 */
23190
23191 cout<<endl;
23192
23193} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent)
23194
e1d101a6 23195//=======================================================================================================================
489d5531 23196
489d5531 23197void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights(TString type, TString ptOrEta)
23198{
23199 // Calculate correction terms for non-uniform acceptance for differential flow (cos terms) using particle weights.
57340a27 23200
489d5531 23201 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][1][cti], where cti runs as follows:
57340a27 23202 //
489d5531 23203 // 0: <<cos n(psi)>>
23204 // 1: <<w2 cos n(psi1+phi2)>>
23205 // 2: <<w2 w3 cos n(psi1+phi2-phi3)>>
23206 // 3: <<w2 w3 cos n(psi1-phi2-phi3)>>
23207 // 4:
23208 // 5:
23209 // 6:
23210
23211 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
23212 Double_t dReQ1n1k = (*fReQ)(0,1);
23213 Double_t dReQ2n2k = (*fReQ)(1,2);
23214 //Double_t dReQ1n3k = (*fReQ)(0,3);
23215 //Double_t dReQ4n4k = (*fReQ)(3,4);
23216 Double_t dImQ1n1k = (*fImQ)(0,1);
23217 Double_t dImQ2n2k = (*fImQ)(1,2);
23218 //Double_t dImQ1n3k = (*fImQ)(0,3);
23219 //Double_t dImQ4n4k = (*fImQ)(3,4);
23220
1268c371 23221 // S^M_{p,k} (see .h file for the definition of fSpk):
23222 Double_t dSM1p1k = (*fSpk)(0,1);
23223 Double_t dSM1p2k = (*fSpk)(0,2);
23224 Double_t dSM2p1k = (*fSpk)(1,1);
489d5531 23225
2a98ceb8 23226 Int_t t = 0; // type flag
23227 Int_t pe = 0; // ptEta flag
489d5531 23228
23229 if(type == "RP")
23230 {
23231 t = 0;
23232 } else if(type == "POI")
23233 {
23234 t = 1;
23235 }
23236
23237 if(ptOrEta == "Pt")
23238 {
23239 pe = 0;
23240 } else if(ptOrEta == "Eta")
23241 {
23242 pe = 1;
23243 }
23244
23245 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
23246 Double_t minPtEta[2] = {fPtMin,fEtaMin};
23247 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
23248 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23249
23250 // looping over all bins and calculating correction terms:
23251 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23252 {
23253 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
23254 Double_t p1n0kRe = 0.;
23255 Double_t p1n0kIm = 0.;
23256
23257 // number of POIs in particular pt or eta bin:
23258 Double_t mp = 0.;
23259
23260 // real and imaginary parts of q_{m*n,0} (weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
23261 Double_t q1n2kRe = 0.;
ea239361 23262 //Double_t q1n2kIm = 0.;
489d5531 23263 Double_t q2n1kRe = 0.;
23264 Double_t q2n1kIm = 0.;
46b94261 23265
489d5531 23266 // s_{1,1}, s_{1,2} // to be improved (add explanation)
23267 Double_t s1p1k = 0.;
23268 Double_t s1p2k = 0.;
46b94261 23269
489d5531 23270 // number of particles which are both RPs and POIs in particular pt or eta bin:
ea239361 23271 //Double_t mq = 0.;
489d5531 23272
23273 // M0111 from Eq. (118) in QC2c (to be improved (notation))
23274 Double_t dM01 = 0.;
23275 Double_t dM011 = 0.;
23276
23277 if(type == "POI")
23278 {
23279 // q_{m*n,k}:
23280 q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
23281 * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
ea239361 23282 //q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
23283 // * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
489d5531 23284 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
23285 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
23286 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
23287 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
ea239361 23288 //mq = fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
46b94261 23289
489d5531 23290 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
23291 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
23292 }else if(type == "RP")
23293 {
23294 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
23295 q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
23296 * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
ea239361 23297 //q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
23298 // * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
489d5531 23299 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
23300 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
23301 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
23302 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
23303 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23304 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
23305 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
3b552efe 23306 //s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
23307
ea239361 23308 //mq = fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
489d5531 23309 }
3b552efe 23310
489d5531 23311 if(type == "POI")
3b552efe 23312 {
23313 // p_{m*n,k}:
489d5531 23314 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
23315 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
23316 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
3b552efe 23317 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
23318 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
489d5531 23319 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23320 dM01 = mp*dSM1p1k-s1p1k;
23321 dM011 = mp*(dSM2p1k-dSM1p2k)
23322 - 2.*(s1p1k*dSM1p1k-s1p2k);
23323
23324 // typeFlag = RP (0) or POI (1):
23325 t = 1;
23326 } else if(type == "RP")
489d5531 23327 {
23328 // to be improved (cross-checked):
23329 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
23330 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
23331 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
23332 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
23333 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23334 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23335 dM01 = mp*dSM1p1k-s1p1k;
23336 dM011 = mp*(dSM2p1k-dSM1p2k)
23337 - 2.*(s1p1k*dSM1p1k-s1p2k);
489d5531 23338 // typeFlag = RP (0) or POI (1):
3b552efe 23339 t = 0;
23340 }
489d5531 23341
23342 // <<cos n(psi1)>>:
23343 Double_t cosP1nPsi = 0.;
23344 if(mp)
23345 {
23346 cosP1nPsi = p1n0kRe/mp;
23347
23348 // fill profile for <<cos n(psi1)>>:
23349 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi,mp);
23350 // histogram to store <cos n(psi1)> e-b-e (needed in some other methods):
23351 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][0]->SetBinContent(b,cosP1nPsi);
46b94261 23352 } // end of if(mp)
57340a27 23353
489d5531 23354 // <<w2 cos n(psi1+phi2)>>:
23355 Double_t cosP1nPsiP1nPhiW2 = 0.;
23356 if(dM01)
23357 {
23358 cosP1nPsiP1nPhiW2 = (p1n0kRe*dReQ1n1k-p1n0kIm*dImQ1n1k-q2n1kRe)/(dM01);
23359 // fill profile for <<w2 cos n(psi1+phi2)>>:
23360 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsiP1nPhiW2,dM01);
23361 // histogram to store <w2 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23362 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][1]->SetBinContent(b,cosP1nPsiP1nPhiW2);
23363 } // end of if(dM01)
23364
23365 // <<w2 w3 cos n(psi1+phi2-phi3)>>:
23366 Double_t cosP1nPsi1P1nPhi2MPhi3W2W3 = 0.;
23367 if(dM011)
23368 {
46b94261 23369 cosP1nPsi1P1nPhi2MPhi3W2W3 = (p1n0kRe*(pow(dImQ1n1k,2.)+pow(dReQ1n1k,2.))
23370 - p1n0kRe*dSM1p2k
23371 - q2n1kRe*dReQ1n1k-q2n1kIm*dImQ1n1k
23372 - s1p1k*dReQ1n1k
23373 + 2.*q1n2kRe)
23374 / dM011;
489d5531 23375 // fill profile for <<w1 w2 w3 cos n(psi1+phi2)>>:
23376 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1P1nPhi2MPhi3W2W3,dM011);
23377 // histogram to store <w1 w2 w3 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23378 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][2]->SetBinContent(b,cosP1nPsi1P1nPhi2MPhi3W2W3);
23379 } // end of if(dM011)
23380
23381 // <<w2 w3 cos n(psi1-phi2-phi3)>>:
23382 Double_t cosP1nPsi1M1nPhi2MPhi3W2W3 = 0.;
23383 if(dM011)
23384 {
23385 cosP1nPsi1M1nPhi2MPhi3W2W3 = (p1n0kRe*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))+2.*p1n0kIm*dReQ1n1k*dImQ1n1k
23386 - 1.*(p1n0kRe*dReQ2n2k+p1n0kIm*dImQ2n2k)
46b94261 23387 - 2.*s1p1k*dReQ1n1k
489d5531 23388 + 2.*q1n2kRe)
23389 / dM011;
23390 // fill profile for <<w1 w2 w3 cos n(psi1+phi2)>>:
23391 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1M1nPhi2MPhi3W2W3,dM011);
23392 // histogram to store <w1 w2 w3 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23393 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][3]->SetBinContent(b,cosP1nPsi1M1nPhi2MPhi3W2W3);
23394 } // end of if(dM011)
23395
23396 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
46b94261 23397
57340a27 23398} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights(TString type, TString ptOrEta)
23399
489d5531 23400
e1d101a6 23401//=======================================================================================================================
489d5531 23402
23403
23404void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights(TString type, TString ptOrEta)
23405{
23406 // Calculate correction terms for non-uniform acceptance for differential flow (sin terms).
23407
23408 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][0][cti], where cti runs as follows:
23409 // 0: <<sin n(psi1)>>
23410 // 1: <<w2 sin n(psi1+phi2)>>
23411 // 2: <<w2 w3 sin n(psi1+phi2-phi3)>>
23412 // 3: <<w2 w3 sin n(psi1-phi2-phi3)>>:
23413 // 4:
23414 // 5:
23415 // 6:
23416
23417 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
23418 Double_t dReQ1n1k = (*fReQ)(0,1);
23419 Double_t dReQ2n2k = (*fReQ)(1,2);
23420 //Double_t dReQ1n3k = (*fReQ)(0,3);
23421 //Double_t dReQ4n4k = (*fReQ)(3,4);
23422 Double_t dImQ1n1k = (*fImQ)(0,1);
23423 Double_t dImQ2n2k = (*fImQ)(1,2);
23424 //Double_t dImQ1n3k = (*fImQ)(0,3);
23425 //Double_t dImQ4n4k = (*fImQ)(3,4);
23426
1268c371 23427 // S^M_{p,k} (see .h file for the definition of fSpk):
23428 Double_t dSM1p1k = (*fSpk)(0,1);
23429 Double_t dSM1p2k = (*fSpk)(0,2);
23430 Double_t dSM2p1k = (*fSpk)(1,1);
489d5531 23431
2a98ceb8 23432 Int_t t = 0; // type flag
23433 Int_t pe = 0; // ptEta flag
489d5531 23434
23435 if(type == "RP")
23436 {
23437 t = 0;
23438 } else if(type == "POI")
23439 {
23440 t = 1;
23441 }
23442
23443 if(ptOrEta == "Pt")
23444 {
23445 pe = 0;
23446 } else if(ptOrEta == "Eta")
23447 {
23448 pe = 1;
23449 }
23450
23451 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
23452 Double_t minPtEta[2] = {fPtMin,fEtaMin};
23453 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
23454 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23455
23456 // looping over all bins and calculating correction terms:
23457 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23458 {
23459 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
23460 Double_t p1n0kRe = 0.;
23461 Double_t p1n0kIm = 0.;
23462
23463 // number of POIs in particular pt or eta bin:
23464 Double_t mp = 0.;
23465
23466 // real and imaginary parts of q_{m*n,0} (weighted Q-vector evaluated for particles which are both RPs and POIs in particular pt or eta bin):
ea239361 23467 //Double_t q1n2kRe = 0.;
489d5531 23468 Double_t q1n2kIm = 0.;
23469 Double_t q2n1kRe = 0.;
23470 Double_t q2n1kIm = 0.;
46b94261 23471
489d5531 23472 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23473 Double_t s1p1k = 0.;
23474 Double_t s1p2k = 0.;
46b94261 23475
489d5531 23476 // number of particles which are both RPs and POIs in particular pt or eta bin:
ea239361 23477 //Double_t mq = 0.;
489d5531 23478
23479 // M0111 from Eq. (118) in QC2c (to be improved (notation))
23480 Double_t dM01 = 0.;
23481 Double_t dM011 = 0.;
23482
23483 if(type == "POI")
23484 {
23485 // q_{m*n,k}:
ea239361 23486 //q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
23487 // * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
489d5531 23488 q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
23489 * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
23490 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
23491 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
23492 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
23493 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
ea239361 23494 //mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
46b94261 23495
489d5531 23496 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
23497 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
23498 }else if(type == "RP")
23499 {
23500 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
ea239361 23501 //q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
23502 // * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
489d5531 23503 q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
23504 * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
23505 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
23506 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
23507 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
23508 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
23509 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23510 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
23511 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
23512 //s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
3b552efe 23513 }
23514
23515 if(type == "POI")
23516 {
23517 // p_{m*n,k}:
489d5531 23518 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
23519 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
23520 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
3b552efe 23521 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
23522 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
489d5531 23523 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23524 dM01 = mp*dSM1p1k-s1p1k;
23525 dM011 = mp*(dSM2p1k-dSM1p2k)
23526 - 2.*(s1p1k*dSM1p1k-s1p2k);
23527 // typeFlag = RP (0) or POI (1):
23528 t = 1;
489d5531 23529 } else if(type == "RP")
3b552efe 23530 {
489d5531 23531 // to be improved (cross-checked):
23532 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
23533 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
23534 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
23535 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
23536 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23537 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23538 dM01 = mp*dSM1p1k-s1p1k;
23539 dM011 = mp*(dSM2p1k-dSM1p2k)
489d5531 23540 - 2.*(s1p1k*dSM1p1k-s1p2k);
23541 // typeFlag = RP (0) or POI (1):
3b552efe 23542 t = 0;
23543 }
23544
489d5531 23545 // <<sin n(psi1)>>:
23546 Double_t sinP1nPsi = 0.;
23547 if(mp)
23548 {
23549 sinP1nPsi = p1n0kIm/mp;
23550
23551 // fill profile for <<sin n(psi1)>>:
23552 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi,mp);
23553 // histogram to store <sin n(psi1)> e-b-e (needed in some other methods):
23554 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][0]->SetBinContent(b,sinP1nPsi);
46b94261 23555 } // end of if(mp)
23556
489d5531 23557 // <<w2 sin n(psi1+phi2)>>:
23558 Double_t sinP1nPsiP1nPhiW2 = 0.;
23559 if(dM01)
23560 {
23561 sinP1nPsiP1nPhiW2 = (p1n0kRe*dImQ1n1k+p1n0kIm*dReQ1n1k-q2n1kIm)/(dM01);
23562 // fill profile for <<w2 sin n(psi1+phi2)>>:
23563 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsiP1nPhiW2,dM01);
23564 // histogram to store <w2 sin n(psi1+phi2)> e-b-e (needed in some other methods):
23565 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][1]->SetBinContent(b,sinP1nPsiP1nPhiW2);
23566 } // end of if(mp*dMult-mq)
23567
23568 // <<w2 w3 sin n(psi1+phi2-phi3)>>:
23569 Double_t sinP1nPsi1P1nPhi2MPhi3W2W3 = 0.;
23570 if(dM011)
23571 {
46b94261 23572 sinP1nPsi1P1nPhi2MPhi3W2W3 = (p1n0kIm*(pow(dImQ1n1k,2.)+pow(dReQ1n1k,2.))
23573 - p1n0kIm*dSM1p2k
23574 + q2n1kRe*dImQ1n1k-q2n1kIm*dReQ1n1k
23575 - s1p1k*dImQ1n1k
23576 + 2.*q1n2kIm)
23577 / dM011;
489d5531 23578 // fill profile for <<w2 w3 sin n(psi1+phi2-phi3)>>:
23579 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1P1nPhi2MPhi3W2W3,dM011);
23580 // histogram to store <w2 w3 sin n(psi1+phi2-phi3)> e-b-e (needed in some other methods):
23581 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][2]->SetBinContent(b,sinP1nPsi1P1nPhi2MPhi3W2W3);
23582 } // end of if(dM011)
23583
23584 // <<w2 w3 sin n(psi1-phi2-phi3)>>:
23585 Double_t sinP1nPsi1M1nPhi2MPhi3W2W3 = 0.;
23586 if(dM011)
23587 {
23588 sinP1nPsi1M1nPhi2MPhi3W2W3 = (p1n0kIm*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))-2.*p1n0kRe*dReQ1n1k*dImQ1n1k
23589 + 1.*(p1n0kRe*dImQ2n2k-p1n0kIm*dReQ2n2k)
46b94261 23590 + 2.*s1p1k*dImQ1n1k
489d5531 23591 - 2.*q1n2kIm)
23592 / dM011;
23593 // fill profile for <<w2 w3 sin n(psi1-phi2-phi3)>>:
23594 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1M1nPhi2MPhi3W2W3,dM011);
23595 // histogram to store <w2 w3 sin n(psi1-phi2-phi3)> e-b-e (needed in some other methods):
23596 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][3]->SetBinContent(b,sinP1nPsi1M1nPhi2MPhi3W2W3);
23597 } // end of if(dM011)
23598
23599 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23600
23601} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights(TString type, TString ptOrEta)
23602
e1d101a6 23603//=======================================================================================================================
489d5531 23604
0328db2d 23605void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 23606{
57340a27 23607 // Evaluate with nested loops correction terms for non-uniform acceptance
489d5531 23608 // with using particle weights (both sin and cos terms) relevant for differential flow.
23609
57340a27 23610 // Remark 1: "w1" in expressions bellow is a particle weight used only for particles which were
23611 // flagged both as POI and RP.
489d5531 23612 // Remark 2: Reduced correction terms for non-uniform acceptance are evaluated in pt bin number fCrossCheckInPtBinNo
23613 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
23614 // Remark 3: Results are stored in 1 bin profiles fDiffFlowDirectCorrections[t][pe][sc][cti], where first three indices runs as:
23615 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms], whilst the cti (correction term index) runs as follows:
23616 // cti:
23617 // 0: <<sc n(psi1)>>
23618 // 1: <<w2 sc n(psi1+phi2)>>
23619 // 2: <<w2 w3 sc n(psi1+phi2-phi3)>>
23620 // 3: <<w2 w3 sc n(psi1-phi2-phi3)>>
23621 // 4:
23622 // 5:
23623 // 6:
46b94261 23624
2a98ceb8 23625 Int_t typeFlag = 0;
23626 Int_t ptEtaFlag = 0;
489d5531 23627 if(type == "RP")
23628 {
23629 typeFlag = 0;
23630 } else if(type == "POI")
23631 {
23632 typeFlag = 1;
23633 }
23634 if(ptOrEta == "Pt")
23635 {
23636 ptEtaFlag = 0;
23637 } else if(ptOrEta == "Eta")
23638 {
23639 ptEtaFlag = 1;
23640 }
23641 // shortcuts:
23642 Int_t t = typeFlag;
23643 Int_t pe = ptEtaFlag;
23644
23645 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
23646 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
23647 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23648
23649 Int_t nPrim = anEvent->NumberOfTracks();
23650 AliFlowTrackSimple *aftsTrack = NULL;
23651
23652 Double_t psi1=0., phi2=0., phi3=0.;// phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
23653 Double_t wPhi2=1., wPhi3=1.;
23654
23655 Int_t n = fHarmonic;
23656
23657 // 1'-particle correction terms:
23658 for(Int_t i1=0;i1<nPrim;i1++)
23659 {
23660 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23661 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23662 if(typeFlag==1) // this is diff flow of POIs
489d5531 23663 {
23664 if(ptOrEta == "Pt")
23665 {
23666 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23667 } else if (ptOrEta == "Eta")
23668 {
23669 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23670 }
23671 } else // this is diff flow of RPs
23672 {
489d5531 23673 if(ptOrEta == "Pt")
23674 {
23675 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23676 } else if (ptOrEta == "Eta")
23677 {
23678 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23679 }
489d5531 23680 }
23681 psi1=aftsTrack->Phi();
23682 // sin terms:
23683 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*psi1),1.); // <<sin(n*(psi1))>>
23684 // cos terms:
23685 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*psi1),1.); // <<cos(n*(psi1))>>
23686 }//end of for(Int_t i1=0;i1<nPrim;i1++)
23687
23688 // 2'-particle correction terms:
23689 for(Int_t i1=0;i1<nPrim;i1++)
23690 {
23691 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23692 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23693 if(typeFlag==1) // this is diff flow of POIs
489d5531 23694 {
23695 if(ptOrEta == "Pt")
23696 {
23697 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23698 } else if (ptOrEta == "Eta")
23699 {
23700 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23701 }
23702 } else // this is diff flow of RPs
23703 {
489d5531 23704 if(ptOrEta == "Pt")
23705 {
23706 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23707 } else if (ptOrEta == "Eta")
23708 {
23709 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23710 }
489d5531 23711 }
23712 psi1=aftsTrack->Phi();
23713 for(Int_t i2=0;i2<nPrim;i2++)
23714 {
23715 if(i2==i1) continue;
23716 aftsTrack=anEvent->GetTrack(i2);
23717 // RP condition (!(first) particle in the correlator must be RP):
23718 if(!(aftsTrack->InRPSelection())) continue;
46b94261 23719 phi2=aftsTrack->Phi();
489d5531 23720 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23721 // sin terms:
23722 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2)),wPhi2); // <<w2 sin(n*(psi1+phi2))>>
23723 // cos terms:
23724 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2)),wPhi2); // <<w2 cos(n*(psi1+phi2))>>
23725 }//end of for(Int_t i2=0;i2<nPrim;i2++)
23726 }//end of for(Int_t i1=0;i1<nPrim;i1++)
23727
23728 // 3'-particle correction terms:
23729 for(Int_t i1=0;i1<nPrim;i1++)
23730 {
23731 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23732 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23733 if(typeFlag==1) // this is diff flow of POIs
489d5531 23734 {
23735 if(ptOrEta == "Pt")
23736 {
23737 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23738 } else if (ptOrEta == "Eta")
23739 {
23740 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23741 }
23742 } else // this is diff flow of RPs
23743 {
489d5531 23744 if(ptOrEta == "Pt")
23745 {
23746 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23747 } else if (ptOrEta == "Eta")
23748 {
23749 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23750 }
489d5531 23751 }
23752 psi1=aftsTrack->Phi();
23753 for(Int_t i2=0;i2<nPrim;i2++)
23754 {
23755 if(i2==i1) continue;
23756 aftsTrack=anEvent->GetTrack(i2);
23757 // RP condition (!(first) particle in the correlator must be RP):
23758 if(!(aftsTrack->InRPSelection())) continue;
23759 phi2=aftsTrack->Phi();
23760 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23761 for(Int_t i3=0;i3<nPrim;i3++)
23762 {
23763 if(i3==i1||i3==i2) continue;
23764 aftsTrack=anEvent->GetTrack(i3);
23765 // RP condition (!(first) particle in the correlator must be RP):
23766 if(!(aftsTrack->InRPSelection())) continue;
23767 phi3=aftsTrack->Phi();
23768 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23769 // sin terms:
23770 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2-phi3)),wPhi2*wPhi3); // <<wPhi2*wPhi3 sin(n*(psi1+phi2-phi3))>>
23771 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1-phi2-phi3)),wPhi2*wPhi3); // <<wPhi2*wPhi3 sin(n*(psi1-phi2-phi3))>>
23772 // cos terms:
23773 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3)),wPhi2*wPhi3); // <<wPhi2*wPhi3 cos(n*(psi1+phi2-phi3))>>
23774 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1-phi2-phi3)),wPhi2*wPhi3); // <<wPhi2*wPhi3 cos(n*(psi1-phi2-phi3))>>
23775 }//end of for(Int_t i3=0;i3<nPrim;i3++)
23776 }//end of for(Int_t i2=0;i2<nPrim;i2++)
46b94261 23777 }//end of for(Int_t i1=0;i1<nPrim;i1++)
489d5531 23778
23779} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
23780
e1d101a6 23781//=======================================================================================================================
2001bc3a 23782
b3dacf6b 23783void AliFlowAnalysisWithQCumulants::CheckPointersUsedInFinish()
23784{
23785 // Check all pointers used in method Finish().
23786
b77b6434 23787 if(!fAvMultiplicity)
23788 {
23789 cout<<endl;
23790 cout<<" WARNING (QC): fAvMultiplicity is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23791 cout<<endl;
23792 exit(0);
23793 }
b3dacf6b 23794 if(!fIntFlowCorrelationsPro)
23795 {
23796 cout<<endl;
23797 cout<<" WARNING (QC): fIntFlowCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23798 cout<<endl;
23799 exit(0);
23800 }
b40a910e 23801 if(!fIntFlowSquaredCorrelationsPro)
23802 {
23803 cout<<endl;
23804 cout<<" WARNING (QC): fIntFlowSquaredCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23805 cout<<endl;
23806 exit(0);
23807 }
b3dacf6b 23808 if(!fIntFlowCorrelationsHist)
23809 {
23810 cout<<endl;
23811 cout<<" WARNING (QC): fIntFlowCorrelationsHist is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23812 cout<<endl;
23813 exit(0);
23814 }
403e3389 23815 if((fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) && !fIntFlowExtraCorrelationsPro)
b77b6434 23816 {
23817 cout<<endl;
23818 cout<<" WARNING (QC): fIntFlowExtraCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23819 cout<<endl;
23820 exit(0);
23821 }
b3dacf6b 23822 for(Int_t power=0;power<2;power++)
23823 {
23824 if(!fIntFlowSumOfEventWeights[power])
23825 {
23826 cout<<endl;
23827 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeights[%d] is NULL in CheckPointersUsedInFinish() !!!!",power)<<endl;
23828 cout<<endl;
23829 exit(0);
23830 }
23831 } // end of for(Int_t power=0;power<2;power++)
23832 if(!fIntFlowProductOfCorrelationsPro)
23833 {
23834 cout<<endl;
23835 cout<<" WARNING (QC): fIntFlowProductOfCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23836 cout<<endl;
23837 exit(0);
23838 }
23839 if(!fIntFlowSumOfProductOfEventWeights)
23840 {
23841 cout<<endl;
23842 cout<<" WARNING (QC): fIntFlowSumOfProductOfEventWeights is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23843 cout<<endl;
23844 exit(0);
23845 }
23846 if(!fIntFlowCovariances)
23847 {
23848 cout<<endl;
23849 cout<<" WARNING (QC): fIntFlowCovariances is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23850 cout<<endl;
23851 exit(0);
23852 }
23853 if(!fIntFlowQcumulants)
23854 {
23855 cout<<endl;
23856 cout<<" WARNING (QC): fIntFlowQcumulants is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23857 cout<<endl;
23858 exit(0);
23859 }
0dd3b008 23860 if(!fIntFlow)
23861 {
23862 cout<<endl;
23863 cout<<" WARNING (QC): fIntFlow is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23864 cout<<endl;
23865 exit(0);
23866 }
23867 if(!fCommonHists)
23868 {
23869 cout<<endl;
23870 cout<<" WARNING (QC): fCommonHists is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23871 cout<<endl;
23872 exit(0);
23873 }
23874 if(!(fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th))
23875 {
23876 cout<<endl;
23877 cout<<" WARNING (QC): fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th"<<endl;
23878 cout<<" && fCommonHistsResults8th is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23879 cout<<endl;
23880 exit(0);
23881 }
e1d101a6 23882
b92ea2b9 23883 // NUA stuff:
23884 for(Int_t sc=0;sc<2;sc++) // sin/cos
23885 {
23886 if(!fIntFlowCorrectionTermsForNUAPro[sc])
23887 {
23888 cout<<endl;
23889 cout<<Form(" WARNING (QC): fIntFlowCorrectionTermsForNUAPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",sc)<<endl;
23890 cout<<endl;
23891 exit(0);
23892 }
23893 if(!fIntFlowCorrectionTermsForNUAHist[sc])
23894 {
23895 cout<<endl;
23896 cout<<Form(" WARNING (QC): fIntFlowCorrectionTermsForNUAHist[%d] is NULL in CheckPointersUsedInFinish() !!!!",sc)<<endl;
23897 cout<<endl;
23898 exit(0);
23899 }
23900 for(Int_t lq=0;lq<2;lq++) // linear/quadratic
23901 {
23902 if(!fIntFlowSumOfEventWeightsNUA[sc][lq])
23903 {
23904 cout<<endl;
23905 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeightsNUA[%d][%d] is NULL in CheckPointersUsedInFinish() !!!!",sc,lq)<<endl;
23906 cout<<endl;
23907 exit(0);
23908 }
23909 } // end of for(Int_t lq=0;lq<2;lq++) // linear/quadratic
23910 } // end of for(Int_t power=0;power<2;power++)
23911 if(!fIntFlowProductOfCorrectionTermsForNUAPro)
23912 {
23913 cout<<endl;
23914 cout<<" WARNING (QC): fIntFlowProductOfCorrectionTermsForNUAPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23915 cout<<endl;
23916 exit(0);
23917 }
23918 if(!fIntFlowSumOfProductOfEventWeightsNUA)
23919 {
23920 cout<<endl;
23921 cout<<" WARNING (QC): fIntFlowSumOfProductOfEventWeightsNUA is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23922 cout<<endl;
23923 exit(0);
23924 }
23925 if(!fIntFlowCovariancesNUA)
23926 {
23927 cout<<endl;
23928 cout<<" WARNING (QC): fIntFlowCovariancesNUA is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23929 cout<<endl;
23930 exit(0);
23931 }
23932 if(!fIntFlowQcumulantsErrorSquaredRatio)
23933 {
23934 cout<<endl;
23935 cout<<" WARNING (QC): fIntFlowQcumulantsErrorSquaredRatio is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23936 cout<<endl;
23937 exit(0);
23938 }
23939 if(!fIntFlowDetectorBias)
23940 {
23941 cout<<endl;
23942 cout<<" WARNING (QC): fIntFlowDetectorBias is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23943 cout<<endl;
23944 exit(0);
23945 }
23946
e1d101a6 23947 if(fCalculateMixedHarmonics)
23948 {
23949 if(!(fMixedHarmonicsFlags))
23950 {
23951 cout<<endl;
23952 cout<<" WARNING (QC): fMixedHarmonicsFlags is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23953 cout<<endl;
23954 exit(0);
23955 }
23956 if(!(f2pCorrelations && f3pCorrelations && f4pCorrelations && f5pCorrelations))
23957 {
23958 cout<<endl;
23959 cout<<" WARNING (QC): f2pCorrelations && f3pCorrelations && f4pCorrelations && f5pCorrelations is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23960 cout<<endl;
23961 exit(0);
23962 }
23963 if(!(f2pCumulants && f3pCumulants && f4pCumulants && f5pCumulants))
23964 {
23965 cout<<endl;
23966 cout<<" WARNING (QC): f2pCumulants && f3pCumulants && f4pCumulants && f5pCumulants is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23967 cout<<endl;
23968 exit(0);
23969 }
c10259fb 23970 for(Int_t power=0;power<2;power++)
23971 {
23972 if(!fMixedHarmonicEventWeights[power])
23973 {
23974 cout<<endl;
23975 cout<<Form(" WARNING (QC): fMixedHarmonicEventWeights[%d] is NULL in CheckPointersUsedInFinish() !!!!",power)<<endl;
23976 cout<<endl;
23977 exit(0);
23978 }
23979 } // end of for(Int_t power=0;power<2;power++)
23980 if(!(fMixedHarmonicProductOfEventWeights))
23981 {
23982 cout<<endl;
23983 cout<<" WARNING (QC): fMixedHarmonicProductOfEventWeights is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23984 cout<<endl;
23985 exit(0);
23986 }
23987 if(!(fMixedHarmonicProductOfCorrelations))
23988 {
23989 cout<<endl;
23990 cout<<" WARNING (QC): fMixedHarmonicProductOfCorrelations is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23991 cout<<endl;
23992 exit(0);
23993 }
e1d101a6 23994 } // end of if(fCalculateMixedHarmonics)
23995
b3dacf6b 23996 // Versus multiplicity:
23997 if(!fCalculateCumulantsVsM){return;}
b77b6434 23998 for(Int_t co=0;co<=3;co++) // cumulant order
b3dacf6b 23999 {
b77b6434 24000 if(!fIntFlowQcumulantsVsM[co])
b3dacf6b 24001 {
24002 cout<<endl;
b77b6434 24003 cout<<Form(" WARNING (QC): fIntFlowQcumulantsVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
b3dacf6b 24004 cout<<endl;
24005 exit(0);
24006 }
b77b6434 24007 if(!fIntFlowVsM[co])
b3dacf6b 24008 {
24009 cout<<endl;
b77b6434 24010 cout<<Form(" WARNING (QC): fIntFlowVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
24011 cout<<endl;
24012 exit(0);
24013 }
24014 if(!fIntFlowDetectorBiasVsM[co])
24015 {
24016 cout<<endl;
24017 cout<<Form(" WARNING (QC): fIntFlowDetectorBiasVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
24018 cout<<endl;
24019 exit(0);
24020 }
24021 } // end of for(Int_t c0=0;c0<=3;c0++) // cumulant order
24022 for(Int_t ci=0;ci<=3;ci++) // correlation index
24023 {
24024 if(!fIntFlowCorrelationsVsMPro[ci])
24025 {
24026 cout<<endl;
24027 cout<<Form(" WARNING (QC): fIntFlowCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
b3dacf6b 24028 cout<<endl;
24029 exit(0);
24030 }
b40a910e 24031 if(!fIntFlowSquaredCorrelationsVsMPro[ci])
24032 {
24033 cout<<endl;
24034 cout<<Form(" WARNING (QC): fIntFlowSquaredCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
24035 cout<<endl;
24036 exit(0);
24037 }
b77b6434 24038 if(!fIntFlowCorrelationsVsMHist[ci])
b92ea2b9 24039 {
24040 cout<<endl;
b77b6434 24041 cout<<Form(" WARNING (QC): fIntFlowCorrelationsVsMHist[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
b92ea2b9 24042 cout<<endl;
24043 exit(0);
24044 }
b3dacf6b 24045 for(Int_t power=0;power<2;power++)
24046 {
24047 if(!fIntFlowSumOfEventWeightsVsM[ci][power])
24048 {
24049 cout<<endl;
24050 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeightsVsM[%d][%d] is NULL in CheckPointersUsedInFinish() !!!!",ci,power)<<endl;
24051 cout<<endl;
24052 exit(0);
24053 }
24054 } // end of for(Int_t power=0;power<2;power++)
24055 } // end of for(Int_t ci=0;ci<=3;ci++) // correlation index
24056 for(Int_t i=0;i<6;i++)
24057 {
24058 if(!fIntFlowProductOfCorrelationsVsMPro[i])
24059 {
24060 cout<<endl;
24061 cout<<Form(" WARNING (QC): fIntFlowProductOfCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24062 cout<<endl;
24063 exit(0);
24064 }
24065 if(!fIntFlowSumOfProductOfEventWeightsVsM[i])
24066 {
24067 cout<<endl;
24068 cout<<Form(" WARNING (QC): fIntFlowSumOfProductOfEventWeightsVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24069 cout<<endl;
24070 exit(0);
24071 }
24072 if(!fIntFlowCovariancesVsM[i])
24073 {
24074 cout<<endl;
24075 cout<<Form(" WARNING (QC): fIntFlowCovariancesVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24076 cout<<endl;
24077 exit(0);
24078 }
24079 } // end of for(Int_t i=0;i<6;i++)
24080 if(!fIntFlowRebinnedInM)
24081 {
24082 cout<<endl;
24083 cout<<" WARNING (QC): fIntFlowRebinnedInM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24084 cout<<endl;
24085 exit(0);
24086 }
24087 if(!fIntFlowQcumulantsRebinnedInM)
24088 {
24089 cout<<endl;
24090 cout<<" WARNING (QC): fIntFlowQcumulantsRebinnedInM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24091 cout<<endl;
24092 exit(0);
24093 }
24094
24095} // end of void AliFlowAnalysisWithQCumulants::CheckPointersUsedInFinish()
24096
e1d101a6 24097//=======================================================================================================================
b3dacf6b 24098
24099void AliFlowAnalysisWithQCumulants::CheckPointersUsedInMake()
24100{
1268c371 24101 // Check all pointers used in method Make(). // to be improved - check other pointers as well
b3dacf6b 24102
b77b6434 24103 if(!fAvMultiplicity)
24104 {
1268c371 24105 printf("\n WARNING (QC): fAvMultiplicity is NULL in CheckPointersUsedInMake() !!!!\n\n");
b77b6434 24106 exit(0);
24107 }
403e3389 24108 if((fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) && !fIntFlowExtraCorrelationsPro)
b77b6434 24109 {
1268c371 24110 printf("\n WARNING (QC): fIntFlowExtraCorrelationsPro is NULL in CheckPointersUsedInMake() !!!!\n\n");
b77b6434 24111 exit(0);
24112 }
1268c371 24113 // 2D:
24114 if(fCalculate2DDiffFlow)
24115 {
24116 for(Int_t t=0;t<2;t++) // type = RP or POI
24117 {
24118 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
24119 {
24120 if(!f2DDiffFlowCorrelationsPro[t][rci])
24121 {
24122 printf("\n WARNING (QC): f2DDiffFlowCorrelationsPro[%i][%i] is NULL in CheckPointersUsedInMake() !!!!\n\n",t,rci);
24123 exit(0);
24124 } // end of if(!f2DDiffFlowCorrelationsPro[t][rci])
24125 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
24126 } // end of for(Int_t t=0;t<2;t++)
24127 } // end of if(fCalculate2DDiffFlow)
b3dacf6b 24128
24129} // end of void AliFlowAnalysisWithQCumulants::CheckPointersUsedInMake()
24130
57340a27 24131