]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/FLOW/Base/AliFlowAnalysisWithQCumulants.cxx
patching flow cuts (Panos)
[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 {
4aae2a93 3598 //Printf("RP multiplicity: %lf",fNumberOfRPsEBE);
3599 dMultiplicityBin = fNumberOfRPsEBE+0.5;
df23c5ae 3600 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 3601 {
4aae2a93 3602 //Printf("Reference multiplicity: %lf",fReferenceMultiplicityEBE);
3842bdcd 3603 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 3604 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
3605 {
3606 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
3607 }
489d5531 3608
b84464d3 3609 // Real parts of expressions involving various combinations of Q-vectors which appears
3610 // simultaneously in several equations for multiparticle correlations bellow:
3611 // Re[Q_{2n}Q_{n}^*Q_{n}^*]
3612 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n;
3613 // Re[Q_{6n}Q_{3n}^*Q_{3n}^*]
3614 Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n;
3615 // Re[Q_{4n}Q_{2n}^*Q_{2n}^*]
489d5531 3616 Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
b84464d3 3617 // Re[Q_{4n}Q_{3n}^*Q_{n}^*]
489d5531 3618 Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
b84464d3 3619 // Re[Q_{3n}Q_{2n}^*Q_{n}^*]
489d5531 3620 Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
b84464d3 3621 + dImQ3n*dImQ2n*dReQ1n;
3622 // Re[Q_{5n}Q_{3n}^*Q_{2n}^*]
3623 Double_t reQ5nQ3nstarQ2nstar = dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
3624 + dImQ5n*dImQ2n*dReQ3n;
3625 // Re[Q_{5n}Q_{4n}^*Q_{1n}^*]
3626 Double_t reQ5nQ4nstarQ1nstar = dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
3627 + dImQ5n*dImQ4n*dReQ1n;
3628 // Re[Q_{6n}Q_{5n}^*Q_{1n}^*]
3629 Double_t reQ6nQ5nstarQ1nstar = dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
3630 + dImQ6n*dImQ5n*dReQ1n;
3631 // Re[Q_{6n}Q_{4n}^*Q_{2n}^*]
3632 Double_t reQ6nQ4nstarQ2nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
3633 + dImQ6n*dImQ4n*dReQ2n;
3634 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{2n}^*]
3635 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
3636 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
3637 // Re[Q_{3n}Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3638 Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
3639 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
403e3389 3640 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
3641 Double_t reQ6nQ2nstarQ2nstarQ2nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
3642 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
b84464d3 3643 // Re[Q_{4n}Q_{2n}^*Q_{n}^*Q_{n}^*]
3644 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
3645 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);
3646 // Re[Q_{4n}Q_{2n}^*Q_{3n}^*Q_{3n}^*]
3647 Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
3648 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;
3649 // Re[Q_{4n}Q_{n}Q_{3n}^*Q_{2n}^*]
3650 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
3651 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
3652 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
3653 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
3654 // Re[Q_{5n}Q_{n}Q_{4n}^*Q_{2n}^*]
3655 Double_t reQ5nQ1nQ4nstarQ2nstar = dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
3656 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
3657 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
3658 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n;
3659 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{3n}^*]
3660 Double_t reQ5nQ1nQ3nstarQ3nstar = dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
3661 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
3662 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n;
3663 // Re[Q_{5n}Q_{3n}^*Q_{n}^*Q_{n}^*]
3664 Double_t reQ5nQ3nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
3665 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
3666 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n;
3667 // Re[Q_{5n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
3668 Double_t reQ5nQ2nstarQ2nstarQ1nstar = -pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
3669 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
403e3389 3670 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n;
3671 // Re[Q_{6n}Q_{4n}^*Q_{n}^*Q_{n}^*]
3672 Double_t reQ6nQ4nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
3673 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
3674 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n;
489d5531 3675 // |Q_{2n}|^2 |Q_{n}|^2
3676 Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
b84464d3 3677 // |Q_{4n}|^2 |Q_{2n}|^2
3678 Double_t dQ4nQ2nQ4nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.));
3679 // |Q_{3n}|^2 |Q_{2n}|^2
3680 Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.));
3681 // |Q_{5n}|^2 |Q_{n}|^2
3682 Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
53884472 3683 // |Q_{3n}|^2 |Q_{n}|^2
3684 Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
b84464d3 3685 // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3686 Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
b84464d3 3687 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));
3688 // Re[Q_{2n}Q_{2n}Q_{2n}^*Q_{n}^*Q_{n}^*]
489d5531 3689 Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
3690 * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);
b84464d3 3691 // Re[Q_{4n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3692 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
3693 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
3694 - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;
b84464d3 3695 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{n}^*Q_{n}^*]
489d5531 3696 Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
b84464d3 3697 * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
3698 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);
3699 // Re[Q_{6n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3700 Double_t reQ6nQ3nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
3701 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
3702 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
3703 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n;
3704 // Re[Q_{3n}Q_{3n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3705 Double_t reQ3nQ3nQ3nstarQ2nstarQ1nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
3706 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
3707 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);
3708 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
3709 Double_t reQ3nQ3nQ2nstarQ2nstarQ2nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.)
3710 - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
3711 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n
3712 - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.)
3713 + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);
3714 // Re[Q_{4n}Q_{2n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3715 Double_t reQ4nQ2nQ3nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
3716 * (dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
3717 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n);
3718 // Re[Q_{3n}Q_{2n}Q_{3n}^*Q_{n}^*Q_{n}^*]
3719 Double_t reQ3nQ2nQ3nstarQ1nstarQ1nstar = -(pow(dImQ3n,2.)+pow(dReQ3n,2.))
3720 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n);
3721 // Re[Q_{3n}Q_{2n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
3722 Double_t reQ3nQ2nQ2nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
3723 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
3724 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);
3725 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
3726 Double_t reQ5nQ1nQ3nstarQ2nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
3727 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
3728 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
3729 // Re[Q_{2n}Q_{2n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3730 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
3731 + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
3732 * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
b84464d3 3733 - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n);
3734 // Re[Q_{3n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3735 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
3736 * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
3737 + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
489d5531 3738 // |Q_{2n}|^2 |Q_{n}|^4
b84464d3 3739 Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.);
3740 // |Q_{3n}|^2 |Q_{2n}|^2 |Q_{n}|^2
3741 Double_t dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3742 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
3743 // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
489d5531 3744 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3745 * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
53884472 3746 + 2.*dReQ1n*dImQ1n*dImQ2n);
3747 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*]
3748 Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
3749 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
3750 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
3751 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
3752 + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
3753 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n
3754 - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
3755 // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*]
3756 Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
3757 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
3758 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
3759 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n
3760 + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
3761 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
3762 + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n;
3763 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*]
3764 Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n
3765 - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n
3766 + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n
3767 + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n
3768 - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n
3769 + dImQ1n*dImQ2n*dImQ3n);
489d5531 3770
b84464d3 3771 // Results for multiparticle azimuthal correlations:
489d5531 3772 // 2-particle:
b84464d3 3773 Double_t two1n1n = 0.; // <cos(n(phi1-phi2))>
3774 Double_t two2n2n = 0.; // <cos(2n(phi1-phi2))>
3775 Double_t two3n3n = 0.; // <cos(3n(phi1-phi2))>
3776 Double_t two4n4n = 0.; // <cos(4n(phi1-phi2))>
489d5531 3777 if(dMult>1)
3778 {
3779 two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.));
3780 two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.));
3781 two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.));
3782 two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.));
b84464d3 3783 // Average 2-particle correlations for single event:
489d5531 3784 fIntFlowCorrelationsAllEBE->SetBinContent(1,two1n1n);
3785 fIntFlowCorrelationsAllEBE->SetBinContent(2,two2n2n);
3786 fIntFlowCorrelationsAllEBE->SetBinContent(3,two3n3n);
b84464d3 3787 fIntFlowCorrelationsAllEBE->SetBinContent(4,two4n4n);
3788 // Average 2-particle correlations for all events:
3789 fIntFlowCorrelationsAllPro->Fill(0.5,two1n1n,dMult*(dMult-1.));
3790 fIntFlowCorrelationsAllPro->Fill(1.5,two2n2n,dMult*(dMult-1.));
3791 fIntFlowCorrelationsAllPro->Fill(2.5,two3n3n,dMult*(dMult-1.));
3792 fIntFlowCorrelationsAllPro->Fill(3.5,two4n4n,dMult*(dMult-1.));
3793 // Store separetately <2>:
3794 fIntFlowCorrelationsEBE->SetBinContent(1,two1n1n); // <2>
3795 // Testing other multiplicity weights:
489d5531 3796 Double_t mWeight2p = 0.;
df23c5ae 3797 if(fMultiplicityWeight->Contains("combinations"))
489d5531 3798 {
3799 mWeight2p = dMult*(dMult-1.);
df23c5ae 3800 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 3801 {
3802 mWeight2p = 1.;
df23c5ae 3803 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 3804 {
3805 mWeight2p = dMult;
b84464d3 3806 }
489d5531 3807 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(1,mWeight2p); // eW_<2>
3808 fIntFlowCorrelationsPro->Fill(0.5,two1n1n,mWeight2p);
b40a910e 3809 fIntFlowSquaredCorrelationsPro->Fill(0.5,two1n1n*two1n1n,mWeight2p);
3810 if(fCalculateCumulantsVsM)
3811 {
3842bdcd 3812 fIntFlowCorrelationsVsMPro[0]->Fill(dMultiplicityBin,two1n1n,mWeight2p);
3813 fIntFlowSquaredCorrelationsVsMPro[0]->Fill(dMultiplicityBin,two1n1n*two1n1n,mWeight2p);
b40a910e 3814 }
3435cacb 3815 if(fCalculateAllCorrelationsVsM)
3816 {
3842bdcd 3817 fIntFlowCorrelationsAllVsMPro[0]->Fill(dMultiplicityBin,two1n1n,mWeight2p);
3818 fIntFlowCorrelationsAllVsMPro[1]->Fill(dMultiplicityBin,two2n2n,mWeight2p);
3819 fIntFlowCorrelationsAllVsMPro[2]->Fill(dMultiplicityBin,two3n3n,mWeight2p);
3820 fIntFlowCorrelationsAllVsMPro[3]->Fill(dMultiplicityBin,two4n4n,mWeight2p);
d9e6d8bb 3821 }
3822 if(fStoreControlHistograms)
3823 {
3824 fCorrelation2468VsMult[0]->Fill(dMultiplicityBin,two1n1n);
3825 }
489d5531 3826 } // end of if(dMult>1)
3827
3828 // 3-particle:
b84464d3 3829 Double_t three2n1n1n = 0.; // <cos(n(2*phi1-phi2-phi3))>
3830 Double_t three3n2n1n = 0.; // <cos(n(3*phi1-2*phi2-phi3))>
3831 Double_t three4n2n2n = 0.; // <cos(n(4*phi1-2*phi2-2*phi3))>
3832 Double_t three4n3n1n = 0.; // <cos(n(4*phi1-3*phi2-phi3))>
489d5531 3833 if(dMult>2)
3834 {
3835 three2n1n1n = (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3836 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
3837 / (dMult*(dMult-1.)*(dMult-2.));
3838 three3n2n1n = (reQ3nQ2nstarQ1nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3839 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))
3840 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
3841 / (dMult*(dMult-1.)*(dMult-2.));
3842 three4n2n2n = (reQ4nQ2nstarQ2nstar-2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3843 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
3844 / (dMult*(dMult-1.)*(dMult-2.));
3845 three4n3n1n = (reQ4nQ3nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))
3846 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
3847 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
b84464d3 3848 / (dMult*(dMult-1.)*(dMult-2.));
3849 // Average 3-particle correlations for single event:
489d5531 3850 fIntFlowCorrelationsAllEBE->SetBinContent(6,three2n1n1n);
3851 fIntFlowCorrelationsAllEBE->SetBinContent(7,three3n2n1n);
3852 fIntFlowCorrelationsAllEBE->SetBinContent(8,three4n2n2n);
3853 fIntFlowCorrelationsAllEBE->SetBinContent(9,three4n3n1n);
b84464d3 3854 // Average 3-particle correlations for all events:
489d5531 3855 fIntFlowCorrelationsAllPro->Fill(5.5,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
3856 fIntFlowCorrelationsAllPro->Fill(6.5,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
3857 fIntFlowCorrelationsAllPro->Fill(7.5,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
3435cacb 3858 fIntFlowCorrelationsAllPro->Fill(8.5,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
b84464d3 3859 // Average 3-particle correlations vs M for all events:
3435cacb 3860 if(fCalculateAllCorrelationsVsM)
3861 {
3842bdcd 3862 fIntFlowCorrelationsAllVsMPro[5]->Fill(dMultiplicityBin,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
3863 fIntFlowCorrelationsAllVsMPro[6]->Fill(dMultiplicityBin,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
3864 fIntFlowCorrelationsAllVsMPro[7]->Fill(dMultiplicityBin,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
3865 fIntFlowCorrelationsAllVsMPro[8]->Fill(dMultiplicityBin,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
3435cacb 3866 }
489d5531 3867 } // end of if(dMult>2)
3868
3869 // 4-particle:
b84464d3 3870 Double_t four1n1n1n1n = 0.; // <cos(n(phi1+phi2-phi3-phi4))>
3871 Double_t four2n2n2n2n = 0.; // <cos(2n(phi1+phi2-phi3-phi4))>
3872 Double_t four2n1n2n1n = 0.; // <cos(n(2*phi1+phi2-2*phi3-phi4))>
3873 Double_t four3n1n1n1n = 0.; // <cos(n(3*phi1-phi2-phi3-phi4))>
3874 Double_t four4n2n1n1n = 0.; // <cos(n(4*phi1-2*phi2-phi3-phi4))>
3875 Double_t four3n1n2n2n = 0.; // <cos(n(3*phi1+phi2-2*phi3-2*phi4))>
3876 Double_t four3n1n3n1n = 0.; // <cos(n(3*phi1+phi2-3*phi3-phi4))>
489d5531 3877 if(dMult>3)
3878 {
3879 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
3880 + pow(dImQ1n,2.))-2.*reQ2nQ1nstarQ1nstar+(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
3881 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
3882 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
3883 + pow(dImQ2n,2.))-2.*reQ4nQ2nstarQ2nstar+(pow(dReQ4n,2.)+pow(dImQ4n,2.)))
3884 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
3885 four2n1n2n1n = (dQ2nQ1nQ2nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar-2.*reQ2nQ1nstarQ1nstar)
3886 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3887 - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3888 + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
3889 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3890 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3891 four3n1n1n1n = (reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar-3.*reQ2nQ1nstarQ1nstar
3892 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
489d5531 3893 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
3894 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3895 four4n2n1n1n = (reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar)
3896 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3897 - (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3898 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
3899 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3900 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3901 four3n1n2n2n = (reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nstarQ2nstar-reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar)
489d5531 3902 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
b84464d3 3903 - (2.*reQ2nQ1nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
489d5531 3904 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
3905 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
3906 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
3907 four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
b84464d3 3908 - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar
3909 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3910 + pow(dReQ2n,2.)+pow(dImQ2n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
3911 + dMult*(dMult-6.))
3912 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3913 // Average 4-particle correlations for single event:
489d5531 3914 fIntFlowCorrelationsAllEBE->SetBinContent(11,four1n1n1n1n);
3915 fIntFlowCorrelationsAllEBE->SetBinContent(12,four2n1n2n1n);
3916 fIntFlowCorrelationsAllEBE->SetBinContent(13,four2n2n2n2n);
3917 fIntFlowCorrelationsAllEBE->SetBinContent(14,four3n1n1n1n);
3918 fIntFlowCorrelationsAllEBE->SetBinContent(15,four3n1n3n1n);
3919 fIntFlowCorrelationsAllEBE->SetBinContent(16,four3n1n2n2n);
b84464d3 3920 fIntFlowCorrelationsAllEBE->SetBinContent(17,four4n2n1n1n);
3921 // Average 4-particle correlations for all events:
489d5531 3922 fIntFlowCorrelationsAllPro->Fill(10.5,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3923 fIntFlowCorrelationsAllPro->Fill(11.5,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3924 fIntFlowCorrelationsAllPro->Fill(12.5,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3925 fIntFlowCorrelationsAllPro->Fill(13.5,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3926 fIntFlowCorrelationsAllPro->Fill(14.5,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3927 fIntFlowCorrelationsAllPro->Fill(15.5,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3928 fIntFlowCorrelationsAllPro->Fill(16.5,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3929 // Average 4-particle correlations vs M for all events:
3435cacb 3930 if(fCalculateAllCorrelationsVsM)
3931 {
3842bdcd 3932 fIntFlowCorrelationsAllVsMPro[10]->Fill(dMultiplicityBin,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3933 fIntFlowCorrelationsAllVsMPro[11]->Fill(dMultiplicityBin,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3934 fIntFlowCorrelationsAllVsMPro[12]->Fill(dMultiplicityBin,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3935 fIntFlowCorrelationsAllVsMPro[13]->Fill(dMultiplicityBin,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3936 fIntFlowCorrelationsAllVsMPro[14]->Fill(dMultiplicityBin,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3937 fIntFlowCorrelationsAllVsMPro[15]->Fill(dMultiplicityBin,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3938 fIntFlowCorrelationsAllVsMPro[16]->Fill(dMultiplicityBin,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 3939 }
3940 // Store separetately <4>:
489d5531 3941 fIntFlowCorrelationsEBE->SetBinContent(2,four1n1n1n1n); // <4>
b84464d3 3942 // Testing other multiplicity weights:
489d5531 3943 Double_t mWeight4p = 0.;
df23c5ae 3944 if(fMultiplicityWeight->Contains("combinations"))
489d5531 3945 {
3946 mWeight4p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.);
df23c5ae 3947 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 3948 {
3949 mWeight4p = 1.;
df23c5ae 3950 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 3951 {
3952 mWeight4p = dMult;
b84464d3 3953 }
489d5531 3954 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(2,mWeight4p); // eW_<4>
3955 fIntFlowCorrelationsPro->Fill(1.5,four1n1n1n1n,mWeight4p);
b40a910e 3956 fIntFlowSquaredCorrelationsPro->Fill(1.5,four1n1n1n1n*four1n1n1n1n,mWeight4p);
3957 if(fCalculateCumulantsVsM)
3958 {
3842bdcd 3959 fIntFlowCorrelationsVsMPro[1]->Fill(dMultiplicityBin,four1n1n1n1n,mWeight4p);
3960 fIntFlowSquaredCorrelationsVsMPro[1]->Fill(dMultiplicityBin,four1n1n1n1n*four1n1n1n1n,mWeight4p);
b40a910e 3961 }
d9e6d8bb 3962 if(fStoreControlHistograms)
3963 {
3964 fCorrelation2468VsMult[1]->Fill(dMultiplicityBin,four1n1n1n1n);
3965 }
489d5531 3966 } // end of if(dMult>3)
3967
3968 // 5-particle:
b84464d3 3969 Double_t five2n1n1n1n1n = 0.; // <cos(n(2*phi1+phi2-phi3-phi4-phi5))>
3970 Double_t five2n2n2n1n1n = 0.; // <cos(n(2*phi1+2*phi2-2*phi3-phi4-phi5))>
3971 Double_t five3n1n2n1n1n = 0.; // <cos(n(3*phi1+phi2-2*phi3-phi4-phi5))>
3972 Double_t five4n1n1n1n1n = 0.; // <cos(n(4*phi1-phi2-phi3-phi4-phi5))>
489d5531 3973 if(dMult>4)
b84464d3 3974 {
3975 five2n1n1n1n1n = (reQ2nQ1nQ1nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar+5.*reQ3nQ2nstarQ1nstar
3976 - 3.*(dMult-5.)*reQ2nQ1nstarQ1nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3977 - 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3978 + 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3979 - 3.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
3980 + 6.*(2.*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult*(dMult-4.))
489d5531 3981 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 3982 five2n2n2n1n1n = (reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ3nQ1nQ2nstarQ2nstar
3983 + 3.*reQ4nQ2nstarQ2nstar+8.*reQ3nQ2nstarQ1nstar+2.*reQ4nQ3nstarQ1nstar
3984 - 2.*(dMult-6.)*reQ2nQ1nstarQ1nstar
3985 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3986 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
3987 + 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3988 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
3989 + 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
489d5531 3990 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 3991 five4n1n1n1n1n = (reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ4nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nstarQ1nstarQ1nstar
3992 + 8.*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+12.*reQ3nQ2nstarQ1nstar+12.*reQ2nQ1nstarQ1nstar
3993 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
3994 - 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+24.*dMult)
3995 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3996 five3n1n2n1n1n = (reQ3nQ1nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar
3997 - reQ3nQ1nQ2nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar
3998 - (2.*dMult-13.)*reQ3nQ2nstarQ1nstar+7.*reQ2nQ1nstarQ1nstar
3999 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4000 + 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4001 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4002 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
489d5531 4003 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4004 - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
b84464d3 4005 + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4006 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4007 // Average 5-particle correlations for single event:
489d5531 4008 fIntFlowCorrelationsAllEBE->SetBinContent(19,five2n1n1n1n1n);
4009 fIntFlowCorrelationsAllEBE->SetBinContent(20,five2n2n2n1n1n);
4010 fIntFlowCorrelationsAllEBE->SetBinContent(21,five3n1n2n1n1n);
b84464d3 4011 fIntFlowCorrelationsAllEBE->SetBinContent(22,five4n1n1n1n1n);
4012 // Average 5-particle correlations for all events:
489d5531 4013 fIntFlowCorrelationsAllPro->Fill(18.5,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4014 fIntFlowCorrelationsAllPro->Fill(19.5,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4015 fIntFlowCorrelationsAllPro->Fill(20.5,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 4016 fIntFlowCorrelationsAllPro->Fill(21.5,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4017 // Average 5-particle correlations vs M for all events:
3435cacb 4018 if(fCalculateAllCorrelationsVsM)
4019 {
3842bdcd 4020 fIntFlowCorrelationsAllVsMPro[18]->Fill(dMultiplicityBin,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4021 fIntFlowCorrelationsAllVsMPro[19]->Fill(dMultiplicityBin,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4022 fIntFlowCorrelationsAllVsMPro[20]->Fill(dMultiplicityBin,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4023 fIntFlowCorrelationsAllVsMPro[21]->Fill(dMultiplicityBin,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4024 }
489d5531 4025 } // end of if(dMult>4)
4026
4027 // 6-particle:
b84464d3 4028 Double_t six1n1n1n1n1n1n = 0.; // <cos(n(phi1+phi2+phi3-phi4-phi5-phi6))>
4029 Double_t six2n2n1n1n1n1n = 0.; // <cos(n(2*phi1+2*phi2-phi3-phi4-phi5-phi6))>
4030 Double_t six3n1n1n1n1n1n = 0.; // <cos(n(3*phi1+phi2-phi3-phi4-phi5-phi6))>
4031 Double_t six2n1n1n2n1n1n = 0.; // <cos(n(2*phi1+phi2+phi3-2*phi4-phi5-phi6))>
489d5531 4032 if(dMult>5)
4033 {
b84464d3 4034 six1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)-6.*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4035 + 4.*reQ3nQ1nstarQ1nstarQ1nstar-12.*reQ3nQ2nstarQ1nstar+18.*(dMult-4.)*reQ2nQ1nstarQ1nstar
4036 + 9.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4037 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-9.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4038 - 9.*(dMult-4.)*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4039 + 18.*(dMult*dMult-7.*dMult+10.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4040 - 6.*dMult*(dMult*dMult-9.*dMult+20.))
4041 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4042 six2n1n1n2n1n1n = (dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4043 - 4.*reQ2nQ1nQ1nstarQ1nstarQ1nstar-2.*reQ2nQ2nQ2nstarQ1nstarQ1nstar
4044 + 4.*reQ4nQ2nstarQ1nstarQ1nstar+4.*reQ3nQ1nQ2nstarQ2nstar+4.*reQ3nQ1nstarQ1nstarQ1nstar
4045 - 8.*reQ4nQ3nstarQ1nstar-4.*reQ4nQ2nstarQ2nstar+4.*(2.*dMult-13.)*reQ3nQ2nstarQ1nstar
4046 + 2.*(7.*dMult-34.)*reQ2nQ1nstarQ1nstar+4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4047 - 4.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4048 + 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4049 + pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+(2.*dMult*dMult-27.*dMult+76.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4050 - (dMult-12.)*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4051 + 4.*(dMult*dMult-15.*dMult+34.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4052 - 2.*dMult*(dMult*dMult-17.*dMult+60.))
4053 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4054 six2n2n1n1n1n1n = (reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ1nstarQ1nstarQ1nstarQ1nstar
4055 - 8.*reQ2nQ1nQ1nstarQ1nstarQ1nstar+8.*reQ3nQ1nstarQ1nstarQ1nstar+6.*reQ4nQ2nstarQ1nstarQ1nstar
4056 + 8.*reQ3nQ1nQ2nstarQ2nstar-40.*reQ3nQ2nstarQ1nstar-8.*reQ4nQ3nstarQ1nstar-9.*reQ4nQ2nstarQ2nstar
4057 + 24.*(dMult-4.)*reQ2nQ1nstarQ1nstar+24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4058 + 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+16.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4059 + 3.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-12.*(2.*dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4060 + 12.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-48.*(dMult-3.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4061 + 24.*dMult*(dMult-5.))
4062 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4063 six3n1n1n1n1n1n = (reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ3nQ1nQ2nstarQ1nstarQ1nstar+6.*reQ4nQ2nstarQ1nstarQ1nstar
4064 - reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-4.*reQ2nQ1nQ1nstarQ1nstarQ1nstar+3.*reQ3nQ1nQ2nstarQ2nstar
4065 - 4.*(dMult-5.)*reQ3nQ1nstarQ1nstarQ1nstar-14.*reQ4nQ3nstarQ1nstar
4066 - 3.*reQ4nQ2nstarQ2nstar+4.*(3.*dMult-17.)*reQ3nQ2nstarQ1nstar+12.*(dMult-6.)*reQ2nQ1nstarQ1nstar
4067 + 12.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4068 + 8.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4069 + 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4070 - 12.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-48.*(dMult-3.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4071 + 12.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)+24.*dMult*(dMult-5.))
4072 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4073 // Average 6-particle correlations for single event:
489d5531 4074 fIntFlowCorrelationsAllEBE->SetBinContent(24,six1n1n1n1n1n1n);
4075 fIntFlowCorrelationsAllEBE->SetBinContent(25,six2n1n1n2n1n1n);
4076 fIntFlowCorrelationsAllEBE->SetBinContent(26,six2n2n1n1n1n1n);
4077 fIntFlowCorrelationsAllEBE->SetBinContent(27,six3n1n1n1n1n1n);
b84464d3 4078 // Average 6-particle correlations for all events:
489d5531 4079 fIntFlowCorrelationsAllPro->Fill(23.5,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4080 fIntFlowCorrelationsAllPro->Fill(24.5,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4081 fIntFlowCorrelationsAllPro->Fill(25.5,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4082 fIntFlowCorrelationsAllPro->Fill(26.5,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
b84464d3 4083 // Average 6-particle correlations vs M for all events:
3435cacb 4084 if(fCalculateAllCorrelationsVsM)
4085 {
3842bdcd 4086 fIntFlowCorrelationsAllVsMPro[23]->Fill(dMultiplicityBin,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4087 fIntFlowCorrelationsAllVsMPro[24]->Fill(dMultiplicityBin,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4088 fIntFlowCorrelationsAllVsMPro[25]->Fill(dMultiplicityBin,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4089 fIntFlowCorrelationsAllVsMPro[26]->Fill(dMultiplicityBin,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
3435cacb 4090 }
b84464d3 4091 // Store separetately <6>:
489d5531 4092 fIntFlowCorrelationsEBE->SetBinContent(3,six1n1n1n1n1n1n); // <6>
b84464d3 4093 // Testing other multiplicity weights:
489d5531 4094 Double_t mWeight6p = 0.;
df23c5ae 4095 if(fMultiplicityWeight->Contains("combinations"))
489d5531 4096 {
4097 mWeight6p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.);
df23c5ae 4098 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 4099 {
4100 mWeight6p = 1.;
df23c5ae 4101 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 4102 {
4103 mWeight6p = dMult;
4104 }
489d5531 4105 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(3,mWeight6p); // eW_<6>
4106 fIntFlowCorrelationsPro->Fill(2.5,six1n1n1n1n1n1n,mWeight6p);
b40a910e 4107 fIntFlowSquaredCorrelationsPro->Fill(2.5,six1n1n1n1n1n1n*six1n1n1n1n1n1n,mWeight6p);
4108 if(fCalculateCumulantsVsM)
4109 {
3842bdcd 4110 fIntFlowCorrelationsVsMPro[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n,mWeight6p);
4111 fIntFlowSquaredCorrelationsVsMPro[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n*six1n1n1n1n1n1n,mWeight6p);
d9e6d8bb 4112 }
4113 if(fStoreControlHistograms)
4114 {
4115 fCorrelation2468VsMult[2]->Fill(dMultiplicityBin,six1n1n1n1n1n1n);
4116 }
489d5531 4117 } // end of if(dMult>5)
4118
4119 // 7-particle:
b84464d3 4120 Double_t seven2n1n1n1n1n1n1n = 0.; // <cos(n(2*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
489d5531 4121 if(dMult>6)
4122 {
b84464d3 4123 seven2n1n1n1n1n1n1n = (reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-4.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)
4124 - reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-2.*reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar
4125 + 9.*reQ2nQ2nQ2nstarQ1nstarQ1nstar+20.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4126 + 2.*reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-8.*(dMult-8.)*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4127 - 18.*reQ4nQ2nstarQ1nstarQ1nstar-14.*reQ3nQ1nQ2nstarQ2nstar
4128 + 8.*(dMult-7.)*reQ3nQ1nstarQ1nstarQ1nstar+28.*reQ4nQ3nstarQ1nstar
4129 + 12.*reQ4nQ2nstarQ2nstar-8.*(5.*dMult-31.)*reQ3nQ2nstarQ1nstar
4130 + 12.*(dMult*dMult-15.*dMult+46.)*reQ2nQ1nstarQ1nstar
4131 - 16.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4132 - 6.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4133 - 3.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4134 + 12.*(2.*dMult-13.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4135 - 12.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+16.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4136 - 12.*(dMult-8.)*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4137 + 12.*(3.*dMult-14.)*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)
4138 - 24.*(3.*dMult-7.)*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4139 + 24.*dMult*(dMult-5.)*(dMult-6.))
4140 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.));
4141 // Average 7-particle correlations for single event:
4142 fIntFlowCorrelationsAllEBE->SetBinContent(29,seven2n1n1n1n1n1n1n);
4143 // Average 7-particle correlations for all events:
4144 fIntFlowCorrelationsAllPro->Fill(28.5,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4145 *(dMult-4.)*(dMult-5.)*(dMult-6.));
4146 // Average 7-particle correlations vs M for all events:
3435cacb 4147 if(fCalculateAllCorrelationsVsM)
4148 {
3842bdcd 4149 fIntFlowCorrelationsAllVsMPro[28]->Fill(dMultiplicityBin,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
b84464d3 4150 *(dMult-4.)*(dMult-5.)*(dMult-6.));
3435cacb 4151 }
489d5531 4152 } // end of if(dMult>6)
4153
4154 // 8-particle:
b84464d3 4155 Double_t eight1n1n1n1n1n1n1n1n = 0.; // <cos(n(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
489d5531 4156 if(dMult>7)
b84464d3 4157 {
4158 eight1n1n1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),4.)-12.*reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar
4159 + 16.*reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar+6.*reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar
4160 - 12.*reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-36.*reQ2nQ2nQ2nstarQ1nstarQ1nstar
4161 - 96.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4162 + 72.*reQ4nQ2nstarQ1nstarQ1nstar+48.*reQ3nQ1nQ2nstarQ2nstar
4163 - 64.*(dMult-6.)*reQ3nQ1nstarQ1nstarQ1nstar
4164 + 96.*(dMult-6.)*reQ2nQ1nQ1nstarQ1nstarQ1nstar
4165 - 96.*reQ4nQ3nstarQ1nstar-36.*reQ4nQ2nstarQ2nstar
4166 + 192.*(dMult-6.)*reQ3nQ2nstarQ1nstar
4167 - 144.*(dMult-7.)*(dMult-4.)*reQ2nQ1nstarQ1nstar
4168 + 64.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4169 - 144.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4170 + 72.*(dMult-7.)*(dMult-4.)*(pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
4171 - 96.*(dMult-7.)*(dMult-6.)*(dMult-2.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4172 + 36.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4173 + 9.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4174 - 64.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4175 + 36.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4176 - 16.*(dMult-6.)*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)
4177 + 24.*dMult*(dMult-7.)*(dMult-6.)*(dMult-5.))
4178 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4179 // Average 8-particle correlations for single event:
4180 fIntFlowCorrelationsAllEBE->SetBinContent(31,eight1n1n1n1n1n1n1n1n);
4181 // Average 8-particle correlations for all events:
4182 fIntFlowCorrelationsAllPro->Fill(30.5,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
4183 *(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4184 // Average 8-particle correlations vs M for all events:
3435cacb 4185 if(fCalculateAllCorrelationsVsM)
4186 {
3842bdcd 4187 fIntFlowCorrelationsAllVsMPro[30]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
b84464d3 4188 *(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
4189 }
4190 // Store separetately <8>:
489d5531 4191 fIntFlowCorrelationsEBE->SetBinContent(4,eight1n1n1n1n1n1n1n1n); // <8>
b84464d3 4192 // Testing other multiplicity weights:
489d5531 4193 Double_t mWeight8p = 0.;
df23c5ae 4194 if(fMultiplicityWeight->Contains("combinations"))
489d5531 4195 {
4196 mWeight8p = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.);
df23c5ae 4197 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 4198 {
4199 mWeight8p = 1.;
df23c5ae 4200 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 4201 {
4202 mWeight8p = dMult;
b84464d3 4203 }
489d5531 4204 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(4,mWeight8p); // eW_<8>
b40a910e 4205 fIntFlowCorrelationsPro->Fill(3.5,eight1n1n1n1n1n1n1n1n,mWeight8p);
4206 fIntFlowSquaredCorrelationsPro->Fill(3.5,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n,mWeight8p);
4207 if(fCalculateCumulantsVsM)
4208 {
3842bdcd 4209 fIntFlowCorrelationsVsMPro[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n,mWeight8p);
4210 fIntFlowSquaredCorrelationsVsMPro[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n*eight1n1n1n1n1n1n1n1n,mWeight8p);
d9e6d8bb 4211 }
4212 if(fStoreControlHistograms)
4213 {
4214 fCorrelation2468VsMult[3]->Fill(dMultiplicityBin,eight1n1n1n1n1n1n1n1n);
4215 }
489d5531 4216 } // end of if(dMult>7)
4217
b84464d3 4218 // EXTRA correlations for v3{5} study:
8ed4edc7 4219 // 4-particle:
b84464d3 4220 Double_t four4n2n3n3n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
8ed4edc7 4221 if(dMult>3.)
4222 {
11d3e40e 4223 four4n2n3n3n = (reQ4nQ2nQ3nstarQ3nstar-reQ6nQ4nstarQ2nstar-reQ6nQ3nstarQ3nstar
4224 - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar
4225 + (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4226 + 2.*(2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4227 + (pow(dReQ1n,2.)+pow(dImQ1n,2.))-3.*dMult))
b84464d3 4228 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
8ed4edc7 4229 fIntFlowCorrelationsAllPro->Fill(32.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4230 // Average 4-particle correlations vs M for all events:
3435cacb 4231 if(fCalculateAllCorrelationsVsM)
4232 {
3842bdcd 4233 fIntFlowCorrelationsAllVsMPro[32]->Fill(dMultiplicityBin,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
3435cacb 4234 }
11d3e40e 4235 } // end of if(dMult>3.)
8ed4edc7 4236
4237 // 5-particle:
b84464d3 4238 Double_t five3n3n2n2n2n = 0.; // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
8ed4edc7 4239 if(dMult>4.)
4240 {
b84464d3 4241 five3n3n2n2n2n = (reQ3nQ3nQ2nstarQ2nstarQ2nstar-reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ4nQ2nQ3nstarQ3nstar
4242 - 6.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ6nQ3nstarQ3nstar+3.*reQ6nQ4nstarQ2nstar
4243 + 6.*reQ4nQ3nstarQ1nstar+6.*reQ4nQ2nstarQ2nstar
4244 + 12.*reQ3nQ2nstarQ1nstar+6.*reQ2nQ1nstarQ1nstar
11d3e40e 4245 - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.))
4246 + 3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4247 + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4248 + 9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4249 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
b84464d3 4250 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4251 fIntFlowCorrelationsAllPro->Fill(33.5,five3n3n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4252 if(fCalculateAllCorrelationsVsM)
4253 {
3842bdcd 4254 fIntFlowCorrelationsAllVsMPro[33]->Fill(dMultiplicityBin,five3n3n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
3435cacb 4255 }
11d3e40e 4256 } // end of if(dMult>4.)
8ed4edc7 4257
b84464d3 4258 // EXTRA correlations for Teaney-Yan study:
4259 // 2-particle:
4260 Double_t two5n5n = 0.; // <cos(5n(phi1-phi2))>
4261 Double_t two6n6n = 0.; // <cos(6n(phi1-phi2))>
4262 if(dMult>1)
4263 {
4264 two5n5n = (pow(dReQ5n,2.)+pow(dImQ5n,2.)-dMult)/(dMult*(dMult-1.));
4265 two6n6n = (pow(dReQ6n,2.)+pow(dImQ6n,2.)-dMult)/(dMult*(dMult-1.));
4266 // Average 2-particle correlations for all events:
4267 fIntFlowCorrelationsAllPro->Fill(34.5,two5n5n,dMult*(dMult-1.));
4268 fIntFlowCorrelationsAllPro->Fill(35.5,two6n6n,dMult*(dMult-1.));
4269 if(fCalculateAllCorrelationsVsM)
4270 {
3842bdcd 4271 fIntFlowCorrelationsAllVsMPro[34]->Fill(dMultiplicityBin,two5n5n,dMult*(dMult-1.));
4272 fIntFlowCorrelationsAllVsMPro[35]->Fill(dMultiplicityBin,two6n6n,dMult*(dMult-1.));
b84464d3 4273 }
4274 } // end of if(dMult>1)
4275
4276 // 3-particle:
4277 Double_t three5n3n2n = 0.; // <cos(n(5*phi1-3*phi2-2*phi3)>
4278 Double_t three5n4n1n = 0.; // <cos(n(5*phi1-4*phi2-1*phi3)>
4279 Double_t three6n3n3n = 0.; // <cos(n(6*phi1-3*phi2-3*phi3)>
4280 Double_t three6n4n2n = 0.; // <cos(n(6*phi1-4*phi2-2*phi3)>
4281 Double_t three6n5n1n = 0.; // <cos(n(6*phi1-5*phi2-1*phi3)>
4282 if(dMult>2)
4283 {
4284 three5n3n2n = (reQ5nQ3nstarQ2nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4285 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
4286 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4287 / (dMult*(dMult-1.)*(dMult-2.));
4288 three5n4n1n = (reQ5nQ4nstarQ1nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4289 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4290 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4291 / (dMult*(dMult-1.)*(dMult-2.));
4292 three6n3n3n = (reQ6nQ3nstarQ3nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4293 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*dMult)
4294 / (dMult*(dMult-1.)*(dMult-2.));
4295 three6n4n2n = (reQ6nQ4nstarQ2nstar-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4296 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4297 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4298 / (dMult*(dMult-1.)*(dMult-2.));
4299 three6n5n1n = (reQ6nQ5nstarQ1nstar-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4300 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))
4301 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4302 / (dMult*(dMult-1.)*(dMult-2.));
4303 // Average 3-particle correlations for all events:
4304 fIntFlowCorrelationsAllPro->Fill(36.5,three5n3n2n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(5*phi1-3*phi2-2*phi3)>>
4305 fIntFlowCorrelationsAllPro->Fill(37.5,three5n4n1n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(5*phi1-4*phi2-1*phi3)>>
4306 fIntFlowCorrelationsAllPro->Fill(38.5,three6n3n3n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-3*phi2-3*phi3)>>
4307 fIntFlowCorrelationsAllPro->Fill(39.5,three6n4n2n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-4*phi2-2*phi3)>>
4308 fIntFlowCorrelationsAllPro->Fill(40.5,three6n5n1n,dMult*(dMult-1.)*(dMult-2.)); // <<cos(n(6*phi1-5*phi2-1*phi3)>>
4309 if(fCalculateAllCorrelationsVsM)
4310 {
3842bdcd 4311 fIntFlowCorrelationsAllVsMPro[36]->Fill(dMultiplicityBin,three5n3n2n,dMult*(dMult-1.)*(dMult-2.));
4312 fIntFlowCorrelationsAllVsMPro[37]->Fill(dMultiplicityBin,three5n4n1n,dMult*(dMult-1.)*(dMult-2.));
4313 fIntFlowCorrelationsAllVsMPro[38]->Fill(dMultiplicityBin,three6n3n3n,dMult*(dMult-1.)*(dMult-2.));
4314 fIntFlowCorrelationsAllVsMPro[39]->Fill(dMultiplicityBin,three6n4n2n,dMult*(dMult-1.)*(dMult-2.));
4315 fIntFlowCorrelationsAllVsMPro[40]->Fill(dMultiplicityBin,three6n5n1n,dMult*(dMult-1.)*(dMult-2.));
b84464d3 4316 }
4317 } // end of if(dMult>2)
4318
4319 // 4-particle:
4320 Double_t four6n3n2n1n = 0.; // <cos(n(6*phi1-3*phi2-2*phi3-1*phi4)>
4321 Double_t four3n2n3n2n = 0.; // <cos(n(3*phi1+2*phi2-3*phi3-2*phi4)>
4322 Double_t four4n1n3n2n = 0.; // <cos(n(4*phi1+1*phi2-3*phi3-2*phi4)>
4323 Double_t four3n3n3n3n = 0.; // <cos(3n(phi1+phi2-phi3-phi4))>
4324 //Double_t four4n2n3n3n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-3*phi4)> // I already have this one above
4325 Double_t four5n1n3n3n = 0.; // <cos(n(5*phi1+1*phi2-3*phi3-3*phi4)>
4326 Double_t four4n2n4n2n = 0.; // <cos(n(4*phi1+2*phi2-4*phi3-2*phi4)>
4327 Double_t four5n1n4n2n = 0.; // <cos(n(5*phi1+1*phi2-4*phi3-2*phi4)>
4328 Double_t four5n3n1n1n = 0.; // <cos(n(5*phi1-3*phi2-1*phi3-1*phi4)>
4329 Double_t four5n2n2n1n = 0.; // <cos(n(5*phi1-2*phi2-2*phi3-1*phi4)>
403e3389 4330 Double_t four5n1n5n1n = 0.; // <cos(n(5*phi1+1*phi2-5*phi3-1*phi4)>
4331 Double_t four6n4n1n1n = 0.; // <cos(n(6*phi1-4*phi2-1*phi3-1*phi4)>
4332 Double_t four6n2n2n2n = 0.; // <cos(n(6*phi1-2*phi2-2*phi3-2*phi4)>
b84464d3 4333 if(dMult>3)
4334 {
4335 four6n3n2n1n = (reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ4nstarQ2nstar-reQ6nQ3nstarQ3nstar-reQ6nQ5nstarQ1nstar
4336 - reQ5nQ3nstarQ2nstar-reQ4nQ3nstarQ1nstar-reQ3nQ2nstarQ1nstar
4337 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+pow(dReQ5n,2.)+pow(dImQ5n,2.)
4338 + pow(dReQ4n,2.)+pow(dImQ4n,2.)+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4339 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4340 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4341 four3n2n3n2n = (dQ3nQ2nQ3nstarQ2nstar-2.*reQ5nQ3nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar
4342 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
4343 -(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
4344 + dMult*(dMult-6.))
4345 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4346 four4n1n3n2n = (reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nstarQ2nstar-reQ5nQ4nstarQ1nstar-reQ4nQ3nstarQ1nstar
4347 - reQ4nQ2nstarQ2nstar-reQ3nQ2nstarQ1nstar-reQ2nQ1nstarQ1nstar
4348 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4349 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4350 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4351 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4352 four3n3n3n3n = (2.*dMult*(dMult-3.)+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ3n,2.)
4353 + pow(dImQ3n,2.))-2.*reQ6nQ3nstarQ3nstar+(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4354 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
4355 //four4n2n3n3n = ; // I already have this one above
4356 four5n1n3n3n = (reQ5nQ1nQ3nstarQ3nstar-reQ6nQ5nstarQ1nstar-reQ6nQ3nstarQ3nstar-2.*reQ5nQ3nstarQ2nstar
4357 - 2.*reQ3nQ2nstarQ1nstar+pow(dReQ6n,2.)+pow(dImQ6n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4358 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4359 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4360 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4361 four4n2n4n2n = (dQ4nQ2nQ4nstarQ2nstar-2.*reQ6nQ4nstarQ2nstar-2.*reQ4nQ2nstarQ2nstar)
4362 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4363 - ((dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4364 + (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
4365 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
4366 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
4367 four5n1n4n2n = (reQ5nQ1nQ4nstarQ2nstar-reQ6nQ5nstarQ1nstar-reQ6nQ4nstarQ2nstar-reQ5nQ4nstarQ1nstar
4368 - reQ5nQ3nstarQ2nstar-reQ4nQ3nstarQ1nstar-reQ2nQ1nstarQ1nstar+pow(dReQ6n,2.)+pow(dImQ6n,2.)
4369 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4370 + pow(dReQ3n,2.)+pow(dImQ3n,2.)+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4371 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4372 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4373 four5n3n1n1n = (reQ5nQ3nstarQ1nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar-reQ5nQ3nstarQ2nstar-2.*reQ4nQ3nstarQ1nstar
4374 - reQ2nQ1nstarQ1nstar+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4375 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
4376 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4377 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4378 four5n2n2n1n = (reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ4nstarQ1nstar-2.*reQ5nQ3nstarQ2nstar-reQ4nQ2nstarQ2nstar
4379 - 2.*reQ3nQ2nstarQ1nstar+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
4380 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4381 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
4382 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4383 four5n1n5n1n = (dQ5nQ1nQ5nstarQ1nstar-2.*reQ6nQ5nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar
4384 + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4385 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.))
53884472 4386 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4387
4388 // TBI: Recursive formula needed:
403e3389 4389 four6n4n1n1n = (reQ6nQ4nstarQ1nstarQ1nstar
4390 - dMult*(dMult-1.)*(dMult-2.)*(three2n1n1n+2.*three5n4n1n+2.*three6n5n1n+three6n4n2n)
4391 - dMult*(dMult-1.)*(2.*two1n1n+1.*two4n4n+1.*two6n6n+1.*two2n2n+2.*two5n5n)
4392 - 1.*dMult)
4393 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
53884472 4394
403e3389 4395 four6n2n2n2n = (reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ6nQ4nstarQ2nstar-3.*reQ4nQ2nstarQ2nstar
4396 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4397 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult)
4398 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4399 // Average 4-particle correlations for all events:
4400 fIntFlowCorrelationsAllPro->Fill(41.5,four6n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4401 fIntFlowCorrelationsAllPro->Fill(42.5,four3n2n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4402 fIntFlowCorrelationsAllPro->Fill(43.5,four4n1n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4403 fIntFlowCorrelationsAllPro->Fill(44.5,four3n3n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4404 //fIntFlowCorrelationsAllPro->Fill(45.5,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); // I already have this one above
4405 fIntFlowCorrelationsAllPro->Fill(46.5,four5n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4406 fIntFlowCorrelationsAllPro->Fill(47.5,four4n2n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4407 fIntFlowCorrelationsAllPro->Fill(48.5,four5n1n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4408 fIntFlowCorrelationsAllPro->Fill(49.5,four5n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4409 fIntFlowCorrelationsAllPro->Fill(50.5,four5n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4410 fIntFlowCorrelationsAllPro->Fill(51.5,four5n1n5n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
403e3389 4411 fIntFlowCorrelationsAllPro->Fill(58.5,four6n4n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4412 fIntFlowCorrelationsAllPro->Fill(59.5,four6n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4413 if(fCalculateAllCorrelationsVsM)
4414 {
3842bdcd 4415 fIntFlowCorrelationsAllVsMPro[41]->Fill(dMultiplicityBin,four6n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4416 fIntFlowCorrelationsAllVsMPro[42]->Fill(dMultiplicityBin,four3n2n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4417 fIntFlowCorrelationsAllVsMPro[43]->Fill(dMultiplicityBin,four4n1n3n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4418 fIntFlowCorrelationsAllVsMPro[44]->Fill(dMultiplicityBin,four3n3n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4419 //fIntFlowCorrelationsAllVsMPro[45]->Fill(dMultiplicityBin,four4n2n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4420 fIntFlowCorrelationsAllVsMPro[46]->Fill(dMultiplicityBin,four5n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4421 fIntFlowCorrelationsAllVsMPro[47]->Fill(dMultiplicityBin,four4n2n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4422 fIntFlowCorrelationsAllVsMPro[48]->Fill(dMultiplicityBin,four5n1n4n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4423 fIntFlowCorrelationsAllVsMPro[49]->Fill(dMultiplicityBin,four5n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4424 fIntFlowCorrelationsAllVsMPro[50]->Fill(dMultiplicityBin,four5n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4425 fIntFlowCorrelationsAllVsMPro[51]->Fill(dMultiplicityBin,four5n1n5n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4426 fIntFlowCorrelationsAllVsMPro[58]->Fill(dMultiplicityBin,four6n4n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
4427 fIntFlowCorrelationsAllVsMPro[59]->Fill(dMultiplicityBin,four6n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
b84464d3 4428 }
4429 } // end of if(dMult>3)
4430
4431 // 5-particle:
4432 Double_t five3n3n3n2n1n = 0.; // <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
4433 Double_t five4n2n3n2n1n = 0.; // <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
4434 Double_t five3n2n3n1n1n = 0.; // <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
4435 Double_t five3n2n2n2n1n = 0.; // <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
4436 Double_t five5n1n3n2n1n = 0.; // <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
403e3389 4437 Double_t five6n2n2n1n1n = 0.; // <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5)>
4438 Double_t five4n1n1n3n3n = 0.; // <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5)>
b84464d3 4439 if(dMult>4)
4440 {
4441 five3n3n3n2n1n = (reQ3nQ3nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar
4442 + reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+3.*reQ6nQ3nstarQ3nstar+4.*reQ5nQ3nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar
4443 - 2.*(dMult-6.)*reQ3nQ2nstarQ1nstar-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4444 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4445 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4446 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(3.*dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4447 - pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4448 + 2.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4449 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4450 five4n2n3n2n1n = (reQ4nQ2nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
4451 - reQ4nQ2nQ3nstarQ3nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar
4452 - reQ3nQ1nQ2nstarQ2nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4453 + 3.*reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ5nQ4nstarQ1nstar
4454 + 3.*reQ5nQ3nstarQ2nstar-(dMult-7.)*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+7.*reQ3nQ2nstarQ1nstar
4455 + 4.*reQ2nQ1nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4456 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4457 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4458 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4459 + 2.*(dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+(dMult-12.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4460 - 2.*dMult*(dMult-12.))
4461 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4462 five3n2n3n1n1n = (reQ3nQ2nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-2.*reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nstarQ1nstarQ1nstar
4463 - 2.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ5nQ4nstarQ1nstar+3.*reQ5nQ3nstarQ2nstar+6.*reQ4nQ3nstarQ1nstar
4464 + 2.*reQ4nQ2nstarQ2nstar+9.*reQ3nQ2nstarQ1nstar-(dMult-8.)*reQ2nQ1nstarQ1nstar
4465 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4466 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4467 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
4468 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-12.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4469 + 2.*(dMult-9.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
4470 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4471 five3n2n2n2n1n = (reQ3nQ2nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
4472 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+reQ5nQ4nstarQ1nstar
4473 + 4.*reQ5nQ3nstarQ2nstar+reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar-2.*(dMult-6.)*reQ3nQ2nstarQ1nstar
4474 + 4.*reQ2nQ1nstarQ1nstar-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4475 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4476 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4477 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4478 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
4479 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4480 five5n1n3n2n1n = (reQ5nQ1nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ3nstarQ3nstar
4481 - reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
4482 + 3.*reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+4.*reQ5nQ4nstarQ1nstar
4483 - (dMult-7.)*reQ5nQ3nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+6.*reQ3nQ2nstarQ1nstar
4484 + 3.*reQ2nQ1nstarQ1nstar-(pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4485 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4486 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4487 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4488 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4489 + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4490 - 2.*dMult*(dMult-12.))
e1d101a6 4491 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
53884472 4492 // Peter Jochumzsen:
4493 five6n2n2n1n1n = (reQ6nQ2nstarQ2nstarQ1nstarQ1nstar
4494 - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.)
4495 - 14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.)
4496 - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.)
4497 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)
4498 - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
4499 - 6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.)
4500 + 2.*reQ2nQ1nstarQ1nstar + 8.*reQ3nQ2nstarQ1nstar
4501 + 5.*reQ6nQ4nstarQ2nstar - reQ6nQ4nstarQ1nstarQ1nstar
4502 + 2.*reQ6nQ3nstarQ3nstar - reQ6nQ2nstarQ2nstarQ2nstar
4503 + 4.*reQ4nQ2nstarQ2nstar - 2.*reQ4nQ2nstarQ1nstarQ1nstar
4504 + 2.*reQ5nQ4nstarQ1nstar - 2.*reQ5nQ2nstarQ2nstarQ1nstar
4505 + 4.*reQ4nQ3nstarQ1nstar + 4.*reQ5nQ3nstarQ2nstar
4506 + 4.*reQ6nQ5nstarQ1nstar - 4.*reQ6nQ3nstarQ2nstarQ1nstar + 24.*dMult)
e1d101a6 4507 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4508 // Peter Jochumzsen:
4509 five4n1n1n3n3n = (reQ4nQ1nQ1nQ3nstarQ3nstar-16.*pow(dReQ1n,2.)-16.*pow(dImQ1n,2.)
4510 - 10.*pow(dReQ2n,2.)-10.*pow(dImQ2n,2.)-12.*pow(dReQ3n,2.)-12.*pow(dImQ3n,2.)
4511 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)-4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
4512 - 2.*pow(dReQ6n,2.)-2.*pow(dImQ6n,2.)+6.*reQ2nQ1nstarQ1nstar
4513 - 1.*reQ6nQ4nstarQ1nstarQ1nstar-1.*reQ4nQ2nQ3nstarQ3nstar
4514 + 1.*reQ6nQ4nstarQ2nstar-2.*reQ5nQ1nQ3nstarQ3nstar
4515 + 2.*reQ4nQ2nstarQ2nstar+4.*reQ4nQ3nstarQ1nstar
4516 - 2.*reQ3nQ1nstarQ1nstarQ1nstar+10.*reQ3nQ2nstarQ1nstar
4517 + 2.*reQ6nQ5nstarQ1nstar+2.*reQ6nQ3nstarQ3nstar
4518 - 4.*reQ4nQ1nQ3nstarQ2nstar+4.*reQ5nQ4nstarQ1nstar
4519 + 4.*reQ5nQ3nstarQ2nstar + 24.*dMult)
4520 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4521 // Average 5-particle correlations for all events:
4522 fIntFlowCorrelationsAllPro->Fill(52.5,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4523 fIntFlowCorrelationsAllPro->Fill(53.5,five4n2n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4524 fIntFlowCorrelationsAllPro->Fill(54.5,five3n2n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4525 fIntFlowCorrelationsAllPro->Fill(55.5,five3n2n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4526 fIntFlowCorrelationsAllPro->Fill(56.5,five5n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4527 fIntFlowCorrelationsAllPro->Fill(60.5,five6n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4528 fIntFlowCorrelationsAllPro->Fill(61.5,five4n1n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4529 if(fCalculateAllCorrelationsVsM)
4530 {
3842bdcd 4531 fIntFlowCorrelationsAllVsMPro[52]->Fill(dMultiplicityBin,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4532 fIntFlowCorrelationsAllVsMPro[53]->Fill(dMultiplicityBin,five4n2n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4533 fIntFlowCorrelationsAllVsMPro[54]->Fill(dMultiplicityBin,five3n2n3n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4534 fIntFlowCorrelationsAllVsMPro[55]->Fill(dMultiplicityBin,five3n2n2n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4535 fIntFlowCorrelationsAllVsMPro[56]->Fill(dMultiplicityBin,five5n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4536 fIntFlowCorrelationsAllVsMPro[60]->Fill(dMultiplicityBin,five6n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
4537 fIntFlowCorrelationsAllVsMPro[61]->Fill(dMultiplicityBin,five4n1n1n3n3n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
e1d101a6 4538 }
4539 } // end of if(dMult>4)
4540
4541 // 6-particle:
4542 Double_t six3n2n1n3n2n1n = 0.; // <cos(n(3*phi1+2*phi2+1*phi3-3*phi4-2*phi5-1*phi6)>
4543 Double_t six3n3n2n2n1n1n = 0.; // <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-1*phi5-1*phi6)>
4544 if(dMult>5.)
4545 {
4546 six3n2n1n3n2n1n = (dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar-2.*reQ3nQ3nQ3nstarQ2nstarQ1nstar
4547 - 2.*reQ3nQ2nQ2nstarQ2nstarQ1nstar-2.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4548 - 2.*reQ3nQ2nQ3nstarQ1nstarQ1nstar-2.*reQ4nQ2nQ3nstarQ2nstarQ1nstar
4549 - 2.*reQ5nQ1nQ3nstarQ2nstarQ1nstar+4.*reQ6nQ3nstarQ2nstarQ1nstar
4550 + 2.*reQ5nQ1nQ4nstarQ2nstar+2.*reQ5nQ1nQ3nstarQ3nstar
4551 + 2.*reQ4nQ2nQ3nstarQ3nstar+6.*reQ4nQ1nQ3nstarQ2nstar
4552 + 2.*reQ5nQ3nstarQ1nstarQ1nstar+2.*reQ5nQ2nstarQ2nstarQ1nstar
4553 + 6.*reQ3nQ1nQ2nstarQ2nstar+2.*reQ4nQ2nstarQ1nstarQ1nstar
4554 - 4.*reQ6nQ5nstarQ1nstar-4.*reQ6nQ4nstarQ2nstar-6.*reQ5nQ4nstarQ1nstar
4555 - 4.*reQ6nQ3nstarQ3nstar+2.*(dMult-11.)*reQ5nQ3nstarQ2nstar
4556 + 2.*(dMult-13.)*reQ4nQ3nstarQ1nstar-8.*reQ4nQ2nstarQ2nstar
4557 + 2.*(5.*dMult-32.)*reQ3nQ2nstarQ1nstar+2.*reQ3nQ1nstarQ1nstarQ1nstar
4558 + 2.*(dMult-13.)*reQ2nQ1nstarQ1nstar
4559 - (dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4560 + (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4561 + (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4562 - (dMult-11.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4563 - (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4564 + 4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-(dMult-12.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4565 - (dMult-16.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)
4566 + (dMult*dMult-19.*dMult+68.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4567 + (dMult*dMult-19.*dMult+72.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4568 + pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4569 + (dMult*dMult-20.*dMult+80.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
4570 - dMult*(dMult-12.)*(dMult-10.))
4571 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4572
4573 // Peter Jochumzsen:
4574 six3n3n2n2n1n1n = (reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar
4575 + (80.-16.*dMult)*pow(dReQ1n,2.)+(80.-16.*dMult)*pow(dImQ1n,2.)
4576 + (78.-16.*dMult)*pow(dReQ2n,2.)+(78.-16.*dMult)*pow(dImQ2n,2.)
4577 + (72.-16.*dMult)*pow(dReQ3n,2.)+(72.-16.*dMult)*pow(dImQ3n,2.)
4578 + 14.*pow(dReQ4n,2.)+14.*pow(dImQ4n,2.)
4579 + 8.*pow(dReQ5n,2.)+8.*pow(dImQ5n,2.)
4580 + 6.*pow(dReQ6n,2.)+6.*pow(dImQ6n,2.)
4581 + 1.*reQ6nQ2nstarQ2nstarQ2nstar - 1.*reQ6nQ2nstarQ2nstarQ1nstarQ1nstar
4582 - 76.*reQ3nQ2nstarQ1nstar + 4.*reQ3nQ1nstarQ1nstarQ1nstar
4583 - 8.*reQ3nQ2nstarQ1nstar + 8.*dQ2nQ1nQ2nstarQ1nstar
4584 + 4.*reQ5nQ2nstarQ2nstarQ1nstar - 2.*reQ6nQ3nstarQ3nstar
4585 + 4.*reQ6nQ3nstarQ2nstarQ1nstar - 4.*reQ5nQ4nstarQ1nstar
4586 + 16.*dMult*reQ3nQ2nstarQ1nstar - 2.*reQ4nQ2nstarQ2nstar
4587 - 4.*reQ3nQ3nQ3nstarQ2nstarQ1nstar -8.*reQ4nQ3nstarQ1nstar
4588 - 10.*reQ4nQ2nstarQ2nstar + 4.*reQ4nQ2nstarQ1nstarQ1nstar
4589 - 12.*reQ4nQ3nstarQ1nstar + 8.*dQ3nQ1nQ3nstarQ1nstar
4590 + 8.*reQ3nQ1nQ2nstarQ2nstar - 4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar
4591 + 5.*reQ4nQ2nQ3nstarQ3nstar+2.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.)
4592 + 4.*reQ5nQ1nQ3nstarQ3nstar+2.*pow(pow(dReQ3n,2.)+pow(dImQ3n,2.),2.)
4593 - 6.*reQ6nQ3nstarQ3nstar - 14.*reQ2nQ1nstarQ1nstar
4594 - 1.*reQ3nQ3nQ2nstarQ2nstarQ2nstar-4.*reQ3nQ2nQ2nstarQ2nstarQ1nstar
4595 - 1.*reQ4nQ1nQ1nQ3nstarQ3nstar-8.*reQ5nQ3nstarQ2nstar
4596 + 2.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.) - 10.*reQ2nQ1nstarQ1nstar
4597 - 4.*reQ6nQ5nstarQ1nstar-5.*reQ6nQ4nstarQ2nstar
4598 + 1.*reQ6nQ4nstarQ1nstarQ1nstar-8.*reQ5nQ3nstarQ2nstar
4599 + 4.*reQ4nQ1nQ3nstarQ2nstar+8.*dQ3nQ2nQ3nstarQ2nstar
4600 - 120.*dMult + 16.*dMult*dMult)
4601 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4602
4603 // Average 6-particle correlations for all events:
4604 fIntFlowCorrelationsAllPro->Fill(57.5,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4605 fIntFlowCorrelationsAllPro->Fill(62.5,six3n3n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4606 if(fCalculateAllCorrelationsVsM)
4607 {
3842bdcd 4608 fIntFlowCorrelationsAllVsMPro[57]->Fill(dMultiplicityBin,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
4609 fIntFlowCorrelationsAllVsMPro[62]->Fill(dMultiplicityBin,six3n3n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
e1d101a6 4610 }
4611 } // end of if(dMult>5.)
4612
4613} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations()
4614
4615//=====================================================================================================
4616
4617void AliFlowAnalysisWithQCumulants::CalculateMixedHarmonics()
4618{
4619 // Calculate in this method all multi-particle azimuthal correlations in mixed harmonics.
4620 // (Remark: For completeness sake, we also calculate here again correlations in the same harmonic.)
4621
4622 // a) Access Q-vectors and multiplicity of current event;
c10259fb 4623 // b) Determine multiplicity weights and fill some histos;
e1d101a6 4624 // c) Calculate 2-p correlations;
4625 // d) Calculate 3-p correlations;
4626 // e) Calculate 4-p correlations;
4627 // f) Calculate 5-p correlations;
4628 // g) Calculate 6-p correlations;
4629 // h) Calculate 7-p correlations;
c10259fb 4630 // i) Calculate 8-p correlations.
e1d101a6 4631
4632 // a) Access Q-vectors and multiplicity of current event:
4633 // Multiplicity of an event:
4634 Double_t dMult = (*fSpk)(0,0);
4635 // Real parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
4636 Double_t dReQ1n = (*fReQ)(0,0);
4637 Double_t dReQ2n = (*fReQ)(1,0);
4638 Double_t dReQ3n = (*fReQ)(2,0);
4639 Double_t dReQ4n = (*fReQ)(3,0);
4640 Double_t dReQ5n = (*fReQ)(4,0);
4641 Double_t dReQ6n = (*fReQ)(5,0);
4642 Double_t dReQ7n = (*fReQ)(6,0);
4643 Double_t dReQ8n = (*fReQ)(7,0);
4644 Double_t dReQ9n = (*fReQ)(8,0);
4645 Double_t dReQ10n = (*fReQ)(9,0);
4646 Double_t dReQ11n = (*fReQ)(10,0);
4647 Double_t dReQ12n = (*fReQ)(11,0);
4648 // Imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n, 4n, 5n and 6n:
4649 Double_t dImQ1n = (*fImQ)(0,0);
4650 Double_t dImQ2n = (*fImQ)(1,0);
4651 Double_t dImQ3n = (*fImQ)(2,0);
4652 Double_t dImQ4n = (*fImQ)(3,0);
4653 Double_t dImQ5n = (*fImQ)(4,0);
4654 Double_t dImQ6n = (*fImQ)(5,0);
4655 Double_t dImQ7n = (*fImQ)(6,0);
4656 Double_t dImQ8n = (*fImQ)(7,0);
4657 Double_t dImQ9n = (*fImQ)(8,0);
4658 Double_t dImQ10n = (*fImQ)(9,0);
4659 Double_t dImQ11n = (*fImQ)(10,0);
4660 Double_t dImQ12n = (*fImQ)(11,0);
c10259fb 4661 // All mixed correlators:
4662 Double_t allMixedCorrelators[139] = {0.};
e1d101a6 4663
4664 // Real parts of expressions involving various combinations of Q-vectors which appears
4665 // simultaneously in several equations for multiparticle correlations bellow:
4666 // Re[Q_{2n}Q_{n}^*Q_{n}^*]
4667 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n;
4668 // Re[Q_{6n}Q_{3n}^*Q_{3n}^*]
4669 Double_t reQ6nQ3nstarQ3nstar = pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n;
4670 // Re[Q_{4n}Q_{2n}^*Q_{2n}^*]
4671 Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
4672 // Re[Q_{4n}Q_{3n}^*Q_{n}^*]
4673 Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
4674 // Re[Q_{3n}Q_{2n}^*Q_{n}^*]
4675 Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
4676 + dImQ3n*dImQ2n*dReQ1n;
4677 // Re[Q_{5n}Q_{3n}^*Q_{2n}^*]
4678 Double_t reQ5nQ3nstarQ2nstar = dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
4679 + dImQ5n*dImQ2n*dReQ3n;
4680 // Re[Q_{5n}Q_{4n}^*Q_{1n}^*]
4681 Double_t reQ5nQ4nstarQ1nstar = dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
4682 + dImQ5n*dImQ4n*dReQ1n;
4683 // Re[Q_{6n}Q_{5n}^*Q_{1n}^*]
4684 Double_t reQ6nQ5nstarQ1nstar = dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
4685 + dImQ6n*dImQ5n*dReQ1n;
4686 // Re[Q_{6n}Q_{4n}^*Q_{2n}^*]
4687 Double_t reQ6nQ4nstarQ2nstar = dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
4688 + dImQ6n*dImQ4n*dReQ2n;
4689 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{2n}^*]
4690 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
4691 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
4692 // Re[Q_{3n}Q_{n}^*Q_{n}^*Q_{n}^*]
4693 Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
4694 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
4695 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
4696 Double_t reQ6nQ2nstarQ2nstarQ2nstar = dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
4697 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3);
4698 // Re[Q_{4n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4699 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
4700 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);
4701 // Re[Q_{4n}Q_{2n}^*Q_{3n}^*Q_{3n}^*]
4702 Double_t reQ4nQ2nQ3nstarQ3nstar = (dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
4703 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n;
4704 // Re[Q_{4n}Q_{n}Q_{3n}^*Q_{2n}^*]
4705 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
4706 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
4707 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
4708 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
4709
4710 // Re[Q_{5n}Q_{n}Q_{4n}^*Q_{2n}^*]
4711 Double_t reQ5nQ1nQ4nstarQ2nstar = dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
4712 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
4713 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
4714 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n;
4715 // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{3n}^*]
4716 Double_t reQ5nQ1nQ3nstarQ3nstar = dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
4717 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
4718 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n;
4719 // Re[Q_{5n}Q_{3n}^*Q_{n}^*Q_{n}^*]
4720 Double_t reQ5nQ3nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
4721 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
4722 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n;
4723 // Re[Q_{5n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
4724 Double_t reQ5nQ2nstarQ2nstarQ1nstar = -pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
4725 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
4726 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n;
4727 // Re[Q_{6n}Q_{4n}^*Q_{n}^*Q_{n}^*]
4728 Double_t reQ6nQ4nstarQ1nstarQ1nstar = -pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
4729 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
4730 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n;
4731 /*// |Q_{2n}|^2 |Q_{n}|^2
4732 Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
4733 // |Q_{4n}|^2 |Q_{2n}|^2
4734 Double_t dQ4nQ2nQ4nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.));
4735 // |Q_{3n}|^2 |Q_{2n}|^2
4736 Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.));
4737 // |Q_{5n}|^2 |Q_{n}|^2
4738 Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
4739 // |Q_{3n}|^2 |Q_{n}|^2
4740 Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));*/
4741 // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*]
4742 /*Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
4743 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));*/
4744 // Re[Q_{2n}Q_{2n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4745 /*Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
4746 * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);*/
4747 /*// Re[Q_{4n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4748 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
4749 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
4750 - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;*/
4751 // Re[Q_{3n}Q_{n}Q_{2n}^*Q_{n}^*Q_{n}^*]
4752 /*Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
4753 * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
4754 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);*/
4755 // Re[Q_{6n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4756 Double_t reQ6nQ3nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
4757 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
4758 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
4759 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n;
4760 // Re[Q_{3n}Q_{3n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4761 /*Double_t reQ3nQ3nQ3nstarQ2nstarQ1nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
4762 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
4763 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);*/
4764 /*// Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{2n}^*]
4765 Double_t reQ3nQ3nQ2nstarQ2nstarQ2nstar = pow(dReQ2n,3.)*pow(dReQ3n,2.)
4766 - 3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
4767 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n
4768 - 2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n-pow(dReQ2n,3.)*pow(dImQ3n,2.)
4769 + 3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.);*/
4770 // Re[Q_{4n}Q_{2n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4771 /*Double_t reQ4nQ2nQ3nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
4772 * (dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
4773 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n);*/
4774 // Re[Q_{3n}Q_{2n}Q_{3n}^*Q_{n}^*Q_{n}^*]
4775 /*Double_t reQ3nQ2nQ3nstarQ1nstarQ1nstar = -(pow(dImQ3n,2.)+pow(dReQ3n,2.))
4776 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n);*/
4777 // Re[Q_{3n}Q_{2n}Q_{2n}^*Q_{2n}^*Q_{n}^*]
4778 /*Double_t reQ3nQ2nQ2nstarQ2nstarQ1nstar = (pow(dImQ2n,2.)+pow(dReQ2n,2.))
4779 * (dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
4780 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n);*/
4781/* // Re[Q_{5n}Q_{n}Q_{3n}^*Q_{2n}^*Q_{n}^*]
4782 Double_t reQ5nQ1nQ3nstarQ2nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
4783 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
4784 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
4785 */
4786 /*
4787 // Re[Q_{2n}Q_{2n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4788 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (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 * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
4791 - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n);
4792 // Re[Q_{3n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4793 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
4794 * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
4795 + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
4796 */
4797 // |Q_{2n}|^2 |Q_{n}|^4
4798 //Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.);
4799 /*
4800 // |Q_{3n}|^2 |Q_{2n}|^2 |Q_{n}|^2
4801 Double_t dQ3nQ2nQ1nQ3nstarQ2nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
4802 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
4803 // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*]
4804 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
4805 * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
4806 + 2.*dReQ1n*dImQ1n*dImQ2n);
4807 */
4808 // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*]
4809 /*Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
4810 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
4811 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
4812 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
4813 + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
4814 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n
4815 - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
4816 */
4817 // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*]
4818 /*
4819 Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
4820 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
4821 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
4822 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n
4823 + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
4824 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
4825 + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n;*/
4826 /*
4827 // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*]
4828 Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n
4829 - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n
4830 + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n
4831 + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n
4832 - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n
4833 + dImQ1n*dImQ2n*dImQ3n);
4834 */
4835
c10259fb 4836 // b) Determine multiplicity weights and fill some histos:
e1d101a6 4837 Double_t d2pMultiplicityWeight = 0.; // weight for <2>_{...} to get <<2>>_{...}
4838 Double_t d3pMultiplicityWeight = 0.; // weight for <3>_{...} to get <<3>>_{...}
4839 Double_t d4pMultiplicityWeight = 0.; // weight for <4>_{...} to get <<4>>_{...}
4840 Double_t d5pMultiplicityWeight = 0.; // weight for <5>_{...} to get <<5>>_{...}
c10259fb 4841 Double_t d6pMultiplicityWeight = 0.; // weight for <6>_{...} to get <<6>>_{...}
e1d101a6 4842 Double_t d7pMultiplicityWeight = 0.; // weight for <7>_{...} to get <<7>>_{...}
c10259fb 4843 Double_t d8pMultiplicityWeight = 0.; // weight for <8>_{...} to get <<8>>_{...}
df23c5ae 4844 if(fMultiplicityWeight->Contains("combinations")) // default multiplicity weight
e1d101a6 4845 {
4846 d2pMultiplicityWeight = dMult*(dMult-1.);
4847 d3pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.);
4848 d4pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.);
4849 d5pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.);
c10259fb 4850 d6pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.);
e1d101a6 4851 d7pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.);
c10259fb 4852 d8pMultiplicityWeight = dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.);
df23c5ae 4853 } else if(fMultiplicityWeight->Contains("unit"))
e1d101a6 4854 {
4855 d2pMultiplicityWeight = 1.;
4856 d3pMultiplicityWeight = 1.;
4857 d4pMultiplicityWeight = 1.;
4858 d5pMultiplicityWeight = 1.;
c10259fb 4859 d6pMultiplicityWeight = 1.;
e1d101a6 4860 d7pMultiplicityWeight = 1.;
c10259fb 4861 d8pMultiplicityWeight = 1.;
df23c5ae 4862 } else if(fMultiplicityWeight->Contains("multiplicity"))
e1d101a6 4863 {
4864 d2pMultiplicityWeight = dMult;
4865 d3pMultiplicityWeight = dMult;
4866 d4pMultiplicityWeight = dMult;
4867 d5pMultiplicityWeight = dMult;
c10259fb 4868 d6pMultiplicityWeight = dMult;
e1d101a6 4869 d7pMultiplicityWeight = dMult;
c10259fb 4870 d8pMultiplicityWeight = dMult;
4871 }
4872 for(Int_t p=0;p<=1;p++) // power (0=linear,1=quadratic)
4873 {
4874 fMixedHarmonicEventWeights[p]->Fill(0.5,pow(dMult,p+1));
4875 fMixedHarmonicEventWeights[p]->Fill(1.5,pow(d2pMultiplicityWeight,p+1));
4876 fMixedHarmonicEventWeights[p]->Fill(2.5,pow(d3pMultiplicityWeight,p+1));
4877 fMixedHarmonicEventWeights[p]->Fill(3.5,pow(d4pMultiplicityWeight,p+1));
4878 fMixedHarmonicEventWeights[p]->Fill(4.5,pow(d5pMultiplicityWeight,p+1));
4879 fMixedHarmonicEventWeights[p]->Fill(5.5,pow(d6pMultiplicityWeight,p+1));
4880 fMixedHarmonicEventWeights[p]->Fill(6.5,pow(d7pMultiplicityWeight,p+1));
4881 fMixedHarmonicEventWeights[p]->Fill(7.5,pow(d8pMultiplicityWeight,p+1));
4882 } // end of for(Int_t p=0;p<=1;p++) // power (0=linear,1=quadratic)
4883 fMixedHarmonicProductOfEventWeights->Fill(0.5,0.5,dMult*dMult);
4884 fMixedHarmonicProductOfEventWeights->Fill(0.5,1.5,dMult*d2pMultiplicityWeight);
4885 fMixedHarmonicProductOfEventWeights->Fill(0.5,2.5,dMult*d3pMultiplicityWeight);
4886 fMixedHarmonicProductOfEventWeights->Fill(0.5,3.5,dMult*d4pMultiplicityWeight);
4887 fMixedHarmonicProductOfEventWeights->Fill(0.5,4.5,dMult*d5pMultiplicityWeight);
4888 fMixedHarmonicProductOfEventWeights->Fill(0.5,5.5,dMult*d6pMultiplicityWeight);
4889 fMixedHarmonicProductOfEventWeights->Fill(0.5,6.5,dMult*d7pMultiplicityWeight);
4890 fMixedHarmonicProductOfEventWeights->Fill(0.5,7.5,dMult*d8pMultiplicityWeight);
4891 fMixedHarmonicProductOfEventWeights->Fill(1.5,1.5,d2pMultiplicityWeight*d2pMultiplicityWeight);
4892 fMixedHarmonicProductOfEventWeights->Fill(1.5,2.5,d2pMultiplicityWeight*d3pMultiplicityWeight);
4893 fMixedHarmonicProductOfEventWeights->Fill(1.5,3.5,d2pMultiplicityWeight*d4pMultiplicityWeight);
4894 fMixedHarmonicProductOfEventWeights->Fill(1.5,4.5,d2pMultiplicityWeight*d5pMultiplicityWeight);
4895 fMixedHarmonicProductOfEventWeights->Fill(1.5,5.5,d2pMultiplicityWeight*d6pMultiplicityWeight);
4896 fMixedHarmonicProductOfEventWeights->Fill(1.5,6.5,d2pMultiplicityWeight*d7pMultiplicityWeight);
4897 fMixedHarmonicProductOfEventWeights->Fill(1.5,7.5,d2pMultiplicityWeight*d8pMultiplicityWeight);
4898 fMixedHarmonicProductOfEventWeights->Fill(2.5,2.5,d3pMultiplicityWeight*d3pMultiplicityWeight);
4899 fMixedHarmonicProductOfEventWeights->Fill(2.5,3.5,d3pMultiplicityWeight*d4pMultiplicityWeight);
4900 fMixedHarmonicProductOfEventWeights->Fill(2.5,4.5,d3pMultiplicityWeight*d5pMultiplicityWeight);
4901 fMixedHarmonicProductOfEventWeights->Fill(2.5,5.5,d3pMultiplicityWeight*d6pMultiplicityWeight);
4902 fMixedHarmonicProductOfEventWeights->Fill(2.5,6.5,d3pMultiplicityWeight*d7pMultiplicityWeight);
4903 fMixedHarmonicProductOfEventWeights->Fill(2.5,7.5,d3pMultiplicityWeight*d8pMultiplicityWeight);
4904 fMixedHarmonicProductOfEventWeights->Fill(3.5,3.5,d4pMultiplicityWeight*d4pMultiplicityWeight);
4905 fMixedHarmonicProductOfEventWeights->Fill(3.5,4.5,d4pMultiplicityWeight*d5pMultiplicityWeight);
4906 fMixedHarmonicProductOfEventWeights->Fill(3.5,5.5,d4pMultiplicityWeight*d6pMultiplicityWeight);
4907 fMixedHarmonicProductOfEventWeights->Fill(3.5,6.5,d4pMultiplicityWeight*d7pMultiplicityWeight);
4908 fMixedHarmonicProductOfEventWeights->Fill(3.5,7.5,d4pMultiplicityWeight*d8pMultiplicityWeight);
4909 fMixedHarmonicProductOfEventWeights->Fill(4.5,4.5,d5pMultiplicityWeight*d5pMultiplicityWeight);
4910 fMixedHarmonicProductOfEventWeights->Fill(4.5,5.5,d5pMultiplicityWeight*d6pMultiplicityWeight);
4911 fMixedHarmonicProductOfEventWeights->Fill(4.5,6.5,d5pMultiplicityWeight*d7pMultiplicityWeight);
4912 fMixedHarmonicProductOfEventWeights->Fill(4.5,7.5,d5pMultiplicityWeight*d8pMultiplicityWeight);
4913 fMixedHarmonicProductOfEventWeights->Fill(5.5,5.5,d6pMultiplicityWeight*d6pMultiplicityWeight);
4914 fMixedHarmonicProductOfEventWeights->Fill(5.5,6.5,d6pMultiplicityWeight*d7pMultiplicityWeight);
4915 fMixedHarmonicProductOfEventWeights->Fill(5.5,7.5,d6pMultiplicityWeight*d8pMultiplicityWeight);
4916 fMixedHarmonicProductOfEventWeights->Fill(6.5,6.5,d7pMultiplicityWeight*d7pMultiplicityWeight);
4917 fMixedHarmonicProductOfEventWeights->Fill(6.5,7.5,d7pMultiplicityWeight*d8pMultiplicityWeight);
4918 fMixedHarmonicProductOfEventWeights->Fill(7.5,7.5,d8pMultiplicityWeight*d8pMultiplicityWeight);
4919
e1d101a6 4920 // c) Calculate 2-p correlations:
4921 Double_t two1n1n = 0.; // <2>_{1n|1n} = <cos(1n(phi1-phi2))>
4922 Double_t two2n2n = 0.; // <2>_{2n|2n} = <cos(2n(phi1-phi2))>
4923 Double_t two3n3n = 0.; // <2>_{3n|3n} = <cos(3n(phi1-phi2))>
4924 Double_t two4n4n = 0.; // <2>_{4n|4n} = <cos(4n(phi1-phi2))>
4925 Double_t two5n5n = 0.; // <2>_{5n|5n} = <cos(5n(phi1-phi2))>
4926 Double_t two6n6n = 0.; // <2>_{6n|6n} = <cos(6n(phi1-phi2))>
4927 if(dMult>1.)
4928 {
4929 two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.));
4930 two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.));
4931 two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.));
4932 two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.));
4933 two5n5n = (pow(dReQ5n,2.)+pow(dImQ5n,2.)-dMult)/(dMult*(dMult-1.));
4934 two6n6n = (pow(dReQ6n,2.)+pow(dImQ6n,2.)-dMult)/(dMult*(dMult-1.));
4935 f2pCorrelations->Fill(0.5,two1n1n,d2pMultiplicityWeight);
4936 f2pCorrelations->Fill(1.5,two2n2n,d2pMultiplicityWeight);
4937 f2pCorrelations->Fill(2.5,two3n3n,d2pMultiplicityWeight);
4938 f2pCorrelations->Fill(3.5,two4n4n,d2pMultiplicityWeight);
4939 f2pCorrelations->Fill(4.5,two5n5n,d2pMultiplicityWeight);
4940 f2pCorrelations->Fill(5.5,two6n6n,d2pMultiplicityWeight);
c10259fb 4941 allMixedCorrelators[0]=two1n1n;
4942 allMixedCorrelators[1]=two2n2n;
4943 allMixedCorrelators[2]=two3n3n;
4944 allMixedCorrelators[3]=two4n4n;
4945 allMixedCorrelators[4]=two5n5n;
4946 allMixedCorrelators[5]=two6n6n;
e1d101a6 4947 } // end of if(dMult>1.)
4948
4949 // d) Calculate 3-p correlations:
4950 // d1) Two distinct harmonics (3):
4951 Double_t three2n1n1n = 0.; // <3>_{2n|1n,1n} = <cos(n(2*phi1-1*phi2-1*phi3))>
4952 Double_t three4n2n2n = 0.; // <3>_{4n|2n,2n} = <cos(n(4*phi1-2*phi2-2*phi3))>
4953 Double_t three6n3n3n = 0.; // <3>_{6n|3n,3n} = <cos(n(6*phi1-3*phi2-3*phi3))>
4954 // d2) Three distinct harmonics (6):
4955 Double_t three3n2n1n = 0.; // <3>_{3n|2n,1n} = <cos(n(3*phi1-2*phi2-1*phi3))>
4956 Double_t three4n3n1n = 0.; // <3>_{4n|3n,1n} = <cos(n(4*phi1-3*phi2-1*phi3))>
4957 Double_t three5n3n2n = 0.; // <3>_{5n|3n,2n} = <cos(n(5*phi1-3*phi2-2*phi3))>
4958 Double_t three5n4n1n = 0.; // <3>_{5n|4n,1n} = <cos(n(5*phi1-4*phi2-1*phi3))>
4959 Double_t three6n4n2n = 0.; // <3>_{6n|4n,2n} = <cos(n(6*phi1-4*phi2-2*phi3))>
4960 Double_t three6n5n1n = 0.; // <3>_{6n|5n,1n} = <cos(n(6*phi1-5*phi2-1*phi3))>
4961 if(dMult>2.)
4962 {
4963 three2n1n1n = (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n
4964 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4965 / (dMult*(dMult-1.)*(dMult-2.));
4966 three4n2n2n = (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
4967 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
4968 / (dMult*(dMult-1.)*(dMult-2.));
4969 three6n3n3n = (reQ6nQ3nstarQ3nstar
c10259fb 4970 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
e1d101a6 4971 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*dMult)
4972 / (dMult*(dMult-1.)*(dMult-2.));
4973 three3n2n1n = (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
4974 + dImQ3n*dImQ2n*dReQ1n-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4975 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4976 / (dMult*(dMult-1.)*(dMult-2.));
4977 three4n3n1n = (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
4978 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
4979 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4980 / (dMult*(dMult-1.)*(dMult-2.));
4981 three5n3n2n = (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n
4982 + dImQ5n*dImQ2n*dReQ3n-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4983 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
4984 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4985 / (dMult*(dMult-1.)*(dMult-2.));
4986 three5n4n1n = (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n
4987 + dImQ5n*dImQ4n*dReQ1n-(pow(dReQ5n,2.)+pow(dImQ5n,2.))
4988 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))
4989 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4990 / (dMult*(dMult-1.)*(dMult-2.));
4991 three6n4n2n = (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
4992 + dImQ6n*dImQ4n*dReQ2n-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4993 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
4994 / (dMult*(dMult-1.)*(dMult-2.));
4995 three6n5n1n = (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n
4996 + dImQ6n*dImQ5n*dReQ1n-(pow(dReQ6n,2.)+pow(dImQ6n,2.))
4997 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))
4998 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
4999 / (dMult*(dMult-1.)*(dMult-2.));
5000 f3pCorrelations->Fill(0.5,three2n1n1n,d3pMultiplicityWeight);
5001 f3pCorrelations->Fill(1.5,three4n2n2n,d3pMultiplicityWeight);
5002 f3pCorrelations->Fill(2.5,three6n3n3n,d3pMultiplicityWeight);
5003 //f3pCorrelations->Fill(3.5,0.,d3pMultiplicityWeight); // empty TBI
5004 f3pCorrelations->Fill(4.5,three3n2n1n,d3pMultiplicityWeight);
5005 f3pCorrelations->Fill(5.5,three4n3n1n,d3pMultiplicityWeight);
5006 f3pCorrelations->Fill(6.5,three5n3n2n,d3pMultiplicityWeight);
5007 f3pCorrelations->Fill(7.5,three5n4n1n,d3pMultiplicityWeight);
5008 f3pCorrelations->Fill(8.5,three6n4n2n,d3pMultiplicityWeight);
5009 f3pCorrelations->Fill(9.5,three6n5n1n,d3pMultiplicityWeight);
c10259fb 5010 allMixedCorrelators[6]=three2n1n1n;
5011 allMixedCorrelators[7]=three4n2n2n;
5012 allMixedCorrelators[8]=three6n3n3n;
5013 allMixedCorrelators[9]=three3n2n1n;
5014 allMixedCorrelators[10]=three4n3n1n;
5015 allMixedCorrelators[11]=three5n3n2n;
5016 allMixedCorrelators[12]=three5n4n1n;
5017 allMixedCorrelators[13]=three6n4n2n;
5018 allMixedCorrelators[14]=three6n5n1n;
e1d101a6 5019 } // end of if(dMult>2.)
5020
5021 // e) Calculate 4-p correlations:
5022 // e1) Single harmonic (6):
5023 Double_t four1n1n1n1n = 0.; // <4>_{1n,1n|1n,1n} = <cos(1*n(phi1+phi2-phi3-phi4))>
5024 Double_t four2n2n2n2n = 0.; // <4>_{2n,2n|2n,2n} = <cos(2*n(phi1+phi2-phi3-phi4))>
5025 Double_t four3n3n3n3n = 0.; // <4>_{3n,3n|3n,3n} = <cos(3*n(phi1+phi2-phi3-phi4))>
5026 Double_t four4n4n4n4n = 0.; // <4>_{4n,4n|4n,4n} = <cos(4*n(phi1+phi2-phi3-phi4))>
5027 Double_t four5n5n5n5n = 0.; // <4>_{5n,5n|5n,5n} = <cos(5*n(phi1+phi2-phi3-phi4))>
5028 Double_t four6n6n6n6n = 0.; // <4>_{6n,6n|6n,6n} = <cos(6*n(phi1+phi2-phi3-phi4))>
5029 // e2) "Standard candles" (15):
5030 Double_t four2n1n2n1n = 0.; // <4>_{2n,1n|2n,1n} = <cos(n(2*phi1+1*phi2-2*phi3-1*phi4))>
5031 Double_t four3n1n3n1n = 0.; // <4>_{3n,1n|3n,1n} = <cos(n(3*phi1+1*phi2-3*phi3-1*phi4))>
5032 Double_t four3n2n3n2n = 0.; // <4>_{3n,2n|3n,2n} = <cos(n(3*phi1+2*phi2-3*phi3-2*phi4))>
5033 Double_t four4n1n4n1n = 0.; // <4>_{4n,1n|4n,1n} = <cos(n(4*phi1+1*phi2-4*phi3-1*phi4))>
5034 Double_t four4n2n4n2n = 0.; // <4>_{4n,2n|4n,2n} = <cos(n(4*phi1+2*phi2-4*phi3-2*phi4))>
5035 Double_t four4n3n4n3n = 0.; // <4>_{4n,3n|4n,3n} = <cos(n(4*phi1+3*phi2-4*phi3-3*phi4))>
5036 Double_t four5n1n5n1n = 0.; // <4>_{5n,1n|5n,1n} = <cos(n(5*phi1+1*phi2-5*phi3-1*phi4))>
5037 Double_t four5n2n5n2n = 0.; // <4>_{5n,2n|5n,2n} = <cos(n(5*phi1+2*phi2-5*phi3-2*phi4))>
5038 Double_t four5n3n5n3n = 0.; // <4>_{5n,3n|5n,3n} = <cos(n(5*phi1+3*phi2-5*phi3-3*phi4))>
5039 Double_t four5n4n5n4n = 0.; // <4>_{5n,4n|5n,4n} = <cos(n(5*phi1+4*phi2-5*phi3-4*phi4))>
5040 Double_t four6n1n6n1n = 0.; // <4>_{6n,1n|6n,1n} = <cos(n(6*phi1+1*phi2-6*phi3-1*phi4))>
5041 Double_t four6n2n6n2n = 0.; // <4>_{6n,2n|6n,2n} = <cos(n(6*phi1+2*phi2-6*phi3-2*phi4))>
5042 Double_t four6n3n6n3n = 0.; // <4>_{6n,3n|6n,3n} = <cos(n(6*phi1+3*phi2-6*phi3-3*phi4))>
5043 Double_t four6n4n6n4n = 0.; // <4>_{6n,4n|6n,4n} = <cos(n(6*phi1+4*phi2-6*phi3-4*phi4))>
5044 Double_t four6n5n6n5n = 0.; // <4>_{6n,5n|6n,5n} = <cos(n(6*phi1+5*phi2-6*phi3-5*phi4))>
5045 // e3) Two distinct harmonics (2):
5046 Double_t four3n1n1n1n = 0.; // <4>_{3n|1n,1n,1n} = <cos(n(3*phi1-1*phi2-1*phi3-1*phi4))>
5047 Double_t four6n2n2n2n = 0.; // <4>_{6n|2n,2n,2n} = <cos(n(6*phi1-2*phi2-2*phi3-2*phi4))>
5048 // e4) Three distinct harmonics (10):
5049 Double_t four3n1n2n2n = 0.; // <4>_{3n,1n|2n,2n} = <cos(n(3*phi1+1*phi2-2*phi3-2*phi4))>
5050 Double_t four4n2n1n1n = 0.; // <4>_{4n|2n,1n,1n} = <cos(n(4*phi1-2*phi2-1*phi3-1*phi4))>
5051 Double_t four4n2n3n3n = 0.; // <4>_{4n,2n|3n,3n} = <cos(n(4*phi1+2*phi2-3*phi3-3*phi4))>
5052 Double_t four5n2n2n1n = 0.; // <4>_{5n|2n,2n,1n} = <cos(n(5*phi1-2*phi2-2*phi3-1*phi4))>
5053 Double_t four5n3n1n1n = 0.; // <4>_{5n|3n,1n,1n} = <cos(n(5*phi1-3*phi2-1*phi3-1*phi4))>
5054 Double_t four5n1n3n3n = 0.; // <4>_{5n,1n|3n,3n} = <cos(n(5*phi1+1*phi2-3*phi3-3*phi4))>
5055 Double_t four5n3n4n4n = 0.; // <4>_{5n,3n|4n,4n} = <cos(n(5*phi1+3*phi2-4*phi3-4*phi4))>
5056 Double_t four6n4n1n1n = 0.; // <4>_{6n|4n,1n,1n} = <cos(n(6*phi1-4*phi2-1*phi3-1*phi4))>
5057 Double_t four6n2n4n4n = 0.; // <4>_{6n,2n|4n,4n} = <cos(n(6*phi1+2*phi2-4*phi3-4*phi4))>
5058 Double_t four6n4n5n5n = 0.; // <4>_{6n,4n|5n,5n} = <cos(n(6*phi1+4*phi2-5*phi3-5*phi4))>
5059 // e5) Four distinct harmonics (8):
5060 Double_t four4n1n3n2n = 0.; // <4>_{4n,1n|3n,2n} = <cos(n(4*phi1+1*phi2-3*phi3-2*phi4))>
5061 Double_t four5n1n4n2n = 0.; // <4>_{5n,1n|4n,2n} = <cos(n(5*phi1+1*phi2-4*phi3-2*phi4))>
5062 Double_t four5n2n4n3n = 0.; // <4>_{5n,2n|4n,3n} = <cos(n(5*phi1+2*phi2-4*phi3-3*phi4))>
5063 Double_t four6n1n4n3n = 0.; // <4>_{6n,1n|4n,3n} = <cos(n(6*phi1+1*phi2-4*phi3-3*phi4))>
5064 Double_t four6n1n5n2n = 0.; // <4>_{6n,1n|5n,2n} = <cos(n(6*phi1+1*phi2-5*phi3-2*phi4))>
5065 Double_t four6n3n2n1n = 0.; // <4>_{6n|3n,2n,1n} = <cos(n(6*phi1-3*phi2-2*phi3-1*phi4))>
5066 Double_t four6n2n5n3n = 0.; // <4>_{6n,2n|5n,3n} = <cos(n(6*phi1+2*phi2-5*phi3-3*phi4))>
5067 Double_t four6n3n5n4n = 0.; // <4>_{6n,3n|5n,4n} = <cos(n(6*phi1+3*phi2-5*phi3-4*phi4))>
5068 if(dMult>3.)
5069 {
5070 // Single harmonic (6):
5071 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
5072 + pow(dImQ1n,2.))-2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5073 + (pow(dReQ2n,2.)+pow(dImQ2n,2.)))
5074 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5075 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
5076 + pow(dImQ2n,2.))-2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5077 + (pow(dReQ4n,2.)+pow(dImQ4n,2.)))
5078 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5079 four3n3n3n3n = (2.*dMult*(dMult-3.)+pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ3n,2.)
5080 + pow(dImQ3n,2.))-2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5081 + (pow(dReQ6n,2.)+pow(dImQ6n,2.)))
5082 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5083 four4n4n4n4n = (2.*dMult*(dMult-3.)+pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ4n,2.)
5084 + pow(dImQ4n,2.))-2.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5085 + (pow(dReQ8n,2.)+pow(dImQ8n,2.)))
5086 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5087 four5n5n5n5n = (2.*dMult*(dMult-3.)+pow((pow(dReQ5n,2.)+pow(dImQ5n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ5n,2.)
5088 + pow(dImQ5n,2.))-2.*(pow(dReQ5n,2.)*dReQ10n+2.*dReQ5n*dImQ5n*dImQ10n-pow(dImQ5n,2.)*dReQ10n)
5089 + (pow(dReQ10n,2.)+pow(dImQ10n,2.)))
5090 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5091 four6n6n6n6n = (2.*dMult*(dMult-3.)+pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ6n,2.)
5092 + pow(dImQ6n,2.))-2.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
5093 + (pow(dReQ12n,2.)+pow(dImQ12n,2.)))
5094 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
5095 // "Standard candles" (15):
5096 four2n1n2n1n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5097 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
5098 + dImQ3n*dImQ2n*dReQ1n)-2.*(pow(dReQ1n,2.)*dReQ2n
5099 + 2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n))
5100 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5101 - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5102 + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
5103 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5104 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5105 four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5106 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5107 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5108 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5109 + pow(dReQ2n,2.)+pow(dImQ2n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5110 + dMult*(dMult-6.))
5111 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5112 four3n2n3n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5113 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5114 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5115 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5116 - (dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
5117 + dMult*(dMult-6.))
5118 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5119 four4n1n4n1n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5120 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ1n*dImQ4n+dImQ5n*dImQ1n*dReQ4n)
5121 - 2.*(dReQ3n*dReQ4n*dReQ1n+dImQ3n*dImQ4n*dReQ1n+dReQ3n*dImQ4n*dImQ1n-dImQ3n*dImQ1n*dReQ4n)
5122 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)
5123 - (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
5124 + dMult*(dMult-6.))
5125 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5126 four4n2n4n2n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5127 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
5128 + dImQ6n*dImQ4n*dReQ2n)-2.*(pow(dReQ2n,2.)*dReQ4n
5129 + 2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n))
5130 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5131 - ((dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5132 + (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-(pow(dReQ6n,2.)+pow(dImQ6n,2.)))
5133 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5134 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5135 four4n3n4n3n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5136 - 2.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ3n*dImQ4n+dImQ7n*dImQ3n*dReQ4n)
5137 - 2.*(dReQ1n*dReQ4n*dReQ3n+dImQ1n*dImQ4n*dReQ3n+dReQ1n*dImQ4n*dImQ3n-dImQ1n*dImQ3n*dReQ4n)
5138 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5139 - (dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
5140 + dMult*(dMult-6.))
5141 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5142 four5n1n5n1n = (((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5143 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5144 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5145 + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5146 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.))
5147 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5148 four5n2n5n2n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5149 - 2.*(dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ2n*dImQ5n+dImQ7n*dImQ2n*dReQ5n)
5150 - 2.*(dReQ3n*dReQ5n*dReQ2n+dImQ3n*dImQ5n*dReQ2n+dReQ3n*dImQ5n*dImQ2n-dImQ3n*dImQ2n*dReQ5n)
5151 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)
5152 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
5153 + dMult*(dMult-6.))
5154 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5155 four5n3n5n3n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5156 - 2.*(dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
5157 - 2.*(dReQ2n*dReQ5n*dReQ3n+dImQ2n*dImQ5n*dReQ3n+dReQ2n*dImQ5n*dImQ3n-dImQ2n*dImQ3n*dReQ5n)
5158 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5159 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
5160 + dMult*(dMult-6.))
5161 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5162 four5n4n5n4n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5163 - 2.*(dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ4n*dImQ5n+dImQ9n*dImQ4n*dReQ5n)
5164 - 2.*(dReQ1n*dReQ5n*dReQ4n+dImQ1n*dImQ5n*dReQ4n+dReQ1n*dImQ5n*dImQ4n-dImQ1n*dImQ4n*dReQ5n)
5165 + pow(dReQ9n,2.)+pow(dImQ9n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5166 - (dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
5167 + dMult*(dMult-6.))
5168 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5169 four6n1n6n1n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5170 - 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ1n*dImQ6n+dImQ7n*dImQ1n*dReQ6n)
5171 - 2.*(dReQ5n*dReQ6n*dReQ1n+dImQ5n*dImQ6n*dReQ1n+dReQ5n*dImQ6n*dImQ1n-dImQ5n*dImQ1n*dReQ6n)
5172 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5173 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
5174 + dMult*(dMult-6.))
5175 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5176 four6n2n6n2n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5177 - 2.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
5178 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5179 + pow(dReQ8n,2.)+pow(dImQ8n,2.)-(dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5180 + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5181 + dMult*(dMult-6.))
5182 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5183 four6n3n6n3n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5184 - 2.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n
5185 + dImQ9n*dImQ6n*dReQ3n)-2.*(pow(dReQ3n,2.)*dReQ6n
5186 + 2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n))
5187 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5188 - ((dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5189 + (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-(pow(dReQ9n,2.)+pow(dImQ9n,2.)))
5190 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5191 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
5192 four6n4n6n4n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5193 - 2.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
5194 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5195 + pow(dReQ10n,2.)+pow(dImQ10n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5196 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
5197 + dMult*(dMult-6.))
5198 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5199 four6n5n6n5n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5200 - 2.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ5n*dImQ6n+dImQ11n*dImQ5n*dReQ6n)
5201 - 2.*(dReQ1n*dReQ6n*dReQ5n+dImQ1n*dImQ6n*dReQ5n+dReQ1n*dImQ6n*dImQ5n-dImQ1n*dImQ5n*dReQ6n)
5202 + pow(dReQ11n,2.)+pow(dImQ11n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)
5203 - (dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
5204 + dMult*(dMult-6.))
5205 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5206 // Two distinct harmonics (2):
5207 four3n1n1n1n = (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
5208 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3)
5209 - 3.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5210 - 3.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5211 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5212 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5213 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5214 four6n2n2n2n = (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
5215 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3)
5216 - 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5217 - 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5218 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5219 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult)
5220 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5221 // Three distinct harmonics (10):
5222 four3n1n2n2n = ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5223 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
5224 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5225 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5226 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n))
5227 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5228 - (2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5229 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5230 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5231 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5232 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5233 four4n2n1n1n = ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5234 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n)
5235 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5236 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5237 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n))
5238 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5239 - ((pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5240 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5241 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
5242 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5243 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5244 four4n2n3n3n = ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
5245 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n
5246 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5247 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5248 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5249 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5250 + (pow(dReQ6n,2.)+pow(dImQ6n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5251 + 2.*(2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5252 + (pow(dReQ1n,2.)+pow(dImQ1n,2.))-3.*dMult))
5253 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5254 four5n2n2n1n = (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
5255 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
5256 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n
5257 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5258 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5259 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5260 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5261 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
5262 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5263 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5264 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5265 four5n3n1n1n = (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
5266 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
5267 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n
5268 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5269 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5270 - 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5271 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5272 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5273 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5274 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5275 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5276 four5n1n3n3n = (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
5277 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
5278 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n
5279 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5280 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5281 - 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5282 - 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5283 + pow(dReQ6n,2.)+pow(dImQ6n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5284 + 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5285 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5286 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5287 four5n3n4n4n = ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ5n*dReQ3n-dImQ5n*dImQ3n)
5288 + 2.*dReQ4n*dImQ4n*(dReQ5n*dImQ3n+dImQ5n*dReQ3n)
5289 - (dReQ8n*dReQ3n*dReQ5n-dReQ8n*dImQ3n*dImQ5n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
5290 - (pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5291 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5292 - 2.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
5293 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5294 + 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5295 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5296 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5297 four6n4n1n1n = (-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
5298 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
5299 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n
5300 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5301 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5302 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5303 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5304 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5305 + pow(dReQ4n,2.)+pow(dImQ4n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5306 + 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5307 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5308 four6n2n4n4n = ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
5309 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n)
5310 - (pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
5311 - (dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
5312 - 2.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n))
5313 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5314 - (2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5315 - (pow(dReQ8n,2.)+pow(dImQ8n,2.))-2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5316 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
5317 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
5318 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
5319 four6n4n5n5n = ((pow(dReQ5n,2.)-pow(dImQ5n,2.))*(dReQ6n*dReQ4n-dImQ6n*dImQ4n)
5320 + 2.*dReQ5n*dImQ5n*(dReQ6n*dImQ4n+dImQ6n*dReQ4n)
5321 - (dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
5322 - (pow(dReQ5n,2.)*dReQ10n+2.*dReQ5n*dImQ5n*dImQ10n-pow(dImQ5n,2.)*dReQ10n)
5323 - 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5324 - 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5325 + pow(dReQ10n,2.)+pow(dImQ10n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5326 + 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5327 + 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5328 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5329 // Four distinct harmonics (8):
5330 four4n1n3n2n = (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5331 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5332 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5333 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n
5334 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5335 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5336 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5337 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5338 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5339 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5340 + pow(dReQ5n,2.)+pow(dImQ5n,2.)+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5341 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5342 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5343 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5344 four5n1n4n2n = (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
5345 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
5346 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n+dImQ1n*dImQ2n*dReQ4n*dReQ5n
5347 + dReQ1n*dReQ2n*dReQ4n*dReQ5n
5348 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5349 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5350 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5351 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5352 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5353 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5354 + pow(dReQ6n,2.)+pow(dImQ6n,2.)
5355 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5356 + pow(dReQ3n,2.)+pow(dImQ3n,2.)+2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5357 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5358 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5359 four5n2n4n3n = (dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
5360 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
5361 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
5362 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n
5363 - (dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
5364 - (dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
5365 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5366 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5367 - (pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5368 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5369 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5370 + 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5371 + 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5372 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5373 four6n1n4n3n = (dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
5374 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
5375 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n+dImQ1n*dImQ3n*dReQ4n*dReQ6n
5376 + dReQ1n*dReQ3n*dReQ4n*dReQ6n
5377 - (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
5378 - (dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
5379 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5380 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5381 - (dReQ4n*dReQ1n*dReQ3n-dReQ4n*dImQ1n*dImQ3n+dImQ4n*dReQ1n*dImQ3n+dImQ4n*dImQ1n*dReQ3n)
5382 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5383 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5384 + 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5385 + pow(dReQ2n,2.)+pow(dImQ2n,2.)+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5386 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5387 four6n1n5n2n = (dImQ1n*dImQ2n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ1n*dReQ2n
5388 + dImQ2n*dImQ6n*dReQ1n*dReQ5n-dImQ1n*dImQ6n*dReQ2n*dReQ5n
5389 - dImQ2n*dImQ5n*dReQ1n*dReQ6n+dImQ1n*dImQ5n*dReQ2n*dReQ6n+dImQ1n*dImQ2n*dReQ5n*dReQ6n
5390 + dReQ1n*dReQ2n*dReQ5n*dReQ6n
5391 - (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
5392 - (dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
5393 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5394 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5395 - (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5396 - (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5397 + pow(dReQ7n,2.)+pow(dImQ7n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5398 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+pow(dReQ4n,2.)+pow(dImQ4n,2.)
5399 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5400 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5401 four6n3n2n1n = (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
5402 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
5403 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
5404 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n
5405 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5406 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5407 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5408 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5409 - (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5410 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5411 + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+pow(dReQ5n,2.)+pow(dImQ5n,2.)
5412 + pow(dReQ4n,2.)+pow(dImQ4n,2.)+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5413 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
5414 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5415 four6n2n5n3n = (dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
5416 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
5417 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n+dImQ2n*dImQ3n*dReQ5n*dReQ6n
5418 + dReQ2n*dReQ3n*dReQ5n*dReQ6n
5419 - (dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
5420 - (dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n+dImQ8n*dImQ5n*dReQ3n)
5421 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5422 - (pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
5423 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5424 - (dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5425 + pow(dReQ8n,2.)+pow(dImQ8n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5426 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5427 + 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5428 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5429 four6n3n5n4n = (dImQ3n*dImQ4n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ3n*dReQ4n
5430 + dImQ4n*dImQ6n*dReQ3n*dReQ5n-dImQ3n*dImQ6n*dReQ4n*dReQ5n
5431 - dImQ4n*dImQ5n*dReQ3n*dReQ6n+dImQ3n*dImQ5n*dReQ4n*dReQ6n+dImQ3n*dImQ4n*dReQ5n*dReQ6n
5432 + dReQ3n*dReQ4n*dReQ5n*dReQ6n
5433 - (dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
5434 - (dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ5n*dImQ4n+dImQ9n*dImQ5n*dReQ4n)
5435 - (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5436 - (dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5437 - (dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5438 - (dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
5439 + pow(dReQ9n,2.)+pow(dImQ9n,2.)+2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
5440 + 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5441 + 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+pow(dReQ2n,2.)+pow(dImQ2n,2.)
5442 + pow(dReQ1n,2.)+pow(dImQ1n,2.)-6.*dMult)
5443 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
5444 f4pCorrelations->Fill(0.5,four1n1n1n1n,d4pMultiplicityWeight);
5445 f4pCorrelations->Fill(1.5,four2n2n2n2n,d4pMultiplicityWeight);
5446 f4pCorrelations->Fill(2.5,four3n3n3n3n,d4pMultiplicityWeight);
5447 f4pCorrelations->Fill(3.5,four4n4n4n4n,d4pMultiplicityWeight);
5448 f4pCorrelations->Fill(4.5,four5n5n5n5n,d4pMultiplicityWeight);
5449 f4pCorrelations->Fill(5.5,four6n6n6n6n,d4pMultiplicityWeight);
5450 //f4pCorrelations->Fill(6.5,0.,d4pMultiplicityWeight); // empty
5451 f4pCorrelations->Fill(7.5,four2n1n2n1n,d4pMultiplicityWeight);
5452 f4pCorrelations->Fill(8.5,four3n1n3n1n,d4pMultiplicityWeight);
5453 f4pCorrelations->Fill(9.5,four3n2n3n2n,d4pMultiplicityWeight);
5454 f4pCorrelations->Fill(10.5,four4n1n4n1n,d4pMultiplicityWeight);
5455 f4pCorrelations->Fill(11.5,four4n2n4n2n,d4pMultiplicityWeight);
5456 f4pCorrelations->Fill(12.5,four4n3n4n3n,d4pMultiplicityWeight);
5457 f4pCorrelations->Fill(13.5,four5n1n5n1n,d4pMultiplicityWeight);
5458 f4pCorrelations->Fill(14.5,four5n2n5n2n,d4pMultiplicityWeight);
5459 f4pCorrelations->Fill(15.5,four5n3n5n3n,d4pMultiplicityWeight);
5460 f4pCorrelations->Fill(16.5,four5n4n5n4n,d4pMultiplicityWeight);
5461 f4pCorrelations->Fill(17.5,four6n1n6n1n,d4pMultiplicityWeight);
5462 f4pCorrelations->Fill(18.5,four6n2n6n2n,d4pMultiplicityWeight);
5463 f4pCorrelations->Fill(19.5,four6n3n6n3n,d4pMultiplicityWeight);
5464 f4pCorrelations->Fill(20.5,four6n4n6n4n,d4pMultiplicityWeight);
5465 f4pCorrelations->Fill(21.5,four6n5n6n5n,d4pMultiplicityWeight);
5466 //f4pCorrelations->Fill(22.5,0.,d4pMultiplicityWeight); // empty
5467 f4pCorrelations->Fill(23.5,four3n1n1n1n,d4pMultiplicityWeight);
5468 f4pCorrelations->Fill(24.5,four6n2n2n2n,d4pMultiplicityWeight);
5469 //f4pCorrelations->Fill(25.5,0.,d4pMultiplicityWeight); // empty
5470 f4pCorrelations->Fill(26.5,four3n1n2n2n,d4pMultiplicityWeight);
5471 f4pCorrelations->Fill(27.5,four4n2n1n1n,d4pMultiplicityWeight);
5472 f4pCorrelations->Fill(28.5,four4n2n3n3n,d4pMultiplicityWeight);
5473 f4pCorrelations->Fill(29.5,four5n2n2n1n,d4pMultiplicityWeight);
5474 f4pCorrelations->Fill(30.5,four5n3n1n1n,d4pMultiplicityWeight);
5475 f4pCorrelations->Fill(31.5,four5n1n3n3n,d4pMultiplicityWeight);
5476 f4pCorrelations->Fill(32.5,four5n3n4n4n,d4pMultiplicityWeight);
5477 f4pCorrelations->Fill(33.5,four6n4n1n1n,d4pMultiplicityWeight);
5478 f4pCorrelations->Fill(34.5,four6n2n4n4n,d4pMultiplicityWeight);
5479 f4pCorrelations->Fill(35.5,four6n4n5n5n,d4pMultiplicityWeight);
5480 //f4pCorrelations->Fill(36.5,0.,d4pMultiplicityWeight); // empty
5481 f4pCorrelations->Fill(37.5,four4n1n3n2n,d4pMultiplicityWeight);
5482 f4pCorrelations->Fill(38.5,four5n1n4n2n,d4pMultiplicityWeight);
5483 f4pCorrelations->Fill(39.5,four5n2n4n3n,d4pMultiplicityWeight);
5484 f4pCorrelations->Fill(40.5,four6n1n4n3n,d4pMultiplicityWeight);
5485 f4pCorrelations->Fill(41.5,four6n1n5n2n,d4pMultiplicityWeight);
5486 f4pCorrelations->Fill(42.5,four6n3n2n1n,d4pMultiplicityWeight);
5487 f4pCorrelations->Fill(43.5,four6n2n5n3n,d4pMultiplicityWeight);
5488 f4pCorrelations->Fill(44.5,four6n3n5n4n,d4pMultiplicityWeight);
c10259fb 5489 allMixedCorrelators[15]=four1n1n1n1n;
5490 allMixedCorrelators[16]=four2n2n2n2n;
5491 allMixedCorrelators[17]=four3n3n3n3n;
5492 allMixedCorrelators[18]=four4n4n4n4n;
5493 allMixedCorrelators[19]=four5n5n5n5n;
5494 allMixedCorrelators[20]=four6n6n6n6n;
5495 allMixedCorrelators[21]=four2n1n2n1n;
5496 allMixedCorrelators[22]=four3n1n3n1n;
5497 allMixedCorrelators[23]=four3n2n3n2n;
5498 allMixedCorrelators[24]=four4n1n4n1n;
5499 allMixedCorrelators[25]=four4n2n4n2n;
5500 allMixedCorrelators[26]=four4n3n4n3n;
5501 allMixedCorrelators[27]=four5n1n5n1n;
5502 allMixedCorrelators[28]=four5n2n5n2n;
5503 allMixedCorrelators[29]=four5n3n5n3n;
5504 allMixedCorrelators[30]=four5n4n5n4n;
5505 allMixedCorrelators[31]=four6n1n6n1n;
5506 allMixedCorrelators[32]=four6n2n6n2n;
5507 allMixedCorrelators[33]=four6n3n6n3n;
5508 allMixedCorrelators[34]=four6n4n6n4n;
5509 allMixedCorrelators[35]=four6n5n6n5n;
5510 allMixedCorrelators[36]=four3n1n1n1n;
5511 allMixedCorrelators[37]=four6n2n2n2n;
5512 allMixedCorrelators[38]=four3n1n2n2n;
5513 allMixedCorrelators[39]=four4n2n1n1n;
5514 allMixedCorrelators[40]=four4n2n3n3n;
5515 allMixedCorrelators[41]=four5n2n2n1n;
5516 allMixedCorrelators[42]=four5n3n1n1n;
5517 allMixedCorrelators[43]=four5n1n3n3n;
5518 allMixedCorrelators[44]=four5n3n4n4n;
5519 allMixedCorrelators[45]=four6n4n1n1n;
5520 allMixedCorrelators[46]=four6n2n4n4n;
5521 allMixedCorrelators[47]=four6n4n5n5n;
5522 allMixedCorrelators[48]=four4n1n3n2n;
5523 allMixedCorrelators[49]=four5n1n4n2n;
5524 allMixedCorrelators[50]=four5n2n4n3n;
5525 allMixedCorrelators[51]=four6n1n4n3n;
5526 allMixedCorrelators[52]=four6n1n5n2n;
5527 allMixedCorrelators[53]=four6n3n2n1n;
5528 allMixedCorrelators[54]=four6n2n5n3n;
5529 allMixedCorrelators[55]=four6n3n5n4n;
e1d101a6 5530 } // end of if(dMult>3.)
5531
5532 // f) Calculate 5-p correlations:
5533 // f1) "Standard candles" (30):
5534 Double_t five3n2n3n1n1n = 0.; // <5>_{3n,2n|3n,1n,1n} = <cos(n(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5))>
5535 Double_t five4n1n2n2n1n = 0.; // <5>_{4n,1n|2n,2n,1n} = <cos(n(4*phi1+1*phi2-2*phi3-2*phi4-1*phi5))>
5536 Double_t five4n2n3n2n1n = 0.; // <5>_{4n,2n|3n,2n,1n} = <cos(n(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5))>
5537 Double_t five4n3n3n2n2n = 0.; // <5>_{4n,3n|3n,2n,2n} = <cos(n(4*phi1+3*phi2-3*phi3-2*phi4-2*phi5))>
5538 Double_t five4n2n4n1n1n = 0.; // <5>_{4n,2n|4n,1n,1n} = <cos(n(4*phi1+2*phi2-4*phi3-1*phi4-1*phi5))>
5539 Double_t five4n3n4n2n1n = 0.; // <5>_{4n,3n|4n,2n,1n} = <cos(n(4*phi1+3*phi2-4*phi3-2*phi4-1*phi5))>
5540 Double_t five5n1n3n2n1n = 0.; // <5>_{5n,1n|3n,2n,1n} = <cos(n(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5))>
5541 Double_t five5n2n5n1n1n = 0.; // <5>_{5n,2n|5n,1n,1n} = <cos(n(5*phi1+2*phi2-5*phi3-1*phi4-1*phi5))>
5542 Double_t five5n2n4n2n1n = 0.; // <5>_{5n,2n|4n,2n,1n} = <cos(n(5*phi1+2*phi2-4*phi3-2*phi4-1*phi5))>
5543 Double_t five5n3n4n3n1n = 0.; // <5>_{5n,3n|4n,3n,1n} = <cos(n(5*phi1+3*phi2-4*phi3-3*phi4-1*phi5))>
5544 Double_t five5n4n4n3n2n = 0.; // <5>_{5n,4n|4n,3n,2n} = <cos(n(5*phi1+4*phi2-4*phi3-3*phi4-2*phi5))>
5545 Double_t five5n3n5n2n1n = 0.; // <5>_{5n,3n|5n,2n,1n} = <cos(n(5*phi1+3*phi2-5*phi3-2*phi4-1*phi5))>
5546 Double_t five5n4n5n2n2n = 0.; // <5>_{5n,4n|5n,2n,2n} = <cos(n(5*phi1+4*phi2-5*phi3-2*phi4-2*phi5))>
5547 Double_t five5n4n5n3n1n = 0.; // <5>_{5n,4n|5n,3n,1n} = <cos(n(5*phi1+4*phi2-5*phi3-3*phi4-1*phi5))>
5548 Double_t five6n1n3n3n1n = 0.; // <5>_{6n,1n|3n,3n,1n} = <cos(n(6*phi1+1*phi2-3*phi3-3*phi4-1*phi5))>
5549 Double_t five6n2n3n3n2n = 0.; // <5>_{6n,2n|3n,3n,2n} = <cos(n(6*phi1+2*phi2-3*phi3-3*phi4-2*phi5))>
5550 Double_t five6n1n4n2n1n = 0.; // <5>_{6n,1n|4n,2n,1n} = <cos(n(6*phi1+1*phi2-4*phi3-2*phi4-1*phi5))>
5551 Double_t five6n3n4n3n2n = 0.; // <5>_{6n,3n|4n,3n,2n} = <cos(n(6*phi1+3*phi2-4*phi3-3*phi4-2*phi5))>
5552 Double_t five6n4n4n3n3n = 0.; // <5>_{6n,4n|4n,3n,3n} = <cos(n(6*phi1+4*phi2-4*phi3-3*phi4-3*phi5))>
5553 Double_t five6n2n5n2n1n = 0.; // <5>_{6n,2n|5n,2n,1n} = <cos(n(6*phi1+2*phi2-5*phi3-2*phi4-1*phi5))>
5554 Double_t five6n3n5n3n1n = 0.; // <5>_{6n,3n|5n,3n,1n} = <cos(n(6*phi1+3*phi2-5*phi3-3*phi4-1*phi5))>
5555 Double_t five6n4n5n4n1n = 0.; // <5>_{6n,4n|5n,4n,1n} = <cos(n(6*phi1+4*phi2-5*phi3-4*phi4-1*phi5))>
5556 Double_t five6n5n5n3n3n = 0.; // <5>_{6n,5n|5n,3n,3n} = <cos(n(6*phi1+5*phi2-5*phi3-3*phi4-3*phi5))>
5557 Double_t five6n2n6n1n1n = 0.; // <5>_{6n,2n|6n,1n,1n} = <cos(n(6*phi1+2*phi2-6*phi3-1*phi4-1*phi5))>
5558 Double_t five6n3n6n2n1n = 0.; // <5>_{6n,3n|6n,2n,1n} = <cos(n(6*phi1+3*phi2-6*phi3-2*phi4-1*phi5))>
5559 Double_t five6n4n6n2n2n = 0.; // <5>_{6n,4n|6n,2n,2n} = <cos(n(6*phi1+4*phi2-6*phi3-2*phi4-2*phi5))>
5560 Double_t five6n4n6n3n1n = 0.; // <5>_{6n,4n|6n,3n,1n} = <cos(n(6*phi1+4*phi2-6*phi3-3*phi4-1*phi5))>
5561 Double_t five6n5n5n4n2n = 0.; // <5>_{6n,5n|5n,4n,2n} = <cos(n(6*phi1+5*phi2-5*phi3-4*phi4-2*phi5))>
5562 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
5563 Double_t five6n5n6n4n1n = 0.; // <5>_{6n,5n|6n,4n,1n} = <cos(n(6*phi1+5*phi2-6*phi3-4*phi4-1*phi5))>
5564 // f2) Two distinct harmonics (9):
5565 Double_t five2n1n1n1n1n = 0.; // <5>_{2n,1n|1n,1n,1n} = <cos(n(2*phi1+1*phi2-1*phi3-1*phi4-1*phi5))>
5566 Double_t five2n2n2n1n1n = 0.; // <5>_{2n,2n|2n,1n,1n} = <cos(n(2*phi1+2*phi2-2*phi3-1*phi4-1*phi5))>
5567 Double_t five3n3n2n2n2n = 0.; // <5>_{3n,3n|2n,2n,2n} = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
5568 Double_t five4n1n1n1n1n = 0.; // <5>_{4n|1n,1n,1n,1n} = <cos(n(4*phi1-1*phi2-1*phi3-1*phi4-1*phi5))>
5569 Double_t five4n2n2n2n2n = 0.; // <5>_{4n,2n|2n,2n,2n} = <cos(n(4*phi1+2*phi2-2*phi3-2*phi4-2*phi5))>
5570 Double_t five4n4n4n2n2n = 0.; // <5>_{4n,4n|4n,2n,2n} = <cos(n(4*phi1+4*phi2-4*phi3-2*phi4-2*phi5))>
5571 Double_t five6n3n3n3n3n = 0.; // <5>_{6n,3n|3n,3n,3n} = <cos(n(6*phi1+3*phi2-3*phi3-3*phi4-3*phi5))>
5572 Double_t five6n6n4n4n4n = 0.; // <5>_{6n,6n|4n,4n,4n} = <cos(n(6*phi1+6*phi2-4*phi3-4*phi4-4*phi5))>
5573 Double_t five6n6n6n3n3n = 0.; // <5>_{6n,6n|6n,3n,3n} = <cos(n(6*phi1+6*phi2-6*phi3-3*phi4-3*phi5))>
5574 // f3) Three distinct harmonics (30):
5575 Double_t five3n1n2n1n1n = 0.; // <5>_{3n,1n|2n,1n,1n} = <cos(n(3*phi1+1*phi2-2*phi3-1*phi4-1*phi5))>
5576 Double_t five3n2n2n2n1n = 0.; // <5>_{3n,2n|2n,2n,1n} = <cos(n(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5))>
5577 Double_t five3n3n3n2n1n = 0.; // <5>_{3n,3n|3n,2n,1n} = <cos(n(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5))>
5578 Double_t five4n1n3n1n1n = 0.; // <5>_{4n,1n|3n,1n,1n} = <cos(n(4*phi1+1*phi2-3*phi3-1*phi4-1*phi5))>
5579 Double_t five4n1n1n3n3n = 0.; // <5>_{4n,1n,1n|3n,3n} = <cos(n(4*phi1+1*phi2+1*phi3-3*phi4-3*phi5))>
5580 Double_t five4n3n3n3n1n = 0.; // <5>_{4n,3n|3n,3n,1n} = <cos(n(4*phi1+3*phi2-3*phi3-3*phi4-1*phi5))>
5581 Double_t five4n4n3n3n2n = 0.; // <5>_{4n,4n|3n,3n,2n} = <cos(n(4*phi1+4*phi2-3*phi3-3*phi4-2*phi5))>
5582 Double_t five4n4n4n3n1n = 0.; // <5>_{4n,4n|4n,3n,1n} = <cos(n(4*phi1+4*phi2-4*phi3-3*phi4-1*phi5))>
5583 Double_t five5n2n1n1n1n = 0.; // <5>_{5n|2n,1n,1n,1n} = <cos(n(5*phi1-2*phi2-1*phi3-1*phi4-1*phi5))>
5584 Double_t five5n1n2n2n2n = 0.; // <5>_{5n,1n|2n,2n,2n} = <cos(n(5*phi1+1*phi2-2*phi3-2*phi4-2*phi5))>
5585 Double_t five5n2n3n2n2n = 0.; // <5>_{5n,2n|3n,2n,2n} = <cos(n(5*phi1+2*phi2-3*phi3-2*phi4-2*phi5))>
5586 Double_t five5n3n3n3n2n = 0.; // <5>_{5n,3n|3n,3n,2n} = <cos(n(5*phi1+3*phi2-3*phi3-3*phi4-2*phi5))>
5587 Double_t five5n1n4n1n1n = 0.; // <5>_{5n,1n|4n,1n,1n} = <cos(n(5*phi1+1*phi2-4*phi3-1*phi4-1*phi5))>
5588 Double_t five5n4n3n3n3n = 0.; // <5>_{5n,4n|3n,3n,3n} = <cos(n(5*phi1+4*phi2-3*phi3-3*phi4-3*phi5))>
5589 Double_t five5n4n4n4n1n = 0.; // <5>_{5n,4n|4n,4n,1n} = <cos(n(5*phi1+4*phi2-4*phi3-4*phi4-1*phi5))>
5590 Double_t five5n5n4n3n3n = 0.; // <5>_{5n,5n|4n,3n,3n} = <cos(n(5*phi1+5*phi2-4*phi3-3*phi4-3*phi5))>
5591 Double_t five5n5n4n4n2n = 0.; // <5>_{5n,5n|4n,4n,2n} = <cos(n(5*phi1+5*phi2-4*phi3-4*phi4-2*phi5))>
5592 Double_t five5n5n5n3n2n = 0.; // <5>_{5n,5n|5n,3n,2n} = <cos(n(5*phi1+5*phi2-5*phi3-3*phi4-2*phi5))>
5593 Double_t five5n5n5n4n1n = 0.; // <5>_{5n,5n|5n,4n,1n} = <cos(n(5*phi1+5*phi2-5*phi3-4*phi4-1*phi5))>
5594 Double_t five6n2n2n1n1n = 0.; // <5>_{6n|2n,2n,1n,1n} = <cos(n(6*phi1-2*phi2-2*phi3-1*phi4-1*phi5))>
5595 Double_t five6n3n1n1n1n = 0.; // <5>_{6n|3n,1n,1n,1n} = <cos(n(6*phi1-3*phi2-1*phi3-1*phi4-1*phi5))>
5596 Double_t five6n1n1n4n4n = 0.; // <5>_{6n,1n,1n|4n,4n} = <cos(n(6*phi1+1*phi2+1*phi3-4*phi4-4*phi5))>
5597 Double_t five6n1n5n1n1n = 0.; // <5>_{6n,1n|5n,1n,1n} = <cos(n(6*phi1+1*phi2-5*phi3-1*phi4-1*phi5))>
5598 Double_t five6n2n4n2n2n = 0.; // <5>_{6n,2n|4n,2n,2n} = <cos(n(6*phi1+2*phi2-4*phi3-2*phi4-2*phi5))>
5599 Double_t five6n4n4n4n2n = 0.; // <5>_{6n,4n|4n,4n,2n} = <cos(n(6*phi1+4*phi2-4*phi3-4*phi4-2*phi5))>
5600 Double_t five6n2n2n5n5n = 0.; // <5>_{6n,2n,2n|5n,5n} = <cos(n(6*phi1+2*phi2+2*phi3-5*phi4-5*phi5))>
5601 Double_t five6n5n5n5n1n = 0.; // <5>_{6n,5n|5n,5n,1n} = <cos(n(6*phi1+5*phi2-5*phi3-5*phi4-1*phi5))>
5602 Double_t five6n6n5n5n2n = 0.; // <5>_{6n,6n|5n,5n,2n} = <cos(n(6*phi1+6*phi2-5*phi3-5*phi4-2*phi5))>
5603 Double_t five6n6n6n4n2n = 0.; // <5>_{6n,6n|6n,4n,2n} = <cos(n(6*phi1+6*phi2-6*phi3-4*phi4-2*phi5))>
5604 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
5605 // Four distinct harmonics (11):
5606 Double_t five5n2n3n3n1n = 0.; // <5>_{5n,2n|3n,3n,1n} = <cos(n(5*phi1+2*phi2-3*phi3-3*phi4-1*phi5))>
5607 Double_t five5n1n1n4n3n = 0.; // <5>_{5n,1n,1n|4n,3n} = <cos(n(5*phi1+1*phi2+1*phi3-4*phi4-3*phi5))>
5608 Double_t five5n3n4n2n2n = 0.; // <5>_{5n,3n|4n,2n,2n} = <cos(n(5*phi1+3*phi2-4*phi3-2*phi4-2*phi5))>
5609 Double_t five5n2n1n4n4n = 0.; // <5>_{5n,2n,1n|4n,4n} = <cos(n(5*phi1+2*phi2+1*phi3-4*phi4-4*phi5))>
5610 Double_t five6n1n3n2n2n = 0.; // <5>_{6n,1n|3n,2n,2n} = <cos(n(6*phi1+1*phi2-3*phi3-2*phi4-2*phi5))>
5611 Double_t five6n3n4n4n1n = 0.; // <5>_{6n,3n|4n,4n,1n} = <cos(n(6*phi1+3*phi2-4*phi3-4*phi4-1*phi5))>
5612 Double_t five6n1n1n5n3n = 0.; // <5>_{6n,1n,1n|5n,3n} = <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
5613 Double_t five6n3n5n2n2n = 0.; // <5>_{6n,3n|5n,2n,2n} = <cos(n(6*phi1+3*phi2-5*phi3-2*phi4-2*phi5))>
5614 Double_t five6n5n4n4n3n = 0.; // <5>_{6n,5n|4n,4n,3n} = <cos(n(6*phi1+5*phi2-4*phi3-4*phi4-3*phi5))>
5615 Double_t five6n3n1n5n5n = 0.; // <5>_{6n,3n,1n|5n,5n} = <cos(n(6*phi1+3*phi2+1*phi3-5*phi4-5*phi5))>
5616 Double_t five6n6n5n4n3n = 0.; // <5>_{6n,6n|5n,4n,3n} = <cos(n(6*phi1+6*phi2-5*phi3-4*phi4-3*phi5))>
5617 // Five distinct harmonics (3):
5618 Double_t five6n2n4n3n1n = 0.; // <5>_{6n,2n|4n,3n,1n} = <cos(n(6*phi1+2*phi2-4*phi3-3*phi4-1*phi5))>
5619 Double_t five6n2n1n5n4n = 0.; // <5>_{6n,2n,1n|5n,4n} = <cos(n(6*phi1+2*phi2+1*phi3-5*phi4-4*phi5))>
5620 Double_t five6n4n5n3n2n = 0.; // <5>_{6n,4n|5n,3n,2n} = <cos(n(6*phi1+4*phi2-5*phi3-3*phi4-2*phi5))>
5621 if(dMult>4.)
5622 {
5623 five3n2n3n1n1n = (-(pow(dImQ3n,2.)+pow(dReQ3n,2.))
5624 * (-2.*dImQ1n*dImQ2n*dReQ1n+pow(dImQ1n,2.)*dReQ2n-pow(dReQ1n,2.)*dReQ2n)
5625 - (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
5626 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
5627 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n)
5628 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5629 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5630 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5631 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5632 - (dReQ3n*pow(dReQ1n,3.)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
5633 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2.)-dImQ3n*pow(dImQ1n,3.))
5634 - 2.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5635 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5636 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5637 + 3.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5638 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5639 + 2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5640 + 9.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5641 - (dMult-8.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5642 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5643 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5644 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5645 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-12.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5646 + 2.*(dMult-9.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
5647 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5648 five4n1n2n2n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))
5649 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
5650 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5651 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5652 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5653 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5654 - 2.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
5655 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
5656 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
5657 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
5658 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
5659 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5660 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5661 + (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5662 + 2.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5663 + 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5664 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5665 + 3.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5666 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5667 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
5668 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5669 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5670 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5671 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5672 - 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5673 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5674 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5675 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5676 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+(dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
5677 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
5678 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5679 five4n2n3n2n1n = ((pow(dImQ2n,2.)+pow(dReQ2n,2.))*(dImQ3n*dImQ4n*dReQ1n+dImQ1n*dImQ4n*dReQ3n
5680 - dImQ1n*dImQ3n*dReQ4n+dReQ1n*dReQ3n*dReQ4n)
5681 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
5682 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
5683 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
5684 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
5685 - (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
5686 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
5687 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
5688 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n)
5689 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
5690 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
5691 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5692 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5693 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5694 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
5695 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
5696 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
5697 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
5698 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5699 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5700 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
5701 + (dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
5702 + pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n
5703 + dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n
5704 + 3.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
5705 - (dMult-7.)*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
5706 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
5707 + 7.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
5708 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
5709 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
5710 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5711 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
5712 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
5713 + 2.*(dMult-7.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+(dMult-12.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
5714 - 2.*dMult*(dMult-12.))
5715 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
5716
5717 // *********************************************************************
5718 Double_t reQ7nQ3nstarQ2nstarQ2nstar = (dReQ7n*dReQ3n+dImQ7n*dImQ3n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
5719 + 2.*dReQ2n*dImQ2n*(dImQ7n*dReQ3n-dReQ7n*dImQ3n);
5720 Double_t reQ5nQ2nQ4nstarQ3nstar = dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
5721 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
5722 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
5723 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n;
5724 Double_t reQ7nQ4nstarQ3nstar = dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n
5725 + dImQ7n*dImQ4n*dReQ3n;
5726
5727
5728 Double_t reQ7nQ5nstarQ2nstar = dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n
5729 + dImQ7n*dImQ5n*dReQ2n;
5730
5731 // <5>_{6n,4n|4n,3n,3n}:
5732 Double_t reQ10nQ4nstarQ3nstarQ3nstar = (dReQ10n*dReQ4n+dImQ10n*dImQ4n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5733 + 2.*dReQ3n*dImQ3n*(dImQ10n*dReQ4n-dReQ10n*dImQ4n);
5734 Double_t reQ7nQ3nQ6nstarQ4nstar = dImQ3n*dImQ4n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ3n*dReQ4n
5735 + dImQ4n*dImQ7n*dReQ3n*dReQ6n-dImQ3n*dImQ7n*dReQ4n*dReQ6n
5736 - dImQ4n*dImQ6n*dReQ3n*dReQ7n+dImQ3n*dImQ6n*dReQ4n*dReQ7n
5737 + dImQ3n*dImQ4n*dReQ6n*dReQ7n+dReQ3n*dReQ4n*dReQ6n*dReQ7n;
5738 Double_t reQ10nQ7nstarQ3nstar = dReQ10n*dReQ7n*dReQ3n-dReQ10n*dImQ7n*dImQ3n+dImQ10n*dReQ7n*dImQ3n
5739 + dImQ10n*dImQ7n*dReQ3n;
5740 Double_t reQ10nQ6nstarQ4nstar = dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n
5741 + dImQ10n*dImQ6n*dReQ4n;
5742 Double_t reQ6nQ1nQ4nstarQ3nstar = dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
5743 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
5744 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
5745 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n;
5746 Double_t reQ7nQ6nstarQ1nstar = dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n
5747 + dImQ7n*dImQ6n*dReQ1n;
5748 // <5>_{6n,5n|5n,3n,3n}:
5749 /*Double_t reQ11nQ5nstarQ3nstarQ3nstar = (dReQ11n*dReQ5n+dImQ11n*dImQ5n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5750 + 2.*dReQ3n*dImQ3n*(dImQ11n*dReQ5n-dReQ11n*dImQ5n); */
5751 Double_t reQ6nQ2nQ5nstarQ3nstar = dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
5752 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
5753 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
5754 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n;
5755 Double_t reQ8nQ3nQ6nstarQ5nstar = dImQ3n*dImQ5n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ3n*dReQ5n
5756 + dImQ5n*dImQ8n*dReQ3n*dReQ6n-dImQ3n*dImQ8n*dReQ5n*dReQ6n
5757 - dImQ5n*dImQ6n*dReQ3n*dReQ8n+dImQ3n*dImQ6n*dReQ5n*dReQ8n
5758 + dImQ3n*dImQ5n*dReQ6n*dReQ8n+dReQ3n*dReQ5n*dReQ6n*dReQ8n;
5759 Double_t reQ11nQ6nstarQ5nstar = dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n
5760 + dImQ11n*dImQ6n*dReQ5n;
5761 Double_t reQ8nQ6nstarQ2nstar = dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n
5762 + dImQ8n*dImQ6n*dReQ2n;
5763 Double_t reQ11nQ8nstarQ3nstar = dReQ11n*dReQ8n*dReQ3n-dReQ11n*dImQ8n*dImQ3n+dImQ11n*dReQ8n*dImQ3n
5764 + dImQ11n*dImQ8n*dReQ3n;
5765 Double_t reQ8nQ5nstarQ3nstar = dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n
5766 + dImQ8n*dImQ5n*dReQ3n;
5767 // <5>_{5n,2n|5n,1n,1n}
5768 Double_t reQ7nQ5nstarQ1nstarQ1nstar = (dReQ7n*dReQ5n+dImQ7n*dImQ5n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5769 + 2.*dReQ1n*dImQ1n*(dImQ7n*dReQ5n-dReQ7n*dImQ5n);
5770 Double_t reQ6nQ1nQ5nstarQ2nstar = dImQ1n*dImQ2n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ1n*dReQ2n
5771 + dImQ2n*dImQ6n*dReQ1n*dReQ5n-dImQ1n*dImQ6n*dReQ2n*dReQ5n
5772 - dImQ2n*dImQ5n*dReQ1n*dReQ6n+dImQ1n*dImQ5n*dReQ2n*dReQ6n
5773 + dImQ1n*dImQ2n*dReQ5n*dReQ6n+dReQ1n*dReQ2n*dReQ5n*dReQ6n;
5774 // <5>_{5n,4n|5n,2n,2n}
5775 Double_t reQ9nQ5nstarQ2nstarQ2nstar = (dReQ9n*dReQ5n+dImQ9n*dImQ5n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
5776 + 2.*dReQ2n*dImQ2n*(dImQ9n*dReQ5n-dReQ9n*dImQ5n);
5777 Double_t reQ7nQ2nQ5nstarQ4nstar = dImQ2n*dImQ4n*dImQ5n*dImQ7n+dImQ5n*dImQ7n*dReQ2n*dReQ4n
5778 + dImQ4n*dImQ7n*dReQ2n*dReQ5n-dImQ2n*dImQ7n*dReQ4n*dReQ5n
5779 - dImQ4n*dImQ5n*dReQ2n*dReQ7n+dImQ2n*dImQ5n*dReQ4n*dReQ7n
5780 + dImQ2n*dImQ4n*dReQ5n*dReQ7n+dReQ2n*dReQ4n*dReQ5n*dReQ7n;
5781 Double_t reQ9nQ5nstarQ4nstar = dReQ9n*dReQ5n*dReQ4n-dReQ9n*dImQ5n*dImQ4n+dImQ9n*dReQ5n*dImQ4n
5782 + dImQ9n*dImQ5n*dReQ4n;
5783 Double_t reQ9nQ7nstarQ2nstar = dReQ9n*dReQ7n*dReQ2n-dReQ9n*dImQ7n*dImQ2n+dImQ9n*dReQ7n*dImQ2n
5784 + dImQ9n*dImQ7n*dReQ2n;
5785 // <5>_{6n,2n|6n,1n,1n}
5786 Double_t reQ8nQ6nstarQ1nstarQ1nstar = (dReQ8n*dReQ6n+dImQ8n*dImQ6n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
5787 + 2.*dReQ1n*dImQ1n*(dImQ8n*dReQ6n-dReQ8n*dImQ6n);
5788 Double_t reQ7nQ1nQ6nstarQ2nstar = dImQ1n*dImQ2n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ1n*dReQ2n
5789 + dImQ2n*dImQ7n*dReQ1n*dReQ6n-dImQ1n*dImQ7n*dReQ2n*dReQ6n
5790 - dImQ2n*dImQ6n*dReQ1n*dReQ7n+dImQ1n*dImQ6n*dReQ2n*dReQ7n
5791 + dImQ1n*dImQ2n*dReQ6n*dReQ7n+dReQ1n*dReQ2n*dReQ6n*dReQ7n;
5792 Double_t reQ8nQ7nstarQ1nstar = dReQ8n*dReQ7n*dReQ1n-dReQ8n*dImQ7n*dImQ1n+dImQ8n*dReQ7n*dImQ1n
5793 + dImQ8n*dImQ7n*dReQ1n;
5794 // <5>_{5n,2n|4n,2n,1n}
5795 Double_t reQ5nQ2nQ4nstarQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5796 * (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5797 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n);
5798 Double_t reQ7nQ4nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ4n*dReQ7n-dReQ4n*dReQ7n*dImQ1n*dImQ2n
5799 - dReQ2n*dReQ7n*dImQ1n*dImQ4n-dReQ1n*dReQ7n*dImQ2n*dImQ4n
5800 + dReQ2n*dReQ4n*dImQ1n*dImQ7n+dReQ1n*dReQ4n*dImQ2n*dImQ7n
5801 + dReQ1n*dReQ2n*dImQ4n*dImQ7n-dImQ1n*dImQ2n*dImQ4n*dImQ7n;
5802 // <5>_{4n,3n|4n,2n,1n}:
c10259fb 5803 Double_t reQ4nQ3nQ4nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5804 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5805 * (pow(dReQ4n,2.)+pow(dImQ4n,2.));
e1d101a6 5806 /*
5807 Double_t reQ4nQ1nQ3nstarQ2nstar = dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
5808 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
5809 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
5810 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n;
5811 */
5812 // <5>_{5n,3n|4n,3n,1n}:
5813 Double_t reQ5nQ3nQ4nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5814 * (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5815 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n);
c10259fb 5816 Double_t reQ5nQ3nQ4nstarQ4nstar = dReQ3n*pow(dReQ4n,2.)*dReQ5n+2.*dReQ4n*dReQ5n*dImQ3n*dImQ4n
5817 - dReQ3n*dReQ5n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ3n*dImQ5n
5818 + 2.*dReQ3n*dReQ4n*dImQ4n*dImQ5n+dImQ3n*pow(dImQ4n,2.)*dImQ5n;
e1d101a6 5819 Double_t reQ7nQ1nQ5nstarQ3nstar = dImQ1n*dImQ3n*dImQ5n*dImQ7n+dImQ5n*dImQ7n*dReQ1n*dReQ3n
5820 + dImQ3n*dImQ7n*dReQ1n*dReQ5n-dImQ1n*dImQ7n*dReQ3n*dReQ5n
5821 - dImQ3n*dImQ5n*dReQ1n*dReQ7n+dImQ1n*dImQ5n*dReQ3n*dReQ7n
5822 + dImQ1n*dImQ3n*dReQ5n*dReQ7n+dReQ1n*dReQ3n*dReQ5n*dReQ7n;
c10259fb 5823 Double_t reQ8nQ4nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ4n*dReQ8n-dReQ4n*dReQ8n*dImQ1n*dImQ3n
5824 - dReQ3n*dReQ8n*dImQ1n*dImQ4n-dReQ1n*dReQ8n*dImQ3n*dImQ4n
5825 + dReQ3n*dReQ4n*dImQ1n*dImQ8n+dReQ1n*dReQ4n*dImQ3n*dImQ8n
5826 + dReQ1n*dReQ3n*dImQ4n*dImQ8n-dImQ1n*dImQ3n*dImQ4n*dImQ8n;
e1d101a6 5827 Double_t reQ8nQ4nstarQ4nstar = pow(dReQ4n,2.)*dReQ8n-dReQ8n*pow(dImQ4n,2.)+2.*dReQ4n*dImQ4n*dImQ8n;
5828 // <5>_{5n,4n|4n,3n,2n}:
5829 Double_t reQ5nQ4nQ4nstarQ3nstarQ2nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5830 * (dReQ2n*dReQ3n*dReQ5n-dReQ5n*dImQ2n*dImQ3n
5831 + dReQ3n*dImQ2n*dImQ5n+dReQ2n*dImQ3n*dImQ5n);
5832 Double_t reQ6nQ3nQ5nstarQ4nstar = dImQ4n*dImQ3n*dImQ6n*dImQ5n+dImQ6n*dImQ5n*dReQ4n*dReQ3n
5833 + dImQ3n*dImQ5n*dReQ4n*dReQ6n-dImQ4n*dImQ5n*dReQ3n*dReQ6n
5834 - dImQ3n*dImQ6n*dReQ4n*dReQ5n+dImQ4n*dImQ6n*dReQ3n*dReQ5n
5835 + dImQ4n*dImQ3n*dReQ6n*dReQ5n+dReQ4n*dReQ3n*dReQ6n*dReQ5n;
c10259fb 5836 Double_t reQ9nQ4nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ4n*dReQ9n-dReQ4n*dReQ9n*dImQ2n*dImQ3n
5837 - dReQ3n*dReQ9n*dImQ2n*dImQ4n-dReQ2n*dReQ9n*dImQ3n*dImQ4n
5838 + dReQ3n*dReQ4n*dImQ2n*dImQ9n+dReQ2n*dReQ4n*dImQ3n*dImQ9n
5839 + dReQ2n*dReQ3n*dImQ4n*dImQ9n-dImQ2n*dImQ3n*dImQ4n*dImQ9n;
e1d101a6 5840 Double_t reQ9nQ6nstarQ3nstar = dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n
5841 + dImQ9n*dImQ6n*dReQ3n;
5842 // <5>_{5n,3n|5n,2n,1n}:
c10259fb 5843 Double_t reQ5nQ3nQ5nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5844 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5845 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
5846 Double_t reQ8nQ5nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ5n*dReQ8n-dReQ5n*dReQ8n*dImQ1n*dImQ2n
5847 - dReQ2n*dReQ8n*dImQ1n*dImQ5n-dReQ1n*dReQ8n*dImQ2n*dImQ5n
5848 + dReQ2n*dReQ5n*dImQ1n*dImQ8n+dReQ1n*dReQ5n*dImQ2n*dImQ8n
5849 + dReQ1n*dReQ2n*dImQ5n*dImQ8n-dImQ1n*dImQ2n*dImQ5n*dImQ8n;
e1d101a6 5850 // <5>_{5n,4n|5n,3n,1n}:
c10259fb 5851 Double_t reQ5nQ4nQ5nstarQ3nstarQ1nstar = (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5852 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n)
5853 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
e1d101a6 5854 Double_t reQ8nQ1nQ5nstarQ4nstar = dImQ4n*dImQ1n*dImQ8n*dImQ5n+dImQ8n*dImQ5n*dReQ4n*dReQ1n
5855 + dImQ1n*dImQ5n*dReQ4n*dReQ8n-dImQ4n*dImQ5n*dReQ1n*dReQ8n
5856 - dImQ1n*dImQ8n*dReQ4n*dReQ5n+dImQ4n*dImQ8n*dReQ1n*dReQ5n
5857 + dImQ4n*dImQ1n*dReQ8n*dReQ5n+dReQ4n*dReQ1n*dReQ8n*dReQ5n;
c10259fb 5858 Double_t reQ9nQ5nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ5n*dReQ9n-dReQ5n*dReQ9n*dImQ1n*dImQ3n
5859 - dReQ3n*dReQ9n*dImQ1n*dImQ5n-dReQ1n*dReQ9n*dImQ3n*dImQ5n
5860 + dReQ3n*dReQ5n*dImQ1n*dImQ9n+dReQ1n*dReQ5n*dImQ3n*dImQ9n
5861 + dReQ1n*dReQ3n*dImQ5n*dImQ9n-dImQ1n*dImQ3n*dImQ5n*dImQ9n;
e1d101a6 5862 Double_t reQ9nQ8nstarQ1nstar = dReQ9n*dReQ8n*dReQ1n-dReQ9n*dImQ8n*dImQ1n+dImQ9n*dReQ8n*dImQ1n
5863 + dImQ9n*dImQ8n*dReQ1n;
5864 // <5>_{6n,1n|4n,2n,1n}:
c10259fb 5865 Double_t reQ6nQ1nQ4nstarQ2nstarQ1nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5866 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5867 * (pow(dReQ1n,2.)+pow(dImQ1n,2.));
e1d101a6 5868 // <5>_{6n,3n|4n,3n,2n}:
c10259fb 5869 Double_t reQ6nQ3nQ4nstarQ3nstarQ2nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5870 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5871 * (pow(dReQ3n,2.)+pow(dImQ3n,2.));
e1d101a6 5872 Double_t reQ7nQ2nQ6nstarQ3nstar = dImQ3n*dImQ2n*dImQ7n*dImQ6n+dImQ7n*dImQ6n*dReQ3n*dReQ2n
5873 + dImQ2n*dImQ6n*dReQ3n*dReQ7n-dImQ3n*dImQ6n*dReQ2n*dReQ7n
5874 - dImQ2n*dImQ7n*dReQ3n*dReQ6n+dImQ3n*dImQ7n*dReQ2n*dReQ6n
5875 + dImQ3n*dImQ2n*dReQ7n*dReQ6n+dReQ3n*dReQ2n*dReQ7n*dReQ6n;
5876 // <5>_{6n,2n|5n,2n,1n}:
5877 Double_t reQ6nQ2nQ5nstarQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
5878 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5879 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5880 // <5>_{6n,3n|5n,3n,1n}:
5881 Double_t reQ6nQ3nQ5nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5882 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5883 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
5884 Double_t reQ8nQ1nQ6nstarQ3nstar = dImQ3n*dImQ1n*dImQ8n*dImQ6n+dImQ8n*dImQ6n*dReQ3n*dReQ1n
5885 + dImQ1n*dImQ6n*dReQ3n*dReQ8n-dImQ3n*dImQ6n*dReQ1n*dReQ8n
5886 - dImQ1n*dImQ8n*dReQ3n*dReQ6n+dImQ3n*dImQ8n*dReQ1n*dReQ6n
5887 + dImQ3n*dImQ1n*dReQ8n*dReQ6n+dReQ3n*dReQ1n*dReQ8n*dReQ6n;
5888 // <5>_{6n,4n|5n,4n,1n}:
5889 Double_t reQ6nQ4nQ5nstarQ4nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
5890 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
5891 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
c10259fb 5892 Double_t reQ6nQ4nQ5nstarQ5nstar = dReQ4n*pow(dReQ5n,2.)*dReQ6n+2.*dReQ5n*dReQ6n*dImQ4n*dImQ5n
5893 - dReQ4n*dReQ6n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ4n*dImQ6n
5894 + 2.*dReQ4n*dReQ5n*dImQ5n*dImQ6n+dImQ4n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 5895 Double_t reQ9nQ1nQ6nstarQ4nstar = dImQ4n*dImQ1n*dImQ9n*dImQ6n+dImQ9n*dImQ6n*dReQ4n*dReQ1n
5896 + dImQ1n*dImQ6n*dReQ4n*dReQ9n-dImQ4n*dImQ6n*dReQ1n*dReQ9n
5897 - dImQ1n*dImQ9n*dReQ4n*dReQ6n+dImQ4n*dImQ9n*dReQ1n*dReQ6n
c10259fb 5898 + dImQ4n*dImQ1n*dReQ9n*dReQ6n+dReQ4n*dReQ1n*dReQ9n*dReQ6n;
5899 Double_t reQ10nQ5nstarQ4nstarQ1nstar = dReQ1n*dReQ4n*dReQ5n*dReQ10n-dReQ5n*dReQ10n*dImQ1n*dImQ4n
5900 - dReQ4n*dReQ10n*dImQ1n*dImQ5n-dReQ1n*dReQ10n*dImQ4n*dImQ5n
5901 + dReQ4n*dReQ5n*dImQ1n*dImQ10n+dReQ1n*dReQ5n*dImQ4n*dImQ10n
5902 + dReQ1n*dReQ4n*dImQ5n*dImQ10n-dImQ1n*dImQ4n*dImQ5n*dImQ10n;
e1d101a6 5903 Double_t reQ10nQ9nstarQ1nstar = dReQ10n*dReQ9n*dReQ1n-dReQ10n*dImQ9n*dImQ1n+dImQ10n*dReQ9n*dImQ1n
5904 + dImQ10n*dImQ9n*dReQ1n;
5905 Double_t reQ10nQ5nstarQ5nstar = pow(dReQ5n,2.)*dReQ10n-dReQ10n*pow(dImQ5n,2.)+2.*dReQ5n*dImQ5n*dImQ10n;
5906 // <5>_{6n,3n|6n,2n,1n}:
c10259fb 5907 Double_t reQ6nQ3nQ6nstarQ2nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
5908 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
5909 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5910 Double_t reQ9nQ6nstarQ2nstarQ1nstar = dReQ1n*dReQ2n*dReQ6n*dReQ9n-dReQ6n*dReQ9n*dImQ1n*dImQ2n
5911 - dReQ2n*dReQ9n*dImQ1n*dImQ6n-dReQ1n*dReQ9n*dImQ2n*dImQ6n
5912 + dReQ2n*dReQ6n*dImQ1n*dImQ9n+dReQ1n*dReQ6n*dImQ2n*dImQ9n
5913 + dReQ1n*dReQ2n*dImQ6n*dImQ9n-dImQ1n*dImQ2n*dImQ6n*dImQ9n;
e1d101a6 5914 // <5>_{6n,4n|6n,3n,1n}:
c10259fb 5915 Double_t reQ6nQ4nQ6nstarQ3nstarQ1nstar = (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5916 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n)
5917 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5918 Double_t reQ10nQ6nstarQ3nstarQ1nstar = dReQ1n*dReQ3n*dReQ6n*dReQ10n-dReQ6n*dReQ10n*dImQ1n*dImQ3n
5919 - dReQ3n*dReQ10n*dImQ1n*dImQ6n-dReQ1n*dReQ10n*dImQ3n*dImQ6n
5920 + dReQ3n*dReQ6n*dImQ1n*dImQ10n+dReQ1n*dReQ6n*dImQ3n*dImQ10n
5921 + dReQ1n*dReQ3n*dImQ6n*dImQ10n-dImQ1n*dImQ3n*dImQ6n*dImQ10n;
e1d101a6 5922 // <5>_{6n,5n|5n,4n,2n}:
c10259fb 5923 Double_t reQ6nQ5nQ5nstarQ4nstarQ2nstar = (dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
5924 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
5925 * (pow(dReQ5n,2.)+pow(dImQ5n,2.));
e1d101a6 5926 Double_t reQ7nQ4nQ6nstarQ5nstar = dImQ5n*dImQ4n*dImQ7n*dImQ6n+dImQ7n*dImQ6n*dReQ5n*dReQ4n
5927 + dImQ4n*dImQ6n*dReQ5n*dReQ7n-dImQ5n*dImQ6n*dReQ4n*dReQ7n
5928 - dImQ4n*dImQ7n*dReQ5n*dReQ6n+dImQ5n*dImQ7n*dReQ4n*dReQ6n
5929 + dImQ5n*dImQ4n*dReQ7n*dReQ6n+dReQ5n*dReQ4n*dReQ7n*dReQ6n;
5930 Double_t reQ9nQ2nQ6nstarQ5nstar = dImQ5n*dImQ2n*dImQ9n*dImQ6n+dImQ9n*dImQ6n*dReQ5n*dReQ2n
5931 + dImQ2n*dImQ6n*dReQ5n*dReQ9n-dImQ5n*dImQ6n*dReQ2n*dReQ9n
5932 - dImQ2n*dImQ9n*dReQ5n*dReQ6n+dImQ5n*dImQ9n*dReQ2n*dReQ6n
5933 + dImQ5n*dImQ2n*dReQ9n*dReQ6n+dReQ5n*dReQ2n*dReQ9n*dReQ6n;
c10259fb 5934 Double_t reQ11nQ5nstarQ4nstarQ2nstar = dReQ2n*dReQ4n*dReQ5n*dReQ11n-dReQ5n*dReQ11n*dImQ2n*dImQ4n
5935 - dReQ4n*dReQ11n*dImQ2n*dImQ5n-dReQ2n*dReQ11n*dImQ4n*dImQ5n
5936 + dReQ4n*dReQ5n*dImQ2n*dImQ11n+dReQ2n*dReQ5n*dImQ4n*dImQ11n
5937 + dReQ2n*dReQ4n*dImQ5n*dImQ11n-dImQ2n*dImQ4n*dImQ5n*dImQ11n;
e1d101a6 5938 Double_t reQ11nQ9nstarQ2nstar = dReQ11n*dReQ9n*dReQ2n-dReQ11n*dImQ9n*dImQ2n+dImQ11n*dReQ9n*dImQ2n
5939 + dImQ11n*dImQ9n*dReQ2n;
5940 Double_t reQ11nQ7nstarQ4nstar = dReQ11n*dReQ7n*dReQ4n-dReQ11n*dImQ7n*dImQ4n+dImQ11n*dReQ7n*dImQ4n
5941 + dImQ11n*dImQ7n*dReQ4n;
5942 // <5>_{6n,5n|6n,3n,2n}:
c10259fb 5943 Double_t reQ6nQ5nQ6nstarQ3nstarQ2nstar = (dReQ2n*dReQ3n*dReQ5n-dReQ5n*dImQ2n*dImQ3n
5944 + dReQ3n*dImQ2n*dImQ5n+dReQ2n*dImQ3n*dImQ5n)
5945 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
5946 Double_t reQ11nQ6nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ6n*dReQ11n-dReQ6n*dReQ11n*dImQ2n*dImQ3n
5947 - dReQ3n*dReQ11n*dImQ2n*dImQ6n-dReQ2n*dReQ11n*dImQ3n*dImQ6n
5948 + dReQ3n*dReQ6n*dImQ2n*dImQ11n+dReQ2n*dReQ6n*dImQ3n*dImQ11n
5949 + dReQ2n*dReQ3n*dImQ6n*dImQ11n-dImQ2n*dImQ3n*dImQ6n*dImQ11n;
e1d101a6 5950 // <5>_{6n,5n|6n,4n,1n}:
c10259fb 5951 Double_t reQ6nQ5nQ6nstarQ4nstarQ1nstar = (dReQ1n*dReQ4n*dReQ5n-dReQ5n*dImQ1n*dImQ4n
5952 + dReQ4n*dImQ1n*dImQ5n+dReQ1n*dImQ4n*dImQ5n)
5953 * (pow(dReQ6n,2.)+pow(dImQ6n,2.));
e1d101a6 5954 Double_t reQ10nQ1nQ6nstarQ5nstar = dImQ5n*dImQ1n*dImQ10n*dImQ6n+dImQ10n*dImQ6n*dReQ5n*dReQ1n
5955 + dImQ1n*dImQ6n*dReQ5n*dReQ10n-dImQ5n*dImQ6n*dReQ1n*dReQ10n
5956 - dImQ1n*dImQ10n*dReQ5n*dReQ6n+dImQ5n*dImQ10n*dReQ1n*dReQ6n
5957 + dImQ5n*dImQ1n*dReQ10n*dReQ6n+dReQ5n*dReQ1n*dReQ10n*dReQ6n;
5958 Double_t reQ11nQ10nstarQ1nstar = dReQ11n*dReQ10n*dReQ1n-dReQ11n*dImQ10n*dImQ1n+dImQ11n*dReQ10n*dImQ1n
5959 + dImQ11n*dImQ10n*dReQ1n;
c10259fb 5960 Double_t reQ11nQ6nstarQ4nstarQ1nstar = dReQ1n*dReQ4n*dReQ6n*dReQ11n-dReQ6n*dReQ11n*dImQ1n*dImQ4n
5961 - dReQ4n*dReQ11n*dImQ1n*dImQ6n-dReQ1n*dReQ11n*dImQ4n*dImQ6n
5962 + dReQ4n*dReQ6n*dImQ1n*dImQ11n+dReQ1n*dReQ6n*dImQ4n*dImQ11n
5963 + dReQ1n*dReQ4n*dImQ6n*dImQ11n-dImQ1n*dImQ4n*dImQ6n*dImQ11n;
e1d101a6 5964 // <5>_{4n,1n|3n,1n,1n}:
5965 Double_t reQ4nQ1nQ3nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
5966 * (dReQ1n*dReQ3n*dReQ4n-dReQ4n*dImQ1n*dImQ3n
5967 + dReQ3n*dImQ1n*dImQ4n+dReQ1n*dImQ3n*dImQ4n);
5968 Double_t reQ4nQ1nQ4nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
5969 Double_t reQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
5970 // <5>_{4n,3n|3n,3n,1n}:
5971 Double_t reQ4nQ3nQ3nstarQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))
5972 * (dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n));
5973 Double_t reQ7nQ3nstarQ3nstarQ1nstar = (dReQ7n*dReQ1n+dImQ7n*dImQ1n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5974 + 2.*dReQ3n*dImQ3n*(dImQ7n*dReQ1n-dReQ7n*dImQ1n);
5975 // <5>_{4n,4n|4n,3n,1n}:
5976 Double_t reQ4nQ4nQ4nstarQ3nstarQ1nstar = (pow(dReQ4n,2.)+pow(dImQ4n,2.))
c10259fb 5977 * reQ4nQ3nstarQ1nstar;
5978 Double_t reQ7nQ1nQ4nstarQ4nstar = dReQ1n*pow(dReQ4n,2.)*dReQ7n+2.*dReQ4n*dReQ7n*dImQ1n*dImQ4n
5979 - dReQ1n*dReQ7n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ1n*dImQ7n
5980 + 2.*dReQ1n*dReQ4n*dImQ4n*dImQ7n+dImQ1n*pow(dImQ4n,2.)*dImQ7n;
e1d101a6 5981 // <5>_{5n,2n|3n,2n,2n}:
5982 Double_t reQ5nQ2nQ3nstarQ2nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
c10259fb 5983 * reQ5nQ3nstarQ2nstar;
e1d101a6 5984 // <5>_{5n,3n|3n,3n,2n}:
5985 Double_t reQ5nQ3nQ3nstarQ3nstarQ2nstar = (pow(dImQ3n,2.)+pow(dReQ3n,2.))
5986 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
5987 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
5988 Double_t reQ8nQ3nstarQ3nstarQ2nstar = (dReQ8n*dReQ2n+dImQ8n*dImQ2n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
5989 + 2.*dReQ3n*dImQ3n*(dImQ8n*dReQ2n-dReQ8n*dImQ2n);
5990 /*
5991 Double_t reQ5nQ1nQ3nstarQ2nstar = dImQ2n*dImQ1n*dImQ5n*dImQ3n+dImQ5n*dImQ3n*dReQ2n*dReQ1n
5992 + dImQ1n*dImQ3n*dReQ2n*dReQ5n-dImQ2n*dImQ3n*dReQ1n*dReQ5n
5993 - dImQ1n*dImQ5n*dReQ2n*dReQ3n+dImQ2n*dImQ5n*dReQ1n*dReQ3n
5994 + dImQ2n*dImQ1n*dReQ5n*dReQ3n+dReQ2n*dReQ1n*dReQ5n*dReQ3n;
5995 */
5996 // <5>_{5n,1n|4n,1n,1n}:
5997 Double_t reQ5nQ1nQ4nstarQ1nstarQ1nstar = (pow(dImQ1n,2.)+pow(dReQ1n,2.))
5998 * (dImQ1n*dImQ5n*dReQ4n+dImQ4n*dImQ5n*dReQ1n
5999 - dImQ4n*dImQ1n*dReQ5n+dReQ4n*dReQ1n*dReQ5n);
6000 // <5>_{5n,4n|4n,4n,1n}:
6001 Double_t reQ5nQ4nQ4nstarQ4nstarQ1nstar = (pow(dImQ4n,2.)+pow(dReQ4n,2.))
6002 * (dImQ4n*dImQ5n*dReQ1n+dImQ1n*dImQ5n*dReQ4n
6003 - dImQ1n*dImQ4n*dReQ5n+dReQ1n*dReQ4n*dReQ5n);
6004 Double_t reQ9nQ4nstarQ4nstarQ1nstar = (dReQ9n*dReQ1n+dImQ9n*dImQ1n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6005 + 2.*dReQ4n*dImQ4n*(dImQ9n*dReQ1n-dReQ9n*dImQ1n);
6006 // <5>_{5n,5n|5n,3n,2n}:
6007 Double_t reQ5nQ5nQ5nstarQ3nstarQ2nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6008 * (dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
6009 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n);
c10259fb 6010 Double_t reQ7nQ3nQ5nstarQ5nstar = dReQ3n*pow(dReQ5n,2.)*dReQ7n+2.*dReQ5n*dReQ7n*dImQ3n*dImQ5n
6011 - dReQ3n*dReQ7n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ3n*dImQ7n
6012 + 2.*dReQ3n*dReQ5n*dImQ5n*dImQ7n+dImQ3n*pow(dImQ5n,2.)*dImQ7n;
6013 Double_t reQ8nQ2nQ5nstarQ5nstar = dReQ2n*pow(dReQ5n,2.)*dReQ8n+2.*dReQ5n*dReQ8n*dImQ2n*dImQ5n
6014 - dReQ2n*dReQ8n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ2n*dImQ8n
6015 + 2.*dReQ2n*dReQ5n*dImQ5n*dImQ8n+dImQ2n*pow(dImQ5n,2.)*dImQ8n;
6016 Double_t reQ10nQ5nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ5n*dReQ10n-dReQ5n*dReQ10n*dImQ2n*dImQ3n
6017 - dReQ3n*dReQ10n*dImQ2n*dImQ5n-dReQ2n*dReQ10n*dImQ3n*dImQ5n
6018 + dReQ3n*dReQ5n*dImQ2n*dImQ10n+dReQ2n*dReQ5n*dImQ3n*dImQ10n
6019 + dReQ2n*dReQ3n*dImQ5n*dImQ10n-dImQ2n*dImQ3n*dImQ5n*dImQ10n;
e1d101a6 6020 Double_t reQ10nQ8nstarQ2nstar = dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n
6021 + dImQ10n*dImQ8n*dReQ2n;
6022 // <5>_{5n,5n|5n,4n,1n}:
6023 Double_t reQ5nQ5nQ5nstarQ4nstarQ1nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6024 * (dImQ4n*dImQ5n*dReQ1n+dImQ1n*dImQ5n*dReQ4n
6025 - dImQ1n*dImQ4n*dReQ5n+dReQ1n*dReQ4n*dReQ5n);
c10259fb 6026 Double_t reQ9nQ1nQ5nstarQ5nstar = dReQ1n*pow(dReQ5n,2.)*dReQ9n+2.*dReQ5n*dReQ9n*dImQ1n*dImQ5n
6027 - dReQ1n*dReQ9n*pow(dImQ5n,2.)-pow(dReQ5n,2.)*dImQ1n*dImQ9n
6028 + 2.*dReQ1n*dReQ5n*dImQ5n*dImQ9n+dImQ1n*pow(dImQ5n,2.)*dImQ9n;
e1d101a6 6029 // <5>_{6n,1n|5n,1n,1n}:
6030 Double_t reQ6nQ1nQ5nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
6031 * (dReQ1n*dReQ5n*dReQ6n-dReQ6n*dImQ1n*dImQ5n
6032 + dReQ5n*dImQ1n*dImQ6n+dReQ1n*dImQ5n*dImQ6n);
6033 // <5>_{6n,5n|5n,5n,1n}:
6034 Double_t reQ6nQ5nQ5nstarQ5nstarQ1nstar = (pow(dImQ5n,2.)+pow(dReQ5n,2.))
6035 * (dImQ5n*dImQ6n*dReQ1n+dImQ1n*dImQ6n*dReQ5n
6036 - dImQ1n*dImQ5n*dReQ6n+dReQ1n*dReQ5n*dReQ6n);
6037 Double_t reQ11nQ5nstarQ5nstarQ1nstar = (dReQ11n*dReQ1n+dImQ11n*dImQ1n)*(pow(dReQ5n,2)-pow(dImQ5n,2))
6038 + 2.*dReQ5n*dImQ5n*(dImQ11n*dReQ1n-dReQ11n*dImQ1n);
6039 // <5>_{6n,6n|6n,5n,1n}:
6040 Double_t reQ6nQ6nQ6nstarQ5nstarQ1nstar = (pow(dReQ6n,2.)+pow(dImQ6n,2.))
c10259fb 6041 * reQ6nQ5nstarQ1nstar;
6042 Double_t reQ7nQ5nQ6nstarQ6nstar = dReQ5n*pow(dReQ6n,2.)*dReQ7n+2.*dReQ6n*dReQ7n*dImQ5n*dImQ6n
6043 - dReQ5n*dReQ7n*pow(dImQ6n,2.)-pow(dReQ6n,2.)*dImQ5n*dImQ7n
6044 + 2.*dReQ5n*dReQ6n*dImQ6n*dImQ7n+dImQ5n*pow(dImQ6n,2.)*dImQ7n;
6045 Double_t reQ11nQ1nQ6nstarQ6nstar = dReQ1n*pow(dReQ6n,2.)*dReQ11n+2.*dReQ6n*dReQ11n*dImQ1n*dImQ6n
6046 - dReQ1n*dReQ11n*pow(dImQ6n,2.)-pow(dReQ6n,2.)*dImQ1n*dImQ11n
6047 + 2.*dReQ1n*dReQ6n*dImQ6n*dImQ11n+dImQ1n*pow(dImQ6n,2.)*dImQ11n;
e1d101a6 6048 Double_t reQ12nQ6nstarQ6nstar = pow(dReQ6n,2.)*dReQ12n-dReQ12n*pow(dImQ6n,2.)+2.*dReQ6n*dImQ6n*dImQ12n;
6049 Double_t reQ12nQ11nstarQ1nstar = dReQ12n*dReQ11n*dReQ1n-dReQ12n*dImQ11n*dImQ1n+dImQ12n*dReQ11n*dImQ1n
6050 + dImQ12n*dImQ11n*dReQ1n;
c10259fb 6051 Double_t reQ12nQ6nstarQ5nstarQ1nstar = dReQ1n*dReQ5n*dReQ6n*dReQ12n-dReQ6n*dReQ12n*dImQ1n*dImQ5n
6052 - dReQ5n*dReQ12n*dImQ1n*dImQ6n-dReQ1n*dReQ12n*dImQ5n*dImQ6n
6053 + dReQ5n*dReQ6n*dImQ1n*dImQ12n+dReQ1n*dReQ6n*dImQ5n*dImQ12n
6054 + dReQ1n*dReQ5n*dImQ6n*dImQ12n-dImQ1n*dImQ5n*dImQ6n*dImQ12n;
e1d101a6 6055 Double_t reQ12nQ7nstarQ5nstar = dReQ12n*dReQ7n*dReQ5n-dReQ12n*dImQ7n*dImQ5n+dImQ12n*dReQ7n*dImQ5n
6056 + dImQ12n*dImQ7n*dReQ5n;
6057 // <5>_{6n,2n|4n,3n,1n}:
c10259fb 6058 Double_t reQ6nQ2nQ4nstarQ3nstarQ1nstar = dReQ1n*dReQ2n*dReQ3n*dReQ4n*dReQ6n+dReQ3n*dReQ4n*dReQ6n*dImQ1n*dImQ2n
6059 - dReQ2n*dReQ4n*dReQ6n*dImQ1n*dImQ3n+dReQ1n*dReQ4n*dReQ6n*dImQ2n*dImQ3n
6060 - dReQ2n*dReQ3n*dReQ6n*dImQ1n*dImQ4n+dReQ1n*dReQ3n*dReQ6n*dImQ2n*dImQ4n
6061 - dReQ1n*dReQ2n*dReQ6n*dImQ3n*dImQ4n-dReQ6n*dImQ1n*dImQ2n*dImQ3n*dImQ4n
6062 + dReQ2n*dReQ3n*dReQ4n*dImQ1n*dImQ6n-dReQ1n*dReQ3n*dReQ4n*dImQ2n*dImQ6n
6063 + dReQ1n*dReQ2n*dReQ4n*dImQ3n*dImQ6n+dReQ4n*dImQ1n*dImQ2n*dImQ3n*dImQ6n
6064 + dReQ1n*dReQ2n*dReQ3n*dImQ4n*dImQ6n+dReQ3n*dImQ1n*dImQ2n*dImQ4n*dImQ6n
6065 - dReQ2n*dImQ1n*dImQ3n*dImQ4n*dImQ6n+dReQ1n*dImQ2n*dImQ3n*dImQ4n*dImQ6n;
6066 Double_t reQ6nQ2nQ4nstarQ4nstar = dReQ2n*pow(dReQ4n,2.)*dReQ6n+2.*dReQ4n*dReQ6n*dImQ2n*dImQ4n
6067 - dReQ2n*dReQ6n*pow(dImQ4n,2.)-pow(dReQ4n,2.)*dImQ2n*dImQ6n
6068 + 2.*dReQ2n*dReQ4n*dImQ4n*dImQ6n+dImQ2n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6069 // <5>_{6n,2n,1n|5n,4n}:
c10259fb 6070 Double_t reQ6nQ2nQ1nQ5nstarQ4nstar = dReQ1n*dReQ2n*dReQ4n*dReQ6n*dReQ5n - dReQ4n*dReQ6n*dReQ5n*dImQ1n*dImQ2n
6071 + dReQ2n*dReQ6n*dReQ5n*dImQ1n*dImQ4n + dReQ1n*dReQ6n*dReQ5n*dImQ2n*dImQ4n
6072 - dReQ2n*dReQ4n*dReQ5n*dImQ1n*dImQ6n - dReQ1n*dReQ4n*dReQ5n*dImQ2n*dImQ6n
6073 + dReQ1n*dReQ2n*dReQ5n*dImQ4n*dImQ6n - dReQ5n*dImQ1n*dImQ2n*dImQ4n*dImQ6n
6074 + dReQ2n*dReQ4n*dReQ6n*dImQ1n*dImQ5n + dReQ1n*dReQ4n*dReQ6n*dImQ2n*dImQ5n
6075 - dReQ1n*dReQ2n*dReQ6n*dImQ4n*dImQ5n + dReQ6n*dImQ1n*dImQ2n*dImQ4n*dImQ5n
6076 + dReQ1n*dReQ2n*dReQ4n*dImQ6n*dImQ5n - dReQ4n*dImQ1n*dImQ2n*dImQ6n*dImQ5n
6077 + dReQ2n*dImQ1n*dImQ4n*dImQ6n*dImQ5n + dReQ1n*dImQ2n*dImQ4n*dImQ6n*dImQ5n;
e1d101a6 6078
6079 // <5>_{6n,4n|5n,3n,2n}:
c10259fb 6080 Double_t reQ6nQ4nQ5nstarQ3nstarQ2nstar = dReQ2n*dReQ3n*dReQ4n*dReQ5n*dReQ6n - dReQ4n*dReQ5n*dReQ6n*dImQ2n*dImQ3n
6081 + dReQ3n*dReQ5n*dReQ6n*dImQ2n*dImQ4n + dReQ2n*dReQ5n*dReQ6n*dImQ3n*dImQ4n
6082 - dReQ3n*dReQ4n*dReQ6n*dImQ2n*dImQ5n - dReQ2n*dReQ4n*dReQ6n*dImQ3n*dImQ5n
6083 + dReQ2n*dReQ3n*dReQ6n*dImQ4n*dImQ5n - dReQ6n*dImQ2n*dImQ3n*dImQ4n*dImQ5n
6084 + dReQ3n*dReQ4n*dReQ5n*dImQ2n*dImQ6n + dReQ2n*dReQ4n*dReQ5n*dImQ3n*dImQ6n
6085 - dReQ2n*dReQ3n*dReQ5n*dImQ4n*dImQ6n + dReQ5n*dImQ2n*dImQ3n*dImQ4n*dImQ6n
6086 + dReQ2n*dReQ3n*dReQ4n*dImQ5n*dImQ6n - dReQ4n*dImQ2n*dImQ3n*dImQ5n*dImQ6n
6087 + dReQ3n*dImQ2n*dImQ4n*dImQ5n*dImQ6n + dReQ2n*dImQ3n*dImQ4n*dImQ5n*dImQ6n;
e1d101a6 6088 Double_t reQ8nQ2nQ6nstarQ4nstar = dImQ4n*dImQ2n*dImQ8n*dImQ6n+dImQ8n*dImQ6n*dReQ4n*dReQ2n
6089 + dImQ2n*dImQ6n*dReQ4n*dReQ8n-dImQ4n*dImQ6n*dReQ2n*dReQ8n
6090 - dImQ2n*dImQ8n*dReQ4n*dReQ6n+dImQ4n*dImQ8n*dReQ2n*dReQ6n
6091 + dImQ4n*dImQ2n*dReQ8n*dReQ6n+dReQ4n*dReQ2n*dReQ8n*dReQ6n;
6092
6093 // <5>_{4n,4n|3n,3n,2n}:
c10259fb 6094 Double_t reQ4nQ4nQ3nstarQ3nstarQ2nstar = dReQ2n*pow(dReQ3n,2.)*pow(dReQ4n,2.)-2.*dReQ3n*pow(dReQ4n,2.)*dImQ2n*dImQ3n
6095 - dReQ2n*pow(dReQ4n,2.)*pow(dImQ3n,2.)+2.*pow(dReQ3n,2.)*dReQ4n*dImQ2n*dImQ4n
6096 + 4.*dReQ2n*dReQ3n*dReQ4n*dImQ3n*dImQ4n - 2.*dReQ4n*dImQ2n*pow(dImQ3n,2.)*dImQ4n
6097 - dReQ2n*pow(dReQ3n,2.)*pow(dImQ4n,2.) + 2.*dReQ3n*dImQ2n*dImQ3n*pow(dImQ4n,2.)
6098 + dReQ2n*pow(dImQ3n,2.)*pow(dImQ4n,2.);
6099
e1d101a6 6100 // <5>_{5n|2n,1n,1n,1n}:
c10259fb 6101 Double_t reQ5nQ2nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,3.)*dReQ2n*dReQ5n-3.*dReQ1n*dReQ2n*dReQ5n*pow(dImQ1n,2.)
6102 - 3.*pow(dReQ1n,2.)*dReQ5n*dImQ1n*dImQ2n+dReQ5n*pow(dImQ1n,3.)*dImQ2n
6103 + 3.*pow(dReQ1n,2.)*dReQ2n*dImQ1n*dImQ5n-dReQ2n*pow(dImQ1n,3.)*dImQ5n
6104 + pow(dReQ1n,3.)*dImQ2n*dImQ5n-3.*dReQ1n*pow(dImQ1n,2.)*dImQ2n*dImQ5n;
e1d101a6 6105
6106 // <5>_{5n,1n|2n,2n,2n}:
c10259fb 6107 Double_t reQ5nQ1nQ2nstarQ2nstarQ2nstar = dReQ1n*pow(dReQ2n,3.)*dReQ5n+3.*pow(dReQ2n,2.)*dReQ5n*dImQ1n*dImQ2n
6108 - 3.*dReQ1n*dReQ2n*dReQ5n*pow(dImQ2n,2.)-dReQ5n*dImQ1n*pow(dImQ2n,3.)
6109 - pow(dReQ2n,3.)*dImQ1n*dImQ5n+3.*dReQ1n*pow(dReQ2n,2.)*dImQ2n*dImQ5n
6110 + 3.*dReQ2n*dImQ1n*pow(dImQ2n,2.)*dImQ5n-dReQ1n*pow(dImQ2n,3.)*dImQ5n;
e1d101a6 6111
6112
6113 // <5>_{5n,4n|3n,3n,3n}:
c10259fb 6114 Double_t reQ5nQ4nQ3nstarQ3nstarQ3nstar = dReQ4n*pow(dReQ3n,3.)*dReQ5n+3.*pow(dReQ3n,2.)*dReQ5n*dImQ4n*dImQ3n
6115 - 3.*dReQ4n*dReQ3n*dReQ5n*pow(dImQ3n,2.)-dReQ5n*dImQ4n*pow(dImQ3n,3.)
6116 - pow(dReQ3n,3.)*dImQ4n*dImQ5n+3.*dReQ4n*pow(dReQ3n,2.)*dImQ3n*dImQ5n
6117 + 3.*dReQ3n*dImQ4n*pow(dImQ3n,2.)*dImQ5n-dReQ4n*pow(dImQ3n,3.)*dImQ5n;
e1d101a6 6118
6119 Double_t reQ9nQ3nstarQ3nstarQ3nstar = dReQ9n*pow(dReQ3n,3)-3.*dReQ3n*dReQ9n*pow(dImQ3n,2)
6120 + 3.*dImQ3n*dImQ9n*pow(dReQ3n,2)-dImQ9n*pow(dImQ3n,3);
6121 // <5>_{5n,5n|4n,3n,3n}:
c10259fb 6122 Double_t reQ5nQ5nQ4nstarQ3nstarQ3nstar = dReQ4n*pow(dReQ3n,2.)*pow(dReQ5n,2.) - 2.*dReQ3n*pow(dReQ5n,2.)*dImQ4n*dImQ3n
6123 - dReQ4n*pow(dReQ5n,2.)*pow(dImQ3n,2.) + 2.*pow(dReQ3n,2.)*dReQ5n*dImQ4n*dImQ5n
6124 + 4.*dReQ4n*dReQ3n*dReQ5n*dImQ3n*dImQ5n - 2.*dReQ5n*dImQ4n*pow(dImQ3n,2.)*dImQ5n
6125 - dReQ4n*pow(dReQ3n,2.)*pow(dImQ5n,2.) + 2.*dReQ3n*dImQ4n*dImQ3n*pow(dImQ5n,2.)
6126 + dReQ4n*pow(dImQ3n,2.)*pow(dImQ5n,2.);
e1d101a6 6127
6128 // <5>_{5n,5n|4n,4n,2n}:
c10259fb 6129 Double_t reQ5nQ5nQ4nstarQ4nstarQ2nstar = dReQ2n*pow(dReQ4n,2.)*pow(dReQ5n,2.) - 2.*dReQ4n*pow(dReQ5n,2.)*dImQ2n*dImQ4n
6130 - dReQ2n*pow(dReQ5n,2.)*pow(dImQ4n,2.) + 2.*pow(dReQ4n,2.)*dReQ5n*dImQ2n*dImQ5n
6131 + 4.*dReQ2n*dReQ4n*dReQ5n*dImQ4n*dImQ5n - 2.*dReQ5n*dImQ2n*pow(dImQ4n,2.)*dImQ5n
6132 - dReQ2n*pow(dReQ4n,2.)*pow(dImQ5n,2.) + 2.*dReQ4n*dImQ2n*dImQ4n*pow(dImQ5n,2.)
6133 + dReQ2n*pow(dImQ4n,2.)*pow(dImQ5n,2.);
e1d101a6 6134 Double_t reQ10nQ4nstarQ4nstarQ2nstar = (dReQ10n*dReQ2n+dImQ10n*dImQ2n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6135 + 2.*dReQ4n*dImQ4n*(dImQ10n*dReQ2n-dReQ10n*dImQ2n);
6136 // <5>_{6n|3n,1n,1n,1n}:
c10259fb 6137 Double_t reQ6nQ3nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,3.)*dReQ3n*dReQ6n-3.*dReQ1n*dReQ3n*dReQ6n*pow(dImQ1n,2.)
6138 - 3.*pow(dReQ1n,2.)*dReQ6n*dImQ1n*dImQ3n+dReQ6n*pow(dImQ1n,3.)*dImQ3n
6139 + 3.*pow(dReQ1n,2.)*dReQ3n*dImQ1n*dImQ6n-dReQ3n*pow(dImQ1n,3.)*dImQ6n
6140 + pow(dReQ1n,3.)*dImQ3n*dImQ6n-3.*dReQ1n*pow(dImQ1n,2.)*dImQ3n*dImQ6n;
e1d101a6 6141 // <5>_{6n,1n,1n|4n,4n}:
c10259fb 6142 Double_t reQ6nQ1nQ1nQ4nstarQ4nstar = pow(dReQ1n,2.)*pow(dReQ4n,2.)*dReQ6n - pow(dReQ4n,2.)*dReQ6n*pow(dImQ1n,2.)
6143 + 4.*dReQ1n*dReQ4n*dReQ6n*dImQ1n*dImQ4n - pow(dReQ1n,2.)*dReQ6n*pow(dImQ4n,2.)
6144 + dReQ6n*pow(dImQ1n,2.)*pow(dImQ4n,2.) - 2.*dReQ1n*pow(dReQ4n,2.)*dImQ1n*dImQ6n
6145 + 2.*pow(dReQ1n,2.)*dReQ4n*dImQ4n*dImQ6n - 2.*dReQ4n*pow(dImQ1n,2.)*dImQ4n*dImQ6n
6146 + 2.*dReQ1n*dImQ1n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6147
6148
6149 // <5>_{6n,2n,2n|5n,5n}:
c10259fb 6150 Double_t reQ6nQ2nQ2nQ5nstarQ5nstar = pow(dReQ2n,2.)*pow(dReQ5n,2.)*dReQ6n - pow(dReQ5n,2.)*dReQ6n*pow(dImQ2n,2.)
6151 + 4.*dReQ2n*dReQ5n*dReQ6n*dImQ2n*dImQ5n - pow(dReQ2n,2.)*dReQ6n*pow(dImQ5n,2.)
6152 + dReQ6n*pow(dImQ2n,2.)*pow(dImQ5n,2.) - 2.*dReQ2n*pow(dReQ5n,2.)*dImQ2n*dImQ6n
6153 + 2.*pow(dReQ2n,2.)*dReQ5n*dImQ5n*dImQ6n - 2.*dReQ5n*pow(dImQ2n,2.)*dImQ5n*dImQ6n
6154 + 2.*dReQ2n*dImQ2n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 6155 Double_t reQ10nQ6nstarQ2nstarQ2nstar = (dReQ10n*dReQ6n+dImQ10n*dImQ6n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
6156 + 2.*dReQ2n*dImQ2n*(dImQ10n*dReQ6n-dReQ10n*dImQ6n);
6157 // <5>_{6n,6n|5n,5n,2n}:
c10259fb 6158 Double_t reQ6nQ6nQ5nstarQ5nstarQ2nstar = dReQ2n*pow(dReQ5n,2.)*pow(dReQ6n,2.) - 2.*dReQ5n*pow(dReQ6n,2.)*dImQ2n*dImQ5n
6159 - dReQ2n*pow(dReQ6n,2.)*pow(dImQ5n,2.) + 2.*pow(dReQ5n,2.)*dReQ6n*dImQ2n*dImQ6n
6160 + 4.*dReQ2n*dReQ5n*dReQ6n*dImQ5n*dImQ6n - 2.*dReQ6n*dImQ2n*pow(dImQ5n,2.)*dImQ6n
6161 - dReQ2n*pow(dReQ5n,2.)*pow(dImQ6n,2.) + 2.*dReQ5n*dImQ2n*dImQ5n*pow(dImQ6n,2.)
6162 + dReQ2n*pow(dImQ5n,2.)*pow(dImQ6n,2.);
e1d101a6 6163 Double_t reQ10nQ2nQ6nstarQ6nstar = dImQ2n*pow(dImQ6n,2.)*dImQ10n+2.*dImQ6n*dImQ10n*dReQ2n*dReQ6n
6164 - dImQ2n*dImQ10n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ2n*dReQ10n
6165 + 2.*dImQ2n*dImQ6n*dReQ6n*dReQ10n+dReQ2n*pow(dReQ6n,2.)*dReQ10n;
e1d101a6 6166 Double_t reQ12nQ5nstarQ5nstarQ2nstar = (dReQ12n*dReQ2n+dImQ12n*dImQ2n)*(pow(dReQ5n,2)-pow(dImQ5n,2))
6167 + 2.*dReQ5n*dImQ5n*(dImQ12n*dReQ2n-dReQ12n*dImQ2n);
e1d101a6 6168 Double_t reQ12nQ10nstarQ2nstar = dReQ12n*dReQ10n*dReQ2n-dReQ12n*dImQ10n*dImQ2n+dImQ12n*dReQ10n*dImQ2n
6169 + dImQ12n*dImQ10n*dReQ2n;
e1d101a6 6170 // <5>_{5n,2n|3n,3n,1n}:
c10259fb 6171 Double_t reQ5nQ2nQ3nstarQ3nstarQ1nstar = dReQ1n*dReQ2n*pow(dReQ3n,2.)*dReQ5n + pow(dReQ3n,2.)*dReQ5n*dImQ1n*dImQ2n
6172 - 2.*dReQ2n*dReQ3n*dReQ5n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ2n*dImQ3n
6173 - dReQ1n*dReQ2n*dReQ5n*pow(dImQ3n,2.) - dReQ5n*dImQ1n*dImQ2n*pow(dImQ3n,2.)
6174 + dReQ2n*pow(dReQ3n,2.)*dImQ1n*dImQ5n - dReQ1n*pow(dReQ3n,2.)*dImQ2n*dImQ5n
6175 + 2.*dReQ1n*dReQ2n*dReQ3n*dImQ3n*dImQ5n + 2.*dReQ3n*dImQ1n*dImQ2n*dImQ3n*dImQ5n
6176 - dReQ2n*dImQ1n*pow(dImQ3n,2.)*dImQ5n + dReQ1n*dImQ2n*pow(dImQ3n,2.)*dImQ5n;
e1d101a6 6177 // <5>_{5n,1n,1n|4n,3n}:
c10259fb 6178 Double_t reQ5nQ1nQ1nQ4nstarQ3nstar = pow(dReQ1n,2.)*dReQ3n*dReQ4n*dReQ5n - dReQ3n*dReQ4n*dReQ5n*pow(dImQ1n,2.)
6179 + 2.*dReQ1n*dReQ4n*dReQ5n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ1n*dImQ4n
6180 - pow(dReQ1n,2.)*dReQ5n*dImQ3n*dImQ4n + dReQ5n*pow(dImQ1n,2.)*dImQ3n*dImQ4n
6181 - 2.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ5n + pow(dReQ1n,2.)*dReQ4n*dImQ3n*dImQ5n
6182 - dReQ4n*pow(dImQ1n,2.)*dImQ3n*dImQ5n + pow(dReQ1n,2.)*dReQ3n*dImQ4n*dImQ5n
e1d101a6 6183 - dReQ3n*pow(dImQ1n,2.)*dImQ4n*dImQ5n + 2.*dReQ1n*dImQ1n*dImQ3n*dImQ4n*dImQ5n;
6184 // <5>_{5n,3n|4n,2n,2n}:
c10259fb 6185 Double_t reQ5nQ3nQ4nstarQ2nstarQ2nstar = dReQ4n*dReQ3n*pow(dReQ2n,2.)*dReQ5n + pow(dReQ2n,2.)*dReQ5n*dImQ4n*dImQ3n
6186 - 2.*dReQ3n*dReQ2n*dReQ5n*dImQ4n*dImQ2n + 2.*dReQ4n*dReQ2n*dReQ5n*dImQ3n*dImQ2n
6187 - dReQ4n*dReQ3n*dReQ5n*pow(dImQ2n,2.) - dReQ5n*dImQ4n*dImQ3n*pow(dImQ2n,2.)
6188 + dReQ3n*pow(dReQ2n,2.)*dImQ4n*dImQ5n - dReQ4n*pow(dReQ2n,2.)*dImQ3n*dImQ5n
6189 + 2.*dReQ4n*dReQ3n*dReQ2n*dImQ2n*dImQ5n + 2.*dReQ2n*dImQ4n*dImQ3n*dImQ2n*dImQ5n
6190 - dReQ3n*dImQ4n*pow(dImQ2n,2.)*dImQ5n + dReQ4n*dImQ3n*pow(dImQ2n,2.)*dImQ5n;
e1d101a6 6191 Double_t reQ8nQ4nstarQ2nstarQ2nstar = (dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
6192 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n);
6193 // <5>_{5n,2n,1n|4n,4n}:
c10259fb 6194 Double_t reQ5nQ2nQ1nQ4nstarQ4nstar = dReQ1n*dReQ2n*pow(dReQ4n,2.)*dReQ5n - pow(dReQ4n,2.)*dReQ5n*dImQ1n*dImQ2n
6195 + 2.*dReQ2n*dReQ4n*dReQ5n*dImQ1n*dImQ4n + 2.*dReQ1n*dReQ4n*dReQ5n*dImQ2n*dImQ4n
6196 - dReQ1n*dReQ2n*dReQ5n*pow(dImQ4n,2.) + dReQ5n*dImQ1n*dImQ2n*pow(dImQ4n,2.)
6197 - dReQ2n*pow(dReQ4n,2.)*dImQ1n*dImQ5n - dReQ1n*pow(dReQ4n,2.)*dImQ2n*dImQ5n
6198 + 2.*dReQ1n*dReQ2n*dReQ4n*dImQ4n*dImQ5n - 2.*dReQ4n*dImQ1n*dImQ2n*dImQ4n*dImQ5n
6199 + dReQ2n*dImQ1n*pow(dImQ4n,2.)*dImQ5n + dReQ1n*dImQ2n*pow(dImQ4n,2.)*dImQ5n;
e1d101a6 6200 // <5>_{6n,1n|3n,2n,2n}:
c10259fb 6201 Double_t reQ6nQ1nQ3nstarQ2nstarQ2nstar = dReQ3n*dReQ1n*pow(dReQ2n,2.)*dReQ6n + pow(dReQ2n,2.)*dReQ6n*dImQ3n*dImQ1n
6202 - 2.*dReQ1n*dReQ2n*dReQ6n*dImQ3n*dImQ2n + 2.*dReQ3n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
6203 - dReQ3n*dReQ1n*dReQ6n*pow(dImQ2n,2.) - dReQ6n*dImQ3n*dImQ1n*pow(dImQ2n,2.)
6204 + dReQ1n*pow(dReQ2n,2.)*dImQ3n*dImQ6n - dReQ3n*pow(dReQ2n,2.)*dImQ1n*dImQ6n
6205 + 2.*dReQ3n*dReQ1n*dReQ2n*dImQ2n*dImQ6n + 2.*dReQ2n*dImQ3n*dImQ1n*dImQ2n*dImQ6n
6206 - dReQ1n*dImQ3n*pow(dImQ2n,2.)*dImQ6n + dReQ3n*dImQ1n*pow(dImQ2n,2.)*dImQ6n;
e1d101a6 6207
6208 // <5>_{6n,3n|4n,4n,1n}:
c10259fb 6209 Double_t reQ6nQ3nQ4nstarQ4nstarQ1nstar = dReQ1n*dReQ3n*pow(dReQ4n,2.)*dReQ6n + pow(dReQ4n,2.)*dReQ6n*dImQ1n*dImQ3n
6210 - 2.*dReQ3n*dReQ4n*dReQ6n*dImQ1n*dImQ4n + 2.*dReQ1n*dReQ4n*dReQ6n*dImQ3n*dImQ4n
6211 - dReQ1n*dReQ3n*dReQ6n*pow(dImQ4n,2.) - dReQ6n*dImQ1n*dImQ3n*pow(dImQ4n,2.)
6212 + dReQ3n*pow(dReQ4n,2.)*dImQ1n*dImQ6n - dReQ1n*pow(dReQ4n,2.)*dImQ3n*dImQ6n
6213 + 2.*dReQ1n*dReQ3n*dReQ4n*dImQ4n*dImQ6n + 2.*dReQ4n*dImQ1n*dImQ3n*dImQ4n*dImQ6n
6214 - dReQ3n*dImQ1n*pow(dImQ4n,2.)*dImQ6n + dReQ1n*dImQ3n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6215
6216 // five6n1n1n5n3n = 0.; // <5>_{6n,1n,1n|5n,3n} = <cos(n(6*phi1+1*phi2+1*phi3-5*phi4-3*phi5))>
c10259fb 6217 Double_t reQ6nQ1nQ1nQ5nstarQ3nstar = pow(dReQ1n,2.)*dReQ3n*dReQ5n*dReQ6n - dReQ3n*dReQ5n*dReQ6n*pow(dImQ1n,2.)
6218 + 2.*dReQ1n*dReQ5n*dReQ6n*dImQ1n*dImQ3n + 2.*dReQ1n*dReQ3n*dReQ6n*dImQ1n*dImQ5n
6219 - pow(dReQ1n,2.)*dReQ6n*dImQ3n*dImQ5n + dReQ6n*pow(dImQ1n,2.)*dImQ3n*dImQ5n
6220 - 2.*dReQ1n*dReQ3n*dReQ5n*dImQ1n*dImQ6n + pow(dReQ1n,2.)*dReQ5n*dImQ3n*dImQ6n
6221 - dReQ5n*pow(dImQ1n,2.)*dImQ3n*dImQ6n + pow(dReQ1n,2.)*dReQ3n*dImQ5n*dImQ6n
e1d101a6 6222 - dReQ3n*pow(dImQ1n,2.)*dImQ5n*dImQ6n + 2.*dReQ1n*dImQ1n*dImQ3n*dImQ5n*dImQ6n;
6223
6224 // <5>_{6n,3n|5n,2n,2n}:
c10259fb 6225 Double_t reQ6nQ3nQ5nstarQ2nstarQ2nstar = dReQ5n*dReQ3n*pow(dReQ2n,2.)*dReQ6n + pow(dReQ2n,2.)*dReQ6n*dImQ5n*dImQ3n
6226 - 2.*dReQ3n*dReQ2n*dReQ6n*dImQ5n*dImQ2n + 2.*dReQ5n*dReQ2n*dReQ6n*dImQ3n*dImQ2n
6227 - dReQ5n*dReQ3n*dReQ6n*pow(dImQ2n,2.) - dReQ6n*dImQ5n*dImQ3n*pow(dImQ2n,2.)
6228 + dReQ3n*pow(dReQ2n,2.)*dImQ5n*dImQ6n - dReQ5n*pow(dReQ2n,2.)*dImQ3n*dImQ6n
6229 + 2.*dReQ5n*dReQ3n*dReQ2n*dImQ2n*dImQ6n + 2.*dReQ2n*dImQ5n*dImQ3n*dImQ2n*dImQ6n
6230 - dReQ3n*dImQ5n*pow(dImQ2n,2.)*dImQ6n + dReQ5n*dImQ3n*pow(dImQ2n,2.)*dImQ6n;
e1d101a6 6231
6232 // <5>_{6n,5n|4n,4n,3n}:
c10259fb 6233 Double_t reQ6nQ5nQ4nstarQ4nstarQ3nstar = dReQ3n*dReQ5n*pow(dReQ4n,2.)*dReQ6n + pow(dReQ4n,2.)*dReQ6n*dImQ3n*dImQ5n
6234 - 2.*dReQ5n*dReQ4n*dReQ6n*dImQ3n*dImQ4n + 2.*dReQ3n*dReQ4n*dReQ6n*dImQ5n*dImQ4n
6235 - dReQ3n*dReQ5n*dReQ6n*pow(dImQ4n,2.) - dReQ6n*dImQ3n*dImQ5n*pow(dImQ4n,2.)
6236 + dReQ5n*pow(dReQ4n,2.)*dImQ3n*dImQ6n - dReQ3n*pow(dReQ4n,2.)*dImQ5n*dImQ6n
6237 + 2.*dReQ3n*dReQ5n*dReQ4n*dImQ4n*dImQ6n + 2.*dReQ4n*dImQ3n*dImQ5n*dImQ4n*dImQ6n
6238 - dReQ5n*dImQ3n*pow(dImQ4n,2.)*dImQ6n + dReQ3n*dImQ5n*pow(dImQ4n,2.)*dImQ6n;
e1d101a6 6239 Double_t reQ11nQ4nstarQ4nstarQ3nstar = (dReQ11n*dReQ3n+dImQ11n*dImQ3n)*(pow(dReQ4n,2)-pow(dImQ4n,2))
6240 + 2.*dReQ4n*dImQ4n*(dImQ11n*dReQ3n-dReQ11n*dImQ3n);
6241
c10259fb 6242 // <5>_{6n,3n,1n|5n,5n}:
6243 Double_t reQ6nQ3nQ1nQ5nstarQ5nstar = dReQ1n*dReQ3n*pow(dReQ5n,2.)*dReQ6n - pow(dReQ5n,2.)*dReQ6n*dImQ1n*dImQ3n
6244 + 2.*dReQ3n*dReQ5n*dReQ6n*dImQ1n*dImQ5n + 2.*dReQ1n*dReQ5n*dReQ6n*dImQ3n*dImQ5n
6245 - dReQ1n*dReQ3n*dReQ6n*pow(dImQ5n,2.) + dReQ6n*dImQ1n*dImQ3n*pow(dImQ5n,2.)
6246 - dReQ3n*pow(dReQ5n,2.)*dImQ1n*dImQ6n - dReQ1n*pow(dReQ5n,2.)*dImQ3n*dImQ6n
6247 + 2.*dReQ1n*dReQ3n*dReQ5n*dImQ5n*dImQ6n - 2.*dReQ5n*dImQ1n*dImQ3n*dImQ5n*dImQ6n
6248 + dReQ3n*dImQ1n*pow(dImQ5n,2.)*dImQ6n + dReQ1n*dImQ3n*pow(dImQ5n,2.)*dImQ6n;
e1d101a6 6249
6250 // <5>_{6n,6n|5n,4n,3n}:
c10259fb 6251 Double_t reQ6nQ6nQ5nstarQ4nstarQ3nstar = dReQ3n*dReQ4n*dReQ5n*pow(dReQ6n,2.) - dReQ5n*pow(dReQ6n,2.)*dImQ3n*dImQ4n
6252 - dReQ4n*pow(dReQ6n,2.)*dImQ3n*dImQ5n - dReQ3n*pow(dReQ6n,2.)*dImQ4n*dImQ5n
6253 + 2.*dReQ4n*dReQ5n*dReQ6n*dImQ3n*dImQ6n + 2.*dReQ3n*dReQ5n*dReQ6n*dImQ4n*dImQ6n
6254 + 2.*dReQ3n*dReQ4n*dReQ6n*dImQ5n*dImQ6n - 2.*dReQ6n*dImQ3n*dImQ4n*dImQ5n*dImQ6n
6255 - dReQ3n*dReQ4n*dReQ5n*pow(dImQ6n,2.) + dReQ5n*dImQ3n*dImQ4n*pow(dImQ6n,2.)
6256 + dReQ4n*dImQ3n*dImQ5n*pow(dImQ6n,2.) + dReQ3n*dImQ4n*dImQ5n*pow(dImQ6n,2.);
e1d101a6 6257
6258
6259 Double_t reQ8nQ4nQ6nstarQ6nstar = dImQ4n*pow(dImQ6n,2.)*dImQ8n+2.*dImQ6n*dImQ8n*dReQ4n*dReQ6n
6260 - dImQ4n*dImQ8n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ4n*dReQ8n
6261 + 2.*dImQ4n*dImQ6n*dReQ6n*dReQ8n+dReQ4n*pow(dReQ6n,2.)*dReQ8n;
6262
6263
6264 Double_t reQ9nQ3nQ6nstarQ6nstar = dImQ3n*pow(dImQ6n,2.)*dImQ9n+2.*dImQ6n*dImQ9n*dReQ3n*dReQ6n
6265 - dImQ3n*dImQ9n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ3n*dReQ9n
6266 + 2.*dImQ3n*dImQ6n*dReQ6n*dReQ9n+dReQ3n*pow(dReQ6n,2.)*dReQ9n;
6267
6268
c10259fb 6269 Double_t reQ12nQ5nstarQ4nstarQ3nstar = dReQ3n*dReQ5n*dReQ4n*dReQ12n-dReQ4n*dReQ12n*dImQ3n*dImQ5n
6270 - dReQ5n*dReQ12n*dImQ3n*dImQ4n-dReQ3n*dReQ12n*dImQ5n*dImQ4n
6271 + dReQ5n*dReQ4n*dImQ3n*dImQ12n+dReQ3n*dReQ4n*dImQ5n*dImQ12n
6272 + dReQ3n*dReQ5n*dImQ4n*dImQ12n-dImQ3n*dImQ5n*dImQ4n*dImQ12n;
e1d101a6 6273 Double_t reQ12nQ9nstarQ3nstar = dReQ12n*dReQ9n*dReQ3n-dReQ12n*dImQ9n*dImQ3n+dImQ12n*dReQ9n*dImQ3n
6274 + dImQ12n*dImQ9n*dReQ3n;
e1d101a6 6275 Double_t reQ12nQ8nstarQ4nstar = dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n
6276 + dImQ12n*dImQ8n*dReQ4n;
6277
6278
6279 five4n3n3n2n2n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))
6280 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
6281 - ((dReQ7n*dReQ3n+dImQ7n*dImQ3n)*(pow(dReQ2n,2.)-pow(dImQ2n,2.))
6282 + 2.*dReQ2n*dImQ2n*(dImQ7n*dReQ3n-dReQ7n*dImQ3n))
6283 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
6284 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6285 - 2.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
6286 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
6287 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
6288 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
6289 - 2.*(dImQ2n*dImQ3n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ2n*dReQ3n
6290 + dImQ3n*dImQ5n*dReQ2n*dReQ4n-dImQ2n*dImQ5n*dReQ3n*dReQ4n
6291 - dImQ3n*dImQ4n*dReQ2n*dReQ5n+dImQ2n*dImQ4n*dReQ3n*dReQ5n
6292 + dImQ2n*dImQ3n*dReQ4n*dReQ5n+dReQ2n*dReQ3n*dReQ4n*dReQ5n)
6293 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6294 + 1.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6295 + 3.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6296 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
6297 + 2.*(dReQ7n*dReQ5n*dReQ2n-dReQ7n*dImQ5n*dImQ2n+dImQ7n*dReQ5n*dImQ2n+dImQ7n*dImQ5n*dReQ2n)
6298 + 2.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6299 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6300 + 6.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6301 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6302 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6303 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6304 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6305 - 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6306 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6307 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6308 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6309 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6310 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6311 - 2.*dMult*(dMult-12.))
6312 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6313 five4n2n4n1n1n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))
6314 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6315 - reQ6nQ4nstarQ1nstarQ1nstar
6316 - reQ4nQ2nstarQ1nstarQ1nstar
6317 - 2.*reQ4nQ1nQ3nstarQ2nstar
6318 - 2.*reQ5nQ1nQ4nstarQ2nstar
6319 + 2.*reQ3nQ2nstarQ1nstar
6320 + reQ6nQ4nstarQ2nstar
6321 + 3.*reQ4nQ2nstarQ2nstar
6322 + 2.*reQ5nQ3nstarQ2nstar
6323 + 2.*reQ6nQ5nstarQ1nstar
6324 + 2.*reQ6nQ4nstarQ2nstar
6325 + 6.*reQ4nQ3nstarQ1nstar
6326 + 6.*reQ5nQ4nstarQ1nstar
6327 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6328 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6329 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6330 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6331 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6332 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6333 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6334 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6335 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6336 // to be polished:
6337 five4n3n4n2n1n = (reQ4nQ3nQ4nstarQ2nstarQ1nstar
6338 - reQ5nQ2nQ4nstarQ3nstar
6339 - reQ6nQ1nQ4nstarQ3nstar
6340 - reQ4nQ1nQ3nstarQ2nstar
6341 - reQ7nQ4nstarQ2nstarQ1nstar
6342 - reQ4nQ2nstarQ1nstarQ1nstar
6343 - reQ4nQ2nQ3nstarQ3nstar
6344 + reQ4nQ3nstarQ1nstar
6345 + reQ7nQ4nstarQ3nstar
6346 + 3.*reQ4nQ3nstarQ1nstar
6347 + 2.*reQ7nQ4nstarQ3nstar
6348 + reQ5nQ3nstarQ2nstar
6349 + reQ7nQ5nstarQ2nstar
6350 + reQ6nQ3nstarQ3nstar
6351 + reQ4nQ3nstarQ1nstar
6352 + reQ7nQ6nstarQ1nstar
6353 + reQ2nQ1nstarQ1nstar
6354 - (dMult-6.)*reQ3nQ2nstarQ1nstar
6355 + 3.*reQ5nQ4nstarQ1nstar
6356 + reQ4nQ3nstarQ1nstar
6357 + 2.*reQ4nQ2nstarQ2nstar
6358 + 3.*reQ6nQ4nstarQ2nstar
6359 + reQ3nQ2nstarQ1nstar
6360 + reQ4nQ2nstarQ2nstar
6361 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6362 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6363 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6364 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6365 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6366 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6367 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6368 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6369 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6370 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6371 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6372 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6373 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6374 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6375 five5n1n3n2n1n = ((pow(dImQ1n,2.)+pow(dReQ1n,2.))*(dImQ3n*dImQ5n*dReQ2n+dImQ2n*dImQ5n*dReQ3n
6376 - dImQ2n*dImQ3n*dReQ5n+dReQ2n*dReQ3n*dReQ5n)
6377 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6378 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6379 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6380 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6381 - (dImQ1n*dImQ2n*dImQ4n*dImQ5n+dImQ4n*dImQ5n*dReQ1n*dReQ2n
6382 + dImQ2n*dImQ5n*dReQ1n*dReQ4n-dImQ1n*dImQ5n*dReQ2n*dReQ4n
6383 - dImQ2n*dImQ4n*dReQ1n*dReQ5n+dImQ1n*dImQ4n*dReQ2n*dReQ5n
6384 + dImQ1n*dImQ2n*dReQ4n*dReQ5n+dReQ1n*dReQ2n*dReQ4n*dReQ5n)
6385 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
6386 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
6387 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
6388 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
6389 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
6390 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
6391 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
6392 - (-pow(dImQ1n,2.)*dImQ3n*dImQ5n+dImQ3n*dImQ5n*pow(dReQ1n,2.)
6393 + 2.*dImQ1n*dImQ5n*dReQ1n*dReQ3n-2.*dImQ1n*dImQ3n*dReQ1n*dReQ5n
6394 - pow(dImQ1n,2.)*dReQ3n*dReQ5n+pow(dReQ1n,2.)*dReQ3n*dReQ5n)
6395 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
6396 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
6397 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
6398 + 3.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
6399 + dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n
6400 + pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n
6401 + 4.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
6402 - (dMult-7.)*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6403 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6404 + pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
6405 + 6.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6406 + 3.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6407 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6408 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6409 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6410 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6411 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6412 + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6413 - 2.*dMult*(dMult-12.))
6414 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6415 // to be polished:
6416 five5n2n5n1n1n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6417 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6418 - reQ7nQ5nstarQ1nstarQ1nstar
6419 - reQ5nQ3nstarQ1nstarQ1nstar
6420 - 2.*reQ5nQ1nQ4nstarQ2nstar
6421 - 2.*reQ6nQ1nQ5nstarQ2nstar
6422 + 2.*reQ4nQ3nstarQ1nstar
6423 + reQ7nQ5nstarQ2nstar
6424 + 3.*reQ5nQ3nstarQ2nstar
6425 + 2.*reQ6nQ4nstarQ2nstar
6426 + 2.*reQ7nQ6nstarQ1nstar
6427 + 2.*reQ7nQ5nstarQ2nstar
6428 + 6.*reQ5nQ4nstarQ1nstar
6429 + 6.*reQ6nQ5nstarQ1nstar
6430 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6431 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6432 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6433 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))-4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6434 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6435 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6436 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6437 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6438 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6439 // to be polished:
6440 five5n2n4n2n1n = (reQ5nQ2nQ4nstarQ2nstarQ1nstar
6441 - reQ5nQ2nQ4nstarQ3nstar
6442 - reQ6nQ1nQ5nstarQ2nstar
6443 - reQ5nQ2nstarQ2nstarQ1nstar
6444 - reQ7nQ4nstarQ2nstarQ1nstar
6445 - reQ4nQ1nQ3nstarQ2nstar
6446 - reQ5nQ1nQ4nstarQ2nstar
6447 + reQ2nQ1nstarQ1nstar
6448 + reQ7nQ5nstarQ2nstar
6449 + 3.*reQ5nQ3nstarQ2nstar
6450 + 2.*reQ7nQ5nstarQ2nstar
6451 + reQ5nQ3nstarQ2nstar
6452 + reQ7nQ4nstarQ3nstar
6453 + reQ6nQ5nstarQ1nstar
6454 + reQ2nQ1nstarQ1nstar
6455 + reQ7nQ6nstarQ1nstar
6456 + reQ3nQ2nstarQ1nstar
6457 - (dMult-6.)*reQ5nQ4nstarQ1nstar
6458 + 3.*reQ3nQ2nstarQ1nstar
6459 + reQ2nQ1nstarQ1nstar
6460 + 2.*reQ4nQ2nstarQ2nstar
6461 + 3.*reQ6nQ4nstarQ2nstar
6462 + reQ4nQ3nstarQ1nstar
6463 + reQ4nQ2nstarQ2nstar
6464 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6465 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6466 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6467 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6468 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6469 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6470 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6471 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6472 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6473 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6474 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6475 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6476 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
6477 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6478 // to be polished:
6479 five5n3n4n3n1n = (reQ5nQ3nQ4nstarQ3nstarQ1nstar
6480 - reQ5nQ3nQ4nstarQ4nstar
6481 - reQ7nQ1nQ5nstarQ3nstar
6482 - reQ5nQ3nstarQ1nstarQ1nstar
6483 - reQ8nQ4nstarQ3nstarQ1nstar
6484 - reQ4nQ1nQ3nstarQ2nstar
6485 - reQ5nQ2nQ4nstarQ3nstar
6486 + reQ3nQ2nstarQ1nstar
6487 + reQ8nQ5nstarQ3nstar
6488 + 3.*reQ5nQ3nstarQ2nstar
6489 + 2.*reQ8nQ5nstarQ3nstar
6490 + reQ5nQ4nstarQ1nstar
6491 + reQ8nQ4nstarQ4nstar
6492 + reQ7nQ5nstarQ2nstar
6493 + reQ3nQ2nstarQ1nstar
6494 + reQ8nQ7nstarQ1nstar
6495 + reQ2nQ1nstarQ1nstar
6496 - (dMult-6.)*reQ5nQ4nstarQ1nstar
6497 + 3.*reQ4nQ3nstarQ1nstar
6498 + reQ3nQ2nstarQ1nstar
6499 + 2.*reQ4nQ3nstarQ1nstar
6500 + 3.*reQ7nQ4nstarQ3nstar
6501 + reQ4nQ2nstarQ2nstar
6502 + reQ4nQ3nstarQ1nstar
6503 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6504 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6505 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6506 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6507 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6508 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6509 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6510 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6511 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6512 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6513 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6514 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6515 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6516 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6517 // to be polished:
6518 five5n4n4n3n2n = (reQ5nQ4nQ4nstarQ3nstarQ2nstar
6519 - reQ6nQ3nQ5nstarQ4nstar
6520 - reQ7nQ2nQ5nstarQ4nstar
6521 - reQ5nQ1nQ4nstarQ2nstar
6522 - reQ9nQ4nstarQ3nstarQ2nstar
6523 - reQ4nQ1nQ3nstarQ2nstar
6524 - reQ5nQ2nQ4nstarQ3nstar
6525 + reQ4nQ2nstarQ2nstar
6526 + reQ9nQ5nstarQ4nstar
6527 + 3.*reQ5nQ4nstarQ1nstar
6528 + 2.*reQ9nQ5nstarQ4nstar
6529 + reQ6nQ5nstarQ1nstar
6530 + reQ9nQ6nstarQ3nstar
6531 + reQ7nQ5nstarQ2nstar
6532 + reQ4nQ2nstarQ2nstar
6533 + reQ9nQ7nstarQ2nstar
6534 + reQ2nQ1nstarQ1nstar
6535 - (dMult-6.)*reQ5nQ3nstarQ2nstar
6536 + 3.*reQ6nQ4nstarQ2nstar
6537 + reQ4nQ2nstarQ2nstar
6538 + 2.*reQ4nQ3nstarQ1nstar
6539 + 3.*reQ7nQ4nstarQ3nstar
6540 + reQ3nQ2nstarQ1nstar
6541 + reQ4nQ3nstarQ1nstar
6542 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6543 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6544 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6545 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6546 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6547 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6548 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6549 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6550 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6551 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6552 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6553 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6554 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6555 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6556 // to be polished:
6557 five5n3n5n2n1n = (reQ5nQ3nQ5nstarQ2nstarQ1nstar
6558 - reQ6nQ2nQ5nstarQ3nstar
6559 - reQ7nQ1nQ5nstarQ3nstar
6560 - reQ5nQ1nQ3nstarQ3nstar
6561 - reQ8nQ5nstarQ2nstarQ1nstar
6562 - reQ5nQ2nstarQ2nstarQ1nstar
6563 - reQ5nQ2nQ4nstarQ3nstar
6564 + reQ5nQ4nstarQ1nstar
6565 + reQ8nQ5nstarQ3nstar
6566 + 3.*reQ5nQ3nstarQ2nstar
6567 + 2.*reQ8nQ5nstarQ3nstar
6568 + reQ6nQ3nstarQ3nstar
6569 + reQ8nQ6nstarQ2nstar
6570 + reQ7nQ4nstarQ3nstar
6571 + reQ5nQ4nstarQ1nstar
6572 + reQ8nQ7nstarQ1nstar
6573 + reQ3nQ2nstarQ1nstar
6574 - (dMult-6.)*reQ3nQ2nstarQ1nstar
6575 + 3.*reQ6nQ5nstarQ1nstar
6576 + reQ5nQ4nstarQ1nstar
6577 + 2.*reQ5nQ3nstarQ2nstar
6578 + 3.*reQ7nQ5nstarQ2nstar
6579 + reQ4nQ2nstarQ2nstar
6580 + reQ5nQ3nstarQ2nstar
6581 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6582 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6583 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6584 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6585 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6586 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6587 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6588 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6589 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6590 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6591 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6592 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6593 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6594 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6595 // to be polished:
6596 five5n4n5n2n2n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6597 * (pow(dReQ2n,2.)*dReQ4n-pow(dImQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n)
6598 - reQ9nQ5nstarQ2nstarQ2nstar
6599 - reQ5nQ2nstarQ2nstarQ1nstar
6600 - 2.*reQ5nQ2nQ4nstarQ3nstar
6601 - 2.*reQ7nQ2nQ5nstarQ4nstar
6602 + 2.*reQ3nQ2nstarQ1nstar
6603 + reQ9nQ5nstarQ4nstar
6604 + 3.*reQ5nQ4nstarQ1nstar
6605 + 2.*reQ7nQ4nstarQ3nstar
6606 + 2.*reQ9nQ7nstarQ2nstar
6607 + 2.*reQ9nQ5nstarQ4nstar
6608 + 6.*reQ5nQ3nstarQ2nstar
6609 + 6.*reQ7nQ5nstarQ2nstar
6610 - (dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
6611 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6612 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6613 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6614 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6615 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6616 + 2.*(dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6617 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6618 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6619 // to be polished:
6620 five5n4n5n3n1n = (reQ5nQ4nQ5nstarQ3nstarQ1nstar
6621 - reQ6nQ3nQ5nstarQ4nstar
6622 - reQ8nQ1nQ5nstarQ4nstar
6623 - reQ5nQ1nQ4nstarQ2nstar
6624 - reQ9nQ5nstarQ3nstarQ1nstar
6625 - reQ5nQ3nstarQ1nstarQ1nstar
6626 - reQ5nQ3nQ4nstarQ4nstar
6627 + reQ5nQ4nstarQ1nstar
6628 + reQ9nQ5nstarQ4nstar
6629 + 3.*reQ5nQ4nstarQ1nstar
6630 + 2.*reQ9nQ5nstarQ4nstar
6631 + reQ6nQ4nstarQ2nstar
6632 + reQ9nQ6nstarQ3nstar
6633 + reQ8nQ4nstarQ4nstar
6634 + reQ5nQ4nstarQ1nstar
6635 + reQ9nQ8nstarQ1nstar
6636 + reQ2nQ1nstarQ1nstar
6637 - (dMult-6.)*reQ4nQ3nstarQ1nstar
6638 + 3.*reQ6nQ5nstarQ1nstar
6639 + reQ5nQ4nstarQ1nstar
6640 + 2.*reQ5nQ3nstarQ2nstar
6641 + 3.*reQ8nQ5nstarQ3nstar
6642 + reQ4nQ3nstarQ1nstar
6643 + reQ5nQ3nstarQ2nstar
6644 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6645 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6646 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6647 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6648 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6649 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6650 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6651 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6652 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6653 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6654 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6655 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6656 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6657 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6658 five6n1n3n3n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))
6659 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6660 - 2.*(dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
6661 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
6662 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
6663 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n)
6664 - 2.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6665 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6666 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6667 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6668 - (-pow(dImQ3n,2.)*dImQ1n*dImQ7n+dImQ1n*dImQ7n*pow(dReQ3n,2.)
6669 + 2.*dImQ3n*dImQ7n*dReQ3n*dReQ1n-2.*dImQ3n*dImQ1n*dReQ3n*dReQ7n
6670 - pow(dImQ3n,2.)*dReQ1n*dReQ7n+pow(dReQ3n,2.)*dReQ1n*dReQ7n)
6671 - ((pow(dReQ3n,2.)-pow(dImQ3n,2.))*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)
6672 + 2.*dReQ3n*dImQ3n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6673 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6674 + (dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6675 + 2.*(dReQ7n*dReQ3n*dReQ4n-dReQ7n*dImQ3n*dImQ4n+dImQ7n*dReQ3n*dImQ4n+dImQ7n*dImQ3n*dReQ4n)
6676 + 2.*(dReQ6n*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)+dImQ6n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6677 + 3.*(dReQ6n*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)+dImQ6n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6678 + 4.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6679 + 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6680 + 6.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
6681 + 2.*(dReQ5n*dReQ3n*dReQ2n-dReQ5n*dImQ3n*dImQ2n+dImQ5n*dReQ3n*dImQ2n+dImQ5n*dImQ3n*dReQ2n)
6682 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6683 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6684 - 4.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6685 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6686 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6687 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6688 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))+(dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6689 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6690 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6691 five6n2n3n3n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))
6692 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6693 - 2.*(dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
6694 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
6695 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
6696 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n)
6697 - 2.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
6698 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
6699 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
6700 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
6701 - (-pow(dImQ3n,2.)*dImQ2n*dImQ8n+dImQ2n*dImQ8n*pow(dReQ3n,2.)
6702 + 2.*dImQ3n*dImQ8n*dReQ3n*dReQ2n-2.*dImQ3n*dImQ2n*dReQ3n*dReQ8n
6703 - pow(dImQ3n,2.)*dReQ2n*dReQ8n+pow(dReQ3n,2.)*dReQ2n*dReQ8n)
6704 - ((pow(dReQ3n,2.)-pow(dImQ3n,2.))*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)
6705 + 2.*dReQ3n*dImQ3n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6706 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6707 + (dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6708 + 2.*(dReQ8n*dReQ3n*dReQ5n-dReQ8n*dImQ3n*dImQ5n+dImQ8n*dReQ3n*dImQ5n+dImQ8n*dImQ3n*dReQ5n)
6709 + 2.*(dReQ6n*(dReQ5n*dReQ1n-dImQ5n*dImQ1n)+dImQ6n*(dReQ5n*dImQ1n+dImQ5n*dReQ1n))
6710 + 3.*(dReQ6n*(dReQ4n*dReQ2n-dImQ4n*dImQ2n)+dImQ6n*(dReQ4n*dImQ2n+dImQ4n*dReQ2n))
6711 + 4.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6712 + 2.*(dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6713 + 6.*(dReQ5n*dReQ3n*dReQ2n-dReQ5n*dImQ3n*dImQ2n+dImQ5n*dReQ3n*dImQ2n+dImQ5n*dImQ3n*dReQ2n)
6714 + 2.*(dReQ4n*dReQ3n*dReQ1n-dReQ4n*dImQ3n*dImQ1n+dImQ4n*dReQ3n*dImQ1n+dImQ4n*dImQ3n*dReQ1n)
6715 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6716 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6717 - 4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6718 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6719 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6720 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6721 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+(dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6722 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6723 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6724 // to be polished:
6725 five6n1n4n2n1n = (reQ6nQ1nQ4nstarQ2nstarQ1nstar
6726 - reQ6nQ1nQ4nstarQ3nstar
6727 - reQ6nQ1nQ5nstarQ2nstar
6728 - reQ6nQ3nstarQ2nstarQ1nstar
6729 - reQ7nQ4nstarQ2nstarQ1nstar
6730 - reQ5nQ1nQ4nstarQ2nstar
6731 - reQ6nQ4nstarQ1nstarQ1nstar
6732 + reQ2nQ1nstarQ1nstar
6733 + reQ7nQ6nstarQ1nstar
6734 + 3.*reQ6nQ5nstarQ1nstar
6735 + 2.*reQ7nQ6nstarQ1nstar
6736 + reQ6nQ3nstarQ3nstar
6737 + reQ7nQ4nstarQ3nstar
6738 + reQ6nQ5nstarQ1nstar
6739 + reQ2nQ1nstarQ1nstar
6740 + reQ7nQ5nstarQ2nstar
6741 + reQ5nQ3nstarQ2nstar
6742 - (dMult-6.)*reQ6nQ4nstarQ2nstar
6743 + 3.*reQ3nQ2nstarQ1nstar
6744 + reQ2nQ1nstarQ1nstar
6745 + 2.*reQ4nQ3nstarQ1nstar
6746 + 3.*reQ5nQ4nstarQ1nstar
6747 + reQ5nQ4nstarQ1nstar
6748 + reQ4nQ3nstarQ1nstar
6749 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6750 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6751 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6752 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6753 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6754 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6755 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6756 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6757 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6758 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6759 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6760 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6761 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
6762 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6763 // to be polished:
6764 five6n3n4n3n2n = (reQ6nQ3nQ4nstarQ3nstarQ2nstar
6765 - reQ6nQ3nQ5nstarQ4nstar
6766 - reQ7nQ2nQ6nstarQ3nstar
6767 - reQ6nQ3nstarQ2nstarQ1nstar
6768 - reQ9nQ4nstarQ3nstarQ2nstar
6769 - reQ4nQ2nQ3nstarQ3nstar
6770 - reQ6nQ1nQ4nstarQ3nstar
6771 + reQ3nQ2nstarQ1nstar
6772 + reQ9nQ6nstarQ3nstar
6773 + 3.*reQ6nQ3nstarQ3nstar
6774 + 2.*reQ9nQ6nstarQ3nstar
6775 + reQ6nQ5nstarQ1nstar
6776 + reQ9nQ5nstarQ4nstar
6777 + reQ7nQ6nstarQ1nstar
6778 + reQ3nQ2nstarQ1nstar
6779 + reQ9nQ7nstarQ2nstar
6780 + reQ3nQ2nstarQ1nstar
6781 - (dMult-6.)*reQ6nQ4nstarQ2nstar
6782 + 3.*reQ5nQ3nstarQ2nstar
6783 + reQ3nQ2nstarQ1nstar
6784 + 2.*reQ4nQ3nstarQ1nstar
6785 + 3.*reQ7nQ4nstarQ3nstar
6786 + reQ4nQ3nstarQ1nstar
6787 + reQ4nQ3nstarQ1nstar
6788 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6789 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6790 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6791 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6792 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6793 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6794 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6795 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6796 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6797 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6798 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6799 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6800 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6801 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6802 five6n4n4n3n3n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))
6803 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6804 - ((dReQ10n*dReQ4n+dImQ10n*dImQ4n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
6805 + 2.*dReQ3n*dImQ3n*(dImQ10n*dReQ4n-dReQ10n*dImQ4n))
6806 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
6807 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
6808 - 2.*(dImQ1n*dImQ3n*dImQ4n*dImQ6n+dImQ4n*dImQ6n*dReQ1n*dReQ3n
6809 + dImQ3n*dImQ6n*dReQ1n*dReQ4n-dImQ1n*dImQ6n*dReQ3n*dReQ4n
6810 - dImQ3n*dImQ4n*dReQ1n*dReQ6n+dImQ1n*dImQ4n*dReQ3n*dReQ6n
6811 + dImQ1n*dImQ3n*dReQ4n*dReQ6n+dReQ1n*dReQ3n*dReQ4n*dReQ6n)
6812 - 2.*(dImQ3n*dImQ4n*dImQ6n*dImQ7n+dImQ6n*dImQ7n*dReQ3n*dReQ4n
6813 + dImQ4n*dImQ7n*dReQ3n*dReQ6n-dImQ3n*dImQ7n*dReQ4n*dReQ6n
6814 - dImQ4n*dImQ6n*dReQ3n*dReQ7n+dImQ3n*dImQ6n*dReQ4n*dReQ7n
6815 + dImQ3n*dImQ4n*dReQ6n*dReQ7n+dReQ3n*dReQ4n*dReQ6n*dReQ7n)
6816 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6817 + 1.*(dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n+dImQ10n*dImQ6n*dReQ4n)
6818 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
6819 + 2.*(dReQ7n*dReQ6n*dReQ1n-dReQ7n*dImQ6n*dImQ1n+dImQ7n*dReQ6n*dImQ1n+dImQ7n*dImQ6n*dReQ1n)
6820 + 2.*(dReQ10n*dReQ7n*dReQ3n-dReQ10n*dImQ7n*dImQ3n+dImQ10n*dReQ7n*dImQ3n+dImQ10n*dImQ7n*dReQ3n)
6821 + 2.*(dReQ10n*dReQ6n*dReQ4n-dReQ10n*dImQ6n*dImQ4n+dImQ10n*dReQ6n*dImQ4n+dImQ10n*dImQ6n*dReQ4n)
6822 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
6823 + 6.*(dReQ7n*dReQ4n*dReQ3n-dReQ7n*dImQ4n*dImQ3n+dImQ7n*dReQ4n*dImQ3n+dImQ7n*dImQ4n*dReQ3n)
6824 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6825 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6826 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6827 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6828 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6829 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6830 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6831 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6832 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6833 // to be polished:
6834 five6n2n5n2n1n = (reQ6nQ2nQ5nstarQ2nstarQ1nstar
6835 - reQ6nQ2nQ5nstarQ3nstar
6836 - reQ7nQ1nQ6nstarQ2nstar
6837 - reQ6nQ3nstarQ2nstarQ1nstar
6838 - reQ8nQ5nstarQ2nstarQ1nstar
6839 - reQ5nQ1nQ4nstarQ2nstar
6840 - reQ6nQ1nQ5nstarQ2nstar
6841 + reQ2nQ1nstarQ1nstar
6842 + reQ8nQ6nstarQ2nstar
6843 + 3.*reQ6nQ4nstarQ2nstar
6844 + 2.*reQ8nQ6nstarQ2nstar
6845 + reQ6nQ3nstarQ3nstar
6846 + reQ8nQ5nstarQ3nstar
6847 + reQ7nQ6nstarQ1nstar
6848 + reQ2nQ1nstarQ1nstar
6849 + reQ8nQ7nstarQ1nstar
6850 + reQ4nQ3nstarQ1nstar
6851 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6852 + 3.*reQ3nQ2nstarQ1nstar
6853 + reQ2nQ1nstarQ1nstar
6854 + 2.*reQ5nQ3nstarQ2nstar
6855 + 3.*reQ7nQ5nstarQ2nstar
6856 + reQ5nQ4nstarQ1nstar
6857 + reQ5nQ3nstarQ2nstar
6858 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6859 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6860 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6861 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6862 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6863 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6864 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6865 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
6866 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6867 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6868 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6869 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6870 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
6871 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6872 // to be polished:
6873 five6n3n5n3n1n = (reQ6nQ3nQ5nstarQ3nstarQ1nstar
6874 - reQ6nQ3nQ5nstarQ4nstar
6875 - reQ8nQ1nQ6nstarQ3nstar
6876 - reQ6nQ3nstarQ2nstarQ1nstar
6877 - reQ9nQ5nstarQ3nstarQ1nstar
6878 - reQ5nQ1nQ3nstarQ3nstar
6879 - reQ6nQ2nQ5nstarQ3nstar
6880 + reQ3nQ2nstarQ1nstar
6881 + reQ9nQ6nstarQ3nstar
6882 + 3.*reQ6nQ3nstarQ3nstar
6883 + 2.*reQ9nQ6nstarQ3nstar
6884 + reQ6nQ4nstarQ2nstar
6885 + reQ9nQ5nstarQ4nstar
6886 + reQ8nQ6nstarQ2nstar
6887 + reQ3nQ2nstarQ1nstar
6888 + reQ9nQ8nstarQ1nstar
6889 + reQ3nQ2nstarQ1nstar
6890 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6891 + 3.*reQ4nQ3nstarQ1nstar
6892 + reQ3nQ2nstarQ1nstar
6893 + 2.*reQ5nQ3nstarQ2nstar
6894 + 3.*reQ8nQ5nstarQ3nstar
6895 + reQ5nQ3nstarQ2nstar
6896 + reQ5nQ3nstarQ2nstar
6897 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6898 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6899 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6900 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6901 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6902 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
6903 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6904 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6905 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6906 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6907 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6908 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6909 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
6910 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6911 // to be polished:
6912 five6n4n5n4n1n = (reQ6nQ4nQ5nstarQ4nstarQ1nstar
6913 - reQ6nQ4nQ5nstarQ5nstar
6914 - reQ9nQ1nQ6nstarQ4nstar
6915 - reQ6nQ4nstarQ1nstarQ1nstar
6916 - reQ10nQ5nstarQ4nstarQ1nstar
6917 - reQ5nQ1nQ4nstarQ2nstar
6918 - reQ6nQ3nQ5nstarQ4nstar
6919 + reQ4nQ3nstarQ1nstar
6920 + reQ10nQ6nstarQ4nstar
6921 + 3.*reQ6nQ4nstarQ2nstar
6922 + 2.*reQ10nQ6nstarQ4nstar
6923 + reQ6nQ5nstarQ1nstar
6924 + reQ10nQ5nstarQ5nstar
6925 + reQ9nQ6nstarQ3nstar
6926 + reQ4nQ3nstarQ1nstar
6927 + reQ10nQ9nstarQ1nstar
6928 + reQ2nQ1nstarQ1nstar
6929 - (dMult-6.)*reQ6nQ5nstarQ1nstar
6930 + 3.*reQ5nQ4nstarQ1nstar
6931 + reQ4nQ3nstarQ1nstar
6932 + 2.*reQ5nQ4nstarQ1nstar
6933 + 3.*reQ9nQ5nstarQ4nstar
6934 + reQ5nQ3nstarQ2nstar
6935 + reQ5nQ4nstarQ1nstar
6936 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6937 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6938 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6939 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
6940 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6941 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6942 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6943 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
6944 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6945 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6946 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6947 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
6948 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
6949 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6950 five6n5n5n3n3n = ((pow(dReQ5n,2.)+pow(dImQ5n,2.))
6951 * (pow(dReQ3n,2.)*dReQ6n-pow(dImQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n)
6952 - ((dReQ11n*dReQ5n+dImQ11n*dImQ5n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
6953 + 2.*dReQ3n*dImQ3n*(dImQ11n*dReQ5n-dReQ11n*dImQ5n))
6954 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
6955 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
6956 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
6957 - 2.*(dImQ2n*dImQ3n*dImQ5n*dImQ6n+dImQ5n*dImQ6n*dReQ2n*dReQ3n
6958 + dImQ3n*dImQ6n*dReQ2n*dReQ5n-dImQ2n*dImQ6n*dReQ3n*dReQ5n
6959 - dImQ3n*dImQ5n*dReQ2n*dReQ6n+dImQ2n*dImQ5n*dReQ3n*dReQ6n
6960 + dImQ2n*dImQ3n*dReQ5n*dReQ6n+dReQ2n*dReQ3n*dReQ5n*dReQ6n)
6961 - 2.*(dImQ3n*dImQ5n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ3n*dReQ5n
6962 + dImQ5n*dImQ8n*dReQ3n*dReQ6n-dImQ3n*dImQ8n*dReQ5n*dReQ6n
6963 - dImQ5n*dImQ6n*dReQ3n*dReQ8n+dImQ3n*dImQ6n*dReQ5n*dReQ8n
6964 + dImQ3n*dImQ5n*dReQ6n*dReQ8n+dReQ3n*dReQ5n*dReQ6n*dReQ8n)
6965 + 2.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
6966 + 1.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n+dImQ11n*dImQ6n*dReQ5n)
6967 + 3.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
6968 + 2.*(dReQ8n*dReQ6n*dReQ2n-dReQ8n*dImQ6n*dImQ2n+dImQ8n*dReQ6n*dImQ2n+dImQ8n*dImQ6n*dReQ2n)
6969 + 2.*(dReQ11n*dReQ8n*dReQ3n-dReQ11n*dImQ8n*dImQ3n+dImQ11n*dReQ8n*dImQ3n+dImQ11n*dImQ8n*dReQ3n)
6970 + 2.*(dReQ11n*dReQ6n*dReQ5n-dReQ11n*dImQ6n*dImQ5n+dImQ11n*dReQ6n*dImQ5n+dImQ11n*dImQ6n*dReQ5n)
6971 + 6.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
6972 + 6.*(dReQ8n*dReQ5n*dReQ3n-dReQ8n*dImQ5n*dImQ3n+dImQ8n*dReQ5n*dImQ3n+dImQ8n*dImQ5n*dReQ3n)
6973 - (dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
6974 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6975 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
6976 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))-4.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
6977 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
6978 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6979 + 2.*(dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
6980 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
6981 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
6982 // to be polished:
6983 five6n2n6n1n1n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))
6984 * (pow(dReQ1n,2.)*dReQ2n-pow(dImQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n)
6985 - reQ8nQ6nstarQ1nstarQ1nstar
6986 - reQ6nQ4nstarQ1nstarQ1nstar
6987 - 2.*reQ6nQ1nQ5nstarQ2nstar
6988 - 2.*reQ7nQ1nQ6nstarQ2nstar
6989 + 2.*reQ5nQ4nstarQ1nstar
6990 + reQ8nQ6nstarQ2nstar
6991 + 3.*reQ6nQ4nstarQ2nstar
6992 + 2.*reQ7nQ5nstarQ2nstar
6993 + 2.*reQ8nQ7nstarQ1nstar
6994 + 2.*reQ8nQ6nstarQ2nstar
6995 + 6.*reQ6nQ5nstarQ1nstar
6996 + 6.*reQ7nQ6nstarQ1nstar
6997 - (dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
6998 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
6999 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7000 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))-4.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7001 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7002 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7003 + 2.*(dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7004 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7005 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7006 five6n3n6n2n1n = (reQ6nQ3nQ6nstarQ2nstarQ1nstar
7007 - reQ7nQ2nQ6nstarQ3nstar
7008 - reQ8nQ1nQ6nstarQ3nstar
7009 - reQ6nQ1nQ4nstarQ3nstar
7010 - reQ9nQ6nstarQ2nstarQ1nstar
7011 - reQ6nQ3nstarQ2nstarQ1nstar
7012 - reQ6nQ2nQ5nstarQ3nstar
7013 + reQ6nQ5nstarQ1nstar
7014 + reQ9nQ6nstarQ3nstar
7015 + 3.*reQ6nQ3nstarQ3nstar
7016 + 2.*reQ9nQ6nstarQ3nstar
7017 + reQ7nQ4nstarQ3nstar
7018 + reQ9nQ7nstarQ2nstar
7019 + reQ8nQ5nstarQ3nstar
7020 + reQ6nQ5nstarQ1nstar
7021 + reQ9nQ8nstarQ1nstar
7022 + reQ4nQ3nstarQ1nstar
7023 - (dMult-6.)*reQ3nQ2nstarQ1nstar
7024 + 3.*reQ7nQ6nstarQ1nstar
7025 + reQ6nQ5nstarQ1nstar
7026 + 2.*reQ6nQ4nstarQ2nstar
7027 + 3.*reQ8nQ6nstarQ2nstar
7028 + reQ5nQ3nstarQ2nstar
7029 + reQ6nQ4nstarQ2nstar
7030 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7031 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7032 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7033 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7034 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7035 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7036 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7037 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7038 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7039 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7040 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7041 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7042 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7043 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7044 five6n4n6n2n2n = (-(pow(dImQ6n,2.)+pow(dReQ6n,2.))
7045 * (-2.*dImQ2n*dImQ4n*dReQ2n+pow(dImQ2n,2.)*dReQ4n-pow(dReQ2n,2.)*dReQ4n)
7046 - (-pow(dImQ2n,2.)*dImQ6n*dImQ10n+dImQ6n*dImQ10n*pow(dReQ2n,2.)
7047 + 2.*dImQ2n*dImQ10n*dReQ2n*dReQ6n-2.*dImQ2n*dImQ6n*dReQ2n*dReQ10n
7048 - pow(dImQ2n,2.)*dReQ6n*dReQ10n+pow(dReQ2n,2.)*dReQ6n*dReQ10n)
7049 - 2.*(dImQ2n*dImQ4n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ2n*dReQ4n
7050 + dImQ4n*dImQ8n*dReQ2n*dReQ6n-dImQ2n*dImQ8n*dReQ4n*dReQ6n
7051 - dImQ4n*dImQ6n*dReQ2n*dReQ8n+dImQ2n*dImQ6n*dReQ4n*dReQ8n
7052 + dImQ2n*dImQ4n*dReQ6n*dReQ8n+dReQ2n*dReQ4n*dReQ6n*dReQ8n)
7053 - (dReQ6n*pow(dReQ2n,3.)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2.)
7054 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2.)-dImQ6n*pow(dImQ2n,3.))
7055 - 2.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7056 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7057 + 2.*(dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n+dImQ10n*dImQ8n*dReQ2n)
7058 + 3.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
7059 + 6.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7060 + 2.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7061 + 9.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7062 - (dMult-8.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7063 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7064 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7065 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))-4.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7066 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+(dMult-12.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7067 + 2.*(dMult-9.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
7068 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7069 // to be polished:
7070 five6n4n6n3n1n = (reQ6nQ4nQ6nstarQ3nstarQ1nstar
7071 - reQ7nQ3nQ6nstarQ4nstar
7072 - reQ9nQ1nQ6nstarQ4nstar
7073 - reQ6nQ1nQ4nstarQ3nstar
7074 - reQ10nQ6nstarQ3nstarQ1nstar
7075 - reQ6nQ3nstarQ2nstarQ1nstar
7076 - reQ6nQ3nQ5nstarQ4nstar
7077 + reQ6nQ5nstarQ1nstar
7078 + reQ10nQ6nstarQ4nstar
7079 + 3.*reQ6nQ4nstarQ2nstar
7080 + 2.*reQ10nQ6nstarQ4nstar
7081 + reQ7nQ4nstarQ3nstar
7082 + reQ10nQ7nstarQ3nstar
7083 + reQ9nQ5nstarQ4nstar
7084 + reQ6nQ5nstarQ1nstar
7085 + reQ10nQ9nstarQ1nstar
7086 + reQ3nQ2nstarQ1nstar
7087 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7088 + 3.*reQ7nQ6nstarQ1nstar
7089 + reQ6nQ5nstarQ1nstar
7090 + 2.*reQ6nQ3nstarQ3nstar
7091 + 3.*reQ9nQ6nstarQ3nstar
7092 + reQ5nQ3nstarQ2nstar
7093 + reQ6nQ3nstarQ3nstar
7094 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7095 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7096 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7097 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7098 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7099 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7100 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7101 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7102 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7103 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7104 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7105 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7106 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7107 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7108 // to be polished:
7109 five6n5n5n4n2n = (reQ6nQ5nQ5nstarQ4nstarQ2nstar
7110 - reQ7nQ4nQ6nstarQ5nstar
7111 - reQ9nQ2nQ6nstarQ5nstar
7112 - reQ6nQ1nQ5nstarQ2nstar
7113 - reQ11nQ5nstarQ4nstarQ2nstar
7114 - reQ5nQ1nQ4nstarQ2nstar
7115 - reQ6nQ3nQ5nstarQ4nstar
7116 + reQ5nQ3nstarQ2nstar
7117 + reQ11nQ6nstarQ5nstar
7118 + 3.*reQ6nQ5nstarQ1nstar
7119 + 2.*reQ11nQ6nstarQ5nstar
7120 + reQ7nQ6nstarQ1nstar
7121 + reQ11nQ7nstarQ4nstar
7122 + reQ9nQ6nstarQ3nstar
7123 + reQ5nQ3nstarQ2nstar
7124 + reQ11nQ9nstarQ2nstar
7125 + reQ2nQ1nstarQ1nstar
7126 - (dMult-6.)*reQ6nQ4nstarQ2nstar
7127 + 3.*reQ7nQ5nstarQ2nstar
7128 + reQ5nQ3nstarQ2nstar
7129 + 2.*reQ5nQ4nstarQ1nstar
7130 + 3.*reQ9nQ5nstarQ4nstar
7131 + reQ4nQ3nstarQ1nstar
7132 + reQ5nQ4nstarQ1nstar
7133 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7134 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7135 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7136 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7137 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7138 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7139 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7140 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7141 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7142 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7143 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7144 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7145 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7146 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7147 // to be polished:
7148 five6n5n6n3n2n = (reQ6nQ5nQ6nstarQ3nstarQ2nstar
7149 - reQ8nQ3nQ6nstarQ5nstar
7150 - reQ9nQ2nQ6nstarQ5nstar
7151 - reQ6nQ2nQ5nstarQ3nstar
7152 - reQ11nQ6nstarQ3nstarQ2nstar
7153 - reQ6nQ3nstarQ2nstarQ1nstar
7154 - reQ6nQ3nQ5nstarQ4nstar
7155 + reQ6nQ4nstarQ2nstar
7156 + reQ11nQ6nstarQ5nstar
7157 + 3.*reQ6nQ5nstarQ1nstar
7158 + 2.*reQ11nQ6nstarQ5nstar
7159 + reQ8nQ5nstarQ3nstar
7160 + reQ11nQ8nstarQ3nstar
7161 + reQ9nQ5nstarQ4nstar
7162 + reQ6nQ4nstarQ2nstar
7163 + reQ11nQ9nstarQ2nstar
7164 + reQ3nQ2nstarQ1nstar
7165 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7166 + 3.*reQ8nQ6nstarQ2nstar
7167 + reQ6nQ4nstarQ2nstar
7168 + 2.*reQ6nQ3nstarQ3nstar
7169 + 3.*reQ9nQ6nstarQ3nstar
7170 + reQ4nQ3nstarQ1nstar
7171 + reQ6nQ3nstarQ3nstar
7172 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7173 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7174 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7175 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7176 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7177 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7178 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7179 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7180 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7181 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7182 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7183 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7184 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7185 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7186 // to be polished:
7187 five6n5n6n4n1n = (reQ6nQ5nQ6nstarQ4nstarQ1nstar
7188 - reQ7nQ4nQ6nstarQ5nstar
7189 - reQ10nQ1nQ6nstarQ5nstar
7190 - reQ6nQ1nQ5nstarQ2nstar
7191 - reQ11nQ6nstarQ4nstarQ1nstar
7192 - reQ6nQ4nstarQ1nstarQ1nstar
7193 - reQ6nQ4nQ5nstarQ5nstar
7194 + reQ6nQ5nstarQ1nstar
7195 + reQ11nQ6nstarQ5nstar
7196 + 3.*reQ6nQ5nstarQ1nstar
7197 + 2.*reQ11nQ6nstarQ5nstar
7198 + reQ7nQ5nstarQ2nstar
7199 + reQ11nQ7nstarQ4nstar
7200 + reQ10nQ5nstarQ5nstar
7201 + reQ6nQ5nstarQ1nstar
7202 + reQ11nQ10nstarQ1nstar
7203 + reQ2nQ1nstarQ1nstar
7204 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7205 + 3.*reQ7nQ6nstarQ1nstar
7206 + reQ6nQ5nstarQ1nstar
7207 + 2.*reQ6nQ4nstarQ2nstar
7208 + 3.*reQ10nQ6nstarQ4nstar
7209 + reQ5nQ4nstarQ1nstar
7210 + reQ6nQ4nstarQ2nstar
7211 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7212 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7213 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7214 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
7215 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7216 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7217 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7218 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7219 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7220 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7221 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7222 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7223 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
7224 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7225 // f2) Two distinct harmonics (9):
7226 five2n1n1n1n1n = ((dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
7227 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3))
7228 - (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7229 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7230 + 5.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7231 - 3.*(dMult-5.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7232 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7233 - 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7234 + 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7235 - 3.*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
7236 + 6.*(2.*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult*(dMult-4.))
7237 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7238 five2n2n2n1n1n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.))+2.*dImQ2n*dReQ1n*dImQ1n)
7239 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7240 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7241 - 2.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7242 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7243 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7244 + 8.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7245 + 2.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7246 - 2.*(dMult-6.)*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7247 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7248 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7249 + 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7250 - 4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7251 + 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7252 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7253 five3n3n2n2n2n = (pow(dReQ2n,3.)*pow(dReQ3n,2.)-3.*dReQ2n*pow(dReQ3n,2.)*pow(dImQ2n,2.)
7254 + 6.*pow(dReQ2n,2.)*dReQ3n*dImQ2n*dImQ3n-2.*dReQ3n*pow(dImQ2n,3.)*dImQ3n
7255 - pow(dReQ2n,3.)*pow(dImQ3n,2.)+3.*dReQ2n*pow(dImQ2n,2.)*pow(dImQ3n,2.)
7256 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7257 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7258 - 3.*((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7259 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7260 - 6.*((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7261 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7262 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7263 + 3.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7264 + 6.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7265 + 6.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7266 + 12.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7267 + 6.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7268 - 2.*((pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7269 + 6.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+9.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7270 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-12.*dMult))
7271 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7272 five4n1n1n1n1n = (pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
7273 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n-4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n
7274 - 6.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7275 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7276 - 4.*(dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7277 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7278 + 8.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7279 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7280 + 12.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7281 + 12.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7282 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7283 - 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+24.*dMult)
7284 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7285 five4n2n2n2n2n = ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(pow(dReQ2n,3)-3.*dReQ2n*pow(dImQ2n,2))
7286 + (dReQ4n*dImQ2n+dReQ2n*dImQ4n)*(3.*dImQ2n*pow(dReQ2n,2)-pow(dImQ2n,3))
7287 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
7288 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
7289 + 5.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7290 - 3.*(dMult-5.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7291 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7292 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7293 + 3.*(dMult-4.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7294 - 3.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
7295 + 6.*(2.*dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult*(dMult-4.))
7296 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7297 five4n4n4n2n2n = ((pow(dReQ4n,2.)+pow(dImQ4n,2.))*(dReQ4n*(pow(dReQ2n,2.)-pow(dImQ2n,2.))+2.*dImQ4n*dReQ2n*dImQ2n)
7298 - ((dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
7299 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n))
7300 - 2.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7301 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7302 + 3.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7303 + 8.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7304 + 2.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7305 - 2.*(dMult-6.)*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7306 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))-4.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7307 - pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)
7308 + 2.*(3.*dMult-10.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7309 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7310 + 4.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
7311 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7312 five6n3n3n3n3n = ((dReQ6n*dReQ3n-dImQ6n*dImQ3n)*(pow(dReQ3n,3)-3.*dReQ3n*pow(dImQ3n,2))
7313 + (dReQ6n*dImQ3n+dReQ3n*dImQ6n)*(3.*dImQ3n*pow(dReQ3n,2)-pow(dImQ3n,3))
7314 - (dReQ9n*pow(dReQ3n,3)-3.*dReQ3n*dReQ9n*pow(dImQ3n,2)
7315 + 3.*dImQ3n*dImQ9n*pow(dReQ3n,2)-dImQ9n*pow(dImQ3n,3))
7316 + 5.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
7317 - 3.*(dMult-5.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7318 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7319 - 3.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7320 + 3.*(dMult-4.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7321 - 3.*pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)
7322 + 6.*(2.*dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-6.*dMult*(dMult-4.))
7323 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7324 five6n6n4n4n4n = (pow(dReQ4n,3.)*pow(dReQ6n,2.)-3.*dReQ4n*pow(dReQ6n,2.)*pow(dImQ4n,2.)
7325 + 6.*pow(dReQ4n,2.)*dReQ6n*dImQ4n*dImQ6n-2.*dReQ6n*pow(dImQ4n,3.)*dImQ6n
7326 - pow(dReQ4n,3.)*pow(dImQ6n,2.)+3.*dReQ4n*pow(dImQ4n,2.)*pow(dImQ6n,2.)
7327 - (dReQ12n*pow(dReQ4n,3)-3.*dReQ4n*dReQ12n*pow(dImQ4n,2)
7328 + 3.*dImQ4n*dImQ12n*pow(dReQ4n,2)-dImQ12n*pow(dImQ4n,3))
7329 - 3.*((dReQ8n*dReQ4n-dImQ8n*dImQ4n)*(dReQ6n*dReQ6n-dImQ6n*dImQ6n)
7330 + 2.*(dReQ8n*dImQ4n+dImQ8n*dReQ4n)*dReQ6n*dImQ6n)
7331 - 6.*((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
7332 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7333 + 2.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
7334 + 3.*(dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n+dImQ12n*dImQ8n*dReQ4n)
7335 + 6.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
7336 + 6.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
7337 + 12.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7338 + 6.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7339 - 2.*((pow(dReQ12n,2.)+pow(dImQ12n,2.))+3.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7340 + 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+9.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7341 + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-12.*dMult))
7342 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7343 five6n6n6n3n3n = ((pow(dReQ6n,2.)+pow(dImQ6n,2.))*(dReQ6n*(pow(dReQ3n,2.)-pow(dImQ3n,2.))+2.*dImQ6n*dReQ3n*dImQ3n)
7344 - ((dReQ12n*dReQ6n+dImQ12n*dImQ6n)*(pow(dReQ3n,2)-pow(dImQ3n,2))
7345 + 2.*dReQ3n*dImQ3n*(dImQ12n*dReQ6n-dReQ12n*dImQ6n))
7346 - 2.*((pow(dReQ6n,2.)-pow(dImQ6n,2.))*(dReQ9n*dReQ3n-dImQ9n*dImQ3n)
7347 + 2.*dReQ6n*dImQ6n*(dReQ9n*dImQ3n+dImQ9n*dReQ3n))
7348 + 3.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
7349 + 8.*(dReQ9n*dReQ6n*dReQ3n-dReQ9n*dImQ6n*dImQ3n+dImQ9n*dReQ6n*dImQ3n+dImQ9n*dImQ6n*dReQ3n)
7350 + 2.*(dReQ12n*(dReQ9n*dReQ3n-dImQ9n*dImQ3n)+dImQ12n*(dReQ9n*dImQ3n+dImQ9n*dReQ3n))
7351 - 2.*(dMult-6.)*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7352 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))-4.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7353 - pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)
7354 + 2.*(3.*dMult-10.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7355 - 4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7356 + 4.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-4.*dMult*(dMult-6.))
7357 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7358 // f3) Three distinct harmonics (30):
7359 five3n1n2n1n1n = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n
7360 + dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n)
7361 - ((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
7362 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7363 - (dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
7364 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3))
7365 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7366 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7367 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7368 + pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n
7369 - (2.*dMult-13.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
7370 + dImQ3n*dImQ2n*dReQ1n)
7371 + 7.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7372 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7373 + 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7374 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7375 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7376 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7377 - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
7378 + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7379 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7380 five3n2n2n2n1n = ((pow(dImQ2n,2.)+pow(dReQ2n,2.))*(dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
7381 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n)
7382 - (-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
7383 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
7384 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
7385 - (dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
7386 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
7387 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
7388 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
7389 - ((pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
7390 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7391 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7392 + (dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7393 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7394 + dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n)
7395 + 3.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7396 - 2.*(dMult-6.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7397 + 4.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7398 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7399 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7400 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7401 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7402 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7403 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7404 five3n3n3n2n1n = ((pow(dImQ3n,2.)+pow(dReQ3n,2.))*(dImQ2n*dImQ3n*dReQ1n+dImQ1n*dImQ3n*dReQ2n
7405 - dImQ1n*dImQ2n*dReQ3n+dReQ1n*dReQ2n*dReQ3n)
7406 - (dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
7407 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
7408 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
7409 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
7410 - (dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7411 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
7412 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
7413 - ((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7414 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7415 + dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n
7416 + dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n
7417 + 3.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7418 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7419 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7420 - 2.*(dMult-6.)*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7421 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7422 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7423 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7424 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*(3.*dMult-10.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7425 - pow((pow(dReQ3n,2.)+pow(dImQ3n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7426 + 2.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-4.*dMult*(dMult-6.))
7427 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7428 five4n1n3n1n1n = (reQ4nQ1nQ3nstarQ1nstarQ1nstar
7429 - reQ4nQ1nQ3nstarQ2nstar
7430 - reQ4nQ1nQ4nstarQ1nstar
7431 - reQ4nQ2nstarQ1nstarQ1nstar
7432 - reQ5nQ3nstarQ1nstarQ1nstar
7433 - reQ3nQ1nQ3nstarQ1nstar
7434 - dMult*reQ4nQ3nstarQ1nstar
7435 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7436 + reQ5nQ4nstarQ1nstar
7437 + 3.*reQ4nQ3nstarQ1nstar
7438 + 2.*reQ5nQ4nstarQ1nstar
7439 + reQ4nQ2nstarQ2nstar
7440 + reQ5nQ3nstarQ2nstar
7441 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7442 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7443 + reQ5nQ4nstarQ1nstar
7444 + reQ3nQ2nstarQ1nstar
7445 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7446 + 3.*reQ2nQ1nstarQ1nstar
7447 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7448 + 2.*reQ3nQ2nstarQ1nstar
7449 + 3.*reQ4nQ3nstarQ1nstar
7450 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7451 + reQ3nQ2nstarQ1nstar
7452 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7453 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7454 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7455 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7456 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7457 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7458 - 2.*dMult*dMult
7459 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7460 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7461 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7462 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7463 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7464 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
7465 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7466 five4n1n1n3n3n = // calculated by Peter Jochumzsen
7467 (pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n
7468 + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n
7469 - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n
7470 - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n+2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n
7471 - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n+2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n
7472 + 6.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7473 - 1.*(-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
7474 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
7475 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n)
7476 - 1.*((dReQ4n*dReQ2n-dImQ4n*dImQ2n)*(dReQ3n*dReQ3n-dImQ3n*dImQ3n)
7477 + 2.*(dReQ4n*dImQ2n+dImQ4n*dReQ2n)*dReQ3n*dImQ3n)
7478 + 1.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7479 - 2.*(dImQ1n*pow(dImQ3n,2.)*dImQ5n+2.*dImQ3n*dImQ5n*dReQ1n*dReQ3n
7480 - dImQ1n*dImQ5n*pow(dReQ3n,2.)-pow(dImQ3n,2.)*dReQ1n*dReQ5n
7481 + 2.*dImQ1n*dImQ3n*dReQ3n*dReQ5n+dReQ1n*pow(dReQ3n,2.)*dReQ5n)
7482 + 2.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7483 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7484 - 2.*(dReQ3n*pow(dReQ1n,3.)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
7485 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2.)-dImQ3n*pow(dImQ1n,3.))
7486 + 10.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7487 + 2.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
7488 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7489 - 4.*(dImQ1n*dImQ2n*dImQ3n*dImQ4n+dImQ3n*dImQ4n*dReQ1n*dReQ2n
7490 + dImQ2n*dImQ4n*dReQ1n*dReQ3n-dImQ1n*dImQ4n*dReQ2n*dReQ3n
7491 - dImQ2n*dImQ3n*dReQ1n*dReQ4n+dImQ1n*dImQ3n*dReQ2n*dReQ4n
7492 + dImQ1n*dImQ2n*dReQ3n*dReQ4n+dReQ1n*dReQ2n*dReQ3n*dReQ4n)
7493 + 4.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7494 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7495 - 16.*pow(dReQ1n,2.)-16.*pow(dImQ1n,2.)
7496 - 10.*pow(dReQ2n,2.)-10.*pow(dImQ2n,2.)-12.*pow(dReQ3n,2.)-12.*pow(dImQ3n,2.)
7497 - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)-4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)
7498 - 2.*pow(dReQ6n,2.)-2.*pow(dImQ6n,2.)+24.*dMult)
7499 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7500 // to be polished:
7501 five4n3n3n3n1n = (reQ4nQ3nQ3nstarQ3nstarQ1nstar
7502 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7503 - reQ6nQ1nQ4nstarQ3nstar
7504 - dMult*reQ4nQ3nstarQ1nstar
7505 - reQ7nQ3nstarQ3nstarQ1nstar
7506 - reQ3nQ1nQ3nstarQ1nstar
7507 - reQ4nQ2nQ3nstarQ3nstar
7508 + reQ3nQ2nstarQ1nstar
7509 + reQ7nQ4nstarQ3nstar
7510 + 3.*reQ4nQ3nstarQ1nstar
7511 + 2.*reQ7nQ4nstarQ3nstar
7512 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7513 + reQ7nQ4nstarQ3nstar
7514 + reQ6nQ4nstarQ2nstar
7515 + reQ3nQ2nstarQ1nstar
7516 + reQ7nQ6nstarQ1nstar
7517 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7518 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7519 + 3.*reQ4nQ3nstarQ1nstar
7520 + reQ3nQ2nstarQ1nstar
7521 + 2.*dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7522 + 3.*reQ6nQ3nstarQ3nstar
7523 + reQ3nQ2nstarQ1nstar
7524 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7525 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7526 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7527 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7528 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7529 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7530 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7531 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7532 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7533 - 2.*dMult*dMult
7534 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7535 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7536 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7537 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
7538 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7539
7540 // to be polished:
7541 five4n4n3n3n2n = (reQ4nQ4nQ3nstarQ3nstarQ2nstar
7542 - reQ5nQ3nQ4nstarQ4nstar-reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ4nstarQ4nstar
7543 - reQ4nQ1nQ3nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar
7544 - reQ8nQ3nstarQ3nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ1nQ3nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
7545 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ8nQ4nstarQ4nstar)
7546 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ6nQ4nstarQ2nstar
7547 + reQ8nQ6nstarQ2nstar+reQ8nQ5nstarQ3nstar+reQ8nQ5nstarQ3nstar
7548 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
7549 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
7550 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7551 + 2.*(reQ6nQ3nstarQ3nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
7552 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar)
7553 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7554 - 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.))
7555 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
7556 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7557 - 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.))
7558 + 24.*dMult)
7559 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7560
7561 /*
7562 // correct recursive formula, not needed for the time being.
7563 five4n4n3n3n2n = (reQ4nQ4nQ3nstarQ3nstarQ2nstar
7564 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
7565 * (2.*four4n2n3n3n+4.*four4n1n3n2n+1.*four8n3n3n2n+1.*four6n2n4n4n+2.*four5n3n4n4n)
7566 - dMult*(dMult-1.)*(dMult-2.)
7567 * (4.*three4n3n1n+2.*three4n2n2n+2.*three5n3n2n+1.*three6n3n3n+1.*three8n4n4n
7568 + 4.*three3n2n1n+2.*three2n1n1n+1.*three8n6n2n+2.*three8n5n3n+2.*three6n4n2n+4.*three5n4n1n)
7569 - dMult*(dMult-1.)
7570 * (1.*two2n2n+2.*two3n3n+2.*two4n4n+2.*two5n5n+1.*two6n6n+4.*two1n1n+2.*two2n2n+1.*two8n8n)
7571 - dMult)
7572 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7573 */
7574
7575 // to be polished:
7576 five4n4n4n3n1n = (reQ4nQ4nQ4nstarQ3nstarQ1nstar
7577 - reQ5nQ3nQ4nstarQ4nstar
7578 - reQ7nQ1nQ4nstarQ4nstar
7579 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7580 - reQ8nQ4nstarQ3nstarQ1nstar
7581 - dMult*reQ4nQ3nstarQ1nstar
7582 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7583 + reQ4nQ3nstarQ1nstar
7584 + reQ8nQ4nstarQ4nstar
7585 + 3.*dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7586 + 2.*reQ8nQ4nstarQ4nstar
7587 + reQ5nQ4nstarQ1nstar
7588 + reQ8nQ5nstarQ3nstar
7589 + reQ7nQ4nstarQ3nstar
7590 + reQ4nQ3nstarQ1nstar
7591 + reQ8nQ7nstarQ1nstar
7592 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7593 - (dMult-6.)*reQ4nQ3nstarQ1nstar
7594 + 3.*reQ5nQ4nstarQ1nstar
7595 + reQ4nQ3nstarQ1nstar
7596 + 2.*reQ4nQ3nstarQ1nstar
7597 + 3.*reQ7nQ4nstarQ3nstar
7598 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7599 + reQ4nQ3nstarQ1nstar
7600 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7601 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7602 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7603 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7604 - 2.*dMult*dMult
7605 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7606 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7607 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7608 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7609 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7610 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7611 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7612 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
7613 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7614 // to be polished:
7615 five5n2n1n1n1n = (reQ5nQ2nstarQ1nstarQ1nstarQ1nstar
7616 - reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
7617 - reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar
7618 - reQ3nQ1nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar
7619 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
7620 + reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar
7621 + reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7622 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7623 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7624 + reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7625 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7626 + 2.*(reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
7627 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7628 - 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.))
7629 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7630 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
7631 - 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.))
7632 + 24.*dMult)
7633 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7634 // to be polished:
7635 five5n1n2n2n2n = (reQ5nQ1nQ2nstarQ2nstarQ2nstar
7636 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar
7637 - reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ2nstarQ2nstarQ1nstar
7638 - reQ6nQ2nstarQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
7639 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ6nQ5nstarQ1nstar)
7640 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7641 + reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
7642 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7643 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7644 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7645 + 2.*(reQ4nQ2nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ4nQ2nstarQ2nstar)
7646 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7647 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7648 - 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.))
7649 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7650 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7651 - 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.))
7652 + 24.*dMult)
7653 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7654 // to be polished:
7655 five5n2n3n2n2n = (reQ5nQ2nQ3nstarQ2nstarQ2nstar
7656 - reQ5nQ2nQ4nstarQ3nstar
7657 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7658 - reQ5nQ2nstarQ2nstarQ1nstar
7659 - reQ7nQ3nstarQ2nstarQ2nstar
7660 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7661 - dMult*reQ5nQ3nstarQ2nstar
7662 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7663 + reQ7nQ5nstarQ2nstar
7664 + 3.*reQ5nQ3nstarQ2nstar
7665 + 2.*reQ7nQ5nstarQ2nstar
7666 + reQ5nQ4nstarQ1nstar
7667 + reQ7nQ4nstarQ3nstar
7668 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7669 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7670 + reQ7nQ5nstarQ2nstar
7671 + reQ3nQ2nstarQ1nstar
7672 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7673 + 3.*reQ4nQ2nstarQ2nstar
7674 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7675 + 2.*reQ3nQ2nstarQ1nstar
7676 + 3.*reQ5nQ3nstarQ2nstar
7677 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7678 + reQ3nQ2nstarQ1nstar
7679 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7680 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7681 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7682 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7683 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7684 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7685 - 2.*dMult*dMult
7686 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7687 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7688 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7689 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7690 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7691 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-2.*dMult*(dMult-12.))
7692 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7693 // to be polished:
7694 five5n3n3n3n2n = (reQ5nQ3nQ3nstarQ3nstarQ2nstar
7695 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7696 - reQ6nQ2nQ5nstarQ3nstar
7697 - dMult*reQ5nQ3nstarQ2nstar
7698 - reQ8nQ3nstarQ3nstarQ2nstar
7699 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7700 - reQ5nQ1nQ3nstarQ3nstar
7701 + reQ3nQ2nstarQ1nstar
7702 + reQ8nQ5nstarQ3nstar
7703 + 3.*reQ5nQ3nstarQ2nstar
7704 + 2.*reQ8nQ5nstarQ3nstar
7705 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7706 + reQ8nQ5nstarQ3nstar
7707 + reQ6nQ5nstarQ1nstar
7708 + reQ3nQ2nstarQ1nstar
7709 + reQ8nQ6nstarQ2nstar
7710 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7711 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7712 + 3.*reQ5nQ3nstarQ2nstar
7713 + reQ3nQ2nstarQ1nstar
7714 + 2.*dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7715 + 3.*reQ6nQ3nstarQ3nstar
7716 + reQ3nQ2nstarQ1nstar
7717 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7718 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7719 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7720 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7721 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7722 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7723 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7724 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7725 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7726 - 2.*dMult*dMult
7727 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7728 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7729 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7730 + 2.*(dMult-6.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))-2.*dMult*(dMult-12.))
7731 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7732 // to be polished:
7733 five5n1n4n1n1n = (reQ5nQ1nQ4nstarQ1nstarQ1nstar
7734 - reQ5nQ1nQ4nstarQ2nstar
7735 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7736 - reQ5nQ3nstarQ1nstarQ1nstar
7737 - reQ6nQ4nstarQ1nstarQ1nstar
7738 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7739 - dMult*reQ5nQ4nstarQ1nstar
7740 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7741 + reQ6nQ5nstarQ1nstar
7742 + 3.*reQ5nQ4nstarQ1nstar
7743 + 2.*reQ6nQ5nstarQ1nstar
7744 + reQ5nQ3nstarQ2nstar
7745 + reQ6nQ4nstarQ2nstar
7746 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7747 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7748 + reQ6nQ5nstarQ1nstar
7749 + reQ4nQ3nstarQ1nstar
7750 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7751 + 3.*reQ2nQ1nstarQ1nstar
7752 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7753 + 2.*reQ4nQ3nstarQ1nstar
7754 + 3.*reQ5nQ4nstarQ1nstar
7755 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7756 + reQ4nQ3nstarQ1nstar
7757 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7758 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7759 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7760 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7761 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7762 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7763 - 2.*dMult*dMult
7764 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7765 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7766 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7767 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7768 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7769 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
7770 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7771 // to be polished:
7772 five5n4n3n3n3n = (reQ5nQ4nQ3nstarQ3nstarQ3nstar
7773 - reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar
7774 - reQ5nQ1nQ3nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar
7775 - reQ9nQ3nstarQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar-reQ4nQ2nQ3nstarQ3nstar
7776 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ9nQ5nstarQ4nstar)
7777 + reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
7778 + reQ9nQ6nstarQ3nstar+reQ9nQ6nstarQ3nstar+reQ9nQ6nstarQ3nstar
7779 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7780 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7781 + reQ6nQ4nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7782 + 2.*(reQ6nQ3nstarQ3nstar+reQ6nQ3nstarQ3nstar+reQ6nQ3nstarQ3nstar)
7783 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
7784 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7785 - 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.))
7786 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
7787 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7788 - 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.))
7789 + 24.*dMult)
7790 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7791 // to be polished:
7792 five5n4n4n4n1n = (reQ5nQ4nQ4nstarQ4nstarQ1nstar
7793 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7794 - reQ8nQ1nQ5nstarQ4nstar
7795 - dMult*reQ5nQ4nstarQ1nstar
7796 - reQ9nQ4nstarQ4nstarQ1nstar
7797 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7798 - reQ5nQ3nQ4nstarQ4nstar
7799 + reQ4nQ3nstarQ1nstar
7800 + reQ9nQ5nstarQ4nstar
7801 + 3.*reQ5nQ4nstarQ1nstar
7802 + 2.*reQ9nQ5nstarQ4nstar
7803 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7804 + reQ9nQ5nstarQ4nstar
7805 + reQ8nQ5nstarQ3nstar
7806 + reQ4nQ3nstarQ1nstar
7807 + reQ9nQ8nstarQ1nstar
7808 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7809 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7810 + 3.*reQ5nQ4nstarQ1nstar
7811 + reQ4nQ3nstarQ1nstar
7812 + 2.*dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7813 + 3.*reQ8nQ4nstarQ4nstar
7814 + reQ4nQ3nstarQ1nstar
7815 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7816 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7817 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7818 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7819 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7820 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7821 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7822 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7823 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7824 - 2.*dMult*dMult
7825 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7826 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7827 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7828 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*dMult*(dMult-12.))
7829 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7830 // to be polished:
7831 five5n5n4n3n3n = (reQ5nQ5nQ4nstarQ3nstarQ3nstar
7832 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar
7833 - reQ5nQ2nQ4nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
7834 - reQ10nQ4nstarQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar-reQ5nQ1nQ3nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
7835 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
7836 + reQ6nQ5nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar
7837 + reQ10nQ7nstarQ3nstar+reQ10nQ6nstarQ4nstar+reQ10nQ7nstarQ3nstar
7838 + reQ6nQ5nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7839 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
7840 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
7841 + 2.*(reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar+reQ6nQ3nstarQ3nstar)
7842 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
7843 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7844 - 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.))
7845 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
7846 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7847 - 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.))
7848 + 24.*dMult)
7849 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7850 // to be polished:
7851 five5n5n4n4n2n = (reQ5nQ5nQ4nstarQ4nstarQ2nstar
7852 - reQ6nQ4nQ5nstarQ5nstar-reQ6nQ4nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar
7853 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar
7854 - reQ10nQ4nstarQ4nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ5nQ1nQ4nstarQ2nstar-reQ5nQ1nQ4nstarQ2nstar
7855 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ10nQ5nstarQ5nstar)
7856 + reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ8nQ5nstarQ3nstar
7857 + reQ10nQ8nstarQ2nstar+reQ10nQ6nstarQ4nstar+reQ10nQ6nstarQ4nstar
7858 + reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
7859 + reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
7860 + reQ8nQ5nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
7861 + 2.*(reQ8nQ4nstarQ4nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar)
7862 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
7863 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7864 - 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.))
7865 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
7866 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
7867 - 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.))
7868 + 24.*dMult)
7869 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7870 // to be polished:
7871 five5n5n5n3n2n = (reQ5nQ5nQ5nstarQ3nstarQ2nstar
7872 - reQ7nQ3nQ5nstarQ5nstar
7873 - reQ8nQ2nQ5nstarQ5nstar
7874 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7875 - reQ10nQ5nstarQ3nstarQ2nstar
7876 - dMult*reQ5nQ3nstarQ2nstar
7877 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7878 + reQ5nQ3nstarQ2nstar
7879 + reQ10nQ5nstarQ5nstar
7880 + 3.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7881 + 2.*reQ10nQ5nstarQ5nstar
7882 + reQ7nQ5nstarQ2nstar
7883 + reQ10nQ7nstarQ3nstar
7884 + reQ8nQ5nstarQ3nstar
7885 + reQ5nQ3nstarQ2nstar
7886 + reQ10nQ8nstarQ2nstar
7887 + dMult*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7888 - (dMult-6.)*reQ5nQ3nstarQ2nstar
7889 + 3.*reQ7nQ5nstarQ2nstar
7890 + reQ5nQ3nstarQ2nstar
7891 + 2.*reQ5nQ3nstarQ2nstar
7892 + 3.*reQ8nQ5nstarQ3nstar
7893 + dMult*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7894 + reQ5nQ3nstarQ2nstar
7895 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7896 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7897 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7898 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7899 - 2.*dMult*dMult
7900 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
7901 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7902 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
7903 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7904 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7905 + (dMult-8.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
7906 + (dMult-8.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
7907 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7908 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7909 // to be polished:
7910 five5n5n5n4n1n = (reQ5nQ5nQ5nstarQ4nstarQ1nstar
7911 - reQ6nQ4nQ5nstarQ5nstar
7912 - reQ9nQ1nQ5nstarQ5nstar
7913 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7914 - reQ10nQ5nstarQ4nstarQ1nstar
7915 - dMult*reQ5nQ4nstarQ1nstar
7916 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7917 + reQ5nQ4nstarQ1nstar
7918 + reQ10nQ5nstarQ5nstar
7919 + 3.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7920 + 2.*reQ10nQ5nstarQ5nstar
7921 + reQ6nQ5nstarQ1nstar
7922 + reQ10nQ6nstarQ4nstar
7923 + reQ9nQ5nstarQ4nstar
7924 + reQ5nQ4nstarQ1nstar
7925 + reQ10nQ9nstarQ1nstar
7926 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7927 - (dMult-6.)*reQ5nQ4nstarQ1nstar
7928 + 3.*reQ6nQ5nstarQ1nstar
7929 + reQ5nQ4nstarQ1nstar
7930 + 2.*reQ5nQ4nstarQ1nstar
7931 + 3.*reQ9nQ5nstarQ4nstar
7932 + dMult*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7933 + reQ5nQ4nstarQ1nstar
7934 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7935 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7936 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7937 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
7938 - 2.*dMult*dMult
7939 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7940 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7941 - 2.*(pow(dReQ9n,2.)+pow(dImQ9n,2.))
7942 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7943 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
7944 + (dMult-8.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
7945 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
7946 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
7947 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7948 five6n2n2n1n1n = // calculated by Peter Jochumzsen
7949 (pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n
7950 - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n
7951 - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n
7952 + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n+2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n
7953 - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n-2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n
7954 + 2.*(pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dReQ2n)
7955 + 8.*(dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n+dImQ3n*dImQ2n*dReQ1n)
7956 + 5.*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
7957 - (-pow(dImQ1n,2.)*dImQ4n*dImQ6n+dImQ4n*dImQ6n*pow(dReQ1n,2.)
7958 + 2.*dImQ1n*dImQ6n*dReQ1n*dReQ4n-2.*dImQ1n*dImQ4n*dReQ1n*dReQ6n
7959 - pow(dImQ1n,2.)*dReQ4n*dReQ6n+pow(dReQ1n,2.)*dReQ4n*dReQ6n)
7960 + 2.*(pow(dReQ3n,2.)*dReQ6n+2.*dReQ3n*dImQ3n*dImQ6n-pow(dImQ3n,2.)*dReQ6n)
7961 - (dReQ6n*pow(dReQ2n,3.)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2.)
7962 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2.)-dImQ6n*pow(dImQ2n,3.))
7963 + 4.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
7964 - 2.*((dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
7965 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n))
7966 + 2.*(dReQ5n*dReQ4n*dReQ1n-dReQ5n*dImQ4n*dImQ1n+dImQ5n*dReQ4n*dImQ1n+dImQ5n*dImQ4n*dReQ1n)
7967 - 2.*(-pow(dImQ2n,2.)*dImQ1n*dImQ5n+dImQ1n*dImQ5n*pow(dReQ2n,2.)
7968 + 2.*dImQ2n*dImQ5n*dReQ2n*dReQ1n-2.*dImQ2n*dImQ1n*dReQ2n*dReQ5n
7969 - pow(dImQ2n,2.)*dReQ1n*dReQ5n+pow(dReQ2n,2.)*dReQ1n*dReQ5n)
7970 + 4.*(dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n))
7971 + 4.*(dReQ5n*dReQ2n*dReQ3n-dReQ5n*dImQ2n*dImQ3n+dImQ5n*dReQ2n*dImQ3n+dImQ5n*dImQ2n*dReQ3n)
7972 + 4.*(dReQ6n*dReQ5n*dReQ1n-dReQ6n*dImQ5n*dImQ1n+dImQ6n*dReQ5n*dImQ1n+dImQ6n*dImQ5n*dReQ1n)
7973 - 4.*(dReQ1n*dReQ2n*dReQ3n*dReQ6n-dReQ3n*dReQ6n*dImQ1n*dImQ2n
7974 - dReQ2n*dReQ6n*dImQ1n*dImQ3n-dReQ1n*dReQ6n*dImQ2n*dImQ3n
7975 + dReQ2n*dReQ3n*dImQ1n*dImQ6n+dReQ1n*dReQ3n*dImQ2n*dImQ6n
7976 + dReQ1n*dReQ2n*dImQ3n*dImQ6n-dImQ1n*dImQ2n*dImQ3n*dImQ6n)
7977 - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.)-14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.)
7978 - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.)-6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.)
7979 - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.)-6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.)+24.*dMult)
7980 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
7981 // to be polished:
7982 five6n3n1n1n1n = (reQ6nQ3nstarQ1nstarQ1nstarQ1nstar
7983 - reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar
7984 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ4nstarQ1nstarQ1nstar
7985 - reQ3nQ1nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar
7986 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar)
7987 + reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
7988 + reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
7989 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7990 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7991 + reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
7992 + 2.*(reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
7993 + 2.*(reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
7994 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
7995 - 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.))
7996 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
7997 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.))
7998 - 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.))
7999 + 24.*dMult)
53884472 8000 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
e1d101a6 8001
8002
8003 // to be polished:
8004 five6n1n1n4n4n = (reQ6nQ1nQ1nQ4nstarQ4nstar
8005 - reQ6nQ2nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar
8006 - reQ6nQ1nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8007 - reQ8nQ6nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8008 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ8nQ4nstarQ4nstar)
8009 + reQ4nQ2nstarQ2nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar // ?? 1st term
8010 + reQ8nQ7nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ8nQ7nstarQ1nstar
8011 + reQ4nQ2nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8012 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8013 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8014 + 2.*(reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8015 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8016 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8017 - 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.))
8018 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8019 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8020 - 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.))
8021 + 24.*dMult)
53884472 8022 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
403e3389 8023
e1d101a6 8024 // to be polished:
8025 five6n1n5n1n1n = (reQ6nQ1nQ5nstarQ1nstarQ1nstar
8026 - reQ6nQ1nQ5nstarQ2nstar
8027 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8028 - reQ6nQ4nstarQ1nstarQ1nstar
8029 - reQ7nQ5nstarQ1nstarQ1nstar
8030 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8031 - dMult*reQ6nQ5nstarQ1nstar
8032 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8033 + reQ7nQ6nstarQ1nstar
8034 + 3.*reQ6nQ5nstarQ1nstar
8035 + 2.*reQ7nQ6nstarQ1nstar
8036 + reQ6nQ4nstarQ2nstar
8037 + reQ7nQ5nstarQ2nstar
8038 + dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8039 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8040 + reQ7nQ6nstarQ1nstar
8041 + reQ5nQ4nstarQ1nstar
8042 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8043 + 3.*reQ2nQ1nstarQ1nstar
8044 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8045 + 2.*reQ5nQ4nstarQ1nstar
8046 + 3.*reQ6nQ5nstarQ1nstar
8047 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8048 + reQ5nQ4nstarQ1nstar
8049 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8050 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8051 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8052 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
8053 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8054 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8055 - 2.*dMult*dMult
8056 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8057 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8058 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8059 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8060 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8061 + 2.*(dMult-6.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-2.*dMult*(dMult-12.))
8062 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8063 five6n2n4n2n2n = ((pow(dReQ2n,2.)+pow(dImQ2n,2.))*(dReQ2n*dReQ4n*dReQ6n-dReQ6n*dImQ2n*dImQ4n
8064 + dReQ4n*dImQ2n*dImQ6n+dReQ2n*dImQ4n*dImQ6n)
8065 - ((dReQ8n*dReQ4n+dImQ8n*dImQ4n)*(pow(dReQ2n,2)-pow(dImQ2n,2))
8066 + 2.*dReQ2n*dImQ2n*(dImQ8n*dReQ4n-dReQ8n*dImQ4n))
8067 - (dReQ6n*pow(dReQ2n,3)-3.*dReQ2n*dReQ6n*pow(dImQ2n,2)
8068 + 3.*dImQ2n*dImQ6n*pow(dReQ2n,2)-dImQ6n*pow(dImQ2n,3))
8069 - ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
8070 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8071 + 4.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8072 + pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n
8073 - (2.*dMult-13.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n
8074 + dImQ6n*dImQ4n*dReQ2n)
8075 + 7.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
8076 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))
8077 + 2.*(dMult-5.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8078 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8079 + 2.*(dMult-6.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8080 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8081 - pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
8082 + 2.*(3.*dMult-11.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8083 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8084 five6n4n4n4n2n = ((pow(dImQ4n,2.)+pow(dReQ4n,2.))*(dImQ4n*dImQ6n*dReQ2n+dImQ2n*dImQ6n*dReQ4n
8085 - dImQ2n*dImQ4n*dReQ6n+dReQ2n*dReQ4n*dReQ6n)
8086 - (-pow(dImQ4n,2.)*dImQ2n*dImQ10n+dImQ2n*dImQ10n*pow(dReQ4n,2.)
8087 + 2.*dImQ4n*dImQ10n*dReQ4n*dReQ2n-2.*dImQ4n*dImQ2n*dReQ4n*dReQ10n
8088 - pow(dImQ4n,2.)*dReQ2n*dReQ10n+pow(dReQ4n,2.)*dReQ2n*dReQ10n)
8089 - (dImQ2n*dImQ4n*dImQ6n*dImQ8n+dImQ6n*dImQ8n*dReQ2n*dReQ4n
8090 + dImQ4n*dImQ8n*dReQ2n*dReQ6n-dImQ2n*dImQ8n*dReQ4n*dReQ6n
8091 - dImQ4n*dImQ6n*dReQ2n*dReQ8n+dImQ2n*dImQ6n*dReQ4n*dReQ8n
8092 + dImQ2n*dImQ4n*dReQ6n*dReQ8n+dReQ2n*dReQ4n*dReQ6n*dReQ8n)
8093 - ((pow(dReQ4n,2.)-pow(dImQ4n,2.))*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)
8094 + 2.*dReQ4n*dImQ4n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8095 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8096 + (dReQ10n*dReQ8n*dReQ2n-dReQ10n*dImQ8n*dImQ2n+dImQ10n*dReQ8n*dImQ2n+dImQ10n*dImQ8n*dReQ2n)
8097 + 4.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
8098 + dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n)
8099 + 3.*(pow(dReQ4n,2.)*dReQ8n+2.*dReQ4n*dImQ4n*dImQ8n-pow(dImQ4n,2.)*dReQ8n)
8100 - 2.*(dMult-6.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
8101 + 4.*(pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n)
8102 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8103 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))+2.*(dMult-5.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8104 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8105 - pow((pow(dReQ4n,2.)+pow(dImQ4n,2.)),2.)+2.*(3.*dMult-10.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8106 + 2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8107 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8108 // to be polished:
8109 five6n2n2n5n5n = (reQ6nQ2nQ2nQ5nstarQ5nstar
8110 - reQ6nQ4nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar-reQ8nQ2nQ5nstarQ5nstar
8111 - reQ6nQ2nQ5nstarQ3nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8112 - reQ10nQ6nstarQ2nstarQ2nstar-reQ6nQ2nQ5nstarQ3nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8113 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
8114 + reQ5nQ4nstarQ1nstar+reQ8nQ5nstarQ3nstar+reQ8nQ5nstarQ3nstar
8115 + reQ10nQ8nstarQ2nstar+reQ10nQ6nstarQ4nstar+reQ10nQ8nstarQ2nstar
8116 + reQ5nQ4nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8117 + reQ8nQ5nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8118 + reQ8nQ5nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8119 + 2.*(reQ8nQ6nstarQ2nstar+reQ8nQ6nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8120 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar)
8121 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8122 - 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.))
8123 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8124 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8125 - 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.))
8126 + 24.*dMult)
8127 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8128 // to be polished:
8129 five6n5n5n5n1n = (reQ6nQ5nQ5nstarQ5nstarQ1nstar
8130 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8131 - reQ10nQ1nQ6nstarQ5nstar
8132 - dMult*reQ6nQ5nstarQ1nstar
8133 - reQ11nQ5nstarQ5nstarQ1nstar
8134 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8135 - reQ6nQ4nQ5nstarQ5nstar
8136 + reQ5nQ4nstarQ1nstar
8137 + reQ11nQ6nstarQ5nstar
8138 + 3.*reQ6nQ5nstarQ1nstar
8139 + 2.*reQ11nQ6nstarQ5nstar
8140 + dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8141 + reQ11nQ6nstarQ5nstar
8142 + reQ10nQ6nstarQ4nstar
8143 + reQ5nQ4nstarQ1nstar
8144 + reQ11nQ10nstarQ1nstar
8145 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8146 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8147 + 3.*reQ6nQ5nstarQ1nstar
8148 + reQ5nQ4nstarQ1nstar
8149 + 2.*dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8150 + 3.*reQ10nQ5nstarQ5nstar
8151 + reQ5nQ4nstarQ1nstar
8152 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8153 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8154 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8155 - (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8156 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
8157 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8158 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8159 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8160 - 2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8161 - 2.*dMult*dMult
8162 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8163 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8164 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8165 + 2.*(dMult-6.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))-2.*dMult*(dMult-12.))
8166 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8167 // to be polished:
8168 five6n6n5n5n2n = (reQ6nQ6nQ5nstarQ5nstarQ2nstar
8169 - reQ7nQ5nQ6nstarQ6nstar-reQ7nQ5nQ6nstarQ6nstar-reQ10nQ2nQ6nstarQ6nstar
8170 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ4nQ5nstarQ5nstar
8171 - reQ12nQ5nstarQ5nstarQ2nstar-reQ6nQ4nQ5nstarQ5nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8172 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ12nQ6nstarQ6nstar)
8173 + reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ10nQ6nstarQ4nstar
8174 + reQ12nQ10nstarQ2nstar+reQ12nQ7nstarQ5nstar+reQ12nQ7nstarQ5nstar
8175 + reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ5nQ4nstarQ1nstar
8176 + reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ5nQ4nstarQ1nstar
8177 + reQ10nQ6nstarQ4nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8178 + 2.*(reQ10nQ5nstarQ5nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar)
8179 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar)
8180 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8181 - 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.))
8182 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ10n,2.)+pow(dImQ10n,2.))
8183 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8184 - 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.))
8185 + 24.*dMult)
8186 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8187 five6n6n6n4n2n = ((pow(dImQ6n,2.)+pow(dReQ6n,2.))*(dImQ4n*dImQ6n*dReQ2n+dImQ2n*dImQ6n*dReQ4n
8188 - dImQ2n*dImQ4n*dReQ6n+dReQ2n*dReQ4n*dReQ6n)
8189 - (dReQ2n*dReQ4n*dReQ6n*dReQ12n-dReQ6n*dReQ12n*dImQ2n*dImQ4n
8190 - dReQ4n*dReQ12n*dImQ2n*dImQ6n-dReQ2n*dReQ12n*dImQ4n*dImQ6n
8191 + dReQ4n*dReQ6n*dImQ2n*dImQ12n+dReQ2n*dReQ6n*dImQ4n*dImQ12n
8192 + dReQ2n*dReQ4n*dImQ6n*dImQ12n-dImQ2n*dImQ4n*dImQ6n*dImQ12n)
8193 - (dImQ2n*pow(dImQ6n,2.)*dImQ10n+2.*dImQ6n*dImQ10n*dReQ2n*dReQ6n
8194 - dImQ2n*dImQ10n*pow(dReQ6n,2.)-pow(dImQ6n,2.)*dReQ2n*dReQ10n
8195 + 2.*dImQ2n*dImQ6n*dReQ6n*dReQ10n+dReQ2n*pow(dReQ6n,2.)*dReQ10n)
8196 - ((dReQ8n*dReQ4n-dImQ8n*dImQ4n)*(dReQ6n*dReQ6n-dImQ6n*dImQ6n)
8197 + 2.*(dReQ8n*dImQ4n+dImQ8n*dReQ4n)*dReQ6n*dImQ6n)
8198 + dReQ12n*dReQ10n*dReQ2n-dReQ12n*dImQ10n*dImQ2n+dImQ12n*dReQ10n*dImQ2n+dImQ12n*dImQ10n*dReQ2n
8199 + dReQ12n*dReQ8n*dReQ4n-dReQ12n*dImQ8n*dImQ4n+dImQ12n*dReQ8n*dImQ4n+dImQ12n*dImQ8n*dReQ4n
8200 + 3.*(pow(dReQ6n,2.)*dReQ12n+2.*dReQ6n*dImQ6n*dImQ12n-pow(dImQ6n,2.)*dReQ12n)
8201 + 4.*(dReQ10n*dReQ4n*dReQ6n-dReQ10n*dImQ4n*dImQ6n+dImQ10n*dReQ4n*dImQ6n+dImQ10n*dImQ4n*dReQ6n)
8202 + 4.*(dReQ8n*(dReQ6n*dReQ2n-dImQ6n*dImQ2n)+dImQ8n*(dReQ6n*dImQ2n+dImQ6n*dReQ2n))
8203 - 2.*(dMult-6.)*(dReQ6n*dReQ4n*dReQ2n-dReQ6n*dImQ4n*dImQ2n+dImQ6n*dReQ4n*dImQ2n+dImQ6n*dImQ4n*dReQ2n)
8204 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8205 - 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
8206 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))-2.*(pow(dReQ10n,2.)+pow(dImQ10n,2.))
8207 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.))+2.*(3.*dMult-10.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8208 - pow((pow(dReQ6n,2.)+pow(dImQ6n,2.)),2.)+2.*(dMult-5.)*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8209 + 2.*(dMult-5.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*dMult*(dMult-6.))
8210 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8211 // to be polished (and TBI swap with the one above):
8212 five6n6n6n5n1n = (reQ6nQ6nQ6nstarQ5nstarQ1nstar
8213 - reQ7nQ5nQ6nstarQ6nstar
8214 - reQ11nQ1nQ6nstarQ6nstar
8215 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8216 - reQ12nQ6nstarQ5nstarQ1nstar
8217 - dMult*reQ6nQ5nstarQ1nstar
8218 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8219 + reQ6nQ5nstarQ1nstar
8220 + reQ12nQ6nstarQ6nstar
8221 + 3.*dMult*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8222 + 2.*reQ12nQ6nstarQ6nstar
8223 + reQ7nQ6nstarQ1nstar
8224 + reQ12nQ7nstarQ5nstar
8225 + reQ11nQ6nstarQ5nstar
8226 + reQ6nQ5nstarQ1nstar
8227 + reQ12nQ11nstarQ1nstar
8228 + dMult*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8229 - (dMult-6.)*reQ6nQ5nstarQ1nstar
8230 + 3.*reQ7nQ6nstarQ1nstar
8231 + reQ6nQ5nstarQ1nstar
8232 + 2.*reQ6nQ5nstarQ1nstar
8233 + 3.*reQ11nQ6nstarQ5nstar
8234 + dMult*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8235 + reQ6nQ5nstarQ1nstar
8236 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8237 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8238 - (pow(dReQ6n,2.)+pow(dImQ6n,2.))*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8239 - 2.*(pow(dReQ12n,2.)+pow(dImQ12n,2.))
8240 - 2.*dMult*dMult
8241 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.))
8242 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8243 - 2.*(pow(dReQ11n,2.)+pow(dImQ11n,2.))
8244 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8245 + (dMult-8.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8246 + (dMult-8.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8247 + (dMult-8.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
8248 + 2.*(dMult-6.)*(pow(dReQ6n,2.)+pow(dImQ6n,2.))-2.*dMult*(dMult-12.))
8249 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8250 // Four distinct harmonics (11):
8251 // to be polished:
8252 five5n2n3n3n1n = (reQ5nQ2nQ3nstarQ3nstarQ1nstar
8253 - reQ5nQ2nQ4nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar-reQ6nQ1nQ5nstarQ2nstar
8254 - reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar
8255 - reQ7nQ3nstarQ3nstarQ1nstar-reQ4nQ2nQ3nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar
8256 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar)
8257 + reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ6nQ5nstarQ1nstar
8258 + reQ7nQ6nstarQ1nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar
8259 + reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8260 + reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8261 + reQ6nQ4nstarQ2nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
8262 + 2.*(reQ6nQ3nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8263 + 2.*(reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8264 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8265 - 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.))
8266 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8267 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8268 - 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.))
8269 + 24.*dMult)
8270 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8271 // to be polished:
8272 five5n1n1n4n3n = (reQ5nQ1nQ1nQ4nstarQ3nstar
8273 - reQ5nQ2nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar
8274 - reQ5nQ1nQ4nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8275 - reQ7nQ5nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar-reQ3nQ1nstarQ1nstarQ1nstar-reQ5nQ1nQ3nstarQ3nstar
8276 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ7nQ4nstarQ3nstar)
8277 + reQ4nQ2nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar
8278 + reQ7nQ6nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ7nQ6nstarQ1nstar
8279 + reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8280 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8281 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8282 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8283 + 2.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8284 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8285 - 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.))
8286 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8287 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8288 - 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.))
8289 + 24.*dMult)
8290 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8291 // to be polished:
8292 five5n3n4n2n2n = (reQ5nQ3nQ4nstarQ2nstarQ2nstar
8293 - reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ5nstarQ3nstar-reQ6nQ2nQ5nstarQ3nstar
8294 - reQ5nQ1nQ4nstarQ2nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8295 - reQ8nQ4nstarQ2nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nQ3nstarQ3nstar
8296 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ8nQ5nstarQ3nstar)
8297 + reQ5nQ4nstarQ1nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8298 + reQ8nQ6nstarQ2nstar+reQ8nQ4nstarQ4nstar+reQ8nQ6nstarQ2nstar
8299 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8300 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8301 + reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8302 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8303 + 2.*(reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8304 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8305 - 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.))
8306 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.))
8307 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8308 - 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.))
8309 + 24.*dMult)
8310 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
b84464d3 8311
e1d101a6 8312 // to be polished!!!:
8313 five5n2n1n4n4n = (reQ5nQ2nQ1nQ4nstarQ4nstar
8314 - reQ5nQ3nQ4nstarQ4nstar-reQ6nQ2nQ4nstarQ4nstar-reQ7nQ1nQ4nstarQ4nstar
8315 - reQ5nQ1nQ4nstarQ2nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar
8316 - reQ8nQ5nstarQ2nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ5nQ1nQ4nstarQ2nstar
8317 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ8nQ4nstarQ4nstar)
8318 + reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ7nQ4nstarQ3nstar
8319 + reQ8nQ7nstarQ1nstar+reQ8nQ5nstarQ3nstar+reQ8nQ6nstarQ2nstar
8320 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8321 + reQ6nQ4nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ5nQ3nstarQ2nstar
8322 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8323 + 2.*(reQ7nQ5nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8324 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar)
8325 - 6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
8326 - 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.))
8327 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ6n,2.)+pow(dImQ6n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8328 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8329 - 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.))
8330 + 24.*dMult)
8331 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
403e3389 8332
e1d101a6 8333
8334 // to be polished:
8335 five6n1n3n2n2n = (reQ6nQ1nQ3nstarQ2nstarQ2nstar
8336 - reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ5nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8337 - reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ2nstarQ2nstarQ2nstar-reQ6nQ3nstarQ2nstarQ1nstar
8338 - reQ7nQ3nstarQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
8339 + 2.*(reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ7nQ6nstarQ1nstar)
8340 + reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8341 + reQ7nQ5nstarQ2nstar+reQ7nQ4nstarQ3nstar+reQ7nQ5nstarQ2nstar
8342 + reQ4nQ3nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar
8343 + reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar
8344 + reQ5nQ4nstarQ1nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar
8345 + 2.*(reQ5nQ3nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8346 + 2.*(reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8347 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8348 - 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.))
8349 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8350 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8351 - 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.))
8352 + 24.*dMult)
8353 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8354
8355
8356 // to be polished:
8357 five6n3n4n4n1n = (reQ6nQ3nQ4nstarQ4nstarQ1nstar
8358 - reQ8nQ1nQ6nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ3nQ5nstarQ4nstar
8359 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ2nQ4nstarQ4nstar-reQ6nQ4nstarQ1nstarQ1nstar
8360 - reQ9nQ4nstarQ4nstarQ1nstar-reQ4nQ1nQ3nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ4nQ1nQ3nstarQ2nstar
8361 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ9nQ6nstarQ3nstar)
8362 + reQ8nQ6nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ5nstarQ1nstar
8363 + reQ9nQ5nstarQ4nstar+reQ9nQ8nstarQ1nstar+reQ9nQ5nstarQ4nstar
8364 + reQ8nQ5nstarQ3nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar
8365 + reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar
8366 + reQ5nQ3nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar
8367 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ8nQ4nstarQ4nstar)
8368 + 2.*(reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8369 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8370 - 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.))
8371 - 2.*(pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.))
8372 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8373 - 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.))
8374 + 24.*dMult)
8375 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8376
8377 // to be polished:
8378 five6n1n1n5n3n = (reQ6nQ1nQ1nQ5nstarQ3nstar
8379 - reQ6nQ2nQ5nstarQ3nstar-reQ7nQ1nQ5nstarQ3nstar-reQ7nQ1nQ5nstarQ3nstar
8380 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ1nQ5nstarQ2nstar
8381 - reQ8nQ6nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar-reQ3nQ1nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8382 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ8nQ5nstarQ3nstar)
8383 + reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar
8384 + reQ8nQ7nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ8nQ7nstarQ1nstar
8385 + reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8386 + reQ7nQ4nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8387 + reQ7nQ4nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8388 + 2.*(reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ2nQ1nstarQ1nstar)
8389 + 2.*(reQ6nQ3nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8390 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8391 - 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.))
8392 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8393 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ3n,2.)+pow(dImQ3n,2.))
8394 - 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.))
8395 + 24.*dMult)
8396 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8397 // to be polished:
8398 five6n3n5n2n2n = (reQ6nQ3nQ5nstarQ2nstarQ2nstar
8399 - reQ6nQ3nQ5nstarQ4nstar-reQ7nQ2nQ6nstarQ3nstar-reQ7nQ2nQ6nstarQ3nstar
8400 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ2nstarQ2nstarQ2nstar-reQ6nQ1nQ5nstarQ2nstar
8401 - reQ9nQ5nstarQ2nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar
8402 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ4nstarQ2nstar+reQ9nQ6nstarQ3nstar)
8403 + reQ6nQ4nstarQ2nstar+reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar
8404 + reQ9nQ7nstarQ2nstar+reQ9nQ5nstarQ4nstar+reQ9nQ7nstarQ2nstar
8405 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ2nQ1nstarQ1nstar
8406 + reQ7nQ4nstarQ3nstar+reQ4nQ2nstarQ2nstar+reQ5nQ4nstarQ1nstar
8407 + reQ7nQ4nstarQ3nstar+reQ4nQ2nstarQ2nstar+reQ5nQ4nstarQ1nstar
8408 + 2.*(reQ7nQ5nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ4nQ2nstarQ2nstar)
8409 + 2.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8410 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8411 - 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.))
8412 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8413 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8414 - 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.))
8415 + 24.*dMult)
8416 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8417
8418 // to be polished
8419 five6n5n4n4n3n = (reQ6nQ5nQ4nstarQ4nstarQ3nstar
8420 - reQ7nQ4nQ6nstarQ5nstar-reQ7nQ4nQ6nstarQ5nstar-reQ8nQ3nQ6nstarQ5nstar
8421 - reQ6nQ1nQ4nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ2nQ4nstarQ4nstar
8422 - reQ11nQ4nstarQ4nstarQ3nstar-reQ5nQ3nQ4nstarQ4nstar-reQ5nQ2nQ4nstarQ3nstar-reQ5nQ2nQ4nstarQ3nstar
8423 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ11nQ6nstarQ5nstar)
8424 + reQ7nQ6nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar
8425 + reQ11nQ8nstarQ3nstar+reQ11nQ7nstarQ4nstar+reQ11nQ7nstarQ4nstar
8426 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
8427 + reQ7nQ5nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ2nstarQ2nstar
8428 + reQ8nQ5nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ4nQ3nstarQ1nstar
8429 + 2.*(reQ8nQ4nstarQ4nstar+reQ7nQ4nstarQ3nstar+reQ7nQ4nstarQ3nstar)
8430 + 2.*(reQ5nQ4nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar)
8431 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8432 - 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.))
8433 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8434 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8435 - 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.))
8436 + 24.*dMult)
8437 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8438 // to be polished:
8439 five6n3n1n5n5n = (reQ6nQ3nQ1nQ5nstarQ5nstar
8440 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ5nstarQ5nstar-reQ9nQ1nQ5nstarQ5nstar
8441 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ3nQ5nstarQ4nstar
8442 - reQ10nQ6nstarQ3nstarQ1nstar-reQ6nQ3nQ5nstarQ4nstar-reQ5nQ3nstarQ1nstarQ1nstar-reQ6nQ1nQ5nstarQ2nstar
8443 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ10nQ5nstarQ5nstar)
8444 + reQ5nQ4nstarQ1nstar+reQ7nQ5nstarQ2nstar+reQ9nQ5nstarQ4nstar
8445 + reQ10nQ9nstarQ1nstar+reQ10nQ6nstarQ4nstar+reQ10nQ7nstarQ3nstar
8446 + reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ4nQ3nstarQ1nstar
8447 + reQ7nQ5nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ6nQ4nstarQ2nstar
8448 + reQ9nQ5nstarQ4nstar+reQ4nQ3nstarQ1nstar+reQ6nQ4nstarQ2nstar
8449 + 2.*(reQ9nQ6nstarQ3nstar+reQ7nQ6nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8450 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar)
8451 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8452 - 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.))
8453 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ9n,2.)+pow(dImQ9n,2.))
8454 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8455 - 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.))
8456 + 24.*dMult)
8457 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8458 // to be polished:
8459 five6n6n5n4n3n = (reQ6nQ6nQ5nstarQ4nstarQ3nstar
8460 - reQ7nQ5nQ6nstarQ6nstar-reQ8nQ4nQ6nstarQ6nstar-reQ9nQ3nQ6nstarQ6nstar
8461 - reQ6nQ2nQ5nstarQ3nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar
8462 - reQ12nQ5nstarQ4nstarQ3nstar-reQ6nQ3nQ5nstarQ4nstar-reQ6nQ1nQ4nstarQ3nstar-reQ6nQ2nQ5nstarQ3nstar
8463 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ6nQ4nstarQ2nstar+reQ12nQ6nstarQ6nstar)
8464 + reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar+reQ9nQ6nstarQ3nstar
8465 + reQ12nQ9nstarQ3nstar+reQ12nQ7nstarQ5nstar+reQ12nQ8nstarQ4nstar
8466 + reQ7nQ6nstarQ1nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar
8467 + reQ8nQ6nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar
8468 + reQ9nQ6nstarQ3nstar+reQ4nQ3nstarQ1nstar+reQ5nQ3nstarQ2nstar
8469 + 2.*(reQ9nQ5nstarQ4nstar+reQ8nQ5nstarQ3nstar+reQ7nQ4nstarQ3nstar)
8470 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar)
8471 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8472 - 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.))
8473 - 2.*(pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.)+pow(dReQ9n,2.)+pow(dImQ9n,2.))
8474 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8475 - 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.))
8476 + 24.*dMult)
8477 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8478 // Five distinct harmonics (3):
8479
8480 // to be polished:
8481 five6n2n4n3n1n = (reQ6nQ2nQ4nstarQ3nstarQ1nstar
8482 - reQ6nQ2nQ4nstarQ4nstar-reQ6nQ2nQ5nstarQ3nstar-reQ7nQ1nQ6nstarQ2nstar
8483 - reQ6nQ4nstarQ1nstarQ1nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8484 - reQ8nQ4nstarQ3nstarQ1nstar-reQ5nQ2nQ4nstarQ3nstar-reQ3nQ1nQ2nstarQ2nstar-reQ4nQ1nQ3nstarQ2nstar
8485 + 2.*(reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ6nQ3nstarQ3nstar+reQ8nQ6nstarQ2nstar)
8486 + 1.*(reQ6nQ4nstarQ2nstar+reQ6nQ5nstarQ1nstar+reQ7nQ6nstarQ1nstar)
8487 + 1.*(reQ8nQ7nstarQ1nstar+reQ8nQ4nstarQ4nstar+reQ8nQ5nstarQ3nstar)
8488 + 1.*(reQ4nQ2nstarQ2nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8489 + 1.*(reQ5nQ3nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8490 + 1.*(reQ7nQ5nstarQ2nstar+reQ5nQ3nstarQ2nstar+reQ5nQ4nstarQ1nstar)
8491 + 2.*(reQ7nQ4nstarQ3nstar+reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar)
8492 + 2.*(reQ4nQ2nstarQ2nstar+reQ3nQ2nstarQ1nstar+reQ2nQ1nstarQ1nstar) // 3 - 1
8493 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8494 - 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.))
8495 - 2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)+pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.))
8496 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8497 - 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.))
8498 + 24.*dMult)
8499 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8500
8501
8502 // to be polished:
8503 five6n2n1n5n4n = (reQ6nQ2nQ1nQ5nstarQ4nstar
8504 - reQ6nQ3nQ5nstarQ4nstar-reQ7nQ2nQ5nstarQ4nstar-reQ8nQ1nQ5nstarQ4nstar
8505 - reQ6nQ1nQ5nstarQ2nstar-reQ5nQ2nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8506 - reQ9nQ6nstarQ2nstarQ1nstar-reQ6nQ2nQ4nstarQ4nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ6nQ1nQ4nstarQ3nstar
8507 + 2.*(reQ6nQ5nstarQ1nstar+reQ5nQ4nstarQ1nstar+reQ5nQ3nstarQ2nstar+reQ9nQ5nstarQ4nstar)
8508 + reQ5nQ3nstarQ2nstar+reQ7nQ5nstarQ2nstar+reQ8nQ5nstarQ3nstar
8509 + reQ9nQ8nstarQ1nstar+reQ9nQ6nstarQ3nstar+reQ9nQ7nstarQ2nstar
8510 + reQ4nQ3nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar
8511 + reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ6nQ3nstarQ3nstar
8512 + reQ8nQ4nstarQ4nstar+reQ4nQ2nstarQ2nstar+reQ6nQ4nstarQ2nstar
8513 + 2.*(reQ8nQ6nstarQ2nstar+reQ7nQ6nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8514 + 2.*(reQ6nQ4nstarQ2nstar+reQ4nQ2nstarQ2nstar+reQ4nQ3nstarQ1nstar)
8515 - 6.*(pow(dReQ5n,2.)+pow(dImQ5n,2.))
8516 - 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.))
8517 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8518 - 2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ2n,2.)+pow(dImQ2n,2.))
8519 - 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.))
8520 + 24.*dMult)
8521 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8522
8523
8524
8525 // to be polished:
8526 five6n4n5n3n2n = (reQ6nQ4nQ5nstarQ3nstarQ2nstar
8527 - reQ6nQ4nQ5nstarQ5nstar-reQ7nQ3nQ6nstarQ4nstar-reQ8nQ2nQ6nstarQ4nstar
8528 - reQ6nQ1nQ5nstarQ2nstar-reQ6nQ3nstarQ2nstarQ1nstar-reQ6nQ2nQ5nstarQ3nstar
8529 - reQ10nQ5nstarQ3nstarQ2nstar-reQ5nQ3nQ4nstarQ4nstar-reQ4nQ1nQ3nstarQ2nstar-reQ5nQ2nQ4nstarQ3nstar
8530 + 2.*(reQ6nQ5nstarQ1nstar+reQ6nQ4nstarQ2nstar+reQ6nQ3nstarQ3nstar+reQ10nQ6nstarQ4nstar)
8531 + 1.*(reQ6nQ5nstarQ1nstar+reQ7nQ6nstarQ1nstar+reQ8nQ6nstarQ2nstar)
8532 + 1.*(reQ10nQ8nstarQ2nstar+reQ10nQ5nstarQ5nstar+reQ10nQ7nstarQ3nstar)
8533 + 1.*(reQ5nQ4nstarQ1nstar+reQ2nQ1nstarQ1nstar+reQ3nQ2nstarQ1nstar)
8534 + 1.*(reQ7nQ4nstarQ3nstar+reQ3nQ2nstarQ1nstar+reQ5nQ3nstarQ2nstar)
8535 + 1.*(reQ8nQ4nstarQ4nstar+reQ4nQ3nstarQ1nstar+reQ5nQ4nstarQ1nstar)
8536 + 2.*(reQ8nQ5nstarQ3nstar+reQ7nQ5nstarQ2nstar+reQ5nQ3nstarQ2nstar)
8537 + 2.*(reQ5nQ4nstarQ1nstar+reQ4nQ3nstarQ1nstar+reQ4nQ2nstarQ2nstar) // 3 - 1
8538 - 6.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))
8539 - 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.))
8540 - 2.*(pow(dReQ5n,2.)+pow(dImQ5n,2.)+pow(dReQ7n,2.)+pow(dImQ7n,2.)+pow(dReQ8n,2.)+pow(dImQ8n,2.))
8541 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.)+pow(dReQ1n,2.)+pow(dImQ1n,2.))
8542 - 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.))
8543 + 24.*dMult)
8544 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
8545
8546
8547
8548 f5pCorrelations->Fill(0.5,five3n2n3n1n1n,d5pMultiplicityWeight);
8549 f5pCorrelations->Fill(1.5,five4n1n2n2n1n,d5pMultiplicityWeight);
8550 f5pCorrelations->Fill(2.5,five4n2n3n2n1n,d5pMultiplicityWeight);
8551 f5pCorrelations->Fill(3.5,five4n3n3n2n2n,d5pMultiplicityWeight);
8552 f5pCorrelations->Fill(4.5,five4n2n4n1n1n,d5pMultiplicityWeight);
8553 f5pCorrelations->Fill(5.5,five4n3n4n2n1n,d5pMultiplicityWeight);
8554 f5pCorrelations->Fill(6.5,five5n1n3n2n1n,d5pMultiplicityWeight);
8555 f5pCorrelations->Fill(7.5,five5n2n5n1n1n,d5pMultiplicityWeight);
8556 f5pCorrelations->Fill(8.5,five5n2n4n2n1n,d5pMultiplicityWeight);
8557 f5pCorrelations->Fill(9.5,five5n3n4n3n1n,d5pMultiplicityWeight);
8558 f5pCorrelations->Fill(10.5,five5n4n4n3n2n,d5pMultiplicityWeight);
8559 f5pCorrelations->Fill(11.5,five5n3n5n2n1n,d5pMultiplicityWeight);
8560 f5pCorrelations->Fill(12.5,five5n4n5n2n2n,d5pMultiplicityWeight);
8561 f5pCorrelations->Fill(13.5,five5n4n5n3n1n,d5pMultiplicityWeight);
8562 f5pCorrelations->Fill(14.5,five6n1n3n3n1n,d5pMultiplicityWeight);
8563 f5pCorrelations->Fill(15.5,five6n2n3n3n2n,d5pMultiplicityWeight);
8564 f5pCorrelations->Fill(16.5,five6n1n4n2n1n,d5pMultiplicityWeight);
8565 f5pCorrelations->Fill(17.5,five6n3n4n3n2n,d5pMultiplicityWeight);
8566 f5pCorrelations->Fill(18.5,five6n4n4n3n3n,d5pMultiplicityWeight);
8567 f5pCorrelations->Fill(19.5,five6n2n5n2n1n,d5pMultiplicityWeight);
8568 f5pCorrelations->Fill(20.5,five6n3n5n3n1n,d5pMultiplicityWeight);
8569 f5pCorrelations->Fill(21.5,five6n4n5n4n1n,d5pMultiplicityWeight);
8570 f5pCorrelations->Fill(22.5,five6n5n5n3n3n,d5pMultiplicityWeight);
8571 f5pCorrelations->Fill(23.5,five6n2n6n1n1n,d5pMultiplicityWeight);
8572 f5pCorrelations->Fill(24.5,five6n3n6n2n1n,d5pMultiplicityWeight);
8573 f5pCorrelations->Fill(25.5,five6n4n6n2n2n,d5pMultiplicityWeight);
8574 f5pCorrelations->Fill(26.5,five6n4n6n3n1n,d5pMultiplicityWeight);
8575 f5pCorrelations->Fill(27.5,five6n5n5n4n2n,d5pMultiplicityWeight);
8576 f5pCorrelations->Fill(28.5,five6n5n6n3n2n,d5pMultiplicityWeight);
8577 f5pCorrelations->Fill(29.5,five6n5n6n4n1n,d5pMultiplicityWeight);
8578 //f5pCorrelations->Fill(30.5,-44.,d5pMultiplicityWeight);
8579 f5pCorrelations->Fill(31.5,five2n1n1n1n1n,d5pMultiplicityWeight);
8580 f5pCorrelations->Fill(32.5,five2n2n2n1n1n,d5pMultiplicityWeight);
8581 f5pCorrelations->Fill(33.5,five3n3n2n2n2n,d5pMultiplicityWeight);
8582 f5pCorrelations->Fill(34.5,five4n1n1n1n1n,d5pMultiplicityWeight);
8583 f5pCorrelations->Fill(35.5,five4n2n2n2n2n,d5pMultiplicityWeight);
8584 f5pCorrelations->Fill(36.5,five4n4n4n2n2n,d5pMultiplicityWeight);
8585 f5pCorrelations->Fill(37.5,five6n3n3n3n3n,d5pMultiplicityWeight);
8586 f5pCorrelations->Fill(38.5,five6n6n4n4n4n,d5pMultiplicityWeight);
8587 f5pCorrelations->Fill(39.5,five6n6n6n3n3n,d5pMultiplicityWeight);
8588 //f5pCorrelations->Fill(40.5,-44.,d5pMultiplicityWeight);
8589 f5pCorrelations->Fill(41.5,five3n1n2n1n1n,d5pMultiplicityWeight);
8590 f5pCorrelations->Fill(42.5,five3n2n2n2n1n,d5pMultiplicityWeight);
8591 f5pCorrelations->Fill(43.5,five3n3n3n2n1n,d5pMultiplicityWeight);
8592 f5pCorrelations->Fill(44.5,five4n1n3n1n1n,d5pMultiplicityWeight);
8593 f5pCorrelations->Fill(45.5,five4n1n1n3n3n,d5pMultiplicityWeight);
8594 f5pCorrelations->Fill(46.5,five4n3n3n3n1n,d5pMultiplicityWeight);
8595 f5pCorrelations->Fill(47.5,five4n4n3n3n2n,d5pMultiplicityWeight);
8596 f5pCorrelations->Fill(48.5,five4n4n4n3n1n,d5pMultiplicityWeight);
8597 f5pCorrelations->Fill(49.5,five5n2n1n1n1n,d5pMultiplicityWeight);
8598 f5pCorrelations->Fill(50.5,five5n1n2n2n2n,d5pMultiplicityWeight);
8599 f5pCorrelations->Fill(51.5,five5n2n3n2n2n,d5pMultiplicityWeight);
8600 f5pCorrelations->Fill(52.5,five5n3n3n3n2n,d5pMultiplicityWeight);
8601 f5pCorrelations->Fill(53.5,five5n1n4n1n1n,d5pMultiplicityWeight);
8602 f5pCorrelations->Fill(54.5,five5n4n3n3n3n,d5pMultiplicityWeight);
8603 f5pCorrelations->Fill(55.5,five5n4n4n4n1n,d5pMultiplicityWeight);
8604 f5pCorrelations->Fill(56.5,five5n5n4n3n3n,d5pMultiplicityWeight);
8605 f5pCorrelations->Fill(57.5,five5n5n4n4n2n,d5pMultiplicityWeight);
8606 f5pCorrelations->Fill(58.5,five5n5n5n3n2n,d5pMultiplicityWeight);
8607 f5pCorrelations->Fill(59.5,five5n5n5n4n1n,d5pMultiplicityWeight);
8608 f5pCorrelations->Fill(60.5,five6n2n2n1n1n,d5pMultiplicityWeight);
8609 f5pCorrelations->Fill(61.5,five6n3n1n1n1n,d5pMultiplicityWeight);
8610 f5pCorrelations->Fill(62.5,five6n1n1n4n4n,d5pMultiplicityWeight);
8611 f5pCorrelations->Fill(63.5,five6n1n5n1n1n,d5pMultiplicityWeight);
8612 f5pCorrelations->Fill(64.5,five6n2n4n2n2n,d5pMultiplicityWeight);
8613 f5pCorrelations->Fill(65.5,five6n4n4n4n2n,d5pMultiplicityWeight);
8614 f5pCorrelations->Fill(66.5,five6n2n2n5n5n,d5pMultiplicityWeight);
8615 f5pCorrelations->Fill(67.5,five6n5n5n5n1n,d5pMultiplicityWeight);
8616 f5pCorrelations->Fill(68.5,five6n6n5n5n2n,d5pMultiplicityWeight);
8617 f5pCorrelations->Fill(69.5,five6n6n6n4n2n,d5pMultiplicityWeight);
8618 f5pCorrelations->Fill(70.5,five6n6n6n5n1n,d5pMultiplicityWeight);
8619 //f5pCorrelations->Fill(71.5,-44.,d5pMultiplicityWeight);
8620 f5pCorrelations->Fill(72.5,five5n2n3n3n1n,d5pMultiplicityWeight);
8621 f5pCorrelations->Fill(73.5,five5n1n1n4n3n,d5pMultiplicityWeight);
8622 f5pCorrelations->Fill(74.5,five5n3n4n2n2n,d5pMultiplicityWeight);
8623 f5pCorrelations->Fill(75.5,five5n2n1n4n4n,d5pMultiplicityWeight);
8624 f5pCorrelations->Fill(76.5,five6n1n3n2n2n,d5pMultiplicityWeight);
8625 f5pCorrelations->Fill(77.5,five6n3n4n4n1n,d5pMultiplicityWeight);
8626 f5pCorrelations->Fill(78.5,five6n1n1n5n3n,d5pMultiplicityWeight);
8627 f5pCorrelations->Fill(79.5,five6n3n5n2n2n,d5pMultiplicityWeight);
8628 f5pCorrelations->Fill(80.5,five6n5n4n4n3n,d5pMultiplicityWeight);
8629 f5pCorrelations->Fill(81.5,five6n3n1n5n5n,d5pMultiplicityWeight);
8630 f5pCorrelations->Fill(82.5,five6n6n5n4n3n,d5pMultiplicityWeight);
8631 //f5pCorrelations->Fill(83.5,-44.,d5pMultiplicityWeight);
8632 f5pCorrelations->Fill(84.5,five6n2n4n3n1n,d5pMultiplicityWeight);
8633 f5pCorrelations->Fill(85.5,five6n2n1n5n4n,d5pMultiplicityWeight);
8634 f5pCorrelations->Fill(86.5,five6n4n5n3n2n,d5pMultiplicityWeight);
c10259fb 8635 allMixedCorrelators[56]=five3n2n3n1n1n;
8636 allMixedCorrelators[57]=five4n1n2n2n1n;
8637 allMixedCorrelators[58]=five4n2n3n2n1n;
8638 allMixedCorrelators[59]=five4n3n3n2n2n;
8639 allMixedCorrelators[60]=five4n2n4n1n1n;
8640 allMixedCorrelators[61]=five4n3n4n2n1n;
8641 allMixedCorrelators[62]=five5n1n3n2n1n;
8642 allMixedCorrelators[63]=five5n2n5n1n1n;
8643 allMixedCorrelators[64]=five5n2n4n2n1n;
8644 allMixedCorrelators[65]=five5n3n4n3n1n;
8645 allMixedCorrelators[66]=five5n4n4n3n2n;
8646 allMixedCorrelators[67]=five5n3n5n2n1n;
8647 allMixedCorrelators[68]=five5n4n5n2n2n;
8648 allMixedCorrelators[69]=five5n4n5n3n1n;
8649 allMixedCorrelators[70]=five6n1n3n3n1n;
8650 allMixedCorrelators[71]=five6n2n3n3n2n;
8651 allMixedCorrelators[72]=five6n1n4n2n1n;
8652 allMixedCorrelators[73]=five6n3n4n3n2n;
8653 allMixedCorrelators[74]=five6n4n4n3n3n;
8654 allMixedCorrelators[75]=five6n2n5n2n1n;
8655 allMixedCorrelators[76]=five6n3n5n3n1n;
8656 allMixedCorrelators[77]=five6n4n5n4n1n;
8657 allMixedCorrelators[78]=five6n5n5n3n3n;
8658 allMixedCorrelators[79]=five6n2n6n1n1n;
8659 allMixedCorrelators[80]=five6n3n6n2n1n;
8660 allMixedCorrelators[81]=five6n4n6n2n2n;
8661 allMixedCorrelators[82]=five6n4n6n3n1n;
8662 allMixedCorrelators[83]=five6n5n5n4n2n;
8663 allMixedCorrelators[84]=five6n5n6n3n2n;
8664 allMixedCorrelators[85]=five6n5n6n4n1n;
8665 allMixedCorrelators[86]=five2n1n1n1n1n;
8666 allMixedCorrelators[87]=five2n2n2n1n1n;
8667 allMixedCorrelators[88]=five3n3n2n2n2n;
8668 allMixedCorrelators[89]=five4n1n1n1n1n;
8669 allMixedCorrelators[90]=five4n2n2n2n2n;
8670 allMixedCorrelators[91]=five4n4n4n2n2n;
8671 allMixedCorrelators[92]=five6n3n3n3n3n;
8672 allMixedCorrelators[93]=five6n6n4n4n4n;
8673 allMixedCorrelators[94]=five6n6n6n3n3n;
8674 allMixedCorrelators[95]=five3n1n2n1n1n;
8675 allMixedCorrelators[96]=five3n2n2n2n1n;
8676 allMixedCorrelators[97]=five3n3n3n2n1n;
8677 allMixedCorrelators[98]=five4n1n3n1n1n;
8678 allMixedCorrelators[99]=five4n1n1n3n3n;
8679 allMixedCorrelators[100]=five4n3n3n3n1n;
8680 allMixedCorrelators[101]=five4n4n3n3n2n;
8681 allMixedCorrelators[102]=five4n4n4n3n1n;
8682 allMixedCorrelators[103]=five5n2n1n1n1n;
8683 allMixedCorrelators[104]=five5n1n2n2n2n;
8684 allMixedCorrelators[105]=five5n2n3n2n2n;
8685 allMixedCorrelators[106]=five5n3n3n3n2n;
8686 allMixedCorrelators[107]=five5n1n4n1n1n;
8687 allMixedCorrelators[108]=five5n4n3n3n3n;
8688 allMixedCorrelators[109]=five5n4n4n4n1n;
8689 allMixedCorrelators[110]=five5n5n4n3n3n;
8690 allMixedCorrelators[111]=five5n5n4n4n2n;
8691 allMixedCorrelators[112]=five5n5n5n3n2n;
8692 allMixedCorrelators[113]=five5n5n5n4n1n;
8693 allMixedCorrelators[114]=five6n2n2n1n1n;
8694 allMixedCorrelators[115]=five6n3n1n1n1n;
8695 allMixedCorrelators[116]=five6n1n1n4n4n;
8696 allMixedCorrelators[117]=five6n1n5n1n1n;
8697 allMixedCorrelators[118]=five6n2n4n2n2n;
8698 allMixedCorrelators[119]=five6n4n4n4n2n;
8699 allMixedCorrelators[120]=five6n2n2n5n5n;
8700 allMixedCorrelators[121]=five6n5n5n5n1n;
8701 allMixedCorrelators[122]=five6n6n5n5n2n;
8702 allMixedCorrelators[123]=five6n6n6n4n2n;
8703 allMixedCorrelators[124]=five6n6n6n5n1n;
8704 allMixedCorrelators[125]=five5n2n3n3n1n;
8705 allMixedCorrelators[126]=five5n1n1n4n3n;
8706 allMixedCorrelators[127]=five5n3n4n2n2n;
8707 allMixedCorrelators[128]=five5n2n1n4n4n;
8708 allMixedCorrelators[129]=five6n1n3n2n2n;
8709 allMixedCorrelators[130]=five6n3n4n4n1n;
8710 allMixedCorrelators[131]=five6n1n1n5n3n;
8711 allMixedCorrelators[132]=five6n3n5n2n2n;
8712 allMixedCorrelators[133]=five6n5n4n4n3n;
8713 allMixedCorrelators[134]=five6n3n1n5n5n;
8714 allMixedCorrelators[135]=five6n6n5n4n3n;
8715 allMixedCorrelators[136]=five6n2n4n3n1n;
8716 allMixedCorrelators[137]=five6n2n1n5n4n;
8717 allMixedCorrelators[138]=five6n4n5n3n2n;
e1d101a6 8718 } // end of if(dMult>4.)
b84464d3 8719
c10259fb 8720 // Products of mixed harmonics:
8721 Double_t dwx=0.;
8722 Double_t dwy=0.;
8723 for(Int_t x=1;x<=139;x++)
8724 {
8725 if(x>=1 && x<7)
8726 {
8727 dwx=d2pMultiplicityWeight;
8728 } else if(x>=7 && x<16)
8729 {
8730 dwx=d3pMultiplicityWeight;
8731 } else if(x>=16 && x<57)
8732 {
8733 dwx=d4pMultiplicityWeight;
8734 } else if(x>=57 && x<140)
8735 {
8736 dwx=d5pMultiplicityWeight;
8737 }
8738 for(Int_t y=x+1;y<=139;y++)
8739 {
8740 if(y>=1 && y<7)
8741 {
8742 dwy=d2pMultiplicityWeight;
8743 } else if(y>=7 && y<16)
8744 {
8745 dwy=d3pMultiplicityWeight;
8746 } else if(y>=16 && y<57)
8747 {
8748 dwy=d4pMultiplicityWeight;
8749 } else if(y>=57 && y<140)
8750 {
8751 dwy=d5pMultiplicityWeight;
8752 }
8753 fMixedHarmonicProductOfCorrelations->Fill(x-0.5,y-0.5,allMixedCorrelators[x-1]*allMixedCorrelators[y-1],dwx*dwy);
8754 } // end of for(Int_t y=x+1;y<=139;y++)
8755 } // end of for(Int_t x=1;x<=139;x++)
e1d101a6 8756
8757} // end of void AliFlowAnalysisWithQCumulants::CalculateMixedHarmonics()
489d5531 8758
e1d101a6 8759//===================================================================================================================
8760
8761void AliFlowAnalysisWithQCumulants::CalculateCumulantsMixedHarmonics()
8762{
8763 // Calculate in this method all multi-particle cumulants for azimuthal correlations in mixed harmonics.
8764 // (Remark: For completeness sake, we also calculate here again cumulants in the same harmonic.)
8765
8766 // a) Calculate 2-p cumulants;
8767 // b) Calculate 3-p cumulants;
8768 // c) Calculate 4-p cumulants;
8769 // d) Calculate 5-p cumulants.
8770
8771 // a) Calculate 2-p cumulants:
8772 for(Int_t b=1;b<=6;b++)
8773 {
8774 f2pCumulants->SetBinContent(b,f2pCorrelations->GetBinContent(b));
c10259fb 8775 Double_t dSumWLinear = 0.; // sum of linear event weights
8776 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
8777 Double_t dSpread = 0.; // weighted and biased estimator for sigma
8778 Double_t dError = 0.; // weighted and unbiased estimator for error
8779 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8780 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8781 dSpread = f2pCorrelations->GetBinError(b);
8782 if(pow(dSumWLinear,2.)>dSumWQuadratic)
8783 {
8784 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
8785 f2pCumulants->SetBinError(b,dError);
8786 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 8787 } // end of for(Int_t b=1;b<=6;b++)
8788
8789 // b) Calculate 3-p cumulants:
8790 for(Int_t b=1;b<=10;b++)
8791 {
8792 f3pCumulants->SetBinContent(b,f3pCorrelations->GetBinContent(b));
c10259fb 8793 Double_t dSumWLinear = 0.; // sum of linear event weights
8794 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
8795 Double_t dSpread = 0.; // weighted and biased estimator for sigma
8796 Double_t dError = 0.; // weighted and unbiased estimator for sigma
8797 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(3);
8798 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(3);
8799 dSpread = f3pCorrelations->GetBinError(b);
8800 if(pow(dSumWLinear,2.)>dSumWQuadratic)
8801 {
8802 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
8803 f3pCumulants->SetBinError(b,dError);
8804 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 8805 } // end of for(Int_t b=1;b<=10;b++)
8806
8807 // c) Calculate 4-p cumulants:
8808 // c1) "Single harmonic":
8809 for(Int_t b=1;b<=6;b++)
8810 {
8811 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b)-2.*pow(f2pCorrelations->GetBinContent(b),2.));
c10259fb 8812 Double_t dSumWLinearTwo = 0.; // sum of linear event weights for <2>
8813 Double_t dSumWQuadraticTwo = 0.; // sum of quadratic event weights <2>
8814 Double_t dSpreadTwo = 0.; // weighted and biased estimator for sigma of <2>
8815 Double_t dSumWLinearFour = 0.; // sum of linear event weights for <4>
8816 Double_t dSumWQuadraticFour = 0.; // sum of quadratic event weights <4>
8817 Double_t dSpreadFour = 0.; // weighted and biased estimator for sigma of <4>
8818 dSumWLinearTwo = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8819 dSumWQuadraticTwo = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8820 dSpreadTwo = f2pCorrelations->GetBinError(b);
8821 dSumWLinearFour = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8822 dSumWQuadraticFour = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8823 dSpreadFour = f4pCorrelations->GetBinError(b);
8824 if(pow(dSumWLinearTwo,2.)>dSumWQuadraticTwo && pow(dSumWLinearFour,2.)>dSumWQuadraticFour)
8825 {
8826 Double_t dError = 16.*pow(f2pCorrelations->GetBinContent(b),2.)
8827 * pow((pow(dSumWQuadraticTwo,0.5)/dSumWLinearTwo)*dSpreadTwo*pow(pow(dSumWLinearTwo,2.)/(pow(dSumWLinearTwo,2.)-dSumWQuadraticTwo),0.5),2.)
8828 + pow((pow(dSumWQuadraticFour,0.5)/dSumWLinearFour)*dSpreadFour*pow(pow(dSumWLinearFour,2.)/(pow(dSumWLinearFour,2.)-dSumWQuadraticFour),0.5),2.)
8829 - 8.*f2pCorrelations->GetBinContent(b)
8830 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8831 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(b,b+15))
8832 - f2pCorrelations->GetBinContent(b)*f4pCorrelations->GetBinContent(b))
8833 / (dSumWLinearTwo*dSumWLinearFour-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8834 if(dError>0.)
8835 {
8836 f4pCumulants->SetBinError(b,pow(dError,0.5));
8837 }
8838 } // end of if(pow(dSumWLinearTwo,2.)>dSumWQuadraticTwo && pow(dSumWLinearFour,2.)>dSumWQuadraticFour)
e1d101a6 8839 } // end of for(Int_t b=1;b<=6;b++)
8840 // c2) "Standard candles":
c10259fb 8841 // <4>_{2n,1n|2n,1n}:
e1d101a6 8842 f4pCumulants->SetBinContent(8,f4pCorrelations->GetBinContent(8)-f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1));
c10259fb 8843 {
8844 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8845 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8846 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8847 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
8848 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
8849 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
8850 Double_t dSumWLinearFour2n1n2n1n = 0.; // sum of linear event weights for <4>
8851 Double_t dSumWQuadraticFour2n1n2n1n = 0.; // sum of quadratic event weights <4>
8852 Double_t dSpreadFour2n1n2n1n = 0.; // weighted and biased estimator for sigma of <4>
8853 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8854 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8855 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
8856 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8857 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8858 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
8859 dSumWLinearFour2n1n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8860 dSumWQuadraticFour2n1n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8861 dSpreadFour2n1n2n1n = f4pCorrelations->GetBinError(8);
8862 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
8863 pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
8864 pow(dSumWLinearFour2n1n2n1n,2.)>dSumWQuadraticFour2n1n2n1n)
8865 {
8866 Double_t dError = pow(f2pCorrelations->GetBinContent(2),2.)
8867 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
8868 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
8869 + pow(f2pCorrelations->GetBinContent(1),2.)
8870 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
8871 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
8872 + pow((pow(dSumWQuadraticFour2n1n2n1n,0.5)/dSumWLinearFour2n1n2n1n)
8873 * dSpreadFour2n1n2n1n*pow(pow(dSumWLinearFour2n1n2n1n,2.)/(pow(dSumWLinearFour2n1n2n1n,2.)-dSumWQuadraticFour2n1n2n1n),0.5),2.)
8874 + 2.*f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1)
8875 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8876 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,2))
8877 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2))
8878 / (dSumWLinearTwo1n1n*dSumWLinearTwo2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8879 - 2.*f2pCorrelations->GetBinContent(2)
8880 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8881 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,22))
8882 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(8))
8883 / (dSumWLinearTwo1n1n*dSumWLinearFour2n1n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8884 - 2.*f2pCorrelations->GetBinContent(1)
8885 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8886 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,22))
8887 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(8))
8888 / (dSumWLinearTwo2n2n*dSumWLinearFour2n1n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8889 if(dError>0.)
8890 {
8891 f4pCumulants->SetBinError(8,pow(dError,0.5));
8892 }
8893 } // end of if(...)
8894 } // end of {
8895 // <4>_{3n,1n|3n,1n}:
e1d101a6 8896 f4pCumulants->SetBinContent(9,f4pCorrelations->GetBinContent(9)-f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1));
c10259fb 8897 {
8898 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
8899 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
8900 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
8901 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
8902 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
8903 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
8904 Double_t dSumWLinearFour3n1n3n1n = 0.; // sum of linear event weights for <4>
8905 Double_t dSumWQuadraticFour3n1n3n1n = 0.; // sum of quadratic event weights <4>
8906 Double_t dSpreadFour3n1n3n1n = 0.; // weighted and biased estimator for sigma of <4>
8907 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8908 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8909 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
8910 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8911 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8912 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
8913 dSumWLinearFour3n1n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8914 dSumWQuadraticFour3n1n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8915 dSpreadFour3n1n3n1n = f4pCorrelations->GetBinError(9);
8916 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
8917 pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
8918 pow(dSumWLinearFour3n1n3n1n,2.)>dSumWQuadraticFour3n1n3n1n)
8919 {
8920 Double_t dError = pow(f2pCorrelations->GetBinContent(3),2.)
8921 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
8922 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
8923 + pow(f2pCorrelations->GetBinContent(1),2.)
8924 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
8925 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
8926 + pow((pow(dSumWQuadraticFour3n1n3n1n,0.5)/dSumWLinearFour3n1n3n1n)
8927 * dSpreadFour3n1n3n1n*pow(pow(dSumWLinearFour3n1n3n1n,2.)/(pow(dSumWLinearFour3n1n3n1n,2.)-dSumWQuadraticFour3n1n3n1n),0.5),2.)
8928 + 2.*f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1)
8929 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8930 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,3))
8931 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3))
8932 / (dSumWLinearTwo1n1n*dSumWLinearTwo3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8933 - 2.*f2pCorrelations->GetBinContent(3)
8934 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8935 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,23))
8936 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(9))
8937 / (dSumWLinearTwo1n1n*dSumWLinearFour3n1n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8938 - 2.*f2pCorrelations->GetBinContent(1)
8939 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8940 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,23))
8941 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(9))
8942 / (dSumWLinearTwo3n3n*dSumWLinearFour3n1n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8943 if(dError>0.)
8944 {
8945 f4pCumulants->SetBinError(9,pow(dError,0.5));
8946 }
8947 } // end of if(...)
8948 } // end of {
8949 // <4>_{3n,2n|3n,2n}:
e1d101a6 8950 f4pCumulants->SetBinContent(10,f4pCorrelations->GetBinContent(10)-f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2));
c10259fb 8951 {
8952 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
8953 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
8954 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
8955 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
8956 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
8957 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
8958 Double_t dSumWLinearFour3n2n3n2n = 0.; // sum of linear event weights for <4>
8959 Double_t dSumWQuadraticFour3n2n3n2n = 0.; // sum of quadratic event weights <4>
8960 Double_t dSpreadFour3n2n3n2n = 0.; // weighted and biased estimator for sigma of <4>
8961 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8962 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8963 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
8964 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
8965 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
8966 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
8967 dSumWLinearFour3n2n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
8968 dSumWQuadraticFour3n2n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
8969 dSpreadFour3n2n3n2n = f4pCorrelations->GetBinError(10);
8970 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
8971 pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
8972 pow(dSumWLinearFour3n2n3n2n,2.)>dSumWQuadraticFour3n2n3n2n)
8973 {
8974 Double_t dError = pow(f2pCorrelations->GetBinContent(3),2.)
8975 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
8976 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
8977 + pow(f2pCorrelations->GetBinContent(2),2.)
8978 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
8979 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
8980 + pow((pow(dSumWQuadraticFour3n2n3n2n,0.5)/dSumWLinearFour3n2n3n2n)
8981 * dSpreadFour3n2n3n2n*pow(pow(dSumWLinearFour3n2n3n2n,2.)/(pow(dSumWLinearFour3n2n3n2n,2.)-dSumWQuadraticFour3n2n3n2n),0.5),2.)
8982 + 2.*f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2)
8983 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
8984 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,3))
8985 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3))
8986 / (dSumWLinearTwo2n2n*dSumWLinearTwo3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
8987 - 2.*f2pCorrelations->GetBinContent(3)
8988 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8989 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,24))
8990 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(10))
8991 / (dSumWLinearTwo2n2n*dSumWLinearFour3n2n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
8992 - 2.*f2pCorrelations->GetBinContent(2)
8993 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
8994 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,24))
8995 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(10))
8996 / (dSumWLinearTwo3n3n*dSumWLinearFour3n2n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
8997 if(dError>0.)
8998 {
8999 f4pCumulants->SetBinError(10,pow(dError,0.5));
9000 }
9001 } // end of if(...)
9002 } // end of {
9003 // <4>_{4n,1n|4n,1n}
e1d101a6 9004 f4pCumulants->SetBinContent(11,f4pCorrelations->GetBinContent(11)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(1));
c10259fb 9005 {
9006 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9007 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9008 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9009 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9010 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9011 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9012 Double_t dSumWLinearFour4n1n4n1n = 0.; // sum of linear event weights for <4>
9013 Double_t dSumWQuadraticFour4n1n4n1n = 0.; // sum of quadratic event weights <4>
9014 Double_t dSpreadFour4n1n4n1n = 0.; // weighted and biased estimator for sigma of <4>
9015 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9016 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9017 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9018 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9019 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9020 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9021 dSumWLinearFour4n1n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9022 dSumWQuadraticFour4n1n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9023 dSpreadFour4n1n4n1n = f4pCorrelations->GetBinError(11);
9024 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9025 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9026 pow(dSumWLinearFour4n1n4n1n,2.)>dSumWQuadraticFour4n1n4n1n)
9027 {
9028 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9029 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9030 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9031 + pow(f2pCorrelations->GetBinContent(1),2.)
9032 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9033 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9034 + pow((pow(dSumWQuadraticFour4n1n4n1n,0.5)/dSumWLinearFour4n1n4n1n)
9035 * dSpreadFour4n1n4n1n*pow(pow(dSumWLinearFour4n1n4n1n,2.)/(pow(dSumWLinearFour4n1n4n1n,2.)-dSumWQuadraticFour4n1n4n1n),0.5),2.)
9036 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(1)
9037 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9038 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,4))
9039 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4))
9040 / (dSumWLinearTwo1n1n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9041 - 2.*f2pCorrelations->GetBinContent(4)
9042 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9043 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,25))
9044 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(11))
9045 / (dSumWLinearTwo1n1n*dSumWLinearFour4n1n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9046 - 2.*f2pCorrelations->GetBinContent(1)
9047 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9048 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,25))
9049 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(11))
9050 / (dSumWLinearTwo4n4n*dSumWLinearFour4n1n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9051 if(dError>0.)
9052 {
9053 f4pCumulants->SetBinError(11,pow(dError,0.5));
9054 }
9055 } // end of if(...)
9056 } // end of {
9057 // <4>_{4n,2n|4n,2n}
e1d101a6 9058 f4pCumulants->SetBinContent(12,f4pCorrelations->GetBinContent(12)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(2));
c10259fb 9059 {
9060 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9061 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9062 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9063 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9064 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9065 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9066 Double_t dSumWLinearFour4n2n4n2n = 0.; // sum of linear event weights for <4>
9067 Double_t dSumWQuadraticFour4n2n4n2n = 0.; // sum of quadratic event weights <4>
9068 Double_t dSpreadFour4n2n4n2n = 0.; // weighted and biased estimator for sigma of <4>
9069 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9070 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9071 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9072 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9073 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9074 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9075 dSumWLinearFour4n2n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9076 dSumWQuadraticFour4n2n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9077 dSpreadFour4n2n4n2n = f4pCorrelations->GetBinError(12);
9078 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9079 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9080 pow(dSumWLinearFour4n2n4n2n,2.)>dSumWQuadraticFour4n2n4n2n)
9081 {
9082 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9083 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9084 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9085 + pow(f2pCorrelations->GetBinContent(2),2.)
9086 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9087 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9088 + pow((pow(dSumWQuadraticFour4n2n4n2n,0.5)/dSumWLinearFour4n2n4n2n)
9089 * dSpreadFour4n2n4n2n*pow(pow(dSumWLinearFour4n2n4n2n,2.)/(pow(dSumWLinearFour4n2n4n2n,2.)-dSumWQuadraticFour4n2n4n2n),0.5),2.)
9090 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(2)
9091 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9092 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,4))
9093 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4))
9094 / (dSumWLinearTwo2n2n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9095 - 2.*f2pCorrelations->GetBinContent(4)
9096 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9097 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,25))
9098 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(12))
9099 / (dSumWLinearTwo2n2n*dSumWLinearFour4n2n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9100 - 2.*f2pCorrelations->GetBinContent(2)
9101 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9102 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,25))
9103 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(12))
9104 / (dSumWLinearTwo4n4n*dSumWLinearFour4n2n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9105 if(dError>0.)
9106 {
9107 f4pCumulants->SetBinError(12,pow(dError,0.5));
9108 }
9109 } // end of if(...)
9110 } // end of {
9111 // <4>_{4n,3n|4n,3n}
e1d101a6 9112 f4pCumulants->SetBinContent(13,f4pCorrelations->GetBinContent(13)-f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(3));
c10259fb 9113 {
9114 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9115 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9116 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9117 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9118 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9119 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9120 Double_t dSumWLinearFour4n3n4n3n = 0.; // sum of linear event weights for <4>
9121 Double_t dSumWQuadraticFour4n3n4n3n = 0.; // sum of quadratic event weights <4>
9122 Double_t dSpreadFour4n3n4n3n = 0.; // weighted and biased estimator for sigma of <4>
9123 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9124 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9125 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9126 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9127 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9128 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9129 dSumWLinearFour4n3n4n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9130 dSumWQuadraticFour4n3n4n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9131 dSpreadFour4n3n4n3n = f4pCorrelations->GetBinError(13);
9132 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9133 pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9134 pow(dSumWLinearFour4n3n4n3n,2.)>dSumWQuadraticFour4n3n4n3n)
9135 {
9136 Double_t dError = pow(f2pCorrelations->GetBinContent(4),2.)
9137 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9138 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9139 + pow(f2pCorrelations->GetBinContent(3),2.)
9140 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9141 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9142 + pow((pow(dSumWQuadraticFour4n3n4n3n,0.5)/dSumWLinearFour4n3n4n3n)
9143 * dSpreadFour4n3n4n3n*pow(pow(dSumWLinearFour4n3n4n3n,2.)/(pow(dSumWLinearFour4n3n4n3n,2.)-dSumWQuadraticFour4n3n4n3n),0.5),2.)
9144 + 2.*f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(3)
9145 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9146 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,4))
9147 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4))
9148 / (dSumWLinearTwo3n3n*dSumWLinearTwo4n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9149 - 2.*f2pCorrelations->GetBinContent(4)
9150 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9151 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,26))
9152 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(13))
9153 / (dSumWLinearTwo3n3n*dSumWLinearFour4n3n4n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9154 - 2.*f2pCorrelations->GetBinContent(3)
9155 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9156 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,26))
9157 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(13))
9158 / (dSumWLinearTwo4n4n*dSumWLinearFour4n3n4n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9159 if(dError>0.)
9160 {
9161 f4pCumulants->SetBinError(13,pow(dError,0.5));
9162 }
9163 } // end of if(...)
9164 } // end of {
9165 // <4>_{5n,1n|5n,1n}
e1d101a6 9166 f4pCumulants->SetBinContent(14,f4pCorrelations->GetBinContent(14)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1));
c10259fb 9167 {
9168 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9169 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9170 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9171 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9172 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9173 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9174 Double_t dSumWLinearFour5n1n5n1n = 0.; // sum of linear event weights for <4>
9175 Double_t dSumWQuadraticFour5n1n5n1n = 0.; // sum of quadratic event weights <4>
9176 Double_t dSpreadFour5n1n5n1n = 0.; // weighted and biased estimator for sigma of <4>
9177 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9178 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9179 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9180 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9181 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9182 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9183 dSumWLinearFour5n1n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9184 dSumWQuadraticFour5n1n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9185 dSpreadFour5n1n5n1n = f4pCorrelations->GetBinError(14);
9186 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9187 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9188 pow(dSumWLinearFour5n1n5n1n,2.)>dSumWQuadraticFour5n1n5n1n)
9189 {
9190 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9191 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9192 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9193 + pow(f2pCorrelations->GetBinContent(1),2.)
9194 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9195 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9196 + pow((pow(dSumWQuadraticFour5n1n5n1n,0.5)/dSumWLinearFour5n1n5n1n)
9197 * dSpreadFour5n1n5n1n*pow(pow(dSumWLinearFour5n1n5n1n,2.)/(pow(dSumWLinearFour5n1n5n1n,2.)-dSumWQuadraticFour5n1n5n1n),0.5),2.)
9198 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)
9199 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9200 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,5))
9201 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5))
9202 / (dSumWLinearTwo1n1n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9203 - 2.*f2pCorrelations->GetBinContent(5)
9204 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9205 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,28))
9206 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(14))
9207 / (dSumWLinearTwo1n1n*dSumWLinearFour5n1n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9208 - 2.*f2pCorrelations->GetBinContent(1)
9209 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9210 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,28))
9211 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(14))
9212 / (dSumWLinearTwo5n5n*dSumWLinearFour5n1n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9213 if(dError>0.)
9214 {
9215 f4pCumulants->SetBinError(14,pow(dError,0.5));
9216 }
9217 } // end of if(...)
9218 } // end of {
9219 // <4>_{5n,2n|5n,2n}
e1d101a6 9220 f4pCumulants->SetBinContent(15,f4pCorrelations->GetBinContent(15)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2));
c10259fb 9221 {
9222 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9223 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9224 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9225 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9226 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9227 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9228 Double_t dSumWLinearFour5n2n5n2n = 0.; // sum of linear event weights for <4>
9229 Double_t dSumWQuadraticFour5n2n5n2n = 0.; // sum of quadratic event weights <4>
9230 Double_t dSpreadFour5n2n5n2n = 0.; // weighted and biased estimator for sigma of <4>
9231 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9232 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9233 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9234 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9235 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9236 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9237 dSumWLinearFour5n2n5n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9238 dSumWQuadraticFour5n2n5n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9239 dSpreadFour5n2n5n2n = f4pCorrelations->GetBinError(15);
9240 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9241 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9242 pow(dSumWLinearFour5n2n5n2n,2.)>dSumWQuadraticFour5n2n5n2n)
9243 {
9244 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9245 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9246 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9247 + pow(f2pCorrelations->GetBinContent(2),2.)
9248 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9249 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9250 + pow((pow(dSumWQuadraticFour5n2n5n2n,0.5)/dSumWLinearFour5n2n5n2n)
9251 * dSpreadFour5n2n5n2n*pow(pow(dSumWLinearFour5n2n5n2n,2.)/(pow(dSumWLinearFour5n2n5n2n,2.)-dSumWQuadraticFour5n2n5n2n),0.5),2.)
9252 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)
9253 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9254 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,5))
9255 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5))
9256 / (dSumWLinearTwo2n2n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9257 - 2.*f2pCorrelations->GetBinContent(5)
9258 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9259 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,29))
9260 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(15))
9261 / (dSumWLinearTwo2n2n*dSumWLinearFour5n2n5n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9262 - 2.*f2pCorrelations->GetBinContent(2)
9263 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9264 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,29))
9265 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(15))
9266 / (dSumWLinearTwo5n5n*dSumWLinearFour5n2n5n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9267 if(dError>0.)
9268 {
9269 f4pCumulants->SetBinError(15,pow(dError,0.5));
9270 }
9271 } // end of if(...)
9272 } // end of {
9273 // <4>_{5n,3n|5n,3n}
e1d101a6 9274 f4pCumulants->SetBinContent(16,f4pCorrelations->GetBinContent(16)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3));
c10259fb 9275 {
9276 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9277 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9278 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9279 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9280 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9281 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9282 Double_t dSumWLinearFour5n3n5n3n = 0.; // sum of linear event weights for <4>
9283 Double_t dSumWQuadraticFour5n3n5n3n = 0.; // sum of quadratic event weights <4>
9284 Double_t dSpreadFour5n3n5n3n = 0.; // weighted and biased estimator for sigma of <4>
9285 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9286 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9287 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9288 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9289 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9290 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9291 dSumWLinearFour5n3n5n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9292 dSumWQuadraticFour5n3n5n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9293 dSpreadFour5n3n5n3n = f4pCorrelations->GetBinError(16);
9294 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9295 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9296 pow(dSumWLinearFour5n3n5n3n,2.)>dSumWQuadraticFour5n3n5n3n)
9297 {
9298 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9299 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9300 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9301 + pow(f2pCorrelations->GetBinContent(3),2.)
9302 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9303 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9304 + pow((pow(dSumWQuadraticFour5n3n5n3n,0.5)/dSumWLinearFour5n3n5n3n)
9305 * dSpreadFour5n3n5n3n*pow(pow(dSumWLinearFour5n3n5n3n,2.)/(pow(dSumWLinearFour5n3n5n3n,2.)-dSumWQuadraticFour5n3n5n3n),0.5),2.)
9306 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)
9307 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9308 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,5))
9309 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5))
9310 / (dSumWLinearTwo3n3n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9311 - 2.*f2pCorrelations->GetBinContent(5)
9312 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9313 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,30))
9314 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(16))
9315 / (dSumWLinearTwo3n3n*dSumWLinearFour5n3n5n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9316 - 2.*f2pCorrelations->GetBinContent(3)
9317 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9318 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,30))
9319 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(16))
9320 / (dSumWLinearTwo5n5n*dSumWLinearFour5n3n5n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9321 if(dError>0.)
9322 {
9323 f4pCumulants->SetBinError(16,pow(dError,0.5));
9324 }
9325 } // end of if(...)
9326 } // end of {
9327 // <4>_{5n,4n|5n,4n}
e1d101a6 9328 f4pCumulants->SetBinContent(17,f4pCorrelations->GetBinContent(17)-f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4));
c10259fb 9329 {
9330 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9331 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9332 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9333 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9334 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9335 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9336 Double_t dSumWLinearFour5n4n5n4n = 0.; // sum of linear event weights for <4>
9337 Double_t dSumWQuadraticFour5n4n5n4n = 0.; // sum of quadratic event weights <4>
9338 Double_t dSpreadFour5n4n5n4n = 0.; // weighted and biased estimator for sigma of <4>
9339 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9340 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9341 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9342 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9343 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9344 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9345 dSumWLinearFour5n4n5n4n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9346 dSumWQuadraticFour5n4n5n4n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9347 dSpreadFour5n4n5n4n = f4pCorrelations->GetBinError(17);
9348 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9349 pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9350 pow(dSumWLinearFour5n4n5n4n,2.)>dSumWQuadraticFour5n4n5n4n)
9351 {
9352 Double_t dError = pow(f2pCorrelations->GetBinContent(5),2.)
9353 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9354 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9355 + pow(f2pCorrelations->GetBinContent(4),2.)
9356 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9357 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9358 + pow((pow(dSumWQuadraticFour5n4n5n4n,0.5)/dSumWLinearFour5n4n5n4n)
9359 * dSpreadFour5n4n5n4n*pow(pow(dSumWLinearFour5n4n5n4n,2.)/(pow(dSumWLinearFour5n4n5n4n,2.)-dSumWQuadraticFour5n4n5n4n),0.5),2.)
9360 + 2.*f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4)
9361 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9362 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,5))
9363 - f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(5))
9364 / (dSumWLinearTwo4n4n*dSumWLinearTwo5n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9365 - 2.*f2pCorrelations->GetBinContent(5)
9366 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9367 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,31))
9368 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(17))
9369 / (dSumWLinearTwo4n4n*dSumWLinearFour5n4n5n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9370 - 2.*f2pCorrelations->GetBinContent(4)
9371 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9372 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,31))
9373 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(17))
9374 / (dSumWLinearTwo5n5n*dSumWLinearFour5n4n5n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9375 if(dError>0.)
9376 {
9377 f4pCumulants->SetBinError(17,pow(dError,0.5));
9378 }
9379 } // end of if(...)
9380 } // end of {
9381 // <4>_{6n,1n|6n,1n}
e1d101a6 9382 f4pCumulants->SetBinContent(18,f4pCorrelations->GetBinContent(18)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1));
c10259fb 9383 {
9384 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9385 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9386 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9387 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9388 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9389 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9390 Double_t dSumWLinearFour6n1n6n1n = 0.; // sum of linear event weights for <4>
9391 Double_t dSumWQuadraticFour6n1n6n1n = 0.; // sum of quadratic event weights <4>
9392 Double_t dSpreadFour6n1n6n1n = 0.; // weighted and biased estimator for sigma of <4>
9393 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9394 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9395 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9396 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9397 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9398 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9399 dSumWLinearFour6n1n6n1n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9400 dSumWQuadraticFour6n1n6n1n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9401 dSpreadFour6n1n6n1n = f4pCorrelations->GetBinError(18);
9402 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9403 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9404 pow(dSumWLinearFour6n1n6n1n,2.)>dSumWQuadraticFour6n1n6n1n)
9405 {
9406 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9407 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9408 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9409 + pow(f2pCorrelations->GetBinContent(1),2.)
9410 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9411 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9412 + pow((pow(dSumWQuadraticFour6n1n6n1n,0.5)/dSumWLinearFour6n1n6n1n)
9413 * dSpreadFour6n1n6n1n*pow(pow(dSumWLinearFour6n1n6n1n,2.)/(pow(dSumWLinearFour6n1n6n1n,2.)-dSumWQuadraticFour6n1n6n1n),0.5),2.)
9414 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)
9415 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9416 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,6))
9417 - f2pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6))
9418 / (dSumWLinearTwo1n1n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9419 - 2.*f2pCorrelations->GetBinContent(6)
9420 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9421 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,32))
9422 - f2pCorrelations->GetBinContent(1)*f4pCorrelations->GetBinContent(18))
9423 / (dSumWLinearTwo1n1n*dSumWLinearFour6n1n6n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9424 - 2.*f2pCorrelations->GetBinContent(1)
9425 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9426 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,32))
9427 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(18))
9428 / (dSumWLinearTwo6n6n*dSumWLinearFour6n1n6n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9429 if(dError>0.)
9430 {
9431 f4pCumulants->SetBinError(18,pow(dError,0.5));
9432 }
9433 } // end of if(...)
9434 } // end of {
9435 // <4>_{6n,2n|6n,2n}
e1d101a6 9436 f4pCumulants->SetBinContent(19,f4pCorrelations->GetBinContent(19)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2));
c10259fb 9437 {
9438 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9439 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9440 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9441 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9442 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9443 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9444 Double_t dSumWLinearFour6n2n6n2n = 0.; // sum of linear event weights for <4>
9445 Double_t dSumWQuadraticFour6n2n6n2n = 0.; // sum of quadratic event weights <4>
9446 Double_t dSpreadFour6n2n6n2n = 0.; // weighted and biased estimator for sigma of <4>
9447 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9448 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9449 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9450 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9451 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9452 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9453 dSumWLinearFour6n2n6n2n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9454 dSumWQuadraticFour6n2n6n2n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9455 dSpreadFour6n2n6n2n = f4pCorrelations->GetBinError(19);
9456 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9457 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9458 pow(dSumWLinearFour6n2n6n2n,2.)>dSumWQuadraticFour6n2n6n2n)
9459 {
9460 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9461 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9462 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9463 + pow(f2pCorrelations->GetBinContent(2),2.)
9464 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9465 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9466 + pow((pow(dSumWQuadraticFour6n2n6n2n,0.5)/dSumWLinearFour6n2n6n2n)
9467 * dSpreadFour6n2n6n2n*pow(pow(dSumWLinearFour6n2n6n2n,2.)/(pow(dSumWLinearFour6n2n6n2n,2.)-dSumWQuadraticFour6n2n6n2n),0.5),2.)
9468 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2)
9469 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9470 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,6))
9471 - f2pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6))
9472 / (dSumWLinearTwo2n2n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9473 - 2.*f2pCorrelations->GetBinContent(6)
9474 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9475 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,33))
9476 - f2pCorrelations->GetBinContent(2)*f4pCorrelations->GetBinContent(19))
9477 / (dSumWLinearTwo2n2n*dSumWLinearFour6n2n6n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9478 - 2.*f2pCorrelations->GetBinContent(2)
9479 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9480 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,33))
9481 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(19))
9482 / (dSumWLinearTwo6n6n*dSumWLinearFour6n2n6n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9483 if(dError>0.)
9484 {
9485 f4pCumulants->SetBinError(19,pow(dError,0.5));
9486 }
9487 } // end of if(...)
9488 } // end of {
9489 // <4>_{6n,3n|6n,3n}
e1d101a6 9490 f4pCumulants->SetBinContent(20,f4pCorrelations->GetBinContent(20)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3));
c10259fb 9491 {
9492 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9493 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9494 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9495 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9496 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9497 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9498 Double_t dSumWLinearFour6n3n6n3n = 0.; // sum of linear event weights for <4>
9499 Double_t dSumWQuadraticFour6n3n6n3n = 0.; // sum of quadratic event weights <4>
9500 Double_t dSpreadFour6n3n6n3n = 0.; // weighted and biased estimator for sigma of <4>
9501 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9502 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9503 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9504 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9505 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9506 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9507 dSumWLinearFour6n3n6n3n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9508 dSumWQuadraticFour6n3n6n3n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9509 dSpreadFour6n3n6n3n = f4pCorrelations->GetBinError(20);
9510 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9511 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9512 pow(dSumWLinearFour6n3n6n3n,2.)>dSumWQuadraticFour6n3n6n3n)
9513 {
9514 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9515 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9516 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9517 + pow(f2pCorrelations->GetBinContent(3),2.)
9518 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9519 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9520 + pow((pow(dSumWQuadraticFour6n3n6n3n,0.5)/dSumWLinearFour6n3n6n3n)
9521 * dSpreadFour6n3n6n3n*pow(pow(dSumWLinearFour6n3n6n3n,2.)/(pow(dSumWLinearFour6n3n6n3n,2.)-dSumWQuadraticFour6n3n6n3n),0.5),2.)
9522 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)
9523 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9524 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,6))
9525 - f2pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6))
9526 / (dSumWLinearTwo3n3n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9527 - 2.*f2pCorrelations->GetBinContent(6)
9528 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9529 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,34))
9530 - f2pCorrelations->GetBinContent(3)*f4pCorrelations->GetBinContent(20))
9531 / (dSumWLinearTwo3n3n*dSumWLinearFour6n3n6n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9532 - 2.*f2pCorrelations->GetBinContent(3)
9533 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9534 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,34))
9535 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(20))
9536 / (dSumWLinearTwo6n6n*dSumWLinearFour6n3n6n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9537 if(dError>0.)
9538 {
9539 f4pCumulants->SetBinError(20,pow(dError,0.5));
9540 }
9541 } // end of if(...)
9542 } // end of {
9543 // <4>_{6n,4n|6n,4n}
e1d101a6 9544 f4pCumulants->SetBinContent(21,f4pCorrelations->GetBinContent(21)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4));
c10259fb 9545 {
9546 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9547 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9548 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9549 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9550 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9551 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9552 Double_t dSumWLinearFour6n4n6n4n = 0.; // sum of linear event weights for <4>
9553 Double_t dSumWQuadraticFour6n4n6n4n = 0.; // sum of quadratic event weights <4>
9554 Double_t dSpreadFour6n4n6n4n = 0.; // weighted and biased estimator for sigma of <4>
9555 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9556 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9557 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9558 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9559 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9560 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9561 dSumWLinearFour6n4n6n4n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9562 dSumWQuadraticFour6n4n6n4n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9563 dSpreadFour6n4n6n4n = f4pCorrelations->GetBinError(21);
9564 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9565 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9566 pow(dSumWLinearFour6n4n6n4n,2.)>dSumWQuadraticFour6n4n6n4n)
9567 {
9568 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9569 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9570 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9571 + pow(f2pCorrelations->GetBinContent(4),2.)
9572 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9573 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9574 + pow((pow(dSumWQuadraticFour6n4n6n4n,0.5)/dSumWLinearFour6n4n6n4n)
9575 * dSpreadFour6n4n6n4n*pow(pow(dSumWLinearFour6n4n6n4n,2.)/(pow(dSumWLinearFour6n4n6n4n,2.)-dSumWQuadraticFour6n4n6n4n),0.5),2.)
9576 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4)
9577 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9578 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,6))
9579 - f2pCorrelations->GetBinContent(4)*f2pCorrelations->GetBinContent(6))
9580 / (dSumWLinearTwo4n4n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9581 - 2.*f2pCorrelations->GetBinContent(6)
9582 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9583 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,35))
9584 - f2pCorrelations->GetBinContent(4)*f4pCorrelations->GetBinContent(21))
9585 / (dSumWLinearTwo4n4n*dSumWLinearFour6n4n6n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9586 - 2.*f2pCorrelations->GetBinContent(4)
9587 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9588 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,35))
9589 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(21))
9590 / (dSumWLinearTwo6n6n*dSumWLinearFour6n4n6n4n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9591 if(dError>0.)
9592 {
9593 f4pCumulants->SetBinError(21,pow(dError,0.5));
9594 }
9595 } // end of if(...)
9596 } // end of {
9597 // <4>_{6n,5n|6n,5n}
e1d101a6 9598 f4pCumulants->SetBinContent(22,f4pCorrelations->GetBinContent(22)-f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5));
c10259fb 9599 {
9600 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
9601 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
9602 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
9603 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
9604 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
9605 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
9606 Double_t dSumWLinearFour6n5n6n5n = 0.; // sum of linear event weights for <4>
9607 Double_t dSumWQuadraticFour6n5n6n5n = 0.; // sum of quadratic event weights <4>
9608 Double_t dSpreadFour6n5n6n5n = 0.; // weighted and biased estimator for sigma of <4>
9609 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9610 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9611 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
9612 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9613 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9614 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
9615 dSumWLinearFour6n5n6n5n = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9616 dSumWQuadraticFour6n5n6n5n = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9617 dSpreadFour6n5n6n5n = f4pCorrelations->GetBinError(22);
9618 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
9619 pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
9620 pow(dSumWLinearFour6n5n6n5n,2.)>dSumWQuadraticFour6n5n6n5n)
9621 {
9622 Double_t dError = pow(f2pCorrelations->GetBinContent(6),2.)
9623 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
9624 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
9625 + pow(f2pCorrelations->GetBinContent(5),2.)
9626 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
9627 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
9628 + pow((pow(dSumWQuadraticFour6n5n6n5n,0.5)/dSumWLinearFour6n5n6n5n)
9629 * dSpreadFour6n5n6n5n*pow(pow(dSumWLinearFour6n5n6n5n,2.)/(pow(dSumWLinearFour6n5n6n5n,2.)-dSumWQuadraticFour6n5n6n5n),0.5),2.)
9630 + 2.*f2pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5)
9631 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2))
9632 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,6))
9633 - f2pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6))
9634 / (dSumWLinearTwo5n5n*dSumWLinearTwo6n6n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,2)))
9635 - 2.*f2pCorrelations->GetBinContent(6)
9636 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9637 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,36))
9638 - f2pCorrelations->GetBinContent(5)*f4pCorrelations->GetBinContent(22))
9639 / (dSumWLinearTwo5n5n*dSumWLinearFour6n5n6n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)))
9640 - 2.*f2pCorrelations->GetBinContent(5)
9641 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4))
9642 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,36))
9643 - f2pCorrelations->GetBinContent(6)*f4pCorrelations->GetBinContent(22))
9644 / (dSumWLinearTwo6n6n*dSumWLinearFour6n5n6n5n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,4)));
9645 if(dError>0.)
9646 {
9647 f4pCumulants->SetBinError(22,pow(dError,0.5));
9648 }
9649 } // end of if(...)
9650 } // end of {
9651
e1d101a6 9652 // c3) "Two distinct harmonics":
9653 for(Int_t b=24;b<=25;b++)
9654 {
9655 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9656 Double_t dSumWLinear = 0.; // sum of linear event weights
9657 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9658 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9659 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9660 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9661 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9662 dSpread = f4pCorrelations->GetBinError(b);
9663 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9664 {
9665 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9666 f4pCumulants->SetBinError(b,dError);
9667 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9668 } // end of for(Int_t b=24;b<=25;b++)
9669 // c4) "Three distinct harmonics":
9670 for(Int_t b=27;b<=36;b++)
9671 {
9672 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9673 Double_t dSumWLinear = 0.; // sum of linear event weights
9674 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9675 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9676 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9677 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9678 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9679 dSpread = f4pCorrelations->GetBinError(b);
9680 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9681 {
9682 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9683 f4pCumulants->SetBinError(b,dError);
9684 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9685 } // end of for(Int_t b=27;b<=36;b++)
9686 // c5) "Four distinct harmonics":
9687 for(Int_t b=38;b<=45;b++)
9688 {
9689 f4pCumulants->SetBinContent(b,f4pCorrelations->GetBinContent(b));
c10259fb 9690 Double_t dSumWLinear = 0.; // sum of linear event weights
9691 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
9692 Double_t dSpread = 0.; // weighted and biased estimator for sigma
9693 Double_t dError = 0.; // weighted and unbiased estimator for sigma
9694 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(4);
9695 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(4);
9696 dSpread = f4pCorrelations->GetBinError(b);
9697 if(pow(dSumWLinear,2.)>dSumWQuadratic)
9698 {
9699 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
9700 f4pCumulants->SetBinError(b,dError);
9701 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 9702 } // end of for(Int_t b=38;b<=45;b++)
9703
9704 // d) Calculate 5-p cumulants:
9705 // d1) "Standard candles":
9706 f5pCumulants->SetBinContent(1,f5pCorrelations->GetBinContent(1)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3));
c10259fb 9707 {
9708 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9709 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9710 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9711 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
9712 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
9713 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
9714 Double_t dSumWLinearFive3n2n3n1n1n = 0.; // sum of linear event weights for <4>
9715 Double_t dSumWQuadraticFive3n2n3n1n1n = 0.; // sum of quadratic event weights <4>
9716 Double_t dSpreadFive3n2n3n1n1n = 0.; // weighted and biased estimator for sigma of <4>
9717 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9718 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9719 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9720 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9721 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9722 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
9723 dSumWLinearFive3n2n3n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9724 dSumWQuadraticFive3n2n3n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9725 dSpreadFive3n2n3n1n1n = f5pCorrelations->GetBinError(1);
9726 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9727 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
9728 pow(dSumWLinearFive3n2n3n1n1n,2.)>dSumWQuadraticFive3n2n3n1n1n)
9729 {
9730 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
9731 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9732 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9733 + pow(f2pCorrelations->GetBinContent(3),2.)
9734 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
9735 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
9736 + pow((pow(dSumWQuadraticFive3n2n3n1n1n,0.5)/dSumWLinearFive3n2n3n1n1n)
9737 * dSpreadFive3n2n3n1n1n*pow(pow(dSumWLinearFive3n2n3n1n1n,2.)/(pow(dSumWLinearFive3n2n3n1n1n,2.)-dSumWQuadraticFive3n2n3n1n1n),0.5),2.)
9738 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(3)
9739 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9740 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,7))
9741 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(1))
9742 / (dSumWLinearTwo3n3n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9743 - 2.*f3pCorrelations->GetBinContent(1)
9744 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9745 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,57))
9746 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(1))
9747 / (dSumWLinearTwo3n3n*dSumWLinearFive3n2n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9748 - 2.*f2pCorrelations->GetBinContent(3)
9749 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9750 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,57))
9751 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(1))
9752 / (dSumWLinearThree2n1n1n*dSumWLinearFive3n2n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9753 if(dError>0.)
9754 {
9755 f5pCumulants->SetBinError(1,pow(dError,0.5));
9756 }
9757 } // end of if(...)
9758 } // end of {
9759
e1d101a6 9760 f5pCumulants->SetBinContent(2,f5pCorrelations->GetBinContent(2)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1));
c10259fb 9761 {
9762 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
9763 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
9764 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
9765 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
9766 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
9767 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
9768 Double_t dSumWLinearFive4n1n2n2n1n = 0.; // sum of linear event weights for <4>
9769 Double_t dSumWQuadraticFive4n1n2n2n1n = 0.; // sum of quadratic event weights <4>
9770 Double_t dSpreadFive4n1n2n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9771 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9772 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9773 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
9774 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9775 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9776 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
9777 dSumWLinearFive4n1n2n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9778 dSumWQuadraticFive4n1n2n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9779 dSpreadFive4n1n2n2n1n = f5pCorrelations->GetBinError(2);
9780 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
9781 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
9782 pow(dSumWLinearFive4n1n2n2n1n,2.)>dSumWQuadraticFive4n1n2n2n1n)
9783 {
9784 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
9785 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
9786 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
9787 + pow(f2pCorrelations->GetBinContent(1),2.)
9788 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
9789 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
9790 + pow((pow(dSumWQuadraticFive4n1n2n2n1n,0.5)/dSumWLinearFive4n1n2n2n1n)
9791 * dSpreadFive4n1n2n2n1n*pow(pow(dSumWLinearFive4n1n2n2n1n,2.)/(pow(dSumWLinearFive4n1n2n2n1n,2.)-dSumWQuadraticFive4n1n2n2n1n),0.5),2.)
9792 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(1)
9793 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9794 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,8))
9795 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(2))
9796 / (dSumWLinearTwo1n1n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9797 - 2.*f3pCorrelations->GetBinContent(2)
9798 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9799 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,58))
9800 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(2))
9801 / (dSumWLinearTwo1n1n*dSumWLinearFive4n1n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9802 - 2.*f2pCorrelations->GetBinContent(1)
9803 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9804 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,58))
9805 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(2))
9806 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n1n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9807 if(dError>0.)
9808 {
9809 f5pCumulants->SetBinError(2,pow(dError,0.5));
9810 }
9811 } // end of if(...)
9812 } // end of {
e1d101a6 9813 f5pCumulants->SetBinContent(3,f5pCorrelations->GetBinContent(3)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2));
c10259fb 9814 {
9815 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
9816 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
9817 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
9818 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
9819 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
9820 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
9821 Double_t dSumWLinearFive4n2n3n2n1n = 0.; // sum of linear event weights for <4>
9822 Double_t dSumWQuadraticFive4n2n3n2n1n = 0.; // sum of quadratic event weights <4>
9823 Double_t dSpreadFive4n2n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9824 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9825 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9826 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
9827 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9828 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9829 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
9830 dSumWLinearFive4n2n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9831 dSumWQuadraticFive4n2n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9832 dSpreadFive4n2n3n2n1n = f5pCorrelations->GetBinError(3);
9833 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
9834 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
9835 pow(dSumWLinearFive4n2n3n2n1n,2.)>dSumWQuadraticFive4n2n3n2n1n)
9836 {
9837 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
9838 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
9839 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
9840 + pow(f2pCorrelations->GetBinContent(2),2.)
9841 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
9842 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
9843 + pow((pow(dSumWQuadraticFive4n2n3n2n1n,0.5)/dSumWLinearFive4n2n3n2n1n)
9844 * dSpreadFive4n2n3n2n1n*pow(pow(dSumWLinearFive4n2n3n2n1n,2.)/(pow(dSumWLinearFive4n2n3n2n1n,2.)-dSumWQuadraticFive4n2n3n2n1n),0.5),2.)
9845 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(2)
9846 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9847 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,11))
9848 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(6))
9849 / (dSumWLinearTwo2n2n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9850 - 2.*f3pCorrelations->GetBinContent(6)
9851 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9852 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,59))
9853 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(3))
9854 / (dSumWLinearTwo2n2n*dSumWLinearFive4n2n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9855 - 2.*f2pCorrelations->GetBinContent(2)
9856 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9857 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,59))
9858 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(3))
9859 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n2n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9860 if(dError>0.)
9861 {
9862 f5pCumulants->SetBinError(3,pow(dError,0.5));
9863 }
9864 } // end of if(...)
9865 } // end of {
e1d101a6 9866 f5pCumulants->SetBinContent(4,f5pCorrelations->GetBinContent(4)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3));
c10259fb 9867 {
9868 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
9869 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
9870 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
9871 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
9872 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
9873 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
9874 Double_t dSumWLinearFive4n3n3n2n2n = 0.; // sum of linear event weights for <4>
9875 Double_t dSumWQuadraticFive4n3n3n2n2n = 0.; // sum of quadratic event weights <4>
9876 Double_t dSpreadFive4n3n3n2n2n = 0.; // weighted and biased estimator for sigma of <4>
9877 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9878 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9879 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
9880 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9881 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9882 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
9883 dSumWLinearFive4n3n3n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9884 dSumWQuadraticFive4n3n3n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9885 dSpreadFive4n3n3n2n2n = f5pCorrelations->GetBinError(4);
9886 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
9887 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
9888 pow(dSumWLinearFive4n3n3n2n2n,2.)>dSumWQuadraticFive4n3n3n2n2n)
9889 {
9890 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
9891 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
9892 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
9893 + pow(f2pCorrelations->GetBinContent(3),2.)
9894 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
9895 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
9896 + pow((pow(dSumWQuadraticFive4n3n3n2n2n,0.5)/dSumWLinearFive4n3n3n2n2n)
9897 * dSpreadFive4n3n3n2n2n*pow(pow(dSumWLinearFive4n3n3n2n2n,2.)/(pow(dSumWLinearFive4n3n3n2n2n,2.)-dSumWQuadraticFive4n3n3n2n2n),0.5),2.)
9898 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(3)
9899 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9900 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,8))
9901 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(2))
9902 / (dSumWLinearTwo3n3n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9903 - 2.*f3pCorrelations->GetBinContent(2)
9904 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9905 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,60))
9906 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(4))
9907 / (dSumWLinearTwo3n3n*dSumWLinearFive4n3n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9908 - 2.*f2pCorrelations->GetBinContent(3)
9909 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9910 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,60))
9911 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(4))
9912 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n3n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9913 if(dError>0.)
9914 {
9915 f5pCumulants->SetBinError(4,pow(dError,0.5));
9916 }
9917 } // end of if(...)
9918 } // end of {
e1d101a6 9919 f5pCumulants->SetBinContent(5,f5pCorrelations->GetBinContent(5)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4));
c10259fb 9920 {
9921 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9922 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9923 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9924 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
9925 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
9926 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
9927 Double_t dSumWLinearFive4n2n4n1n1n = 0.; // sum of linear event weights for <4>
9928 Double_t dSumWQuadraticFive4n2n4n1n1n = 0.; // sum of quadratic event weights <4>
9929 Double_t dSpreadFive4n2n4n1n1n = 0.; // weighted and biased estimator for sigma of <4>
9930 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9931 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9932 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9933 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9934 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9935 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
9936 dSumWLinearFive4n2n4n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9937 dSumWQuadraticFive4n2n4n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9938 dSpreadFive4n2n4n1n1n = f5pCorrelations->GetBinError(5);
9939 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9940 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
9941 pow(dSumWLinearFive4n2n4n1n1n,2.)>dSumWQuadraticFive4n2n4n1n1n)
9942 {
9943 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
9944 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9945 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9946 + pow(f2pCorrelations->GetBinContent(4),2.)
9947 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
9948 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
9949 + pow((pow(dSumWQuadraticFive4n2n4n1n1n,0.5)/dSumWLinearFive4n2n4n1n1n)
9950 * dSpreadFive4n2n4n1n1n*pow(pow(dSumWLinearFive4n2n4n1n1n,2.)/(pow(dSumWLinearFive4n2n4n1n1n,2.)-dSumWQuadraticFive4n2n4n1n1n),0.5),2.)
9951 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(4)
9952 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
9953 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,7))
9954 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(1))
9955 / (dSumWLinearTwo4n4n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
9956 - 2.*f3pCorrelations->GetBinContent(1)
9957 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
9958 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,61))
9959 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(5))
9960 / (dSumWLinearTwo4n4n*dSumWLinearFive4n2n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
9961 - 2.*f2pCorrelations->GetBinContent(4)
9962 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
9963 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,61))
9964 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(5))
9965 / (dSumWLinearThree2n1n1n*dSumWLinearFive4n2n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
9966 if(dError>0.)
9967 {
9968 f5pCumulants->SetBinError(5,pow(dError,0.5));
9969 }
9970 } // end of if(...)
9971 } // end of {
e1d101a6 9972 f5pCumulants->SetBinContent(6,f5pCorrelations->GetBinContent(6)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4));
c10259fb 9973 {
9974 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
9975 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
9976 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
9977 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
9978 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
9979 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
9980 Double_t dSumWLinearFive4n3n4n2n1n = 0.; // sum of linear event weights for <4>
9981 Double_t dSumWQuadraticFive4n3n4n2n1n = 0.; // sum of quadratic event weights <4>
9982 Double_t dSpreadFive4n3n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
9983 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
9984 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
9985 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
9986 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
9987 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
9988 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
9989 dSumWLinearFive4n3n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
9990 dSumWQuadraticFive4n3n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
9991 dSpreadFive4n3n4n2n1n = f5pCorrelations->GetBinError(6);
9992 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
9993 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
9994 pow(dSumWLinearFive4n3n4n2n1n,2.)>dSumWQuadraticFive4n3n4n2n1n)
9995 {
9996 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
9997 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
9998 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
9999 + pow(f2pCorrelations->GetBinContent(4),2.)
10000 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
10001 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
10002 + pow((pow(dSumWQuadraticFive4n3n4n2n1n,0.5)/dSumWLinearFive4n3n4n2n1n)
10003 * dSpreadFive4n3n4n2n1n*pow(pow(dSumWLinearFive4n3n4n2n1n,2.)/(pow(dSumWLinearFive4n3n4n2n1n,2.)-dSumWQuadraticFive4n3n4n2n1n),0.5),2.)
10004 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(4)
10005 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10006 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,10))
10007 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(5))
10008 / (dSumWLinearTwo4n4n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10009 - 2.*f3pCorrelations->GetBinContent(5)
10010 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10011 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,62))
10012 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(6))
10013 / (dSumWLinearTwo4n4n*dSumWLinearFive4n3n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10014 - 2.*f2pCorrelations->GetBinContent(4)
10015 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10016 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,62))
10017 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(6))
10018 / (dSumWLinearThree3n2n1n*dSumWLinearFive4n3n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10019 if(dError>0.)
10020 {
10021 f5pCumulants->SetBinError(6,pow(dError,0.5));
10022 }
10023 } // end of if(...)
10024 } // end of {
e1d101a6 10025 f5pCumulants->SetBinContent(7,f5pCorrelations->GetBinContent(7)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(1));
c10259fb 10026 {
10027 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10028 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10029 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10030 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
10031 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
10032 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
10033 Double_t dSumWLinearFive5n1n3n2n1n = 0.; // sum of linear event weights for <4>
10034 Double_t dSumWQuadraticFive5n1n3n2n1n = 0.; // sum of quadratic event weights <4>
10035 Double_t dSpreadFive5n1n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10036 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10037 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10038 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10039 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10040 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10041 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
10042 dSumWLinearFive5n1n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10043 dSumWQuadraticFive5n1n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10044 dSpreadFive5n1n3n2n1n = f5pCorrelations->GetBinError(7);
10045 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10046 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
10047 pow(dSumWLinearFive5n1n3n2n1n,2.)>dSumWQuadraticFive5n1n3n2n1n)
10048 {
10049 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
10050 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10051 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10052 + pow(f2pCorrelations->GetBinContent(1),2.)
10053 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
10054 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
10055 + pow((pow(dSumWQuadraticFive5n1n3n2n1n,0.5)/dSumWLinearFive5n1n3n2n1n)
10056 * dSpreadFive5n1n3n2n1n*pow(pow(dSumWLinearFive5n1n3n2n1n,2.)/(pow(dSumWLinearFive5n1n3n2n1n,2.)-dSumWQuadraticFive5n1n3n2n1n),0.5),2.)
10057 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(1)
10058 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10059 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,12))
10060 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(7))
10061 / (dSumWLinearTwo1n1n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10062 - 2.*f3pCorrelations->GetBinContent(7)
10063 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10064 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,63))
10065 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(7))
10066 / (dSumWLinearTwo1n1n*dSumWLinearFive5n1n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10067 - 2.*f2pCorrelations->GetBinContent(1)
10068 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10069 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,63))
10070 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(7))
10071 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n1n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10072 if(dError>0.)
10073 {
10074 f5pCumulants->SetBinError(7,pow(dError,0.5));
10075 }
10076 } // end of if(...)
10077 } // end of {
e1d101a6 10078 f5pCumulants->SetBinContent(8,f5pCorrelations->GetBinContent(8)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5));
c10259fb 10079 {
10080 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10081 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10082 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10083 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
10084 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
10085 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
10086 Double_t dSumWLinearFive5n2n5n1n1n = 0.; // sum of linear event weights for <4>
10087 Double_t dSumWQuadraticFive5n2n5n1n1n = 0.; // sum of quadratic event weights <4>
10088 Double_t dSpreadFive5n2n5n1n1n = 0.; // weighted and biased estimator for sigma of <4>
10089 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10090 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10091 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10092 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10093 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10094 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
10095 dSumWLinearFive5n2n5n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10096 dSumWQuadraticFive5n2n5n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10097 dSpreadFive5n2n5n1n1n = f5pCorrelations->GetBinError(8);
10098 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10099 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
10100 pow(dSumWLinearFive5n2n5n1n1n,2.)>dSumWQuadraticFive5n2n5n1n1n)
10101 {
10102 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
10103 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10104 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10105 + pow(f2pCorrelations->GetBinContent(5),2.)
10106 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
10107 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
10108 + pow((pow(dSumWQuadraticFive5n2n5n1n1n,0.5)/dSumWLinearFive5n2n5n1n1n)
10109 * dSpreadFive5n2n5n1n1n*pow(pow(dSumWLinearFive5n2n5n1n1n,2.)/(pow(dSumWLinearFive5n2n5n1n1n,2.)-dSumWQuadraticFive5n2n5n1n1n),0.5),2.)
10110 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(5)
10111 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10112 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,7))
10113 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(1))
10114 / (dSumWLinearTwo5n5n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10115 - 2.*f3pCorrelations->GetBinContent(1)
10116 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10117 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,64))
10118 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(8))
10119 / (dSumWLinearTwo5n5n*dSumWLinearFive5n2n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10120 - 2.*f2pCorrelations->GetBinContent(5)
10121 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10122 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,64))
10123 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(8))
10124 / (dSumWLinearThree2n1n1n*dSumWLinearFive5n2n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10125 if(dError>0.)
10126 {
10127 f5pCumulants->SetBinError(8,pow(dError,0.5));
10128 }
10129 } // end of if(...)
10130 } // end of {
e1d101a6 10131 f5pCumulants->SetBinContent(9,f5pCorrelations->GetBinContent(9)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(2));
c10259fb 10132 {
10133 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10134 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10135 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10136 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
10137 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
10138 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
10139 Double_t dSumWLinearFive5n2n4n2n1n = 0.; // sum of linear event weights for <4>
10140 Double_t dSumWQuadraticFive5n2n4n2n1n = 0.; // sum of quadratic event weights <4>
10141 Double_t dSpreadFive5n2n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10142 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10143 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10144 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10145 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10146 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10147 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
10148 dSumWLinearFive5n2n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10149 dSumWQuadraticFive5n2n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10150 dSpreadFive5n2n4n2n1n = f5pCorrelations->GetBinError(9);
10151 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10152 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
10153 pow(dSumWLinearFive5n2n4n2n1n,2.)>dSumWQuadraticFive5n2n4n2n1n)
10154 {
10155 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
10156 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10157 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10158 + pow(f2pCorrelations->GetBinContent(2),2.)
10159 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
10160 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
10161 + pow((pow(dSumWQuadraticFive5n2n4n2n1n,0.5)/dSumWLinearFive5n2n4n2n1n)
10162 * dSpreadFive5n2n4n2n1n*pow(pow(dSumWLinearFive5n2n4n2n1n,2.)/(pow(dSumWLinearFive5n2n4n2n1n,2.)-dSumWQuadraticFive5n2n4n2n1n),0.5),2.)
10163 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(2)
10164 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10165 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,13))
10166 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(8))
10167 / (dSumWLinearTwo2n2n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10168 - 2.*f3pCorrelations->GetBinContent(8)
10169 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10170 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,65))
10171 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(9))
10172 / (dSumWLinearTwo2n2n*dSumWLinearFive5n2n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10173 - 2.*f2pCorrelations->GetBinContent(2)
10174 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10175 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,65))
10176 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(9))
10177 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n2n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10178 if(dError>0.)
10179 {
10180 f5pCumulants->SetBinError(9,pow(dError,0.5));
10181 }
10182 } // end of if(...)
10183 } // end of {
e1d101a6 10184 f5pCumulants->SetBinContent(10,f5pCorrelations->GetBinContent(10)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(3));
c10259fb 10185 {
10186 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10187 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10188 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10189 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
10190 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
10191 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
10192 Double_t dSumWLinearFive5n3n4n3n1n = 0.; // sum of linear event weights for <4>
10193 Double_t dSumWQuadraticFive5n3n4n3n1n = 0.; // sum of quadratic event weights <4>
10194 Double_t dSpreadFive5n3n4n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10195 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10196 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10197 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10198 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10199 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10200 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
10201 dSumWLinearFive5n3n4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10202 dSumWQuadraticFive5n3n4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10203 dSpreadFive5n3n4n3n1n = f5pCorrelations->GetBinError(10);
10204 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10205 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
10206 pow(dSumWLinearFive5n3n4n3n1n,2.)>dSumWQuadraticFive5n3n4n3n1n)
10207 {
10208 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
10209 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10210 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10211 + pow(f2pCorrelations->GetBinContent(3),2.)
10212 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
10213 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
10214 + pow((pow(dSumWQuadraticFive5n3n4n3n1n,0.5)/dSumWLinearFive5n3n4n3n1n)
10215 * dSpreadFive5n3n4n3n1n*pow(pow(dSumWLinearFive5n3n4n3n1n,2.)/(pow(dSumWLinearFive5n3n4n3n1n,2.)-dSumWQuadraticFive5n3n4n3n1n),0.5),2.)
10216 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(3)
10217 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10218 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,13))
10219 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(8))
10220 / (dSumWLinearTwo3n3n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10221 - 2.*f3pCorrelations->GetBinContent(8)
10222 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10223 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,66))
10224 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(10))
10225 / (dSumWLinearTwo3n3n*dSumWLinearFive5n3n4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10226 - 2.*f2pCorrelations->GetBinContent(3)
10227 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10228 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,66))
10229 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(10))
10230 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n3n4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10231 if(dError>0.)
10232 {
10233 f5pCumulants->SetBinError(10,pow(dError,0.5));
10234 }
10235 } // end of if(...)
10236 } // end of {
e1d101a6 10237 f5pCumulants->SetBinContent(11,f5pCorrelations->GetBinContent(11)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(4));
c10259fb 10238 {
10239 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10240 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10241 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10242 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
10243 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
10244 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
10245 Double_t dSumWLinearFive5n4n4n3n2n = 0.; // sum of linear event weights for <4>
10246 Double_t dSumWQuadraticFive5n4n4n3n2n = 0.; // sum of quadratic event weights <4>
10247 Double_t dSpreadFive5n4n4n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10248 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10249 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10250 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10251 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10252 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10253 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
10254 dSumWLinearFive5n4n4n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10255 dSumWQuadraticFive5n4n4n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10256 dSpreadFive5n4n4n3n2n = f5pCorrelations->GetBinError(11);
10257 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10258 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
10259 pow(dSumWLinearFive5n4n4n3n2n,2.)>dSumWQuadraticFive5n4n4n3n2n)
10260 {
10261 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
10262 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10263 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10264 + pow(f2pCorrelations->GetBinContent(4),2.)
10265 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
10266 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
10267 + pow((pow(dSumWQuadraticFive5n4n4n3n2n,0.5)/dSumWLinearFive5n4n4n3n2n)
10268 * dSpreadFive5n4n4n3n2n*pow(pow(dSumWLinearFive5n4n4n3n2n,2.)/(pow(dSumWLinearFive5n4n4n3n2n,2.)-dSumWQuadraticFive5n4n4n3n2n),0.5),2.)
10269 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(4)
10270 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10271 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,12))
10272 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(7))
10273 / (dSumWLinearTwo4n4n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10274 - 2.*f3pCorrelations->GetBinContent(7)
10275 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10276 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,67))
10277 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(11))
10278 / (dSumWLinearTwo4n4n*dSumWLinearFive5n4n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10279 - 2.*f2pCorrelations->GetBinContent(4)
10280 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10281 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,67))
10282 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(11))
10283 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n4n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10284 if(dError>0.)
10285 {
10286 f5pCumulants->SetBinError(11,pow(dError,0.5));
10287 }
10288 } // end of if(...)
10289 } // end of {
e1d101a6 10290 f5pCumulants->SetBinContent(12,f5pCorrelations->GetBinContent(12)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(5));
c10259fb 10291 {
10292 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10293 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10294 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10295 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
10296 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
10297 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
10298 Double_t dSumWLinearFive5n3n5n2n1n = 0.; // sum of linear event weights for <4>
10299 Double_t dSumWQuadraticFive5n3n5n2n1n = 0.; // sum of quadratic event weights <4>
10300 Double_t dSpreadFive5n3n5n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10301 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10302 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10303 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10304 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10305 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10306 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
10307 dSumWLinearFive5n3n5n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10308 dSumWQuadraticFive5n3n5n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10309 dSpreadFive5n3n5n2n1n = f5pCorrelations->GetBinError(12);
10310 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10311 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
10312 pow(dSumWLinearFive5n3n5n2n1n,2.)>dSumWQuadraticFive5n3n5n2n1n)
10313 {
10314 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
10315 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10316 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10317 + pow(f2pCorrelations->GetBinContent(5),2.)
10318 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
10319 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
10320 + pow((pow(dSumWQuadraticFive5n3n5n2n1n,0.5)/dSumWLinearFive5n3n5n2n1n)
10321 * dSpreadFive5n3n5n2n1n*pow(pow(dSumWLinearFive5n3n5n2n1n,2.)/(pow(dSumWLinearFive5n3n5n2n1n,2.)-dSumWQuadraticFive5n3n5n2n1n),0.5),2.)
10322 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(5)
10323 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10324 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,10))
10325 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(5))
10326 / (dSumWLinearTwo5n5n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10327 - 2.*f3pCorrelations->GetBinContent(5)
10328 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10329 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,68))
10330 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(12))
10331 / (dSumWLinearTwo5n5n*dSumWLinearFive5n3n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10332 - 2.*f2pCorrelations->GetBinContent(5)
10333 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10334 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,68))
10335 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(12))
10336 / (dSumWLinearThree3n2n1n*dSumWLinearFive5n3n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10337 if(dError>0.)
10338 {
10339 f5pCumulants->SetBinError(12,pow(dError,0.5));
10340 }
10341 } // end of if(...)
10342 } // end of {
e1d101a6 10343 f5pCumulants->SetBinContent(13,f5pCorrelations->GetBinContent(13)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5));
c10259fb 10344 {
10345 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10346 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10347 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10348 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
10349 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
10350 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
10351 Double_t dSumWLinearFive5n4n5n2n2n = 0.; // sum of linear event weights for <4>
10352 Double_t dSumWQuadraticFive5n4n5n2n2n = 0.; // sum of quadratic event weights <4>
10353 Double_t dSpreadFive5n4n5n2n2n = 0.; // weighted and biased estimator for sigma of <4>
10354 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10355 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10356 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10357 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10358 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10359 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
10360 dSumWLinearFive5n4n5n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10361 dSumWQuadraticFive5n4n5n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10362 dSpreadFive5n4n5n2n2n = f5pCorrelations->GetBinError(13);
10363 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10364 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
10365 pow(dSumWLinearFive5n4n5n2n2n,2.)>dSumWQuadraticFive5n4n5n2n2n)
10366 {
10367 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
10368 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10369 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10370 + pow(f2pCorrelations->GetBinContent(5),2.)
10371 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
10372 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
10373 + pow((pow(dSumWQuadraticFive5n4n5n2n2n,0.5)/dSumWLinearFive5n4n5n2n2n)
10374 * dSpreadFive5n4n5n2n2n*pow(pow(dSumWLinearFive5n4n5n2n2n,2.)/(pow(dSumWLinearFive5n4n5n2n2n,2.)-dSumWQuadraticFive5n4n5n2n2n),0.5),2.)
10375 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(5)
10376 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10377 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,8))
10378 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(2))
10379 / (dSumWLinearTwo5n5n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10380 - 2.*f3pCorrelations->GetBinContent(2)
10381 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10382 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,69))
10383 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(13))
10384 / (dSumWLinearTwo5n5n*dSumWLinearFive5n4n5n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10385 - 2.*f2pCorrelations->GetBinContent(5)
10386 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10387 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,69))
10388 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(13))
10389 / (dSumWLinearThree4n2n2n*dSumWLinearFive5n4n5n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10390 if(dError>0.)
10391 {
10392 f5pCumulants->SetBinError(13,pow(dError,0.5));
10393 }
10394 } // end of if(...)
10395 } // end of {
e1d101a6 10396 f5pCumulants->SetBinContent(14,f5pCorrelations->GetBinContent(14)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5));
c10259fb 10397 {
10398 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10399 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10400 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10401 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
10402 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
10403 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
10404 Double_t dSumWLinearFive5n4n5n3n1n = 0.; // sum of linear event weights for <4>
10405 Double_t dSumWQuadraticFive5n4n5n3n1n = 0.; // sum of quadratic event weights <4>
10406 Double_t dSpreadFive5n4n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10407 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10408 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10409 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10410 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10411 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10412 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
10413 dSumWLinearFive5n4n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10414 dSumWQuadraticFive5n4n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10415 dSpreadFive5n4n5n3n1n = f5pCorrelations->GetBinError(14);
10416 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10417 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
10418 pow(dSumWLinearFive5n4n5n3n1n,2.)>dSumWQuadraticFive5n4n5n3n1n)
10419 {
10420 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
10421 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10422 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10423 + pow(f2pCorrelations->GetBinContent(5),2.)
10424 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
10425 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
10426 + pow((pow(dSumWQuadraticFive5n4n5n3n1n,0.5)/dSumWLinearFive5n4n5n3n1n)
10427 * dSpreadFive5n4n5n3n1n*pow(pow(dSumWLinearFive5n4n5n3n1n,2.)/(pow(dSumWLinearFive5n4n5n3n1n,2.)-dSumWQuadraticFive5n4n5n3n1n),0.5),2.)
10428 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(5)
10429 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10430 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,11))
10431 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(6))
10432 / (dSumWLinearTwo5n5n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10433 - 2.*f3pCorrelations->GetBinContent(6)
10434 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10435 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,70))
10436 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(14))
10437 / (dSumWLinearTwo5n5n*dSumWLinearFive5n4n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10438 - 2.*f2pCorrelations->GetBinContent(5)
10439 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10440 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,70))
10441 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(14))
10442 / (dSumWLinearThree4n3n1n*dSumWLinearFive5n4n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10443 if(dError>0.)
10444 {
10445 f5pCumulants->SetBinError(14,pow(dError,0.5));
10446 }
10447 } // end of if(...)
10448 } // end of {
e1d101a6 10449 f5pCumulants->SetBinContent(15,f5pCorrelations->GetBinContent(15)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1));
c10259fb 10450 {
10451 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10452 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10453 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10454 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10455 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10456 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10457 Double_t dSumWLinearFive6n1n3n3n1n = 0.; // sum of linear event weights for <4>
10458 Double_t dSumWQuadraticFive6n1n3n3n1n = 0.; // sum of quadratic event weights <4>
10459 Double_t dSpreadFive6n1n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10460 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10461 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10462 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10463 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10464 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10465 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10466 dSumWLinearFive6n1n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10467 dSumWQuadraticFive6n1n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10468 dSpreadFive6n1n3n3n1n = f5pCorrelations->GetBinError(15);
10469 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10470 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10471 pow(dSumWLinearFive6n1n3n3n1n,2.)>dSumWQuadraticFive6n1n3n3n1n)
10472 {
10473 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10474 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10475 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10476 + pow(f2pCorrelations->GetBinContent(1),2.)
10477 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10478 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10479 + pow((pow(dSumWQuadraticFive6n1n3n3n1n,0.5)/dSumWLinearFive6n1n3n3n1n)
10480 * dSpreadFive6n1n3n3n1n*pow(pow(dSumWLinearFive6n1n3n3n1n,2.)/(pow(dSumWLinearFive6n1n3n3n1n,2.)-dSumWQuadraticFive6n1n3n3n1n),0.5),2.)
10481 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(1)
10482 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10483 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,9))
10484 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(3))
10485 / (dSumWLinearTwo1n1n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10486 - 2.*f3pCorrelations->GetBinContent(3)
10487 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10488 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,71))
10489 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(15))
10490 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10491 - 2.*f2pCorrelations->GetBinContent(1)
10492 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10493 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,71))
10494 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(15))
10495 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n1n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10496 if(dError>0.)
10497 {
10498 f5pCumulants->SetBinError(15,pow(dError,0.5));
10499 }
10500 } // end of if(...)
10501 } // end of {
e1d101a6 10502 f5pCumulants->SetBinContent(16,f5pCorrelations->GetBinContent(16)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2));
c10259fb 10503 {
10504 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10505 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10506 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10507 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10508 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10509 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10510 Double_t dSumWLinearFive6n2n3n3n2n = 0.; // sum of linear event weights for <4>
10511 Double_t dSumWQuadraticFive6n2n3n3n2n = 0.; // sum of quadratic event weights <4>
10512 Double_t dSpreadFive6n2n3n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10513 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10514 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10515 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10516 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10517 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10518 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10519 dSumWLinearFive6n2n3n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10520 dSumWQuadraticFive6n2n3n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10521 dSpreadFive6n2n3n3n2n = f5pCorrelations->GetBinError(16);
10522 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10523 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10524 pow(dSumWLinearFive6n2n3n3n2n,2.)>dSumWQuadraticFive6n2n3n3n2n)
10525 {
10526 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10527 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10528 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10529 + pow(f2pCorrelations->GetBinContent(2),2.)
10530 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10531 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10532 + pow((pow(dSumWQuadraticFive6n2n3n3n2n,0.5)/dSumWLinearFive6n2n3n3n2n)
10533 * dSpreadFive6n2n3n3n2n*pow(pow(dSumWLinearFive6n2n3n3n2n,2.)/(pow(dSumWLinearFive6n2n3n3n2n,2.)-dSumWQuadraticFive6n2n3n3n2n),0.5),2.)
10534 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(2)
10535 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10536 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,9))
10537 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(3))
10538 / (dSumWLinearTwo2n2n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10539 - 2.*f3pCorrelations->GetBinContent(3)
10540 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10541 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,72))
10542 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(16))
10543 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10544 - 2.*f2pCorrelations->GetBinContent(2)
10545 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10546 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,72))
10547 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(16))
10548 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n2n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10549 if(dError>0.)
10550 {
10551 f5pCumulants->SetBinError(16,pow(dError,0.5));
10552 }
10553 } // end of if(...)
10554 } // end of {
e1d101a6 10555 f5pCumulants->SetBinContent(17,f5pCorrelations->GetBinContent(17)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(1));
c10259fb 10556 {
10557 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
10558 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
10559 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
10560 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
10561 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
10562 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
10563 Double_t dSumWLinearFive6n1n4n2n1n = 0.; // sum of linear event weights for <4>
10564 Double_t dSumWQuadraticFive6n1n4n2n1n = 0.; // sum of quadratic event weights <4>
10565 Double_t dSpreadFive6n1n4n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10566 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10567 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10568 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
10569 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10570 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10571 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
10572 dSumWLinearFive6n1n4n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10573 dSumWQuadraticFive6n1n4n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10574 dSpreadFive6n1n4n2n1n = f5pCorrelations->GetBinError(17);
10575 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
10576 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
10577 pow(dSumWLinearFive6n1n4n2n1n,2.)>dSumWQuadraticFive6n1n4n2n1n)
10578 {
10579 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
10580 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
10581 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
10582 + pow(f2pCorrelations->GetBinContent(1),2.)
10583 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
10584 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
10585 + pow((pow(dSumWQuadraticFive6n1n4n2n1n,0.5)/dSumWLinearFive6n1n4n2n1n)
10586 * dSpreadFive6n1n4n2n1n*pow(pow(dSumWLinearFive6n1n4n2n1n,2.)/(pow(dSumWLinearFive6n1n4n2n1n,2.)-dSumWQuadraticFive6n1n4n2n1n),0.5),2.)
10587 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(1)
10588 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10589 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,14))
10590 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(9))
10591 / (dSumWLinearTwo1n1n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10592 - 2.*f3pCorrelations->GetBinContent(9)
10593 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10594 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,73))
10595 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(17))
10596 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10597 - 2.*f2pCorrelations->GetBinContent(1)
10598 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10599 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,73))
10600 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(17))
10601 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n1n4n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10602 if(dError>0.)
10603 {
10604 f5pCumulants->SetBinError(17,pow(dError,0.5));
10605 }
10606 } // end of if(...)
10607 } // end of {
e1d101a6 10608 f5pCumulants->SetBinContent(18,f5pCorrelations->GetBinContent(18)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(3));
c10259fb 10609 {
10610 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10611 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10612 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10613 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
10614 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
10615 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
10616 Double_t dSumWLinearFive6n3n4n3n2n = 0.; // sum of linear event weights for <4>
10617 Double_t dSumWQuadraticFive6n3n4n3n2n = 0.; // sum of quadratic event weights <4>
10618 Double_t dSpreadFive6n3n4n3n2n = 0.; // weighted and biased estimator for sigma of <4>
10619 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10620 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10621 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10622 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10623 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10624 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
10625 dSumWLinearFive6n3n4n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10626 dSumWQuadraticFive6n3n4n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10627 dSpreadFive6n3n4n3n2n = f5pCorrelations->GetBinError(18);
10628 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10629 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
10630 pow(dSumWLinearFive6n3n4n3n2n,2.)>dSumWQuadraticFive6n3n4n3n2n)
10631 {
10632 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
10633 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10634 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10635 + pow(f2pCorrelations->GetBinContent(3),2.)
10636 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
10637 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
10638 + pow((pow(dSumWQuadraticFive6n3n4n3n2n,0.5)/dSumWLinearFive6n3n4n3n2n)
10639 * dSpreadFive6n3n4n3n2n*pow(pow(dSumWLinearFive6n3n4n3n2n,2.)/(pow(dSumWLinearFive6n3n4n3n2n,2.)-dSumWQuadraticFive6n3n4n3n2n),0.5),2.)
10640 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(3)
10641 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10642 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,14))
10643 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(9))
10644 / (dSumWLinearTwo3n3n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10645 - 2.*f3pCorrelations->GetBinContent(9)
10646 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10647 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,74))
10648 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(18))
10649 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10650 - 2.*f2pCorrelations->GetBinContent(3)
10651 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10652 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,74))
10653 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(18))
10654 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n3n4n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10655 if(dError>0.)
10656 {
10657 f5pCumulants->SetBinError(18,pow(dError,0.5));
10658 }
10659 } // end of if(...)
10660 } // end of {
e1d101a6 10661 f5pCumulants->SetBinContent(19,f5pCorrelations->GetBinContent(19)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4));
c10259fb 10662 {
10663 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10664 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10665 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10666 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10667 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10668 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10669 Double_t dSumWLinearFive6n4n4n3n3n = 0.; // sum of linear event weights for <4>
10670 Double_t dSumWQuadraticFive6n4n4n3n3n = 0.; // sum of quadratic event weights <4>
10671 Double_t dSpreadFive6n4n4n3n3n = 0.; // weighted and biased estimator for sigma of <4>
10672 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10673 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10674 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10675 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10676 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10677 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10678 dSumWLinearFive6n4n4n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10679 dSumWQuadraticFive6n4n4n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10680 dSpreadFive6n4n4n3n3n = f5pCorrelations->GetBinError(19);
10681 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10682 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10683 pow(dSumWLinearFive6n4n4n3n3n,2.)>dSumWQuadraticFive6n4n4n3n3n)
10684 {
10685 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10686 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10687 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10688 + pow(f2pCorrelations->GetBinContent(4),2.)
10689 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10690 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10691 + pow((pow(dSumWQuadraticFive6n4n4n3n3n,0.5)/dSumWLinearFive6n4n4n3n3n)
10692 * dSpreadFive6n4n4n3n3n*pow(pow(dSumWLinearFive6n4n4n3n3n,2.)/(pow(dSumWLinearFive6n4n4n3n3n,2.)-dSumWQuadraticFive6n4n4n3n3n),0.5),2.)
10693 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(4)
10694 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10695 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,9))
10696 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(3))
10697 / (dSumWLinearTwo4n4n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10698 - 2.*f3pCorrelations->GetBinContent(3)
10699 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10700 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,75))
10701 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(19))
10702 / (dSumWLinearTwo4n4n*dSumWLinearFive6n4n4n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10703 - 2.*f2pCorrelations->GetBinContent(4)
10704 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10705 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,75))
10706 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(19))
10707 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n4n4n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10708 if(dError>0.)
10709 {
10710 f5pCumulants->SetBinError(19,pow(dError,0.5));
10711 }
10712 } // end of if(...)
10713 } // end of {
e1d101a6 10714 f5pCumulants->SetBinContent(20,f5pCorrelations->GetBinContent(20)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(2));
c10259fb 10715 {
10716 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
10717 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
10718 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
10719 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10720 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10721 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10722 Double_t dSumWLinearFive6n2n5n2n1n = 0.; // sum of linear event weights for <4>
10723 Double_t dSumWQuadraticFive6n2n5n2n1n = 0.; // sum of quadratic event weights <4>
10724 Double_t dSpreadFive6n2n5n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10725 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10726 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10727 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
10728 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10729 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10730 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10731 dSumWLinearFive6n2n5n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10732 dSumWQuadraticFive6n2n5n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10733 dSpreadFive6n2n5n2n1n = f5pCorrelations->GetBinError(20);
10734 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
10735 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10736 pow(dSumWLinearFive6n2n5n2n1n,2.)>dSumWQuadraticFive6n2n5n2n1n)
10737 {
10738 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10739 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
10740 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
10741 + pow(f2pCorrelations->GetBinContent(2),2.)
10742 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10743 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10744 + pow((pow(dSumWQuadraticFive6n2n5n2n1n,0.5)/dSumWLinearFive6n2n5n2n1n)
10745 * dSpreadFive6n2n5n2n1n*pow(pow(dSumWLinearFive6n2n5n2n1n,2.)/(pow(dSumWLinearFive6n2n5n2n1n,2.)-dSumWQuadraticFive6n2n5n2n1n),0.5),2.)
10746 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(2)
10747 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10748 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,15))
10749 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(10))
10750 / (dSumWLinearTwo2n2n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10751 - 2.*f3pCorrelations->GetBinContent(10)
10752 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10753 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,76))
10754 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(20))
10755 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10756 - 2.*f2pCorrelations->GetBinContent(2)
10757 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10758 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,76))
10759 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(20))
10760 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n2n5n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10761 if(dError>0.)
10762 {
10763 f5pCumulants->SetBinError(20,pow(dError,0.5));
10764 }
10765 } // end of if(...)
10766 } // end of {
e1d101a6 10767 f5pCumulants->SetBinContent(21,f5pCorrelations->GetBinContent(21)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(3));
c10259fb 10768 {
10769 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
10770 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
10771 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
10772 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10773 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10774 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10775 Double_t dSumWLinearFive6n3n5n3n1n = 0.; // sum of linear event weights for <4>
10776 Double_t dSumWQuadraticFive6n3n5n3n1n = 0.; // sum of quadratic event weights <4>
10777 Double_t dSpreadFive6n3n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10778 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10779 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10780 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
10781 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10782 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10783 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10784 dSumWLinearFive6n3n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10785 dSumWQuadraticFive6n3n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10786 dSpreadFive6n3n5n3n1n = f5pCorrelations->GetBinError(21);
10787 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
10788 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10789 pow(dSumWLinearFive6n3n5n3n1n,2.)>dSumWQuadraticFive6n3n5n3n1n)
10790 {
10791 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10792 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
10793 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
10794 + pow(f2pCorrelations->GetBinContent(3),2.)
10795 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10796 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10797 + pow((pow(dSumWQuadraticFive6n3n5n3n1n,0.5)/dSumWLinearFive6n3n5n3n1n)
10798 * dSpreadFive6n3n5n3n1n*pow(pow(dSumWLinearFive6n3n5n3n1n,2.)/(pow(dSumWLinearFive6n3n5n3n1n,2.)-dSumWQuadraticFive6n3n5n3n1n),0.5),2.)
10799 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(3)
10800 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10801 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,15))
10802 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(10))
10803 / (dSumWLinearTwo3n3n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10804 - 2.*f3pCorrelations->GetBinContent(10)
10805 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10806 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,77))
10807 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(21))
10808 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10809 - 2.*f2pCorrelations->GetBinContent(3)
10810 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10811 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,77))
10812 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(21))
10813 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10814 if(dError>0.)
10815 {
10816 f5pCumulants->SetBinError(21,pow(dError,0.5));
10817 }
10818 } // end of if(...)
10819 } // end of {
e1d101a6 10820 f5pCumulants->SetBinContent(22,f5pCorrelations->GetBinContent(22)-f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(4));
c10259fb 10821 {
10822 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
10823 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
10824 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
10825 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
10826 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
10827 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
10828 Double_t dSumWLinearFive6n3n5n3n1n = 0.; // sum of linear event weights for <4>
10829 Double_t dSumWQuadraticFive6n3n5n3n1n = 0.; // sum of quadratic event weights <4>
10830 Double_t dSpreadFive6n3n5n3n1n = 0.; // weighted and biased estimator for sigma of <4>
10831 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10832 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10833 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
10834 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10835 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10836 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
10837 dSumWLinearFive6n3n5n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10838 dSumWQuadraticFive6n3n5n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10839 dSpreadFive6n3n5n3n1n = f5pCorrelations->GetBinError(22);
10840 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
10841 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
10842 pow(dSumWLinearFive6n3n5n3n1n,2.)>dSumWQuadraticFive6n3n5n3n1n)
10843 {
10844 Double_t dError = pow(f3pCorrelations->GetBinContent(10),2.)
10845 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
10846 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
10847 + pow(f2pCorrelations->GetBinContent(4),2.)
10848 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
10849 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
10850 + pow((pow(dSumWQuadraticFive6n3n5n3n1n,0.5)/dSumWLinearFive6n3n5n3n1n)
10851 * dSpreadFive6n3n5n3n1n*pow(pow(dSumWLinearFive6n3n5n3n1n,2.)/(pow(dSumWLinearFive6n3n5n3n1n,2.)-dSumWQuadraticFive6n3n5n3n1n),0.5),2.)
10852 + 2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(4)
10853 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10854 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,15))
10855 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(10))
10856 / (dSumWLinearTwo4n4n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10857 - 2.*f3pCorrelations->GetBinContent(10)
10858 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10859 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,78))
10860 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(22))
10861 / (dSumWLinearTwo4n4n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10862 - 2.*f2pCorrelations->GetBinContent(4)
10863 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10864 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,78))
10865 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(22))
10866 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n3n5n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10867 if(dError>0.)
10868 {
10869 f5pCumulants->SetBinError(22,pow(dError,0.5));
10870 }
10871 } // end of if(...)
10872 } // end of {
e1d101a6 10873 f5pCumulants->SetBinContent(23,f5pCorrelations->GetBinContent(23)-f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5));
c10259fb 10874 {
10875 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
10876 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
10877 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
10878 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
10879 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
10880 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
10881 Double_t dSumWLinearFive6n5n5n3n3n = 0.; // sum of linear event weights for <4>
10882 Double_t dSumWQuadraticFive6n5n5n3n3n = 0.; // sum of quadratic event weights <4>
10883 Double_t dSpreadFive6n5n5n3n3n = 0.; // weighted and biased estimator for sigma of <4>
10884 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10885 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10886 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
10887 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10888 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10889 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
10890 dSumWLinearFive6n5n5n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10891 dSumWQuadraticFive6n5n5n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10892 dSpreadFive6n5n5n3n3n = f5pCorrelations->GetBinError(23);
10893 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
10894 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
10895 pow(dSumWLinearFive6n5n5n3n3n,2.)>dSumWQuadraticFive6n5n5n3n3n)
10896 {
10897 Double_t dError = pow(f3pCorrelations->GetBinContent(3),2.)
10898 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
10899 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
10900 + pow(f2pCorrelations->GetBinContent(5),2.)
10901 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
10902 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
10903 + pow((pow(dSumWQuadraticFive6n5n5n3n3n,0.5)/dSumWLinearFive6n5n5n3n3n)
10904 * dSpreadFive6n5n5n3n3n*pow(pow(dSumWLinearFive6n5n5n3n3n,2.)/(pow(dSumWLinearFive6n5n5n3n3n,2.)-dSumWQuadraticFive6n5n5n3n3n),0.5),2.)
10905 + 2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(5)
10906 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10907 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,9))
10908 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(3))
10909 / (dSumWLinearTwo5n5n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10910 - 2.*f3pCorrelations->GetBinContent(3)
10911 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10912 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,79))
10913 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(23))
10914 / (dSumWLinearTwo5n5n*dSumWLinearFive6n5n5n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10915 - 2.*f2pCorrelations->GetBinContent(5)
10916 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10917 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,79))
10918 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(23))
10919 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n5n5n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10920 if(dError>0.)
10921 {
10922 f5pCumulants->SetBinError(23,pow(dError,0.5));
10923 }
10924 } // end of if(...)
10925 } // end of {
e1d101a6 10926 f5pCumulants->SetBinContent(24,f5pCorrelations->GetBinContent(24)-f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6));
c10259fb 10927 {
10928 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
10929 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
10930 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
10931 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
10932 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
10933 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
10934 Double_t dSumWLinearFive6n2n6n1n1n = 0.; // sum of linear event weights for <4>
10935 Double_t dSumWQuadraticFive6n2n6n1n1n = 0.; // sum of quadratic event weights <4>
10936 Double_t dSpreadFive6n2n6n1n1n = 0.; // weighted and biased estimator for sigma of <4>
10937 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10938 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10939 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
10940 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10941 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10942 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
10943 dSumWLinearFive6n2n6n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10944 dSumWQuadraticFive6n2n6n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10945 dSpreadFive6n2n6n1n1n = f5pCorrelations->GetBinError(24);
10946 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
10947 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
10948 pow(dSumWLinearFive6n2n6n1n1n,2.)>dSumWQuadraticFive6n2n6n1n1n)
10949 {
10950 Double_t dError = pow(f3pCorrelations->GetBinContent(1),2.)
10951 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
10952 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
10953 + pow(f2pCorrelations->GetBinContent(6),2.)
10954 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
10955 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
10956 + pow((pow(dSumWQuadraticFive6n2n6n1n1n,0.5)/dSumWLinearFive6n2n6n1n1n)
10957 * dSpreadFive6n2n6n1n1n*pow(pow(dSumWLinearFive6n2n6n1n1n,2.)/(pow(dSumWLinearFive6n2n6n1n1n,2.)-dSumWQuadraticFive6n2n6n1n1n),0.5),2.)
10958 + 2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(6)
10959 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
10960 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,7))
10961 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(1))
10962 / (dSumWLinearTwo6n6n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
10963 - 2.*f3pCorrelations->GetBinContent(1)
10964 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
10965 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,80))
10966 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(24))
10967 / (dSumWLinearTwo6n6n*dSumWLinearFive6n2n6n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
10968 - 2.*f2pCorrelations->GetBinContent(6)
10969 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
10970 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,80))
10971 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(24))
10972 / (dSumWLinearThree2n1n1n*dSumWLinearFive6n2n6n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
10973 if(dError>0.)
10974 {
10975 f5pCumulants->SetBinError(24,pow(dError,0.5));
10976 }
10977 } // end of if(...)
10978 } // end of {
e1d101a6 10979 f5pCumulants->SetBinContent(25,f5pCorrelations->GetBinContent(25)-f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6));
c10259fb 10980 {
10981 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
10982 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
10983 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
10984 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
10985 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
10986 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
10987 Double_t dSumWLinearFive6n3n6n2n1n = 0.; // sum of linear event weights for <4>
10988 Double_t dSumWQuadraticFive6n3n6n2n1n = 0.; // sum of quadratic event weights <4>
10989 Double_t dSpreadFive6n3n6n2n1n = 0.; // weighted and biased estimator for sigma of <4>
10990 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
10991 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
10992 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
10993 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
10994 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
10995 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
10996 dSumWLinearFive6n3n6n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
10997 dSumWQuadraticFive6n3n6n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
10998 dSpreadFive6n3n6n2n1n = f5pCorrelations->GetBinError(25);
10999 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11000 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11001 pow(dSumWLinearFive6n3n6n2n1n,2.)>dSumWQuadraticFive6n3n6n2n1n)
11002 {
11003 Double_t dError = pow(f3pCorrelations->GetBinContent(5),2.)
11004 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11005 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11006 + pow(f2pCorrelations->GetBinContent(6),2.)
11007 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11008 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11009 + pow((pow(dSumWQuadraticFive6n3n6n2n1n,0.5)/dSumWLinearFive6n3n6n2n1n)
11010 * dSpreadFive6n3n6n2n1n*pow(pow(dSumWLinearFive6n3n6n2n1n,2.)/(pow(dSumWLinearFive6n3n6n2n1n,2.)-dSumWQuadraticFive6n3n6n2n1n),0.5),2.)
11011 + 2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(6)
11012 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11013 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,10))
11014 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(5))
11015 / (dSumWLinearTwo6n6n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11016 - 2.*f3pCorrelations->GetBinContent(5)
11017 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11018 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,81))
11019 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(25))
11020 / (dSumWLinearTwo6n6n*dSumWLinearFive6n3n6n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11021 - 2.*f2pCorrelations->GetBinContent(6)
11022 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11023 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,81))
11024 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(25))
11025 / (dSumWLinearThree3n2n1n*dSumWLinearFive6n3n6n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11026 if(dError>0.)
11027 {
11028 f5pCumulants->SetBinError(25,pow(dError,0.5));
11029 }
11030 } // end of if(...)
11031 } // end of {
e1d101a6 11032 f5pCumulants->SetBinContent(26,f5pCorrelations->GetBinContent(26)-f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6));
c10259fb 11033 {
11034 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11035 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11036 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11037 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11038 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11039 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11040 Double_t dSumWLinearFive6n4n6n2n2n = 0.; // sum of linear event weights for <4>
11041 Double_t dSumWQuadraticFive6n4n6n2n2n = 0.; // sum of quadratic event weights <4>
11042 Double_t dSpreadFive6n4n6n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11043 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11044 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11045 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11046 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11047 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11048 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11049 dSumWLinearFive6n4n6n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11050 dSumWQuadraticFive6n4n6n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11051 dSpreadFive6n4n6n2n2n = f5pCorrelations->GetBinError(26);
11052 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11053 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11054 pow(dSumWLinearFive6n4n6n2n2n,2.)>dSumWQuadraticFive6n4n6n2n2n)
11055 {
11056 Double_t dError = pow(f3pCorrelations->GetBinContent(2),2.)
11057 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11058 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11059 + pow(f2pCorrelations->GetBinContent(6),2.)
11060 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11061 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11062 + pow((pow(dSumWQuadraticFive6n4n6n2n2n,0.5)/dSumWLinearFive6n4n6n2n2n)
11063 * dSpreadFive6n4n6n2n2n*pow(pow(dSumWLinearFive6n4n6n2n2n,2.)/(pow(dSumWLinearFive6n4n6n2n2n,2.)-dSumWQuadraticFive6n4n6n2n2n),0.5),2.)
11064 + 2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(6)
11065 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11066 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,8))
11067 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(2))
11068 / (dSumWLinearTwo6n6n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11069 - 2.*f3pCorrelations->GetBinContent(2)
11070 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11071 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,82))
11072 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(26))
11073 / (dSumWLinearTwo6n6n*dSumWLinearFive6n4n6n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11074 - 2.*f2pCorrelations->GetBinContent(6)
11075 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11076 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,82))
11077 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(26))
11078 / (dSumWLinearThree4n2n2n*dSumWLinearFive6n4n6n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11079 if(dError>0.)
11080 {
11081 f5pCumulants->SetBinError(26,pow(dError,0.5));
11082 }
11083 } // end of if(...)
11084 } // end of {
e1d101a6 11085 f5pCumulants->SetBinContent(27,f5pCorrelations->GetBinContent(27)-f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(6));
c10259fb 11086 {
11087 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11088 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11089 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11090 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11091 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11092 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11093 Double_t dSumWLinearFive6n4n6n3n1n = 0.; // sum of linear event weights for <4>
11094 Double_t dSumWQuadraticFive6n4n6n3n1n = 0.; // sum of quadratic event weights <4>
11095 Double_t dSpreadFive6n4n6n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11096 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11097 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11098 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11099 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11100 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11101 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11102 dSumWLinearFive6n4n6n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11103 dSumWQuadraticFive6n4n6n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11104 dSpreadFive6n4n6n3n1n = f5pCorrelations->GetBinError(27);
11105 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11106 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11107 pow(dSumWLinearFive6n4n6n3n1n,2.)>dSumWQuadraticFive6n4n6n3n1n)
11108 {
11109 Double_t dError = pow(f3pCorrelations->GetBinContent(6),2.)
11110 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11111 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11112 + pow(f2pCorrelations->GetBinContent(6),2.)
11113 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11114 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11115 + pow((pow(dSumWQuadraticFive6n4n6n3n1n,0.5)/dSumWLinearFive6n4n6n3n1n)
11116 * dSpreadFive6n4n6n3n1n*pow(pow(dSumWLinearFive6n4n6n3n1n,2.)/(pow(dSumWLinearFive6n4n6n3n1n,2.)-dSumWQuadraticFive6n4n6n3n1n),0.5),2.)
11117 + 2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(6)
11118 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11119 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,11))
11120 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(6))
11121 / (dSumWLinearTwo6n6n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11122 - 2.*f3pCorrelations->GetBinContent(6)
11123 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11124 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,83))
11125 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(27))
11126 / (dSumWLinearTwo6n6n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11127 - 2.*f2pCorrelations->GetBinContent(6)
11128 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11129 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,83))
11130 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(27))
11131 / (dSumWLinearThree4n3n1n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11132 if(dError>0.)
11133 {
11134 f5pCumulants->SetBinError(27,pow(dError,0.5));
11135 }
11136 } // end of if(...)
11137 } // end of {
e1d101a6 11138 f5pCumulants->SetBinContent(28,f5pCorrelations->GetBinContent(28)-f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(5));
c10259fb 11139 {
11140 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
11141 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
11142 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
11143 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
11144 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
11145 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
11146 Double_t dSumWLinearFive6n4n6n3n1n = 0.; // sum of linear event weights for <4>
11147 Double_t dSumWQuadraticFive6n4n6n3n1n = 0.; // sum of quadratic event weights <4>
11148 Double_t dSpreadFive6n4n6n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11149 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11150 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11151 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
11152 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11153 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11154 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
11155 dSumWLinearFive6n4n6n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11156 dSumWQuadraticFive6n4n6n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11157 dSpreadFive6n4n6n3n1n = f5pCorrelations->GetBinError(28);
11158 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
11159 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
11160 pow(dSumWLinearFive6n4n6n3n1n,2.)>dSumWQuadraticFive6n4n6n3n1n)
11161 {
11162 Double_t dError = pow(f3pCorrelations->GetBinContent(9),2.)
11163 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
11164 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
11165 + pow(f2pCorrelations->GetBinContent(5),2.)
11166 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
11167 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
11168 + pow((pow(dSumWQuadraticFive6n4n6n3n1n,0.5)/dSumWLinearFive6n4n6n3n1n)
11169 * dSpreadFive6n4n6n3n1n*pow(pow(dSumWLinearFive6n4n6n3n1n,2.)/(pow(dSumWLinearFive6n4n6n3n1n,2.)-dSumWQuadraticFive6n4n6n3n1n),0.5),2.)
11170 + 2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(5)
11171 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11172 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,14))
11173 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(9))
11174 / (dSumWLinearTwo5n5n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11175 - 2.*f3pCorrelations->GetBinContent(9)
11176 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11177 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,84))
11178 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(28))
11179 / (dSumWLinearTwo5n5n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11180 - 2.*f2pCorrelations->GetBinContent(5)
11181 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11182 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,84))
11183 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(28))
11184 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n4n6n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11185 if(dError>0.)
11186 {
11187 f5pCumulants->SetBinError(28,pow(dError,0.5));
11188 }
11189 } // end of if(...)
11190 } // end of {
e1d101a6 11191 f5pCumulants->SetBinContent(29,f5pCorrelations->GetBinContent(29)-f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(6));
c10259fb 11192 {
11193 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11194 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11195 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11196 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
11197 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
11198 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
11199 Double_t dSumWLinearFive6n5n6n3n2n = 0.; // sum of linear event weights for <4>
11200 Double_t dSumWQuadraticFive6n5n6n3n2n = 0.; // sum of quadratic event weights <4>
11201 Double_t dSpreadFive6n5n6n3n2n = 0.; // weighted and biased estimator for sigma of <4>
11202 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11203 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11204 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11205 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11206 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11207 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
11208 dSumWLinearFive6n5n6n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11209 dSumWQuadraticFive6n5n6n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11210 dSpreadFive6n5n6n3n2n = f5pCorrelations->GetBinError(29);
11211 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11212 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
11213 pow(dSumWLinearFive6n5n6n3n2n,2.)>dSumWQuadraticFive6n5n6n3n2n)
11214 {
11215 Double_t dError = pow(f3pCorrelations->GetBinContent(7),2.)
11216 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11217 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11218 + pow(f2pCorrelations->GetBinContent(6),2.)
11219 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
11220 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
11221 + pow((pow(dSumWQuadraticFive6n5n6n3n2n,0.5)/dSumWLinearFive6n5n6n3n2n)
11222 * dSpreadFive6n5n6n3n2n*pow(pow(dSumWLinearFive6n5n6n3n2n,2.)/(pow(dSumWLinearFive6n5n6n3n2n,2.)-dSumWQuadraticFive6n5n6n3n2n),0.5),2.)
11223 + 2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(6)
11224 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11225 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,12))
11226 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(7))
11227 / (dSumWLinearTwo6n6n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11228 - 2.*f3pCorrelations->GetBinContent(7)
11229 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11230 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,85))
11231 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(29))
11232 / (dSumWLinearTwo6n6n*dSumWLinearFive6n5n6n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11233 - 2.*f2pCorrelations->GetBinContent(6)
11234 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11235 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,85))
11236 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(29))
11237 / (dSumWLinearThree5n3n2n*dSumWLinearFive6n5n6n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11238 if(dError>0.)
11239 {
11240 f5pCumulants->SetBinError(29,pow(dError,0.5));
11241 }
11242 } // end of if(...)
11243 } // end of {
e1d101a6 11244 f5pCumulants->SetBinContent(30,f5pCorrelations->GetBinContent(30)-f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(6));
c10259fb 11245 {
11246 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11247 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11248 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11249 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
11250 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
11251 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
11252 Double_t dSumWLinearFive6n5n6n4n1n = 0.; // sum of linear event weights for <4>
11253 Double_t dSumWQuadraticFive6n5n6n4n1n = 0.; // sum of quadratic event weights <4>
11254 Double_t dSpreadFive6n5n6n4n1n = 0.; // weighted and biased estimator for sigma of <4>
11255 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11256 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11257 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11258 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11259 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11260 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
11261 dSumWLinearFive6n5n6n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11262 dSumWQuadraticFive6n5n6n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11263 dSpreadFive6n5n6n4n1n = f5pCorrelations->GetBinError(30);
11264 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11265 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
11266 pow(dSumWLinearFive6n5n6n4n1n,2.)>dSumWQuadraticFive6n5n6n4n1n)
11267 {
11268 Double_t dError = pow(f3pCorrelations->GetBinContent(8),2.)
11269 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11270 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11271 + pow(f2pCorrelations->GetBinContent(6),2.)
11272 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
11273 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
11274 + pow((pow(dSumWQuadraticFive6n5n6n4n1n,0.5)/dSumWLinearFive6n5n6n4n1n)
11275 * dSpreadFive6n5n6n4n1n*pow(pow(dSumWLinearFive6n5n6n4n1n,2.)/(pow(dSumWLinearFive6n5n6n4n1n,2.)-dSumWQuadraticFive6n5n6n4n1n),0.5),2.)
11276 + 2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(6)
11277 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11278 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,13))
11279 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(8))
11280 / (dSumWLinearTwo6n6n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11281 - 2.*f3pCorrelations->GetBinContent(8)
11282 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11283 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,86))
11284 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(30))
11285 / (dSumWLinearTwo6n6n*dSumWLinearFive6n5n6n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11286 - 2.*f2pCorrelations->GetBinContent(6)
11287 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11288 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,86))
11289 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(30))
11290 / (dSumWLinearThree5n4n1n*dSumWLinearFive6n5n6n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11291 if(dError>0.)
11292 {
11293 f5pCumulants->SetBinError(30,pow(dError,0.5));
11294 }
11295 } // end of if(...)
11296 } // end of {
e1d101a6 11297 // d2) "Two distinct harmonics":
11298 f5pCumulants->SetBinContent(32,f5pCorrelations->GetBinContent(32)-3.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(1));
c10259fb 11299 {
11300 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11301 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11302 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11303 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11304 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11305 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11306 Double_t dSumWLinearFive2n1n1n1n1n = 0.; // sum of linear event weights for <4>
11307 Double_t dSumWQuadraticFive2n1n1n1n1n = 0.; // sum of quadratic event weights <4>
11308 Double_t dSpreadFive2n1n1n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11309 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11310 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11311 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11312 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11313 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11314 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11315 dSumWLinearFive2n1n1n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11316 dSumWQuadraticFive2n1n1n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11317 dSpreadFive2n1n1n1n1n = f5pCorrelations->GetBinError(32);
11318 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11319 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11320 pow(dSumWLinearFive2n1n1n1n1n,2.)>dSumWQuadraticFive2n1n1n1n1n)
11321 {
11322 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(1),2.)
11323 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11324 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11325 + 9.*pow(f2pCorrelations->GetBinContent(1),2.)
11326 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11327 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11328 + pow((pow(dSumWQuadraticFive2n1n1n1n1n,0.5)/dSumWLinearFive2n1n1n1n1n)
11329 * dSpreadFive2n1n1n1n1n*pow(pow(dSumWLinearFive2n1n1n1n1n,2.)/(pow(dSumWLinearFive2n1n1n1n1n,2.)-dSumWQuadraticFive2n1n1n1n1n),0.5),2.)
11330 + 9.*2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(1)
11331 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11332 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,7))
11333 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(1))
11334 / (dSumWLinearTwo1n1n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11335 - 3.*2.*f3pCorrelations->GetBinContent(1)
11336 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11337 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,87))
11338 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(32))
11339 / (dSumWLinearTwo1n1n*dSumWLinearFive2n1n1n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11340 - 3.*2.*f2pCorrelations->GetBinContent(1)
11341 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11342 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,87))
11343 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(32))
11344 / (dSumWLinearThree2n1n1n*dSumWLinearFive2n1n1n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11345 if(dError>0.)
11346 {
11347 f5pCumulants->SetBinError(32,pow(dError,0.5));
11348 }
11349 } // end of if(...)
11350 } // end of {
e1d101a6 11351 f5pCumulants->SetBinContent(33,f5pCorrelations->GetBinContent(33)-2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2));
c10259fb 11352 {
11353 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11354 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11355 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11356 Double_t dSumWLinearThree2n1n1n = 0.; // sum of linear event weights for <2>
11357 Double_t dSumWQuadraticThree2n1n1n = 0.; // sum of quadratic event weights <2>
11358 Double_t dSpreadThree2n1n1n = 0.; // weighted and biased estimator for sigma of <2>
11359 Double_t dSumWLinearFive2n2n2n1n1n = 0.; // sum of linear event weights for <4>
11360 Double_t dSumWQuadraticFive2n2n2n1n1n = 0.; // sum of quadratic event weights <4>
11361 Double_t dSpreadFive2n2n2n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11362 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11363 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11364 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11365 dSumWLinearThree2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11366 dSumWQuadraticThree2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11367 dSpreadThree2n1n1n = f3pCorrelations->GetBinError(1);
11368 dSumWLinearFive2n2n2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11369 dSumWQuadraticFive2n2n2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11370 dSpreadFive2n2n2n1n1n = f5pCorrelations->GetBinError(33);
11371 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11372 pow(dSumWLinearThree2n1n1n,2.)>dSumWQuadraticThree2n1n1n &&
11373 pow(dSumWLinearFive2n2n2n1n1n,2.)>dSumWQuadraticFive2n2n2n1n1n)
11374 {
11375 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(1),2.)
11376 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11377 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11378 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11379 * pow((pow(dSumWQuadraticThree2n1n1n,0.5)/dSumWLinearThree2n1n1n)
11380 * dSpreadThree2n1n1n*pow(pow(dSumWLinearThree2n1n1n,2.)/(pow(dSumWLinearThree2n1n1n,2.)-dSumWQuadraticThree2n1n1n),0.5),2.)
11381 + pow((pow(dSumWQuadraticFive2n2n2n1n1n,0.5)/dSumWLinearFive2n2n2n1n1n)
11382 * dSpreadFive2n2n2n1n1n*pow(pow(dSumWLinearFive2n2n2n1n1n,2.)/(pow(dSumWLinearFive2n2n2n1n1n,2.)-dSumWQuadraticFive2n2n2n1n1n),0.5),2.)
11383 + 4.*2.*f3pCorrelations->GetBinContent(1)*f2pCorrelations->GetBinContent(2)
11384 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11385 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,7))
11386 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(1))
11387 / (dSumWLinearTwo2n2n*dSumWLinearThree2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11388 - 2.*2.*f3pCorrelations->GetBinContent(1)
11389 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11390 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,88))
11391 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(33))
11392 / (dSumWLinearTwo2n2n*dSumWLinearFive2n2n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11393 - 2.*2.*f2pCorrelations->GetBinContent(2)
11394 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11395 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(7,88))
11396 - f3pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(33))
11397 / (dSumWLinearThree2n1n1n*dSumWLinearFive2n2n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11398 if(dError>0.)
11399 {
11400 f5pCumulants->SetBinError(33,pow(dError,0.5));
11401 }
11402 } // end of if(...)
11403 } // end of {
11404 f5pCumulants->SetBinContent(34,f5pCorrelations->GetBinContent(34));
11405 {
11406 Double_t dSumWLinear = 0.; // sum of linear event weights
11407 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11408 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11409 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11410 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11411 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11412 dSpread = f5pCorrelations->GetBinError(34);
11413 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11414 {
11415 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11416 f5pCumulants->SetBinError(34,dError);
11417 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11418 }
11419 f5pCumulants->SetBinContent(35,f5pCorrelations->GetBinContent(35));
11420 {
11421 Double_t dSumWLinear = 0.; // sum of linear event weights
11422 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11423 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11424 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11425 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11426 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11427 dSpread = f5pCorrelations->GetBinError(35);
11428 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11429 {
11430 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11431 f5pCumulants->SetBinError(35,dError);
11432 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11433 }
e1d101a6 11434 f5pCumulants->SetBinContent(36,f5pCorrelations->GetBinContent(36)-3.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(2));
c10259fb 11435 {
11436 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11437 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11438 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11439 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11440 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11441 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11442 Double_t dSumWLinearFive4n2n2n2n2n = 0.; // sum of linear event weights for <4>
11443 Double_t dSumWQuadraticFive4n2n2n2n2n = 0.; // sum of quadratic event weights <4>
11444 Double_t dSpreadFive4n2n2n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11445 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11446 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11447 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11448 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11449 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11450 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11451 dSumWLinearFive4n2n2n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11452 dSumWQuadraticFive4n2n2n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11453 dSpreadFive4n2n2n2n2n = f5pCorrelations->GetBinError(36);
11454 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11455 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11456 pow(dSumWLinearFive4n2n2n2n2n,2.)>dSumWQuadraticFive4n2n2n2n2n)
11457 {
11458 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(2),2.)
11459 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11460 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11461 + 9.*pow(f2pCorrelations->GetBinContent(2),2.)
11462 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11463 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11464 + pow((pow(dSumWQuadraticFive4n2n2n2n2n,0.5)/dSumWLinearFive4n2n2n2n2n)
11465 * dSpreadFive4n2n2n2n2n*pow(pow(dSumWLinearFive4n2n2n2n2n,2.)/(pow(dSumWLinearFive4n2n2n2n2n,2.)-dSumWQuadraticFive4n2n2n2n2n),0.5),2.)
11466 + 9.*2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(2)
11467 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11468 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,8))
11469 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(2))
11470 / (dSumWLinearTwo2n2n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11471 - 3.*2.*f3pCorrelations->GetBinContent(2)
11472 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11473 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,91))
11474 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(36))
11475 / (dSumWLinearTwo2n2n*dSumWLinearFive4n2n2n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11476 - 3.*2.*f2pCorrelations->GetBinContent(2)
11477 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11478 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,91))
11479 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(36))
11480 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n2n2n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11481 if(dError>0.)
11482 {
11483 f5pCumulants->SetBinError(36,pow(dError,0.5));
11484 }
11485 } // end of if(...)
11486 } // end of {
e1d101a6 11487 f5pCumulants->SetBinContent(37,f5pCorrelations->GetBinContent(37)-2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4));
c10259fb 11488 {
11489 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
11490 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
11491 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
11492 Double_t dSumWLinearThree4n2n2n = 0.; // sum of linear event weights for <2>
11493 Double_t dSumWQuadraticThree4n2n2n = 0.; // sum of quadratic event weights <2>
11494 Double_t dSpreadThree4n2n2n = 0.; // weighted and biased estimator for sigma of <2>
11495 Double_t dSumWLinearFive4n4n4n2n2n = 0.; // sum of linear event weights for <4>
11496 Double_t dSumWQuadraticFive4n4n4n2n2n = 0.; // sum of quadratic event weights <4>
11497 Double_t dSpreadFive4n4n4n2n2n = 0.; // weighted and biased estimator for sigma of <4>
11498 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11499 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11500 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
11501 dSumWLinearThree4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11502 dSumWQuadraticThree4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11503 dSpreadThree4n2n2n = f3pCorrelations->GetBinError(2);
11504 dSumWLinearFive4n4n4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11505 dSumWQuadraticFive4n4n4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11506 dSpreadFive4n4n4n2n2n = f5pCorrelations->GetBinError(37);
11507 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
11508 pow(dSumWLinearThree4n2n2n,2.)>dSumWQuadraticThree4n2n2n &&
11509 pow(dSumWLinearFive4n4n4n2n2n,2.)>dSumWQuadraticFive4n4n4n2n2n)
11510 {
11511 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(2),2.)
11512 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
11513 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
11514 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
11515 * pow((pow(dSumWQuadraticThree4n2n2n,0.5)/dSumWLinearThree4n2n2n)
11516 * dSpreadThree4n2n2n*pow(pow(dSumWLinearThree4n2n2n,2.)/(pow(dSumWLinearThree4n2n2n,2.)-dSumWQuadraticThree4n2n2n),0.5),2.)
11517 + pow((pow(dSumWQuadraticFive4n4n4n2n2n,0.5)/dSumWLinearFive4n4n4n2n2n)
11518 * dSpreadFive4n4n4n2n2n*pow(pow(dSumWLinearFive4n4n4n2n2n,2.)/(pow(dSumWLinearFive4n4n4n2n2n,2.)-dSumWQuadraticFive4n4n4n2n2n),0.5),2.)
11519 + 4.*2.*f3pCorrelations->GetBinContent(2)*f2pCorrelations->GetBinContent(4)
11520 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11521 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,8))
11522 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(2))
11523 / (dSumWLinearTwo4n4n*dSumWLinearThree4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11524 - 2.*2.*f3pCorrelations->GetBinContent(2)
11525 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11526 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,92))
11527 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(37))
11528 / (dSumWLinearTwo4n4n*dSumWLinearFive4n4n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11529 - 2.*2.*f2pCorrelations->GetBinContent(4)
11530 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11531 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(8,92))
11532 - f3pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(37))
11533 / (dSumWLinearThree4n2n2n*dSumWLinearFive4n4n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11534 if(dError>0.)
11535 {
11536 f5pCumulants->SetBinError(37,pow(dError,0.5));
11537 }
11538 } // end of if(...)
11539 } // end of {
e1d101a6 11540 f5pCumulants->SetBinContent(38,f5pCorrelations->GetBinContent(38)-3.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(3));
c10259fb 11541 {
11542 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11543 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11544 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11545 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
11546 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
11547 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
11548 Double_t dSumWLinearFive6n3n3n3n3n = 0.; // sum of linear event weights for <4>
11549 Double_t dSumWQuadraticFive6n3n3n3n3n = 0.; // sum of quadratic event weights <4>
11550 Double_t dSpreadFive6n3n3n3n3n = 0.; // weighted and biased estimator for sigma of <4>
11551 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11552 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11553 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11554 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11555 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11556 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
11557 dSumWLinearFive6n3n3n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11558 dSumWQuadraticFive6n3n3n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11559 dSpreadFive6n3n3n3n3n = f5pCorrelations->GetBinError(38);
11560 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11561 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
11562 pow(dSumWLinearFive6n3n3n3n3n,2.)>dSumWQuadraticFive6n3n3n3n3n)
11563 {
11564 Double_t dError = 9.*pow(f3pCorrelations->GetBinContent(3),2.)
11565 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11566 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11567 + 9.*pow(f2pCorrelations->GetBinContent(3),2.)
11568 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
11569 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
11570 + pow((pow(dSumWQuadraticFive6n3n3n3n3n,0.5)/dSumWLinearFive6n3n3n3n3n)
11571 * dSpreadFive6n3n3n3n3n*pow(pow(dSumWLinearFive6n3n3n3n3n,2.)/(pow(dSumWLinearFive6n3n3n3n3n,2.)-dSumWQuadraticFive6n3n3n3n3n),0.5),2.)
11572 + 9.*2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(3)
11573 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11574 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,9))
11575 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(3))
11576 / (dSumWLinearTwo3n3n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11577 - 3.*2.*f3pCorrelations->GetBinContent(3)
11578 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11579 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,93))
11580 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(38))
11581 / (dSumWLinearTwo3n3n*dSumWLinearFive6n3n3n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11582 - 3.*2.*f2pCorrelations->GetBinContent(3)
11583 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11584 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,93))
11585 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(38))
11586 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n3n3n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11587 if(dError>0.)
11588 {
11589 f5pCumulants->SetBinError(38,pow(dError,0.5));
11590 }
11591 } // end of if(...)
11592 } // end of {
11593 f5pCumulants->SetBinContent(39,f5pCorrelations->GetBinContent(39));
11594 {
11595 Double_t dSumWLinear = 0.; // sum of linear event weights
11596 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11597 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11598 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11599 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11600 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11601 dSpread = f5pCorrelations->GetBinError(39);
11602 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11603 {
11604 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11605 f5pCumulants->SetBinError(39,dError);
11606 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11607 }
e1d101a6 11608 f5pCumulants->SetBinContent(40,f5pCorrelations->GetBinContent(40)-2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6));
c10259fb 11609 {
11610 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
11611 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
11612 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
11613 Double_t dSumWLinearThree6n3n3n = 0.; // sum of linear event weights for <2>
11614 Double_t dSumWQuadraticThree6n3n3n = 0.; // sum of quadratic event weights <2>
11615 Double_t dSpreadThree6n3n3n = 0.; // weighted and biased estimator for sigma of <2>
11616 Double_t dSumWLinearFive6n6n6n3n3n = 0.; // sum of linear event weights for <4>
11617 Double_t dSumWQuadraticFive6n6n6n3n3n = 0.; // sum of quadratic event weights <4>
11618 Double_t dSpreadFive6n6n6n3n3n = 0.; // weighted and biased estimator for sigma of <4>
11619 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11620 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11621 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
11622 dSumWLinearThree6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11623 dSumWQuadraticThree6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11624 dSpreadThree6n3n3n = f3pCorrelations->GetBinError(3);
11625 dSumWLinearFive6n6n6n3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11626 dSumWQuadraticFive6n6n6n3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11627 dSpreadFive6n6n6n3n3n = f5pCorrelations->GetBinError(40);
11628 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
11629 pow(dSumWLinearThree6n3n3n,2.)>dSumWQuadraticThree6n3n3n &&
11630 pow(dSumWLinearFive6n6n6n3n3n,2.)>dSumWQuadraticFive6n6n6n3n3n)
11631 {
11632 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(3),2.)
11633 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
11634 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
11635 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
11636 * pow((pow(dSumWQuadraticThree6n3n3n,0.5)/dSumWLinearThree6n3n3n)
11637 * dSpreadThree6n3n3n*pow(pow(dSumWLinearThree6n3n3n,2.)/(pow(dSumWLinearThree6n3n3n,2.)-dSumWQuadraticThree6n3n3n),0.5),2.)
11638 + pow((pow(dSumWQuadraticFive6n6n6n3n3n,0.5)/dSumWLinearFive6n6n6n3n3n)
11639 * dSpreadFive6n6n6n3n3n*pow(pow(dSumWLinearFive6n6n6n3n3n,2.)/(pow(dSumWLinearFive6n6n6n3n3n,2.)-dSumWQuadraticFive6n6n6n3n3n),0.5),2.)
11640 + 4.*2.*f3pCorrelations->GetBinContent(3)*f2pCorrelations->GetBinContent(6)
11641 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11642 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,9))
11643 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(3))
11644 / (dSumWLinearTwo6n6n*dSumWLinearThree6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11645 - 2.*2.*f3pCorrelations->GetBinContent(3)
11646 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11647 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,95))
11648 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(40))
11649 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11650 - 2.*2.*f2pCorrelations->GetBinContent(6)
11651 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11652 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(9,95))
11653 - f3pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(40))
11654 / (dSumWLinearThree6n3n3n*dSumWLinearFive6n6n6n3n3n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11655 if(dError>0.)
11656 {
11657 f5pCumulants->SetBinError(40,pow(dError,0.5));
11658 }
11659 } // end of if(...)
11660 } // end of {
11661
e1d101a6 11662 // d2) "Three distinct harmonics":
11663 f5pCumulants->SetBinContent(42,f5pCorrelations->GetBinContent(42)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1));
c10259fb 11664 {
11665 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11666 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11667 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11668 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11669 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11670 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11671 Double_t dSumWLinearFive3n1n2n1n1n = 0.; // sum of linear event weights for <4>
11672 Double_t dSumWQuadraticFive3n1n2n1n1n = 0.; // sum of quadratic event weights <4>
11673 Double_t dSpreadFive3n1n2n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11674 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11675 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11676 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11677 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11678 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11679 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11680 dSumWLinearFive3n1n2n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11681 dSumWQuadraticFive3n1n2n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11682 dSpreadFive3n1n2n1n1n = f5pCorrelations->GetBinError(42);
11683 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11684 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11685 pow(dSumWLinearFive3n1n2n1n1n,2.)>dSumWQuadraticFive3n1n2n1n1n)
11686 {
11687 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11688 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11689 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11690 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
11691 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11692 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11693 + pow((pow(dSumWQuadraticFive3n1n2n1n1n,0.5)/dSumWLinearFive3n1n2n1n1n)
11694 * dSpreadFive3n1n2n1n1n*pow(pow(dSumWLinearFive3n1n2n1n1n,2.)/(pow(dSumWLinearFive3n1n2n1n1n,2.)-dSumWQuadraticFive3n1n2n1n1n),0.5),2.)
11695 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(1)
11696 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11697 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,10))
11698 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(5))
11699 / (dSumWLinearTwo1n1n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11700 - 2.*2.*f3pCorrelations->GetBinContent(5)
11701 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11702 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,96))
11703 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(42))
11704 / (dSumWLinearTwo1n1n*dSumWLinearFive3n1n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11705 - 2.*2.*f2pCorrelations->GetBinContent(1)
11706 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11707 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,96))
11708 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(42))
11709 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n1n2n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11710 if(dError>0.)
11711 {
11712 f5pCumulants->SetBinError(42,pow(dError,0.5));
11713 }
11714 } // end of if(...)
11715 } // end of {
e1d101a6 11716 f5pCumulants->SetBinContent(43,f5pCorrelations->GetBinContent(43)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2));
c10259fb 11717 {
11718 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
11719 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
11720 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
11721 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11722 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11723 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11724 Double_t dSumWLinearFive3n2n2n2n1n = 0.; // sum of linear event weights for <4>
11725 Double_t dSumWQuadraticFive3n2n2n2n1n = 0.; // sum of quadratic event weights <4>
11726 Double_t dSpreadFive3n2n2n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11727 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11728 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11729 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
11730 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11731 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11732 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11733 dSumWLinearFive3n2n2n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11734 dSumWQuadraticFive3n2n2n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11735 dSpreadFive3n2n2n2n1n = f5pCorrelations->GetBinError(43);
11736 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
11737 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11738 pow(dSumWLinearFive3n2n2n2n1n,2.)>dSumWQuadraticFive3n2n2n2n1n)
11739 {
11740 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11741 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
11742 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
11743 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
11744 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11745 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11746 + pow((pow(dSumWQuadraticFive3n2n2n2n1n,0.5)/dSumWLinearFive3n2n2n2n1n)
11747 * dSpreadFive3n2n2n2n1n*pow(pow(dSumWLinearFive3n2n2n2n1n,2.)/(pow(dSumWLinearFive3n2n2n2n1n,2.)-dSumWQuadraticFive3n2n2n2n1n),0.5),2.)
11748 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(2)
11749 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11750 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,10))
11751 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(5))
11752 / (dSumWLinearTwo2n2n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11753 - 2.*2.*f3pCorrelations->GetBinContent(5)
11754 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11755 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,97))
11756 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(43))
11757 / (dSumWLinearTwo2n2n*dSumWLinearFive3n2n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11758 - 2.*2.*f2pCorrelations->GetBinContent(2)
11759 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11760 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,97))
11761 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(43))
11762 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n2n2n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11763 if(dError>0.)
11764 {
11765 f5pCumulants->SetBinError(43,pow(dError,0.5));
11766 }
11767 } // end of if(...)
11768 } // end of {
e1d101a6 11769 f5pCumulants->SetBinContent(44,f5pCorrelations->GetBinContent(44)-2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3));
c10259fb 11770 {
11771 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11772 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11773 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11774 Double_t dSumWLinearThree3n2n1n = 0.; // sum of linear event weights for <2>
11775 Double_t dSumWQuadraticThree3n2n1n = 0.; // sum of quadratic event weights <2>
11776 Double_t dSpreadThree3n2n1n = 0.; // weighted and biased estimator for sigma of <2>
11777 Double_t dSumWLinearFive3n3n3n2n1n = 0.; // sum of linear event weights for <4>
11778 Double_t dSumWQuadraticFive3n3n3n2n1n = 0.; // sum of quadratic event weights <4>
11779 Double_t dSpreadFive3n3n3n2n1n = 0.; // weighted and biased estimator for sigma of <4>
11780 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11781 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11782 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11783 dSumWLinearThree3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11784 dSumWQuadraticThree3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11785 dSpreadThree3n2n1n = f3pCorrelations->GetBinError(5);
11786 dSumWLinearFive3n3n3n2n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11787 dSumWQuadraticFive3n3n3n2n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11788 dSpreadFive3n3n3n2n1n = f5pCorrelations->GetBinError(44);
11789 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11790 pow(dSumWLinearThree3n2n1n,2.)>dSumWQuadraticThree3n2n1n &&
11791 pow(dSumWLinearFive3n3n3n2n1n,2.)>dSumWQuadraticFive3n3n3n2n1n)
11792 {
11793 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(5),2.)
11794 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11795 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11796 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
11797 * pow((pow(dSumWQuadraticThree3n2n1n,0.5)/dSumWLinearThree3n2n1n)
11798 * dSpreadThree3n2n1n*pow(pow(dSumWLinearThree3n2n1n,2.)/(pow(dSumWLinearThree3n2n1n,2.)-dSumWQuadraticThree3n2n1n),0.5),2.)
11799 + pow((pow(dSumWQuadraticFive3n3n3n2n1n,0.5)/dSumWLinearFive3n3n3n2n1n)
11800 * dSpreadFive3n3n3n2n1n*pow(pow(dSumWLinearFive3n3n3n2n1n,2.)/(pow(dSumWLinearFive3n3n3n2n1n,2.)-dSumWQuadraticFive3n3n3n2n1n),0.5),2.)
11801 + 4.*2.*f3pCorrelations->GetBinContent(5)*f2pCorrelations->GetBinContent(3)
11802 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11803 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,10))
11804 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(5))
11805 / (dSumWLinearTwo3n3n*dSumWLinearThree3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11806 - 2.*2.*f3pCorrelations->GetBinContent(5)
11807 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11808 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,98))
11809 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(44))
11810 / (dSumWLinearTwo3n3n*dSumWLinearFive3n3n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11811 - 2.*2.*f2pCorrelations->GetBinContent(3)
11812 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11813 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(10,98))
11814 - f3pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(44))
11815 / (dSumWLinearThree3n2n1n*dSumWLinearFive3n3n3n2n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11816 if(dError>0.)
11817 {
11818 f5pCumulants->SetBinError(44,pow(dError,0.5));
11819 }
11820 } // end of if(...)
11821 } // end of {
e1d101a6 11822 f5pCumulants->SetBinContent(45,f5pCorrelations->GetBinContent(45)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1));
c10259fb 11823 {
11824 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
11825 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
11826 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
11827 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11828 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11829 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11830 Double_t dSumWLinearFive4n1n3n1n1n = 0.; // sum of linear event weights for <4>
11831 Double_t dSumWQuadraticFive4n1n3n1n1n = 0.; // sum of quadratic event weights <4>
11832 Double_t dSpreadFive4n1n3n1n1n = 0.; // weighted and biased estimator for sigma of <4>
11833 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11834 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11835 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
11836 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11837 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11838 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11839 dSumWLinearFive4n1n3n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11840 dSumWQuadraticFive4n1n3n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11841 dSpreadFive4n1n3n1n1n = f5pCorrelations->GetBinError(45);
11842 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
11843 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11844 pow(dSumWLinearFive4n1n3n1n1n,2.)>dSumWQuadraticFive4n1n3n1n1n)
11845 {
11846 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11847 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
11848 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
11849 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
11850 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11851 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11852 + pow((pow(dSumWQuadraticFive4n1n3n1n1n,0.5)/dSumWLinearFive4n1n3n1n1n)
11853 * dSpreadFive4n1n3n1n1n*pow(pow(dSumWLinearFive4n1n3n1n1n,2.)/(pow(dSumWLinearFive4n1n3n1n1n,2.)-dSumWQuadraticFive4n1n3n1n1n),0.5),2.)
11854 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(1)
11855 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11856 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,11))
11857 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(6))
11858 / (dSumWLinearTwo1n1n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11859 - 2.*2.*f3pCorrelations->GetBinContent(6)
11860 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11861 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,99))
11862 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(45))
11863 / (dSumWLinearTwo1n1n*dSumWLinearFive4n1n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11864 - 2.*2.*f2pCorrelations->GetBinContent(1)
11865 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11866 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,99))
11867 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(45))
11868 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n1n3n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11869 if(dError>0.)
11870 {
11871 f5pCumulants->SetBinError(45,pow(dError,0.5));
11872 }
11873 } // end of if(...)
11874 } // end of {
11875 f5pCumulants->SetBinContent(46,f5pCorrelations->GetBinContent(46));
11876 {
11877 Double_t dSumWLinear = 0.; // sum of linear event weights
11878 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11879 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11880 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11881 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11882 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11883 dSpread = f5pCorrelations->GetBinError(46);
11884 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11885 {
11886 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11887 f5pCumulants->SetBinError(46,dError);
11888 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11889 }
e1d101a6 11890 f5pCumulants->SetBinContent(47,f5pCorrelations->GetBinContent(47)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3));
c10259fb 11891 {
11892 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
11893 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
11894 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
11895 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11896 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11897 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11898 Double_t dSumWLinearFive4n3n3n3n1n = 0.; // sum of linear event weights for <4>
11899 Double_t dSumWQuadraticFive4n3n3n3n1n = 0.; // sum of quadratic event weights <4>
11900 Double_t dSpreadFive4n3n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11901 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11902 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11903 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
11904 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11905 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11906 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11907 dSumWLinearFive4n3n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11908 dSumWQuadraticFive4n3n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11909 dSpreadFive4n3n3n3n1n = f5pCorrelations->GetBinError(47);
11910 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
11911 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11912 pow(dSumWLinearFive4n3n3n3n1n,2.)>dSumWQuadraticFive4n3n3n3n1n)
11913 {
11914 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11915 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
11916 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
11917 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
11918 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11919 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11920 + pow((pow(dSumWQuadraticFive4n3n3n3n1n,0.5)/dSumWLinearFive4n3n3n3n1n)
11921 * dSpreadFive4n3n3n3n1n*pow(pow(dSumWLinearFive4n3n3n3n1n,2.)/(pow(dSumWLinearFive4n3n3n3n1n,2.)-dSumWQuadraticFive4n3n3n3n1n),0.5),2.)
11922 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(3)
11923 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11924 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,11))
11925 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(6))
11926 / (dSumWLinearTwo3n3n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11927 - 2.*2.*f3pCorrelations->GetBinContent(6)
11928 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11929 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,101))
11930 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(47))
11931 / (dSumWLinearTwo3n3n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
11932 - 2.*2.*f2pCorrelations->GetBinContent(3)
11933 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
11934 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,101))
11935 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(47))
11936 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
11937 if(dError>0.)
11938 {
11939 f5pCumulants->SetBinError(47,pow(dError,0.5));
11940 }
11941 } // end of if(...)
11942 } // end of {
11943 f5pCumulants->SetBinContent(48,f5pCorrelations->GetBinContent(48));
11944 {
11945 Double_t dSumWLinear = 0.; // sum of linear event weights
11946 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
11947 Double_t dSpread = 0.; // weighted and biased estimator for sigma
11948 Double_t dError = 0.; // weighted and unbiased estimator for sigma
11949 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11950 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11951 dSpread = f5pCorrelations->GetBinError(48);
11952 if(pow(dSumWLinear,2.)>dSumWQuadratic)
11953 {
11954 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
11955 f5pCumulants->SetBinError(48,dError);
11956 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
11957 }
e1d101a6 11958 f5pCumulants->SetBinContent(49,f5pCorrelations->GetBinContent(49)-2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4));
c10259fb 11959 {
11960 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
11961 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
11962 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
11963 Double_t dSumWLinearThree4n3n1n = 0.; // sum of linear event weights for <2>
11964 Double_t dSumWQuadraticThree4n3n1n = 0.; // sum of quadratic event weights <2>
11965 Double_t dSpreadThree4n3n1n = 0.; // weighted and biased estimator for sigma of <2>
11966 Double_t dSumWLinearFive4n3n3n3n1n = 0.; // sum of linear event weights for <4>
11967 Double_t dSumWQuadraticFive4n3n3n3n1n = 0.; // sum of quadratic event weights <4>
11968 Double_t dSpreadFive4n3n3n3n1n = 0.; // weighted and biased estimator for sigma of <4>
11969 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
11970 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
11971 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
11972 dSumWLinearThree4n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
11973 dSumWQuadraticThree4n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
11974 dSpreadThree4n3n1n = f3pCorrelations->GetBinError(6);
11975 dSumWLinearFive4n3n3n3n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
11976 dSumWQuadraticFive4n3n3n3n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
11977 dSpreadFive4n3n3n3n1n = f5pCorrelations->GetBinError(49);
11978 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
11979 pow(dSumWLinearThree4n3n1n,2.)>dSumWQuadraticThree4n3n1n &&
11980 pow(dSumWLinearFive4n3n3n3n1n,2.)>dSumWQuadraticFive4n3n3n3n1n)
11981 {
11982 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(6),2.)
11983 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
11984 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
11985 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
11986 * pow((pow(dSumWQuadraticThree4n3n1n,0.5)/dSumWLinearThree4n3n1n)
11987 * dSpreadThree4n3n1n*pow(pow(dSumWLinearThree4n3n1n,2.)/(pow(dSumWLinearThree4n3n1n,2.)-dSumWQuadraticThree4n3n1n),0.5),2.)
11988 + pow((pow(dSumWQuadraticFive4n3n3n3n1n,0.5)/dSumWLinearFive4n3n3n3n1n)
11989 * dSpreadFive4n3n3n3n1n*pow(pow(dSumWLinearFive4n3n3n3n1n,2.)/(pow(dSumWLinearFive4n3n3n3n1n,2.)-dSumWQuadraticFive4n3n3n3n1n),0.5),2.)
11990 + 4.*2.*f3pCorrelations->GetBinContent(6)*f2pCorrelations->GetBinContent(4)
11991 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
11992 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,11))
11993 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(6))
11994 / (dSumWLinearTwo4n4n*dSumWLinearThree4n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
11995 - 2.*2.*f3pCorrelations->GetBinContent(6)
11996 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
11997 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,103))
11998 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(49))
11999 / (dSumWLinearTwo4n4n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12000 - 2.*2.*f2pCorrelations->GetBinContent(4)
12001 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12002 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(11,103))
12003 - f3pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(49))
12004 / (dSumWLinearThree4n3n1n*dSumWLinearFive4n3n3n3n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12005 if(dError>0.)
12006 {
12007 f5pCumulants->SetBinError(49,pow(dError,0.5));
12008 }
12009 } // end of if(...)
12010 } // end of {
12011 f5pCumulants->SetBinContent(50,f5pCorrelations->GetBinContent(50));
12012 {
12013 Double_t dSumWLinear = 0.; // sum of linear event weights
12014 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12015 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12016 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12017 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12018 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12019 dSpread = f5pCorrelations->GetBinError(50);
12020 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12021 {
12022 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12023 f5pCumulants->SetBinError(50,dError);
12024 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12025 }
12026 f5pCumulants->SetBinContent(51,f5pCorrelations->GetBinContent(51));
12027 {
12028 Double_t dSumWLinear = 0.; // sum of linear event weights
12029 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12030 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12031 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12032 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12033 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12034 dSpread = f5pCorrelations->GetBinError(51);
12035 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12036 {
12037 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12038 f5pCumulants->SetBinError(51,dError);
12039 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12040 }
e1d101a6 12041 f5pCumulants->SetBinContent(52,f5pCorrelations->GetBinContent(52)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(2));
c10259fb 12042 {
12043 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
12044 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
12045 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
12046 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12047 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12048 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12049 Double_t dSumWLinearFive5n2n3n2n2n = 0.; // sum of linear event weights for <4>
12050 Double_t dSumWQuadraticFive5n2n3n2n2n = 0.; // sum of quadratic event weights <4>
12051 Double_t dSpreadFive5n2n3n2n2n = 0.; // weighted and biased estimator for sigma of <4>
12052 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12053 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12054 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
12055 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12056 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12057 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12058 dSumWLinearFive5n2n3n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12059 dSumWQuadraticFive5n2n3n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12060 dSpreadFive5n2n3n2n2n = f5pCorrelations->GetBinError(52);
12061 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
12062 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12063 pow(dSumWLinearFive5n2n3n2n2n,2.)>dSumWQuadraticFive5n2n3n2n2n)
12064 {
12065 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12066 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
12067 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
12068 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
12069 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12070 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12071 + pow((pow(dSumWQuadraticFive5n2n3n2n2n,0.5)/dSumWLinearFive5n2n3n2n2n)
12072 * dSpreadFive5n2n3n2n2n*pow(pow(dSumWLinearFive5n2n3n2n2n,2.)/(pow(dSumWLinearFive5n2n3n2n2n,2.)-dSumWQuadraticFive5n2n3n2n2n),0.5),2.)
12073 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(2)
12074 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12075 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,12))
12076 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(7))
12077 / (dSumWLinearTwo2n2n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12078 - 2.*2.*f3pCorrelations->GetBinContent(7)
12079 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12080 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,106))
12081 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(52))
12082 / (dSumWLinearTwo2n2n*dSumWLinearFive5n2n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12083 - 2.*2.*f2pCorrelations->GetBinContent(2)
12084 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12085 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,106))
12086 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(52))
12087 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n2n3n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12088 if(dError>0.)
12089 {
12090 f5pCumulants->SetBinError(52,pow(dError,0.5));
12091 }
12092 } // end of if(...)
12093 } // end of {
e1d101a6 12094 f5pCumulants->SetBinContent(53,f5pCorrelations->GetBinContent(53)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(3));
c10259fb 12095 {
12096 Double_t dSumWLinearTwo3n3n = 0.; // sum of linear event weights for <2>
12097 Double_t dSumWQuadraticTwo3n3n = 0.; // sum of quadratic event weights <2>
12098 Double_t dSpreadTwo3n3n = 0.; // weighted and biased estimator for sigma of <2>
12099 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12100 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12101 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12102 Double_t dSumWLinearFive5n3n3n3n2n = 0.; // sum of linear event weights for <4>
12103 Double_t dSumWQuadraticFive5n3n3n3n2n = 0.; // sum of quadratic event weights <4>
12104 Double_t dSpreadFive5n3n3n3n2n = 0.; // weighted and biased estimator for sigma of <4>
12105 dSumWLinearTwo3n3n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12106 dSumWQuadraticTwo3n3n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12107 dSpreadTwo3n3n = f2pCorrelations->GetBinError(3);
12108 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12109 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12110 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12111 dSumWLinearFive5n3n3n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12112 dSumWQuadraticFive5n3n3n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12113 dSpreadFive5n3n3n3n2n = f5pCorrelations->GetBinError(53);
12114 if(pow(dSumWLinearTwo3n3n,2.)>dSumWQuadraticTwo3n3n &&
12115 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12116 pow(dSumWLinearFive5n3n3n3n2n,2.)>dSumWQuadraticFive5n3n3n3n2n)
12117 {
12118 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12119 * pow((pow(dSumWQuadraticTwo3n3n,0.5)/dSumWLinearTwo3n3n)
12120 * dSpreadTwo3n3n*pow(pow(dSumWLinearTwo3n3n,2.)/(pow(dSumWLinearTwo3n3n,2.)-dSumWQuadraticTwo3n3n),0.5),2.)
12121 + 4.*pow(f2pCorrelations->GetBinContent(3),2.)
12122 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12123 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12124 + pow((pow(dSumWQuadraticFive5n3n3n3n2n,0.5)/dSumWLinearFive5n3n3n3n2n)
12125 * dSpreadFive5n3n3n3n2n*pow(pow(dSumWLinearFive5n3n3n3n2n,2.)/(pow(dSumWLinearFive5n3n3n3n2n,2.)-dSumWQuadraticFive5n3n3n3n2n),0.5),2.)
12126 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(3)
12127 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12128 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,12))
12129 - f2pCorrelations->GetBinContent(3)*f3pCorrelations->GetBinContent(7))
12130 / (dSumWLinearTwo3n3n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12131 - 2.*2.*f3pCorrelations->GetBinContent(7)
12132 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12133 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(3,107))
12134 - f2pCorrelations->GetBinContent(3)*f5pCorrelations->GetBinContent(53))
12135 / (dSumWLinearTwo3n3n*dSumWLinearFive5n3n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12136 - 2.*2.*f2pCorrelations->GetBinContent(3)
12137 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12138 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,107))
12139 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(53))
12140 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n3n3n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12141 if(dError>0.)
12142 {
12143 f5pCumulants->SetBinError(53,pow(dError,0.5));
12144 }
12145 } // end of if(...)
12146 } // end of {
12147 f5pCumulants->SetBinContent(54,f5pCorrelations->GetBinContent(54)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(1));
12148 {
12149 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
12150 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
12151 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
12152 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12153 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12154 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12155 Double_t dSumWLinearFive5n1n4n1n1n = 0.; // sum of linear event weights for <4>
12156 Double_t dSumWQuadraticFive5n1n4n1n1n = 0.; // sum of quadratic event weights <4>
12157 Double_t dSpreadFive5n1n4n1n1n = 0.; // weighted and biased estimator for sigma of <4>
12158 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12159 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12160 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
12161 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12162 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12163 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12164 dSumWLinearFive5n1n4n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12165 dSumWQuadraticFive5n1n4n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12166 dSpreadFive5n1n4n1n1n = f5pCorrelations->GetBinError(54);
12167 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
12168 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12169 pow(dSumWLinearFive5n1n4n1n1n,2.)>dSumWQuadraticFive5n1n4n1n1n)
12170 {
12171 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12172 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
12173 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
12174 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
12175 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12176 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12177 + pow((pow(dSumWQuadraticFive5n1n4n1n1n,0.5)/dSumWLinearFive5n1n4n1n1n)
12178 * dSpreadFive5n1n4n1n1n*pow(pow(dSumWLinearFive5n1n4n1n1n,2.)/(pow(dSumWLinearFive5n1n4n1n1n,2.)-dSumWQuadraticFive5n1n4n1n1n),0.5),2.)
12179 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(1)
12180 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12181 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,13))
12182 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(8))
12183 / (dSumWLinearTwo1n1n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12184 - 2.*2.*f3pCorrelations->GetBinContent(8)
12185 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12186 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,108))
12187 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(54))
12188 / (dSumWLinearTwo1n1n*dSumWLinearFive5n1n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12189 - 2.*2.*f2pCorrelations->GetBinContent(1)
12190 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12191 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,108))
12192 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(54))
12193 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n1n4n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12194 if(dError>0.)
12195 {
12196 f5pCumulants->SetBinError(54,pow(dError,0.5));
12197 }
12198 } // end of if(...)
12199 } // end of {
12200
12201 f5pCumulants->SetBinContent(55,f5pCorrelations->GetBinContent(55));
12202 {
12203 Double_t dSumWLinear = 0.; // sum of linear event weights
12204 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12205 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12206 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12207 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12208 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12209 dSpread = f5pCorrelations->GetBinError(55);
12210 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12211 {
12212 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12213 f5pCumulants->SetBinError(55,dError);
12214 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12215 }
12216 f5pCumulants->SetBinContent(56,f5pCorrelations->GetBinContent(56)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(4));
12217 {
12218 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12219 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12220 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12221 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12222 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12223 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12224 Double_t dSumWLinearFive5n4n4n4n1n = 0.; // sum of linear event weights for <4>
12225 Double_t dSumWQuadraticFive5n4n4n4n1n = 0.; // sum of quadratic event weights <4>
12226 Double_t dSpreadFive5n4n4n4n1n = 0.; // weighted and biased estimator for sigma of <4>
12227 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12228 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12229 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12230 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12231 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12232 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12233 dSumWLinearFive5n4n4n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12234 dSumWQuadraticFive5n4n4n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12235 dSpreadFive5n4n4n4n1n = f5pCorrelations->GetBinError(56);
12236 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12237 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12238 pow(dSumWLinearFive5n4n4n4n1n,2.)>dSumWQuadraticFive5n4n4n4n1n)
12239 {
12240 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12241 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12242 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12243 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12244 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12245 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12246 + pow((pow(dSumWQuadraticFive5n4n4n4n1n,0.5)/dSumWLinearFive5n4n4n4n1n)
12247 * dSpreadFive5n4n4n4n1n*pow(pow(dSumWLinearFive5n4n4n4n1n,2.)/(pow(dSumWLinearFive5n4n4n4n1n,2.)-dSumWQuadraticFive5n4n4n4n1n),0.5),2.)
12248 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(4)
12249 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12250 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,13))
12251 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(8))
12252 / (dSumWLinearTwo4n4n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12253 - 2.*2.*f3pCorrelations->GetBinContent(8)
12254 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12255 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,110))
12256 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(56))
12257 / (dSumWLinearTwo4n4n*dSumWLinearFive5n4n4n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12258 - 2.*2.*f2pCorrelations->GetBinContent(4)
12259 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12260 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,110))
12261 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(56))
12262 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n4n4n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12263 if(dError>0.)
12264 {
12265 f5pCumulants->SetBinError(56,pow(dError,0.5));
12266 }
12267 } // end of if(...)
12268 } // end of {
12269 f5pCumulants->SetBinContent(57,f5pCorrelations->GetBinContent(57));
12270 {
12271 Double_t dSumWLinear = 0.; // sum of linear event weights
12272 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12273 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12274 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12275 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12276 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12277 dSpread = f5pCorrelations->GetBinError(57);
12278 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12279 {
12280 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12281 f5pCumulants->SetBinError(57,dError);
12282 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12283 }
12284 f5pCumulants->SetBinContent(58,f5pCorrelations->GetBinContent(58));
12285 {
12286 Double_t dSumWLinear = 0.; // sum of linear event weights
12287 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12288 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12289 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12290 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12291 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12292 dSpread = f5pCorrelations->GetBinError(58);
12293 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12294 {
12295 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12296 f5pCumulants->SetBinError(58,dError);
12297 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12298 }
e1d101a6 12299 f5pCumulants->SetBinContent(59,f5pCorrelations->GetBinContent(59)-2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(5));
c10259fb 12300 {
12301 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12302 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12303 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12304 Double_t dSumWLinearThree5n3n2n = 0.; // sum of linear event weights for <2>
12305 Double_t dSumWQuadraticThree5n3n2n = 0.; // sum of quadratic event weights <2>
12306 Double_t dSpreadThree5n3n2n = 0.; // weighted and biased estimator for sigma of <2>
12307 Double_t dSumWLinearFive5n5n5n3n2n = 0.; // sum of linear event weights for <4>
12308 Double_t dSumWQuadraticFive5n5n5n3n2n = 0.; // sum of quadratic event weights <4>
12309 Double_t dSpreadFive5n5n5n3n2n = 0.; // weighted and biased estimator for sigma of <4>
12310 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12311 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12312 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12313 dSumWLinearThree5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12314 dSumWQuadraticThree5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12315 dSpreadThree5n3n2n = f3pCorrelations->GetBinError(7);
12316 dSumWLinearFive5n5n5n3n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12317 dSumWQuadraticFive5n5n5n3n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12318 dSpreadFive5n5n5n3n2n = f5pCorrelations->GetBinError(59);
12319 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12320 pow(dSumWLinearThree5n3n2n,2.)>dSumWQuadraticThree5n3n2n &&
12321 pow(dSumWLinearFive5n5n5n3n2n,2.)>dSumWQuadraticFive5n5n5n3n2n)
12322 {
12323 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(7),2.)
12324 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12325 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12326 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12327 * pow((pow(dSumWQuadraticThree5n3n2n,0.5)/dSumWLinearThree5n3n2n)
12328 * dSpreadThree5n3n2n*pow(pow(dSumWLinearThree5n3n2n,2.)/(pow(dSumWLinearThree5n3n2n,2.)-dSumWQuadraticThree5n3n2n),0.5),2.)
12329 + pow((pow(dSumWQuadraticFive5n5n5n3n2n,0.5)/dSumWLinearFive5n5n5n3n2n)
12330 * dSpreadFive5n5n5n3n2n*pow(pow(dSumWLinearFive5n5n5n3n2n,2.)/(pow(dSumWLinearFive5n5n5n3n2n,2.)-dSumWQuadraticFive5n5n5n3n2n),0.5),2.)
12331 + 4.*2.*f3pCorrelations->GetBinContent(7)*f2pCorrelations->GetBinContent(5)
12332 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12333 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,12))
12334 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(7))
12335 / (dSumWLinearTwo5n5n*dSumWLinearThree5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12336 - 2.*2.*f3pCorrelations->GetBinContent(7)
12337 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12338 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,113))
12339 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(59))
12340 / (dSumWLinearTwo5n5n*dSumWLinearFive5n5n5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12341 - 2.*2.*f2pCorrelations->GetBinContent(5)
12342 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12343 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(12,113))
12344 - f3pCorrelations->GetBinContent(7)*f5pCorrelations->GetBinContent(59))
12345 / (dSumWLinearThree5n3n2n*dSumWLinearFive5n5n5n3n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12346 if(dError>0.)
12347 {
12348 f5pCumulants->SetBinError(59,pow(dError,0.5));
12349 }
12350 } // end of if(...)
12351 } // end of {
e1d101a6 12352 f5pCumulants->SetBinContent(60,f5pCorrelations->GetBinContent(60)-2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(5));
c10259fb 12353 {
12354 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12355 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12356 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12357 Double_t dSumWLinearThree5n4n1n = 0.; // sum of linear event weights for <2>
12358 Double_t dSumWQuadraticThree5n4n1n = 0.; // sum of quadratic event weights <2>
12359 Double_t dSpreadThree5n4n1n = 0.; // weighted and biased estimator for sigma of <2>
12360 Double_t dSumWLinearFive5n5n5n4n1n = 0.; // sum of linear event weights for <4>
12361 Double_t dSumWQuadraticFive5n5n5n4n1n = 0.; // sum of quadratic event weights <4>
12362 Double_t dSpreadFive5n5n5n4n1n = 0.; // weighted and biased estimator for sigma of <4>
12363 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12364 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12365 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12366 dSumWLinearThree5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12367 dSumWQuadraticThree5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12368 dSpreadThree5n4n1n = f3pCorrelations->GetBinError(8);
12369 dSumWLinearFive5n5n5n4n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12370 dSumWQuadraticFive5n5n5n4n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12371 dSpreadFive5n5n5n4n1n = f5pCorrelations->GetBinError(60);
12372 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12373 pow(dSumWLinearThree5n4n1n,2.)>dSumWQuadraticThree5n4n1n &&
12374 pow(dSumWLinearFive5n5n5n4n1n,2.)>dSumWQuadraticFive5n5n5n4n1n)
12375 {
12376 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(8),2.)
12377 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12378 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12379 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12380 * pow((pow(dSumWQuadraticThree5n4n1n,0.5)/dSumWLinearThree5n4n1n)
12381 * dSpreadThree5n4n1n*pow(pow(dSumWLinearThree5n4n1n,2.)/(pow(dSumWLinearThree5n4n1n,2.)-dSumWQuadraticThree5n4n1n),0.5),2.)
12382 + pow((pow(dSumWQuadraticFive5n5n5n4n1n,0.5)/dSumWLinearFive5n5n5n4n1n)
12383 * dSpreadFive5n5n5n4n1n*pow(pow(dSumWLinearFive5n5n5n4n1n,2.)/(pow(dSumWLinearFive5n5n5n4n1n,2.)-dSumWQuadraticFive5n5n5n4n1n),0.5),2.)
12384 + 4.*2.*f3pCorrelations->GetBinContent(8)*f2pCorrelations->GetBinContent(5)
12385 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12386 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,13))
12387 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(8))
12388 / (dSumWLinearTwo5n5n*dSumWLinearThree5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12389 - 2.*2.*f3pCorrelations->GetBinContent(8)
12390 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12391 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,114))
12392 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(60))
12393 / (dSumWLinearTwo5n5n*dSumWLinearFive5n5n5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12394 - 2.*2.*f2pCorrelations->GetBinContent(5)
12395 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12396 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(13,114))
12397 - f3pCorrelations->GetBinContent(8)*f5pCorrelations->GetBinContent(60))
12398 / (dSumWLinearThree5n4n1n*dSumWLinearFive5n5n5n4n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12399 if(dError>0.)
12400 {
12401 f5pCumulants->SetBinError(60,pow(dError,0.5));
12402 }
12403 } // end of if(...)
12404 } // end of {
12405 f5pCumulants->SetBinContent(61,f5pCorrelations->GetBinContent(61));
12406 {
12407 Double_t dSumWLinear = 0.; // sum of linear event weights
12408 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12409 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12410 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12411 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12412 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12413 dSpread = f5pCorrelations->GetBinError(61);
12414 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12415 {
12416 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12417 f5pCumulants->SetBinError(61,dError);
12418 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12419 }
12420 f5pCumulants->SetBinContent(62,f5pCorrelations->GetBinContent(62));
12421 {
12422 Double_t dSumWLinear = 0.; // sum of linear event weights
12423 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12424 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12425 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12426 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12427 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12428 dSpread = f5pCorrelations->GetBinError(62);
12429 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12430 {
12431 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12432 f5pCumulants->SetBinError(62,dError);
12433 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12434 }
12435 f5pCumulants->SetBinContent(63,f5pCorrelations->GetBinContent(63));
12436 {
12437 Double_t dSumWLinear = 0.; // sum of linear event weights
12438 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12439 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12440 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12441 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12442 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12443 dSpread = f5pCorrelations->GetBinError(63);
12444 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12445 {
12446 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12447 f5pCumulants->SetBinError(63,dError);
12448 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12449 }
e1d101a6 12450 f5pCumulants->SetBinContent(64,f5pCorrelations->GetBinContent(64)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(1));
c10259fb 12451 {
12452 Double_t dSumWLinearTwo1n1n = 0.; // sum of linear event weights for <2>
12453 Double_t dSumWQuadraticTwo1n1n = 0.; // sum of quadratic event weights <2>
12454 Double_t dSpreadTwo1n1n = 0.; // weighted and biased estimator for sigma of <2>
12455 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12456 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12457 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12458 Double_t dSumWLinearFive6n1n5n1n1n = 0.; // sum of linear event weights for <4>
12459 Double_t dSumWQuadraticFive6n1n5n1n1n = 0.; // sum of quadratic event weights <4>
12460 Double_t dSpreadFive6n1n5n1n1n = 0.; // weighted and biased estimator for sigma of <4>
12461 dSumWLinearTwo1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12462 dSumWQuadraticTwo1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12463 dSpreadTwo1n1n = f2pCorrelations->GetBinError(1);
12464 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12465 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12466 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12467 dSumWLinearFive6n1n5n1n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12468 dSumWQuadraticFive6n1n5n1n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12469 dSpreadFive6n1n5n1n1n = f5pCorrelations->GetBinError(64);
12470 if(pow(dSumWLinearTwo1n1n,2.)>dSumWQuadraticTwo1n1n &&
12471 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12472 pow(dSumWLinearFive6n1n5n1n1n,2.)>dSumWQuadraticFive6n1n5n1n1n)
12473 {
12474 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12475 * pow((pow(dSumWQuadraticTwo1n1n,0.5)/dSumWLinearTwo1n1n)
12476 * dSpreadTwo1n1n*pow(pow(dSumWLinearTwo1n1n,2.)/(pow(dSumWLinearTwo1n1n,2.)-dSumWQuadraticTwo1n1n),0.5),2.)
12477 + 4.*pow(f2pCorrelations->GetBinContent(1),2.)
12478 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12479 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12480 + pow((pow(dSumWQuadraticFive6n1n5n1n1n,0.5)/dSumWLinearFive6n1n5n1n1n)
12481 * dSpreadFive6n1n5n1n1n*pow(pow(dSumWLinearFive6n1n5n1n1n,2.)/(pow(dSumWLinearFive6n1n5n1n1n,2.)-dSumWQuadraticFive6n1n5n1n1n),0.5),2.)
12482 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(1)
12483 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12484 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,15))
12485 - f2pCorrelations->GetBinContent(1)*f3pCorrelations->GetBinContent(10))
12486 / (dSumWLinearTwo1n1n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12487 - 2.*2.*f3pCorrelations->GetBinContent(10)
12488 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12489 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(1,118))
12490 - f2pCorrelations->GetBinContent(1)*f5pCorrelations->GetBinContent(64))
12491 / (dSumWLinearTwo1n1n*dSumWLinearFive6n1n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12492 - 2.*2.*f2pCorrelations->GetBinContent(1)
12493 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12494 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,118))
12495 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(64))
12496 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n1n5n1n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12497 if(dError>0.)
12498 {
12499 f5pCumulants->SetBinError(64,pow(dError,0.5));
12500 }
12501 } // end of if(...)
12502 } // end of {
e1d101a6 12503 f5pCumulants->SetBinContent(65,f5pCorrelations->GetBinContent(65)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(2));
c10259fb 12504 {
12505 Double_t dSumWLinearTwo2n2n = 0.; // sum of linear event weights for <2>
12506 Double_t dSumWQuadraticTwo2n2n = 0.; // sum of quadratic event weights <2>
12507 Double_t dSpreadTwo2n2n = 0.; // weighted and biased estimator for sigma of <2>
12508 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12509 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12510 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12511 Double_t dSumWLinearFive6n2n4n2n2n = 0.; // sum of linear event weights for <4>
12512 Double_t dSumWQuadraticFive6n2n4n2n2n = 0.; // sum of quadratic event weights <4>
12513 Double_t dSpreadFive6n2n4n2n2n = 0.; // weighted and biased estimator for sigma of <4>
12514 dSumWLinearTwo2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12515 dSumWQuadraticTwo2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12516 dSpreadTwo2n2n = f2pCorrelations->GetBinError(2);
12517 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12518 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12519 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12520 dSumWLinearFive6n2n4n2n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12521 dSumWQuadraticFive6n2n4n2n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12522 dSpreadFive6n2n4n2n2n = f5pCorrelations->GetBinError(65);
12523 if(pow(dSumWLinearTwo2n2n,2.)>dSumWQuadraticTwo2n2n &&
12524 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12525 pow(dSumWLinearFive6n2n4n2n2n,2.)>dSumWQuadraticFive6n2n4n2n2n)
12526 {
12527 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12528 * pow((pow(dSumWQuadraticTwo2n2n,0.5)/dSumWLinearTwo2n2n)
12529 * dSpreadTwo2n2n*pow(pow(dSumWLinearTwo2n2n,2.)/(pow(dSumWLinearTwo2n2n,2.)-dSumWQuadraticTwo2n2n),0.5),2.)
12530 + 4.*pow(f2pCorrelations->GetBinContent(2),2.)
12531 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12532 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12533 + pow((pow(dSumWQuadraticFive6n2n4n2n2n,0.5)/dSumWLinearFive6n2n4n2n2n)
12534 * dSpreadFive6n2n4n2n2n*pow(pow(dSumWLinearFive6n2n4n2n2n,2.)/(pow(dSumWLinearFive6n2n4n2n2n,2.)-dSumWQuadraticFive6n2n4n2n2n),0.5),2.)
12535 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(2)
12536 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12537 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,14))
12538 - f2pCorrelations->GetBinContent(2)*f3pCorrelations->GetBinContent(9))
12539 / (dSumWLinearTwo2n2n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12540 - 2.*2.*f3pCorrelations->GetBinContent(9)
12541 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12542 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(2,119))
12543 - f2pCorrelations->GetBinContent(2)*f5pCorrelations->GetBinContent(65))
12544 / (dSumWLinearTwo2n2n*dSumWLinearFive6n2n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12545 - 2.*2.*f2pCorrelations->GetBinContent(2)
12546 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12547 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,119))
12548 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(65))
12549 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n2n4n2n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12550 if(dError>0.)
12551 {
12552 f5pCumulants->SetBinError(65,pow(dError,0.5));
12553 }
12554 } // end of if(...)
12555 } // end of {
12556 f5pCumulants->SetBinContent(66,f5pCorrelations->GetBinContent(66)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(4));
12557 {
12558 Double_t dSumWLinearTwo4n4n = 0.; // sum of linear event weights for <2>
12559 Double_t dSumWQuadraticTwo4n4n = 0.; // sum of quadratic event weights <2>
12560 Double_t dSpreadTwo4n4n = 0.; // weighted and biased estimator for sigma of <2>
12561 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12562 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12563 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12564 Double_t dSumWLinearFive6n4n4n4n2n = 0.; // sum of linear event weights for <4>
12565 Double_t dSumWQuadraticFive6n4n4n4n2n = 0.; // sum of quadratic event weights <4>
12566 Double_t dSpreadFive6n4n4n4n2n = 0.; // weighted and biased estimator for sigma of <4>
12567 dSumWLinearTwo4n4n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12568 dSumWQuadraticTwo4n4n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12569 dSpreadTwo4n4n = f2pCorrelations->GetBinError(4);
12570 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12571 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12572 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12573 dSumWLinearFive6n4n4n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12574 dSumWQuadraticFive6n4n4n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12575 dSpreadFive6n4n4n4n2n = f5pCorrelations->GetBinError(66);
12576 if(pow(dSumWLinearTwo4n4n,2.)>dSumWQuadraticTwo4n4n &&
12577 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12578 pow(dSumWLinearFive6n4n4n4n2n,2.)>dSumWQuadraticFive6n4n4n4n2n)
12579 {
12580 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12581 * pow((pow(dSumWQuadraticTwo4n4n,0.5)/dSumWLinearTwo4n4n)
12582 * dSpreadTwo4n4n*pow(pow(dSumWLinearTwo4n4n,2.)/(pow(dSumWLinearTwo4n4n,2.)-dSumWQuadraticTwo4n4n),0.5),2.)
12583 + 4.*pow(f2pCorrelations->GetBinContent(4),2.)
12584 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12585 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12586 + pow((pow(dSumWQuadraticFive6n4n4n4n2n,0.5)/dSumWLinearFive6n4n4n4n2n)
12587 * dSpreadFive6n4n4n4n2n*pow(pow(dSumWLinearFive6n4n4n4n2n,2.)/(pow(dSumWLinearFive6n4n4n4n2n,2.)-dSumWQuadraticFive6n4n4n4n2n),0.5),2.)
12588 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(4)
12589 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12590 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,14))
12591 - f2pCorrelations->GetBinContent(4)*f3pCorrelations->GetBinContent(9))
12592 / (dSumWLinearTwo4n4n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12593 - 2.*2.*f3pCorrelations->GetBinContent(9)
12594 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12595 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(4,120))
12596 - f2pCorrelations->GetBinContent(4)*f5pCorrelations->GetBinContent(66))
12597 / (dSumWLinearTwo4n4n*dSumWLinearFive6n4n4n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12598 - 2.*2.*f2pCorrelations->GetBinContent(4)
12599 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12600 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,120))
12601 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(66))
12602 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n4n4n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12603 if(dError>0.)
12604 {
12605 f5pCumulants->SetBinError(66,pow(dError,0.5));
12606 }
12607 } // end of if(...)
12608 } // end of {
12609 f5pCumulants->SetBinContent(67,f5pCorrelations->GetBinContent(67));
12610 {
12611 Double_t dSumWLinear = 0.; // sum of linear event weights
12612 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12613 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12614 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12615 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12616 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12617 dSpread = f5pCorrelations->GetBinError(67);
12618 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12619 {
12620 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12621 f5pCumulants->SetBinError(67,dError);
12622 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12623 }
e1d101a6 12624 f5pCumulants->SetBinContent(68,f5pCorrelations->GetBinContent(68)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(5));
c10259fb 12625 {
12626 Double_t dSumWLinearTwo5n5n = 0.; // sum of linear event weights for <2>
12627 Double_t dSumWQuadraticTwo5n5n = 0.; // sum of quadratic event weights <2>
12628 Double_t dSpreadTwo5n5n = 0.; // weighted and biased estimator for sigma of <2>
12629 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12630 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12631 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12632 Double_t dSumWLinearFive6n5n5n5n1n = 0.; // sum of linear event weights for <4>
12633 Double_t dSumWQuadraticFive6n5n5n5n1n = 0.; // sum of quadratic event weights <4>
12634 Double_t dSpreadFive6n5n5n5n1n = 0.; // weighted and biased estimator for sigma of <4>
12635 dSumWLinearTwo5n5n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12636 dSumWQuadraticTwo5n5n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12637 dSpreadTwo5n5n = f2pCorrelations->GetBinError(5);
12638 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12639 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12640 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12641 dSumWLinearFive6n5n5n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12642 dSumWQuadraticFive6n5n5n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12643 dSpreadFive6n5n5n5n1n = f5pCorrelations->GetBinError(68);
12644 if(pow(dSumWLinearTwo5n5n,2.)>dSumWQuadraticTwo5n5n &&
12645 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12646 pow(dSumWLinearFive6n5n5n5n1n,2.)>dSumWQuadraticFive6n5n5n5n1n)
12647 {
12648 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12649 * pow((pow(dSumWQuadraticTwo5n5n,0.5)/dSumWLinearTwo5n5n)
12650 * dSpreadTwo5n5n*pow(pow(dSumWLinearTwo5n5n,2.)/(pow(dSumWLinearTwo5n5n,2.)-dSumWQuadraticTwo5n5n),0.5),2.)
12651 + 4.*pow(f2pCorrelations->GetBinContent(5),2.)
12652 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12653 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12654 + pow((pow(dSumWQuadraticFive6n5n5n5n1n,0.5)/dSumWLinearFive6n5n5n5n1n)
12655 * dSpreadFive6n5n5n5n1n*pow(pow(dSumWLinearFive6n5n5n5n1n,2.)/(pow(dSumWLinearFive6n5n5n5n1n,2.)-dSumWQuadraticFive6n5n5n5n1n),0.5),2.)
12656 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(5)
12657 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12658 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,15))
12659 - f2pCorrelations->GetBinContent(5)*f3pCorrelations->GetBinContent(10))
12660 / (dSumWLinearTwo5n5n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12661 - 2.*2.*f3pCorrelations->GetBinContent(10)
12662 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12663 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(5,122))
12664 - f2pCorrelations->GetBinContent(5)*f5pCorrelations->GetBinContent(68))
12665 / (dSumWLinearTwo5n5n*dSumWLinearFive6n5n5n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12666 - 2.*2.*f2pCorrelations->GetBinContent(5)
12667 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12668 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,122))
12669 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(68))
12670 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n5n5n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12671 if(dError>0.)
12672 {
12673 f5pCumulants->SetBinError(68,pow(dError,0.5));
12674 }
12675 } // end of if(...)
12676 } // end of {
12677 f5pCumulants->SetBinContent(69,f5pCorrelations->GetBinContent(69));
12678 {
12679 Double_t dSumWLinear = 0.; // sum of linear event weights
12680 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12681 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12682 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12683 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12684 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12685 dSpread = f5pCorrelations->GetBinError(69);
12686 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12687 {
12688 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12689 f5pCumulants->SetBinError(69,dError);
12690 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
12691 }
e1d101a6 12692 f5pCumulants->SetBinContent(70,f5pCorrelations->GetBinContent(70)-2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(6));
c10259fb 12693 {
12694 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
12695 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
12696 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
12697 Double_t dSumWLinearThree6n4n2n = 0.; // sum of linear event weights for <2>
12698 Double_t dSumWQuadraticThree6n4n2n = 0.; // sum of quadratic event weights <2>
12699 Double_t dSpreadThree6n4n2n = 0.; // weighted and biased estimator for sigma of <2>
12700 Double_t dSumWLinearFive6n6n6n4n2n = 0.; // sum of linear event weights for <4>
12701 Double_t dSumWQuadraticFive6n6n6n4n2n = 0.; // sum of quadratic event weights <4>
12702 Double_t dSpreadFive6n6n6n4n2n = 0.; // weighted and biased estimator for sigma of <4>
12703 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12704 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12705 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
12706 dSumWLinearThree6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12707 dSumWQuadraticThree6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12708 dSpreadThree6n4n2n = f3pCorrelations->GetBinError(9);
12709 dSumWLinearFive6n6n6n4n2n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12710 dSumWQuadraticFive6n6n6n4n2n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12711 dSpreadFive6n6n6n4n2n = f5pCorrelations->GetBinError(70);
12712 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
12713 pow(dSumWLinearThree6n4n2n,2.)>dSumWQuadraticThree6n4n2n &&
12714 pow(dSumWLinearFive6n6n6n4n2n,2.)>dSumWQuadraticFive6n6n6n4n2n)
12715 {
12716 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(9),2.)
12717 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
12718 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
12719 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
12720 * pow((pow(dSumWQuadraticThree6n4n2n,0.5)/dSumWLinearThree6n4n2n)
12721 * dSpreadThree6n4n2n*pow(pow(dSumWLinearThree6n4n2n,2.)/(pow(dSumWLinearThree6n4n2n,2.)-dSumWQuadraticThree6n4n2n),0.5),2.)
12722 + pow((pow(dSumWQuadraticFive6n6n6n4n2n,0.5)/dSumWLinearFive6n6n6n4n2n)
12723 * dSpreadFive6n6n6n4n2n*pow(pow(dSumWLinearFive6n6n6n4n2n,2.)/(pow(dSumWLinearFive6n6n6n4n2n,2.)-dSumWQuadraticFive6n6n6n4n2n),0.5),2.)
12724 + 4.*2.*f3pCorrelations->GetBinContent(9)*f2pCorrelations->GetBinContent(6)
12725 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12726 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,14))
12727 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(9))
12728 / (dSumWLinearTwo6n6n*dSumWLinearThree6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12729 - 2.*2.*f3pCorrelations->GetBinContent(9)
12730 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12731 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,124))
12732 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(70))
12733 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12734 - 2.*2.*f2pCorrelations->GetBinContent(6)
12735 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12736 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(14,124))
12737 - f3pCorrelations->GetBinContent(9)*f5pCorrelations->GetBinContent(70))
12738 / (dSumWLinearThree6n4n2n*dSumWLinearFive6n6n6n4n2n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12739 if(dError>0.)
12740 {
12741 f5pCumulants->SetBinError(70,pow(dError,0.5));
12742 }
12743 } // end of if(...)
12744 } // end of {
12745
12746
12747
12748
12749
e1d101a6 12750 f5pCumulants->SetBinContent(71,f5pCorrelations->GetBinContent(71)-2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(6));
c10259fb 12751 {
12752 Double_t dSumWLinearTwo6n6n = 0.; // sum of linear event weights for <2>
12753 Double_t dSumWQuadraticTwo6n6n = 0.; // sum of quadratic event weights <2>
12754 Double_t dSpreadTwo6n6n = 0.; // weighted and biased estimator for sigma of <2>
12755 Double_t dSumWLinearThree6n5n1n = 0.; // sum of linear event weights for <2>
12756 Double_t dSumWQuadraticThree6n5n1n = 0.; // sum of quadratic event weights <2>
12757 Double_t dSpreadThree6n5n1n = 0.; // weighted and biased estimator for sigma of <2>
12758 Double_t dSumWLinearFive6n6n6n5n1n = 0.; // sum of linear event weights for <4>
12759 Double_t dSumWQuadraticFive6n6n6n5n1n = 0.; // sum of quadratic event weights <4>
12760 Double_t dSpreadFive6n6n6n5n1n = 0.; // weighted and biased estimator for sigma of <4>
12761 dSumWLinearTwo6n6n = fMixedHarmonicEventWeights[0]->GetBinContent(2);
12762 dSumWQuadraticTwo6n6n = fMixedHarmonicEventWeights[1]->GetBinContent(2);
12763 dSpreadTwo6n6n = f2pCorrelations->GetBinError(6);
12764 dSumWLinearThree6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(3);
12765 dSumWQuadraticThree6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(3);
12766 dSpreadThree6n5n1n = f3pCorrelations->GetBinError(10);
12767 dSumWLinearFive6n6n6n5n1n = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12768 dSumWQuadraticFive6n6n6n5n1n = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12769 dSpreadFive6n6n6n5n1n = f5pCorrelations->GetBinError(71);
12770 if(pow(dSumWLinearTwo6n6n,2.)>dSumWQuadraticTwo6n6n &&
12771 pow(dSumWLinearThree6n5n1n,2.)>dSumWQuadraticThree6n5n1n &&
12772 pow(dSumWLinearFive6n6n6n5n1n,2.)>dSumWQuadraticFive6n6n6n5n1n)
12773 {
12774 Double_t dError = 4.*pow(f3pCorrelations->GetBinContent(10),2.)
12775 * pow((pow(dSumWQuadraticTwo6n6n,0.5)/dSumWLinearTwo6n6n)
12776 * dSpreadTwo6n6n*pow(pow(dSumWLinearTwo6n6n,2.)/(pow(dSumWLinearTwo6n6n,2.)-dSumWQuadraticTwo6n6n),0.5),2.)
12777 + 4.*pow(f2pCorrelations->GetBinContent(6),2.)
12778 * pow((pow(dSumWQuadraticThree6n5n1n,0.5)/dSumWLinearThree6n5n1n)
12779 * dSpreadThree6n5n1n*pow(pow(dSumWLinearThree6n5n1n,2.)/(pow(dSumWLinearThree6n5n1n,2.)-dSumWQuadraticThree6n5n1n),0.5),2.)
12780 + pow((pow(dSumWQuadraticFive6n6n6n5n1n,0.5)/dSumWLinearFive6n6n6n5n1n)
12781 * dSpreadFive6n6n6n5n1n*pow(pow(dSumWLinearFive6n6n6n5n1n,2.)/(pow(dSumWLinearFive6n6n6n5n1n,2.)-dSumWQuadraticFive6n6n6n5n1n),0.5),2.)
12782 + 4.*2.*f3pCorrelations->GetBinContent(10)*f2pCorrelations->GetBinContent(6)
12783 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3))
12784 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,15))
12785 - f2pCorrelations->GetBinContent(6)*f3pCorrelations->GetBinContent(10))
12786 / (dSumWLinearTwo6n6n*dSumWLinearThree6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,3)))
12787 - 2.*2.*f3pCorrelations->GetBinContent(10)
12788 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5))
12789 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(6,125))
12790 - f2pCorrelations->GetBinContent(6)*f5pCorrelations->GetBinContent(71))
12791 / (dSumWLinearTwo6n6n*dSumWLinearFive6n6n6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(2,5)))
12792 - 2.*2.*f2pCorrelations->GetBinContent(6)
12793 * fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5))
12794 * (fMixedHarmonicProductOfCorrelations->GetBinContent(fMixedHarmonicProductOfCorrelations->GetBin(15,125))
12795 - f3pCorrelations->GetBinContent(10)*f5pCorrelations->GetBinContent(71))
12796 / (dSumWLinearThree6n5n1n*dSumWLinearFive6n6n6n5n1n-fMixedHarmonicProductOfEventWeights->GetBinContent(fMixedHarmonicProductOfEventWeights->GetBin(3,5)));
12797 if(dError>0.)
12798 {
12799 f5pCumulants->SetBinError(71,pow(dError,0.5));
12800 }
12801 } // end of if(...)
12802 } // end of {
e1d101a6 12803 // d3) "Four distinct harmonics":
12804 for(Int_t b=73;b<=83;b++)
12805 {
12806 f5pCumulants->SetBinContent(b,f5pCorrelations->GetBinContent(b));
c10259fb 12807 Double_t dSumWLinear = 0.; // sum of linear event weights
12808 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12809 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12810 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12811 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12812 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12813 dSpread = f5pCorrelations->GetBinError(b);
12814 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12815 {
12816 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12817 f5pCumulants->SetBinError(b,dError);
12818 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 12819 } // end of for(Int_t b=73;b<=83;b++)
12820 // d4) "Five distinct harmonics":
12821 for(Int_t b=85;b<=87;b++)
12822 {
12823 f5pCumulants->SetBinContent(b,f5pCorrelations->GetBinContent(b));
c10259fb 12824 Double_t dSumWLinear = 0.; // sum of linear event weights
12825 Double_t dSumWQuadratic = 0.; // sum of quadratic event weights
12826 Double_t dSpread = 0.; // weighted and biased estimator for sigma
12827 Double_t dError = 0.; // weighted and unbiased estimator for sigma
12828 dSumWLinear = fMixedHarmonicEventWeights[0]->GetBinContent(5);
12829 dSumWQuadratic = fMixedHarmonicEventWeights[1]->GetBinContent(5);
12830 dSpread = f5pCorrelations->GetBinError(b);
12831 if(pow(dSumWLinear,2.)>dSumWQuadratic)
12832 {
12833 dError = (pow(dSumWQuadratic,0.5)/dSumWLinear)*dSpread*pow(pow(dSumWLinear,2.)/(pow(dSumWLinear,2.)-dSumWQuadratic),0.5);
12834 f5pCumulants->SetBinError(b,dError);
12835 } // end of if(pow(dSumWLinear,2.)>dSumWQuadratic)
e1d101a6 12836 } // end of for(Int_t b=85;b<=87;b++)
12837
12838} // end of void AliFlowAnalysisWithQCumulants::CalculateCumulantsMixedHarmonics()
12839
12840//===================================================================================================================
489d5531 12841
e5834fcb 12842void AliFlowAnalysisWithQCumulants::StorePhiDistributionForOneEvent(AliFlowEventSimple *anEvent)
12843{
12844 // Store phi distribution for one event to illustrate flow.
12845
12846 if(fPhiDistributionForOneEvent->GetEntries()>0){return;} // store only phi distribution for one event
12847
12848 Double_t vMin = fPhiDistributionForOneEventSettings[0];
12849 Double_t vMax = fPhiDistributionForOneEventSettings[1];
12850 Double_t refMultMin = fPhiDistributionForOneEventSettings[2];
12851 Double_t refMultMax = fPhiDistributionForOneEventSettings[3];
12852
12853 Double_t vEBE = 0.;
12854 Double_t cumulant4thEBE = fIntFlowCorrelationsEBE->GetBinContent(2)-2.*pow(fIntFlowCorrelationsEBE->GetBinContent(1),2.);
12855 if(cumulant4thEBE<0.)
12856 {
12857 vEBE = pow(-1.*cumulant4thEBE,0.25);
12858 if((vEBE>vMin && vEBE<vMax) && (fReferenceMultiplicityEBE>refMultMin && fReferenceMultiplicityEBE<refMultMax))
12859 {
3958eee6 12860 fPhiDistributionForOneEvent->SetTitle(Form("v_{%i} = %f",fHarmonic,vEBE));
e5834fcb 12861 for(Int_t p=0;p<anEvent->NumberOfTracks();p++)
12862 {
12863 if(anEvent->GetTrack(p)->InRPSelection())
12864 {
12865 fPhiDistributionForOneEvent->Fill(anEvent->GetTrack(p)->Phi());
12866 }
12867 } // end of for(Int_t p=0;p<anEvent->NumberOfTracks();p++)
3958eee6 12868 } else
12869 {
12870 fPhiDistributionForOneEvent->SetTitle(Form("v_{%i} = %f, out of specified boundaries",fHarmonic,vEBE));
12871 }
12872
e5834fcb 12873 } // end of if(cumulant4thEBE<0.)
12874
12875} // end of void AliFlowAnalysisWithQCumulants::StorePhiDistributionForOneEvent(AliFlowEventSimple *anEvent)
12876
e1d101a6 12877//===================================================================================================================
489d5531 12878
12879void AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrelations()
12880{
0328db2d 12881 // Calculate averages of products of correlations for integrated flow.
df23c5ae 12882
3842bdcd 12883 // Multiplicity bin of an event (relevant for all histos vs M):
12884 Double_t dMultiplicityBin = 0.;
df23c5ae 12885 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 12886 {
df23c5ae 12887 dMultiplicityBin = fNumberOfRPsEBE+0.5;
12888 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 12889 {
12890 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 12891 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
12892 {
12893 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
12894 }
3842bdcd 12895
489d5531 12896 Int_t counter = 0;
12897
12898 for(Int_t ci1=1;ci1<4;ci1++)
12899 {
12900 for(Int_t ci2=ci1+1;ci2<=4;ci2++)
12901 {
ff70ca91 12902 fIntFlowProductOfCorrelationsPro->Fill(0.5+counter,
12903 fIntFlowCorrelationsEBE->GetBinContent(ci1)*
12904 fIntFlowCorrelationsEBE->GetBinContent(ci2),
12905 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
12906 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
12907 // products versus multiplicity: // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 12908 if(fCalculateCumulantsVsM)
12909 {
3842bdcd 12910 fIntFlowProductOfCorrelationsVsMPro[counter]->Fill(dMultiplicityBin, // to be improved: dMult => sum of weights ?
b3dacf6b 12911 fIntFlowCorrelationsEBE->GetBinContent(ci1)*
12912 fIntFlowCorrelationsEBE->GetBinContent(ci2),
12913 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
12914 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
12915 } // end of if(fCalculateCumulantsVsM)
ff70ca91 12916 counter++;
489d5531 12917 }
12918 }
12919
12920} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrelations()
12921
12922
e1d101a6 12923//=======================================================================================================================
489d5531 12924
12925
0328db2d 12926void AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrectionTermsForNUA()
12927{
12928 // Calculate averages of products of correction terms for NUA.
12929
12930 // a) Binning of fIntFlowProductOfCorrectionTermsForNUAPro is organized as follows:
12931 // 1st bin: <<2><cos(phi)>>
12932 // 2nd bin: <<2><sin(phi)>>
12933 // 3rd bin: <<cos(phi)><sin(phi)>>
12934 // 4th bin: <<2><cos(phi1+phi2)>>
12935 // 5th bin: <<2><sin(phi1+phi2)>>
12936 // 6th bin: <<2><cos(phi1-phi2-phi3)>>
12937 // 7th bin: <<2><sin(phi1-phi2-phi3)>>
12938 // 8th bin: <<4><cos(phi1)>>
12939 // 9th bin: <<4><sin(phi1)>>
12940 // 10th bin: <<4><cos(phi1+phi2)>>
12941 // 11th bin: <<4><sin(phi1+phi2)>>
12942 // 12th bin: <<4><cos(phi1-phi2-phi3)>>
12943 // 13th bin: <<4><sin(phi1-phi2-phi3)>>
12944 // 14th bin: <<cos(phi1)><cos(phi1+phi2)>>
12945 // 15th bin: <<cos(phi1)><sin(phi1+phi2)>>
12946 // 16th bin: <<cos(phi1)><cos(phi1-phi2-phi3)>>
12947 // 17th bin: <<cos(phi1)><sin(phi1-phi2-phi3)>>
12948 // 18th bin: <<sin(phi1)><cos(phi1+phi2)>>
12949 // 19th bin: <<sin(phi1)><sin(phi1+phi2)>>
12950 // 20th bin: <<sin(phi1)><cos(phi1-phi2-phi3)>>
12951 // 21st bin: <<sin(phi1)><sin(phi1-phi2-phi3)>>
12952 // 22nd bin: <<cos(phi1+phi2)><sin(phi1+phi2)>>
12953 // 23rd bin: <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>
12954 // 24th bin: <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>
12955 // 25th bin: <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>
12956 // 26th bin: <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>
12957 // 27th bin: <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>
12958
12959 // <<2><cos(phi)>>:
12960 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(0.5,
12961 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1),
12962 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12963 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
12964 // <<2><sin(phi)>>:
12965 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(1.5,
12966 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
12967 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12968 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
12969 // <<cos(phi)><sin(phi)>>:
12970 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(2.5,
12971 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
12972 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
12973 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
12974 // <<2><cos(phi1+phi2)>>:
12975 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(3.5,
12976 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
12977 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12978 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
12979 // <<2><sin(phi1+phi2)>>:
12980 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(4.5,
12981 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
12982 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12983 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
12984 // <<2><cos(phi1-phi2-phi3)>>:
12985 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(5.5,
12986 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
12987 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12988 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
12989 // <<2><sin(phi1-phi2-phi3)>>:
12990 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(6.5,
12991 fIntFlowCorrelationsEBE->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
12992 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)
12993 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
12994 // <<4><cos(phi1)>>:
12995 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(7.5,
12996 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1),
12997 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
12998 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
12999 // <<4><sin(phi1)>>:
13000 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(8.5,
13001 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1),
13002 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13003 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
13004 // <<4><cos(phi1+phi2)>>:
13005 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(9.5,
13006 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13007 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13008 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
13009 // <<4><sin(phi1+phi2)>>:
13010 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(10.5,
13011 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13012 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13013 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13014 // <<4><cos(phi1-phi2-phi3)>>:
13015 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(11.5,
13016 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13017 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13018 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13019 // <<4><sin(phi1-phi2-phi3)>>:
13020 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(12.5,
13021 fIntFlowCorrelationsEBE->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13022 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)
13023 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13024 // <<cos(phi1)><cos(phi1+phi2)>>:
13025 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(13.5,
13026 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13027 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13028 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
13029 // <<cos(phi1)><sin(phi1+phi2)>>:
13030 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(14.5,
13031 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13032 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13033 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13034 // <<cos(phi1)><cos(phi1-phi2-phi3)>>:
13035 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(15.5,
13036 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13037 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13038 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13039 // <<cos(phi1)><sin(phi1-phi2-phi3)>>:
13040 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(16.5,
13041 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13042 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)
13043 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13044 // <<sin(phi1)><cos(phi1+phi2)>>:
13045 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(17.5,
13046 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2),
13047 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13048 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
13049 // <<sin(phi1)><sin(phi1+phi2)>>:
13050 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(18.5,
13051 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13052 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13053 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13054 // <<sin(phi1)><cos(phi1-phi2-phi3)>>:
13055 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(19.5,
13056 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13057 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13058 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13059 // <<sin(phi1)><sin(phi1-phi2-phi3)>>:
13060 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(20.5,
13061 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(1)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13062 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)
13063 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13064 // <<cos(phi1+phi2)><sin(phi1+phi2)>>:
13065 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(21.5,
13066 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2),
13067 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13068 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
13069 // <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>:
13070 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(22.5,
13071 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13072 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13073 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13074 // <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>:
13075 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(23.5,
13076 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13077 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)
13078 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13079 // <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>:
13080 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(24.5,
13081 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3),
13082 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)
13083 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
13084 // <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>:
13085 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(25.5,
13086 fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(2)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13087 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)
13088 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13089 // <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>:
13090 fIntFlowProductOfCorrectionTermsForNUAPro->Fill(26.5,
13091 fIntFlowCorrectionTermsForNUAEBE[1]->GetBinContent(3)*fIntFlowCorrectionTermsForNUAEBE[0]->GetBinContent(3),
13092 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)
13093 *fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
13094
13095} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowProductOfCorrectionTermsForNUA()
13096
e1d101a6 13097//=======================================================================================================================
0328db2d 13098
489d5531 13099void AliFlowAnalysisWithQCumulants::CalculateCovariancesIntFlow()
13100{
13101 // a) Calculate unbiased estimators Cov(<2>,<4>), Cov(<2>,<6>), Cov(<2>,<8>), Cov(<4>,<6>), Cov(<4>,<8>) and Cov(<6>,<8>)
13102 // for covariances V_(<2>,<4>), V_(<2>,<6>), V_(<2>,<8>), V_(<4>,<6>), V_(<4>,<8>) and V_(<6>,<8>).
13103 // b) Store in histogram fIntFlowCovariances for instance the following:
13104 //
13105 // 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)]
13106 //
13107 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<4>} is event weight for <4>.
13108 // c) Binning of fIntFlowCovariances is organized as follows:
13109 //
13110 // 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)]
13111 // 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)]
13112 // 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)]
13113 // 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)]
13114 // 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)]
13115 // 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 13116 //
489d5531 13117
b3dacf6b 13118 // Average 2-, 4-, 6- and 8-particle correlations for all events:
489d5531 13119 Double_t correlation[4] = {0.};
13120 for(Int_t ci=0;ci<4;ci++)
13121 {
13122 correlation[ci] = fIntFlowCorrelationsPro->GetBinContent(ci+1);
13123 }
b3dacf6b 13124 // Average products of 2-, 4-, 6- and 8-particle correlations:
489d5531 13125 Double_t productOfCorrelations[4][4] = {{0.}};
13126 Int_t productOfCorrelationsLabel = 1;
b3dacf6b 13127 // Denominators in the expressions for the unbiased estimator for covariance:
489d5531 13128 Double_t denominator[4][4] = {{0.}};
13129 Int_t sumOfProductOfEventWeightsLabel1 = 1;
b3dacf6b 13130 // Weight dependent prefactor which multiply unbiased estimators for covariances:
489d5531 13131 Double_t wPrefactor[4][4] = {{0.}};
13132 Int_t sumOfProductOfEventWeightsLabel2 = 1;
13133 for(Int_t c1=0;c1<4;c1++)
13134 {
13135 for(Int_t c2=c1+1;c2<4;c2++)
13136 {
13137 productOfCorrelations[c1][c2] = fIntFlowProductOfCorrelationsPro->GetBinContent(productOfCorrelationsLabel);
b3dacf6b 13138 if(TMath::Abs(fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)) > 1.e-44 && TMath::Abs(fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1)) > 1.e-44)
13139 {
13140 denominator[c1][c2] = 1.-(fIntFlowSumOfProductOfEventWeights->GetBinContent(sumOfProductOfEventWeightsLabel1))
13141 / (fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)
13142 * fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1));
13143 wPrefactor[c1][c2] = fIntFlowSumOfProductOfEventWeights->GetBinContent(sumOfProductOfEventWeightsLabel2)
13144 / (fIntFlowSumOfEventWeights[0]->GetBinContent(c1+1)
13145 * fIntFlowSumOfEventWeights[0]->GetBinContent(c2+1));
489d5531 13146 }
b3dacf6b 13147 productOfCorrelationsLabel++; // to be improved - do I need here all 3 counters?
489d5531 13148 sumOfProductOfEventWeightsLabel1++;
13149 sumOfProductOfEventWeightsLabel2++;
b3dacf6b 13150 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13151 } // end of for(Int_t c1=0;c1<4;c1++)
489d5531 13152
489d5531 13153 Int_t covarianceLabel = 1;
13154 for(Int_t c1=0;c1<4;c1++)
13155 {
13156 for(Int_t c2=c1+1;c2<4;c2++)
13157 {
b3dacf6b 13158 if(TMath::Abs(denominator[c1][c2]) > 1.e-44)
489d5531 13159 {
b3dacf6b 13160 // Covariances:
489d5531 13161 Double_t cov = (productOfCorrelations[c1][c2]-correlation[c1]*correlation[c2])/denominator[c1][c2];
b3dacf6b 13162 // Covariances multiplied with weight dependent prefactor:
489d5531 13163 Double_t wCov = cov * wPrefactor[c1][c2];
13164 fIntFlowCovariances->SetBinContent(covarianceLabel,wCov);
13165 }
13166 covarianceLabel++;
b3dacf6b 13167 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13168 } // end of for(Int_t c1=0;c1<4;c1++)
489d5531 13169
b3dacf6b 13170 // Versus multiplicity:
13171 if(!fCalculateCumulantsVsM){return;}
9da1a4f3 13172 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
13173 for(Int_t b=1;b<=nBins;b++)
13174 {
b3dacf6b 13175 // Average 2-, 4-, 6- and 8-particle correlations for all events:
9da1a4f3 13176 Double_t correlationVsM[4] = {0.};
13177 for(Int_t ci=0;ci<4;ci++)
13178 {
13179 correlationVsM[ci] = fIntFlowCorrelationsVsMPro[ci]->GetBinContent(b);
13180 } // end of for(Int_t ci=0;ci<4;ci++)
b3dacf6b 13181 // Average products of 2-, 4-, 6- and 8-particle correlations:
9da1a4f3 13182 Double_t productOfCorrelationsVsM[4][4] = {{0.}};
13183 Int_t productOfCorrelationsLabelVsM = 1;
b3dacf6b 13184 // Denominators in the expressions for the unbiased estimator for covariance:
9da1a4f3 13185 Double_t denominatorVsM[4][4] = {{0.}};
13186 Int_t sumOfProductOfEventWeightsLabel1VsM = 1;
b3dacf6b 13187 // Weight dependent prefactor which multiply unbiased estimators for covariances:
9da1a4f3 13188 Double_t wPrefactorVsM[4][4] = {{0.}};
13189 Int_t sumOfProductOfEventWeightsLabel2VsM = 1;
13190 for(Int_t c1=0;c1<4;c1++)
13191 {
13192 for(Int_t c2=c1+1;c2<4;c2++)
13193 {
13194 productOfCorrelationsVsM[c1][c2] = fIntFlowProductOfCorrelationsVsMPro[productOfCorrelationsLabelVsM-1]->GetBinContent(b);
b3dacf6b 13195 if(TMath::Abs(fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)) > 1.e-44 && TMath::Abs(fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b)) > 1.e-44)
13196 {
13197 denominatorVsM[c1][c2] = 1.-(fIntFlowSumOfProductOfEventWeightsVsM[sumOfProductOfEventWeightsLabel1VsM-1]->GetBinContent(b))
13198 / (fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)
13199 * fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b));
13200 wPrefactorVsM[c1][c2] = fIntFlowSumOfProductOfEventWeightsVsM[sumOfProductOfEventWeightsLabel2VsM-1]->GetBinContent(b)
13201 / (fIntFlowSumOfEventWeightsVsM[c1][0]->GetBinContent(b)
13202 * fIntFlowSumOfEventWeightsVsM[c2][0]->GetBinContent(b));
9da1a4f3 13203 }
13204 productOfCorrelationsLabelVsM++;
13205 sumOfProductOfEventWeightsLabel1VsM++;
13206 sumOfProductOfEventWeightsLabel2VsM++;
13207 } // end of for(Int_t c1=0;c1<4;c1++)
13208 } // end of for(Int_t c2=c1+1;c2<4;c2++)
b3dacf6b 13209
9da1a4f3 13210 Int_t covarianceLabelVsM = 1;
13211 for(Int_t c1=0;c1<4;c1++)
13212 {
13213 for(Int_t c2=c1+1;c2<4;c2++)
13214 {
b3dacf6b 13215 if(TMath::Abs(denominatorVsM[c1][c2]) > 1.e-44)
9da1a4f3 13216 {
b3dacf6b 13217 // Covariances:
9da1a4f3 13218 Double_t covVsM = (productOfCorrelationsVsM[c1][c2]-correlationVsM[c1]*correlationVsM[c2])/denominatorVsM[c1][c2];
b3dacf6b 13219 // Covariances multiplied with weight dependent prefactor:
9da1a4f3 13220 Double_t wCovVsM = covVsM * wPrefactorVsM[c1][c2];
13221 fIntFlowCovariancesVsM[covarianceLabelVsM-1]->SetBinContent(b,wCovVsM);
13222 }
13223 covarianceLabelVsM++;
b3dacf6b 13224 } // end of for(Int_t c2=c1+1;c2<4;c2++)
13225 } // end of for(Int_t c1=0;c1<4;c1++)
9da1a4f3 13226 } // end of for(Int_t b=1;b<=nBins;b++)
13227
489d5531 13228} // end of AliFlowAnalysisWithQCumulants::CalculateCovariancesIntFlow()
13229
e1d101a6 13230//=======================================================================================================================
489d5531 13231
0328db2d 13232void AliFlowAnalysisWithQCumulants::CalculateCovariancesNUAIntFlow()
13233{
13234 // a) Calculate unbiased estimators Cov(*,*) for true covariances V_(*,*) for NUA terms.
13235 // b) Store in histogram fIntFlowCovariancesNUA for instance the following:
13236 //
13237 // 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)]
13238 //
13239 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<cos(phi)>} is event weight for <cos(phi)>.
13240 // c) Binning of fIntFlowCovariancesNUA is organized as follows:
13241 //
13242 // 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)]
13243 // 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)]
13244 // 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)]
13245 // ...
13246
13247 // Cov(<2>,<cos(phi)>):
13248 Double_t product1 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(1); // <<2><cos(phi)>>
13249 Double_t term1st1 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13250 Double_t term2nd1 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi)>>
13251 Double_t sumOfW1st1 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13252 Double_t sumOfW2nd1 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi)>}
13253 Double_t sumOfWW1 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(1); // W_{<2>} * W_{<cos(phi)>}
13254 // numerator in the expression for the the unbiased estimator for covariance:
13255 Double_t numerator1 = product1 - term1st1*term2nd1;
13256 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13257 Double_t denominator1 = 0.;
13258 if(TMath::Abs(sumOfW1st1*sumOfW2nd1)>0.)
13259 {
13260 denominator1 = 1.-sumOfWW1/(sumOfW1st1*sumOfW2nd1);
13261 if(TMath::Abs(denominator1)>0.)
13262 {
13263 // covariance:
13264 Double_t covariance1 = numerator1/denominator1;
13265 // weight dependent prefactor for covariance:
13266 Double_t wPrefactor1 = sumOfWW1/(sumOfW1st1*sumOfW2nd1);
13267 // finally, store "weighted" covariance:
13268 fIntFlowCovariancesNUA->SetBinContent(1,wPrefactor1*covariance1);
13269 } // end of if(TMath::Abs(denominator)>0.)
13270 } // end of if(TMath::Abs(sumOfW1st1*sumOfW2nd1)>0.)
13271
0328db2d 13272 // Cov(<2>,<sin(phi)>):
13273 Double_t product2 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(2); // <<2><sin(phi)>>
13274 Double_t term1st2 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13275 Double_t term2nd2 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi)>>
13276 Double_t sumOfW1st2 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13277 Double_t sumOfW2nd2 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi)>}
13278 Double_t sumOfWW2 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(2); // W_{<2>} * W_{<sin(phi)>}
13279 // numerator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13280 Double_t numerator2 = product2 - term1st2*term2nd2;
0328db2d 13281 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13282 Double_t denominator2 = 0.;
13283 if(TMath::Abs(sumOfW1st2*sumOfW2nd2)>0.)
13284 {
13285 denominator2 = 1.-sumOfWW2/(sumOfW1st2*sumOfW2nd2);
13286 if(TMath::Abs(denominator2)>0.)
13287 {
13288 // covariance:
13289 Double_t covariance2 = numerator2/denominator2;
13290 // weight dependent prefactor for covariance:
13291 Double_t wPrefactor2 = sumOfWW2/(sumOfW1st2*sumOfW2nd2);
13292 // finally, store "weighted" covariance:
13293 fIntFlowCovariancesNUA->SetBinContent(2,wPrefactor2*covariance2);
13294 } // end of if(TMath::Abs(denominator2)>0.)
13295 } // end of if(TMath::Abs(sumOfW1st2*sumOfW2nd2)>0.)
0328db2d 13296
13297 // Cov(<cos(phi)>,<sin(phi)>):
13298 Double_t product3 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(3); // <<cos(phi)><sin(phi)>>
13299 Double_t term1st3 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi)>>
13300 Double_t term2nd3 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi)>>
13301 Double_t sumOfW1st3 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi)>}
13302 Double_t sumOfW2nd3 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi)>}
13303 Double_t sumOfWW3 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(3); // W_{<cos(phi)>} * W_{<sin(phi)>}
13304 // numerator in the expression for the the unbiased estimator for covariance:
13305 Double_t numerator3 = product3 - term1st3*term2nd3;
13306 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13307 Double_t denominator3 = 0;
13308 if(TMath::Abs(sumOfW1st3*sumOfW2nd3)>0.)
13309 {
13310 denominator3 = 1.-sumOfWW3/(sumOfW1st3*sumOfW2nd3);
13311 if(TMath::Abs(denominator3)>0.)
13312 {
13313 // covariance:
13314 Double_t covariance3 = numerator3/denominator3;
13315 // weight dependent prefactor for covariance:
13316 Double_t wPrefactor3 = sumOfWW3/(sumOfW1st3*sumOfW2nd3);
13317 // finally, store "weighted" covariance:
13318 fIntFlowCovariancesNUA->SetBinContent(3,wPrefactor3*covariance3);
13319 } // end of if(TMath::Abs(denominator3)>0.)
13320 } // end of if(TMath::Abs(sumOfW1st3*sumOfW2nd3)>0.)
0328db2d 13321
13322 // Cov(<2>,<cos(phi1+phi2)>):
13323 Double_t product4 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(4); // <<2><cos(phi1+phi2)>>
13324 Double_t term1st4 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13325 Double_t term2nd4 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13326 Double_t sumOfW1st4 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13327 Double_t sumOfW2nd4 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13328 Double_t sumOfWW4 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(4); // W_{<2>} * W_{<cos(phi1+phi2)>}
13329 // numerator in the expression for the the unbiased estimator for covariance:
13330 Double_t numerator4 = product4 - term1st4*term2nd4;
13331 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13332 Double_t denominator4 = 0.;
13333 if(TMath::Abs(sumOfW1st4*sumOfW2nd4)>0.)
13334 {
13335 denominator4 = 1.-sumOfWW4/(sumOfW1st4*sumOfW2nd4);
13336 if(TMath::Abs(denominator4)>0.)
13337 {
13338 // covariance:
13339 Double_t covariance4 = numerator4/denominator4;
13340 // weight dependent prefactor for covariance:
13341 Double_t wPrefactor4 = sumOfWW4/(sumOfW1st4*sumOfW2nd4);
13342 // finally, store "weighted" covariance:
13343 fIntFlowCovariancesNUA->SetBinContent(4,wPrefactor4*covariance4);
13344 } // end of if(TMath::Abs(denominator4)>0.)
13345 } // end of if(TMath::Abs(sumOfW1st4*sumOfW2nd4)>0.)
13346
0328db2d 13347 // Cov(<2>,<sin(phi1+phi2)>):
13348 Double_t product5 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(5); // <<2><sin(phi1+phi2)>>
13349 Double_t term1st5 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13350 Double_t term2nd5 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13351 Double_t sumOfW1st5 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13352 Double_t sumOfW2nd5 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13353 Double_t sumOfWW5 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(5); // W_{<2>} * W_{<sin(phi1+phi2)>}
13354 // numerator in the expression for the the unbiased estimator for covariance:
13355 Double_t numerator5 = product5 - term1st5*term2nd5;
13356 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13357 Double_t denominator5 = 0.;
13358 if(TMath::Abs(sumOfW1st5*sumOfW2nd5)>0.)
13359 {
13360 denominator5 = 1.-sumOfWW5/(sumOfW1st5*sumOfW2nd5);
13361 if(TMath::Abs(denominator5)>0.)
13362 {
13363 // covariance:
13364 Double_t covariance5 = numerator5/denominator5;
13365 // weight dependent prefactor for covariance:
13366 Double_t wPrefactor5 = sumOfWW5/(sumOfW1st5*sumOfW2nd5);
13367 // finally, store "weighted" covariance:
13368 fIntFlowCovariancesNUA->SetBinContent(5,wPrefactor5*covariance5);
13369 } // end of if(TMath::Abs(denominator5)>0.)
13370 } // end of if(TMath::Abs(sumOfW1st5*sumOfW2nd5)>0.)
13371
0328db2d 13372 // Cov(<2>,<cos(phi1-phi2-phi3)>):
13373 Double_t product6 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(6); // <<2><cos(phi1-phi2-phi3)>>
13374 Double_t term1st6 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13375 Double_t term2nd6 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13376 Double_t sumOfW1st6 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13377 Double_t sumOfW2nd6 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13378 Double_t sumOfWW6 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(6); // W_{<2>} * W_{<cos(phi1-phi2-phi3)>}
13379 // numerator in the expression for the the unbiased estimator for covariance:
13380 Double_t numerator6 = product6 - term1st6*term2nd6;
13381 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13382 Double_t denominator6 = 0.;
13383 if(TMath::Abs(sumOfW1st6*sumOfW2nd6)>0.)
13384 {
13385 denominator6 = 1.-sumOfWW6/(sumOfW1st6*sumOfW2nd6);
13386 if(TMath::Abs(denominator6)>0.)
13387 {
13388 // covariance:
13389 Double_t covariance6 = numerator6/denominator6;
13390 // weight dependent prefactor for covariance:
13391 Double_t wPrefactor6 = sumOfWW6/(sumOfW1st6*sumOfW2nd6);
13392 // finally, store "weighted" covariance:
13393 fIntFlowCovariancesNUA->SetBinContent(6,wPrefactor6*covariance6);
13394 } // end of if(TMath::Abs(denominator6)>0.)
13395 } // end of if(TMath::Abs(sumOfW1st6*sumOfW2nd6)>0.)
13396
0328db2d 13397 // Cov(<2>,<sin(phi1-phi2-phi3)>):
13398 Double_t product7 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(7); // <<2><sin(phi1-phi2-phi3)>>
13399 Double_t term1st7 = fIntFlowCorrelationsPro->GetBinContent(1); // <<2>>
13400 Double_t term2nd7 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13401 Double_t sumOfW1st7 = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // W_{<2>}
13402 Double_t sumOfW2nd7 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13403 Double_t sumOfWW7 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(7); // W_{<2>} * W_{<sin(phi1-phi2-phi3)>}
13404 // numerator in the expression for the the unbiased estimator for covariance:
13405 Double_t numerator7 = product7 - term1st7*term2nd7;
13406 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13407 Double_t denominator7 = 0.;
13408 if(TMath::Abs(sumOfW1st7*sumOfW2nd7)>0.)
13409 {
13410 denominator7 = 1.-sumOfWW7/(sumOfW1st7*sumOfW2nd7);
13411 if(TMath::Abs(denominator7)>0.)
13412 {
13413 // covariance:
13414 Double_t covariance7 = numerator7/denominator7;
13415 // weight dependent prefactor for covariance:
13416 Double_t wPrefactor7 = sumOfWW7/(sumOfW1st7*sumOfW2nd7);
13417 // finally, store "weighted" covariance:
13418 fIntFlowCovariancesNUA->SetBinContent(7,wPrefactor7*covariance7);
13419 } // end of if(TMath::Abs(denominator7)>0.)
13420 } // end of if(TMath::Abs(sumOfW1st7*sumOfW2nd7)>0.)
13421
0328db2d 13422 // Cov(<4>,<cos(phi1>):
13423 Double_t product8 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(8); // <<4><cos(phi1)>>
13424 Double_t term1st8 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13425 Double_t term2nd8 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13426 Double_t sumOfW1st8 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13427 Double_t sumOfW2nd8 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13428 Double_t sumOfWW8 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(8); // W_{<4>} * W_{<cos(phi1)>}
13429 // numerator in the expression for the the unbiased estimator for covariance:
13430 Double_t numerator8 = product8 - term1st8*term2nd8;
13431 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13432 Double_t denominator8 = 0.;
13433 if(TMath::Abs(sumOfW1st8*sumOfW2nd8)>0.)
13434 {
13435 denominator8 = 1.-sumOfWW8/(sumOfW1st8*sumOfW2nd8);
13436 if(TMath::Abs(denominator8)>0.)
13437 {
13438 // covariance:
13439 Double_t covariance8 = numerator8/denominator8;
13440 // weight dependent prefactor for covariance:
13441 Double_t wPrefactor8 = sumOfWW8/(sumOfW1st8*sumOfW2nd8);
13442 // finally, store "weighted" covariance:
13443 fIntFlowCovariancesNUA->SetBinContent(8,wPrefactor8*covariance8);
13444 } // end of if(TMath::Abs(denominator8)>0.)
13445 } // end of if(TMath::Abs(sumOfW1st8*sumOfW2nd8)>0.)
13446
0328db2d 13447 // Cov(<4>,<sin(phi1)>):
13448 Double_t product9 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(9); // <<4><sin(phi1)>>
13449 Double_t term1st9 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13450 Double_t term2nd9 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13451 Double_t sumOfW1st9 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13452 Double_t sumOfW2nd9 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13453 Double_t sumOfWW9 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(9); // W_{<4>} * W_{<sin(phi1)>}
13454 // numerator in the expression for the the unbiased estimator for covariance:
13455 Double_t numerator9 = product9 - term1st9*term2nd9;
13456 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13457 Double_t denominator9 = 0.;
13458 if(TMath::Abs(sumOfW1st9*sumOfW2nd9)>0.)
13459 {
13460 denominator9 = 1.-sumOfWW9/(sumOfW1st9*sumOfW2nd9);
13461 if(TMath::Abs(denominator9)>0.)
13462 {
13463 // covariance:
13464 Double_t covariance9 = numerator9/denominator9;
13465 // weight dependent prefactor for covariance:
13466 Double_t wPrefactor9 = sumOfWW9/(sumOfW1st9*sumOfW2nd9);
13467 // finally, store "weighted" covariance:
13468 fIntFlowCovariancesNUA->SetBinContent(9,wPrefactor9*covariance9);
13469 }
13470 } // end of if(TMath::Abs(sumOfW1st9*sumOfW2nd9)>0.)
13471
0328db2d 13472 // Cov(<4>,<cos(phi1+phi2)>):
13473 Double_t product10 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(10); // <<4><cos(phi1+phi2)>>
13474 Double_t term1st10 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13475 Double_t term2nd10 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13476 Double_t sumOfW1st10 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13477 Double_t sumOfW2nd10 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13478 Double_t sumOfWW10 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(10); // W_{<4>} * W_{<cos(phi1+phi2)>}
13479 // numerator in the expression for the the unbiased estimator for covariance:
13480 Double_t numerator10 = product10 - term1st10*term2nd10;
13481 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13482 Double_t denominator10 = 0.;
13483 if(TMath::Abs(sumOfW1st10*sumOfW2nd10)>0.)
13484 {
13485 denominator10 = 1.-sumOfWW10/(sumOfW1st10*sumOfW2nd10);
13486 if(TMath::Abs(denominator10)>0.)
13487 {
13488 // covariance:
13489 Double_t covariance10 = numerator10/denominator10;
13490 // weight dependent prefactor for covariance:
13491 Double_t wPrefactor10 = sumOfWW10/(sumOfW1st10*sumOfW2nd10);
13492 // finally, store "weighted" covariance:
13493 fIntFlowCovariancesNUA->SetBinContent(10,wPrefactor10*covariance10);
13494 } // end of if(TMath::Abs(denominator10)>0.)
13495 } // end of if(TMath::Abs(sumOfW1st10*sumOfW2nd10)>0.)
13496
0328db2d 13497 // Cov(<4>,<sin(phi1+phi2)>):
13498 Double_t product11 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(11); // <<4><sin(phi1+phi2)>>
13499 Double_t term1st11 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13500 Double_t term2nd11 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13501 Double_t sumOfW1st11 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13502 Double_t sumOfW2nd11 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13503 Double_t sumOfWW11 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(11); // W_{<4>} * W_{<sin(phi1+phi2)>}
13504 // numerator in the expression for the the unbiased estimator for covariance:
13505 Double_t numerator11 = product11 - term1st11*term2nd11;
13506 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13507 Double_t denominator11 = 0.;
13508 if(TMath::Abs(sumOfW1st11*sumOfW2nd11)>0.)
13509 {
13510 denominator11 = 1.-sumOfWW11/(sumOfW1st11*sumOfW2nd11);
13511 if(TMath::Abs(denominator11)>0.)
13512 {
13513 // covariance:
13514 Double_t covariance11 = numerator11/denominator11;
13515 // weight dependent prefactor for covariance:
13516 Double_t wPrefactor11 = sumOfWW11/(sumOfW1st11*sumOfW2nd11);
13517 // finally, store "weighted" covariance:
13518 fIntFlowCovariancesNUA->SetBinContent(11,wPrefactor11*covariance11);
13519 } // end of if(TMath::Abs(denominator11)>0.)
13520 } // end of if(TMath::Abs(sumOfW1st11*sumOfW2nd11)>0.)
0328db2d 13521
13522 // Cov(<4>,<cos(phi1-phi2-phi3)>):
13523 Double_t product12 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(12); // <<4><cos(phi1-phi2-phi3)>>
13524 Double_t term1st12 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13525 Double_t term2nd12 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13526 Double_t sumOfW1st12 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13527 Double_t sumOfW2nd12 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13528 Double_t sumOfWW12 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(12); // W_{<4>} * W_{<cos(phi1-phi2-phi3)>}
13529 // numerator in the expression for the the unbiased estimator for covariance:
13530 Double_t numerator12 = product12 - term1st12*term2nd12;
13531 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13532 Double_t denominator12 = 0.;
13533 if(TMath::Abs(sumOfW1st12*sumOfW2nd12)>0.)
13534 {
13535 denominator12 = 1.-sumOfWW12/(sumOfW1st12*sumOfW2nd12);
13536 if(TMath::Abs(denominator12)>0.)
13537 {
13538 // covariance:
13539 Double_t covariance12 = numerator12/denominator12;
13540 // weight dependent prefactor for covariance:
13541 Double_t wPrefactor12 = sumOfWW12/(sumOfW1st12*sumOfW2nd12);
13542 // finally, store "weighted" covariance:
13543 fIntFlowCovariancesNUA->SetBinContent(12,wPrefactor12*covariance12);
13544 } // end of if(TMath::Abs(denominator12)>0.)
13545 } // end of if(TMath::Abs(sumOfW1st12*sumOfW2nd12)>0.)
0328db2d 13546
13547 // Cov(<4>,<sin(phi1-phi2-phi3)>):
13548 Double_t product13 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(13); // <<4><sin(phi1-phi2-phi3)>>
13549 Double_t term1st13 = fIntFlowCorrelationsPro->GetBinContent(2); // <<4>>
13550 Double_t term2nd13 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13551 Double_t sumOfW1st13 = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // W_{<4>}
13552 Double_t sumOfW2nd13 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13553 Double_t sumOfWW13 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(13); // W_{<4>} * W_{<sin(phi1-phi2-phi3)>}
13554 // numerator in the expression for the the unbiased estimator for covariance:
13555 Double_t numerator13 = product13 - term1st13*term2nd13;
13556 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13557 Double_t denominator13 = 0.;
13558 if(TMath::Abs(sumOfW1st13*sumOfW2nd13)>0.)
13559 {
13560 denominator13 = 1.-sumOfWW13/(sumOfW1st13*sumOfW2nd13);
13561 if(TMath::Abs(denominator13)>0.)
13562 {
13563 // covariance:
13564 Double_t covariance13 = numerator13/denominator13;
13565 // weight dependent prefactor for covariance:
13566 Double_t wPrefactor13 = sumOfWW13/(sumOfW1st13*sumOfW2nd13);
13567 // finally, store "weighted" covariance:
13568 fIntFlowCovariancesNUA->SetBinContent(13,wPrefactor13*covariance13);
13569 } // end of if(TMath::Abs(denominator13)>0.)
13570 } // end of if(TMath::Abs(sumOfW1st13*sumOfW2nd13)>0.)
0328db2d 13571
13572 // Cov(<cos(phi1)>,<cos(phi1+phi2)>):
13573 Double_t product14 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(14); // <<cos(phi1)><cos(phi1+phi2)>>
13574 Double_t term1st14 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13575 Double_t term2nd14 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13576 Double_t sumOfW1st14 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13577 Double_t sumOfW2nd14 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13578 Double_t sumOfWW14 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(14); // W_{<cos(phi1)>} * W_{<cos(phi1+phi2)>}
13579 // numerator in the expression for the the unbiased estimator for covariance:
13580 Double_t numerator14 = product14 - term1st14*term2nd14;
13581 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13582 Double_t denominator14 = 0.;
13583 if(TMath::Abs(sumOfW1st14*sumOfW2nd14)>0.)
13584 {
13585 denominator14 = 1.-sumOfWW14/(sumOfW1st14*sumOfW2nd14);
13586 if(TMath::Abs(denominator14)>0.)
13587 {
13588 // covariance:
13589 Double_t covariance14 = numerator14/denominator14;
13590 // weight dependent prefactor for covariance:
13591 Double_t wPrefactor14 = sumOfWW14/(sumOfW1st14*sumOfW2nd14);
13592 // finally, store "weighted" covariance:
13593 fIntFlowCovariancesNUA->SetBinContent(14,wPrefactor14*covariance14);
13594 } // end of if(TMath::Abs(denominator14)>0.)
13595 } // end of if(TMath::Abs(sumOfW1st14*sumOfW2nd14)>0.)
0328db2d 13596
13597 // Cov(<cos(phi1)>,<sin(phi1+phi2)>):
13598 Double_t product15 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(15); // <<cos(phi1)><sin(phi1+phi2)>>
13599 Double_t term1st15 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13600 Double_t term2nd15 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13601 Double_t sumOfW1st15 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13602 Double_t sumOfW2nd15 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13603 Double_t sumOfWW15 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(15); // W_{<cos(phi1)>} * W_{<sin(phi1+phi2)>}
13604 // numerator in the expression for the the unbiased estimator for covariance:
13605 Double_t numerator15 = product15 - term1st15*term2nd15;
13606 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13607 Double_t denominator15 = 0.;
13608 if(TMath::Abs(sumOfW1st15*sumOfW2nd15)>0.)
13609 {
13610 denominator15 = 1.-sumOfWW15/(sumOfW1st15*sumOfW2nd15);
13611 if(TMath::Abs(denominator15)>0.)
13612 {
13613 // covariance:
13614 Double_t covariance15 = numerator15/denominator15;
13615 // weight dependent prefactor for covariance:
13616 Double_t wPrefactor15 = sumOfWW15/(sumOfW1st15*sumOfW2nd15);
13617 // finally, store "weighted" covariance:
13618 fIntFlowCovariancesNUA->SetBinContent(15,wPrefactor15*covariance15);
13619 } // end of if(TMath::Abs(denominator15)>0.)
13620 } // end of if(TMath::Abs(sumOfW1st15*sumOfW2nd15)>0.)
13621
0328db2d 13622 // Cov(<cos(phi1)>,<cos(phi1-phi2-phi3)>):
13623 Double_t product16 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(16); // <<cos(phi1)><cos(phi1-phi2-phi3)>>
13624 Double_t term1st16 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13625 Double_t term2nd16 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13626 Double_t sumOfW1st16 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13627 Double_t sumOfW2nd16 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13628 Double_t sumOfWW16 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(16); // W_{<cos(phi1)>} * W_{<cos(phi1-phi2-phi3)>}
13629 // numerator in the expression for the the unbiased estimator for covariance:
13630 Double_t numerator16 = product16 - term1st16*term2nd16;
13631 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13632 Double_t denominator16 = 0.;
13633 if(TMath::Abs(sumOfW1st16*sumOfW2nd16)>0.)
13634 {
13635 denominator16 = 1.-sumOfWW16/(sumOfW1st16*sumOfW2nd16);
13636 if(TMath::Abs(denominator16)>0.)
13637 {
13638 // covariance:
13639 Double_t covariance16 = numerator16/denominator16;
13640 // weight dependent prefactor for covariance:
13641 Double_t wPrefactor16 = sumOfWW16/(sumOfW1st16*sumOfW2nd16);
13642 // finally, store "weighted" covariance:
13643 fIntFlowCovariancesNUA->SetBinContent(16,wPrefactor16*covariance16);
13644 } // end of if(TMath::Abs(denominator16)>0.)
13645 } // end ofif(TMath::Abs(sumOfW1st16*sumOfW2nd16)>0.)
13646
0328db2d 13647 // Cov(<cos(phi1)>,<sin(phi1-phi2-phi3)>):
13648 Double_t product17 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(17); // <<cos(phi1)><sin(phi1-phi2-phi3)>>
13649 Double_t term1st17 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(1); // <<cos(phi1)>>
13650 Double_t term2nd17 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13651 Double_t sumOfW1st17 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(1); // W_{<cos(phi1)>}
13652 Double_t sumOfW2nd17 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13653 Double_t sumOfWW17 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(17); // W_{<cos(phi1)>} * W_{<sin(phi1-phi2-phi3)>}
13654 // numerator in the expression for the the unbiased estimator for covariance:
13655 Double_t numerator17 = product17 - term1st17*term2nd17;
13656 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13657 Double_t denominator17 = 0.;
13658 if(TMath::Abs(sumOfW1st17*sumOfW2nd17)>0.)
13659 {
13660 denominator17 = 1.-sumOfWW17/(sumOfW1st17*sumOfW2nd17);
13661 if(TMath::Abs(denominator17)>0.)
13662 {
13663 // covariance:
13664 Double_t covariance17 = numerator17/denominator17;
13665 // weight dependent prefactor for covariance:
13666 Double_t wPrefactor17 = sumOfWW17/(sumOfW1st17*sumOfW2nd17);
13667 // finally, store "weighted" covariance:
13668 fIntFlowCovariancesNUA->SetBinContent(17,wPrefactor17*covariance17);
13669 } // end of if(TMath::Abs(denominator17)>0.)
13670 } // end of if(TMath::Abs(sumOfW1st17*sumOfW2nd17)>0.)
0328db2d 13671
13672 // Cov(<sin(phi1)>,<cos(phi1+phi2)>):
13673 Double_t product18 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(18); // <<sin(phi1)><cos(phi1+phi2)>>
13674 Double_t term1st18 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13675 Double_t term2nd18 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13676 Double_t sumOfW1st18 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13677 Double_t sumOfW2nd18 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13678 Double_t sumOfWW18 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(18); // W_{<sin(phi1)>} * W_{<cos(phi1+phi2)>}
13679 // numerator in the expression for the the unbiased estimator for covariance:
13680 Double_t numerator18 = product18 - term1st18*term2nd18;
13681 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13682 Double_t denominator18 = 0.;
13683 if(TMath::Abs(sumOfW1st18*sumOfW2nd18)>0.)
13684 {
13685 denominator18 = 1.-sumOfWW18/(sumOfW1st18*sumOfW2nd18);
13686 if(TMath::Abs(denominator18)>0.)
13687 {
13688 // covariance:
13689 Double_t covariance18 = numerator18/denominator18;
13690 // weight dependent prefactor for covariance:
13691 Double_t wPrefactor18 = sumOfWW18/(sumOfW1st18*sumOfW2nd18);
13692 // finally, store "weighted" covariance:
13693 fIntFlowCovariancesNUA->SetBinContent(18,wPrefactor18*covariance18);
13694 } // end of if(TMath::Abs(denominator18)>0.)
13695 } // end of if(TMath::Abs(sumOfW1st18*sumOfW2nd18)>0.)
0328db2d 13696
13697 // Cov(<sin(phi1)>,<sin(phi1+phi2)>):
13698 Double_t product19 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(19); // <<sin(phi1)><sin(phi1+phi2)>>
13699 Double_t term1st19 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13700 Double_t term2nd19 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13701 Double_t sumOfW1st19 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13702 Double_t sumOfW2nd19 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13703 Double_t sumOfWW19 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(19); // W_{<sin(phi1)>} * W_{<sin(phi1+phi2)>}
13704 // numerator in the expression for the the unbiased estimator for covariance:
13705 Double_t numerator19 = product19 - term1st19*term2nd19;
13706 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13707 Double_t denominator19 = 0.;
13708 if(TMath::Abs(sumOfW1st19*sumOfW2nd19)>0.)
13709 {
13710 denominator19 = 1.-sumOfWW19/(sumOfW1st19*sumOfW2nd19);
13711 if(TMath::Abs(denominator19)>0.)
13712 {
13713 // covariance:
13714 Double_t covariance19 = numerator19/denominator19;
13715 // weight dependent prefactor for covariance:
13716 Double_t wPrefactor19 = sumOfWW19/(sumOfW1st19*sumOfW2nd19);
13717 // finally, store "weighted" covariance:
13718 fIntFlowCovariancesNUA->SetBinContent(19,wPrefactor19*covariance19);
13719 } // end of if(TMath::Abs(denominator19)>0.)
13720 } // end of if(TMath::Abs(sumOfW1st19*sumOfW2nd19)>0.)
13721
0328db2d 13722 // Cov(<sin(phi1)>,<cos(phi1-phi2-phi3)>):
13723 Double_t product20 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(20); // <<sin(phi1)><cos(phi1-phi2-phi3)>>
13724 Double_t term1st20 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13725 Double_t term2nd20 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13726 Double_t sumOfW1st20 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13727 Double_t sumOfW2nd20 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13728 Double_t sumOfWW20 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(20); // W_{<sin(phi1)>} * W_{<cos(phi1-phi2-phi3)>}
13729 // numerator in the expression for the the unbiased estimator for covariance:
13730 Double_t numerator20 = product20 - term1st20*term2nd20;
13731 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13732 Double_t denominator20 = 0.;
13733 if(TMath::Abs(sumOfW1st20*sumOfW2nd20)>0.)
13734 {
13735 denominator20 = 1.-sumOfWW20/(sumOfW1st20*sumOfW2nd20);
13736 if(TMath::Abs(denominator20)>0.)
13737 {
13738 // covariance:
13739 Double_t covariance20 = numerator20/denominator20;
13740 // weight dependent prefactor for covariance:
13741 Double_t wPrefactor20 = sumOfWW20/(sumOfW1st20*sumOfW2nd20);
13742 // finally, store "weighted" covariance:
13743 fIntFlowCovariancesNUA->SetBinContent(20,wPrefactor20*covariance20);
13744 } // end of if(TMath::Abs(denominator20)>0.)
13745 } // end of if(TMath::Abs(sumOfW1st20*sumOfW2nd20)>0.)
0328db2d 13746
13747 // Cov(<sin(phi1)>,<sin(phi1-phi2-phi3)>):
13748 Double_t product21 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(21); // <<sin(phi1)><sin(phi1-phi2-phi3)>>
13749 Double_t term1st21 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(1); // <<sin(phi1)>>
13750 Double_t term2nd21 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13751 Double_t sumOfW1st21 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(1); // W_{<sin(phi1)>}
13752 Double_t sumOfW2nd21 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13753 Double_t sumOfWW21 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(21); // W_{<sin(phi1)>} * W_{<sin(phi1-phi2-phi3)>}
13754 // numerator in the expression for the the unbiased estimator for covariance:
13755 Double_t numerator21 = product21 - term1st21*term2nd21;
13756 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13757 Double_t denominator21 = 0.;
13758 if(TMath::Abs(sumOfW1st21*sumOfW2nd21)>0.)
13759 {
13760 denominator21 = 1.-sumOfWW21/(sumOfW1st21*sumOfW2nd21);
13761 if(TMath::Abs(denominator21)>0.)
13762 {
13763 // covariance:
13764 Double_t covariance21 = numerator21/denominator21;
13765 // weight dependent prefactor for covariance:
13766 Double_t wPrefactor21 = sumOfWW21/(sumOfW1st21*sumOfW2nd21);
13767 // finally, store "weighted" covariance:
13768 fIntFlowCovariancesNUA->SetBinContent(21,wPrefactor21*covariance21);
13769 } // end of if(TMath::Abs(denominator21)>0.)
13770 } // end of if(TMath::Abs(sumOfW1st21*sumOfW2nd21)>0.)
0328db2d 13771
13772 // Cov(<cos(phi1+phi2)>,<sin(phi1+phi2)>):
13773 Double_t product22 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(22); // <<cos(phi1+phi2)><sin(phi1+phi2)>>
13774 Double_t term1st22 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13775 Double_t term2nd22 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13776 Double_t sumOfW1st22 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13777 Double_t sumOfW2nd22 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13778 Double_t sumOfWW22 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(22); // W_{<cos(phi1+phi2)>} * W_{<sin(phi1+phi2)>}
13779 // numerator in the expression for the the unbiased estimator for covariance:
13780 Double_t numerator22 = product22 - term1st22*term2nd22;
13781 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13782 Double_t denominator22 = 0.;
13783 if(TMath::Abs(sumOfW1st22*sumOfW2nd22)>0.)
13784 {
13785 denominator22 = 1.-sumOfWW22/(sumOfW1st22*sumOfW2nd22);
13786 if(TMath::Abs(denominator22)>0.)
13787 {
13788 // covariance:
13789 Double_t covariance22 = numerator22/denominator22;
13790 // weight dependent prefactor for covariance:
13791 Double_t wPrefactor22 = sumOfWW22/(sumOfW1st22*sumOfW2nd22);
13792 // finally, store "weighted" covariance:
13793 fIntFlowCovariancesNUA->SetBinContent(22,wPrefactor22*covariance22);
13794 } // end of if(TMath::Abs(denominator22)>0.)
13795 } // end of if(TMath::Abs(sumOfW1st22*sumOfW2nd22)>0.)
0328db2d 13796
13797 // Cov(<cos(phi1+phi2)>,<cos(phi1-phi2-phi3)>):
13798 Double_t product23 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(23); // <<cos(phi1+phi2)><cos(phi1-phi2-phi3)>>
13799 Double_t term1st23 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13800 Double_t term2nd23 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13801 Double_t sumOfW1st23 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13802 Double_t sumOfW2nd23 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13803 Double_t sumOfWW23 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(23); // W_{<cos(phi1+phi2)>} * W_{<cos(phi1-phi2-phi3)>}
13804 // numerator in the expression for the the unbiased estimator for covariance:
13805 Double_t numerator23 = product23 - term1st23*term2nd23;
13806 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13807 Double_t denominator23 = 0.;
13808 if(TMath::Abs(sumOfW1st23*sumOfW2nd23)>0.)
13809 {
13810 denominator23 = 1.-sumOfWW23/(sumOfW1st23*sumOfW2nd23);
13811 if(TMath::Abs(denominator23)>0.)
13812 {
13813 // covariance:
13814 Double_t covariance23 = numerator23/denominator23;
13815 // weight dependent prefactor for covariance:
13816 Double_t wPrefactor23 = sumOfWW23/(sumOfW1st23*sumOfW2nd23);
13817 // finally, store "weighted" covariance:
13818 fIntFlowCovariancesNUA->SetBinContent(23,wPrefactor23*covariance23);
13819 } // end of if(TMath::Abs(denominator23)>0.)
13820 } // end of if(TMath::Abs(sumOfW1st23*sumOfW2nd23)>0.)
13821
0328db2d 13822 // Cov(<cos(phi1+phi2)>,<sin(phi1-phi2-phi3)>):
13823 Double_t product24 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(24); // <<cos(phi1+phi2)><sin(phi1-phi2-phi3)>>
13824 Double_t term1st24 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(2); // <<cos(phi1+phi2)>>
13825 Double_t term2nd24 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13826 Double_t sumOfW1st24 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(2); // W_{<cos(phi1+phi2)>}
13827 Double_t sumOfW2nd24 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13828 Double_t sumOfWW24 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(24); // W_{<cos(phi1+phi2)>} * W_{<sin(phi1-phi2-phi3)>}
13829 // numerator in the expression for the the unbiased estimator for covariance:
13830 Double_t numerator24 = product24 - term1st24*term2nd24;
13831 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13832 Double_t denominator24 = 0.;
13833 if(TMath::Abs(sumOfW1st24*sumOfW2nd24)>0.)
13834 {
13835 denominator24 = 1.-sumOfWW24/(sumOfW1st24*sumOfW2nd24);
13836 if(TMath::Abs(denominator24)>0.)
13837 {
13838 // covariance:
13839 Double_t covariance24 = numerator24/denominator24;
13840 // weight dependent prefactor for covariance:
13841 Double_t wPrefactor24 = sumOfWW24/(sumOfW1st24*sumOfW2nd24);
13842 // finally, store "weighted" covariance:
13843 fIntFlowCovariancesNUA->SetBinContent(24,wPrefactor24*covariance24);
13844 } // end of if(TMath::Abs(denominator24)>0.)
13845 } // end of if(TMath::Abs(sumOfW1st24*sumOfW2nd24)>0.)
0328db2d 13846
13847 // Cov(<sin(phi1+phi2)>,<cos(phi1-phi2-phi3)>):
13848 Double_t product25 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(25); // <<sin(phi1+phi2)><cos(phi1-phi2-phi3)>>
13849 Double_t term1st25 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13850 Double_t term2nd25 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
13851 Double_t sumOfW1st25 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13852 Double_t sumOfW2nd25 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
13853 Double_t sumOfWW25 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(25); // W_{<sin(phi1+phi2)>} * W_{<cos(phi1-phi2-phi3)>}
13854 // numerator in the expression for the the unbiased estimator for covariance:
13855 Double_t numerator25 = product25 - term1st25*term2nd25;
13856 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13857 Double_t denominator25 = 0.;
13858 if(TMath::Abs(sumOfW1st25*sumOfW2nd25)>0.)
13859 {
13860 denominator25 = 1.-sumOfWW25/(sumOfW1st25*sumOfW2nd25);
13861 if(TMath::Abs(denominator25)>0.)
13862 {
13863 // covariance:
13864 Double_t covariance25 = numerator25/denominator25;
13865 // weight dependent prefactor for covariance:
13866 Double_t wPrefactor25 = sumOfWW25/(sumOfW1st25*sumOfW2nd25);
13867 // finally, store "weighted" covariance:
13868 fIntFlowCovariancesNUA->SetBinContent(25,wPrefactor25*covariance25);
13869 } // end of if(TMath::Abs(denominator25)>0.)
13870 } // end of if(TMath::Abs(sumOfW1st25*sumOfW2nd25)>0.)
13871
0328db2d 13872 // Cov(<sin(phi1+phi2)>,<sin(phi1-phi2-phi3)>):
13873 Double_t product26 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(26); // <<sin(phi1+phi2)><sin(phi1-phi2-phi3)>>
13874 Double_t term1st26 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(2); // <<sin(phi1+phi2)>>
13875 Double_t term2nd26 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
13876 Double_t sumOfW1st26 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(2); // W_{<sin(phi1+phi2)>}
13877 Double_t sumOfW2nd26 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13878 Double_t sumOfWW26 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(26); // W_{<sin(phi1+phi2)>} * W_{<sin(phi1-phi2-phi3)>}
13879 // numerator in the expression for the the unbiased estimator for covariance:
13880 Double_t numerator26 = product26 - term1st26*term2nd26;
13881 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13882 Double_t denominator26 = 0.;
13883 if(TMath::Abs(sumOfW1st26*sumOfW2nd26)>0.)
13884 {
13885 denominator26 = 1.-sumOfWW26/(sumOfW1st26*sumOfW2nd26);
13886 if(TMath::Abs(denominator26)>0.)
13887 {
13888 // covariance:
13889 Double_t covariance26 = numerator26/denominator26;
13890 // weight dependent prefactor for covariance:
13891 Double_t wPrefactor26 = sumOfWW26/(sumOfW1st26*sumOfW2nd26);
13892 // finally, store "weighted" covariance:
13893 fIntFlowCovariancesNUA->SetBinContent(26,wPrefactor26*covariance26);
13894 } // end of if(TMath::Abs(denominator26)>0.)
13895 } // end of if(TMath::Abs(sumOfW1st26*sumOfW2nd26)>0.)
13896
0328db2d 13897 // Cov(<cos(phi1-phi2-phi3)>,<sin(phi1-phi2-phi3)>):
13898 Double_t product27 = fIntFlowProductOfCorrectionTermsForNUAPro->GetBinContent(27); // <<cos(phi1-phi2-phi3)><sin(phi1-phi2-phi3)>>
b92ea2b9 13899 Double_t term1st27 = fIntFlowCorrectionTermsForNUAPro[1]->GetBinContent(3); // <<cos(phi1-phi2-phi3)>>
0328db2d 13900 Double_t term2nd27 = fIntFlowCorrectionTermsForNUAPro[0]->GetBinContent(3); // <<sin(phi1-phi2-phi3)>>
b92ea2b9 13901 Double_t sumOfW1st27 = fIntFlowSumOfEventWeightsNUA[1][0]->GetBinContent(3); // W_{<cos(phi1-phi2-phi3)>}
0328db2d 13902 Double_t sumOfW2nd27 = fIntFlowSumOfEventWeightsNUA[0][0]->GetBinContent(3); // W_{<sin(phi1-phi2-phi3)>}
13903 Double_t sumOfWW27 = fIntFlowSumOfProductOfEventWeightsNUA->GetBinContent(27); // W_{<cos(phi1-phi2-phi3)>} * W_{<sin(phi1-phi2-phi3)>}
13904 // numerator in the expression for the the unbiased estimator for covariance:
13905 Double_t numerator27 = product27 - term1st27*term2nd27;
13906 // denominator in the expression for the the unbiased estimator for covariance:
b92ea2b9 13907 Double_t denominator27 = 0.;
13908 if(TMath::Abs(sumOfW1st27*sumOfW2nd27)>0.)
13909 {
13910 denominator27 = 1.-sumOfWW27/(sumOfW1st27*sumOfW2nd27);
13911 if(TMath::Abs(denominator27)>0.)
13912 {
13913 // covariance:
13914 Double_t covariance27 = numerator27/denominator27;
13915 // weight dependent prefactor for covariance:
13916 Double_t wPrefactor27 = sumOfWW27/(sumOfW1st27*sumOfW2nd27);
13917 // finally, store "weighted" covariance:
13918 fIntFlowCovariancesNUA->SetBinContent(27,wPrefactor27*covariance27);
13919 } // end of if(TMath::Abs(denominator27)>0.)
13920 } // end of if(TMath::Abs(sumOfW1st27*sumOfW2nd27)>0.)
13921
0328db2d 13922} // end of AliFlowAnalysisWithQCumulants::CalculateCovariancesNUAIntFlow()
13923
e1d101a6 13924//=======================================================================================================================
0328db2d 13925
489d5531 13926void AliFlowAnalysisWithQCumulants::FinalizeCorrelationsIntFlow()
13927{
13928 // From profile fIntFlowCorrelationsPro access measured correlations and spread,
13929 // correctly calculate the statistical errors and store the final results and
13930 // statistical errors for correlations in histogram fIntFlowCorrelationsHist.
13931 //
13932 // Remark: Statistical error of correlation is calculated as:
13933 //
13934 // statistical error = termA * spread * termB:
13935 // termA = sqrt{sum_{i=1}^{N} w^2}/(sum_{i=1}^{N} w)
13936 // termB = 1/sqrt(1-termA^2)
b3dacf6b 13937 //
13938
489d5531 13939 for(Int_t ci=1;ci<=4;ci++) // correlation index
13940 {
b40a910e 13941 if(fIntFlowCorrelationsPro->GetBinEffectiveEntries(ci) < 2 || fIntFlowSquaredCorrelationsPro->GetBinEffectiveEntries(ci) < 2)
13942 {
13943 fIntFlowCorrelationsPro->SetBinError(ci,0.);
13944 fIntFlowSquaredCorrelationsPro->SetBinError(ci,0.);
13945 continue;
13946 }
489d5531 13947 Double_t correlation = fIntFlowCorrelationsPro->GetBinContent(ci);
b40a910e 13948 Double_t squaredCorrelation = fIntFlowSquaredCorrelationsPro->GetBinContent(ci);
13949 Double_t spread = 0.;
13950 if(squaredCorrelation-correlation*correlation >= 0.)
13951 {
13952 spread = pow(squaredCorrelation-correlation*correlation,0.5);
13953 } else
13954 {
13955 cout<<endl;
13956 cout<<Form(" WARNING: Imaginary 'spread' for %d-particle correlation!!!! ",2*ci)<<endl;
13957 cout<<endl;
13958 }
489d5531 13959 Double_t sumOfLinearEventWeights = fIntFlowSumOfEventWeights[0]->GetBinContent(ci);
13960 Double_t sumOfQuadraticEventWeights = fIntFlowSumOfEventWeights[1]->GetBinContent(ci);
13961 Double_t termA = 0.;
13962 Double_t termB = 0.;
b3dacf6b 13963 if(TMath::Abs(sumOfLinearEventWeights) > 0.) // to be improved - shall I omitt here Abs() ?
489d5531 13964 {
13965 termA = pow(sumOfQuadraticEventWeights,0.5)/sumOfLinearEventWeights;
13966 } else
13967 {
b3dacf6b 13968 cout<<endl;
13969 cout<<" WARNING (QC): sumOfLinearEventWeights == 0 in method FinalizeCorrelationsIntFlow() !!!!"<<endl;
13970 cout<<" (for "<<2*ci<<"-particle correlation)"<<endl;
13971 cout<<endl;
489d5531 13972 }
13973 if(1.-pow(termA,2.) > 0.)
13974 {
13975 termB = 1./pow(1-pow(termA,2.),0.5);
13976 } else
13977 {
b3dacf6b 13978 cout<<endl;
13979 cout<<" WARNING (QC): 1.-pow(termA,2.) <= 0 in method FinalizeCorrelationsIntFlow() !!!!"<<endl;
13980 cout<<" (for "<<2*ci<<"-particle correlation)"<<endl;
13981 cout<<endl;
489d5531 13982 }
13983 Double_t statisticalError = termA * spread * termB;
13984 fIntFlowCorrelationsHist->SetBinContent(ci,correlation);
13985 fIntFlowCorrelationsHist->SetBinError(ci,statisticalError);
ff70ca91 13986 } // end of for(Int_t ci=1;ci<=4;ci++) // correlation index
13987
b3dacf6b 13988 // Versus multiplicity:
13989 if(!fCalculateCumulantsVsM){return;}
ff70ca91 13990 for(Int_t ci=0;ci<=3;ci++) // correlation index
13991 {
13992 Int_t nBins = fIntFlowCorrelationsVsMPro[ci]->GetNbinsX();
13993 for(Int_t b=1;b<=nBins;b++) // looping over multiplicity bins
13994 {
b40a910e 13995 if(fIntFlowCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b) < 2 || fIntFlowSquaredCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b) < 2)
13996 {
13997 fIntFlowCorrelationsVsMPro[ci]->SetBinError(b,0.);
13998 fIntFlowSquaredCorrelationsVsMPro[ci]->SetBinError(b,0.);
13999 continue;
14000 }
ff70ca91 14001 Double_t correlationVsM = fIntFlowCorrelationsVsMPro[ci]->GetBinContent(b);
b40a910e 14002 Double_t squaredCorrelationVsM = fIntFlowSquaredCorrelationsVsMPro[ci]->GetBinContent(b);
14003 Double_t spreadVsM = 0.;
14004 if(squaredCorrelationVsM-correlationVsM*correlationVsM >= 0.)
14005 {
14006 spreadVsM = pow(squaredCorrelationVsM-correlationVsM*correlationVsM,0.5);
14007 } else
14008 {
14009 cout<<endl;
14010 cout<<Form(" WARNING (QC): Imaginary 'spreadVsM' for ci = %d, bin = %d, entries = %f !!!!",
14011 ci,b,fIntFlowCorrelationsVsMPro[ci]->GetBinEffectiveEntries(b))<<endl;
14012 cout<<endl;
14013 }
ff70ca91 14014 Double_t sumOfLinearEventWeightsVsM = fIntFlowSumOfEventWeightsVsM[ci][0]->GetBinContent(b);
14015 Double_t sumOfQuadraticEventWeightsVsM = fIntFlowSumOfEventWeightsVsM[ci][1]->GetBinContent(b);
14016 Double_t termAVsM = 0.;
14017 Double_t termBVsM = 0.;
b40a910e 14018 if(sumOfLinearEventWeightsVsM > 0.)
ff70ca91 14019 {
14020 termAVsM = pow(sumOfQuadraticEventWeightsVsM,0.5)/sumOfLinearEventWeightsVsM;
b3dacf6b 14021 }
ff70ca91 14022 if(1.-pow(termAVsM,2.) > 0.)
14023 {
14024 termBVsM = 1./pow(1-pow(termAVsM,2.),0.5);
b3dacf6b 14025 }
ff70ca91 14026 Double_t statisticalErrorVsM = termAVsM * spreadVsM * termBVsM;
14027 fIntFlowCorrelationsVsMHist[ci]->SetBinContent(b,correlationVsM);
14028 fIntFlowCorrelationsVsMHist[ci]->SetBinError(b,statisticalErrorVsM);
14029 } // end of for(Int_t b=1;b<=nBins;b++)
14030 } // end of for(Int_t ci=1;ci<=4;ci++) // correlation index
14031
489d5531 14032} // end of AliFlowAnalysisWithQCumulants::FinalizeCorrelationsIntFlow()
14033
e1d101a6 14034//=======================================================================================================================
489d5531 14035
489d5531 14036void AliFlowAnalysisWithQCumulants::FillAverageMultiplicities(Int_t nRP)
14037{
b77b6434 14038 // Fill profile fAverageMultiplicity to hold average multiplicities and
14039 // number of events for events with nRP>=0, nRP>=1, ... , and nRP>=8
489d5531 14040
14041 // Binning of fAverageMultiplicity is organized as follows:
14042 // 1st bin: all events (including the empty ones)
14043 // 2nd bin: event with # of RPs greater or equal to 1
14044 // 3rd bin: event with # of RPs greater or equal to 2
14045 // 4th bin: event with # of RPs greater or equal to 3
14046 // 5th bin: event with # of RPs greater or equal to 4
14047 // 6th bin: event with # of RPs greater or equal to 5
14048 // 7th bin: event with # of RPs greater or equal to 6
14049 // 8th bin: event with # of RPs greater or equal to 7
14050 // 9th bin: event with # of RPs greater or equal to 8
14051
489d5531 14052 if(nRP<0)
14053 {
b77b6434 14054 cout<<endl;
14055 cout<<" WARNING (QC): nRP<0 in in AFAWQC::FAM() !!!!"<<endl;
14056 cout<<endl;
489d5531 14057 exit(0);
14058 }
14059
14060 for(Int_t i=0;i<9;i++)
14061 {
b77b6434 14062 if(nRP>=i){fAvMultiplicity->Fill(i+0.5,nRP,1);}
489d5531 14063 }
14064
14065} // end of AliFlowAnalysisWithQCumulants::FillAverageMultiplicities(nRP)
14066
e1d101a6 14067//=======================================================================================================================
489d5531 14068
489d5531 14069void AliFlowAnalysisWithQCumulants::CalculateCumulantsIntFlow()
b3dacf6b 14070{
b92ea2b9 14071 // a) Calculate Q-cumulants from the measured multiparticle correlations;
14072 // b) Propagate the statistical errors from measured multiparticle correlations to statistical errors of Q-cumulants;
14073 // c) Remark: Q-cumulants calculated in this method are biased by non-uniform acceptance of detector !!!!
14074 // Method CalculateQcumulantsCorrectedForNUAIntFlow() is called afterwards to correct for this bias;
14075 // d) Store the results and statistical error of Q-cumulants in histogram fIntFlowQcumulants.
14076 // Binning of fIntFlowQcumulants is organized as follows:
489d5531 14077 //
b3dacf6b 14078 // 1st bin: QC{2}
14079 // 2nd bin: QC{4}
14080 // 3rd bin: QC{6}
14081 // 4th bin: QC{8}
14082 //
489d5531 14083
b3dacf6b 14084 // Correlations:
489d5531 14085 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
14086 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
14087 Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
14088 Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
b3dacf6b 14089 // Statistical errors of average 2-, 4-, 6- and 8-particle azimuthal correlations:
489d5531 14090 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1); // statistical error of <2>
14091 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2); // statistical error of <4>
14092 Double_t sixError = fIntFlowCorrelationsHist->GetBinError(3); // statistical error of <6>
14093 Double_t eightError = fIntFlowCorrelationsHist->GetBinError(4); // statistical error of <8>
b3dacf6b 14094 // Covariances (multiplied by prefactor depending on weights - see comments in CalculateCovariancesIntFlow()):
8e1cefdd 14095 Double_t wCov24 = 0.; // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14096 Double_t wCov26 = 0.; // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14097 Double_t wCov28 = 0.; // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14098 Double_t wCov46 = 0.; // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14099 Double_t wCov48 = 0.; // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14100 Double_t wCov68 = 0.; // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
14101 if(!fForgetAboutCovariances)
14102 {
14103 wCov24 = fIntFlowCovariances->GetBinContent(1); // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14104 wCov26 = fIntFlowCovariances->GetBinContent(2); // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14105 wCov28 = fIntFlowCovariances->GetBinContent(3); // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14106 wCov46 = fIntFlowCovariances->GetBinContent(4); // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14107 wCov48 = fIntFlowCovariances->GetBinContent(5); // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14108 wCov68 = fIntFlowCovariances->GetBinContent(6); // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
14109 }
489d5531 14110 // Q-cumulants:
14111 Double_t qc2 = 0.; // QC{2}
14112 Double_t qc4 = 0.; // QC{4}
14113 Double_t qc6 = 0.; // QC{6}
14114 Double_t qc8 = 0.; // QC{8}
b3dacf6b 14115 if(TMath::Abs(two) > 0.){qc2 = two;}
14116 if(TMath::Abs(four) > 0.){qc4 = four-2.*pow(two,2.);}
14117 if(TMath::Abs(six) > 0.){qc6 = six-9.*two*four+12.*pow(two,3.);}
14118 if(TMath::Abs(eight) > 0.){qc8 = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);}
14119 // Statistical errors of Q-cumulants:
489d5531 14120 Double_t qc2Error = 0.;
14121 Double_t qc4Error = 0.;
14122 Double_t qc6Error = 0.;
b3dacf6b 14123 Double_t qc8Error = 0.;
14124 // Squared statistical errors of Q-cumulants:
489d5531 14125 //Double_t qc2ErrorSquared = 0.;
14126 Double_t qc4ErrorSquared = 0.;
14127 Double_t qc6ErrorSquared = 0.;
b3dacf6b 14128 Double_t qc8ErrorSquared = 0.;
14129 // Statistical error of QC{2}:
14130 qc2Error = twoError;
14131 // Statistical error of QC{4}:
489d5531 14132 qc4ErrorSquared = 16.*pow(two,2.)*pow(twoError,2)+pow(fourError,2.)
14133 - 8.*two*wCov24;
14134 if(qc4ErrorSquared>0.)
14135 {
14136 qc4Error = pow(qc4ErrorSquared,0.5);
14137 } else
14138 {
b3dacf6b 14139 cout<<" WARNING (QC): Statistical error of QC{4} is imaginary !!!!"<<endl;
14140 }
14141 // Statistical error of QC{6}:
489d5531 14142 qc6ErrorSquared = 81.*pow(4.*pow(two,2.)-four,2.)*pow(twoError,2.)
14143 + 81.*pow(two,2.)*pow(fourError,2.)
14144 + pow(sixError,2.)
14145 - 162.*two*(4.*pow(two,2.)-four)*wCov24
14146 + 18.*(4.*pow(two,2.)-four)*wCov26
b3dacf6b 14147 - 18.*two*wCov46;
489d5531 14148 if(qc6ErrorSquared>0.)
14149 {
14150 qc6Error = pow(qc6ErrorSquared,0.5);
14151 } else
14152 {
b3dacf6b 14153 cout<<" WARNING (QC): Statistical error of QC{6} is imaginary !!!!"<<endl;
14154 }
14155 // Statistical error of QC{8}:
489d5531 14156 qc8ErrorSquared = 256.*pow(36.*pow(two,3.)-18.*four*two+six,2.)*pow(twoError,2.)
14157 + 1296.*pow(4.*pow(two,2.)-four,2.)*pow(fourError,2.)
14158 + 256.*pow(two,2.)*pow(sixError,2.)
14159 + pow(eightError,2.)
14160 - 1152.*(36.*pow(two,3.)-18.*four*two+six)*(4.*pow(two,2.)-four)*wCov24
14161 + 512.*two*(36.*pow(two,3.)-18.*four*two+six)*wCov26
14162 - 32.*(36.*pow(two,3.)-18.*four*two+six)*wCov28
14163 - 1152.*two*(4.*pow(two,2.)-four)*wCov46
14164 + 72.*(4.*pow(two,2.)-four)*wCov48
14165 - 32.*two*wCov68;
14166 if(qc8ErrorSquared>0.)
14167 {
14168 qc8Error = pow(qc8ErrorSquared,0.5);
14169 } else
14170 {
b3dacf6b 14171 cout<<"WARNING (QC): Statistical error of QC{8} is imaginary !!!!"<<endl;
489d5531 14172 }
b3dacf6b 14173 // Store the results and statistical errors for Q-cumulants:
14174 if(TMath::Abs(qc2)>0.)
14175 {
14176 fIntFlowQcumulants->SetBinContent(1,qc2);
14177 fIntFlowQcumulants->SetBinError(1,qc2Error);
14178 }
14179 if(TMath::Abs(qc4)>0.)
14180 {
14181 fIntFlowQcumulants->SetBinContent(2,qc4);
14182 fIntFlowQcumulants->SetBinError(2,qc4Error);
14183 }
14184 if(TMath::Abs(qc6)>0.)
14185 {
14186 fIntFlowQcumulants->SetBinContent(3,qc6);
14187 fIntFlowQcumulants->SetBinError(3,qc6Error);
14188 }
14189 if(TMath::Abs(qc8)>0.)
14190 {
14191 fIntFlowQcumulants->SetBinContent(4,qc8);
14192 fIntFlowQcumulants->SetBinError(4,qc8Error);
14193 }
14194
14195 // Versus multiplicity:
14196 if(!fCalculateCumulantsVsM){return;}
9da1a4f3 14197 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
b3dacf6b 14198 Double_t value[4] = {0.}; // QCs vs M
14199 Double_t error[4] = {0.}; // error of QCs vs M
14200 Double_t dSum1[4] = {0.}; // sum value_i/(error_i)^2
14201 Double_t dSum2[4] = {0.}; // sum 1/(error_i)^2
9da1a4f3 14202 for(Int_t b=1;b<=nBins;b++)
14203 {
b3dacf6b 14204 // Correlations:
9da1a4f3 14205 two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>>
14206 four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>>
14207 six = fIntFlowCorrelationsVsMHist[2]->GetBinContent(b); // <<6>>
14208 eight = fIntFlowCorrelationsVsMHist[3]->GetBinContent(b); // <<8>>
b3dacf6b 14209 // Statistical errors of average 2-, 4-, 6- and 8-particle azimuthal correlations:
9da1a4f3 14210 twoError = fIntFlowCorrelationsVsMHist[0]->GetBinError(b); // statistical error of <2>
14211 fourError = fIntFlowCorrelationsVsMHist[1]->GetBinError(b); // statistical error of <4>
14212 sixError = fIntFlowCorrelationsVsMHist[2]->GetBinError(b); // statistical error of <6>
14213 eightError = fIntFlowCorrelationsVsMHist[3]->GetBinError(b); // statistical error of <8>
b3dacf6b 14214 // Covariances (multiplied by prefactor depending on weights - see comments in CalculateCovariancesIntFlow()):
8e1cefdd 14215 if(!fForgetAboutCovariances)
14216 {
14217 wCov24 = fIntFlowCovariancesVsM[0]->GetBinContent(b); // Cov(<2>,<4>) * prefactor(w_<2>,w_<4>)
14218 wCov26 = fIntFlowCovariancesVsM[1]->GetBinContent(b); // Cov(<2>,<6>) * prefactor(w_<2>,w_<6>)
14219 wCov28 = fIntFlowCovariancesVsM[2]->GetBinContent(b); // Cov(<2>,<8>) * prefactor(w_<2>,w_<8>)
14220 wCov46 = fIntFlowCovariancesVsM[3]->GetBinContent(b); // Cov(<4>,<6>) * prefactor(w_<4>,w_<6>)
14221 wCov48 = fIntFlowCovariancesVsM[4]->GetBinContent(b); // Cov(<4>,<8>) * prefactor(w_<4>,w_<8>)
14222 wCov68 = fIntFlowCovariancesVsM[5]->GetBinContent(b); // Cov(<6>,<8>) * prefactor(w_<6>,w_<8>)
14223 }
9da1a4f3 14224 // Q-cumulants:
14225 qc2 = 0.; // QC{2}
14226 qc4 = 0.; // QC{4}
14227 qc6 = 0.; // QC{6}
14228 qc8 = 0.; // QC{8}
b3dacf6b 14229 if(TMath::Abs(two) > 0.){qc2 = two;}
14230 if(TMath::Abs(four) > 0.){qc4 = four-2.*pow(two,2.);}
14231 if(TMath::Abs(six) > 0.){qc6 = six-9.*two*four+12.*pow(two,3.);}
14232 if(TMath::Abs(eight) > 0.){qc8 = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.);}
14233 // Statistical errors of Q-cumulants:
9da1a4f3 14234 qc2Error = 0.;
14235 qc4Error = 0.;
14236 qc6Error = 0.;
b3dacf6b 14237 qc8Error = 0.;
14238 // Squared statistical errors of Q-cumulants:
9da1a4f3 14239 //Double_t qc2ErrorSquared = 0.;
14240 qc4ErrorSquared = 0.;
14241 qc6ErrorSquared = 0.;
b3dacf6b 14242 qc8ErrorSquared = 0.;
14243 // Statistical error of QC{2}:
14244 qc2Error = twoError;
14245 // Statistical error of QC{4}:
9da1a4f3 14246 qc4ErrorSquared = 16.*pow(two,2.)*pow(twoError,2)+pow(fourError,2.)
14247 - 8.*two*wCov24;
14248 if(qc4ErrorSquared>0.)
14249 {
14250 qc4Error = pow(qc4ErrorSquared,0.5);
14251 } else
14252 {
14253 // cout<<"WARNING: Statistical error of QC{4} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
b3dacf6b 14254 }
14255 // Statistical error of QC{6}:
9da1a4f3 14256 qc6ErrorSquared = 81.*pow(4.*pow(two,2.)-four,2.)*pow(twoError,2.)
14257 + 81.*pow(two,2.)*pow(fourError,2.)
14258 + pow(sixError,2.)
14259 - 162.*two*(4.*pow(two,2.)-four)*wCov24
14260 + 18.*(4.*pow(two,2.)-four)*wCov26
b3dacf6b 14261 - 18.*two*wCov46;
9da1a4f3 14262 if(qc6ErrorSquared>0.)
14263 {
14264 qc6Error = pow(qc6ErrorSquared,0.5);
14265 } else
14266 {
14267 // cout<<"WARNING: Statistical error of QC{6} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
b3dacf6b 14268 }
14269 // Statistical error of QC{8}:
9da1a4f3 14270 qc8ErrorSquared = 256.*pow(36.*pow(two,3.)-18.*four*two+six,2.)*pow(twoError,2.)
14271 + 1296.*pow(4.*pow(two,2.)-four,2.)*pow(fourError,2.)
14272 + 256.*pow(two,2.)*pow(sixError,2.)
14273 + pow(eightError,2.)
14274 - 1152.*(36.*pow(two,3.)-18.*four*two+six)*(4.*pow(two,2.)-four)*wCov24
14275 + 512.*two*(36.*pow(two,3.)-18.*four*two+six)*wCov26
14276 - 32.*(36.*pow(two,3.)-18.*four*two+six)*wCov28
14277 - 1152.*two*(4.*pow(two,2.)-four)*wCov46
14278 + 72.*(4.*pow(two,2.)-four)*wCov48
14279 - 32.*two*wCov68;
14280 if(qc8ErrorSquared>0.)
14281 {
14282 qc8Error = pow(qc8ErrorSquared,0.5);
14283 } else
14284 {
14285 // cout<<"WARNING: Statistical error of QC{8} is imaginary in multiplicity bin "<<b<<" !!!!"<<endl;
14286 }
b3dacf6b 14287 // Store the results and statistical errors for Q-cumulants:
14288 if(TMath::Abs(qc2)>0.)
14289 {
14290 fIntFlowQcumulantsVsM[0]->SetBinContent(b,qc2);
14291 fIntFlowQcumulantsVsM[0]->SetBinError(b,qc2Error);
14292 }
14293 if(TMath::Abs(qc4)>0.)
14294 {
14295 fIntFlowQcumulantsVsM[1]->SetBinContent(b,qc4);
14296 fIntFlowQcumulantsVsM[1]->SetBinError(b,qc4Error);
14297 }
14298 if(TMath::Abs(qc6)>0.)
14299 {
14300 fIntFlowQcumulantsVsM[2]->SetBinContent(b,qc6);
14301 fIntFlowQcumulantsVsM[2]->SetBinError(b,qc6Error);
14302 }
14303 if(TMath::Abs(qc8)>0.)
14304 {
14305 fIntFlowQcumulantsVsM[3]->SetBinContent(b,qc8);
14306 fIntFlowQcumulantsVsM[3]->SetBinError(b,qc8Error);
14307 }
14308 // Rebin in M:
14309 for(Int_t co=0;co<4;co++)
14310 {
b40a910e 14311 if(fIntFlowCorrelationsVsMPro[co]->GetBinEffectiveEntries(b)<2){continue;}
b3dacf6b 14312 value[co] = fIntFlowQcumulantsVsM[co]->GetBinContent(b);
14313 error[co] = fIntFlowQcumulantsVsM[co]->GetBinError(b);
14314 if(error[co]>0.)
14315 {
14316 dSum1[co]+=value[co]/(error[co]*error[co]);
14317 dSum2[co]+=1./(error[co]*error[co]);
14318 }
14319 } // end of for(Int_t co=0;co<4;co++)
9da1a4f3 14320 } // end of for(Int_t b=1;b<=nBins;b++)
b3dacf6b 14321 // Store rebinned Q-cumulants:
14322 for(Int_t co=0;co<4;co++)
14323 {
14324 if(dSum2[co]>0.)
14325 {
14326 fIntFlowQcumulantsRebinnedInM->SetBinContent(co+1,dSum1[co]/dSum2[co]);
14327 fIntFlowQcumulantsRebinnedInM->SetBinError(co+1,pow(1./dSum2[co],0.5));
14328 }
14329 } // end of for(Int_t co=0;co<4;co++)
14330
489d5531 14331} // end of AliFlowAnalysisWithQCumulants::CalculateCumulantsIntFlow()
14332
489d5531 14333//================================================================================================================================
14334
b92ea2b9 14335void AliFlowAnalysisWithQCumulants::CalculateReferenceFlow()
489d5531 14336{
b92ea2b9 14337 // a) Calculate the final results for reference flow estimates from Q-cumulants;
14338 // b) Propagate the statistical errors to reference flow estimates from statistical error of Q-cumulants;
0328db2d 14339 // c) Store the results and statistical errors of reference flow estimates in histogram fIntFlow.
489d5531 14340 // Binning of fIntFlow is organized as follows:
14341 //
b3dacf6b 14342 // 1st bin: v{2,QC}
14343 // 2nd bin: v{4,QC}
14344 // 3rd bin: v{6,QC}
14345 // 4th bin: v{8,QC}
14346 //
489d5531 14347
b3dacf6b 14348 // Reference flow estimates:
489d5531 14349 Double_t v2 = 0.; // v{2,QC}
14350 Double_t v4 = 0.; // v{4,QC}
14351 Double_t v6 = 0.; // v{6,QC}
14352 Double_t v8 = 0.; // v{8,QC}
b3dacf6b 14353 // Reference flow's statistical errors:
14354 Double_t v2Error = 0.; // v{2,QC} stat. error
14355 Double_t v4Error = 0.; // v{4,QC} stat. error
14356 Double_t v6Error = 0.; // v{6,QC} stat. error
14357 Double_t v8Error = 0.; // v{8,QC} stat. error
14358
b92ea2b9 14359 // Q-cumulants:
14360 Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); // QC{2}
14361 Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); // QC{4}
14362 Double_t qc6 = fIntFlowQcumulants->GetBinContent(3); // QC{6}
14363 Double_t qc8 = fIntFlowQcumulants->GetBinContent(4); // QC{8}
14364 // Q-cumulants's statistical errors:
14365 Double_t qc2Error = fIntFlowQcumulants->GetBinError(1); // QC{2} stat. error
14366 Double_t qc4Error = fIntFlowQcumulants->GetBinError(2); // QC{4} stat. error
14367 Double_t qc6Error = fIntFlowQcumulants->GetBinError(3); // QC{6} stat. error
14368 Double_t qc8Error = fIntFlowQcumulants->GetBinError(4); // QC{8} stat. error
14369 // Calculate reference flow estimates from Q-cumulants:
1268c371 14370 if(qc2>=0.){v2 = pow(qc2,0.5);}
b92ea2b9 14371 if(qc4<=0.){v4 = pow(-1.*qc4,1./4.);}
14372 if(qc6>=0.){v6 = pow((1./4.)*qc6,1./6.);}
14373 if(qc8<=0.){v8 = pow((-1./33.)*qc8,1./8.);}
14374 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14375 if(qc2>0.){v2Error = (1./2.)*pow(qc2,-0.5)*qc2Error;}
b92ea2b9 14376 if(qc4<0.){v4Error = (1./4.)*pow(-qc4,-3./4.)*qc4Error;}
14377 if(qc6>0.){v6Error = (1./6.)*pow(2.,-1./3.)*pow(qc6,-5./6.)*qc6Error;}
14378 if(qc8<0.){v8Error = (1./8.)*pow(33.,-1./8.)*pow(-qc8,-7./8.)*qc8Error;}
14379 // Print warnings for the 'wrong sign' cumulants:
14380 if(TMath::Abs(v2) < 1.e-44)
14381 {
14382 cout<<" WARNING: Wrong sign QC{2}, couldn't calculate v{2,QC} !!!!"<<endl;
14383 }
14384 if(TMath::Abs(v4) < 1.e-44)
14385 {
14386 cout<<" WARNING: Wrong sign QC{4}, couldn't calculate v{4,QC} !!!!"<<endl;
14387 }
14388 if(TMath::Abs(v6) < 1.e-44)
14389 {
14390 cout<<" WARNING: Wrong sign QC{6}, couldn't calculate v{6,QC} !!!!"<<endl;
14391 }
14392 if(TMath::Abs(v8) < 1.e-44)
14393 {
14394 cout<<" WARNING: Wrong sign QC{8}, couldn't calculate v{8,QC} !!!!"<<endl;
14395 }
14396 // Store the results and statistical errors of integrated flow estimates:
14397 fIntFlow->SetBinContent(1,v2);
14398 fIntFlow->SetBinError(1,v2Error);
14399 fIntFlow->SetBinContent(2,v4);
14400 fIntFlow->SetBinError(2,v4Error);
14401 fIntFlow->SetBinContent(3,v6);
14402 fIntFlow->SetBinError(3,v6Error);
14403 fIntFlow->SetBinContent(4,v8);
14404 fIntFlow->SetBinError(4,v8Error);
14405
14406 // Versus multiplicity:
14407 if(!fCalculateCumulantsVsM){return;}
14408 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
14409 for(Int_t b=1;b<=nBins;b++)
9da1a4f3 14410 {
14411 // Q-cumulants:
b92ea2b9 14412 Double_t qc2VsM = fIntFlowQcumulantsVsM[0]->GetBinContent(b); // QC{2}
14413 Double_t qc4VsM = fIntFlowQcumulantsVsM[1]->GetBinContent(b); // QC{4}
14414 Double_t qc6VsM = fIntFlowQcumulantsVsM[2]->GetBinContent(b); // QC{6}
14415 Double_t qc8VsM = fIntFlowQcumulantsVsM[3]->GetBinContent(b); // QC{8}
b3dacf6b 14416 // Q-cumulants's statistical errors:
b92ea2b9 14417 Double_t qc2ErrorVsM = fIntFlowQcumulantsVsM[0]->GetBinError(b); // QC{2} stat. error
14418 Double_t qc4ErrorVsM = fIntFlowQcumulantsVsM[1]->GetBinError(b); // QC{4} stat. error
14419 Double_t qc6ErrorVsM = fIntFlowQcumulantsVsM[2]->GetBinError(b); // QC{6} stat. error
14420 Double_t qc8ErrorVsM = fIntFlowQcumulantsVsM[3]->GetBinError(b); // QC{8} stat. error
b3dacf6b 14421 // Reference flow estimates:
b92ea2b9 14422 Double_t v2VsM = 0.; // v{2,QC}
14423 Double_t v4VsM = 0.; // v{4,QC}
14424 Double_t v6VsM = 0.; // v{6,QC}
14425 Double_t v8VsM = 0.; // v{8,QC}
14426 // Reference flow estimates errors:
14427 Double_t v2ErrorVsM = 0.; // v{2,QC} stat. error
14428 Double_t v4ErrorVsM = 0.; // v{4,QC} stat. error
14429 Double_t v6ErrorVsM = 0.; // v{6,QC} stat. error
14430 Double_t v8ErrorVsM = 0.; // v{8,QC} stat. error
b3dacf6b 14431 // Calculate reference flow estimates from Q-cumulants:
1268c371 14432 if(qc2VsM>=0.){v2VsM = pow(qc2VsM,0.5);}
b92ea2b9 14433 if(qc4VsM<=0.){v4VsM = pow(-1.*qc4VsM,1./4.);}
14434 if(qc6VsM>=0.){v6VsM = pow((1./4.)*qc6VsM,1./6.);}
14435 if(qc8VsM<=0.){v8VsM = pow((-1./33.)*qc8VsM,1./8.);}
b3dacf6b 14436 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14437 if(qc2VsM>0.){v2ErrorVsM = (1./2.)*pow(qc2VsM,-0.5)*qc2ErrorVsM;}
b92ea2b9 14438 if(qc4VsM<0.){v4ErrorVsM = (1./4.)*pow(-qc4VsM,-3./4.)*qc4ErrorVsM;}
14439 if(qc6VsM>0.){v6ErrorVsM = (1./6.)*pow(2.,-1./3.)*pow(qc6VsM,-5./6.)*qc6ErrorVsM;}
14440 if(qc8VsM<0.){v8ErrorVsM = (1./8.)*pow(33.,-1./8.)*pow(-qc8VsM,-7./8.)*qc8ErrorVsM;}
b3dacf6b 14441 // Store the results and statistical errors of integrated flow estimates:
b92ea2b9 14442 fIntFlowVsM[0]->SetBinContent(b,v2VsM);
14443 fIntFlowVsM[0]->SetBinError(b,v2ErrorVsM);
14444 fIntFlowVsM[1]->SetBinContent(b,v4VsM);
14445 fIntFlowVsM[1]->SetBinError(b,v4ErrorVsM);
14446 fIntFlowVsM[2]->SetBinContent(b,v6VsM);
14447 fIntFlowVsM[2]->SetBinError(b,v6ErrorVsM);
14448 fIntFlowVsM[3]->SetBinContent(b,v8VsM);
14449 fIntFlowVsM[3]->SetBinError(b,v8ErrorVsM);
14450 } // end of for(Int_t b=1;b<=nBins;b++)
14451
14452 // 'Rebinned in M' calculation: // to be improved - this can be implemented better:
14453 // Reference flow estimates:
14454 Double_t v2RebinnedInM = 0.; // v{2,QC}
14455 Double_t v4RebinnedInM = 0.; // v{4,QC}
14456 Double_t v6RebinnedInM = 0.; // v{6,QC}
14457 Double_t v8RebinnedInM = 0.; // v{8,QC}
14458 // Reference flow's statistical errors:
14459 Double_t v2ErrorRebinnedInM = 0.; // v{2,QC} stat. error
14460 Double_t v4ErrorRebinnedInM = 0.; // v{4,QC} stat. error
14461 Double_t v6ErrorRebinnedInM = 0.; // v{6,QC} stat. error
14462 Double_t v8ErrorRebinnedInM = 0.; // v{8,QC} stat. error
14463 // Q-cumulants:
14464 Double_t qc2RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(1); // QC{2}
14465 Double_t qc4RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(2); // QC{4}
14466 Double_t qc6RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(3); // QC{6}
14467 Double_t qc8RebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinContent(4); // QC{8}
14468 // Q-cumulants's statistical errors:
14469 Double_t qc2ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(1); // QC{2} stat. error
14470 Double_t qc4ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(2); // QC{4} stat. error
14471 Double_t qc6ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(3); // QC{6} stat. error
14472 Double_t qc8ErrorRebinnedInM = fIntFlowQcumulantsRebinnedInM->GetBinError(4); // QC{8} stat. error
14473 // Calculate reference flow estimates from Q-cumulants:
1268c371 14474 if(qc2RebinnedInM>=0.){v2RebinnedInM = pow(qc2RebinnedInM,0.5);}
b92ea2b9 14475 if(qc4RebinnedInM<=0.){v4RebinnedInM = pow(-1.*qc4RebinnedInM,1./4.);}
14476 if(qc6RebinnedInM>=0.){v6RebinnedInM = pow((1./4.)*qc6RebinnedInM,1./6.);}
14477 if(qc8RebinnedInM<=0.){v8RebinnedInM = pow((-1./33.)*qc8RebinnedInM,1./8.);}
14478 // Calculate stat. error for reference flow estimates from stat. error of Q-cumulants:
1268c371 14479 if(qc2RebinnedInM>0.){v2ErrorRebinnedInM = (1./2.)*pow(qc2RebinnedInM,-0.5)*qc2ErrorRebinnedInM;}
b92ea2b9 14480 if(qc4RebinnedInM<0.){v4ErrorRebinnedInM = (1./4.)*pow(-qc4RebinnedInM,-3./4.)*qc4ErrorRebinnedInM;}
14481 if(qc6RebinnedInM>0.){v6ErrorRebinnedInM = (1./6.)*pow(2.,-1./3.)*pow(qc6RebinnedInM,-5./6.)*qc6ErrorRebinnedInM;}
14482 if(qc8RebinnedInM<0.){v8ErrorRebinnedInM = (1./8.)*pow(33.,-1./8.)*pow(-qc8RebinnedInM,-7./8.)*qc8ErrorRebinnedInM;}
14483 // Print warnings for the 'wrong sign' cumulants:
14484 if(TMath::Abs(v2RebinnedInM) < 1.e-44)
14485 {
14486 cout<<" WARNING: Wrong sign QC{2} rebinned in M, couldn't calculate v{2,QC} !!!!"<<endl;
14487 }
14488 if(TMath::Abs(v4RebinnedInM) < 1.e-44)
14489 {
14490 cout<<" WARNING: Wrong sign QC{4} rebinned in M, couldn't calculate v{4,QC} !!!!"<<endl;
14491 }
14492 if(TMath::Abs(v6RebinnedInM) < 1.e-44)
14493 {
14494 cout<<" WARNING: Wrong sign QC{6} rebinned in M, couldn't calculate v{6,QC} !!!!"<<endl;
14495 }
14496 if(TMath::Abs(v8RebinnedInM) < 1.e-44)
14497 {
14498 cout<<" WARNING: Wrong sign QC{8} rebinned in M, couldn't calculate v{8,QC} !!!!"<<endl;
14499 }
14500 // Store the results and statistical errors of integrated flow estimates:
14501 fIntFlowRebinnedInM->SetBinContent(1,v2RebinnedInM);
14502 fIntFlowRebinnedInM->SetBinError(1,v2ErrorRebinnedInM);
14503 fIntFlowRebinnedInM->SetBinContent(2,v4RebinnedInM);
14504 fIntFlowRebinnedInM->SetBinError(2,v4ErrorRebinnedInM);
14505 fIntFlowRebinnedInM->SetBinContent(3,v6RebinnedInM);
14506 fIntFlowRebinnedInM->SetBinError(3,v6ErrorRebinnedInM);
14507 fIntFlowRebinnedInM->SetBinContent(4,v8RebinnedInM);
14508 fIntFlowRebinnedInM->SetBinError(4,v8ErrorRebinnedInM);
14509
14510} // end of AliFlowAnalysisWithQCumulants::CalculateReferenceFlow()
489d5531 14511
489d5531 14512//================================================================================================================================
14513
489d5531 14514void AliFlowAnalysisWithQCumulants::FillCommonHistResultsIntFlow()
14515{
0dd3b008 14516 // Fill in AliFlowCommonHistResults histograms relevant for reference flow.
489d5531 14517
0dd3b008 14518 // There are two possibilities here:
14519 // a) Store minimum bias reference flow - use SetMinimumBiasReferenceFlow(kTRUE). This result is
14520 // biased by the interplay between nonflow correlations and multiplicity fluctuations and is
14521 // also stored in local histogram fIntFlow;
14522 // b) Store reference flow obtained from flow analysis performed at fixed multiplicity and
14523 // rebinned only at the end of the day - use SetMinimumBiasReferenceFlow(kFALSE). This result
14524 // is also stored in local histogram fIntFlowRebinnedInM.
489d5531 14525
0dd3b008 14526 // Reference flow estimates:
14527 Double_t v[4] = {0.};
14528 // Statistical errors of reference flow estimates:
14529 Double_t vError[4] = {0.};
489d5531 14530
0dd3b008 14531 for(Int_t b=0;b<4;b++)
14532 {
14533 if(fMinimumBiasReferenceFlow)
14534 {
14535 v[b] = fIntFlow->GetBinContent(b+1);
14536 vError[b] = fIntFlow->GetBinError(b+1);
14537 } else
14538 {
14539 v[b] = fIntFlowRebinnedInM->GetBinContent(b+1);
14540 vError[b] = fIntFlowRebinnedInM->GetBinError(b+1);
14541 }
14542 } // end of for(Int_t b=0;b<4;b++)
14543
14544 // Fill AliFlowCommonHistResults histogram:
14545 fCommonHistsResults2nd->FillIntegratedFlow(v[0],vError[0]); // to be improved (hardwired 2nd in the name)
14546 fCommonHistsResults4th->FillIntegratedFlow(v[1],vError[1]); // to be improved (hardwired 4th in the name)
403e3389 14547 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)) // to be improved (calculate also 6th and 8th order)
489d5531 14548 {
0dd3b008 14549 fCommonHistsResults6th->FillIntegratedFlow(v[2],vError[2]); // to be improved (hardwired 6th in the name)
14550 fCommonHistsResults8th->FillIntegratedFlow(v[3],vError[3]); // to be improved (hardwired 8th in the name)
489d5531 14551 }
14552
14553} // end of AliFlowAnalysisWithQCumulants::FillCommonHistResultsIntFlow()
14554
489d5531 14555//================================================================================================================================
14556
489d5531 14557void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelationsUsingParticleWeights()
14558{
14559 // Calculate all correlations needed for integrated flow using particle weights.
14560
14561 // Remark 1: When particle weights are used the binning of fIntFlowCorrelationAllPro is organized as follows:
14562 //
14563 // 1st bin: <2>_{1n|1n} = two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
14564 // 2nd bin: <2>_{2n|2n} = two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
14565 // 3rd bin: <2>_{3n|3n} = two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
14566 // 4th bin: <2>_{4n|4n} = two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
14567 // 5th bin: ---- EMPTY ----
14568 // 6th bin: <3>_{2n|1n,1n} = three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
14569 // 7th bin: <3>_{3n|2n,1n} = ...
14570 // 8th bin: <3>_{4n|2n,2n} = ...
14571 // 9th bin: <3>_{4n|3n,1n} = ...
14572 // 10th bin: ---- EMPTY ----
14573 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
14574 // 12th bin: <4>_{2n,1n|2n,1n} = ...
14575 // 13th bin: <4>_{2n,2n|2n,2n} = ...
14576 // 14th bin: <4>_{3n|1n,1n,1n} = ...
14577 // 15th bin: <4>_{3n,1n|3n,1n} = ...
14578 // 16th bin: <4>_{3n,1n|2n,2n} = ...
14579 // 17th bin: <4>_{4n|2n,1n,1n} = ...
14580 // 18th bin: ---- EMPTY ----
14581 // 19th bin: <5>_{2n|1n,1n,1n,1n} = ...
14582 // 20th bin: <5>_{2n,2n|2n,1n,1n} = ...
14583 // 21st bin: <5>_{3n,1n|2n,1n,1n} = ...
14584 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = ...
14585 // 23rd bin: ---- EMPTY ----
14586 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = ...
14587 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = ...
14588 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = ...
14589 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = ...
14590 // 28th bin: ---- EMPTY ----
14591 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = ...
14592 // 30th bin: ---- EMPTY ----
14593 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = ...
14594
14595 // Remark 2: When particle weights are used there are some extra correlations. They are stored in
14596 // fIntFlowExtraCorrelationsPro binning of which is organized as follows:
14597
14598 // 1st bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
14599 // 2nd bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
14600
14601 // multiplicity (number of particles used to determine the reaction plane)
1268c371 14602 Double_t dMult = (*fSpk)(0,0);
489d5531 14603
14604 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
14605 Double_t dReQ1n1k = (*fReQ)(0,1);
14606 Double_t dReQ2n2k = (*fReQ)(1,2);
14607 Double_t dReQ3n3k = (*fReQ)(2,3);
14608 Double_t dReQ4n4k = (*fReQ)(3,4);
14609 Double_t dReQ1n3k = (*fReQ)(0,3);
14610 Double_t dImQ1n1k = (*fImQ)(0,1);
14611 Double_t dImQ2n2k = (*fImQ)(1,2);
14612 Double_t dImQ3n3k = (*fImQ)(2,3);
14613 Double_t dImQ4n4k = (*fImQ)(3,4);
14614 Double_t dImQ1n3k = (*fImQ)(0,3);
14615
14616 // dMs are variables introduced in order to simplify some Eqs. bellow:
14617 //..............................................................................................
1268c371 14618 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
14619 Double_t dM22 = (*fSpk)(1,2)-(*fSpk)(0,4); // dM22 = sum_{i,j=1,i!=j}^M w_i^2 w_j^2
14620 Double_t dM33 = (*fSpk)(1,3)-(*fSpk)(0,6); // dM33 = sum_{i,j=1,i!=j}^M w_i^3 w_j^3
14621 Double_t dM44 = (*fSpk)(1,4)-(*fSpk)(0,8); // dM44 = sum_{i,j=1,i!=j}^M w_i^4 w_j^4
14622 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
14623 Double_t dM211 = (*fSpk)(0,2)*(*fSpk)(1,1)-2.*(*fSpk)(0,3)*(*fSpk)(0,1)
14624 - (*fSpk)(1,2)+2.*(*fSpk)(0,4); // dM211 = sum_{i,j,k=1,i!=j!=k}^M w_i^2 w_j w_k
14625 Double_t dM1111 = (*fSpk)(3,1)-6.*(*fSpk)(0,2)*(*fSpk)(1,1)
14626 + 8.*(*fSpk)(0,3)*(*fSpk)(0,1)
14627 + 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 14628 //..............................................................................................
14629
14630 // 2-particle correlations:
14631 Double_t two1n1nW1W1 = 0.; // <w1 w2 cos(n*(phi1-phi2))>
14632 Double_t two2n2nW2W2 = 0.; // <w1^2 w2^2 cos(2n*(phi1-phi2))>
14633 Double_t two3n3nW3W3 = 0.; // <w1^3 w2^3 cos(3n*(phi1-phi2))>
14634 Double_t two4n4nW4W4 = 0.; // <w1^4 w2^4 cos(4n*(phi1-phi2))>
14635 if(dMult>1)
14636 {
14637 if(dM11)
14638 {
1268c371 14639 two1n1nW1W1 = (pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSpk)(0,2))/dM11;
489d5531 14640 // average correlation <w1 w2 cos(n*(phi1-phi2))> for single event:
14641 fIntFlowCorrelationsEBE->SetBinContent(1,two1n1nW1W1);
14642 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(1,dM11);
14643 // average correlation <w1 w2 cos(n*(phi1-phi2))> for all events:
b40a910e 14644 fIntFlowCorrelationsPro->Fill(0.5,two1n1nW1W1,dM11);
14645 // average squared correlation <w1 w2 cos(n*(phi1-phi2))> for all events:
14646 fIntFlowSquaredCorrelationsPro->Fill(0.5,two1n1nW1W1*two1n1nW1W1,dM11);
489d5531 14647 fIntFlowCorrelationsAllPro->Fill(0.5,two1n1nW1W1,dM11);
14648 }
14649 if(dM22)
14650 {
1268c371 14651 two2n2nW2W2 = (pow(dReQ2n2k,2)+pow(dImQ2n2k,2)-(*fSpk)(0,4))/dM22;
489d5531 14652 // ...
14653 // average correlation <w1^2 w2^2 cos(2n*(phi1-phi2))> for all events:
14654 fIntFlowCorrelationsAllPro->Fill(1.5,two2n2nW2W2,dM22);
14655 }
14656 if(dM33)
14657 {
1268c371 14658 two3n3nW3W3 = (pow(dReQ3n3k,2)+pow(dImQ3n3k,2)-(*fSpk)(0,6))/dM33;
489d5531 14659 // ...
14660 // average correlation <w1^3 w2^3 cos(3n*(phi1-phi2))> for all events:
14661 fIntFlowCorrelationsAllPro->Fill(2.5,two3n3nW3W3,dM33);
14662 }
14663 if(dM44)
14664 {
1268c371 14665 two4n4nW4W4 = (pow(dReQ4n4k,2)+pow(dImQ4n4k,2)-(*fSpk)(0,8))/dM44;
489d5531 14666 // ...
14667 // average correlation <w1^4 w2^4 cos(4n*(phi1-phi2))> for all events:
14668 fIntFlowCorrelationsAllPro->Fill(3.5,two4n4nW4W4,dM44);
14669 }
14670 } // end of if(dMult>1)
14671
14672 // extra 2-particle correlations:
14673 Double_t two1n1nW3W1 = 0.; // <w1^3 w2 cos(n*(phi1-phi2))>
14674 Double_t two1n1nW1W1W2 = 0.; // <w1 w2 w3^2 cos(n*(phi1-phi2))>
14675 if(dMult>1)
14676 {
14677 if(dM31)
14678 {
1268c371 14679 two1n1nW3W1 = (dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k-(*fSpk)(0,4))/dM31;
489d5531 14680 fIntFlowExtraCorrelationsPro->Fill(0.5,two1n1nW3W1,dM31);
14681 }
14682 if(dM211)
14683 {
1268c371 14684 two1n1nW1W1W2 = ((*fSpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSpk)(0,2))
489d5531 14685 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k
1268c371 14686 - (*fSpk)(0,4)))/dM211;
489d5531 14687 fIntFlowExtraCorrelationsPro->Fill(1.5,two1n1nW1W1W2,dM211);
14688 }
14689 } // end of if(dMult>1)
14690 //..............................................................................................
14691
14692 //..............................................................................................
14693 // 3-particle correlations:
14694 Double_t three2n1n1nW2W1W1 = 0.; // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
14695
14696 if(dMult>2)
14697 {
14698 if(dM211)
14699 {
14700 three2n1n1nW2W1W1 = (pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k
14701 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
14702 - pow(dReQ2n2k,2)-pow(dImQ2n2k,2)
1268c371 14703 + 2.*(*fSpk)(0,4))/dM211;
489d5531 14704 fIntFlowCorrelationsAllPro->Fill(5.5,three2n1n1nW2W1W1,dM211);
14705 }
14706 } // end of if(dMult>2)
14707 //..............................................................................................
14708
14709 //..............................................................................................
14710 // 4-particle correlations:
14711 Double_t four1n1n1n1nW1W1W1W1 = 0.; // <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
14712 if(dMult>3)
14713 {
14714 if(dM1111)
14715 {
14716 four1n1n1n1nW1W1W1W1 = (pow(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.),2)
14717 - 2.*(pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k)
14718 + 8.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
14719 + (pow(dReQ2n2k,2)+pow(dImQ2n2k,2))
1268c371 14720 - 4.*(*fSpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
14721 - 6.*(*fSpk)(0,4)+2.*(*fSpk)(1,2))/dM1111;
489d5531 14722
14723 // average correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for single event:
14724 fIntFlowCorrelationsEBE->SetBinContent(2,four1n1n1n1nW1W1W1W1);
14725 fIntFlowEventWeightsForCorrelationsEBE->SetBinContent(2,dM1111);
14726 // average correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for all events:
14727 fIntFlowCorrelationsPro->Fill(1.5,four1n1n1n1nW1W1W1W1,dM1111);
b40a910e 14728 // average squared correlation <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> for all events:
14729 fIntFlowSquaredCorrelationsPro->Fill(1.5,four1n1n1n1nW1W1W1W1*four1n1n1n1nW1W1W1W1,dM1111);
489d5531 14730 fIntFlowCorrelationsAllPro->Fill(10.5,four1n1n1n1nW1W1W1W1,dM1111);
14731 }
14732 } // end of if(dMult>3)
14733 //..............................................................................................
14734
14735} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelationsUsingParticleWeights()
14736
e1d101a6 14737//=======================================================================================================================
489d5531 14738
489d5531 14739void AliFlowAnalysisWithQCumulants::InitializeArraysForIntFlow()
14740{
14741 // Initialize all arrays used to calculate integrated flow.
14742
14743 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14744 {
14745 fIntFlowCorrectionTermsForNUAEBE[sc] = NULL;
0328db2d 14746 fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc] = NULL;
489d5531 14747 fIntFlowCorrectionTermsForNUAPro[sc] = NULL;
14748 fIntFlowCorrectionTermsForNUAHist[sc] = NULL;
b92ea2b9 14749 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2001bc3a 14750 {
14751 fIntFlowCorrectionTermsForNUAVsMPro[sc][ci] = NULL;
14752 }
0328db2d 14753 for(Int_t power=0;power<2;power++) // linear or quadratic
14754 {
14755 fIntFlowSumOfEventWeightsNUA[sc][power] = NULL;
14756 }
489d5531 14757 }
14758 for(Int_t power=0;power<2;power++) // linear or quadratic
14759 {
14760 fIntFlowSumOfEventWeights[power] = NULL;
14761 }
b3dacf6b 14762 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 14763 {
14764 fPrintFinalResults[i] = kTRUE;
14765 }
ff70ca91 14766 for(Int_t ci=0;ci<4;ci++) // correlation index or cumulant order
14767 {
14768 fIntFlowCorrelationsVsMPro[ci] = NULL;
b40a910e 14769 fIntFlowSquaredCorrelationsVsMPro[ci] = NULL;
ff70ca91 14770 fIntFlowCorrelationsVsMHist[ci] = NULL;
14771 fIntFlowQcumulantsVsM[ci] = NULL;
14772 fIntFlowVsM[ci] = NULL;
2001bc3a 14773 fIntFlowDetectorBiasVsM[ci] = NULL;
ff70ca91 14774 for(Int_t lc=0;lc<2;lc++)
14775 {
14776 fIntFlowSumOfEventWeightsVsM[ci][lc] = NULL;
14777 }
14778 }
14779 for(Int_t pi=0;pi<6;pi++) // product or covariance index
14780 {
14781 fIntFlowProductOfCorrelationsVsMPro[pi] = NULL;
14782 fIntFlowCovariancesVsM[pi] = NULL;
14783 fIntFlowSumOfProductOfEventWeightsVsM[pi] = NULL;
14784 }
403e3389 14785 for(Int_t ci=0;ci<64;ci++) // correlation index for all correlations vs M profiles (to be improved - hardwired 64)
3435cacb 14786 {
14787 fIntFlowCorrelationsAllVsMPro[ci] = NULL;
14788 }
14789
489d5531 14790} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForIntFlow()
14791
e1d101a6 14792//=======================================================================================================================
489d5531 14793
489d5531 14794void AliFlowAnalysisWithQCumulants::InitializeArraysForDiffFlow()
14795{
14796 // Initialize all arrays needed to calculate differential flow.
14797 // a) Initialize lists holding profiles;
14798 // b) Initialize lists holding histograms;
14799 // c) Initialize event-by-event quantities;
14800 // d) Initialize profiles;
14801 // e) Initialize histograms holding final results.
14802
14803 // a) Initialize lists holding profiles;
14804 for(Int_t t=0;t<2;t++) // type (RP, POI)
14805 {
14806 for(Int_t pe=0;pe<2;pe++) // pt or eta
14807 {
14808 fDiffFlowCorrelationsProList[t][pe] = NULL;
14809 fDiffFlowProductOfCorrelationsProList[t][pe] = NULL;
14810 fDiffFlowCorrectionsProList[t][pe] = NULL;
14811 }
1268c371 14812 // 2D:
14813 f2DDiffFlowCorrelationsProList[t] = NULL;
489d5531 14814 }
14815
14816 // b) Initialize lists holding histograms;
14817 for(Int_t t=0;t<2;t++) // type (RP, POI)
14818 {
14819 for(Int_t pe=0;pe<2;pe++) // pt or eta
14820 {
14821 fDiffFlowCorrelationsHistList[t][pe] = NULL;
14822 for(Int_t power=0;power<2;power++)
14823 {
14824 fDiffFlowSumOfEventWeightsHistList[t][pe][power] = NULL;
14825 } // end of for(Int_t power=0;power<2;power++)
14826 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe] = NULL;
14827 fDiffFlowCorrectionsHistList[t][pe] = NULL;
14828 fDiffFlowCovariancesHistList[t][pe] = NULL;
14829 fDiffFlowCumulantsHistList[t][pe] = NULL;
1268c371 14830 fDiffFlowDetectorBiasHistList[t][pe] = NULL;
489d5531 14831 fDiffFlowHistList[t][pe] = NULL;
14832 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
14833 } // enf of for(Int_t t=0;t<2;t++) // type (RP, POI)
14834
14835 // c) Initialize event-by-event quantities:
14836 // 1D:
14837 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
14838 {
14839 for(Int_t pe=0;pe<2;pe++) // pt or eta
14840 {
14841 for(Int_t m=0;m<4;m++) // multiple of harmonic
14842 {
14843 for(Int_t k=0;k<9;k++) // power of weight
14844 {
14845 fReRPQ1dEBE[t][pe][m][k] = NULL;
14846 fImRPQ1dEBE[t][pe][m][k] = NULL;
14847 fs1dEBE[t][pe][k] = NULL; // to be improved (this doesn't need to be within loop over m)
14848 }
14849 }
14850 }
14851 }
14852 // 1D:
14853 for(Int_t t=0;t<2;t++) // type (RP or POI)
14854 {
14855 for(Int_t pe=0;pe<2;pe++) // pt or eta
14856 {
14857 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14858 {
14859 for(Int_t cti=0;cti<9;cti++) // correction term index
14860 {
14861 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti] = NULL;
14862 }
14863 }
14864 }
14865 }
14866 // 2D:
14867 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
14868 {
14869 for(Int_t m=0;m<4;m++) // multiple of harmonic
14870 {
14871 for(Int_t k=0;k<9;k++) // power of weight
14872 {
14873 fReRPQ2dEBE[t][m][k] = NULL;
14874 fImRPQ2dEBE[t][m][k] = NULL;
14875 fs2dEBE[t][k] = NULL; // to be improved (this doesn't need to be within loop over m)
14876 }
14877 }
14878 }
14879
14880 // d) Initialize profiles:
14881 for(Int_t t=0;t<2;t++) // type: RP or POI
14882 {
14883 for(Int_t pe=0;pe<2;pe++) // pt or eta
14884 {
14885 for(Int_t ci=0;ci<4;ci++) // correlation index
14886 {
14887 fDiffFlowCorrelationsPro[t][pe][ci] = NULL;
b40a910e 14888 fDiffFlowSquaredCorrelationsPro[t][pe][ci] = NULL;
489d5531 14889 } // end of for(Int_t ci=0;ci<4;ci++)
14890 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14891 {
14892 for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14893 {
14894 fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2] = NULL;
14895 } // end of for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14896 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14897 // correction terms for nua:
14898 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14899 {
14900 for(Int_t cti=0;cti<9;cti++) // correction term index
14901 {
14902 fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] = NULL;
14903 }
14904 }
64e500e3 14905 // other differential correlators:
14906 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14907 {
14908 for(Int_t ci=0;ci<1;ci++) // correction term index
14909 {
14910 fOtherDiffCorrelators[t][pe][sc][ci] = NULL;
14911 }
14912 }
489d5531 14913 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
1268c371 14914 for(Int_t ci=0;ci<4;ci++) // correlation index
14915 {
14916 f2DDiffFlowCorrelationsPro[t][ci] = NULL;
14917 }
489d5531 14918 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
14919
14920 // e) Initialize histograms holding final results.
14921 for(Int_t t=0;t<2;t++) // type: RP or POI
14922 {
14923 for(Int_t pe=0;pe<2;pe++) // pt or eta
14924 {
14925 for(Int_t ci=0;ci<4;ci++) // correlation index
14926 {
14927 fDiffFlowCorrelationsHist[t][pe][ci] = NULL;
14928 fDiffFlowCumulants[t][pe][ci] = NULL;
1268c371 14929 fDiffFlowDetectorBias[t][pe][ci] = NULL;
489d5531 14930 fDiffFlow[t][pe][ci] = NULL;
14931 } // end of for(Int_t ci=0;ci<4;ci++)
14932 for(Int_t covarianceIndex=0;covarianceIndex<5;covarianceIndex++)
14933 {
14934 fDiffFlowCovariances[t][pe][covarianceIndex] = NULL;
14935 } // end of for(Int_t covarianceIndex=0;covarianceIndex<5;covarianceIndex++)
14936 // correction terms for nua:
14937 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
14938 {
14939 for(Int_t cti=0;cti<9;cti++) // correction term index
14940 {
14941 fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] = NULL;
14942 }
14943 }
14944 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
1268c371 14945 for(Int_t ci=0;ci<4;ci++) // correlation index
14946 {
14947 f2DDiffFlowCumulants[t][ci] = NULL;
14948 f2DDiffFlow[t][ci] = NULL;
14949 }
489d5531 14950 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
14951
14952 // sum of event weights for reduced correlations:
14953 for(Int_t t=0;t<2;t++) // type = RP or POI
14954 {
14955 for(Int_t pe=0;pe<2;pe++) // pt or eta
14956 {
14957 for(Int_t p=0;p<2;p++) // power of weight is 1 or 2
14958 {
14959 for(Int_t ew=0;ew<4;ew++) // event weight index for reduced correlations
14960 {
14961 fDiffFlowSumOfEventWeights[t][pe][p][ew] = NULL;
14962 }
14963 }
14964 }
14965 }
14966 // product of event weights for both types of correlations:
14967 for(Int_t t=0;t<2;t++) // type = RP or POI
14968 {
14969 for(Int_t pe=0;pe<2;pe++) // pt or eta
14970 {
14971 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
14972 {
14973 for(Int_t mci2=0;mci2<8;mci2++) // mixed correlation index
14974 {
14975 fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] = NULL;
14976 }
14977 }
14978 }
14979 }
1268c371 14980
14981} // end of AliFlowAnalysisWithQCumulants::InitializeArraysForDiffFlow()
14982
e1d101a6 14983//=======================================================================================================================
489d5531 14984
1268c371 14985void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulants(TString type, TString ptOrEta)
14986{
14987 // Calculate differential flow cumulants from measured multiparticle correlations.
489d5531 14988
1268c371 14989 // REMARK: Cumulants calculated in this method are NOT corrected for non-uniform acceptance.
14990 // This correction, if enabled via setter SetApplyCorrectionForNUA(Bool_t), is applied
14991 // in the method CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
489d5531 14992
1268c371 14993 Int_t t = 0;
14994 Int_t pe = 0;
14995
14996 if(type == "RP")
14997 {
14998 t = 0;
14999 } else if(type == "POI")
15000 {
15001 t = 1;
15002 }
15003
15004 if(ptOrEta == "Pt")
15005 {
15006 pe = 0;
15007 } else if(ptOrEta == "Eta")
15008 {
15009 pe = 1;
15010 }
15011
15012 // Common:
15013 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 15014
1268c371 15015 // Correlation <<2>>:
15016 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1);
15017 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1);
489d5531 15018
1268c371 15019 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
489d5531 15020 {
1268c371 15021 // Reduced correlations:
15022 Double_t twoPrime = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b); // <<2'>>
15023 Double_t twoPrimeError = fDiffFlowCorrelationsHist[t][pe][0]->GetBinError(b); // stat. error of <<2'>>
15024 Double_t fourPrime = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b); // <<4'>>
15025 Double_t fourPrimeError = fDiffFlowCorrelationsHist[t][pe][1]->GetBinError(b); // stat. error of <<4'>>
15026 // Covariances:
15027 Double_t wCovTwoTwoReduced = fDiffFlowCovariances[t][pe][0]->GetBinContent(b); // Cov(<2>,<2'>) * prefactor(<2>,<2'>)
15028 Double_t wCovTwoFourReduced = fDiffFlowCovariances[t][pe][1]->GetBinContent(b); // Cov(<2>,<4'>) * prefactor(<2>,<4'>)
15029 Double_t wCovTwoReducedFourReduced = fDiffFlowCovariances[t][pe][4]->GetBinContent(b); // Cov(<2'>,<4'>) * prefactor(<2'>,<4'>)
15030 // QC{2'}:
15031 Double_t qc2Prime = twoPrime; // QC{2'}
15032 Double_t qc2PrimeError = twoPrimeError; // stat. error of QC{2'}
15033 fDiffFlowCumulants[t][pe][0]->SetBinContent(b,qc2Prime);
15034 fDiffFlowCumulants[t][pe][0]->SetBinError(b,qc2PrimeError);
15035 // QC{4'}:
15036 Double_t qc4Prime = fourPrime - 2.*twoPrime*two; // QC{4'} = <<4'>> - 2*<<2'>><<2>>
15037 Double_t qc4PrimeError = 0.; // stat. error of QC{4'}
15038 Double_t qc4PrimeErrorSquared = 4.*pow(twoPrime,2.)*pow(twoError,2.)
15039 + 4.*pow(two,2.)*pow(twoPrimeError,2.)
15040 + pow(fourPrimeError,2.)
15041 + 8.*two*twoPrime*wCovTwoTwoReduced
15042 - 4.*twoPrime*wCovTwoFourReduced
15043 - 4.*two*wCovTwoReducedFourReduced;
15044 if(qc4PrimeErrorSquared>0.)
15045 {
15046 qc4PrimeError = pow(qc4PrimeErrorSquared,0.5);
489d5531 15047 }
1268c371 15048 fDiffFlowCumulants[t][pe][1]->SetBinContent(b,qc4Prime);
15049 fDiffFlowCumulants[t][pe][1]->SetBinError(b,qc4PrimeError);
489d5531 15050 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 15051
1268c371 15052} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulants(TString type, Bool_t useParticleWeights, TString eventWeights);
489d5531 15053
e1d101a6 15054//=======================================================================================================================
489d5531 15055
1268c371 15056void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCumulants(TString type)
489d5531 15057{
1268c371 15058 // Calculate 2D differential cumulants.
489d5531 15059
1268c371 15060 // Remark: correction for detector effects and error propagation not implemented yet for 2D differential cumulants.
489d5531 15061
1268c371 15062 Int_t t = 0;
489d5531 15063
15064 if(type == "RP")
15065 {
1268c371 15066 t = 0;
489d5531 15067 } else if(type == "POI")
15068 {
1268c371 15069 t = 1;
15070 }
15071
15072 // Reference correlation <<2>>:
15073 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1);
489d5531 15074
1268c371 15075 // Looping over all (pt,eta) bins and calculating differential flow cumulants:
15076 for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 15077 {
15078 for(Int_t e=1;e<=fnBinsEta;e++)
15079 {
1268c371 15080 // Reduced correlations:
15081 Double_t twoPrime = f2DDiffFlowCorrelationsPro[t][0]->GetBinContent(f2DDiffFlowCorrelationsPro[t][0]->GetBin(p,e)); // <<2'>>(pt,eta)
15082 Double_t fourPrime = f2DDiffFlowCorrelationsPro[t][1]->GetBinContent(f2DDiffFlowCorrelationsPro[t][1]->GetBin(p,e)); // <<4'>>(pt,eta)
15083 // Cumulants:
15084 Double_t qc2Prime = twoPrime; // QC{2'} = <<2'>>
15085 f2DDiffFlowCumulants[t][0]->SetBinContent(f2DDiffFlowCumulants[t][0]->GetBin(p,e),qc2Prime);
15086 Double_t qc4Prime = fourPrime - 2.*twoPrime*two; // QC{4'} = <<4'>> - 2*<<2'>><<2>>
15087 f2DDiffFlowCumulants[t][1]->SetBinContent(f2DDiffFlowCumulants[t][1]->GetBin(p,e),qc4Prime);
489d5531 15088 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
489d5531 15089 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
15090
1268c371 15091} // end of void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCumulants(TString type)
489d5531 15092
e1d101a6 15093//=======================================================================================================================
489d5531 15094
489d5531 15095void AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(TString type)
15096{
1268c371 15097 // Calculate final results for integrated flow of RPs and POIs.
489d5531 15098
1268c371 15099 // to be improved - check if the integrated flow calculation here is actually correct
15100
15101 Int_t t = 0; // RP = 0, POI = 1
489d5531 15102
15103 if(type == "RP")
15104 {
1268c371 15105 t = 0;
489d5531 15106 } else if(type == "POI")
15107 {
1268c371 15108 t = 1;
15109 }
489d5531 15110
489d5531 15111 // pt yield:
15112 TH1F *yield2ndPt = NULL;
15113 TH1F *yield4thPt = NULL;
15114 TH1F *yield6thPt = NULL;
15115 TH1F *yield8thPt = NULL;
15116
15117 if(type == "POI")
15118 {
dd442cd2 15119 if(fFillMultipleControlHistograms)
15120 {
15121 yield2ndPt = (TH1F*)(fCommonHists2nd->GetHistPtPOI())->Clone();
15122 yield4thPt = (TH1F*)(fCommonHists4th->GetHistPtPOI())->Clone();
15123 yield6thPt = (TH1F*)(fCommonHists6th->GetHistPtPOI())->Clone();
15124 yield8thPt = (TH1F*)(fCommonHists8th->GetHistPtPOI())->Clone();
15125 } else
15126 {
15127 yield2ndPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15128 yield4thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15129 yield6thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15130 yield8thPt = (TH1F*)(fCommonHists->GetHistPtPOI())->Clone();
15131 }
489d5531 15132 }
15133 else if(type == "RP")
15134 {
dd442cd2 15135 if(fFillMultipleControlHistograms)
15136 {
15137 yield2ndPt = (TH1F*)(fCommonHists2nd->GetHistPtRP())->Clone();
15138 yield4thPt = (TH1F*)(fCommonHists4th->GetHistPtRP())->Clone();
15139 yield6thPt = (TH1F*)(fCommonHists6th->GetHistPtRP())->Clone();
15140 yield8thPt = (TH1F*)(fCommonHists8th->GetHistPtRP())->Clone();
15141 } else
15142 {
15143 yield2ndPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15144 yield4thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15145 yield6thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15146 yield8thPt = (TH1F*)(fCommonHists->GetHistPtRP())->Clone();
15147 }
489d5531 15148 }
15149
0d11c335 15150 if(!yield2ndPt){return;}
15151 if(!yield4thPt){return;}
15152 if(!yield6thPt){return;}
15153 if(!yield8thPt){return;}
15154
489d5531 15155 Int_t nBinsPt = yield2ndPt->GetNbinsX();
15156
15157 TH1D *flow2ndPt = NULL;
15158 TH1D *flow4thPt = NULL;
15159 TH1D *flow6thPt = NULL;
15160 TH1D *flow8thPt = NULL;
15161
15162 // to be improved (hardwired pt index)
15163 flow2ndPt = (TH1D*)fDiffFlow[t][0][0]->Clone();
15164 flow4thPt = (TH1D*)fDiffFlow[t][0][1]->Clone();
15165 flow6thPt = (TH1D*)fDiffFlow[t][0][2]->Clone();
15166 flow8thPt = (TH1D*)fDiffFlow[t][0][3]->Clone();
0d11c335 15167
15168 if(!flow2ndPt){return;}
15169 if(!flow4thPt){return;}
15170 if(!flow6thPt){return;}
15171 if(!flow8thPt){return;}
489d5531 15172
15173 Double_t dvn2nd = 0., dvn4th = 0., dvn6th = 0., dvn8th = 0.; // differential flow
15174 Double_t dErrvn2nd = 0., dErrvn4th = 0., dErrvn6th = 0., dErrvn8th = 0.; // error on differential flow
15175
15176 Double_t dVn2nd = 0., dVn4th = 0., dVn6th = 0., dVn8th = 0.; // integrated flow
15177 Double_t dErrVn2nd = 0., dErrVn4th = 0., dErrVn6th = 0., dErrVn8th = 0.; // error on integrated flow
15178
15179 Double_t dYield2nd = 0., dYield4th = 0., dYield6th = 0., dYield8th = 0.; // pt yield
15180 Double_t dSum2nd = 0., dSum4th = 0., dSum6th = 0., dSum8th = 0.; // needed for normalizing integrated flow
15181
15182 // looping over pt bins:
15183 for(Int_t p=1;p<nBinsPt+1;p++)
15184 {
15185 dvn2nd = flow2ndPt->GetBinContent(p);
15186 dvn4th = flow4thPt->GetBinContent(p);
15187 dvn6th = flow6thPt->GetBinContent(p);
15188 dvn8th = flow8thPt->GetBinContent(p);
15189
15190 dErrvn2nd = flow2ndPt->GetBinError(p);
15191 dErrvn4th = flow4thPt->GetBinError(p);
15192 dErrvn6th = flow6thPt->GetBinError(p);
15193 dErrvn8th = flow8thPt->GetBinError(p);
15194
15195 dYield2nd = yield2ndPt->GetBinContent(p);
15196 dYield4th = yield4thPt->GetBinContent(p);
15197 dYield6th = yield6thPt->GetBinContent(p);
15198 dYield8th = yield8thPt->GetBinContent(p);
15199
15200 dVn2nd += dvn2nd*dYield2nd;
15201 dVn4th += dvn4th*dYield4th;
15202 dVn6th += dvn6th*dYield6th;
15203 dVn8th += dvn8th*dYield8th;
15204
15205 dSum2nd += dYield2nd;
15206 dSum4th += dYield4th;
15207 dSum6th += dYield6th;
15208 dSum8th += dYield8th;
15209
15210 dErrVn2nd += dYield2nd*dYield2nd*dErrvn2nd*dErrvn2nd; // ro be improved (check this relation)
15211 dErrVn4th += dYield4th*dYield4th*dErrvn4th*dErrvn4th;
15212 dErrVn6th += dYield6th*dYield6th*dErrvn6th*dErrvn6th;
15213 dErrVn8th += dYield8th*dYield8th*dErrvn8th*dErrvn8th;
15214
15215 } // end of for(Int_t p=1;p<nBinsPt+1;p++)
15216
15217 // normalizing the results for integrated flow:
15218 if(dSum2nd)
15219 {
15220 dVn2nd /= dSum2nd;
15221 dErrVn2nd /= (dSum2nd*dSum2nd);
15222 dErrVn2nd = TMath::Sqrt(dErrVn2nd);
15223 }
15224 if(dSum4th)
15225 {
15226 dVn4th /= dSum4th;
15227 dErrVn4th /= (dSum4th*dSum4th);
15228 dErrVn4th = TMath::Sqrt(dErrVn4th);
15229 }
15230 //if(dSum6th) dVn6th/=dSum6th;
15231 //if(dSum8th) dVn8th/=dSum8th;
15232
15233 // storing the results for integrated flow in common histos: (to be improved: new method for this?)
15234 if(type == "POI")
15235 {
15236 fCommonHistsResults2nd->FillIntegratedFlowPOI(dVn2nd,dErrVn2nd);
15237 fCommonHistsResults4th->FillIntegratedFlowPOI(dVn4th,dErrVn4th);
15238 fCommonHistsResults6th->FillIntegratedFlowPOI(dVn6th,0.); // to be improved (errors)
15239 fCommonHistsResults8th->FillIntegratedFlowPOI(dVn8th,0.); // to be improved (errors)
15240 }
15241 else if (type == "RP")
15242 {
15243 fCommonHistsResults2nd->FillIntegratedFlowRP(dVn2nd,dErrVn2nd);
15244 fCommonHistsResults4th->FillIntegratedFlowRP(dVn4th,dErrVn4th);
15245 fCommonHistsResults6th->FillIntegratedFlowRP(dVn6th,0.); // to be improved (errors)
15246 fCommonHistsResults8th->FillIntegratedFlowRP(dVn8th,0.); // to be improved (errors)
15247 }
15248
15249 delete flow2ndPt;
15250 delete flow4thPt;
15251 //delete flow6thPt;
15252 //delete flow8thPt;
15253
15254 delete yield2ndPt;
15255 delete yield4thPt;
15256 delete yield6thPt;
15257 delete yield8thPt;
15258
15259} // end of AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(TString type)
15260
e1d101a6 15261//=======================================================================================================================
489d5531 15262
489d5531 15263void AliFlowAnalysisWithQCumulants::InitializeArraysForDistributions()
15264{
15265 // Initialize all arrays used for distributions.
15266
15267 // a) Initialize arrays of histograms used to hold distributions of correlations;
15268 // b) Initialize array to hold min and max values of correlations.
15269
15270 // a) Initialize arrays of histograms used to hold distributions of correlations:
15271 for(Int_t di=0;di<4;di++) // distribution index
15272 {
15273 fDistributions[di] = NULL;
15274 }
15275
15276 // b) Initialize default min and max values of correlations:
15277 // (Remark: The default values bellow were chosen for v2=5% and M=500)
15278 fMinValueOfCorrelation[0] = -0.01; // <2>_min
15279 fMaxValueOfCorrelation[0] = 0.04; // <2>_max
15280 fMinValueOfCorrelation[1] = -0.00002; // <4>_min
15281 fMaxValueOfCorrelation[1] = 0.00015; // <4>_max
15282 fMinValueOfCorrelation[2] = -0.0000003; // <6>_min
15283 fMaxValueOfCorrelation[2] = 0.0000006; // <6>_max
15284 fMinValueOfCorrelation[3] = -0.000000006; // <8>_min
15285 fMaxValueOfCorrelation[3] = 0.000000003; // <8>_max
15286
15287} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForDistributions()
15288
e1d101a6 15289//=======================================================================================================================
489d5531 15290
e5834fcb 15291void AliFlowAnalysisWithQCumulants::InitializeArraysForVarious()
15292{
15293 // Initialize all arrays used for various unclassified objects.
15294
15295 for(Int_t p=0;p<4;p++) // [v_min,v_max,refMult_min,refMult_max]
15296 {
15297 fPhiDistributionForOneEventSettings[p] = 0.;
15298 }
15299
15300} // end of void AliFlowAnalysisWithQCumulants::InitializeArraysForVarious()
15301
e1d101a6 15302//=======================================================================================================================
489d5531 15303
15304void AliFlowAnalysisWithQCumulants::BookEverythingForDistributions()
15305{
15306 // a) Book profile to hold all flags for distributions of correlations;
15307 // b) Book all histograms to hold distributions of correlations.
15308
15309 TString correlationIndex[4] = {"<2>","<4>","<6>","<8>"}; // to be improved (should I promote this to data members?)
15310
15311 // a) Book profile to hold all flags for distributions of correlations:
15312 TString distributionsFlagsName = "fDistributionsFlags";
15313 distributionsFlagsName += fAnalysisLabel->Data();
15314 fDistributionsFlags = new TProfile(distributionsFlagsName.Data(),"Flags for Distributions of Correlations",9,0,9);
15315 fDistributionsFlags->SetTickLength(-0.01,"Y");
15316 fDistributionsFlags->SetMarkerStyle(25);
15317 fDistributionsFlags->SetLabelSize(0.05);
15318 fDistributionsFlags->SetLabelOffset(0.02,"Y");
e1d101a6 15319 fDistributionsFlags->SetStats(kFALSE);
489d5531 15320 fDistributionsFlags->GetXaxis()->SetBinLabel(1,"Store or not?");
15321 fDistributionsFlags->GetXaxis()->SetBinLabel(2,"<2>_{min}");
15322 fDistributionsFlags->GetXaxis()->SetBinLabel(3,"<2>_{max}");
15323 fDistributionsFlags->GetXaxis()->SetBinLabel(4,"<4>_{min}");
15324 fDistributionsFlags->GetXaxis()->SetBinLabel(5,"<4>_{max}");
15325 fDistributionsFlags->GetXaxis()->SetBinLabel(6,"<6>_{min}");
15326 fDistributionsFlags->GetXaxis()->SetBinLabel(7,"<6>_{max}");
15327 fDistributionsFlags->GetXaxis()->SetBinLabel(8,"<8>_{min}");
15328 fDistributionsFlags->GetXaxis()->SetBinLabel(9,"<8>_{max}");
15329 fDistributionsList->Add(fDistributionsFlags);
15330
15331 // b) Book all histograms to hold distributions of correlations.
15332 if(fStoreDistributions)
15333 {
15334 TString distributionsName = "fDistributions";
15335 distributionsName += fAnalysisLabel->Data();
15336 for(Int_t di=0;di<4;di++) // distribution index
15337 {
15338 fDistributions[di] = new TH1D(Form("Distribution of %s",correlationIndex[di].Data()),Form("Distribution of %s",correlationIndex[di].Data()),10000,fMinValueOfCorrelation[di],fMaxValueOfCorrelation[di]);
15339 fDistributions[di]->SetXTitle(correlationIndex[di].Data());
15340 fDistributionsList->Add(fDistributions[di]);
15341 } // end of for(Int_t di=0;di<4;di++) // distribution index
15342 } // end of if(fStoreDistributions)
15343
15344} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForDistributions()
15345
e1d101a6 15346//=======================================================================================================================
489d5531 15347
e5834fcb 15348void AliFlowAnalysisWithQCumulants::BookEverythingForVarious()
15349{
15350 // Book all objects for various unclassified quantities.
15351
15352 if(!fStorePhiDistributionForOneEvent){return;}
15353
15354 // a) Book histogram holding phi distribution for single event to illustrate flow.
15355
15356 // a) Book histogram holding phi distribution for single event to illustrate flow:
15357 fPhiDistributionForOneEvent = new TH1D("fPhiDistributionForOneEvent","",360,0.,TMath::TwoPi());
15358 fPhiDistributionForOneEvent->GetXaxis()->SetTitle("#phi");
15359 fVariousList->Add(fPhiDistributionForOneEvent);
15360
15361} // end of void AliFlowAnalysisWithQCumulants::BookEverythingForVarious()
15362
e1d101a6 15363//=======================================================================================================================
489d5531 15364
15365void AliFlowAnalysisWithQCumulants::StoreFlagsForDistributions()
15366{
15367 // Store all flags for distributiuons of correlations in profile fDistributionsFlags.
15368
15369 if(!fDistributionsFlags)
15370 {
15371 cout<<"WARNING: fDistributionsFlags is NULL in AFAWQC::SDF() !!!!"<<endl;
15372 exit(0);
15373 }
15374
15375 fDistributionsFlags->Fill(0.5,(Int_t)fStoreDistributions); // histos with distributions of correlations stored or not in the output file
15376 // store min and max values of correlations:
15377 for(Int_t di=0;di<4;di++) // distribution index
15378 {
15379 fDistributionsFlags->Fill(1.5+2.*(Double_t)di,fMinValueOfCorrelation[di]);
15380 fDistributionsFlags->Fill(2.5+2.*(Double_t)di,fMaxValueOfCorrelation[di]);
15381 }
15382
15383} // end of void AliFlowAnalysisWithQCumulants::StoreFlagsForDistributions()
15384
e1d101a6 15385//=======================================================================================================================
489d5531 15386
489d5531 15387void AliFlowAnalysisWithQCumulants::StoreDistributionsOfCorrelations()
15388{
15389 // Store distributions of correlations.
15390
15391 if(!(fIntFlowCorrelationsEBE && fIntFlowEventWeightsForCorrelationsEBE))
15392 {
15393 cout<<"WARNING: fIntFlowCorrelationsEBE && fIntFlowEventWeightsForCorrelationsEBE"<<endl;
15394 cout<<" is NULL in AFAWQC::SDOC() !!!!"<<endl;
15395 exit(0);
15396 }
15397
15398 for(Int_t di=0;di<4;di++) // distribution index
15399 {
15400 if(!fDistributions[di])
15401 {
15402 cout<<"WARNING: fDistributions[di] is NULL in AFAWQC::SDOC() !!!!"<<endl;
15403 cout<<"di = "<<di<<endl;
15404 exit(0);
15405 } else
15406 {
15407 fDistributions[di]->Fill(fIntFlowCorrelationsEBE->GetBinContent(di+1),fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(di+1));
15408 }
15409 } // end of for(Int_t di=0;di<4;di++) // distribution index
15410
15411} // end of void AliFlowAnalysisWithQCumulants::StoreDistributionsOfCorrelations()
15412
e1d101a6 15413//=======================================================================================================================
489d5531 15414
489d5531 15415void AliFlowAnalysisWithQCumulants::BookAndNestAllLists()
15416{
15417 // Book and nest all lists nested in the base list fHistList.
15418 // a) Book and nest lists for integrated flow;
15419 // b) Book and nest lists for differential flow;
15420 // c) Book and nest list for particle weights;
15421 // d) Book and nest list for distributions;
e5834fcb 15422 // e) Book and nest list for various unclassified objects;
e1d101a6 15423 // f) Book and nest list for other differential correlators;
15424 // g) Book and nest list for nested loops;
df23c5ae 15425 // h) Book and nest lists for mixed harmonics;
15426 // i) Book and nest lists for control histograms.
489d5531 15427
15428 // a) Book and nest all lists for integrated flow:
1268c371 15429 // Base list for integrated flow:
489d5531 15430 fIntFlowList = new TList();
15431 fIntFlowList->SetName("Integrated Flow");
15432 fIntFlowList->SetOwner(kTRUE);
15433 fHistList->Add(fIntFlowList);
1268c371 15434 // List holding profiles:
489d5531 15435 fIntFlowProfiles = new TList();
15436 fIntFlowProfiles->SetName("Profiles");
15437 fIntFlowProfiles->SetOwner(kTRUE);
15438 fIntFlowList->Add(fIntFlowProfiles);
3435cacb 15439 // List holding all profiles with results for correlations vs M:
15440 if(fCalculateAllCorrelationsVsM)
15441 {
15442 fIntFlowAllCorrelationsVsM = new TList();
15443 fIntFlowAllCorrelationsVsM->SetName("Correlations vs M");
15444 fIntFlowAllCorrelationsVsM->SetOwner(kTRUE);
15445 fIntFlowProfiles->Add(fIntFlowAllCorrelationsVsM);
15446 } // end of if(fCalculateAllCorrelationsVsM)
1268c371 15447 // List holding histograms with results:
489d5531 15448 fIntFlowResults = new TList();
15449 fIntFlowResults->SetName("Results");
15450 fIntFlowResults->SetOwner(kTRUE);
15451 fIntFlowList->Add(fIntFlowResults);
15452
1268c371 15453 // b) Book and nest lists for differential flow:
15454 this->BookAndNestListsForDifferentialFlow();
15455
15456 // c) Book and nest list for particle weights:
15457 fWeightsList->SetName("Weights");
15458 fWeightsList->SetOwner(kTRUE);
15459 fHistList->Add(fWeightsList);
15460
15461 // d) Book and nest list for distributions:
15462 fDistributionsList = new TList();
15463 fDistributionsList->SetName("Distributions");
15464 fDistributionsList->SetOwner(kTRUE);
15465 fHistList->Add(fDistributionsList);
15466
15467 // e) Book and nest list for various unclassified objects:
15468 if(fStorePhiDistributionForOneEvent)
15469 {
15470 fVariousList = new TList();
15471 fVariousList->SetName("Various");
15472 fVariousList->SetOwner(kTRUE);
15473 fHistList->Add(fVariousList);
15474 }
15475
64e500e3 15476 // f) Book and nest list for other differential correlators:
15477 fOtherDiffCorrelatorsList = new TList();
15478 fOtherDiffCorrelatorsList->SetName("Other differential correlators");
15479 fOtherDiffCorrelatorsList->SetOwner(kTRUE);
62e36168 15480 if(fCalculateDiffFlow){fHistList->Add(fOtherDiffCorrelatorsList);} // TBI: Use another flag here instead of fCalculateDiffFlow
64e500e3 15481
15482 // g) Book and nest list for nested loops:
1268c371 15483 fNestedLoopsList = new TList();
15484 fNestedLoopsList->SetName("Nested Loops");
15485 fNestedLoopsList->SetOwner(kTRUE);
15486 fHistList->Add(fNestedLoopsList);
e1d101a6 15487
15488 // h) Book and nest lists for mixed harmonics:
15489 // Base list for mixed harmonics:
15490 fMixedHarmonicsList = new TList();
15491 fMixedHarmonicsList->SetName("Mixed Harmonics");
15492 fMixedHarmonicsList->SetOwner(kTRUE);
15493 fHistList->Add(fMixedHarmonicsList);
15494 // List holding profiles:
15495 fMixedHarmonicsProfiles = new TList();
15496 fMixedHarmonicsProfiles->SetName("Profiles");
15497 fMixedHarmonicsProfiles->SetOwner(kTRUE);
15498 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsProfiles);}
15499 // List holding histograms with results:
15500 fMixedHarmonicsResults = new TList();
15501 fMixedHarmonicsResults->SetName("Results");
15502 fMixedHarmonicsResults->SetOwner(kTRUE);
15503 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsResults);}
c10259fb 15504 // List holding objects for statistical error propagation of mixed harmonics:
15505 fMixedHarmonicsErrorPropagation = new TList();
15506 fMixedHarmonicsErrorPropagation->SetName("Error Propagation");
15507 fMixedHarmonicsErrorPropagation->SetOwner(kTRUE);
15508 if(fCalculateMixedHarmonics){fMixedHarmonicsList->Add(fMixedHarmonicsErrorPropagation);}
e1d101a6 15509
df23c5ae 15510 // i) Book and nest lists for control histograms:
15511 // Base list for mixed harmonics:
15512 fControlHistogramsList = new TList();
15513 fControlHistogramsList->SetName("Control Histograms");
15514 fControlHistogramsList->SetOwner(kTRUE);
15515 fHistList->Add(fControlHistogramsList);
15516
1268c371 15517} // end of void AliFlowAnalysisWithQCumulants::BookAndNestAllLists()
15518
e1d101a6 15519//=======================================================================================================================
1268c371 15520
15521void AliFlowAnalysisWithQCumulants::BookAndNestListsForDifferentialFlow()
15522{
15523 // Book and nest lists for differential flow.
15524
15525 // Base list for differential flow objects:
489d5531 15526 fDiffFlowList = new TList();
15527 fDiffFlowList->SetName("Differential Flow");
15528 fDiffFlowList->SetOwner(kTRUE);
15529 fHistList->Add(fDiffFlowList);
1268c371 15530
15531 // Local flags:
15532 TString typeFlag[2] = {"RP","POI"};
15533 TString ptEtaFlag[2] = {"p_{T}","#eta"};
15534 TString powerFlag[2] = {"linear","quadratic"};
15535
15536 // 2D:
15537 if(fCalculate2DDiffFlow)
15538 {
15539 fDiffFlow2D = new TList();
15540 fDiffFlow2D->SetName("2D");
15541 fDiffFlow2D->SetOwner(kTRUE);
15542 fDiffFlowList->Add(fDiffFlow2D);
15543 for(Int_t t=0;t<2;t++)
15544 {
15545 f2DDiffFlowCorrelationsProList[t] = new TList();
15546 f2DDiffFlowCorrelationsProList[t]->SetOwner(kTRUE);
15547 f2DDiffFlowCorrelationsProList[t]->SetName(Form("Profiles with 2D correlations (%s)",typeFlag[t].Data()));
15548 fDiffFlow2D->Add(f2DDiffFlowCorrelationsProList[t]);
15549 } // end of for(Int_t t=0;t<2;t++)
15550 } // end of if(fCalculate2DDiffFlow)
15551
15552 // What follows bellow in this method is relevant only for 1D differential flow:
15553 if(!fCalculateDiffFlow){return;}
15554
15555 // List holding profiles:
489d5531 15556 fDiffFlowProfiles = new TList();
15557 fDiffFlowProfiles->SetName("Profiles");
15558 fDiffFlowProfiles->SetOwner(kTRUE);
15559 fDiffFlowList->Add(fDiffFlowProfiles);
1268c371 15560 // List holding histograms with results:
489d5531 15561 fDiffFlowResults = new TList();
15562 fDiffFlowResults->SetName("Results");
15563 fDiffFlowResults->SetOwner(kTRUE);
15564 fDiffFlowList->Add(fDiffFlowResults);
1268c371 15565 // Flags used for naming nested lists in list fDiffFlowProfiles and fDiffFlowResults:
489d5531 15566 TList list;
15567 list.SetOwner(kTRUE);
1268c371 15568 // Nested lists in fDiffFlowProfiles (~/Differential Flow/Profiles):
489d5531 15569 for(Int_t t=0;t<2;t++) // type: RP or POI
15570 {
62e36168 15571 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 15572 {
15573 // list holding profiles with correlations:
15574 fDiffFlowCorrelationsProList[t][pe] = (TList*)list.Clone();
15575 fDiffFlowCorrelationsProList[t][pe]->SetName(Form("Profiles with correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15576 fDiffFlowProfiles->Add(fDiffFlowCorrelationsProList[t][pe]);
15577 // list holding profiles with products of correlations:
15578 fDiffFlowProductOfCorrelationsProList[t][pe] = (TList*)list.Clone();
15579 fDiffFlowProductOfCorrelationsProList[t][pe]->SetName(Form("Profiles with products of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15580 fDiffFlowProfiles->Add(fDiffFlowProductOfCorrelationsProList[t][pe]);
15581 // list holding profiles with corrections:
15582 fDiffFlowCorrectionsProList[t][pe] = (TList*)list.Clone();
15583 fDiffFlowCorrectionsProList[t][pe]->SetName(Form("Profiles with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15584 fDiffFlowProfiles->Add(fDiffFlowCorrectionsProList[t][pe]);
15585 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
15586 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15587 // nested lists in fDiffFlowResults (~/Differential Flow/Results):
15588 for(Int_t t=0;t<2;t++) // type: RP or POI
15589 {
62e36168 15590 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 15591 {
15592 // list holding histograms with correlations:
15593 fDiffFlowCorrelationsHistList[t][pe] = (TList*)list.Clone();
15594 fDiffFlowCorrelationsHistList[t][pe]->SetName(Form("Correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15595 fDiffFlowResults->Add(fDiffFlowCorrelationsHistList[t][pe]);
15596 // list holding histograms with corrections:
15597 fDiffFlowCorrectionsHistList[t][pe] = (TList*)list.Clone();
15598 fDiffFlowCorrectionsHistList[t][pe]->SetName(Form("Histograms with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15599 fDiffFlowResults->Add(fDiffFlowCorrectionsHistList[t][pe]);
15600 for(Int_t power=0;power<2;power++)
15601 {
15602 // list holding histograms with sums of event weights:
15603 fDiffFlowSumOfEventWeightsHistList[t][pe][power] = (TList*)list.Clone();
15604 fDiffFlowSumOfEventWeightsHistList[t][pe][power]->SetName(Form("Sum of %s event weights (%s, %s)",powerFlag[power].Data(),typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15605 fDiffFlowResults->Add(fDiffFlowSumOfEventWeightsHistList[t][pe][power]);
15606 } // end of for(Int_t power=0;power<2;power++)
15607 // list holding histograms with sums of products of event weights:
15608 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe] = (TList*)list.Clone();
15609 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]->SetName(Form("Sum of products of event weights (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15610 fDiffFlowResults->Add(fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]);
15611 // list holding histograms with covariances of correlations:
15612 fDiffFlowCovariancesHistList[t][pe] = (TList*)list.Clone();
15613 fDiffFlowCovariancesHistList[t][pe]->SetName(Form("Covariances of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15614 fDiffFlowResults->Add(fDiffFlowCovariancesHistList[t][pe]);
15615 // list holding histograms with differential Q-cumulants:
15616 fDiffFlowCumulantsHistList[t][pe] = (TList*)list.Clone();
15617 fDiffFlowCumulantsHistList[t][pe]->SetName(Form("Differential Q-cumulants (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15618 fDiffFlowResults->Add(fDiffFlowCumulantsHistList[t][pe]);
1268c371 15619 // list holding histograms which quantify detector bias to differential Q-cumulants:
15620 fDiffFlowDetectorBiasHistList[t][pe] = (TList*)list.Clone();
15621 fDiffFlowDetectorBiasHistList[t][pe]->SetName(Form("Detector bias (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15622 fDiffFlowResults->Add(fDiffFlowDetectorBiasHistList[t][pe]);
489d5531 15623 // list holding histograms with differential flow estimates from Q-cumulants:
15624 fDiffFlowHistList[t][pe] = (TList*)list.Clone();
15625 fDiffFlowHistList[t][pe]->SetName(Form("Differential flow (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data()));
15626 fDiffFlowResults->Add(fDiffFlowHistList[t][pe]);
15627 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
15628 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
15629
1268c371 15630} // end of void AliFlowAnalysisWithQCumulants::BookAndNestListsForDifferentialFlow()
489d5531 15631
e1d101a6 15632//=======================================================================================================================
489d5531 15633
489d5531 15634void AliFlowAnalysisWithQCumulants::FillCommonHistResultsDiffFlow(TString type)
15635{
1268c371 15636 // Fill common result histograms for differential flow.
489d5531 15637
1268c371 15638 Int_t t = 0;
489d5531 15639
15640 if(type == "RP")
15641 {
1268c371 15642 t = 0;
489d5531 15643 } else if(type == "POI")
15644 {
1268c371 15645 t = 1;
489d5531 15646 }
1268c371 15647
15648 // to be improved - check all pointers used in this method
489d5531 15649
15650 if(!(fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th))
15651 {
15652 cout<<"WARNING: fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th"<<endl;
15653 cout<<" is NULL in AFAWQC::FCHRIF() !!!!"<<endl;
15654 exit(0);
15655 }
15656
15657 // pt:
15658 for(Int_t p=1;p<=fnBinsPt;p++)
15659 {
15660 Double_t v2 = fDiffFlow[t][0][0]->GetBinContent(p);
15661 Double_t v4 = fDiffFlow[t][0][1]->GetBinContent(p);
15662 Double_t v6 = fDiffFlow[t][0][2]->GetBinContent(p);
15663 Double_t v8 = fDiffFlow[t][0][3]->GetBinContent(p);
15664
15665 Double_t v2Error = fDiffFlow[t][0][0]->GetBinError(p);
15666 Double_t v4Error = fDiffFlow[t][0][1]->GetBinError(p);
15667 //Double_t v6Error = fFinalFlow1D[t][pW][nua][0][2]->GetBinError(p);
15668 //Double_t v8Error = fFinalFlow1D[t][pW][nua][0][3]->GetBinError(p);
15669
15670 if(type == "RP")
15671 {
15672 fCommonHistsResults2nd->FillDifferentialFlowPtRP(p,v2,v2Error);
15673 fCommonHistsResults4th->FillDifferentialFlowPtRP(p,v4,v4Error);
15674 fCommonHistsResults6th->FillDifferentialFlowPtRP(p,v6,0.);
15675 fCommonHistsResults8th->FillDifferentialFlowPtRP(p,v8,0.);
15676 } else if(type == "POI")
15677 {
15678 fCommonHistsResults2nd->FillDifferentialFlowPtPOI(p,v2,v2Error);
15679 fCommonHistsResults4th->FillDifferentialFlowPtPOI(p,v4,v4Error);
15680 fCommonHistsResults6th->FillDifferentialFlowPtPOI(p,v6,0.);
15681 fCommonHistsResults8th->FillDifferentialFlowPtPOI(p,v8,0.);
15682 }
15683 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
15684
15685 // eta:
62e36168 15686 if(!fCalculateDiffFlowVsEta){return;}
489d5531 15687 for(Int_t e=1;e<=fnBinsEta;e++)
15688 {
15689 Double_t v2 = fDiffFlow[t][1][0]->GetBinContent(e);
15690 Double_t v4 = fDiffFlow[t][1][1]->GetBinContent(e);
15691 Double_t v6 = fDiffFlow[t][1][2]->GetBinContent(e);
15692 Double_t v8 = fDiffFlow[t][1][3]->GetBinContent(e);
15693
15694 Double_t v2Error = fDiffFlow[t][1][0]->GetBinError(e);
15695 Double_t v4Error = fDiffFlow[t][1][1]->GetBinError(e);
15696 //Double_t v6Error = fDiffFlow[t][1][2]->GetBinError(e);
15697 //Double_t v8Error = fDiffFlow[t][1][3]->GetBinError(e);
15698
15699 if(type == "RP")
15700 {
15701 fCommonHistsResults2nd->FillDifferentialFlowEtaRP(e,v2,v2Error);
15702 fCommonHistsResults4th->FillDifferentialFlowEtaRP(e,v4,v4Error);
15703 fCommonHistsResults6th->FillDifferentialFlowEtaRP(e,v6,0.);
15704 fCommonHistsResults8th->FillDifferentialFlowEtaRP(e,v8,0.);
15705 } else if(type == "POI")
15706 {
15707 fCommonHistsResults2nd->FillDifferentialFlowEtaPOI(e,v2,v2Error);
15708 fCommonHistsResults4th->FillDifferentialFlowEtaPOI(e,v4,v4Error);
15709 fCommonHistsResults6th->FillDifferentialFlowEtaPOI(e,v6,0.);
15710 fCommonHistsResults8th->FillDifferentialFlowEtaPOI(e,v8,0.);
15711 }
15712 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
15713
15714} // end of void AliFlowAnalysisWithQCumulants::FillCommonHistResultsDiffFlow(TString type, Bool_t useParticleWeights, TString eventWeights, Bool_t correctedForNUA)
15715
e1d101a6 15716//=======================================================================================================================
489d5531 15717
1268c371 15718void AliFlowAnalysisWithQCumulants::CommonConstants(TString method)
489d5531 15719{
1268c371 15720 // Access and store common constants.
15721
15722 // a) If this method was called in Init() access common constants from AliFlowCommonConstants;
15723 // b) If this method was called in Init() book and fill TProfile to hold constants accessed in a);
15724 // c) If this method was called in Finish() access common constants from TProfile booked and filled in b).
15725
15726 if(method == "Init")
15727 {
15728 // a) If this method was called in Init() access common constants from AliFlowCommonConstants:
15729 fnBinsPhi = AliFlowCommonConstants::GetMaster()->GetNbinsPhi();
15730 fPhiMin = AliFlowCommonConstants::GetMaster()->GetPhiMin();
15731 fPhiMax = AliFlowCommonConstants::GetMaster()->GetPhiMax();
15732 if(fnBinsPhi){fPhiBinWidth = (fPhiMax-fPhiMin)/fnBinsPhi;}
15733 fnBinsPt = AliFlowCommonConstants::GetMaster()->GetNbinsPt();
15734 fPtMin = AliFlowCommonConstants::GetMaster()->GetPtMin();
15735 fPtMax = AliFlowCommonConstants::GetMaster()->GetPtMax();
15736 if(fnBinsPt){fPtBinWidth = (fPtMax-fPtMin)/fnBinsPt;}
15737 fnBinsEta = AliFlowCommonConstants::GetMaster()->GetNbinsEta();
15738 fEtaMin = AliFlowCommonConstants::GetMaster()->GetEtaMin();
15739 fEtaMax = AliFlowCommonConstants::GetMaster()->GetEtaMax();
15740 if(fnBinsEta){fEtaBinWidth = (fEtaMax-fEtaMin)/fnBinsEta;}
15741
15742 // b) If this method was called in Init() book and fill TProfile to hold constants accessed in a):
15743 TString fCommonConstantsName = "fCommonConstants";
15744 fCommonConstantsName += fAnalysisLabel->Data();
15745 fCommonConstants = new TProfile(fCommonConstantsName.Data(),"Common constants",9,0.,9.);
15746 fCommonConstants->SetLabelSize(0.05);
15747 fCommonConstants->GetXaxis()->SetBinLabel(1,"nBins (#phi)");
15748 fCommonConstants->Fill(0.5,fnBinsPhi);
15749 fCommonConstants->GetXaxis()->SetBinLabel(2,"#phi_{min}");
15750 fCommonConstants->Fill(1.5,fPhiMin);
15751 fCommonConstants->GetXaxis()->SetBinLabel(3,"#phi_{max}");
15752 fCommonConstants->Fill(2.5,fPhiMax);
15753 fCommonConstants->GetXaxis()->SetBinLabel(4,"nBins (p_{t})");
15754 fCommonConstants->Fill(3.5,fnBinsPt);
15755 fCommonConstants->GetXaxis()->SetBinLabel(5,"(p_{t})_{min}");
15756 fCommonConstants->Fill(4.5,fPtMin);
15757 fCommonConstants->GetXaxis()->SetBinLabel(6,"(p_{t})_{max}");
15758 fCommonConstants->Fill(5.5,fPtMax);
15759 fCommonConstants->GetXaxis()->SetBinLabel(7,"nBins (#eta)");
15760 fCommonConstants->Fill(6.5,fnBinsEta);
15761 fCommonConstants->GetXaxis()->SetBinLabel(8,"#eta_{min}");
15762 fCommonConstants->Fill(7.5,fEtaMin);
15763 fCommonConstants->GetXaxis()->SetBinLabel(9,"#eta_{max}");
15764 fCommonConstants->Fill(8.5,fEtaMax);
15765 fHistList->Add(fCommonConstants);
15766 } // end of if(method == "Init")
15767 else if(method == "Finish")
15768 {
15769 // c) If this method was called in Finish() access common constants from TProfile booked and filled in b):
15770 if(!fCommonConstants)
15771 {
15772 printf("\n WARNING (QC): fCommonConstants is NULL in AFAWQC::AC(\"%s\") !!!!\n\n",method.Data());
15773 exit(0);
15774 }
15775 fnBinsPhi = (Int_t)fCommonConstants->GetBinContent(1);
15776 fPhiMin = fCommonConstants->GetBinContent(2);
15777 fPhiMax = fCommonConstants->GetBinContent(3);
15778 if(fnBinsPhi){fPhiBinWidth = (fPhiMax-fPhiMin)/fnBinsPhi;}
15779 fnBinsPt = (Int_t)fCommonConstants->GetBinContent(4);
15780 fPtMin = fCommonConstants->GetBinContent(5);
15781 fPtMax = fCommonConstants->GetBinContent(6);
15782 if(fnBinsPt){fPtBinWidth = (fPtMax-fPtMin)/fnBinsPt;}
15783 fnBinsEta = (Int_t)fCommonConstants->GetBinContent(7);
15784 fEtaMin = fCommonConstants->GetBinContent(8);
15785 fEtaMax = fCommonConstants->GetBinContent(9);
15786 if(fnBinsEta){fEtaBinWidth = (fEtaMax-fEtaMin)/fnBinsEta;}
15787 } // end of else if(method == "Finish")
15788
15789} // end of void AliFlowAnalysisWithQCumulants::CommonConstants(TString method)
489d5531 15790
e1d101a6 15791//=======================================================================================================================
489d5531 15792
489d5531 15793void AliFlowAnalysisWithQCumulants::CrossCheckSettings()
15794{
df23c5ae 15795 // a) Cross-check if the choice for multiplicity weights make sense;
15796 // b) Cross-check if the choice for multiplicity itself make sense.
15797
15798 // a) Cross-check if the choice for multiplicity weights make sense:
15799 if((!fMultiplicityWeight->Contains("combinations")) &&
15800 (!fMultiplicityWeight->Contains("unit")) &&
15801 (!fMultiplicityWeight->Contains("multiplicity")) )
489d5531 15802 {
15803 cout<<"WARNING (QC): Multiplicity weight can be either \"combinations\", \"unit\""<<endl;
15804 cout<<" or \"multiplicity\". Certainly not \""<<fMultiplicityWeight->Data()<<"\"."<<endl;
15805 exit(0);
15806 }
df23c5ae 15807
489d5531 15808} // end of void AliFlowAnalysisWithQCumulants::CrossCheckSettings()
15809
e1d101a6 15810//=======================================================================================================================
489d5531 15811
489d5531 15812void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeights()
15813{
0328db2d 15814 // Calculate sum of linear and quadratic event weights for correlations.
2001bc3a 15815
df23c5ae 15816 // TBI re-think what is the right multiplicity when particle weights are used!
3842bdcd 15817
15818 // Multiplicity bin of an event (relevant for all histos vs M):
15819 Double_t dMultiplicityBin = 0.;
df23c5ae 15820 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 15821 {
df23c5ae 15822 dMultiplicityBin = fNumberOfRPsEBE+0.5;
15823 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 15824 {
4aae2a93 15825 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 15826 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
15827 {
15828 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
15829 }
9f33751d 15830
489d5531 15831 for(Int_t p=0;p<2;p++) // power-1
15832 {
15833 for(Int_t ci=0;ci<4;ci++) // correlation index
15834 {
15835 fIntFlowSumOfEventWeights[p]->Fill(ci+0.5,pow(fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci+1),p+1));
b3dacf6b 15836 if(fCalculateCumulantsVsM)
15837 {
3842bdcd 15838 fIntFlowSumOfEventWeightsVsM[ci][p]->Fill(dMultiplicityBin,pow(fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci+1),p+1)); // to be improved: dMult => sum of weights?
b3dacf6b 15839 }
489d5531 15840 }
15841 }
15842
15843} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeights()
15844
e1d101a6 15845//=======================================================================================================================
489d5531 15846
0328db2d 15847void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeightsNUA()
489d5531 15848{
0328db2d 15849 // Calculate sum of linear and quadratic event weights for NUA terms.
15850
15851 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
489d5531 15852 {
0328db2d 15853 for(Int_t p=0;p<2;p++) // power-1
15854 {
b92ea2b9 15855 for(Int_t ci=0;ci<4;ci++) // nua term index
0328db2d 15856 {
15857 fIntFlowSumOfEventWeightsNUA[sc][p]->Fill(ci+0.5,pow(fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc]->GetBinContent(ci+1),p+1));
489d5531 15858 }
0328db2d 15859 }
15860 }
15861
15862} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfEventWeightsNUA()
489d5531 15863
e1d101a6 15864//=======================================================================================================================
0328db2d 15865
0328db2d 15866void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeights()
15867{
ff70ca91 15868 // Calculate sum of product of event weights for correlations.
2001bc3a 15869
df23c5ae 15870 // TBI re-think what is the right multiplicity when particle weights are used!
3842bdcd 15871
15872 // Multiplicity bin of an event (relevant for all histos vs M):
15873 Double_t dMultiplicityBin = 0.;
df23c5ae 15874 if(fMultiplicityIs==AliFlowCommonConstants::kRP)
3842bdcd 15875 {
df23c5ae 15876 dMultiplicityBin = fNumberOfRPsEBE+0.5;
15877 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
3842bdcd 15878 {
15879 dMultiplicityBin = fReferenceMultiplicityEBE+0.5;
df23c5ae 15880 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
15881 {
15882 dMultiplicityBin = fNumberOfPOIsEBE+0.5;
15883 }
2001bc3a 15884
489d5531 15885 Int_t counter = 0;
15886
15887 for(Int_t ci1=1;ci1<4;ci1++)
15888 {
15889 for(Int_t ci2=ci1+1;ci2<=4;ci2++)
15890 {
ff70ca91 15891 fIntFlowSumOfProductOfEventWeights->Fill(0.5+counter,
15892 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
b3dacf6b 15893 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
15894 if(fCalculateCumulantsVsM)
15895 {
3842bdcd 15896 fIntFlowSumOfProductOfEventWeightsVsM[counter]->Fill(dMultiplicityBin, // to be improved: dMult => sum of weights?
b3dacf6b 15897 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci1)*
15898 fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(ci2));
15899 } // end of if(fCalculateCumulantsVsM)
ff70ca91 15900 counter++;
489d5531 15901 }
15902 }
15903
0328db2d 15904} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeights()
15905
e1d101a6 15906//=======================================================================================================================
0328db2d 15907
0328db2d 15908void AliFlowAnalysisWithQCumulants::CalculateIntFlowSumOfProductOfEventWeightsNUA()
15909{
15910 // Calculate sum of product of event weights for NUA terms.
15911
15912 // w_{<2>} * w_{<cos(#phi)>}:
15913 fIntFlowSumOfProductOfEventWeightsNUA->Fill(0.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15914 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
15915 // w_{<2>} * w_{<sin(#phi)>}:
15916 fIntFlowSumOfProductOfEventWeightsNUA->Fill(1.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15917 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15918 // w_{<cos(#phi)> * w_{<sin(#phi)>}:
15919 fIntFlowSumOfProductOfEventWeightsNUA->Fill(2.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15920 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15921 // w_{<2>} * w{<cos(phi1+phi2)>}
15922 fIntFlowSumOfProductOfEventWeightsNUA->Fill(3.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15923 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15924 // w_{<2>} * w{<sin(phi1+phi2)>}
15925 fIntFlowSumOfProductOfEventWeightsNUA->Fill(4.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15926 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15927 // w_{<2>} * w{<cos(phi1-phi2-phi3)>}
15928 fIntFlowSumOfProductOfEventWeightsNUA->Fill(5.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15929 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15930 // w_{<2>} * w{<sin(phi1-phi2-phi3)>}
15931 fIntFlowSumOfProductOfEventWeightsNUA->Fill(6.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1)*
15932 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15933 // w_{<4>} * w{<cos(phi1)>}
15934 fIntFlowSumOfProductOfEventWeightsNUA->Fill(7.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15935 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1));
15936 // w_{<4>} * w{<sin(phi1)>}
15937 fIntFlowSumOfProductOfEventWeightsNUA->Fill(8.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15938 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1));
15939 // w_{<4>} * w{<cos(phi1+phi2)>}
15940 fIntFlowSumOfProductOfEventWeightsNUA->Fill(9.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15941 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15942 // w_{<4>} * w{<sin(phi1+phi2)>}
15943 fIntFlowSumOfProductOfEventWeightsNUA->Fill(10.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15944 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15945 // w_{<4>} * w{<cos(phi1-phi2-phi3)>}
15946 fIntFlowSumOfProductOfEventWeightsNUA->Fill(11.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15947 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15948 // w_{<4>} * w{<sin(phi1-phi2-phi3)>}
15949 fIntFlowSumOfProductOfEventWeightsNUA->Fill(12.5,fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2)*
15950 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15951 // w_{<cos(phi1)>} * w{<cos(phi1+phi2)>}
15952 fIntFlowSumOfProductOfEventWeightsNUA->Fill(13.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15953 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15954 // w_{<cos(phi1)>} * w{<sin(phi1+phi2)>}
15955 fIntFlowSumOfProductOfEventWeightsNUA->Fill(14.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15956 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15957 // w_{<cos(phi1)>} * w{<cos(phi1-phi2-phi3)>}
15958 fIntFlowSumOfProductOfEventWeightsNUA->Fill(15.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15959 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15960 // w_{<cos(phi1)>} * w{<sin(phi1-phi2-phi3)>}
15961 fIntFlowSumOfProductOfEventWeightsNUA->Fill(16.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(1)*
15962 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15963 // w_{<sin(phi1)>} * w{<cos(phi1+phi2)>}
15964 fIntFlowSumOfProductOfEventWeightsNUA->Fill(17.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15965 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2));
15966 // w_{<sin(phi1)>} * w{<sin(phi1+phi2)>}
15967 fIntFlowSumOfProductOfEventWeightsNUA->Fill(18.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15968 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15969 // w_{<sin(phi1)>} * w{<cos(phi1-phi2-phi3)>}
15970 fIntFlowSumOfProductOfEventWeightsNUA->Fill(19.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15971 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15972 // w_{<sin(phi1)>} * w{<sin(phi1-phi2-phi3)>}
15973 fIntFlowSumOfProductOfEventWeightsNUA->Fill(20.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(1)*
15974 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15975 // w_{<cos(phi1+phi2)>} * w{<sin(phi1+phi2))>}
15976 fIntFlowSumOfProductOfEventWeightsNUA->Fill(21.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15977 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2));
15978 // w_{<cos(phi1+phi2)>} * w{<cos(phi1-phi2-phi3)>}
15979 fIntFlowSumOfProductOfEventWeightsNUA->Fill(22.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15980 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15981 // w_{<cos(phi1+phi2)>} * w{<sin(phi1-phi2-phi3)>}
15982 fIntFlowSumOfProductOfEventWeightsNUA->Fill(23.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(2)*
15983 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15984 // w_{<sin(phi1+phi2)>} * w{<cos(phi1-phi2-phi3)>}
15985 fIntFlowSumOfProductOfEventWeightsNUA->Fill(24.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)*
15986 fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3));
15987 // w_{<sin(phi1+phi2)>} * w{<sin(phi1-phi2-phi3)>}
15988 fIntFlowSumOfProductOfEventWeightsNUA->Fill(25.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(2)*
15989 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15990 // w_{<cos(phi1-phi2-phi3)>} * w{<sin(phi1-phi2-phi3)>}
15991 fIntFlowSumOfProductOfEventWeightsNUA->Fill(26.5,fIntFlowEventWeightForCorrectionTermsForNUAEBE[1]->GetBinContent(3)*
15992 fIntFlowEventWeightForCorrectionTermsForNUAEBE[0]->GetBinContent(3));
15993
15994} // end of void AliFlowAnalysisWithQCumulants::CalculateIntFlowIntFlowSumOfProductOfEventWeightsNUA()
489d5531 15995
e1d101a6 15996//=======================================================================================================================
489d5531 15997
489d5531 15998void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelations(TString type, TString ptOrEta)
15999{
1268c371 16000 // Calculate reduced correlations for RPs or POIs for all pt and eta bins.
489d5531 16001
1268c371 16002 // Multiplicity:
16003 Double_t dMult = (*fSpk)(0,0);
489d5531 16004
16005 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16006 Double_t dReQ1n = (*fReQ)(0,0);
16007 Double_t dReQ2n = (*fReQ)(1,0);
16008 //Double_t dReQ3n = (*fReQ)(2,0);
16009 //Double_t dReQ4n = (*fReQ)(3,0);
16010 Double_t dImQ1n = (*fImQ)(0,0);
16011 Double_t dImQ2n = (*fImQ)(1,0);
16012 //Double_t dImQ3n = (*fImQ)(2,0);
16013 //Double_t dImQ4n = (*fImQ)(3,0);
16014
16015 // reduced correlations are stored in fDiffFlowCorrelationsPro[0=RP,1=POI][0=pt,1=eta][correlation index]. Correlation index runs as follows:
16016 //
16017 // 0: <<2'>>
16018 // 1: <<4'>>
16019 // 2: <<6'>>
16020 // 3: <<8'>>
16021
ea239361 16022 //Int_t t = 0; // type flag
2a98ceb8 16023 Int_t pe = 0; // ptEta flag
489d5531 16024
16025 if(type == "RP")
16026 {
ea239361 16027 //t = 0;
489d5531 16028 } else if(type == "POI")
16029 {
ea239361 16030 //t = 1;
489d5531 16031 }
16032
16033 if(ptOrEta == "Pt")
16034 {
16035 pe = 0;
16036 } else if(ptOrEta == "Eta")
16037 {
16038 pe = 1;
16039 }
16040
16041 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16042 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16043 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16044 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16045
16046 // looping over all bins and calculating reduced correlations:
16047 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16048 {
16049 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
16050 Double_t p1n0kRe = 0.;
16051 Double_t p1n0kIm = 0.;
16052
16053 // number of POIs in particular pt or eta bin:
16054 Double_t mp = 0.;
16055
16056 // 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):
16057 Double_t q1n0kRe = 0.;
16058 Double_t q1n0kIm = 0.;
16059 Double_t q2n0kRe = 0.;
16060 Double_t q2n0kIm = 0.;
16061
16062 // number of particles which are both RPs and POIs in particular pt or eta bin:
16063 Double_t mq = 0.;
16064
16065 if(type == "POI")
16066 {
16067 // q_{m*n,0}:
16068 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
16069 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
16070 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
16071 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
16072 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
16073 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
16074 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
16075 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
16076
16077 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16078 }
16079 else if(type == "RP")
16080 {
16081 // q_{m*n,0}:
16082 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
16083 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
16084 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
16085 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
16086 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
16087 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
16088 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
16089 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
16090
16091 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16092 }
16093
16094 if(type == "POI")
16095 {
16096 // p_{m*n,0}:
16097 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
16098 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
16099 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
16100 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
16101
16102 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16103
ea239361 16104 //t = 1; // typeFlag = RP or POI
489d5531 16105 }
16106 else if(type == "RP")
16107 {
16108 // p_{m*n,0} = q_{m*n,0}:
16109 p1n0kRe = q1n0kRe;
16110 p1n0kIm = q1n0kIm;
16111
16112 mp = mq;
16113
ea239361 16114 //t = 0; // typeFlag = RP or POI
489d5531 16115 }
16116
1268c371 16117 // 2'-particle correlation for particular pt or eta bin:
489d5531 16118 Double_t two1n1nPtEta = 0.;
b40a910e 16119 Double_t mWeight2pPrime = 0.; // multiplicity weight for <2'>
489d5531 16120 if(mp*dMult-mq)
16121 {
16122 two1n1nPtEta = (p1n0kRe*dReQ1n+p1n0kIm*dImQ1n-mq)
16123 / (mp*dMult-mq);
b40a910e 16124 // determine multiplicity weight:
df23c5ae 16125 if(fMultiplicityWeight->Contains("combinations"))
b40a910e 16126 {
16127 mWeight2pPrime = mp*dMult-mq;
df23c5ae 16128 } else if(fMultiplicityWeight->Contains("unit"))
b40a910e 16129 {
16130 mWeight2pPrime = 1.;
16131 }
489d5531 16132 if(type == "POI") // to be improved (I do not this if)
16133 {
16134 // fill profile to get <<2'>> for POIs
b40a910e 16135 fDiffFlowCorrelationsPro[1][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta,mWeight2pPrime);
16136 // fill profile to get <<2'>^2> for POIs
16137 fDiffFlowSquaredCorrelationsPro[1][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta*two1n1nPtEta,mWeight2pPrime);
489d5531 16138 // histogram to store <2'> for POIs e-b-e (needed in some other methods):
16139 fDiffFlowCorrelationsEBE[1][pe][0]->SetBinContent(b,two1n1nPtEta);
b40a910e 16140 fDiffFlowEventWeightsForCorrelationsEBE[1][pe][0]->SetBinContent(b,mWeight2pPrime);
489d5531 16141 }
16142 else if(type == "RP") // to be improved (I do not this if)
16143 {
16144 // profile to get <<2'>> for RPs:
b40a910e 16145 fDiffFlowCorrelationsPro[0][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta,mWeight2pPrime);
16146 // profile to get <<2'>^2> for RPs:
16147 fDiffFlowSquaredCorrelationsPro[0][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nPtEta*two1n1nPtEta,mWeight2pPrime);
489d5531 16148 // histogram to store <2'> for RPs e-b-e (needed in some other methods):
16149 fDiffFlowCorrelationsEBE[0][pe][0]->SetBinContent(b,two1n1nPtEta);
b40a910e 16150 fDiffFlowEventWeightsForCorrelationsEBE[0][pe][0]->SetBinContent(b,mWeight2pPrime);
489d5531 16151 }
16152 } // end of if(mp*dMult-mq)
16153
16154 // 4'-particle correlation:
16155 Double_t four1n1n1n1nPtEta = 0.;
b40a910e 16156 Double_t mWeight4pPrime = 0.; // multiplicity weight for <4'>
489d5531 16157 if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16158 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
16159 {
16160 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16161 - q2n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
16162 - 2.*q2n0kIm*dReQ1n*dImQ1n
16163 - p1n0kRe*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
16164 + p1n0kIm*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
16165 - 2.*dMult*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16166 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*mq
16167 + 6.*(q1n0kRe*dReQ1n+q1n0kIm*dImQ1n)
16168 + 1.*(q2n0kRe*dReQ2n+q2n0kIm*dImQ2n)
16169 + 2.*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16170 + 2.*mq*dMult
16171 - 6.*mq)
16172 / ((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16173 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.));
b40a910e 16174 // determine multiplicity weight:
df23c5ae 16175 if(fMultiplicityWeight->Contains("combinations"))
b40a910e 16176 {
16177 mWeight4pPrime = (mp-mq)*dMult*(dMult-1.)*(dMult-2.) + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
df23c5ae 16178 } else if(fMultiplicityWeight->Contains("unit"))
b40a910e 16179 {
16180 mWeight4pPrime = 1.;
16181 }
489d5531 16182 if(type == "POI")
16183 {
16184 // profile to get <<4'>> for POIs:
b40a910e 16185 fDiffFlowCorrelationsPro[1][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta,mWeight4pPrime);
16186 // profile to get <<4'>^2> for POIs:
16187 fDiffFlowSquaredCorrelationsPro[1][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta*four1n1n1n1nPtEta,mWeight4pPrime);
489d5531 16188 // histogram to store <4'> for POIs e-b-e (needed in some other methods):
16189 fDiffFlowCorrelationsEBE[1][pe][1]->SetBinContent(b,four1n1n1n1nPtEta);
b40a910e 16190 fDiffFlowEventWeightsForCorrelationsEBE[1][pe][1]->SetBinContent(b,mWeight4pPrime);
489d5531 16191 }
16192 else if(type == "RP")
16193 {
16194 // profile to get <<4'>> for RPs:
b40a910e 16195 fDiffFlowCorrelationsPro[0][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta,mWeight4pPrime);
16196 // profile to get <<4'>^2> for RPs:
16197 fDiffFlowSquaredCorrelationsPro[0][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nPtEta*four1n1n1n1nPtEta,mWeight4pPrime);
489d5531 16198 // histogram to store <4'> for RPs e-b-e (needed in some other methods):
16199 fDiffFlowCorrelationsEBE[0][pe][1]->SetBinContent(b,four1n1n1n1nPtEta);
b40a910e 16200 fDiffFlowEventWeightsForCorrelationsEBE[0][pe][1]->SetBinContent(b,mWeight4pPrime);
489d5531 16201 }
16202 } // end of if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16203 // +mq*(dMult-1.)*(dMult-2.)*(dMult-3.))
16204
16205 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16206
16207
16208} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelations(TString type, TString ptOrEta);
16209
e1d101a6 16210//=======================================================================================================================
489d5531 16211
64e500e3 16212void AliFlowAnalysisWithQCumulants::CalculateOtherDiffCorrelators(TString type, TString ptOrEta)
16213{
16214 // Calculate other differential correlators for RPs or POIs for all pt and eta bins.
16215
16216 // Multiplicity:
16217 Double_t dMult = (*fSpk)(0,0);
16218
16219 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16220 Double_t dReQ1n = (*fReQ)(0,0);
16221 Double_t dReQ2n = (*fReQ)(1,0);
16222 Double_t dReQ3n = (*fReQ)(2,0);
16223 //Double_t dReQ4n = (*fReQ)(3,0);
16224 Double_t dImQ1n = (*fImQ)(0,0);
16225 Double_t dImQ2n = (*fImQ)(1,0);
16226 Double_t dImQ3n = (*fImQ)(2,0);
16227 //Double_t dImQ4n = (*fImQ)(3,0);
16228
16229 // 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]
16230 // Correlation index runs as follows:
16231 //
16232 // 0: <exp[in(psi1-3phi2+2phi3)]>
16233
16234 Int_t t = 0; // type flag
16235 Int_t pe = 0; // ptEta flag
16236
16237 if(type == "RP")
16238 {
16239 t = 0;
16240 } else if(type == "POI")
16241 {
16242 t = 1;
16243 }
16244
16245 if(ptOrEta == "Pt")
16246 {
16247 pe = 0;
16248 } else if(ptOrEta == "Eta")
16249 {
16250 pe = 1;
16251 }
16252
16253 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16254 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16255 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16256 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16257
16258 // looping over all bins and calculating reduced correlations:
16259 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16260 {
16261 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
16262 Double_t p1n0kRe = 0.;
16263 Double_t p1n0kIm = 0.;
16264
16265 // number of POIs in particular pt or eta bin:
16266 Double_t mp = 0.;
16267
16268 // 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):
16269 Double_t q1n0kRe = 0.;
16270 Double_t q1n0kIm = 0.;
16271 Double_t q2n0kRe = 0.;
16272 Double_t q2n0kIm = 0.;
16273 Double_t q3n0kRe = 0.;
16274 Double_t q3n0kIm = 0.;
16275
16276 // number of particles which are both RPs and POIs in particular pt or eta bin:
16277 Double_t mq = 0.;
16278
16279 if(type == "POI")
16280 {
16281 // q_{m*n,0}:
16282 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
16283 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
16284 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
16285 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
16286 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
16287 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
16288 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
16289 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
16290 q3n0kRe = fReRPQ1dEBE[2][pe][2][0]->GetBinContent(fReRPQ1dEBE[2][pe][2][0]->GetBin(b))
16291 * fReRPQ1dEBE[2][pe][2][0]->GetBinEntries(fReRPQ1dEBE[2][pe][2][0]->GetBin(b));
16292 q3n0kIm = fImRPQ1dEBE[2][pe][2][0]->GetBinContent(fImRPQ1dEBE[2][pe][2][0]->GetBin(b))
16293 * fImRPQ1dEBE[2][pe][2][0]->GetBinEntries(fImRPQ1dEBE[2][pe][2][0]->GetBin(b));
16294
16295 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16296 }
16297 else if(type == "RP")
16298 {
16299 // q_{m*n,0}:
16300 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
16301 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
16302 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
16303 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
16304 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
16305 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
16306 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
16307 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
16308 q3n0kRe = fReRPQ1dEBE[0][pe][2][0]->GetBinContent(fReRPQ1dEBE[0][pe][2][0]->GetBin(b))
16309 * fReRPQ1dEBE[0][pe][2][0]->GetBinEntries(fReRPQ1dEBE[0][pe][2][0]->GetBin(b));
16310 q3n0kIm = fImRPQ1dEBE[0][pe][2][0]->GetBinContent(fImRPQ1dEBE[0][pe][2][0]->GetBin(b))
16311 * fImRPQ1dEBE[0][pe][2][0]->GetBinEntries(fImRPQ1dEBE[0][pe][2][0]->GetBin(b));
16312
16313 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16314 }
16315
16316 if(type == "POI")
16317 {
16318 // p_{m*n,0}:
16319 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
16320 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
16321 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
16322 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
16323
16324 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
16325
16326 t = 1; // typeFlag = RP or POI
16327 }
16328 else if(type == "RP")
16329 {
16330 // p_{m*n,0} = q_{m*n,0}:
16331 p1n0kRe = q1n0kRe;
16332 p1n0kIm = q1n0kIm;
16333
16334 mp = mq;
16335
16336 t = 0; // typeFlag = RP or POI
16337 }
16338
16339 // 3'-particle correlators:
16340 // Taeney-Yan correlator:
16341 Double_t dTaeneyYan = 0.;
16342 Double_t mWeightTaeneyYan = 0.; // multiplicity weight for Taeney-Yan correlator
16343 if((mp*dMult-2.*mq)*(dMult-1.) > 0.) // to be improved - is this condition fully justified?
16344 {
16345 dTaeneyYan = (dReQ3n*(p1n0kRe*dReQ2n-p1n0kIm*dImQ2n)+dImQ3n*(p1n0kIm*dReQ2n+p1n0kRe*dImQ2n)
16346 - p1n0kRe*dReQ1n - p1n0kIm*dImQ1n
16347 - q2n0kRe*dReQ2n - q2n0kIm*dImQ2n
16348 - q3n0kRe*dReQ3n - q3n0kIm*dImQ3n
16349 + 2.*mq)
16350 / ((mp*dMult-2.*mq)*(dMult-1.));
16351 // determine multiplicity weight:
df23c5ae 16352 if(fMultiplicityWeight->Contains("combinations"))
64e500e3 16353 {
16354 mWeightTaeneyYan = (mp*dMult-2.*mq)*(dMult-1.);
df23c5ae 16355 } else if(fMultiplicityWeight->Contains("unit"))
64e500e3 16356 {
16357 mWeightTaeneyYan = 1.;
16358 }
16359 // Fill profiles:
16360 fOtherDiffCorrelators[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dTaeneyYan,mWeightTaeneyYan);
16361 } // end of if((mp*dMult-2.*mq)*(dMult-1.) > 0.)
16362
16363 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16364
16365} // end of void AliFlowAnalysisWithQCumulants::CalculateOtherDiffCorrelators(TString type, TString ptOrEta)
16366
e1d101a6 16367//=======================================================================================================================
64e500e3 16368
1268c371 16369void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCorrelations(TString type)
16370{
16371 // Calculate all reduced correlations needed for 2D differential flow for each (pt,eta) bin.
16372
16373 // Multiplicity:
16374 Double_t dMult = (*fSpk)(0,0);
16375 // Real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
16376 Double_t dReQ1n = (*fReQ)(0,0);
16377 Double_t dReQ2n = (*fReQ)(1,0);
16378 //Double_t dReQ3n = (*fReQ)(2,0);
16379 //Double_t dReQ4n = (*fReQ)(3,0);
16380 Double_t dImQ1n = (*fImQ)(0,0);
16381 Double_t dImQ2n = (*fImQ)(1,0);
16382 //Double_t dImQ3n = (*fImQ)(2,0);
16383 //Double_t dImQ4n = (*fImQ)(3,0);
16384
16385 // 2D reduced correlations are stored in TProfile2D f2DDiffFlowCorrelationsPro[0=RP,1=POI][correlation index].
16386 // Correlation index runs as follows:
16387 // 0: <<2'>>
16388 // 1: <<4'>>
16389 // 2: <<6'>>
16390 // 3: <<8'>>
16391
16392 Int_t t = 0; // type flag
16393 if(type == "RP")
16394 {
16395 t = 0;
16396 } else if(type == "POI")
16397 {
16398 t = 1;
16399 }
16400
16401 // Looping over all (pt,eta) bins and calculating correlations needed for differential flow:
16402 for(Int_t p=1;p<=fnBinsPt;p++)
16403 {
16404 for(Int_t e=1;e<=fnBinsEta;e++)
16405 {
16406 // Real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular (pt,eta) bin):
16407 Double_t p1n0kRe = 0.;
16408 Double_t p1n0kIm = 0.;
16409 // Number of POIs in particular pt or eta bin:
16410 Double_t mp = 0.;
16411 // Real and imaginary parts of q_{m*n,0} (non-weighted Q-vector evaluated for 'RP && POI particles' in particular pt or eta bin):
16412 Double_t q1n0kRe = 0.;
16413 Double_t q1n0kIm = 0.;
16414 Double_t q2n0kRe = 0.;
16415 Double_t q2n0kIm = 0.;
16416 // Number of 'RP && POI particles' in particular pt or eta bin:
16417 Double_t mq = 0.;
16418 if(type == "POI")
16419 {
16420 // q_{m*n,0}:
16421 q1n0kRe = fReRPQ2dEBE[2][0][0]->GetBinContent(fReRPQ2dEBE[2][0][0]->GetBin(p,e))
16422 * fReRPQ2dEBE[2][0][0]->GetBinEntries(fReRPQ2dEBE[2][0][0]->GetBin(p,e));
16423 q1n0kIm = fImRPQ2dEBE[2][0][0]->GetBinContent(fImRPQ2dEBE[2][0][0]->GetBin(p,e))
16424 * fImRPQ2dEBE[2][0][0]->GetBinEntries(fImRPQ2dEBE[2][0][0]->GetBin(p,e));
16425 q2n0kRe = fReRPQ2dEBE[2][1][0]->GetBinContent(fReRPQ2dEBE[2][1][0]->GetBin(p,e))
16426 * fReRPQ2dEBE[2][1][0]->GetBinEntries(fReRPQ2dEBE[2][1][0]->GetBin(p,e));
16427 q2n0kIm = fImRPQ2dEBE[2][1][0]->GetBinContent(fImRPQ2dEBE[2][1][0]->GetBin(p,e))
16428 * fImRPQ2dEBE[2][1][0]->GetBinEntries(fImRPQ2dEBE[2][1][0]->GetBin(p,e));
16429 // m_{q}:
16430 mq = fReRPQ2dEBE[2][0][0]->GetBinEntries(fReRPQ2dEBE[2][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16431 } // end of if(type == "POI")
16432 else if(type == "RP")
16433 {
16434 // q_{m*n,0}:
16435 q1n0kRe = fReRPQ2dEBE[0][0][0]->GetBinContent(fReRPQ2dEBE[0][0][0]->GetBin(p,e))
16436 * fReRPQ2dEBE[0][0][0]->GetBinEntries(fReRPQ2dEBE[0][0][0]->GetBin(p,e));
16437 q1n0kIm = fImRPQ2dEBE[0][0][0]->GetBinContent(fImRPQ2dEBE[0][0][0]->GetBin(p,e))
16438 * fImRPQ2dEBE[0][0][0]->GetBinEntries(fImRPQ2dEBE[0][0][0]->GetBin(p,e));
16439 q2n0kRe = fReRPQ2dEBE[0][1][0]->GetBinContent(fReRPQ2dEBE[0][1][0]->GetBin(p,e))
16440 * fReRPQ2dEBE[0][1][0]->GetBinEntries(fReRPQ2dEBE[0][1][0]->GetBin(p,e));
16441 q2n0kIm = fImRPQ2dEBE[0][1][0]->GetBinContent(fImRPQ2dEBE[0][1][0]->GetBin(p,e))
16442 * fImRPQ2dEBE[0][1][0]->GetBinEntries(fImRPQ2dEBE[0][1][0]->GetBin(p,e));
16443 // m_{q}:
16444 mq = fReRPQ2dEBE[0][0][0]->GetBinEntries(fReRPQ2dEBE[0][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16445 } // end of else if(type == "RP")
16446 if(type == "POI")
16447 {
16448 // p_{m*n,0}:
16449 p1n0kRe = fReRPQ2dEBE[1][0][0]->GetBinContent(fReRPQ2dEBE[1][0][0]->GetBin(p,e))
16450 * fReRPQ2dEBE[1][0][0]->GetBinEntries(fReRPQ2dEBE[1][0][0]->GetBin(p,e));
16451 p1n0kIm = fImRPQ2dEBE[1][0][0]->GetBinContent(fImRPQ2dEBE[1][0][0]->GetBin(p,e))
16452 * fImRPQ2dEBE[1][0][0]->GetBinEntries(fImRPQ2dEBE[1][0][0]->GetBin(p,e));
16453 // m_{p}
16454 mp = fReRPQ2dEBE[1][0][0]->GetBinEntries(fReRPQ2dEBE[1][0][0]->GetBin(p,e)); // to be improved (cross-checked by accessing other profiles here)
16455
16456 t = 1; // typeFlag = RP or POI
16457 } // end of if(type == "POI")
16458 else if(type == "RP")
16459 {
16460 // p_{m*n,0} = q_{m*n,0}:
16461 p1n0kRe = q1n0kRe;
16462 p1n0kIm = q1n0kIm;
16463 // m_{p} = m_{q}:
16464 mp = mq;
16465
16466 t = 0; // typeFlag = RP or POI
16467 } // end of if(type == "RP")
16468
16469 // 2'-particle correlation for particular (pt,eta) bin:
16470 Double_t two1n1nPtEta = 0.;
16471 Double_t mWeight2pPrime = 0.; // multiplicity weight for <2'>
16472 if(mp*dMult-mq)
16473 {
16474 two1n1nPtEta = (p1n0kRe*dReQ1n+p1n0kIm*dImQ1n-mq)
16475 / (mp*dMult-mq);
16476 // Determine multiplicity weight:
df23c5ae 16477 if(fMultiplicityWeight->Contains("combinations"))
1268c371 16478 {
16479 mWeight2pPrime = mp*dMult-mq;
df23c5ae 16480 } else if(fMultiplicityWeight->Contains("unit"))
1268c371 16481 {
16482 mWeight2pPrime = 1.;
16483 }
16484 // Fill 2D profile holding <<2'>>:
16485 f2DDiffFlowCorrelationsPro[t][0]->Fill(fPtMin+(p-1)*fPtBinWidth,fEtaMin+(e-1)*fEtaBinWidth,two1n1nPtEta,mWeight2pPrime);
16486 } // end of if(mp*dMult-mq)
16487
16488 // 4'-particle correlation:
16489 Double_t four1n1n1n1nPtEta = 0.;
16490 Double_t mWeight4pPrime = 0.; // multiplicity weight for <4'>
16491 if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16492 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
16493 {
16494 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16495 - q2n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
16496 - 2.*q2n0kIm*dReQ1n*dImQ1n
16497 - p1n0kRe*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
16498 + p1n0kIm*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
16499 - 2.*dMult*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16500 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*mq
16501 + 6.*(q1n0kRe*dReQ1n+q1n0kIm*dImQ1n)
16502 + 1.*(q2n0kRe*dReQ2n+q2n0kIm*dImQ2n)
16503 + 2.*(p1n0kRe*dReQ1n+p1n0kIm*dImQ1n)
16504 + 2.*mq*dMult
16505 - 6.*mq)
16506 / ((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16507 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.));
16508 // Determine multiplicity weight:
df23c5ae 16509 if(fMultiplicityWeight->Contains("combinations"))
1268c371 16510 {
16511 mWeight4pPrime = (mp-mq)*dMult*(dMult-1.)*(dMult-2.) + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
df23c5ae 16512 } else if(fMultiplicityWeight->Contains("unit"))
1268c371 16513 {
16514 mWeight4pPrime = 1.;
16515 }
16516 // Fill 2D profile holding <<4'>>:
16517 f2DDiffFlowCorrelationsPro[t][1]->Fill(fPtMin+(p-1)*fPtBinWidth,fEtaMin+(e-1)*fEtaBinWidth,four1n1n1n1nPtEta,mWeight4pPrime);
16518 } // end of if((mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16519 // +mq*(dMult-1.)*(dMult-2.)*(dMult-3.))
16520 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
16521 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
16522
16523} // end of AliFlowAnalysisWithQCumulants::Calculate2DDiffFlowCorrelations(TString type)
16524
e1d101a6 16525//=======================================================================================================================
1268c371 16526
489d5531 16527void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfEventWeights(TString type, TString ptOrEta)
16528{
16529 // Calculate sums of various event weights for reduced correlations.
16530 // (These quantitites are needed in expressions for unbiased estimators relevant for the statistical errors.)
16531
2a98ceb8 16532 Int_t typeFlag = 0;
16533 Int_t ptEtaFlag = 0;
489d5531 16534
16535 if(type == "RP")
16536 {
16537 typeFlag = 0;
16538 } else if(type == "POI")
16539 {
16540 typeFlag = 1;
16541 }
16542
16543 if(ptOrEta == "Pt")
16544 {
16545 ptEtaFlag = 0;
16546 } else if(ptOrEta == "Eta")
16547 {
16548 ptEtaFlag = 1;
16549 }
16550
16551 // shortcuts:
16552 Int_t t = typeFlag;
16553 Int_t pe = ptEtaFlag;
16554
16555 // binning:
16556 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16557 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16558 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16559 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16560
16561 for(Int_t rpq=0;rpq<3;rpq++)
16562 {
16563 for(Int_t m=0;m<4;m++)
16564 {
16565 for(Int_t k=0;k<9;k++)
16566 {
16567 if(!fReRPQ1dEBE[rpq][pe][m][k])
16568 {
16569 cout<<"WARNING: fReRPQ1dEBE[rpq][pe][m][k] is NULL in AFAWQC::CSAPOEWFDF() !!!!"<<endl;
16570 cout<<"pe = "<<pe<<endl;
16571 cout<<"rpq = "<<rpq<<endl;
16572 cout<<"m = "<<m<<endl;
16573 cout<<"k = "<<k<<endl;
16574 exit(0);
16575 }
16576 }
16577 }
16578 }
16579
16580 // multiplicities:
1268c371 16581 Double_t dMult = (*fSpk)(0,0); // total event multiplicity
489d5531 16582 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16583 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16584 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16585
16586 // event weights for reduced correlations:
16587 Double_t dw2 = 0.; // event weight for <2'>
16588 Double_t dw4 = 0.; // event weight for <4'>
16589 //Double_t dw6 = 0.; // event weight for <6'>
16590 //Double_t dw8 = 0.; // event weight for <8'>
16591
16592 // looping over bins:
16593 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16594 {
16595 if(type == "RP")
16596 {
16597 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16598 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16599 } else if(type == "POI")
16600 {
16601 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16602 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16603 }
16604
16605 // event weight for <2'>:
16606 dw2 = mp*dMult-mq;
16607 fDiffFlowSumOfEventWeights[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2);
16608 fDiffFlowSumOfEventWeights[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw2,2.));
16609
16610 // event weight for <4'>:
16611 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16612 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16613 fDiffFlowSumOfEventWeights[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4);
16614 fDiffFlowSumOfEventWeights[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw4,2.));
16615
16616 // event weight for <6'>:
16617 //dw6 = ...;
16618 //fDiffFlowSumOfEventWeights[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6);
16619 //fDiffFlowSumOfEventWeights[t][pe][t][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw6,2.));
16620
16621 // event weight for <8'>:
16622 //dw8 = ...;
16623 //fDiffFlowSumOfEventWeights[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw8);
16624 //fDiffFlowSumOfEventWeights[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],pow(dw8,2.));
16625 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16626
16627} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfEventWeights()
16628
16629
e1d101a6 16630//=======================================================================================================================
489d5531 16631
16632
16633void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfProductOfEventWeights(TString type, TString ptOrEta)
16634{
16635 // Calculate sum of products of various event weights for both types of correlations (the ones for int. and diff. flow).
16636 // (These quantitites are needed in expressions for unbiased estimators relevant for the statistical errors.)
16637 //
16638 // Important: To fill fDiffFlowSumOfProductOfEventWeights[][][][] use bellow table (i,j) with following constraints:
16639 // 1.) i<j
16640 // 2.) do not store terms which DO NOT include reduced correlations;
16641 // Table:
16642 // [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'>]
16643
2a98ceb8 16644 Int_t typeFlag = 0;
16645 Int_t ptEtaFlag = 0;
489d5531 16646
16647 if(type == "RP")
16648 {
16649 typeFlag = 0;
16650 } else if(type == "POI")
16651 {
16652 typeFlag = 1;
16653 }
16654
16655 if(ptOrEta == "Pt")
16656 {
16657 ptEtaFlag = 0;
16658 } else if(ptOrEta == "Eta")
16659 {
16660 ptEtaFlag = 1;
16661 }
16662
16663 // shortcuts:
16664 Int_t t = typeFlag;
16665 Int_t pe = ptEtaFlag;
16666
16667 // binning:
16668 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16669 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16670 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
16671 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16672
16673 // protection:
16674 for(Int_t rpq=0;rpq<3;rpq++)
16675 {
16676 for(Int_t m=0;m<4;m++)
16677 {
16678 for(Int_t k=0;k<9;k++)
16679 {
16680 if(!fReRPQ1dEBE[rpq][pe][m][k])
16681 {
16682 cout<<"WARNING: fReRPQ1dEBE[rpq][pe][m][k] is NULL in AFAWQC::CSAPOEWFDF() !!!!"<<endl;
16683 cout<<"pe = "<<pe<<endl;
16684 cout<<"rpq = "<<rpq<<endl;
16685 cout<<"m = "<<m<<endl;
16686 cout<<"k = "<<k<<endl;
16687 exit(0);
16688 }
16689 }
16690 }
16691 }
16692
16693 // multiplicities:
1268c371 16694 Double_t dMult = (*fSpk)(0,0); // total event multiplicity
489d5531 16695 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16696 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16697 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16698
16699 // event weights for correlations:
16700 Double_t dW2 = dMult*(dMult-1); // event weight for <2>
16701 Double_t dW4 = dMult*(dMult-1)*(dMult-2)*(dMult-3); // event weight for <4>
16702 Double_t dW6 = dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5); // event weight for <6>
16703 Double_t dW8 = dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5)*(dMult-6)*(dMult-7); // event weight for <8>
16704
16705 // event weights for reduced correlations:
16706 Double_t dw2 = 0.; // event weight for <2'>
16707 Double_t dw4 = 0.; // event weight for <4'>
16708 //Double_t dw6 = 0.; // event weight for <6'>
16709 //Double_t dw8 = 0.; // event weight for <8'>
16710
16711 // looping over bins:
16712 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16713 {
16714 if(type == "RP")
16715 {
16716 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16717 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16718 } else if(type == "POI")
16719 {
16720 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16721 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16722 }
16723
16724 // event weight for <2'>:
16725 dw2 = mp*dMult-mq;
16726 fDiffFlowSumOfProductOfEventWeights[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw2); // storing product of even weights for <2> and <2'>
16727 fDiffFlowSumOfProductOfEventWeights[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW4); // storing product of even weights for <4> and <2'>
16728 fDiffFlowSumOfProductOfEventWeights[t][pe][1][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW6); // storing product of even weights for <6> and <2'>
16729 fDiffFlowSumOfProductOfEventWeights[t][pe][1][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dW8); // storing product of even weights for <8> and <2'>
16730
16731 // event weight for <4'>:
16732 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16733 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.);
16734 fDiffFlowSumOfProductOfEventWeights[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw4); // storing product of even weights for <2> and <4'>
16735 fDiffFlowSumOfProductOfEventWeights[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw4); // storing product of even weights for <2'> and <4'>
16736 fDiffFlowSumOfProductOfEventWeights[t][pe][2][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw4); // storing product of even weights for <4> and <4'>
16737 fDiffFlowSumOfProductOfEventWeights[t][pe][3][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dW6); // storing product of even weights for <6> and <4'>
16738 fDiffFlowSumOfProductOfEventWeights[t][pe][3][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dW8); // storing product of even weights for <8> and <4'>
16739
16740 // event weight for <6'>:
16741 //dw6 = ...;
16742 //fDiffFlowSumOfProductOfEventWeights[t][pe][0][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw6); // storing product of even weights for <2> and <6'>
16743 //fDiffFlowSumOfProductOfEventWeights[t][pe][1][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw6); // storing product of even weights for <2'> and <6'>
16744 //fDiffFlowSumOfProductOfEventWeights[t][pe][2][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw6); // storing product of even weights for <4> and <6'>
16745 //fDiffFlowSumOfProductOfEventWeights[t][pe][3][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dw6); // storing product of even weights for <4'> and <6'>
16746 //fDiffFlowSumOfProductOfEventWeights[t][pe][4][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW6*dw6); // storing product of even weights for <6> and <6'>
16747 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dW8); // storing product of even weights for <6'> and <8>
16748 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dw8); // storing product of even weights for <6'> and <8'>
16749
16750 // event weight for <8'>:
16751 //dw8 = ...;
16752 //fDiffFlowSumOfProductOfEventWeights[t][pe][0][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW2*dw8); // storing product of even weights for <2> and <8'>
16753 //fDiffFlowSumOfProductOfEventWeights[t][pe][1][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw2*dw8); // storing product of even weights for <2'> and <8'>
16754 //fDiffFlowSumOfProductOfEventWeights[t][pe][2][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW4*dw8); // storing product of even weights for <4> and <8'>
16755 //fDiffFlowSumOfProductOfEventWeights[t][pe][3][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw4*dw8); // storing product of even weights for <4'> and <8'>
16756 //fDiffFlowSumOfProductOfEventWeights[t][pe][4][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW6*dw8); // storing product of even weights for <6> and <8'>
16757 //fDiffFlowSumOfProductOfEventWeights[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dw6*dw8); // storing product of even weights for <6'> and <8'>
16758 //fDiffFlowSumOfProductOfEventWeights[t][pe][6][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],dW8*dw8); // storing product of even weights for <8> and <8'>
16759
16760 // Table:
16761 // [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'>]
16762
16763 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16764
16765
16766
16767} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowSumOfProductOfEventWeights(TString type, TString ptOrEta)
16768
e1d101a6 16769//=======================================================================================================================
489d5531 16770
489d5531 16771void AliFlowAnalysisWithQCumulants::FinalizeReducedCorrelations(TString type, TString ptOrEta)
16772{
16773 // Transfer profiles into histograms and calculate statistical errors correctly.
16774
1268c371 16775 Int_t t = 0; // RP or POI
16776 Int_t pe = 0; // pt or eta
489d5531 16777
16778 if(type == "RP")
16779 {
1268c371 16780 t = 0;
489d5531 16781 } else if(type == "POI")
16782 {
1268c371 16783 t = 1;
489d5531 16784 }
16785
16786 if(ptOrEta == "Pt")
16787 {
1268c371 16788 pe = 0;
489d5531 16789 } else if(ptOrEta == "Eta")
16790 {
1268c371 16791 pe = 1;
489d5531 16792 }
1268c371 16793
16794 for(Int_t rci=0;rci<4;rci++) // to be improved - moved into the method CheckPointersUsedInFinish()
489d5531 16795 {
16796 if(!fDiffFlowCorrelationsPro[t][pe][rci])
16797 {
16798 cout<<"WARNING: fDiffFlowCorrelationsPro[t][pe][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16799 cout<<"t = "<<t<<endl;
16800 cout<<"pe = "<<pe<<endl;
16801 cout<<"rci = "<<rci<<endl;
16802 exit(0);
16803 }
b40a910e 16804 if(!fDiffFlowSquaredCorrelationsPro[t][pe][rci])
16805 {
16806 cout<<"WARNING: fDiffFlowSquaredCorrelationsPro[t][pe][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16807 cout<<"t = "<<t<<endl;
16808 cout<<"pe = "<<pe<<endl;
16809 cout<<"rci = "<<rci<<endl;
16810 exit(0);
16811 }
489d5531 16812 for(Int_t power=0;power<2;power++)
16813 {
16814 if(!fDiffFlowSumOfEventWeights[t][pe][power][rci])
16815 {
16816 cout<<"WARNING: fDiffFlowSumOfEventWeights[t][pe][power][rci] is NULL in AFAWQC::FRC() !!!!"<<endl;
16817 cout<<"t = "<<t<<endl;
16818 cout<<"pe = "<<pe<<endl;
16819 cout<<"power = "<<power<<endl;
16820 cout<<"rci = "<<rci<<endl;
16821 exit(0);
16822 }
16823 } // end of for(Int_t power=0;power<2;power++)
16824 } // end of for(Int_t rci=0;rci<4;rci++)
16825
16826 // common:
b40a910e 16827 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 16828 // transfer 1D profile into 1D histogram:
16829 Double_t correlation = 0.;
b40a910e 16830 Double_t squaredCorrelation = 0.;
489d5531 16831 Double_t spread = 0.;
16832 Double_t sumOfWeights = 0.; // sum of weights for particular reduced correlations for particular pt or eta bin
16833 Double_t sumOfSquaredWeights = 0.; // sum of squared weights for particular reduced correlations for particular pt or eta bin
16834 Double_t error = 0.; // error = termA * spread * termB
16835 // termA = (sqrt(sumOfSquaredWeights)/sumOfWeights)
16836 // termB = 1/pow(1-termA^2,0.5)
16837 Double_t termA = 0.;
16838 Double_t termB = 0.;
16839 for(Int_t rci=0;rci<4;rci++) // index of reduced correlation
16840 {
16841 for(Int_t b=1;b<=nBinsPtEta[pe];b++) // number of pt or eta bins
16842 {
b40a910e 16843 if(fDiffFlowCorrelationsPro[t][pe][rci]->GetBinEffectiveEntries(b) < 2 ||
16844 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->GetBinEffectiveEntries(b) < 2)
16845 {
16846 fDiffFlowCorrelationsPro[t][pe][rci]->SetBinError(b,0.);
16847 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->SetBinError(b,0.);
16848 continue; // to be improved - should I ignore results in pt bins with one entry for reduced correlations or not?
16849 }
489d5531 16850 correlation = fDiffFlowCorrelationsPro[t][pe][rci]->GetBinContent(b);
b40a910e 16851 squaredCorrelation = fDiffFlowSquaredCorrelationsPro[t][pe][rci]->GetBinContent(b);
16852 if(squaredCorrelation-correlation*correlation >= 0.)
16853 {
16854 spread = pow(squaredCorrelation-correlation*correlation,0.5);
16855 } else
16856 {
16857 cout<<endl;
16858 cout<<Form(" WARNING: Imaginary 'spread' for rci = %d, pe = %d, bin = %d !!!!",rci,pe,b)<<endl;
16859 cout<<endl;
16860 }
489d5531 16861 sumOfWeights = fDiffFlowSumOfEventWeights[t][pe][0][rci]->GetBinContent(b);
16862 sumOfSquaredWeights = fDiffFlowSumOfEventWeights[t][pe][1][rci]->GetBinContent(b);
1268c371 16863 if(TMath::Abs(sumOfWeights)>0.){termA = (pow(sumOfSquaredWeights,0.5)/sumOfWeights);}
16864 if(1.-pow(termA,2.)>0.){termB = 1./pow(1.-pow(termA,2.),0.5);}
489d5531 16865 error = termA*spread*termB; // final error (unbiased estimator for standard deviation)
16866 fDiffFlowCorrelationsHist[t][pe][rci]->SetBinContent(b,correlation);
16867 fDiffFlowCorrelationsHist[t][pe][rci]->SetBinError(b,error);
16868 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16869 } // end of for(Int_t rci=0;rci<4;rci++)
16870
16871} // end of void AliFlowAnalysisWithQCumulants::FinalizeReducedCorrelations(TString type, TString ptOrEta)
16872
e1d101a6 16873//=======================================================================================================================
489d5531 16874
489d5531 16875void AliFlowAnalysisWithQCumulants::CalculateDiffFlowProductOfCorrelations(TString type, TString ptOrEta)
16876{
16877 // store products: <2><2'>, <2><4'>, <2><6'>, <2><8'>, <2'><4>,
16878 // <2'><4'>, <2'><6>, <2'><6'>, <2'><8>, <2'><8'>,
16879 // <4><4'>, <4><6'>, <4><8'>, <4'><6>, <4'><6'>,
16880 // <4'><8>, <4'><8'>, <6><6'>, <6><8'>, <6'><8>,
16881 // <6'><8'>, <8><8'>.
16882
2a98ceb8 16883 Int_t typeFlag = 0;
16884 Int_t ptEtaFlag = 0;
489d5531 16885
16886 if(type == "RP")
16887 {
16888 typeFlag = 0;
16889 } else if(type == "POI")
16890 {
16891 typeFlag = 1;
16892 }
16893
16894 if(ptOrEta == "Pt")
16895 {
16896 ptEtaFlag = 0;
16897 } else if(ptOrEta == "Eta")
16898 {
16899 ptEtaFlag = 1;
16900 }
16901
16902 // shortcuts:
16903 Int_t t = typeFlag;
16904 Int_t pe = ptEtaFlag;
16905
16906 // common:
16907 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
16908 Double_t minPtEta[2] = {fPtMin,fEtaMin};
16909 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
16910
16911 // protections // to be improved (add protection for all pointers in this method)
16912 if(!fIntFlowCorrelationsEBE)
16913 {
16914 cout<<"WARNING: fIntFlowCorrelationsEBE is NULL in AFAWQC::CDFPOC() !!!!"<<endl;
16915 exit(0);
16916 }
16917
16918 /*
1268c371 16919 Double_t dMult = (*fSpk)(0,0); // multiplicity (number of particles used to determine the reaction plane)
489d5531 16920 //Double_t mr = 0.; // number of RPs in particular pt or eta bin
16921 Double_t mp = 0.; // number of POIs in particular pt or eta bin
16922 Double_t mq = 0.; // number of particles which are both RPs and POIs in particular pt or eta bin
16923 */
16924
16925 // e-b-e correlations:
16926 Double_t twoEBE = fIntFlowCorrelationsEBE->GetBinContent(1); // <2>
16927 Double_t fourEBE = fIntFlowCorrelationsEBE->GetBinContent(2); // <4>
16928 Double_t sixEBE = fIntFlowCorrelationsEBE->GetBinContent(3); // <6>
16929 Double_t eightEBE = fIntFlowCorrelationsEBE->GetBinContent(4); // <8>
16930
16931 // event weights for correlations:
16932 Double_t dW2 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(1); // event weight for <2>
16933 Double_t dW4 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(2); // event weight for <4>
16934 Double_t dW6 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(3); // event weight for <6>
16935 Double_t dW8 = fIntFlowEventWeightsForCorrelationsEBE->GetBinContent(4); // event weight for <8>
16936
16937 // e-b-e reduced correlations:
16938 Double_t twoReducedEBE = 0.; // <2'>
16939 Double_t fourReducedEBE = 0.; // <4'>
ea239361 16940 //Double_t sixReducedEBE = 0.; // <6'>
16941 //Double_t eightReducedEBE = 0.; // <8'>
489d5531 16942
16943 // event weights for reduced correlations:
16944 Double_t dw2 = 0.; // event weight for <2'>
16945 Double_t dw4 = 0.; // event weight for <4'>
16946 //Double_t dw6 = 0.; // event weight for <6'>
16947 //Double_t dw8 = 0.; // event weight for <8'>
16948
16949 // looping over bins:
16950 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
16951 {
16952 // e-b-e reduced correlations:
16953 twoReducedEBE = fDiffFlowCorrelationsEBE[t][pe][0]->GetBinContent(b);
16954 fourReducedEBE = fDiffFlowCorrelationsEBE[t][pe][1]->GetBinContent(b);
ea239361 16955 //sixReducedEBE = fDiffFlowCorrelationsEBE[t][pe][2]->GetBinContent(b);
16956 //eightReducedEBE = fDiffFlowCorrelationsEBE[t][pe][3]->GetBinContent(b);
489d5531 16957
16958 /*
16959 // to be improved (I should not do this here again)
16960 if(type == "RP")
16961 {
16962 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(b);
16963 mp = mq; // trick to use the very same Eqs. bellow both for RP's and POI's diff. flow
16964 } else if(type == "POI")
16965 {
16966 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(b);
16967 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(b);
16968 }
16969
16970 // event weights for reduced correlations:
16971 dw2 = mp*dMult-mq; // weight for <2'>
16972 dw4 = (mp-mq)*dMult*(dMult-1.)*(dMult-2.)
16973 + mq*(dMult-1.)*(dMult-2.)*(dMult-3.); // weight for <4'>
16974 //dw6 = ...
16975 //dw8 = ...
16976
16977 */
16978
16979 dw2 = fDiffFlowEventWeightsForCorrelationsEBE[t][pe][0]->GetBinContent(b);
16980 dw4 = fDiffFlowEventWeightsForCorrelationsEBE[t][pe][1]->GetBinContent(b);
16981
16982 // storing all products:
16983 fDiffFlowProductOfCorrelationsPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*twoReducedEBE,dW2*dw2); // storing <2><2'>
16984 fDiffFlowProductOfCorrelationsPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*twoReducedEBE,dW4*dw2); // storing <4><2'>
16985 fDiffFlowProductOfCorrelationsPro[t][pe][1][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*twoReducedEBE,dW6*dw2); // storing <6><2'>
16986 fDiffFlowProductOfCorrelationsPro[t][pe][1][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*twoReducedEBE,dW8*dw2); // storing <8><2'>
16987
16988 // event weight for <4'>:
16989 fDiffFlowProductOfCorrelationsPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*fourReducedEBE,dW2*dw4); // storing <2><4'>
16990 fDiffFlowProductOfCorrelationsPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*fourReducedEBE,dw2*dw4); // storing <2'><4'>
16991 fDiffFlowProductOfCorrelationsPro[t][pe][2][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*fourReducedEBE,dW4*dw4); // storing <4><4'>
16992 fDiffFlowProductOfCorrelationsPro[t][pe][3][4]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*fourReducedEBE,dW6*dw4); // storing <6><4'>
16993 fDiffFlowProductOfCorrelationsPro[t][pe][3][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*fourReducedEBE,dW8*dw4); // storing <8><4'>
16994
16995 // event weight for <6'>:
16996 //dw6 = ...;
16997 //fDiffFlowProductOfCorrelationsPro[t][pe][0][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*sixReducedEBE,dW2*dw6); // storing <2><6'>
16998 //fDiffFlowProductOfCorrelationsPro[t][pe][1][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*sixReducedEBE,dw2*dw6); // storing <2'><6'>
16999 //fDiffFlowProductOfCorrelationsPro[t][pe][2][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*sixReducedEBE,dW4*dw6); // storing <4><6'>
17000 //fDiffFlowProductOfCorrelationsPro[t][pe][3][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourReducedEBE*sixReducedEBE,dw4*dw6); // storing <4'><6'>
17001 //fDiffFlowProductOfCorrelationsPro[t][pe][4][5]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*sixReducedEBE,dW6*dw6); // storing <6><6'>
17002 //fDiffFlowProductOfCorrelationsPro[t][pe][5][6]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightEBE,dw6*dW8); // storing <6'><8>
17003 //fDiffFlowProductOfCorrelationsPro[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightReducedEBE,dw6*dw8); // storing <6'><8'>
17004
17005 // event weight for <8'>:
17006 //dw8 = ...;
17007 //fDiffFlowProductOfCorrelationsPro[t][pe][0][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoEBE*eightReducedEBE,dW2*dw8); // storing <2><8'>
17008 //fDiffFlowProductOfCorrelationsPro[t][pe][1][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],twoReducedEBE*eightReducedEBE,dw2*dw8); // storing <2'><8'>
17009 //fDiffFlowProductOfCorrelationsPro[t][pe][2][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourEBE*eightReducedEBE,dW4*dw8); // storing <4><8'>
17010 //fDiffFlowProductOfCorrelationsPro[t][pe][3][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],fourReducedEBE*eightReducedEBE,dw4*dw8); // storing <4'><8'>
17011 //fDiffFlowProductOfCorrelationsPro[t][pe][4][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixEBE*eightReducedEBE,dW6*dw8); // storing <6><8'>
17012 //fDiffFlowProductOfCorrelationsPro[t][pe][5][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sixReducedEBE*eightReducedEBE,dw6*dw8); // storing <6'><8'>
17013 //fDiffFlowProductOfCorrelationsPro[t][pe][6][7]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],eightEBE*eightReducedEBE,dW8*dw8); // storing <8><8'>
17014 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++
17015
17016} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowProductOfCorrelations(TString type, TString ptOrEta)
17017
e1d101a6 17018//=======================================================================================================================
489d5531 17019
489d5531 17020void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCovariances(TString type, TString ptOrEta) // to be improved (reimplemented)
17021{
17022 // a) Calculate unbiased estimators Cov(<2>,<2'>), Cov(<2>,<4'>), Cov(<4>,<2'>), Cov(<4>,<4'>) and Cov(<2'>,<4'>)
17023 // for covariances V(<2>,<2'>), V(<2>,<4'>), V(<4>,<2'>), V(<4>,<4'>) and V(<2'>,<4'>).
17024 // b) Store in histogram fDiffFlowCovariances[t][pe][index] for instance the following:
17025 //
17026 // 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)]
17027 //
17028 // where N is the number of events, w_{<2>} is event weight for <2> and w_{<2'>} is event weight for <2'>.
17029 // c) Binning of fDiffFlowCovariances[t][pe][index] is organized as follows:
17030 //
17031 // 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)]
17032 // 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)]
17033 // 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)]
17034 // 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)]
17035 // 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)]
17036 // ...
17037
2a98ceb8 17038 Int_t typeFlag = 0;
17039 Int_t ptEtaFlag = 0;
489d5531 17040
17041 if(type == "RP")
17042 {
17043 typeFlag = 0;
17044 } else if(type == "POI")
17045 {
17046 typeFlag = 1;
17047 }
17048
17049 if(ptOrEta == "Pt")
17050 {
17051 ptEtaFlag = 0;
17052 } else if(ptOrEta == "Eta")
17053 {
17054 ptEtaFlag = 1;
17055 }
17056
17057 // shortcuts:
17058 Int_t t = typeFlag;
17059 Int_t pe = ptEtaFlag;
17060
17061 // common:
17062 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
17063 //Double_t minPtEta[2] = {fPtMin,fEtaMin};
17064 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
17065 //Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
17066
17067 // average correlations:
17068 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
17069 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
17070 //Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
17071 //Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
17072
17073 // sum of weights for correlation:
17074 Double_t sumOfWeightsForTwo = fIntFlowSumOfEventWeights[0]->GetBinContent(1); // sum_{i=1}^{N} w_{<2>}
17075 Double_t sumOfWeightsForFour = fIntFlowSumOfEventWeights[0]->GetBinContent(2); // sum_{i=1}^{N} w_{<4>}
17076 //Double_t sumOfWeightsForSix = fIntFlowSumOfEventWeights[0]->GetBinContent(3); // sum_{i=1}^{N} w_{<6>}
17077 //Double_t sumOfWeightsForEight = fIntFlowSumOfEventWeights[0]->GetBinContent(4); // sum_{i=1}^{N} w_{<8>}
17078
17079 // average reduced correlations:
17080 Double_t twoReduced = 0.; // <<2'>>
17081 Double_t fourReduced = 0.; // <<4'>>
17082 //Double_t sixReduced = 0.; // <<6'>>
17083 //Double_t eightReduced = 0.; // <<8'>>
17084
17085 // sum of weights for reduced correlation:
17086 Double_t sumOfWeightsForTwoReduced = 0.; // sum_{i=1}^{N} w_{<2'>}
17087 Double_t sumOfWeightsForFourReduced = 0.; // sum_{i=1}^{N} w_{<4'>}
17088 //Double_t sumOfWeightsForSixReduced = 0.; // sum_{i=1}^{N} w_{<6'>}
17089 //Double_t sumOfWeightsForEightReduced = 0.; // sum_{i=1}^{N} w_{<8'>}
17090
17091 // product of weights for reduced correlation:
17092 Double_t productOfWeightsForTwoTwoReduced = 0.; // sum_{i=1}^{N} w_{<2>}w_{<2'>}
17093 Double_t productOfWeightsForTwoFourReduced = 0.; // sum_{i=1}^{N} w_{<2>}w_{<4'>}
17094 Double_t productOfWeightsForFourTwoReduced = 0.; // sum_{i=1}^{N} w_{<4>}w_{<2'>}
17095 Double_t productOfWeightsForFourFourReduced = 0.; // sum_{i=1}^{N} w_{<4>}w_{<4'>}
17096 Double_t productOfWeightsForTwoReducedFourReduced = 0.; // sum_{i=1}^{N} w_{<2'>}w_{<4'>}
17097 // ...
17098
17099 // products for differential flow:
17100 Double_t twoTwoReduced = 0; // <<2><2'>>
17101 Double_t twoFourReduced = 0; // <<2><4'>>
17102 Double_t fourTwoReduced = 0; // <<4><2'>>
17103 Double_t fourFourReduced = 0; // <<4><4'>>
17104 Double_t twoReducedFourReduced = 0; // <<2'><4'>>
17105
17106 // denominators in the expressions for the unbiased estimators for covariances:
17107 // denominator = 1 - term1/(term2*term3)
17108 // prefactor = term1/(term2*term3)
17109 Double_t denominator = 0.;
17110 Double_t prefactor = 0.;
17111 Double_t term1 = 0.;
17112 Double_t term2 = 0.;
17113 Double_t term3 = 0.;
17114
17115 // unbiased estimators for covariances for differential flow:
17116 Double_t covTwoTwoReduced = 0.; // Cov(<2>,<2'>)
17117 Double_t wCovTwoTwoReduced = 0.; // Cov(<2>,<2'>) * prefactor(w_{<2>},w_{<2'>})
17118 Double_t covTwoFourReduced = 0.; // Cov(<2>,<4'>)
17119 Double_t wCovTwoFourReduced = 0.; // Cov(<2>,<4'>) * prefactor(w_{<2>},w_{<4'>})
17120 Double_t covFourTwoReduced = 0.; // Cov(<4>,<2'>)
17121 Double_t wCovFourTwoReduced = 0.; // Cov(<4>,<2'>) * prefactor(w_{<4>},w_{<2'>})
17122 Double_t covFourFourReduced = 0.; // Cov(<4>,<4'>)
17123 Double_t wCovFourFourReduced = 0.; // Cov(<4>,<4'>) * prefactor(w_{<4>},w_{<4'>})
17124 Double_t covTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>)
17125 Double_t wCovTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>) * prefactor(w_{<2'>},w_{<4'>})
17126
17127 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17128 {
17129 // average reduced corelations:
17130 twoReduced = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b);
17131 fourReduced = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b);
17132 // average products:
17133 twoTwoReduced = fDiffFlowProductOfCorrelationsPro[t][pe][0][1]->GetBinContent(b);
17134 twoFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][0][3]->GetBinContent(b);
17135 fourTwoReduced = fDiffFlowProductOfCorrelationsPro[t][pe][1][2]->GetBinContent(b);
17136 fourFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][2][3]->GetBinContent(b);
17137 twoReducedFourReduced = fDiffFlowProductOfCorrelationsPro[t][pe][1][3]->GetBinContent(b);
17138 // sum of weights for reduced correlations:
17139 sumOfWeightsForTwoReduced = fDiffFlowSumOfEventWeights[t][pe][0][0]->GetBinContent(b);
17140 sumOfWeightsForFourReduced = fDiffFlowSumOfEventWeights[t][pe][0][1]->GetBinContent(b);
17141 // products of weights for correlations:
17142 productOfWeightsForTwoTwoReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][0][1]->GetBinContent(b);
17143 productOfWeightsForTwoFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][0][3]->GetBinContent(b);
17144 productOfWeightsForFourTwoReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][1][2]->GetBinContent(b);
17145 productOfWeightsForFourFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][2][3]->GetBinContent(b);
17146 productOfWeightsForTwoReducedFourReduced = fDiffFlowSumOfProductOfEventWeights[t][pe][1][3]->GetBinContent(b);
17147 // denominator for the unbiased estimator for covariances: 1 - term1/(term2*term3)
17148 // prefactor (multiplies Cov's) = term1/(term2*term3)
17149 // <2>,<2'>:
17150 term1 = productOfWeightsForTwoTwoReduced;
17151 term2 = sumOfWeightsForTwo;
17152 term3 = sumOfWeightsForTwoReduced;
17153 if(term2*term3>0.)
17154 {
17155 denominator = 1.-term1/(term2*term3);
17156 prefactor = term1/(term2*term3);
1268c371 17157 if(TMath::Abs(denominator)>1.e-6)
489d5531 17158 {
17159 covTwoTwoReduced = (twoTwoReduced-two*twoReduced)/denominator;
17160 wCovTwoTwoReduced = covTwoTwoReduced*prefactor;
17161 fDiffFlowCovariances[t][pe][0]->SetBinContent(b,wCovTwoTwoReduced);
17162 }
17163 }
17164 // <2>,<4'>:
17165 term1 = productOfWeightsForTwoFourReduced;
17166 term2 = sumOfWeightsForTwo;
17167 term3 = sumOfWeightsForFourReduced;
17168 if(term2*term3>0.)
17169 {
17170 denominator = 1.-term1/(term2*term3);
17171 prefactor = term1/(term2*term3);
1268c371 17172 if(TMath::Abs(denominator)>1.e-6)
489d5531 17173 {
17174 covTwoFourReduced = (twoFourReduced-two*fourReduced)/denominator;
17175 wCovTwoFourReduced = covTwoFourReduced*prefactor;
17176 fDiffFlowCovariances[t][pe][1]->SetBinContent(b,wCovTwoFourReduced);
17177 }
17178 }
17179 // <4>,<2'>:
17180 term1 = productOfWeightsForFourTwoReduced;
17181 term2 = sumOfWeightsForFour;
17182 term3 = sumOfWeightsForTwoReduced;
17183 if(term2*term3>0.)
17184 {
17185 denominator = 1.-term1/(term2*term3);
17186 prefactor = term1/(term2*term3);
1268c371 17187 if(TMath::Abs(denominator)>1.e-6)
489d5531 17188 {
17189 covFourTwoReduced = (fourTwoReduced-four*twoReduced)/denominator;
17190 wCovFourTwoReduced = covFourTwoReduced*prefactor;
17191 fDiffFlowCovariances[t][pe][2]->SetBinContent(b,wCovFourTwoReduced);
17192 }
17193 }
17194 // <4>,<4'>:
17195 term1 = productOfWeightsForFourFourReduced;
17196 term2 = sumOfWeightsForFour;
17197 term3 = sumOfWeightsForFourReduced;
17198 if(term2*term3>0.)
17199 {
17200 denominator = 1.-term1/(term2*term3);
17201 prefactor = term1/(term2*term3);
1268c371 17202 if(TMath::Abs(denominator)>1.e-6)
489d5531 17203 {
17204 covFourFourReduced = (fourFourReduced-four*fourReduced)/denominator;
17205 wCovFourFourReduced = covFourFourReduced*prefactor;
17206 fDiffFlowCovariances[t][pe][3]->SetBinContent(b,wCovFourFourReduced);
17207 }
17208 }
17209 // <2'>,<4'>:
17210 term1 = productOfWeightsForTwoReducedFourReduced;
17211 term2 = sumOfWeightsForTwoReduced;
17212 term3 = sumOfWeightsForFourReduced;
17213 if(term2*term3>0.)
17214 {
17215 denominator = 1.-term1/(term2*term3);
17216 prefactor = term1/(term2*term3);
1268c371 17217 if(TMath::Abs(denominator)>1.e-6)
489d5531 17218 {
17219 covTwoReducedFourReduced = (twoReducedFourReduced-twoReduced*fourReduced)/denominator;
17220 wCovTwoReducedFourReduced = covTwoReducedFourReduced*prefactor;
17221 fDiffFlowCovariances[t][pe][4]->SetBinContent(b,wCovTwoReducedFourReduced);
17222 }
17223 }
17224 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17225
17226} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCovariances(TString type, TString ptOrEta)
17227
e1d101a6 17228//=======================================================================================================================
489d5531 17229
489d5531 17230void AliFlowAnalysisWithQCumulants::CalculateDiffFlow(TString type, TString ptOrEta)
17231{
1268c371 17232 // Calculate final results for differential flow.
489d5531 17233
1268c371 17234 // REMARK: Differential flow calculated in this method is NOT corrected for non-uniform acceptance.
17235 // This correction, if enabled via setter SetApplyCorrectionForNUA(Bool_t), is applied in the method
17236 // CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta)
17237
17238 Int_t t = 0; // RP or POI
17239 Int_t pe = 0; // pt or eta
489d5531 17240
17241 if(type == "RP")
17242 {
1268c371 17243 t = 0;
489d5531 17244 } else if(type == "POI")
17245 {
1268c371 17246 t = 1;
489d5531 17247 }
17248
17249 if(ptOrEta == "Pt")
17250 {
1268c371 17251 pe = 0;
489d5531 17252 } else if(ptOrEta == "Eta")
17253 {
1268c371 17254 pe = 1;
489d5531 17255 }
1268c371 17256
17257 // Common:
489d5531 17258 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
1268c371 17259 // Correlations:
489d5531 17260 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
1268c371 17261 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
17262 // Statistical errors of correlations:
489d5531 17263 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1);
17264 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2);
1268c371 17265 // Reduced correlations:
489d5531 17266 Double_t twoReduced = 0.; // <<2'>>
17267 Double_t fourReduced = 0.; // <<4'>>
1268c371 17268 // Statistical errors of reduced correlations:
489d5531 17269 Double_t twoReducedError = 0.;
17270 Double_t fourReducedError = 0.;
1268c371 17271 // Covariances:
8e1cefdd 17272 Double_t wCovTwoFour = 0.; // Cov(<2>,<4>) * prefactor(<2>,<4>)
17273 if(!fForgetAboutCovariances)
17274 {
17275 wCovTwoFour = fIntFlowCovariances->GetBinContent(1); // Cov(<2>,<4>) * prefactor(<2>,<4>)
17276 }
489d5531 17277 Double_t wCovTwoTwoReduced = 0.; // Cov(<2>,<2'>) * prefactor(<2>,<2'>)
17278 Double_t wCovTwoFourReduced = 0.; // Cov(<2>,<4'>) * prefactor(<2>,<4'>)
17279 Double_t wCovFourTwoReduced = 0.; // Cov(<4>,<2'>) * prefactor(<4>,<2'>)
17280 Double_t wCovFourFourReduced = 0.; // Cov(<4>,<4'>) * prefactor(<4>,<4'>)
17281 Double_t wCovTwoReducedFourReduced = 0.; // Cov(<2'>,<4'>) * prefactor(<2'>,<4'>)
1268c371 17282 // Differential flow:
489d5531 17283 Double_t v2Prime = 0.; // v'{2}
17284 Double_t v4Prime = 0.; // v'{4}
1268c371 17285 // Statistical error of differential flow:
489d5531 17286 Double_t v2PrimeError = 0.;
17287 Double_t v4PrimeError = 0.;
1268c371 17288 // Squared statistical error of differential flow:
489d5531 17289 Double_t v2PrimeErrorSquared = 0.;
17290 Double_t v4PrimeErrorSquared = 0.;
1268c371 17291 // Loop over pt or eta bins:
489d5531 17292 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
17293 {
1268c371 17294 // Reduced correlations and statistical errors:
489d5531 17295 twoReduced = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b);
17296 twoReducedError = fDiffFlowCorrelationsHist[t][pe][0]->GetBinError(b);
17297 fourReduced = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b);
17298 fourReducedError = fDiffFlowCorrelationsHist[t][pe][1]->GetBinError(b);
1268c371 17299 // Covariances:
8e1cefdd 17300 if(!fForgetAboutCovariances)
17301 {
17302 wCovTwoTwoReduced = fDiffFlowCovariances[t][pe][0]->GetBinContent(b);
17303 wCovTwoFourReduced = fDiffFlowCovariances[t][pe][1]->GetBinContent(b);
17304 wCovFourTwoReduced = fDiffFlowCovariances[t][pe][2]->GetBinContent(b);
17305 wCovFourFourReduced = fDiffFlowCovariances[t][pe][3]->GetBinContent(b);
17306 wCovTwoReducedFourReduced = fDiffFlowCovariances[t][pe][4]->GetBinContent(b);
17307 }
1268c371 17308 // Differential flow:
489d5531 17309 // v'{2}:
17310 if(two>0.)
17311 {
17312 v2Prime = twoReduced/pow(two,0.5);
1268c371 17313 v2PrimeErrorSquared = (1./4.)*pow(two,-3.)*(pow(twoReduced,2.)*pow(twoError,2.)
17314 + 4.*pow(two,2.)*pow(twoReducedError,2.)
17315 - 4.*two*twoReduced*wCovTwoTwoReduced);
17316 if(v2PrimeErrorSquared>0.){v2PrimeError = pow(v2PrimeErrorSquared,0.5);}
17317 if(TMath::Abs(v2Prime)>0.)
17318 {
17319 fDiffFlow[t][pe][0]->SetBinContent(b,v2Prime);
17320 fDiffFlow[t][pe][0]->SetBinError(b,v2PrimeError);
17321 }
17322 } // end of if(two>0.)
489d5531 17323 // differential flow:
17324 // v'{4}
17325 if(2.*pow(two,2.)-four > 0.)
17326 {
17327 v4Prime = (2.*two*twoReduced-fourReduced)/pow(2.*pow(two,2.)-four,3./4.);
1268c371 17328 v4PrimeErrorSquared = pow(2.*pow(two,2.)-four,-7./2.)
17329 * (pow(2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced,2.)*pow(twoError,2.)
17330 + (9./16.)*pow(2.*two*twoReduced-fourReduced,2.)*pow(fourError,2.)
17331 + 4.*pow(two,2.)*pow(2.*pow(two,2.)-four,2.)*pow(twoReducedError,2.)
17332 + pow(2.*pow(two,2.)-four,2.)*pow(fourReducedError,2.)
17333 - (3./2.)*(2.*two*twoReduced-fourReduced)
17334 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoFour
17335 - 4.*two*(2.*pow(two,2.)-four)
17336 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoTwoReduced
17337 + 2.*(2.*pow(two,2.)-four)
17338 * (2.*pow(two,2.)*twoReduced-3.*two*fourReduced+2.*four*twoReduced)*wCovTwoFourReduced
17339 + 3.*two*(2.*pow(two,2.)-four)*(2.*two*twoReduced-fourReduced)*wCovFourTwoReduced
17340 - (3./2.)*(2.*pow(two,2.)-four)*(2.*two*twoReduced-fourReduced)*wCovFourFourReduced
17341 - 4.*two*pow(2.*pow(two,2.)-four,2.)*wCovTwoReducedFourReduced);
17342 if(v4PrimeErrorSquared>0.){v4PrimeError = pow(v4PrimeErrorSquared,0.5);}
17343 if(TMath::Abs(v4Prime)>0.)
17344 {
17345 fDiffFlow[t][pe][1]->SetBinContent(b,v4Prime);
17346 fDiffFlow[t][pe][1]->SetBinError(b,v4PrimeError);
17347 }
17348 } // end of if(2.*pow(two,2.)-four > 0.)
489d5531 17349 } // end of for(Int_t b=1;b<=fnBinsPtEta[pe];b++)
1268c371 17350
17351} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlow(TString type, Bool_t useParticleWeights)
17352
e1d101a6 17353//=======================================================================================================================
1268c371 17354
17355void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlow(TString type)
17356{
17357 // Calculate final results for 2D diferential flow.
17358
17359 // to be improved - check pointers used in this method
17360
17361 Int_t t = 0; // RP or POI
17362
17363 if(type == "RP")
17364 {
17365 t = 0;
17366 } else if(type == "POI")
17367 {
17368 t = 1;
17369 }
489d5531 17370
1268c371 17371 // Differential flow:
17372 Double_t v2Prime = 0.; // v'{2}
17373 Double_t v4Prime = 0.; // v'{4}
17374 // Differential cumulants:
17375 Double_t qc2Prime = 0.; // QC{2'}
17376 Double_t qc4Prime = 0.; // QC{4'}
17377 // Looping over all (pt,eta) bins and calculating differential flow:
17378 for(Int_t p=1;p<=fnBinsPt;p++)
489d5531 17379 {
1268c371 17380 for(Int_t e=1;e<=fnBinsEta;e++)
489d5531 17381 {
1268c371 17382 // QC{2'}:
17383 qc2Prime = f2DDiffFlowCumulants[t][0]->GetBinContent(f2DDiffFlowCumulants[t][0]->GetBin(p,e));
17384 if(qc2Prime>=0.)
17385 {
17386 v2Prime = pow(qc2Prime,0.5);
17387 f2DDiffFlow[t][0]->SetBinContent(f2DDiffFlow[t][0]->GetBin(p,e),v2Prime);
17388 }
17389 // QC{4'}:
17390 qc4Prime = f2DDiffFlowCumulants[t][1]->GetBinContent(f2DDiffFlowCumulants[t][1]->GetBin(p,e));
17391 if(qc4Prime<=0.)
17392 {
17393 v4Prime = pow(-1.*qc4Prime,1./4.);
17394 f2DDiffFlow[t][1]->SetBinContent(f2DDiffFlow[t][1]->GetBin(p,e),v4Prime);
17395 }
17396 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
17397 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
17398
17399} // end of void AliFlowAnalysisWithQCumulants::Calculate2DDiffFlow(TString type)
489d5531 17400
e1d101a6 17401//=======================================================================================================================
489d5531 17402
489d5531 17403void AliFlowAnalysisWithQCumulants::StoreIntFlowFlags()
17404{
17405 // a) Store all flags for integrated flow in profile fIntFlowFlags.
17406
17407 if(!fIntFlowFlags)
17408 {
17409 cout<<"WARNING: fIntFlowFlags is NULL in AFAWQC::SFFIF() !!!!"<<endl;
17410 exit(0);
17411 }
17412
17413 // particle weights used or not:
403e3389 17414 fIntFlowFlags->Fill(0.5,(Int_t)fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights);
489d5531 17415 // which event weights were used:
df23c5ae 17416 if(fMultiplicityWeight->Contains("combinations"))
489d5531 17417 {
17418 fIntFlowFlags->Fill(1.5,0); // 0 = "combinations" (default)
df23c5ae 17419 } else if(fMultiplicityWeight->Contains("unit"))
489d5531 17420 {
17421 fIntFlowFlags->Fill(1.5,1); // 1 = "unit"
df23c5ae 17422 } else if(fMultiplicityWeight->Contains("multiplicity"))
489d5531 17423 {
17424 fIntFlowFlags->Fill(1.5,2); // 2 = "multiplicity"
17425 }
489d5531 17426 fIntFlowFlags->Fill(2.5,(Int_t)fApplyCorrectionForNUA);
17427 fIntFlowFlags->Fill(3.5,(Int_t)fPrintFinalResults[0]);
17428 fIntFlowFlags->Fill(4.5,(Int_t)fPrintFinalResults[1]);
17429 fIntFlowFlags->Fill(5.5,(Int_t)fPrintFinalResults[2]);
b3dacf6b 17430 fIntFlowFlags->Fill(6.5,(Int_t)fPrintFinalResults[3]);
17431 fIntFlowFlags->Fill(7.5,(Int_t)fApplyCorrectionForNUAVsM);
b77b6434 17432 fIntFlowFlags->Fill(8.5,(Int_t)fPropagateErrorAlsoFromNIT);
b3dacf6b 17433 fIntFlowFlags->Fill(9.5,(Int_t)fCalculateCumulantsVsM);
0dd3b008 17434 fIntFlowFlags->Fill(10.5,(Int_t)fMinimumBiasReferenceFlow);
8e1cefdd 17435 fIntFlowFlags->Fill(11.5,(Int_t)fForgetAboutCovariances);
e5834fcb 17436 fIntFlowFlags->Fill(12.5,(Int_t)fStorePhiDistributionForOneEvent);
dd442cd2 17437 fIntFlowFlags->Fill(13.5,(Int_t)fFillMultipleControlHistograms);
3435cacb 17438 fIntFlowFlags->Fill(14.5,(Int_t)fCalculateAllCorrelationsVsM);
df23c5ae 17439 // which multiplicity was used:
17440 if(fMultiplicityIs==AliFlowCommonConstants::kRP) // # of Reference Particles
17441 {
17442 fIntFlowFlags->Fill(15.5,0); // 0 = # of Reference Particles
17443 } else if(fMultiplicityIs==AliFlowCommonConstants::kExternal)
17444 {
17445 fIntFlowFlags->Fill(15.5,1); // 1 = ref. mult. from ESD
17446 } else if(fMultiplicityIs==AliFlowCommonConstants::kPOI)
17447 {
17448 fIntFlowFlags->Fill(15.5,2); // 2 = # of Particles of Interest
17449 }
d9e6d8bb 17450 fIntFlowFlags->Fill(16.5,(Int_t)fExactNoRPs);
df23c5ae 17451
489d5531 17452} // end of void AliFlowAnalysisWithQCumulants::StoreIntFlowFlags()
17453
e1d101a6 17454//=======================================================================================================================
489d5531 17455
489d5531 17456void AliFlowAnalysisWithQCumulants::StoreDiffFlowFlags()
17457{
17458 // Store all flags for differential flow in the profile fDiffFlowFlags.
17459
17460 if(!fDiffFlowFlags)
17461 {
1268c371 17462 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::SDFF() !!!!\n\n");
489d5531 17463 exit(0);
17464 }
17465
1268c371 17466 fDiffFlowFlags->Fill(0.5,fCalculateDiffFlow); // calculate differential flow
403e3389 17467 fDiffFlowFlags->Fill(1.5,fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights); // particle weights used or not?
1268c371 17468 //fDiffFlowFlags->Fill(2.5,""); // which event weight was used? ("combinations", "unit" or "multiplicity") to be improved - finalized
17469 fDiffFlowFlags->Fill(3.5,fApplyCorrectionForNUA); // corrected for non-uniform acceptance or not
17470 fDiffFlowFlags->Fill(4.5,fCalculate2DDiffFlow); // calculate also 2D differential flow vs (pt,eta)
62e36168 17471 fDiffFlowFlags->Fill(5.5,fCalculateDiffFlowVsEta); // if you set kFALSE only differential flow vs pt is calculated
1268c371 17472
489d5531 17473} // end of void AliFlowAnalysisWithQCumulants::StoreDiffFlowFlags()
17474
e1d101a6 17475//=======================================================================================================================
17476
17477void AliFlowAnalysisWithQCumulants::StoreMixedHarmonicsFlags()
17478{
17479 // Store all flags for mixed harmonics in profile fMixedHarmonicsFlags.
17480
17481 if(!fMixedHarmonicsFlags)
17482 {
17483 cout<<"WARNING: fMixedHarmonicsFlags is NULL in AFAWQC::SMHF() !!!!"<<endl;
17484 exit(0);
17485 }
17486
17487 fMixedHarmonicsFlags->Fill(0.5,(Int_t)fCalculateMixedHarmonics);
17488 fMixedHarmonicsFlags->Fill(1.5,(Int_t)fHarmonic);
17489 fMixedHarmonicsFlags->Fill(2.5,(Int_t)fCalculateMixedHarmonicsVsM);
17490 // Which multiplicity weight was used?:
17491
df23c5ae 17492 if(fMultiplicityWeight->Contains("combinations"))
e1d101a6 17493 {
17494 fMixedHarmonicsFlags->Fill(3.5,0); // 0 = "combinations" (default)
df23c5ae 17495 } else if(fMultiplicityWeight->Contains("unit"))
e1d101a6 17496 {
17497 fMixedHarmonicsFlags->Fill(3.5,1); // 1 = "unit"
df23c5ae 17498 } else if(fMultiplicityWeight->Contains("multiplicity"))
e1d101a6 17499 {
17500 fMixedHarmonicsFlags->Fill(3.5,2); // 2 = "multiplicity"
17501 }
17502
17503} // end of void AliFlowAnalysisWithQCumulants::StoreMixedHarmonicsFlags()
17504
17505//=======================================================================================================================
489d5531 17506
489d5531 17507void AliFlowAnalysisWithQCumulants::GetPointersForCommonHistograms()
17508{
17509 // Access all pointers to common control and common result histograms and profiles.
17510
1268c371 17511 TString sCommonConstantsName = "fCommonConstants";
17512 sCommonConstantsName += fAnalysisLabel->Data();
17513 fCommonConstants = dynamic_cast<TProfile*>(fHistList->FindObject(sCommonConstantsName.Data()));
17514 if(!fCommonConstants)
17515 {
17516 printf("\n WARNING (QC): fCommonConstants is NULL in AFAWQC::GPFCH() !!!!\n\n");
17517 exit(0);
17518 }
17519
17520 // to be improved - lines bellow can be implemented better.
17521
489d5531 17522 TString commonHistsName = "AliFlowCommonHistQC";
17523 commonHistsName += fAnalysisLabel->Data();
17524 AliFlowCommonHist *commonHist = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHistsName.Data()));
b77b6434 17525 if(commonHist)
17526 {
17527 this->SetCommonHists(commonHist);
17528 if(fCommonHists->GetHarmonic())
17529 {
17530 fHarmonic = (Int_t)(fCommonHists->GetHarmonic())->GetBinContent(1);
17531 }
17532 } // end of if(commonHist)
489d5531 17533 TString commonHists2ndOrderName = "AliFlowCommonHist2ndOrderQC";
17534 commonHists2ndOrderName += fAnalysisLabel->Data();
17535 AliFlowCommonHist *commonHist2nd = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists2ndOrderName.Data()));
17536 if(commonHist2nd) this->SetCommonHists2nd(commonHist2nd);
17537 TString commonHists4thOrderName = "AliFlowCommonHist4thOrderQC";
17538 commonHists4thOrderName += fAnalysisLabel->Data();
17539 AliFlowCommonHist *commonHist4th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists4thOrderName.Data()));
17540 if(commonHist4th) this->SetCommonHists4th(commonHist4th);
17541 TString commonHists6thOrderName = "AliFlowCommonHist6thOrderQC";
17542 commonHists6thOrderName += fAnalysisLabel->Data();
17543 AliFlowCommonHist *commonHist6th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists6thOrderName.Data()));
17544 if(commonHist6th) this->SetCommonHists6th(commonHist6th);
17545 TString commonHists8thOrderName = "AliFlowCommonHist8thOrderQC";
17546 commonHists8thOrderName += fAnalysisLabel->Data();
17547 AliFlowCommonHist *commonHist8th = dynamic_cast<AliFlowCommonHist*>(fHistList->FindObject(commonHists8thOrderName.Data()));
dd442cd2 17548 if(commonHist8th) this->SetCommonHists8th(commonHist8th);
17549
489d5531 17550 TString commonHistResults2ndOrderName = "AliFlowCommonHistResults2ndOrderQC";
17551 commonHistResults2ndOrderName += fAnalysisLabel->Data();
b77b6434 17552 AliFlowCommonHistResults *commonHistRes2nd = dynamic_cast<AliFlowCommonHistResults*>
17553 (fHistList->FindObject(commonHistResults2ndOrderName.Data()));
489d5531 17554 if(commonHistRes2nd) this->SetCommonHistsResults2nd(commonHistRes2nd);
17555 TString commonHistResults4thOrderName = "AliFlowCommonHistResults4thOrderQC";
17556 commonHistResults4thOrderName += fAnalysisLabel->Data();
17557 AliFlowCommonHistResults *commonHistRes4th = dynamic_cast<AliFlowCommonHistResults*>
17558 (fHistList->FindObject(commonHistResults4thOrderName.Data()));
17559 if(commonHistRes4th) this->SetCommonHistsResults4th(commonHistRes4th);
17560 TString commonHistResults6thOrderName = "AliFlowCommonHistResults6thOrderQC";
17561 commonHistResults6thOrderName += fAnalysisLabel->Data();
17562 AliFlowCommonHistResults *commonHistRes6th = dynamic_cast<AliFlowCommonHistResults*>
17563 (fHistList->FindObject(commonHistResults6thOrderName.Data()));
17564 if(commonHistRes6th) this->SetCommonHistsResults6th(commonHistRes6th);
17565 TString commonHistResults8thOrderName = "AliFlowCommonHistResults8thOrderQC";
17566 commonHistResults8thOrderName += fAnalysisLabel->Data();
17567 AliFlowCommonHistResults *commonHistRes8th = dynamic_cast<AliFlowCommonHistResults*>
17568 (fHistList->FindObject(commonHistResults8thOrderName.Data()));
17569 if(commonHistRes8th) this->SetCommonHistsResults8th(commonHistRes8th);
17570
17571} // end of void AliFlowAnalysisWithQCumulants::GetPointersForCommonHistograms()
17572
e1d101a6 17573//=======================================================================================================================
489d5531 17574
489d5531 17575void AliFlowAnalysisWithQCumulants::GetPointersForParticleWeightsHistograms()
17576{
17577 // Get pointers for histograms with particle weights.
17578
17579 TList *weightsList = dynamic_cast<TList*>(fHistList->FindObject("Weights"));
ca5f47e7 17580 if(!weightsList){printf("\n WARNING (QC): weightsList is NULL in AFAWQC::GPFPWH() !!!!\n");exit(0);}
17581 this->SetWeightsList(weightsList);
489d5531 17582 TString fUseParticleWeightsName = "fUseParticleWeightsQC"; // to be improved (hirdwired label QC)
17583 fUseParticleWeightsName += fAnalysisLabel->Data();
17584 TProfile *useParticleWeights = dynamic_cast<TProfile*>(weightsList->FindObject(fUseParticleWeightsName.Data()));
17585 if(useParticleWeights)
17586 {
17587 this->SetUseParticleWeights(useParticleWeights);
17588 fUsePhiWeights = (Int_t)fUseParticleWeights->GetBinContent(1);
17589 fUsePtWeights = (Int_t)fUseParticleWeights->GetBinContent(2);
17590 fUseEtaWeights = (Int_t)fUseParticleWeights->GetBinContent(3);
403e3389 17591 fUseTrackWeights = (Int_t)fUseParticleWeights->GetBinContent(4);
489d5531 17592 }
17593} // end of void AliFlowAnalysisWithQCumulants::GetPointersForParticleWeightsHistograms();
17594
e1d101a6 17595//=======================================================================================================================
489d5531 17596
489d5531 17597void AliFlowAnalysisWithQCumulants::GetPointersForIntFlowHistograms()
17598{
17599 // Get pointers for histograms and profiles relevant for integrated flow:
17600 // a) Get pointer to base list for integrated flow holding profile fIntFlowFlags and lists fIntFlowProfiles and fIntFlowResults.
17601 // b) Get pointer to profile fIntFlowFlags holding all flags for integrated flow.
17602 // c) Get pointer to list fIntFlowProfiles and pointers to all objects that she holds.
17603 // d) Get pointer to list fIntFlowResults and pointers to all objects that she holds.
17604
17605 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data member?)
17606 TString powerFlag[2] = {"linear","quadratic"}; // to be improved (should I promote this to data member?)
b40a910e 17607 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?)
17608 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 17609
17610 // a) Get pointer to base list for integrated flow holding profile fIntFlowFlags and lists fIntFlowProfiles and fIntFlowResults:
17611 TList *intFlowList = NULL;
17612 intFlowList = dynamic_cast<TList*>(fHistList->FindObject("Integrated Flow"));
17613 if(!intFlowList)
17614 {
17615 cout<<"WARNING: intFlowList is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17616 exit(0);
17617 }
17618
b92ea2b9 17619 // b) Get pointer to profile fIntFlowFlags holding all flags for integrated flow:
17620 TString intFlowFlagsName = "fIntFlowFlags";
17621 intFlowFlagsName += fAnalysisLabel->Data();
17622 TProfile *intFlowFlags = dynamic_cast<TProfile*>(intFlowList->FindObject(intFlowFlagsName.Data()));
17623 if(intFlowFlags)
17624 {
17625 this->SetIntFlowFlags(intFlowFlags);
17626 fApplyCorrectionForNUA = (Bool_t)intFlowFlags->GetBinContent(3);
17627 fApplyCorrectionForNUAVsM = (Bool_t)intFlowFlags->GetBinContent(8);
17628 fCalculateCumulantsVsM = (Bool_t)intFlowFlags->GetBinContent(10);
17629 } else
17630 {
17631 cout<<"WARNING: intFlowFlags is NULL in FAWQC::GPFIFH() !!!!"<<endl;
17632 }
489d5531 17633
17634 // c) Get pointer to list fIntFlowProfiles and pointers to all objects that she holds:
17635 TList *intFlowProfiles = NULL;
17636 intFlowProfiles = dynamic_cast<TList*>(intFlowList->FindObject("Profiles"));
17637 if(intFlowProfiles)
17638 {
17639 // average multiplicities:
17640 TString avMultiplicityName = "fAvMultiplicity";
17641 avMultiplicityName += fAnalysisLabel->Data();
17642 TProfile *avMultiplicity = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(avMultiplicityName.Data()));
17643 if(avMultiplicity)
17644 {
17645 this->SetAvMultiplicity(avMultiplicity);
17646 } else
17647 {
17648 cout<<"WARNING: avMultiplicity is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17649 }
17650 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with wrong errors!):
17651 TString intFlowCorrelationsProName = "fIntFlowCorrelationsPro";
17652 intFlowCorrelationsProName += fAnalysisLabel->Data();
17653 TProfile *intFlowCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowCorrelationsProName.Data()));
17654 if(intFlowCorrelationsPro)
17655 {
17656 this->SetIntFlowCorrelationsPro(intFlowCorrelationsPro);
17657 } else
17658 {
17659 cout<<"WARNING: intFlowCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17660 }
b40a910e 17661 // average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8^2>>:
17662 TString intFlowSquaredCorrelationsProName = "fIntFlowSquaredCorrelationsPro";
17663 intFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
17664 TProfile *intFlowSquaredCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowSquaredCorrelationsProName.Data()));
17665 if(intFlowSquaredCorrelationsPro)
17666 {
17667 this->SetIntFlowSquaredCorrelationsPro(intFlowSquaredCorrelationsPro);
17668 } else
17669 {
17670 cout<<"WARNING: intFlowSquaredCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17671 }
b3dacf6b 17672 if(fCalculateCumulantsVsM)
ff70ca91 17673 {
b40a910e 17674 // Average correlations <<2>>, <<4>>, <<6>> and <<8>> versus multiplicity for all events (error is wrong here):
b3dacf6b 17675 TString intFlowCorrelationsVsMProName = "fIntFlowCorrelationsVsMPro";
17676 intFlowCorrelationsVsMProName += fAnalysisLabel->Data();
17677 for(Int_t ci=0;ci<4;ci++) // correlation index
ff70ca91 17678 {
b3dacf6b 17679 TProfile *intFlowCorrelationsVsMPro = dynamic_cast<TProfile*>
17680 (intFlowProfiles->FindObject(Form("%s, %s",intFlowCorrelationsVsMProName.Data(),correlationFlag[ci].Data())));
17681 if(intFlowCorrelationsVsMPro)
17682 {
17683 this->SetIntFlowCorrelationsVsMPro(intFlowCorrelationsVsMPro,ci);
17684 } else
17685 {
17686 cout<<"WARNING: "<<Form("intFlowCorrelationsVsMPro[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17687 }
17688 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b40a910e 17689 // Average squared correlations <<2>^2>, <<4>^2>, <<6>^2> and <<8>^2> versus multiplicity for all events:
17690 TString intFlowSquaredCorrelationsVsMProName = "fIntFlowSquaredCorrelationsVsMPro";
17691 intFlowSquaredCorrelationsVsMProName += fAnalysisLabel->Data();
17692 for(Int_t ci=0;ci<4;ci++) // correlation index
17693 {
17694 TProfile *intFlowSquaredCorrelationsVsMPro = dynamic_cast<TProfile*>
17695 (intFlowProfiles->FindObject(Form("%s, %s",intFlowSquaredCorrelationsVsMProName.Data(),squaredCorrelationFlag[ci].Data())));
17696 if(intFlowSquaredCorrelationsVsMPro)
17697 {
17698 this->SetIntFlowSquaredCorrelationsVsMPro(intFlowSquaredCorrelationsVsMPro,ci);
17699 } else
17700 {
17701 cout<<"WARNING: "<<Form("intFlowSquaredCorrelationsVsMPro[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17702 }
17703 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b3dacf6b 17704 } // end of if(fCalculateCumulantsVsM)
489d5531 17705 // average all correlations for integrated flow (with wrong errors!):
17706 TString intFlowCorrelationsAllProName = "fIntFlowCorrelationsAllPro";
17707 intFlowCorrelationsAllProName += fAnalysisLabel->Data();
17708 TProfile *intFlowCorrelationsAllPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowCorrelationsAllProName.Data()));
17709 if(intFlowCorrelationsAllPro)
17710 {
17711 this->SetIntFlowCorrelationsAllPro(intFlowCorrelationsAllPro);
17712 } else
17713 {
17714 cout<<"WARNING: intFlowCorrelationsAllPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17715 }
17716 // average extra correlations for integrated flow (which appear only when particle weights are used):
17717 // (to be improved: Weak point in implementation, I am assuming here that method GetPointersForParticleWeightsHistograms() was called)
403e3389 17718 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 17719 {
17720 TString intFlowExtraCorrelationsProName = "fIntFlowExtraCorrelationsPro";
17721 intFlowExtraCorrelationsProName += fAnalysisLabel->Data();
17722 TProfile *intFlowExtraCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowExtraCorrelationsProName.Data()));
17723 if(intFlowExtraCorrelationsPro)
17724 {
17725 this->SetIntFlowExtraCorrelationsPro(intFlowExtraCorrelationsPro);
17726 } else
17727 {
17728 cout<<"WARNING: intFlowExtraCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17729 }
403e3389 17730 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 17731 // average products of correlations <2>, <4>, <6> and <8>:
17732 TString intFlowProductOfCorrelationsProName = "fIntFlowProductOfCorrelationsPro";
17733 intFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
17734 TProfile *intFlowProductOfCorrelationsPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowProductOfCorrelationsProName.Data()));
17735 if(intFlowProductOfCorrelationsPro)
17736 {
17737 this->SetIntFlowProductOfCorrelationsPro(intFlowProductOfCorrelationsPro);
17738 } else
17739 {
17740 cout<<"WARNING: intFlowProductOfCorrelationsPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17741 }
17742 // average product of correlations <2>, <4>, <6> and <8> versus multiplicity
17743 // [0=<<2><4>>,1=<<2><6>>,2=<<2><8>>,3=<<4><6>>,4=<<4><8>>,5=<<6><8>>]
b3dacf6b 17744 if(fCalculateCumulantsVsM)
17745 {
17746 TString intFlowProductOfCorrelationsVsMProName = "fIntFlowProductOfCorrelationsVsMPro";
17747 intFlowProductOfCorrelationsVsMProName += fAnalysisLabel->Data();
403e3389 17748 TString productFlag[6] = {"#LT#LT2#GT#LT4#GT#GT","#LT#LT2#GT#LT6#GT#GT","#LT#LT2#GT#LT8#GT#GT",
17749 "#LT#LT4#GT#LT6#GT#GT","#LT#LT4#GT#LT8#GT#GT","#LT#LT6#GT#LT8#GT#GT"};
b3dacf6b 17750 for(Int_t pi=0;pi<6;pi++)
17751 {
17752 TProfile *intFlowProductOfCorrelationsVsMPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(Form("%s, %s",intFlowProductOfCorrelationsVsMProName.Data(),productFlag[pi].Data())));
17753 if(intFlowProductOfCorrelationsVsMPro)
17754 {
17755 this->SetIntFlowProductOfCorrelationsVsMPro(intFlowProductOfCorrelationsVsMPro,pi);
17756 } else
17757 {
17758 cout<<"WARNING: "<<Form("intFlowProductOfCorrelationsVsMPro[%d]",pi)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17759 }
17760 } // end of for(Int_t pi=0;pi<6;pi++)
17761 } // end of if(fCalculateCumulantsVsM)
489d5531 17762 // average correction terms for non-uniform acceptance (with wrong errors!):
17763 for(Int_t sc=0;sc<2;sc++)
17764 {
17765 TString intFlowCorrectionTermsForNUAProName = "fIntFlowCorrectionTermsForNUAPro";
17766 intFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
17767 TProfile *intFlowCorrectionTermsForNUAPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject((Form("%s: %s terms",intFlowCorrectionTermsForNUAProName.Data(),sinCosFlag[sc].Data()))));
17768 if(intFlowCorrectionTermsForNUAPro)
17769 {
17770 this->SetIntFlowCorrectionTermsForNUAPro(intFlowCorrectionTermsForNUAPro,sc);
17771 } else
17772 {
17773 cout<<"WARNING: intFlowCorrectionTermsForNUAPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17774 cout<<"sc = "<<sc<<endl;
17775 }
2001bc3a 17776 // versus multiplicity:
b3dacf6b 17777 if(fCalculateCumulantsVsM)
2001bc3a 17778 {
b3dacf6b 17779 TString correctionTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
17780 TString intFlowCorrectionTermsForNUAVsMProName = "fIntFlowCorrectionTermsForNUAVsMPro";
17781 intFlowCorrectionTermsForNUAVsMProName += fAnalysisLabel->Data();
17782 for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
2001bc3a 17783 {
b3dacf6b 17784 TProfile *intFlowCorrectionTermsForNUAVsMPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(Form("%s: #LT#LT%s%s#GT#GT",intFlowCorrectionTermsForNUAVsMProName.Data(),sinCosFlag[sc].Data(),correctionTermFlag[ci].Data())));
17785 if(intFlowCorrectionTermsForNUAVsMPro)
17786 {
17787 this->SetIntFlowCorrectionTermsForNUAVsMPro(intFlowCorrectionTermsForNUAVsMPro,sc,ci);
17788 } else
17789 {
17790 cout<<"WARNING: intFlowCorrectionTermsForNUAVsMPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17791 cout<<"sc = "<<sc<<endl;
17792 cout<<"ci = "<<ci<<endl;
17793 }
17794 } // end of for(Int_t ci=0;ci<4;ci++) // correction term index (to be improved - hardwired 4)
17795 } // end of if(fCalculateCumulantsVsM)
489d5531 17796 } // end of for(Int_t sc=0;sc<2;sc++)
0328db2d 17797 // average products of correction terms for NUA:
17798 TString intFlowProductOfCorrectionTermsForNUAProName = "fIntFlowProductOfCorrectionTermsForNUAPro";
17799 intFlowProductOfCorrectionTermsForNUAProName += fAnalysisLabel->Data();
17800 TProfile *intFlowProductOfCorrectionTermsForNUAPro = dynamic_cast<TProfile*>(intFlowProfiles->FindObject(intFlowProductOfCorrectionTermsForNUAProName.Data()));
17801 if(intFlowProductOfCorrectionTermsForNUAPro)
17802 {
17803 this->SetIntFlowProductOfCorrectionTermsForNUAPro(intFlowProductOfCorrectionTermsForNUAPro);
17804 } else
17805 {
17806 cout<<"WARNING: intFlowProductOfCorrectionTermsForNUAPro is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17807 }
489d5531 17808 } else // to if(intFlowProfiles)
17809 {
17810 cout<<"WARNING: intFlowProfiles is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17811 }
17812
17813 // d) Get pointer to list fIntFlowResults and pointers to all objects that she holds.
17814 TList *intFlowResults = NULL;
17815 intFlowResults = dynamic_cast<TList*>(intFlowList->FindObject("Results"));
17816 if(intFlowResults)
17817 {
17818 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with correct errors!):
17819 TString intFlowCorrelationsHistName = "fIntFlowCorrelationsHist";
17820 intFlowCorrelationsHistName += fAnalysisLabel->Data();
17821 TH1D *intFlowCorrelationsHist = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCorrelationsHistName.Data()));
17822 if(intFlowCorrelationsHist)
17823 {
17824 this->SetIntFlowCorrelationsHist(intFlowCorrelationsHist);
17825 } else
17826 {
17827 cout<<"WARNING: intFlowCorrelationsHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17828 }
ff70ca91 17829 // average correlations <<2>>, <<4>>, <<6>> and <<8>> (with correct errors!) vs M:
b3dacf6b 17830 if(fCalculateCumulantsVsM)
ff70ca91 17831 {
b3dacf6b 17832 TString intFlowCorrelationsVsMHistName = "fIntFlowCorrelationsVsMHist";
17833 intFlowCorrelationsVsMHistName += fAnalysisLabel->Data();
17834 for(Int_t ci=0;ci<4;ci++) // correlation index
ff70ca91 17835 {
b3dacf6b 17836 TH1D *intFlowCorrelationsVsMHist = dynamic_cast<TH1D*>
17837 (intFlowResults->FindObject(Form("%s, %s",intFlowCorrelationsVsMHistName.Data(),correlationFlag[ci].Data())));
17838 if(intFlowCorrelationsVsMHist)
17839 {
17840 this->SetIntFlowCorrelationsVsMHist(intFlowCorrelationsVsMHist,ci);
17841 } else
17842 {
17843 cout<<"WARNING: "<<Form("intFlowCorrelationsVsMHist[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17844 }
17845 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
17846 } // end of if(fCalculateCumulantsVsM)
489d5531 17847 // average all correlations for integrated flow (with correct errors!):
17848 TString intFlowCorrelationsAllHistName = "fIntFlowCorrelationsAllHist";
17849 intFlowCorrelationsAllHistName += fAnalysisLabel->Data();
17850 TH1D *intFlowCorrelationsAllHist = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCorrelationsAllHistName.Data()));
17851 if(intFlowCorrelationsAllHist)
17852 {
17853 this->SetIntFlowCorrelationsAllHist(intFlowCorrelationsAllHist);
17854 } else
17855 {
17856 cout<<"WARNING: intFlowCorrelationsAllHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17857 }
17858 // average correction terms for non-uniform acceptance (with correct errors!):
17859 TString intFlowCorrectionTermsForNUAHistName = "fIntFlowCorrectionTermsForNUAHist";
17860 intFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
17861 for(Int_t sc=0;sc<2;sc++)
17862 {
17863 TH1D *intFlowCorrectionTermsForNUAHist = dynamic_cast<TH1D*>(intFlowResults->FindObject((Form("%s: %s terms",intFlowCorrectionTermsForNUAHistName.Data(),sinCosFlag[sc].Data()))));
17864 if(intFlowCorrectionTermsForNUAHist)
17865 {
17866 this->SetIntFlowCorrectionTermsForNUAHist(intFlowCorrectionTermsForNUAHist,sc);
17867 } else
17868 {
17869 cout<<"WARNING: intFlowCorrectionTermsForNUAHist is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17870 cout<<"sc = "<<sc<<endl;
17871 }
17872 } // end of for(Int_t sc=0;sc<2;sc++)
17873 // covariances (multiplied with weight dependent prefactor):
17874 TString intFlowCovariancesName = "fIntFlowCovariances";
17875 intFlowCovariancesName += fAnalysisLabel->Data();
17876 TH1D *intFlowCovariances = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCovariancesName.Data()));
17877 if(intFlowCovariances)
17878 {
17879 this->SetIntFlowCovariances(intFlowCovariances);
17880 } else
17881 {
17882 cout<<"WARNING: intFlowCovariances is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17883 }
17884 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8>:
17885 TString intFlowSumOfEventWeightsName = "fIntFlowSumOfEventWeights";
17886 intFlowSumOfEventWeightsName += fAnalysisLabel->Data();
17887 for(Int_t power=0;power<2;power++)
17888 {
17889 TH1D *intFlowSumOfEventWeights = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s: %s",intFlowSumOfEventWeightsName.Data(),powerFlag[power].Data())));
17890 if(intFlowSumOfEventWeights)
17891 {
17892 this->SetIntFlowSumOfEventWeights(intFlowSumOfEventWeights,power);
17893 } else
17894 {
17895 cout<<"WARNING: intFlowSumOfEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17896 cout<<"power = "<<power<<endl;
17897 }
17898 } // end of for(Int_t power=0;power<2;power++)
17899 // sum of products of event weights for correlations <2>, <4>, <6> and <8>:
17900 TString intFlowSumOfProductOfEventWeightsName = "fIntFlowSumOfProductOfEventWeights";
17901 intFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
17902 TH1D *intFlowSumOfProductOfEventWeights = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowSumOfProductOfEventWeightsName.Data()));
17903 if(intFlowSumOfProductOfEventWeights)
17904 {
17905 this->SetIntFlowSumOfProductOfEventWeights(intFlowSumOfProductOfEventWeights);
17906 } else
17907 {
17908 cout<<"WARNING: intFlowSumOfProductOfEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17909 }
ff70ca91 17910 // final result for covariances of correlations (multiplied with weight dependent prefactor) versus M
17911 // [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 17912 if(fCalculateCumulantsVsM)
ff70ca91 17913 {
b3dacf6b 17914 TString intFlowCovariancesVsMName = "fIntFlowCovariancesVsM";
17915 intFlowCovariancesVsMName += fAnalysisLabel->Data();
17916 TString covarianceFlag[6] = {"Cov(<2>,<4>)","Cov(<2>,<6>)","Cov(<2>,<8>)","Cov(<4>,<6>)","Cov(<4>,<8>)","Cov(<6>,<8>)"};
17917 for(Int_t ci=0;ci<6;ci++)
17918 {
17919 TH1D *intFlowCovariancesVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowCovariancesVsMName.Data(),covarianceFlag[ci].Data())));
17920 if(intFlowCovariancesVsM)
ff70ca91 17921 {
b3dacf6b 17922 this->SetIntFlowCovariancesVsM(intFlowCovariancesVsM,ci);
ff70ca91 17923 } else
17924 {
b3dacf6b 17925 cout<<"WARNING: "<<Form("intFlowCovariancesVsM[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 17926 }
b3dacf6b 17927 } // end of for(Int_t ci=0;ci<6;ci++)
17928 } // end of if(fCalculateCumulantsVsM)
17929 // sum of linear and quadratic event weights for <2>, <4>, <6> and <8> versus multiplicity
17930 // [0=sum{w_{<2>}},1=sum{w_{<4>}},2=sum{w_{<6>}},3=sum{w_{<8>}}][0=linear 1,1=quadratic]:
17931 if(fCalculateCumulantsVsM)
17932 {
17933 TString intFlowSumOfEventWeightsVsMName = "fIntFlowSumOfEventWeightsVsM";
17934 intFlowSumOfEventWeightsVsMName += fAnalysisLabel->Data();
17935 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>}"},
17936 {"#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}"}};
17937 for(Int_t si=0;si<4;si++)
17938 {
17939 for(Int_t power=0;power<2;power++)
17940 {
17941 TH1D *intFlowSumOfEventWeightsVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowSumOfEventWeightsVsMName.Data(),sumFlag[power][si].Data())));
17942 if(intFlowSumOfEventWeightsVsM)
17943 {
17944 this->SetIntFlowSumOfEventWeightsVsM(intFlowSumOfEventWeightsVsM,si,power);
17945 } else
17946 {
17947 cout<<"WARNING: "<<Form("intFlowSumOfEventWeightsVsM[%d][%d]",si,power)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17948 }
17949 } // end of for(Int_t power=0;power<2;power++)
17950 } // end of for(Int_t si=0;si<4;si++)
17951 } // end of if(fCalculateCumulantsVsM)
ff70ca91 17952 // sum of products of event weights for correlations <2>, <4>, <6> and <8> vs M
17953 // [0=sum{w_{<2>}w_{<4>}},1=sum{w_{<2>}w_{<6>}},2=sum{w_{<2>}w_{<8>}},
17954 // 3=sum{w_{<4>}w_{<6>}},4=sum{w_{<4>}w_{<8>}},5=sum{w_{<6>}w_{<8>}}]:
b3dacf6b 17955 if(fCalculateCumulantsVsM)
ff70ca91 17956 {
b3dacf6b 17957 TString intFlowSumOfProductOfEventWeightsVsMName = "fIntFlowSumOfProductOfEventWeightsVsM";
17958 intFlowSumOfProductOfEventWeightsVsMName += fAnalysisLabel->Data();
17959 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>}",
17960 "#sum_{i=1}^{N} w_{<4>} w_{<6>}","#sum_{i=1}^{N} w_{<4>} w_{<8>}","#sum_{i=1}^{N} w_{<6>} w_{<8>}"};
17961 for(Int_t pi=0;pi<6;pi++)
ff70ca91 17962 {
b3dacf6b 17963 TH1D *intFlowSumOfProductOfEventWeightsVsM = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s, %s",intFlowSumOfProductOfEventWeightsVsMName.Data(),sopowFlag[pi].Data())));
17964 if(intFlowSumOfProductOfEventWeightsVsM)
17965 {
17966 this->SetIntFlowSumOfProductOfEventWeightsVsM(intFlowSumOfProductOfEventWeightsVsM,pi);
17967 } else
17968 {
17969 cout<<"WARNING: "<<Form("intFlowSumOfProductOfEventWeightsVsM[%d]",pi)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17970 }
17971 } // end of for(Int_t pi=0;pi<6;pi++)
17972 } // end of if(fCalculateCumulantsVsM)
0328db2d 17973 // covariances for NUA (multiplied with weight dependent prefactor):
17974 TString intFlowCovariancesNUAName = "fIntFlowCovariancesNUA";
17975 intFlowCovariancesNUAName += fAnalysisLabel->Data();
17976 TH1D *intFlowCovariancesNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowCovariancesNUAName.Data()));
17977 if(intFlowCovariancesNUA)
17978 {
17979 this->SetIntFlowCovariancesNUA(intFlowCovariancesNUA);
17980 } else
17981 {
17982 cout<<"WARNING: intFlowCovariancesNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17983 }
17984 // sum of linear and quadratic event weights NUA terms:
17985 TString intFlowSumOfEventWeightsNUAName = "fIntFlowSumOfEventWeightsNUA";
17986 intFlowSumOfEventWeightsNUAName += fAnalysisLabel->Data();
17987 for(Int_t sc=0;sc<2;sc++)
17988 {
17989 for(Int_t power=0;power<2;power++)
17990 {
17991 TH1D *intFlowSumOfEventWeightsNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(Form("%s: %s, %s",intFlowSumOfEventWeightsNUAName.Data(),powerFlag[power].Data(),sinCosFlag[sc].Data())));
17992 if(intFlowSumOfEventWeightsNUA)
17993 {
17994 this->SetIntFlowSumOfEventWeightsNUA(intFlowSumOfEventWeightsNUA,sc,power);
17995 } else
17996 {
17997 cout<<"WARNING: intFlowSumOfEventWeightsNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
17998 cout<<"sc = "<<sc<<endl;
17999 cout<<"power = "<<power<<endl;
18000 }
18001 } // end of for(Int_t power=0;power<2;power++)
18002 } // end of for(Int_t sc=0;sc<2;sc++)
18003 // sum of products of event weights for NUA terms:
18004 TString intFlowSumOfProductOfEventWeightsNUAName = "fIntFlowSumOfProductOfEventWeightsNUA";
18005 intFlowSumOfProductOfEventWeightsNUAName += fAnalysisLabel->Data();
18006 TH1D *intFlowSumOfProductOfEventWeightsNUA = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowSumOfProductOfEventWeightsNUAName.Data()));
18007 if(intFlowSumOfProductOfEventWeightsNUA)
18008 {
18009 this->SetIntFlowSumOfProductOfEventWeightsNUA(intFlowSumOfProductOfEventWeightsNUA);
18010 } else
18011 {
18012 cout<<"WARNING: intFlowSumOfProductOfEventWeightsNUA is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18013 }
b3dacf6b 18014 // Final results for reference Q-cumulants:
489d5531 18015 TString intFlowQcumulantsName = "fIntFlowQcumulants";
18016 intFlowQcumulantsName += fAnalysisLabel->Data();
18017 TH1D *intFlowQcumulants = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsName.Data()));
18018 if(intFlowQcumulants)
18019 {
18020 this->SetIntFlowQcumulants(intFlowQcumulants);
18021 } else
18022 {
18023 cout<<"WARNING: intFlowQcumulants is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18024 }
b3dacf6b 18025 // Final results for reference Q-cumulants rebinned in M:
18026 if(fCalculateCumulantsVsM)
18027 {
18028 TString intFlowQcumulantsRebinnedInMName = "fIntFlowQcumulantsRebinnedInM";
18029 intFlowQcumulantsRebinnedInMName += fAnalysisLabel->Data();
18030 TH1D *intFlowQcumulantsRebinnedInM = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsRebinnedInMName.Data()));
18031 if(intFlowQcumulantsRebinnedInM)
18032 {
18033 this->SetIntFlowQcumulantsRebinnedInM(intFlowQcumulantsRebinnedInM);
18034 } else
18035 {
18036 cout<<"WARNING: intFlowQcumulantsRebinnedInM is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18037 }
18038 } // end of if(fCalculateCumulantsVsM)
b92ea2b9 18039 // Ratio between error squared: with/without non-isotropic terms:
18040 TString intFlowQcumulantsErrorSquaredRatioName = "fIntFlowQcumulantsErrorSquaredRatio";
18041 intFlowQcumulantsErrorSquaredRatioName += fAnalysisLabel->Data();
18042 TH1D *intFlowQcumulantsErrorSquaredRatio = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowQcumulantsErrorSquaredRatioName.Data()));
18043 if(intFlowQcumulantsErrorSquaredRatio)
18044 {
18045 this->SetIntFlowQcumulantsErrorSquaredRatio(intFlowQcumulantsErrorSquaredRatio);
18046 } else
18047 {
18048 cout<<" WARNING: intntFlowQcumulantsErrorSquaredRatio is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18049 }
ff70ca91 18050 // final results for integrated Q-cumulants versus multiplicity:
ff70ca91 18051 TString cumulantFlag[4] = {"QC{2}","QC{4}","QC{6}","QC{8}"};
b3dacf6b 18052 if(fCalculateCumulantsVsM)
ff70ca91 18053 {
b3dacf6b 18054 TString intFlowQcumulantsVsMName = "fIntFlowQcumulantsVsM";
18055 intFlowQcumulantsVsMName += fAnalysisLabel->Data();
18056 for(Int_t co=0;co<4;co++) // cumulant order
ff70ca91 18057 {
b3dacf6b 18058 TH1D *intFlowQcumulantsVsM = dynamic_cast<TH1D*>
18059 (intFlowResults->FindObject(Form("%s, %s",intFlowQcumulantsVsMName.Data(),cumulantFlag[co].Data())));
18060 if(intFlowQcumulantsVsM)
18061 {
18062 this->SetIntFlowQcumulantsVsM(intFlowQcumulantsVsM,co);
18063 } else
18064 {
18065 cout<<"WARNING: "<<Form("intFlowQcumulantsVsM[%d]",co)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18066 }
18067 } // end of for(Int_t co=0;co<4;co++) // cumulant order
18068 } // end of if(fCalculateCumulantsVsM)
18069 // Final reference flow estimates from Q-cumulants:
489d5531 18070 TString intFlowName = "fIntFlow";
18071 intFlowName += fAnalysisLabel->Data();
18072 TH1D *intFlow = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowName.Data()));
18073 if(intFlow)
18074 {
18075 this->SetIntFlow(intFlow);
18076 } else
18077 {
18078 cout<<"WARNING: intFlow is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
ff70ca91 18079 }
b3dacf6b 18080 // Final reference flow estimates from Q-cumulants vs M rebinned in M:
18081 if(fCalculateCumulantsVsM)
ff70ca91 18082 {
b3dacf6b 18083 TString intFlowRebinnedInMName = "fIntFlowRebinnedInM";
18084 intFlowRebinnedInMName += fAnalysisLabel->Data();
18085 TH1D *intFlowRebinnedInM = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowRebinnedInMName.Data()));
18086 if(intFlowRebinnedInM)
ff70ca91 18087 {
b3dacf6b 18088 this->SetIntFlowRebinnedInM(intFlowRebinnedInM);
18089 } else
ff70ca91 18090 {
b3dacf6b 18091 cout<<"WARNING: intFlowRebinnedInM is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18092 }
18093 } // end of if(fCalculateCumulantsVsM)
18094 // integrated flow from Q-cumulants versus multiplicity:
18095 if(fCalculateCumulantsVsM)
18096 {
18097 TString intFlowVsMName = "fIntFlowVsM";
18098 intFlowVsMName += fAnalysisLabel->Data();
b77b6434 18099 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 18100 for(Int_t co=0;co<4;co++) // cumulant order
18101 {
18102 TH1D *intFlowVsM = dynamic_cast<TH1D*>
b77b6434 18103 (intFlowResults->FindObject(Form("%s, %s",intFlowVsMName.Data(),flowFlag[co].Data())));
b3dacf6b 18104 if(intFlowVsM)
18105 {
18106 this->SetIntFlowVsM(intFlowVsM,co);
18107 } else
18108 {
18109 cout<<"WARNING: "<<Form("intFlowVsM[%d]",co)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18110 }
18111 } // end of for(Int_t co=0;co<4;co++) // cumulant order
18112 } // end of if(fCalculateCumulantsVsM)
2001bc3a 18113 // quantifying detector effects effects to correlations:
18114 TString intFlowDetectorBiasName = "fIntFlowDetectorBias";
18115 intFlowDetectorBiasName += fAnalysisLabel->Data();
18116 TH1D *intFlowDetectorBias = dynamic_cast<TH1D*>(intFlowResults->FindObject(intFlowDetectorBiasName.Data()));
18117 if(intFlowDetectorBias)
18118 {
18119 this->SetIntFlowDetectorBias(intFlowDetectorBias);
18120 } else
18121 {
18122 cout<<"WARNING: intFlowDetectorBias is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18123 }
18124 // quantifying detector effects effects to correlations vs multiplicity:
b77b6434 18125 if(fCalculateCumulantsVsM)
2001bc3a 18126 {
3c5d5752 18127 TString intFlowDetectorBiasVsMName = "fIntFlowDetectorBiasVsM";
18128 intFlowDetectorBiasVsMName += fAnalysisLabel->Data();
18129 for(Int_t ci=0;ci<4;ci++) // correlation index
2001bc3a 18130 {
3c5d5752 18131 TH1D *intFlowDetectorBiasVsM = dynamic_cast<TH1D*>
18132 (intFlowResults->FindObject(Form("%s for %s",intFlowDetectorBiasVsMName.Data(),cumulantFlag[ci].Data())));
18133 if(intFlowDetectorBiasVsM)
18134 {
18135 this->SetIntFlowDetectorBiasVsM(intFlowDetectorBiasVsM,ci);
18136 } else
18137 {
18138 cout<<"WARNING: "<<Form("intFlowDetectorBiasVsM[%d]",ci)<<" is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18139 }
18140 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
b77b6434 18141 } // end of if(fCalculateCumulantsVsM)
489d5531 18142 } else // to if(intFlowResults)
18143 {
18144 cout<<"WARNING: intFlowResults is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
18145 }
ff70ca91 18146
489d5531 18147} // end of void AliFlowAnalysisWithQCumulants::GetPointersForIntFlowHistograms()
18148
e1d101a6 18149//=======================================================================================================================
489d5531 18150
1268c371 18151void AliFlowAnalysisWithQCumulants::GetPointersFor2DDiffFlowHistograms()
18152{
18153 // Get pointers for 2D differential flow histograms.
18154 // a) Check pointers used in this method;
18155 // b) Get pointers to 2D differential flow lists;
18156 // c) Get pointers to 2D differential flow profiles;
18157 // d) Get pointers to 2D differential flow histograms.
18158
18159 // a) Check pointers used in this method:
18160 if(!fDiffFlowList)
18161 {
18162 printf("\n WARNING (QC): fDiffFlowList is NULL in AFAWQC::GPF2DDFH() !!!!\n");
18163 printf(" Call method GetPointersForDiffFlowHistograms() first.\n\n");
18164 exit(0);
18165 }
18166 if(!fDiffFlowFlags)
18167 {
18168 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::GPF2DDFH() !!!!\n\n");
18169 printf(" Call method GetPointersForDiffFlowHistograms() first.\n\n");
18170 exit(0);
18171 }
18172
18173 // b) Get pointers to 2D differential flow lists:
18174 this->SetCalculate2DDiffFlow((Bool_t)fDiffFlowFlags->GetBinContent(5)); // to be improved - hardwired 5
18175 if(!fCalculate2DDiffFlow){return;}
18176 TString typeFlag[2] = {"RP","POI"};
18177 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18178 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18179 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18180 // Base list:
18181 TString diffFlow2DListName = "2D";
18182 diffFlow2DListName += fAnalysisLabel->Data();
18183 fDiffFlow2D = dynamic_cast<TList*>(fDiffFlowList->FindObject(diffFlow2DListName.Data()));
18184 if(!fDiffFlow2D)
18185 {
18186 printf("\n WARNING (QC): fDiffFlow2D is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18187 exit(0);
18188 }
18189 // Lists holding profiles with 2D correlations:
18190 TString s2DDiffFlowCorrelationsProListName = "Profiles with 2D correlations";
18191 s2DDiffFlowCorrelationsProListName += fAnalysisLabel->Data(); // to be improved
18192 for(Int_t t=0;t<2;t++)
18193 {
18194 f2DDiffFlowCorrelationsProList[t] = dynamic_cast<TList*>(fDiffFlow2D->FindObject(Form("Profiles with 2D correlations (%s)",typeFlag[t].Data())));
18195 if(!f2DDiffFlowCorrelationsProList[t])
18196 {
18197 printf("\n WARNING (QC): f2DDiffFlowCorrelationsProList[%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t);
18198 exit(0);
18199 }
18200 } // end of for(Int_t t=0;t<2;t++)
18201
18202 // c) Get pointers to 2D differential flow profiles:
18203 TString s2DDiffFlowCorrelationsProName = "f2DDiffFlowCorrelationsPro";
18204 s2DDiffFlowCorrelationsProName += fAnalysisLabel->Data();
18205 for(Int_t t=0;t<2;t++) // type: RP or POI
18206 {
18207 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18208 {
18209 f2DDiffFlowCorrelationsPro[t][rci] = dynamic_cast<TProfile2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowCorrelationsProName.Data(),typeFlag[t].Data(),reducedCorrelationIndex[rci].Data())));
18210 if(!f2DDiffFlowCorrelationsPro[t][rci])
18211 {
18212 printf("\n WARNING (QC): f2DDiffFlowCorrelationsPro[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18213 exit(0);
18214 } else
18215 {
18216 this->Set2DDiffFlowCorrelationsPro(f2DDiffFlowCorrelationsPro[t][rci],t,rci);
18217 }
18218 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18219 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18220
18221 // d) Get pointers to 2D differential flow histograms:
18222 TString s2DDiffFlowCumulantsName = "f2DDiffFlowCumulants";
18223 s2DDiffFlowCumulantsName += fAnalysisLabel->Data();
18224 TString s2DDiffFlowName = "f2DDiffFlow";
18225 s2DDiffFlowName += fAnalysisLabel->Data();
18226 for(Int_t t=0;t<2;t++) // type: RP or POI
18227 {
18228 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18229 {
18230 // 2D differential cumulants:
18231 f2DDiffFlowCumulants[t][rci] = dynamic_cast<TH2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowCumulantsName.Data(),typeFlag[t].Data(),differentialCumulantIndex[rci].Data())));
18232 if(!f2DDiffFlowCumulants[t][rci])
18233 {
18234 printf("\n WARNING (QC): f2DDiffFlowCumulants[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18235 exit(0);
18236 } else
18237 {
18238 this->Set2DDiffFlowCumulants(f2DDiffFlowCumulants[t][rci],t,rci);
18239 }
18240 // 2D differential flow:
18241 f2DDiffFlow[t][rci] = dynamic_cast<TH2D*>(f2DDiffFlowCorrelationsProList[t]->FindObject(Form("%s, %s, %s",s2DDiffFlowName.Data(),typeFlag[t].Data(),differentialFlowIndex[rci].Data())));
18242 if(!f2DDiffFlow[t][rci])
18243 {
18244 printf("\n WARNING (QC): f2DDiffFlow[%i][%i] is NULL in AFAWQC::GPF2DFH() !!!!\n\n",t,rci);
18245 exit(0);
18246 } else
18247 {
18248 this->Set2DDiffFlow(f2DDiffFlow[t][rci],t,rci);
18249 }
18250 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18251 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18252
18253} // end of void AliFlowAnalysisWithQCumulants::GetPointersFor2DDiffFlowHistograms()
18254
e1d101a6 18255//=======================================================================================================================
1268c371 18256
64e500e3 18257void AliFlowAnalysisWithQCumulants::GetPointersForOtherDiffCorrelators()
18258{
18259 // Get pointers for other differential correlators.
18260 // a) Get pointer to list with other differential correlators;
18261 // b) Declare local flags;
18262 // c) Get pointers to other differential profiles.
18263
62e36168 18264 if(!fCalculateDiffFlow){return;} // TBI: This must eventually be moved somewhere else
18265
64e500e3 18266 // a) Get pointer to list with other differential correlators:
18267 fOtherDiffCorrelatorsList = dynamic_cast<TList*>(fHistList->FindObject("Other differential correlators"));
18268 if(!fOtherDiffCorrelatorsList)
18269 {
18270 printf("\n WARNING (QC): fOtherDiffCorrelatorsList is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18271 exit(0);
18272 }
18273
18274 // b) Declare local flags: // (to be improved - promoted to data members)
18275 TString typeFlag[2] = {"RP","POI"};
18276 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18277 TString sinCosFlag[2] = {"sin","cos"};
18278
18279 // c) Get pointers to other differential profiles:
18280 TString otherDiffCorrelatorsName = "fOtherDiffCorrelators";
18281 otherDiffCorrelatorsName += fAnalysisLabel->Data();
18282 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18283 {
62e36168 18284 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 18285 {
18286 for(Int_t sc=0;sc<2;sc++) // sin or cos
18287 {
18288 for(Int_t ci=0;ci<1;ci++) // correlator index
18289 {
18290 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)));
18291 if(!fOtherDiffCorrelators[t][pe][sc][ci])
18292 {
18293 printf("\n WARNING (QC): fOtherDiffCorrelators[%i][%i][%i][%i] is NULL in AFAWQC::GPFODC() !!!!\n\n",t,pe,sc,ci);
18294 exit(0);
18295 } else
18296 {
18297 this->SetOtherDiffCorrelators(fOtherDiffCorrelators[t][pe][sc][ci],t,pe,sc,ci);
18298 }
18299 } // end of for(Int_t ci=0;ci<1;ci++) // correlator index
18300 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18301 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18302 } // end of for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18303
18304} // end of void AliFlowAnalysisWithQCumulants::GetPointersForOtherDiffCorrelators()
18305
e1d101a6 18306//=======================================================================================================================
64e500e3 18307
489d5531 18308void AliFlowAnalysisWithQCumulants::GetPointersForDiffFlowHistograms()
18309{
18310 // Get pointer to all objects relevant for differential flow.
1268c371 18311 // a) Get pointer to base list for differential flow fDiffFlowList;
18312 // b) Get pointer to profile fDiffFlowFlags holding all flags for differential flow. Access and set some flags;
18313 // c) Get pointers to nested lists fDiffFlowListProfiles and fDiffFlowListResults;
18314 // d) Define flags locally (to be improved: should I promote these flags to data members?);
18315 // e) Get pointers to all nested lists in fDiffFlowListProfiles and to profiles which they hold;
18316 // f) Get pointers to all nested lists in fDiffFlowListResults and to histograms which they hold.
18317
18318 // a) Get pointer to base list for differential flow fDiffFlowList:
18319 fDiffFlowList = dynamic_cast<TList*>(fHistList->FindObject("Differential Flow"));
18320 if(!fDiffFlowList)
489d5531 18321 {
1268c371 18322 printf("\n WARNING (QC): fDiffFlowList is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18323 exit(0);
18324 }
1268c371 18325
18326 // b) Get pointer to profile fDiffFlowFlags holding all flags for differential flow. Access and set some flags:
18327 TString diffFlowFlagsName = "fDiffFlowFlags";
18328 diffFlowFlagsName += fAnalysisLabel->Data();
18329 fDiffFlowFlags = dynamic_cast<TProfile*>(fDiffFlowList->FindObject(diffFlowFlagsName.Data()));
18330 if(fDiffFlowFlags)
18331 {
62d19320 18332 this->SetCalculateDiffFlow((Bool_t)fDiffFlowFlags->GetBinContent(1)); // to be improved - hardwired 1
62e36168 18333 this->SetCalculateDiffFlowVsEta((Bool_t)fDiffFlowFlags->GetBinContent(6)); // to be improved - hardwired 6
1268c371 18334 } else
18335 {
18336 printf("\n WARNING (QC): fDiffFlowFlags is NULL in AFAWQC::GPFDFH() !!!!\n\n");
18337 printf("\n Flags in method Finish() are wrong.\n\n");
18338 exit(0);
18339 }
18340
18341 if(!fCalculateDiffFlow){return;} // IMPORTANT: do not move this anywhere above in this method (to be improved)
18342
18343 // c) Get pointers to nested lists fDiffFlowListProfiles and fDiffFlowListResults:
18344 // List holding nested lists holding profiles:
489d5531 18345 TList *diffFlowListProfiles = NULL;
1268c371 18346 diffFlowListProfiles = dynamic_cast<TList*>(fDiffFlowList->FindObject("Profiles"));
489d5531 18347 if(!diffFlowListProfiles)
18348 {
1268c371 18349 printf("\n WARNING (QC): diffFlowListProfiles is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18350 exit(0);
18351 }
1268c371 18352 // List holding nested lists holding histograms with final results:
489d5531 18353 TList *diffFlowListResults = NULL;
1268c371 18354 diffFlowListResults = dynamic_cast<TList*>(fDiffFlowList->FindObject("Results"));
489d5531 18355 if(!diffFlowListResults)
18356 {
1268c371 18357 printf("\n WARNING (QC): diffFlowListResults is NULL in AFAWQC::GPFDFH() !!!!\n\n");
489d5531 18358 exit(0);
18359 }
18360
1268c371 18361 // d) Define flags locally (to be improved: should I promote these flags to data members?):
18362 TString typeFlag[2] = {"RP","POI"};
18363 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18364 TString powerFlag[2] = {"linear","quadratic"};
18365 TString sinCosFlag[2] = {"sin","cos"};
18366 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18367 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18368 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18369 TString reducedSquaredCorrelationIndex[4] = {"<2'>^{2}","<4'>^{2}","<6'>^{2}","<8'>^{2}"};
18370 TString mixedCorrelationIndex[8] = {"<2>","<2'>","<4>","<4'>","<6>","<6'>","<8>","<8'>"};
18371 TString covarianceName[5] = {"Cov(<2>,<2'>)","Cov(<2>,<4'>)","Cov(<4>,<2'>)","Cov(<4>,<4'>)","Cov(<2'>,<4'>)"};
489d5531 18372
1268c371 18373 // e) Get pointers to all nested lists in fDiffFlowListProfiles and to profiles which they hold:
489d5531 18374 // correlations:
18375 TList *diffFlowCorrelationsProList[2][2] = {{NULL}};
18376 TString diffFlowCorrelationsProName = "fDiffFlowCorrelationsPro";
18377 diffFlowCorrelationsProName += fAnalysisLabel->Data();
b40a910e 18378 TProfile *diffFlowCorrelationsPro[2][2][4] = {{{NULL}}};
18379 // squared correlations:
18380 TString diffFlowSquaredCorrelationsProName = "fDiffFlowSquaredCorrelationsPro";
18381 diffFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
18382 TProfile *diffFlowSquaredCorrelationsPro[2][2][4] = {{{NULL}}};
489d5531 18383 // products of correlations:
18384 TList *diffFlowProductOfCorrelationsProList[2][2] = {{NULL}};
18385 TString diffFlowProductOfCorrelationsProName = "fDiffFlowProductOfCorrelationsPro";
18386 diffFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
18387 TProfile *diffFlowProductOfCorrelationsPro[2][2][8][8] = {{{{NULL}}}};
18388 // corrections:
18389 TList *diffFlowCorrectionsProList[2][2] = {{NULL}};
18390 TString diffFlowCorrectionTermsForNUAProName = "fDiffFlowCorrectionTermsForNUAPro";
18391 diffFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
18392 TProfile *diffFlowCorrectionTermsForNUAPro[2][2][2][10] = {{{{NULL}}}};
18393 for(Int_t t=0;t<2;t++)
18394 {
62e36168 18395 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++)
489d5531 18396 {
18397 diffFlowCorrelationsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18398 if(!diffFlowCorrelationsProList[t][pe])
18399 {
18400 cout<<"WARNING: diffFlowCorrelationsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18401 cout<<"t = "<<t<<endl;
18402 cout<<"pe = "<<pe<<endl;
18403 exit(0);
18404 }
18405 for(Int_t ci=0;ci<4;ci++) // correlation index
18406 {
b40a910e 18407 // reduced correlations:
489d5531 18408 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())));
18409 if(diffFlowCorrelationsPro[t][pe][ci])
18410 {
18411 this->SetDiffFlowCorrelationsPro(diffFlowCorrelationsPro[t][pe][ci],t,pe,ci);
18412 } else
18413 {
18414 cout<<"WARNING: diffFlowCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18415 cout<<"t = "<<t<<endl;
18416 cout<<"pe = "<<pe<<endl;
18417 cout<<"ci = "<<ci<<endl;
18418 }
b40a910e 18419 // reduced squared correlations:
18420 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())));
18421 if(diffFlowSquaredCorrelationsPro[t][pe][ci])
18422 {
18423 this->SetDiffFlowSquaredCorrelationsPro(diffFlowSquaredCorrelationsPro[t][pe][ci],t,pe,ci);
18424 } else
18425 {
18426 cout<<"WARNING: diffFlowSquaredCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18427 cout<<"t = "<<t<<endl;
18428 cout<<"pe = "<<pe<<endl;
18429 cout<<"ci = "<<ci<<endl;
18430 }
489d5531 18431 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18432 // products of correlations:
18433 diffFlowProductOfCorrelationsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with products of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18434 if(!diffFlowProductOfCorrelationsProList[t][pe])
18435 {
18436 cout<<"WARNING: ddiffFlowProductOfCorrelationsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18437 cout<<"t = "<<t<<endl;
18438 cout<<"pe = "<<pe<<endl;
18439 exit(0);
18440 }
18441 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18442 {
18443 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18444 {
18445 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())));
18446 if(diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2])
18447 {
18448 this->SetDiffFlowProductOfCorrelationsPro(diffFlowProductOfCorrelationsPro[t][pe][mci1][mci2],t,pe,mci1,mci2);
18449 } else
18450 {
b40a910e 18451 cout<<"WARNING: diffFlowProductOfCorrelationsPro[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
489d5531 18452 cout<<"t = "<<t<<endl;
18453 cout<<"pe = "<<pe<<endl;
18454 cout<<"mci1 = "<<mci1<<endl;
18455 cout<<"mci2 = "<<mci2<<endl;
18456 }
18457 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18458 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18459 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18460 // corrections:
18461 diffFlowCorrectionsProList[t][pe] = dynamic_cast<TList*>(diffFlowListProfiles->FindObject(Form("Profiles with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18462 if(!diffFlowCorrectionsProList[t][pe])
18463 {
18464 cout<<"WARNING: diffFlowCorrectionsProList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18465 cout<<"t = "<<t<<endl;
18466 cout<<"pe = "<<pe<<endl;
18467 exit(0);
18468 }
18469 // correction terms for NUA:
18470 for(Int_t sc=0;sc<2;sc++) // sin or cos
18471 {
18472 for(Int_t cti=0;cti<9;cti++) // correction term index
18473 {
18474 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)));
18475 if(diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti])
18476 {
18477 this->SetDiffFlowCorrectionTermsForNUAPro(diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti],t,pe,sc,cti);
18478 } else
18479 {
18480 cout<<"WARNING: diffFlowCorrectionTermsForNUAPro[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18481 cout<<"t = "<<t<<endl;
18482 cout<<"pe = "<<pe<<endl;
18483 cout<<"sc = "<<sc<<endl;
18484 cout<<"cti = "<<cti<<endl;
18485 }
18486 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
18487 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18488 // ...
18489 } // end of for(Int_t pe=0;pe<2;pe++)
18490 } // end of for(Int_t t=0;t<2;t++)
18491
1268c371 18492 // f) Get pointers to all nested lists in fDiffFlowListResults and to histograms which they hold:
489d5531 18493 // reduced correlations:
18494 TList *diffFlowCorrelationsHistList[2][2] = {{NULL}};
18495 TString diffFlowCorrelationsHistName = "fDiffFlowCorrelationsHist";
18496 diffFlowCorrelationsHistName += fAnalysisLabel->Data();
18497 TH1D *diffFlowCorrelationsHist[2][2][4] = {{{NULL}}};
18498 // corrections for NUA:
18499 TList *diffFlowCorrectionsHistList[2][2] = {{NULL}};
18500 TString diffFlowCorrectionTermsForNUAHistName = "fDiffFlowCorrectionTermsForNUAHist";
18501 diffFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
18502 TH1D *diffFlowCorrectionTermsForNUAHist[2][2][2][10] = {{{{NULL}}}};
18503 // differential Q-cumulants:
18504 TList *diffFlowCumulantsHistList[2][2] = {{NULL}};
18505 TString diffFlowCumulantsName = "fDiffFlowCumulants";
18506 diffFlowCumulantsName += fAnalysisLabel->Data();
18507 TH1D *diffFlowCumulants[2][2][4] = {{{NULL}}};
1268c371 18508 // detector bias to differential Q-cumulants:
18509 TList *diffFlowDetectorBiasHistList[2][2] = {{NULL}};
18510 TString diffFlowDetectorBiasName = "fDiffFlowDetectorBias";
18511 diffFlowDetectorBiasName += fAnalysisLabel->Data();
18512 TH1D *diffFlowDetectorBias[2][2][4] = {{{NULL}}};
489d5531 18513 // differential flow estimates from Q-cumulants:
18514 TList *diffFlowHistList[2][2] = {{NULL}};
18515 TString diffFlowName = "fDiffFlow";
18516 diffFlowName += fAnalysisLabel->Data();
18517 TH1D *diffFlow[2][2][4] = {{{NULL}}};
18518 // differential covariances:
18519 TList *diffFlowCovariancesHistList[2][2] = {{NULL}};
18520 TString diffFlowCovariancesName = "fDiffFlowCovariances";
18521 diffFlowCovariancesName += fAnalysisLabel->Data();
18522 TH1D *diffFlowCovariances[2][2][5] = {{{NULL}}};
18523 for(Int_t t=0;t<2;t++) // type: RP or POI
18524 {
62e36168 18525 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18526 {
18527 // reduced correlations:
18528 diffFlowCorrelationsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18529 if(!diffFlowCorrelationsHistList[t][pe])
18530 {
18531 cout<<"WARNING: diffFlowCorrelationsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18532 cout<<"t = "<<t<<endl;
18533 cout<<"pe = "<<pe<<endl;
18534 exit(0);
18535 }
18536 for(Int_t index=0;index<4;index++)
18537 {
18538 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())));
18539 if(diffFlowCorrelationsHist[t][pe][index])
18540 {
18541 this->SetDiffFlowCorrelationsHist(diffFlowCorrelationsHist[t][pe][index],t,pe,index);
18542 } else
18543 {
18544 cout<<"WARNING: diffFlowCorrelationsHist[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18545 cout<<"t = "<<t<<endl;
18546 cout<<"pe = "<<pe<<endl;
18547 cout<<"index = "<<index<<endl;
18548 exit(0);
18549 }
18550 } // end of for(Int_t index=0;index<4;index++)
18551 // corrections:
18552 diffFlowCorrectionsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Histograms with correction terms for NUA (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18553 if(!diffFlowCorrectionsHistList[t][pe])
18554 {
18555 cout<<"WARNING: diffFlowCorrectionsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18556 cout<<"t = "<<t<<endl;
18557 cout<<"pe = "<<pe<<endl;
18558 exit(0);
18559 }
18560 // correction terms for NUA:
18561 for(Int_t sc=0;sc<2;sc++) // sin or cos
18562 {
18563 for(Int_t cti=0;cti<9;cti++) // correction term index
18564 {
18565 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)));
18566 if(diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti])
18567 {
18568 this->SetDiffFlowCorrectionTermsForNUAHist(diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti],t,pe,sc,cti);
18569 } else
18570 {
18571 cout<<"WARNING: diffFlowCorrectionTermsForNUAHist[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18572 cout<<"t = "<<t<<endl;
18573 cout<<"pe = "<<pe<<endl;
18574 cout<<"sc = "<<sc<<endl;
18575 cout<<"cti = "<<cti<<endl;
18576 }
18577 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
18578 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
18579 // ...
18580 // differential Q-cumulants:
18581 diffFlowCumulantsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Differential Q-cumulants (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18582 if(!diffFlowCumulantsHistList[t][pe])
18583 {
18584 cout<<"WARNING: diffFlowCumulantsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18585 cout<<"t = "<<t<<endl;
18586 cout<<"pe = "<<pe<<endl;
18587 exit(0);
18588 }
18589 for(Int_t index=0;index<4;index++)
18590 {
18591 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())));
18592 if(diffFlowCumulants[t][pe][index])
18593 {
18594 this->SetDiffFlowCumulants(diffFlowCumulants[t][pe][index],t,pe,index);
18595 } else
18596 {
18597 cout<<"WARNING: diffFlowCumulants[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18598 cout<<"t = "<<t<<endl;
18599 cout<<"pe = "<<pe<<endl;
18600 cout<<"index = "<<index<<endl;
18601 exit(0);
18602 }
18603 } // end of for(Int_t index=0;index<4;index++)
1268c371 18604 // Detector bias to differential Q-cumulants:
18605 diffFlowDetectorBiasHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Detector bias (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18606 if(!diffFlowDetectorBiasHistList[t][pe])
18607 {
18608 cout<<"WARNING: diffFlowDetectorBiasHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18609 cout<<"t = "<<t<<endl;
18610 cout<<"pe = "<<pe<<endl;
18611 exit(0);
18612 }
18613 for(Int_t index=0;index<4;index++)
18614 {
18615 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())));
18616 if(diffFlowDetectorBias[t][pe][index])
18617 {
18618 this->SetDiffFlowDetectorBias(diffFlowDetectorBias[t][pe][index],t,pe,index);
18619 } else
18620 {
18621 cout<<"WARNING: diffFlowDetectorBias[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18622 cout<<"t = "<<t<<endl;
18623 cout<<"pe = "<<pe<<endl;
18624 cout<<"index = "<<index<<endl;
18625 exit(0);
18626 }
18627 } // end of for(Int_t index=0;index<4;index++)
489d5531 18628 // differential flow estimates from Q-cumulants:
18629 diffFlowHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Differential flow (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18630 if(!diffFlowHistList[t][pe])
18631 {
18632 cout<<"WARNING: diffFlowHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18633 cout<<"t = "<<t<<endl;
18634 cout<<"pe = "<<pe<<endl;
18635 exit(0);
18636 }
18637 for(Int_t index=0;index<4;index++)
18638 {
18639 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())));
18640 if(diffFlow[t][pe][index])
18641 {
18642 this->SetDiffFlow(diffFlow[t][pe][index],t,pe,index);
18643 } else
18644 {
18645 cout<<"WARNING: diffFlow[t][pe][index] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18646 cout<<"t = "<<t<<endl;
18647 cout<<"pe = "<<pe<<endl;
18648 cout<<"index = "<<index<<endl;
18649 exit(0);
18650 }
18651 } // end of for(Int_t index=0;index<4;index++)
18652 // differential covariances:
18653 diffFlowCovariancesHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Covariances of correlations (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18654 if(!diffFlowCovariancesHistList[t][pe])
18655 {
18656 cout<<"WARNING: diffFlowCovariancesHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18657 cout<<"t = "<<t<<endl;
18658 cout<<"pe = "<<pe<<endl;
18659 exit(0);
18660 }
18661 for(Int_t covIndex=0;covIndex<5;covIndex++)
18662 {
18663 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())));
18664 if(diffFlowCovariances[t][pe][covIndex])
18665 {
18666 this->SetDiffFlowCovariances(diffFlowCovariances[t][pe][covIndex],t,pe,covIndex);
18667 } else
18668 {
18669 cout<<"WARNING: diffFlowCovariances[t][pe][covIndex] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18670 cout<<"t = "<<t<<endl;
18671 cout<<"pe = "<<pe<<endl;
18672 cout<<"covIndex = "<<covIndex<<endl;
18673 exit(0);
18674 }
18675 } // end of for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
18676 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18677 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18678 // sum of event weights for reduced correlations:
18679 TList *diffFlowSumOfEventWeightsHistList[2][2][2] = {{{NULL}}};
18680 TString diffFlowSumOfEventWeightsName = "fDiffFlowSumOfEventWeights";
18681 diffFlowSumOfEventWeightsName += fAnalysisLabel->Data();
18682 TH1D *diffFlowSumOfEventWeights[2][2][2][4] = {{{{NULL}}}};
18683 for(Int_t t=0;t<2;t++) // type is RP or POI
18684 {
62e36168 18685 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18686 {
18687 for(Int_t p=0;p<2;p++) // power of event weights is either 1 or 2
18688 {
18689 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())));
18690 if(!diffFlowSumOfEventWeightsHistList[t][pe][p])
18691 {
18692 cout<<"WARNING: diffFlowSumOfEventWeightsHistList[t][pe][p] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18693 cout<<"t = "<<t<<endl;
18694 cout<<"pe = "<<pe<<endl;
18695 cout<<"power = "<<p<<endl;
18696 exit(0);
18697 }
18698 for(Int_t ew=0;ew<4;ew++) // index of reduced correlation
18699 {
18700 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())));
18701 if(diffFlowSumOfEventWeights[t][pe][p][ew])
18702 {
18703 this->SetDiffFlowSumOfEventWeights(diffFlowSumOfEventWeights[t][pe][p][ew],t,pe,p,ew);
18704 } else
18705 {
18706 cout<<"WARNING: diffFlowSumOfEventWeights[t][pe][p][ew] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18707 cout<<"t = "<<t<<endl;
18708 cout<<"pe = "<<pe<<endl;
18709 cout<<"power = "<<p<<endl;
18710 cout<<"ew = "<<ew<<endl;
18711 exit(0);
18712 }
18713 }
18714 } // end of for(Int_t p=0;p<2;p++) // power of event weights is either 1 or 2
18715 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18716 } // end of for(Int_t t=0;t<2;t++) // type is RP or POI
18717 //
18718 TList *diffFlowSumOfProductOfEventWeightsHistList[2][2] = {{NULL}};
18719 TString diffFlowSumOfProductOfEventWeightsName = "fDiffFlowSumOfProductOfEventWeights";
18720 diffFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
18721 TH1D *diffFlowSumOfProductOfEventWeights[2][2][8][8] = {{{{NULL}}}};
18722 for(Int_t t=0;t<2;t++) // type is RP or POI
18723 {
62e36168 18724 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18725 {
18726 diffFlowSumOfProductOfEventWeightsHistList[t][pe] = dynamic_cast<TList*>(diffFlowListResults->FindObject(Form("Sum of products of event weights (%s, %s)",typeFlag[t].Data(),ptEtaFlag[pe].Data())));
18727 if(!diffFlowSumOfProductOfEventWeightsHistList[t][pe])
18728 {
18729 cout<<"WARNING: diffFlowSumOfProductOfEventWeightsHistList[t][pe] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18730 cout<<"t = "<<t<<endl;
18731 cout<<"pe = "<<pe<<endl;
18732 exit(0);
18733 }
18734 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18735 {
18736 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18737 {
18738 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())));
18739 if(diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2])
18740 {
18741 this->SetDiffFlowSumOfProductOfEventWeights(diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2],t,pe,mci1,mci2);
18742 } else
18743 {
18744 cout<<"WARNING: diffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
18745 cout<<"t = "<<t<<endl;
18746 cout<<"pe = "<<pe<<endl;
18747 cout<<"mci1 = "<<mci1<<endl;
18748 cout<<"mci2 = "<<mci2<<endl;
18749 exit(0);
18750 }
18751 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
18752 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
18753 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
18754 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18755 } // end of for(Int_t t=0;t<2;t++) // type is RP or POI
18756
18757} // end void AliFlowAnalysisWithQCumulants::GetPointersForDiffFlowHistograms()
18758
e1d101a6 18759//=======================================================================================================================
489d5531 18760
1268c371 18761void AliFlowAnalysisWithQCumulants::BookEverythingFor2DDifferentialFlow()
18762{
18763 // Book all objects needed for 2D differential flow.
18764 // a) Define flags locally (to be improved: should I promote flags to data members?);
18765 // b) Book e-b-e quantities;
18766 // c) Book 2D profiles;
18767 // d) Book 2D histograms.
18768
18769 if(!fCalculate2DDiffFlow){return;}
18770
18771 // a) Define flags locally (to be improved: should I promote flags to data members?):
18772 TString typeFlag[2] = {"RP","POI"};
18773 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
18774 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18775 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18776
18777 // b) Book e-b-e quantities:
18778 TProfile2D styleRe("typeMultiplePowerRe","typeMultiplePowerRe",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18779 TProfile2D styleIm("typeMultiplePowerIm","typeMultiplePowerIm",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18780 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18781 {
18782 for(Int_t m=0;m<4;m++)
18783 {
18784 for(Int_t k=0;k<9;k++)
18785 {
18786 fReRPQ2dEBE[t][m][k] = (TProfile2D*)styleRe.Clone(Form("typeFlag%dmultiple%dpower%dRe",t,m,k));
18787 fImRPQ2dEBE[t][m][k] = (TProfile2D*)styleIm.Clone(Form("typeFlag%dmultiple%dpower%dIm",t,m,k));
18788 }
18789 }
18790 }
18791 TProfile2D styleS("typePower","typePower",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
18792 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18793 {
18794 for(Int_t k=0;k<9;k++)
18795 {
18796 fs2dEBE[t][k] = (TProfile2D*)styleS.Clone(Form("typeFlag%dpower%d",t,k));
18797 }
18798 }
18799
18800 // c) Book 2D profiles:
18801 TString s2DDiffFlowCorrelationsProName = "f2DDiffFlowCorrelationsPro";
18802 s2DDiffFlowCorrelationsProName += fAnalysisLabel->Data();
18803 for(Int_t t=0;t<2;t++) // type: RP or POI
18804 {
18805 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18806 {
18807 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,"");
18808 f2DDiffFlowCorrelationsPro[t][rci]->Sumw2();
18809 f2DDiffFlowCorrelationsPro[t][rci]->SetXTitle("p_{t}");
18810 f2DDiffFlowCorrelationsPro[t][rci]->SetYTitle("#eta");
18811 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlowCorrelationsPro[t][rci]);
18812 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18813 } // end of for(Int_t t=0;t<2;t++) // type: RP or POIs
18814
18815 // d) Book 2D histograms:
18816 TString s2DDiffFlowCumulantsName = "f2DDiffFlowCumulants";
18817 s2DDiffFlowCumulantsName += fAnalysisLabel->Data();
18818 TString s2DDiffFlowName = "f2DDiffFlow";
18819 s2DDiffFlowName += fAnalysisLabel->Data();
18820 for(Int_t t=0;t<2;t++) // type: RP or POI
18821 {
18822 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18823 {
18824 // 2D diferential cumulants:
18825 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);
18826 f2DDiffFlowCumulants[t][rci]->SetXTitle("p_{t}");
18827 f2DDiffFlowCumulants[t][rci]->SetYTitle("#eta");
18828 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlowCumulants[t][rci]); // to be improved - moved to another list
18829 // 2D differential flow:
18830 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);
18831 f2DDiffFlow[t][rci]->SetXTitle("p_{t}");
18832 f2DDiffFlow[t][rci]->SetYTitle("#eta");
18833 f2DDiffFlowCorrelationsProList[t]->Add(f2DDiffFlow[t][rci]); // to be improved - moved to another list
18834 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18835 } // end of for(Int_t t=0;t<2;t++) // type: RP or POIs
18836
18837} // void AliFlowAnalysisWithQCumulants::BookEverythingFor2DDifferentialFlow()
18838
e1d101a6 18839//=======================================================================================================================
489d5531 18840
18841void AliFlowAnalysisWithQCumulants::BookEverythingForDifferentialFlow()
18842{
18843 // Book all histograms and profiles needed for differential flow.
1268c371 18844 // a) Book profile to hold all flags for differential flow;
18845 // b) Define flags locally (to be improved: should I promote flags to data members?);
489d5531 18846 // c) Book e-b-e quantities;
18847 // d) Book profiles;
18848 // e) Book histograms holding final results.
18849
1268c371 18850 // a) Book profile to hold all flags for differential flow:
18851 TString diffFlowFlagsName = "fDiffFlowFlags";
18852 diffFlowFlagsName += fAnalysisLabel->Data();
62e36168 18853 fDiffFlowFlags = new TProfile(diffFlowFlagsName.Data(),"Flags for differential flow",6,0,6);
1268c371 18854 fDiffFlowFlags->SetTickLength(-0.01,"Y");
18855 fDiffFlowFlags->SetMarkerStyle(25);
18856 fDiffFlowFlags->SetLabelSize(0.04,"X");
18857 fDiffFlowFlags->SetLabelOffset(0.02,"Y");
e1d101a6 18858 fDiffFlowFlags->SetStats(kFALSE);
1268c371 18859 fDiffFlowFlags->GetXaxis()->SetBinLabel(1,"Calculate diff. flow");
18860 fDiffFlowFlags->GetXaxis()->SetBinLabel(2,"Particle weights");
18861 fDiffFlowFlags->GetXaxis()->SetBinLabel(3,"Event weights");
18862 fDiffFlowFlags->GetXaxis()->SetBinLabel(4,"Correct for NUA");
18863 fDiffFlowFlags->GetXaxis()->SetBinLabel(5,"Calculate 2D diff. flow");
62e36168 18864 fDiffFlowFlags->GetXaxis()->SetBinLabel(6,"Calculate diff. flow vs eta");
1268c371 18865 fDiffFlowList->Add(fDiffFlowFlags);
18866
18867 if(!fCalculateDiffFlow){return;}
18868
18869 // b) Define flags locally (to be improved: should I promote flags to data members?):
489d5531 18870 TString typeFlag[2] = {"RP","POI"};
18871 TString ptEtaFlag[2] = {"p_{T}","#eta"};
18872 TString powerFlag[2] = {"linear","quadratic"};
18873 TString sinCosFlag[2] = {"sin","cos"};
18874 TString differentialCumulantIndex[4] = {"QC{2'}","QC{4'}","QC{6'}","QC{8'}"};
18875 TString differentialFlowIndex[4] = {"v'{2}","v'{4}","v'{6}","v'{8}"};
18876 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"};
b40a910e 18877 TString reducedSquaredCorrelationIndex[4] = {"<2'>^{2}","<4'>^{2}","<6'>^{2}","<8'>^{2}"};
489d5531 18878 TString mixedCorrelationIndex[8] = {"<2>","<2'>","<4>","<4'>","<6>","<6'>","<8>","<8'>"};
18879 TString covarianceName[5] = {"Cov(<2>,<2'>)","Cov(<2>,<4'>)","Cov(<4>,<2'>)","Cov(<4>,<4'>)","Cov(<2'>,<4'>)"};
18880 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
18881 Double_t minPtEta[2] = {fPtMin,fEtaMin};
18882 Double_t maxPtEta[2] = {fPtMax,fEtaMax};
1268c371 18883
489d5531 18884 // c) Book e-b-e quantities:
18885 // Event-by-event r_{m*n,k}(pt,eta), p_{m*n,k}(pt,eta) and q_{m*n,k}(pt,eta)
18886 // Explanantion of notation:
18887 // 1.) n is harmonic, m is multiple of harmonic;
18888 // 2.) k is power of particle weight;
18889 // 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);
18890 // 4.) p_{m*n,k}(pt,eta) = Q-vector evaluated in harmonic m*n for POIs in particular (pt,eta) bin
18891 // (if i-th POI is also RP, than it is weighted with w_i^k);
18892 // 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
18893 // (i-th RP&&POI is weighted with w_i^k)
18894
18895 // 1D:
18896 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP && POI )
18897 {
62e36168 18898 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18899 {
18900 for(Int_t m=0;m<4;m++) // multiple of harmonic
18901 {
18902 for(Int_t k=0;k<9;k++) // power of particle weight
18903 {
18904 fReRPQ1dEBE[t][pe][m][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%dpower%dRe",t,pe,m,k),
18905 Form("TypeFlag%dpteta%dmultiple%dpower%dRe",t,pe,m,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18906 fImRPQ1dEBE[t][pe][m][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%dpower%dIm",t,pe,m,k),
18907 Form("TypeFlag%dpteta%dmultiple%dpower%dIm",t,pe,m,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18908 }
18909 }
18910 }
18911 }
18912 // to be improved (add explanation of fs1dEBE[t][pe][k]):
18913 for(Int_t t=0;t<3;t++) // typeFlag (0 = RP, 1 = POI, 2 = RP&&POI )
18914 {
62e36168 18915 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18916 {
18917 for(Int_t k=0;k<9;k++) // power of particle weight
18918 {
18919 fs1dEBE[t][pe][k] = new TProfile(Form("TypeFlag%dpteta%dmultiple%d",t,pe,k),
18920 Form("TypeFlag%dpteta%dmultiple%d",t,pe,k),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18921 }
18922 }
18923 }
18924 // correction terms for nua:
18925 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
18926 {
62e36168 18927 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18928 {
18929 for(Int_t sc=0;sc<2;sc++) // sin or cos
18930 {
18931 for(Int_t cti=0;cti<9;cti++) // correction term index
18932 {
18933 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti] = new TH1D(Form("typeFlag%d pteta%d sincos%d cti%d",t,pe,sc,cti),
18934 Form("typeFlag%d pteta%d sincos%d cti%d",t,pe,sc,cti),nBinsPtEta[pe],minPtEta[pe],maxPtEta[pe]);
18935 }
18936 }
18937 }
18938 }
489d5531 18939 // reduced correlations e-b-e:
18940 TString diffFlowCorrelationsEBEName = "fDiffFlowCorrelationsEBE";
18941 diffFlowCorrelationsEBEName += fAnalysisLabel->Data();
18942 for(Int_t t=0;t<2;t++) // type: RP or POI
18943 {
62e36168 18944 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18945 {
18946 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18947 {
18948 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]);
18949 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18950 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18951 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18952 // event weights for reduced correlations e-b-e:
18953 TString diffFlowEventWeightsForCorrelationsEBEName = "fDiffFlowEventWeightsForCorrelationsEBE";
18954 diffFlowEventWeightsForCorrelationsEBEName += fAnalysisLabel->Data();
18955 for(Int_t t=0;t<2;t++) // type: RP or POI
18956 {
62e36168 18957 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18958 {
18959 for(Int_t rci=0;rci<4;rci++) // event weight for reduced correlation index
18960 {
18961 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]);
18962 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
18963 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18964 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
18965
18966 // d) Book profiles;
18967 // reduced correlations:
18968 TString diffFlowCorrelationsProName = "fDiffFlowCorrelationsPro";
18969 diffFlowCorrelationsProName += fAnalysisLabel->Data();
b40a910e 18970 // reduced squared correlations:
18971 TString diffFlowSquaredCorrelationsProName = "fDiffFlowSquaredCorrelationsPro";
18972 diffFlowSquaredCorrelationsProName += fAnalysisLabel->Data();
489d5531 18973 // corrections terms:
18974 TString diffFlowCorrectionTermsForNUAProName = "fDiffFlowCorrectionTermsForNUAPro";
18975 diffFlowCorrectionTermsForNUAProName += fAnalysisLabel->Data();
b40a910e 18976 // reduced correlations:
489d5531 18977 for(Int_t t=0;t<2;t++) // type: RP or POI
18978 {
62e36168 18979 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 18980 {
18981 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18982 {
489d5531 18983 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 18984 fDiffFlowCorrelationsPro[t][pe][rci]->Sumw2();
489d5531 18985 fDiffFlowCorrelationsPro[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
18986 fDiffFlowCorrelationsProList[t][pe]->Add(fDiffFlowCorrelationsPro[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
18987 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
18988 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
18989 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
b40a910e 18990 // reduced squared correlations:
18991 for(Int_t t=0;t<2;t++) // type: RP or POI
18992 {
62e36168 18993 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
b40a910e 18994 {
18995 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
18996 {
18997 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");
18998 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->Sumw2();
18999 fDiffFlowSquaredCorrelationsPro[t][pe][rci]->SetXTitle(ptEtaFlag[pe].Data());
19000 fDiffFlowCorrelationsProList[t][pe]->Add(fDiffFlowSquaredCorrelationsPro[t][pe][rci]); // to be improved (add dedicated list to hold reduced correlations)
19001 } // end of for(Int_t rci=0;rci<4;rci++) // correlation index
19002 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
19003 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
489d5531 19004 // correction terms for nua:
19005 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19006 {
62e36168 19007 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19008 {
19009 for(Int_t sc=0;sc<2;sc++) // sin or cos
19010 {
19011 for(Int_t cti=0;cti<9;cti++) // correction term index
19012 {
19013 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]);
19014 fDiffFlowCorrectionsProList[t][pe]->Add(fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]);
19015 }
19016 }
19017 }
19018 }
64e500e3 19019 // Other differential correlators:
19020 TString otherDiffCorrelatorsName = "fOtherDiffCorrelators";
19021 otherDiffCorrelatorsName += fAnalysisLabel->Data();
19022 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19023 {
62e36168 19024 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
64e500e3 19025 {
19026 for(Int_t sc=0;sc<2;sc++) // sin or cos
19027 {
19028 for(Int_t ci=0;ci<1;ci++) // correlator index
19029 {
19030 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]);
19031 fOtherDiffCorrelators[t][pe][sc][ci]->Sumw2();
19032 fOtherDiffCorrelatorsList->Add(fOtherDiffCorrelators[t][pe][sc][ci]);
19033 }
19034 }
19035 }
19036 }
489d5531 19037 // e) Book histograms holding final results.
19038 // reduced correlations:
19039 TString diffFlowCorrelationsHistName = "fDiffFlowCorrelationsHist";
19040 diffFlowCorrelationsHistName += fAnalysisLabel->Data();
19041 // corrections terms:
19042 TString diffFlowCorrectionTermsForNUAHistName = "fDiffFlowCorrectionTermsForNUAHist";
19043 diffFlowCorrectionTermsForNUAHistName += fAnalysisLabel->Data();
19044 // differential covariances:
19045 TString diffFlowCovariancesName = "fDiffFlowCovariances";
19046 diffFlowCovariancesName += fAnalysisLabel->Data();
19047 // differential Q-cumulants:
19048 TString diffFlowCumulantsName = "fDiffFlowCumulants";
19049 diffFlowCumulantsName += fAnalysisLabel->Data();
1268c371 19050 // Detector bias to differential Q-cumulants:
19051 TString diffFlowDetectorBiasName = "fDiffFlowDetectorBias";
19052 diffFlowDetectorBiasName += fAnalysisLabel->Data();
489d5531 19053 // differential flow:
19054 TString diffFlowName = "fDiffFlow";
19055 diffFlowName += fAnalysisLabel->Data();
19056 for(Int_t t=0;t<2;t++) // type: RP or POI
19057 {
62e36168 19058 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19059 {
19060 for(Int_t index=0;index<4;index++)
19061 {
19062 // reduced correlations:
19063 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]);
19064 fDiffFlowCorrelationsHist[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19065 fDiffFlowCorrelationsHistList[t][pe]->Add(fDiffFlowCorrelationsHist[t][pe][index]);
19066 // differential Q-cumulants:
19067 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]);
19068 fDiffFlowCumulants[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19069 fDiffFlowCumulantsHistList[t][pe]->Add(fDiffFlowCumulants[t][pe][index]);
1268c371 19070 // Detector bias to differential Q-cumulants:
19071 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]);
19072 fDiffFlowDetectorBias[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19073 fDiffFlowDetectorBias[t][pe][index]->SetTitle(Form("#frac{corrected}{measured} %s",differentialCumulantIndex[index].Data()));
19074 fDiffFlowDetectorBiasHistList[t][pe]->Add(fDiffFlowDetectorBias[t][pe][index]);
489d5531 19075 // differential flow estimates from Q-cumulants:
19076 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]);
19077 fDiffFlow[t][pe][index]->SetXTitle(ptEtaFlag[pe].Data());
19078 fDiffFlowHistList[t][pe]->Add(fDiffFlow[t][pe][index]);
19079 } // end of for(Int_t index=0;index<4;index++)
19080 for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
19081 {
19082 // differential covariances:
19083 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]);
19084 fDiffFlowCovariances[t][pe][covIndex]->SetXTitle(ptEtaFlag[pe].Data());
19085 fDiffFlowCovariancesHistList[t][pe]->Add(fDiffFlowCovariances[t][pe][covIndex]);
19086 } // end of for(Int_t covIndex=0;covIndex<5;covIndex++) // covariance index
19087 // products of both types of correlations:
19088 TString diffFlowProductOfCorrelationsProName = "fDiffFlowProductOfCorrelationsPro";
19089 diffFlowProductOfCorrelationsProName += fAnalysisLabel->Data();
19090 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19091 {
19092 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19093 {
19094 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]);
19095 fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2]->SetXTitle(ptEtaFlag[pe].Data());
19096 fDiffFlowProductOfCorrelationsProList[t][pe]->Add(fDiffFlowProductOfCorrelationsPro[t][pe][mci1][mci2]);
19097 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
19098 } // end of for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19099 } // end of for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19100 } // end of for(Int_t pe=0;pe<2;pe++) // pt or eta
19101 } // end of for(Int_t t=0;t<2;t++) // type: RP or POI
19102 // sums of event weights for reduced correlations:
19103 TString diffFlowSumOfEventWeightsName = "fDiffFlowSumOfEventWeights";
19104 diffFlowSumOfEventWeightsName += fAnalysisLabel->Data();
19105 for(Int_t t=0;t<2;t++) // type is RP or POI
19106 {
62e36168 19107 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19108 {
19109 for(Int_t p=0;p<2;p++) // power of weights is either 1 or 2
19110 {
19111 for(Int_t ew=0;ew<4;ew++) // index of reduced correlation
19112 {
19113 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]);
19114 fDiffFlowSumOfEventWeights[t][pe][p][ew]->SetXTitle(ptEtaFlag[pe].Data());
19115 fDiffFlowSumOfEventWeightsHistList[t][pe][p]->Add(fDiffFlowSumOfEventWeights[t][pe][p][ew]); // to be improved (add dedicated list to hold all this)
19116 }
19117 }
19118 }
19119 }
19120 // sum of products of event weights for both types of correlations:
19121 TString diffFlowSumOfProductOfEventWeightsName = "fDiffFlowSumOfProductOfEventWeights";
19122 diffFlowSumOfProductOfEventWeightsName += fAnalysisLabel->Data();
19123 for(Int_t t=0;t<2;t++) // type is RP or POI
19124 {
62e36168 19125 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19126 {
19127 for(Int_t mci1=0;mci1<8;mci1++) // mixed correlation index
19128 {
19129 for(Int_t mci2=mci1+1;mci2<8;mci2++) // mixed correlation index
19130 {
19131 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]);
19132 fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2]->SetXTitle(ptEtaFlag[pe].Data());
19133 fDiffFlowSumOfProductOfEventWeightsHistList[t][pe]->Add(fDiffFlowSumOfProductOfEventWeights[t][pe][mci1][mci2]);
19134 if(mci1%2 == 0) mci2++; // products which DO NOT include reduced correlations are not stored here
19135 }
19136 }
19137 }
19138 }
19139 // correction terms for nua:
19140 for(Int_t t=0;t<2;t++) // typeFlag (0 = RP, 1 = POI)
19141 {
62e36168 19142 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 19143 {
19144 for(Int_t sc=0;sc<2;sc++) // sin or cos
19145 {
19146 for(Int_t cti=0;cti<9;cti++) // correction term index
19147 {
19148 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]);
19149 fDiffFlowCorrectionsHistList[t][pe]->Add(fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti]);
19150 }
19151 }
19152 }
19153 }
19154
19155} // end of AliFlowAnalysisWithQCumulants::BookEverythingForDifferentialFlow()
19156
e1d101a6 19157//=======================================================================================================================
489d5531 19158
489d5531 19159void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow()
19160{
19161 // Calculate generalized Q-cumulants (cumulants corrected for non-unifom acceptance).
19162
b92ea2b9 19163 // Isotropic cumulants:
53884472 19164 Double_t QC2 = fIntFlowQcumulants->GetBinContent(1);
19165 Double_t QC2Error = fIntFlowQcumulants->GetBinError(1);
19166 Double_t QC4 = fIntFlowQcumulants->GetBinContent(2);
19167 Double_t QC4Error = fIntFlowQcumulants->GetBinError(2);
19168 //Double_t QC6 = fIntFlowQcumulants->GetBinContent(3);
19169 //Double_t QC6Error = fIntFlowQcumulants->GetBinError(3);
19170 //Double_t QC8 = fIntFlowQcumulants->GetBinContent(4);
19171 //Double_t QC8Error = fIntFlowQcumulants->GetBinError(4);
b92ea2b9 19172
19173 // Measured 2-, 4-, 6- and 8-particle correlations:
489d5531 19174 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
b92ea2b9 19175 Double_t twoError = fIntFlowCorrelationsHist->GetBinError(1); // statistical error of <<2>>
489d5531 19176 Double_t four = fIntFlowCorrelationsHist->GetBinContent(2); // <<4>>
b92ea2b9 19177 Double_t fourError = fIntFlowCorrelationsHist->GetBinError(2); // statistical error of <<4>>
489d5531 19178 //Double_t six = fIntFlowCorrelationsHist->GetBinContent(3); // <<6>>
489d5531 19179 //Double_t sixError = fIntFlowCorrelationsHist->GetBinError(3); // statistical error of <<6>>
b92ea2b9 19180 //Double_t eight = fIntFlowCorrelationsHist->GetBinContent(4); // <<8>>
489d5531 19181 //Double_t eightError = fIntFlowCorrelationsHist->GetBinError(4); // statistical error of <<8>>
b92ea2b9 19182
19183 // Non-isotropic terms:
19184 Double_t c1 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(1); // <<cos(n*phi1)>>
19185 Double_t c1Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(1); // statistical error of <<cos(n*phi1)>>
19186 Double_t c2 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(2); // <<cos(n*(phi1+phi2))>>
19187 Double_t c2Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(2); // statistical error of <<cos(n*(phi1+phi2))>>
19188 Double_t c3 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(3); // <<cos(n*(phi1-phi2-phi3))>>
19189 Double_t c3Error = fIntFlowCorrectionTermsForNUAHist[1]->GetBinError(3); // statistical error of <<cos(n*(phi1-phi2-phi3))>>
19190 Double_t s1 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(1); // <<sin(n*phi1)>>
19191 Double_t s1Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(1); // statistical error of <<sin(n*phi1)>>
19192 Double_t s2 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(2); // <<sin(n*(phi1+phi2))>>
19193 Double_t s2Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(2); // statistical error of <<sin(n*(phi1+phi2))>>
19194 Double_t s3 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(3); // <<sin(n*(phi1-phi2-phi3))>>
19195 Double_t s3Error = fIntFlowCorrectionTermsForNUAHist[0]->GetBinError(3); // statistical error of <<sin(n*(phi1-phi2-phi3))>>
19196
19197 // Shortcuts:
19198 Double_t a1 = 2.*pow(c1,2.)+2.*pow(s1,2.)-two;
19199 Double_t a2 = 6.*pow(c1,3.)-2.*c1*c2+c3+6.*c1*pow(s1,2.)-2.*s1*s2-4.*c1*two;
19200 Double_t a3 = 2.*pow(s1,2.)-2.*pow(c1,2.)+c2;
19201 Double_t a4 = 6.*pow(s1,3.)+6.*pow(c1,2.)*s1+2.*c2*s1-2.*c1*s2-s3-4.*s1*two;
19202 Double_t a5 = 4.*c1*s1-s2;
19203
19204 // Covariances (including weight dependent prefactor):
8e1cefdd 19205 Double_t wCov1 = 0.; // w*Cov(<2>,<cos(phi))
19206 Double_t wCov2 = 0.; // w*Cov(<2>,<sin(phi))
19207 Double_t wCov3 = 0.; // w*Cov(<cos(phi),<sin(phi))
19208 Double_t wCov4 = 0.; // w*Cov(<2>,<4>)
19209 Double_t wCov5 = 0.; // w*Cov(<2>,<cos(#phi_{1}+#phi_{2})>)
19210 Double_t wCov6 = 0.; // w*Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19211 Double_t wCov7 = 0.; // w*Cov(<2>,<sin(#phi_{1}+#phi_{2})>)
19212 Double_t wCov8 = 0.; // w*Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19213 Double_t wCov9 = 0.; // w*Cov(<4>,<cos(#phi)>
19214 Double_t wCov10 = 0.; // w*Cov(<4>,<cos(#phi_{1}+#phi_{2})>)
19215 Double_t wCov11 = 0.; // w*Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19216 Double_t wCov12 = 0.; // w*Cov(<4>,<sin(#phi)>
19217 Double_t wCov13 = 0.; // w*Cov(<4>,<sin(#phi_{1}+#phi_{2})>)
19218 Double_t wCov14 = 0.; // w*Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19219 Double_t wCov15 = 0.; // w*Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19220 Double_t wCov16 = 0.; // w*Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19221 Double_t wCov17 = 0.; // w*Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19222 Double_t wCov18 = 0.; // w*Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19223 Double_t wCov19 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19224 Double_t wCov20 = 0.; // w*Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19225 Double_t wCov21 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)
19226 Double_t wCov22 = 0.; // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19227 Double_t wCov23 = 0.; // w*Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19228 Double_t wCov24 = 0.; // w*Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19229 Double_t wCov25 = 0.; // w*Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)
19230 Double_t wCov26 = 0.; // w*Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19231 Double_t wCov27 = 0.; // w*Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19232 Double_t wCov28 = 0.; // w*Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19233 if(!fForgetAboutCovariances)
19234 {
19235 wCov1 = fIntFlowCovariancesNUA->GetBinContent(1); // w*Cov(<2>,<cos(phi))
19236 wCov2 = fIntFlowCovariancesNUA->GetBinContent(2); // w*Cov(<2>,<sin(phi))
19237 wCov3 = fIntFlowCovariancesNUA->GetBinContent(3); // w*Cov(<cos(phi),<sin(phi))
19238 wCov4 = fIntFlowCovariances->GetBinContent(1); // w*Cov(<2>,<4>)
19239 wCov5 = fIntFlowCovariancesNUA->GetBinContent(4); // w*Cov(<2>,<cos(#phi_{1}+#phi_{2})>)
19240 wCov6 = fIntFlowCovariancesNUA->GetBinContent(6); // w*Cov(<2>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19241 wCov7 = fIntFlowCovariancesNUA->GetBinContent(5); // w*Cov(<2>,<sin(#phi_{1}+#phi_{2})>)
19242 wCov8 = fIntFlowCovariancesNUA->GetBinContent(7); // w*Cov(<2>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19243 wCov9 = fIntFlowCovariancesNUA->GetBinContent(8); // w*Cov(<4>,<cos(#phi)>
19244 wCov10 = fIntFlowCovariancesNUA->GetBinContent(10); // w*Cov(<4>,<cos(#phi_{1}+#phi_{2})>)
19245 wCov11 = fIntFlowCovariancesNUA->GetBinContent(12); // w*Cov(<4>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19246 wCov12 = fIntFlowCovariancesNUA->GetBinContent(9); // w*Cov(<4>,<sin(#phi)>
19247 wCov13 = fIntFlowCovariancesNUA->GetBinContent(11); // w*Cov(<4>,<sin(#phi_{1}+#phi_{2})>)
19248 wCov14 = fIntFlowCovariancesNUA->GetBinContent(13); // w*Cov(<4>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19249 wCov15 = fIntFlowCovariancesNUA->GetBinContent(14); // w*Cov(<cos(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19250 wCov16 = fIntFlowCovariancesNUA->GetBinContent(16); // w*Cov(<cos(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19251 wCov17 = fIntFlowCovariancesNUA->GetBinContent(15); // w*Cov(<cos(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19252 wCov18 = fIntFlowCovariancesNUA->GetBinContent(17); // w*Cov(<cos(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19253 wCov19 = fIntFlowCovariancesNUA->GetBinContent(23); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19254 wCov20 = fIntFlowCovariancesNUA->GetBinContent(18); // w*Cov(<sin(#phi)>,<cos(#phi_{1}+#phi_{2})>)
19255 wCov21 = fIntFlowCovariancesNUA->GetBinContent(22); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}+#phi_{2})>)
19256 wCov22 = fIntFlowCovariancesNUA->GetBinContent(24); // w*Cov(<cos(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19257 wCov23 = fIntFlowCovariancesNUA->GetBinContent(20); // w*Cov(<sin(#phi)>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19258 wCov24 = fIntFlowCovariancesNUA->GetBinContent(25); // w*Cov(<sin(#phi_{1}+#phi_{2})>,<cos(#phi_{1}-#phi_{2}-#phi_{3})>)
19259 wCov25 = fIntFlowCovariancesNUA->GetBinContent(27); // w*Cov(<cos(#phi_{1}-#phi_{2}-#phi_{3}>,<sin(#phi_{1}-#phi_{2}-#phi_{3}>)
19260 wCov26 = fIntFlowCovariancesNUA->GetBinContent(19); // w*Cov(<sin(#phi)>,<sin(#phi_{1}+#phi_{2})>)
19261 wCov27 = fIntFlowCovariancesNUA->GetBinContent(21); // w*Cov(<sin(#phi)>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19262 wCov28 = fIntFlowCovariancesNUA->GetBinContent(26); // w*Cov(<sin(#phi_{1}+#phi_{2})>,<sin(#phi_{1}-#phi_{2}-#phi_{3})>)
19263 } // end of if(!fForgetAboutCovariances)
19264
b92ea2b9 19265 // Calculating generalized QC{2}:
19266 // Generalized QC{2}:
19267 Double_t gQC2 = two - pow(c1,2.) - pow(s1,2.);
19268 if(fApplyCorrectionForNUA){fIntFlowQcumulants->SetBinContent(1,gQC2);}
19269 // Statistical error of generalized QC{2}:
19270 Double_t gQC2ErrorSquared = pow(twoError,2.)+4.*pow(c1,2.)*pow(c1Error,2.)
19271 + 4.*pow(s1,2.)*pow(s1Error,2.)
19272 - 4*c1*wCov1-4*s1*wCov2
19273 + 8.*c1*s1*wCov3;
19274 // Store ratio of error squared - with/without NUA terms:
19275 Double_t ratioErrorSquaredQC2 = 0.;
19276 if(fIntFlowQcumulants->GetBinError(1)>0.)
19277 {
19278 ratioErrorSquaredQC2 = (gQC2ErrorSquared/pow(fIntFlowQcumulants->GetBinError(1),2.));
19279 fIntFlowQcumulantsErrorSquaredRatio->SetBinContent(1,ratioErrorSquaredQC2);
19280 }
19281 // If enabled, store error by including non-isotropic terms:
b77b6434 19282 if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19283 {
19284 if(gQC2ErrorSquared>=0.)
19285 {
19286 fIntFlowQcumulants->SetBinError(1,pow(gQC2ErrorSquared,0.5));
19287 } else
19288 {
19289 fIntFlowQcumulants->SetBinError(1,0.);
19290 cout<<endl;
19291 cout<<" WARNING (QC): Statistical error of generalized QC{2} is imaginary !!!!"<<endl;
19292 cout<<endl;
19293 }
b77b6434 19294 } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19295 // Quantify detector bias to QC{2}:
53884472 19296 if(TMath::Abs(QC2)>0.)
b92ea2b9 19297 {
53884472 19298 fIntFlowDetectorBias->SetBinContent(1,gQC2/QC2);
19299 if(QC2Error>0.)
b92ea2b9 19300 {
53884472 19301 Double_t errorSquared = gQC2ErrorSquared/pow(QC2,2.)+pow(gQC2,2.)*pow(QC2Error,2.)/pow(QC2,4.);
b92ea2b9 19302 if(errorSquared>0.)
19303 {
19304 fIntFlowDetectorBias->SetBinError(1,pow(errorSquared,0.5));
19305 }
19306 }
53884472 19307 } // end of if(TMath::Abs(QC2)>0.)
b92ea2b9 19308
19309 // Calculating generalized QC{4}:
19310 // Generalized QC{4}:
19311 Double_t gQC4 = four-2.*pow(two,2.)
19312 - 4.*c1*c3+4.*s1*s3-pow(c2,2.)-pow(s2,2.)
19313 + 4.*c2*(pow(c1,2.)-pow(s1,2.))+8.*s2*s1*c1
19314 + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.);
19315 if(fApplyCorrectionForNUA){fIntFlowQcumulants->SetBinContent(2,gQC4);}
19316 // Statistical error of generalized QC{4}:
19317 Double_t gQC4ErrorSquared = 16.*pow(a1,2.)*pow(twoError,2.)+pow(fourError,2.)+16.*pow(a2,2.)*pow(c1Error,2.)
19318 + 4.*pow(a3,2.)*pow(c2Error,2.)+16.*pow(c1,2.)*pow(c3Error,2.)
19319 + 16.*pow(a4,2.)*pow(s1Error,2.)+4.*pow(a5,2.)*pow(s2Error,2.)
19320 + 16.*pow(s1,2.)*pow(s3Error,2.)+8.*a1*wCov4-32.*a1*a2*wCov1
19321 - 16.*a3*a1*wCov5-32.*c1*a1*wCov6-32.*a1*a4*wCov2+16.*a5*a1*wCov7
19322 + 32.*s1*a1*wCov8-8.*a2*wCov9-4.*a3*wCov10-8.*c1*wCov11-8.*a4*wCov12
19323 + 4.*a5*wCov13+8.*s1*wCov14+16.*a3*a2*wCov15+32.*c1*a2*wCov16+32.*a2*a4*wCov3
19324 - 16.*a5*a2*wCov17-32.*s1*a2*wCov18+16.*c1*a3*wCov19+16.*a3*a4*wCov20
19325 - 8.*a3*a5*wCov21-16.*s1*a3*wCov22+32.*c1*a4*wCov23-16.*c1*a5*wCov24
19326 - 32.*c1*s1*wCov25-16.*a5*a4*wCov26-32.*s1*a4*wCov27+16.*s1*a5*wCov28;
19327 // Store ratio of error squared - with/without NUA terms:
19328 Double_t ratioErrorSquaredQC4 = 0.;
19329 if(fIntFlowQcumulants->GetBinError(2)>0.)
19330 {
19331 ratioErrorSquaredQC4 = (gQC4ErrorSquared/pow(fIntFlowQcumulants->GetBinError(2),2.));
19332 fIntFlowQcumulantsErrorSquaredRatio->SetBinContent(2,ratioErrorSquaredQC4);
19333 }
b77b6434 19334 if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19335 {
19336 if(gQC4ErrorSquared>=0.)
19337 {
19338 fIntFlowQcumulants->SetBinError(2,pow(gQC4ErrorSquared,0.5));
19339 } else
19340 {
19341 fIntFlowQcumulants->SetBinError(2,0.);
19342 cout<<endl;
19343 cout<<" WARNING (QC): Statistical error of generalized QC{4} is imaginary !!!!"<<endl;
19344 cout<<endl;
19345 }
b77b6434 19346 } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT)
b92ea2b9 19347 // Quantify detector bias to QC{4}:
53884472 19348 if(TMath::Abs(QC4)>0.)
b92ea2b9 19349 {
53884472 19350 fIntFlowDetectorBias->SetBinContent(2,gQC4/QC4);
19351 if(QC4Error>0.)
b92ea2b9 19352 {
53884472 19353 Double_t errorSquared = gQC4ErrorSquared/pow(QC4,2.)+pow(gQC4,2.)*pow(QC4Error,2.)/pow(QC4,4.);
b92ea2b9 19354 if(errorSquared>0.)
19355 {
19356 fIntFlowDetectorBias->SetBinError(2,pow(errorSquared,0.5));
19357 }
19358 }
53884472 19359 } // end of if(TMath::Abs(QC4)>0.)
489d5531 19360
b92ea2b9 19361
19362 // .... to be improved (continued for 6th and 8th order) ....
19363
19364
2001bc3a 19365 // versus multiplicity:
b77b6434 19366 if(fCalculateCumulantsVsM) // to be improved - propagate error for nua terms vs M
2001bc3a 19367 {
19368 Int_t nBins = fIntFlowCorrelationsVsMPro[0]->GetNbinsX(); // to be improved (hardwired 0)
b77b6434 19369 Double_t value[4] = {0.}; // QCs vs M
19370 Double_t error[4] = {0.}; // error of QCs vs M
19371 Double_t dSum1[4] = {0.}; // sum value_i/(error_i)^2
19372 Double_t dSum2[4] = {0.}; // sum 1/(error_i)^2
2001bc3a 19373 for(Int_t b=1;b<=nBins;b++)
19374 {
b92ea2b9 19375 // Measured correlations:
2001bc3a 19376 two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>> vs M
19377 four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>> vs M
b92ea2b9 19378 // Isotropic cumulants:
53884472 19379 QC2 = two;
19380 QC4 = four-2.*pow(two,2.);
b92ea2b9 19381 // Non-isotropic terms:
19382 c1 = fIntFlowCorrectionTermsForNUAVsMPro[1][0]->GetBinContent(b); // <<cos(n*phi1)>>
19383 c2 = fIntFlowCorrectionTermsForNUAVsMPro[1][1]->GetBinContent(b); // <<cos(n*(phi1+phi2))>>
19384 c3 = fIntFlowCorrectionTermsForNUAVsMPro[1][2]->GetBinContent(b); // <<cos(n*(phi1-phi2-phi3))>>
19385 s1 = fIntFlowCorrectionTermsForNUAVsMPro[0][0]->GetBinContent(b); // <<sin(n*phi1)>>
19386 s2 = fIntFlowCorrectionTermsForNUAVsMPro[0][1]->GetBinContent(b); // <<sin(n*(phi1+phi2))>>
19387 s3 = fIntFlowCorrectionTermsForNUAVsMPro[0][2]->GetBinContent(b); // <<sin(n*(phi1-phi2-phi3))>>
19388 // Generalized QC{2} vs M:
19389 gQC2 = two - pow(c1,2.) - pow(s1,2.);
b77b6434 19390 if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[0]->SetBinContent(b,gQC2);}
b92ea2b9 19391 // Generalized QC{4} vs M:
19392 gQC4 = four-2.*pow(two,2.)
19393 - 4.*c1*c3+4.*s1*s3-pow(c2,2.)-pow(s2,2.)
19394 + 4.*c2*(pow(c1,2.)-pow(s1,2.))+8.*s2*s1*c1
19395 + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.);
b77b6434 19396 if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[1]->SetBinContent(b,gQC4);}
b92ea2b9 19397 // Detector bias vs M:
53884472 19398 if(TMath::Abs(QC2)>0.)
b92ea2b9 19399 {
53884472 19400 fIntFlowDetectorBiasVsM[0]->SetBinContent(b,gQC2/QC2);
19401 } // end of if(TMath::Abs(QC2)>0.)
19402 if(TMath::Abs(QC4)>0.)
b92ea2b9 19403 {
53884472 19404 fIntFlowDetectorBiasVsM[1]->SetBinContent(b,gQC4/QC4);
19405 } // end of if(TMath::Abs(QC4)>0.)
b77b6434 19406 // Rebin in M:
19407 for(Int_t co=0;co<4;co++)
19408 {
19409 value[co] = fIntFlowQcumulantsVsM[co]->GetBinContent(b);
19410 error[co] = fIntFlowQcumulantsVsM[co]->GetBinError(b);
19411 if(error[co]>0.)
19412 {
19413 dSum1[co]+=value[co]/(error[co]*error[co]);
19414 dSum2[co]+=1./(error[co]*error[co]);
19415 }
19416 } // end of for(Int_t co=0;co<4;co++)
19417 } // end of for(Int_t b=1;b<=nBins;b++)
19418 // Store rebinned Q-cumulants:
19419 if(fApplyCorrectionForNUAVsM)
19420 {
19421 for(Int_t co=0;co<4;co++)
19422 {
19423 if(dSum2[co]>0.)
19424 {
19425 fIntFlowQcumulantsRebinnedInM->SetBinContent(co+1,dSum1[co]/dSum2[co]);
19426 fIntFlowQcumulantsRebinnedInM->SetBinError(co+1,pow(1./dSum2[co],0.5));
19427 }
19428 } // end of for(Int_t co=0;co<4;co++)
19429 } // end of if(fApplyCorrectionForNUAVsM)
19430 } // end of if(fCalculateCumulantsVsM)
2001bc3a 19431
489d5531 19432} // end of void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow()
0328db2d 19433
e1d101a6 19434//=======================================================================================================================
489d5531 19435
489d5531 19436void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUAIntFlow()
19437{
0328db2d 19438 // From profile fIntFlowCorrectionTermsForNUAPro[sc] access measured correction terms for NUA
489d5531 19439 // and their spread, correctly calculate the statistical errors and store the final
0328db2d 19440 // results and statistical errors for correction terms for NUA in histogram fIntFlowCorrectionTermsForNUAHist[sc].
489d5531 19441 //
19442 // Remark: Statistical error of correction temrs is calculated as:
19443 //
19444 // statistical error = termA * spread * termB:
19445 // termA = sqrt{sum_{i=1}^{N} w^2}/(sum_{i=1}^{N} w)
19446 // termB = 1/sqrt(1-termA^2)
19447
b92ea2b9 19448 TString sinCosFlag[2] = {"sin","cos"}; // to be improved - promore this to data member?
19449 TString nonisotropicTermFlag[4] = {"(n(phi1))","(n(phi1+phi2))","(n(phi1-phi2-phi3))","(n(2phi1-phi2))"}; // to be improved - hardwired 4
19450
489d5531 19451 for(Int_t sc=0;sc<2;sc++) // sin or cos correction terms
19452 {
b92ea2b9 19453 for(Int_t ci=1;ci<=4;ci++) // correction term index (to be improved - hardwired 4)
489d5531 19454 {
19455 Double_t correction = fIntFlowCorrectionTermsForNUAPro[sc]->GetBinContent(ci);
0328db2d 19456 Double_t spread = fIntFlowCorrectionTermsForNUAPro[sc]->GetBinError(ci);
19457 Double_t sumOfLinearEventWeights = fIntFlowSumOfEventWeightsNUA[sc][0]->GetBinContent(ci);
19458 Double_t sumOfQuadraticEventWeights = fIntFlowSumOfEventWeightsNUA[sc][1]->GetBinContent(ci);
19459 Double_t termA = 0.;
19460 Double_t termB = 0.;
b92ea2b9 19461 if(TMath::Abs(sumOfLinearEventWeights)>1.e-44)
0328db2d 19462 {
19463 termA = pow(sumOfQuadraticEventWeights,0.5)/sumOfLinearEventWeights;
19464 } else
19465 {
b92ea2b9 19466 cout<<" WARNING (QC): sumOfLinearEventWeights == 0 in AFAWQC::FCTFNIF() !!!!"<<endl;
19467 cout<<Form(" (for <<%s[%s]>> non-isotropic term)",sinCosFlag[sc].Data(),nonisotropicTermFlag[ci-1].Data())<<endl;
0328db2d 19468 }
489d5531 19469 if(1.-pow(termA,2.) > 0.)
19470 {
19471 termB = 1./pow(1-pow(termA,2.),0.5);
19472 } else
19473 {
b92ea2b9 19474 cout<<" WARNING (QC): 1.-pow(termA,2.) <= 0 in AFAWQC::FCTFNIF() !!!!"<<endl;
19475 cout<<Form(" (for <<%s[%s]>> non-isotropic term)",sinCosFlag[sc].Data(),nonisotropicTermFlag[ci-1].Data())<<endl;
489d5531 19476 }
19477 Double_t statisticalError = termA * spread * termB;
489d5531 19478 fIntFlowCorrectionTermsForNUAHist[sc]->SetBinContent(ci,correction);
0328db2d 19479 fIntFlowCorrectionTermsForNUAHist[sc]->SetBinError(ci,statisticalError);
b92ea2b9 19480 } // end of for(Int_t ci=1;ci<=4;ci++) // correction term index
489d5531 19481 } // end of for(Int sc=0;sc<2;sc++) // sin or cos correction terms
19482
19483} // end of void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUAIntFlow()
19484
e1d101a6 19485//=======================================================================================================================
489d5531 19486
489d5531 19487void AliFlowAnalysisWithQCumulants::GetPointersForNestedLoopsHistograms()
19488{
19489 // Get pointers to all objects relevant for calculations with nested loops.
19490
19491 TList *nestedLoopsList = dynamic_cast<TList*>(fHistList->FindObject("Nested Loops"));
19492 if(nestedLoopsList)
19493 {
19494 this->SetNestedLoopsList(nestedLoopsList);
19495 } else
19496 {
19497 cout<<"WARNING: nestedLoopsList is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19498 exit(0);
19499 }
19500
19501 TString sinCosFlag[2] = {"sin","cos"}; // to be improved (should I promote this to data members?)
19502 TString typeFlag[2] = {"RP","POI"}; // to be improved (should I promote this to data members?)
19503 TString ptEtaFlag[2] = {"p_{T}","#eta"}; // to be improved (should I promote this to data members?)
19504 TString reducedCorrelationIndex[4] = {"<2'>","<4'>","<6'>","<8'>"}; // to be improved (should I promote this to data members?)
19505
19506 TString evaluateNestedLoopsName = "fEvaluateNestedLoops";
19507 evaluateNestedLoopsName += fAnalysisLabel->Data();
19508 TProfile *evaluateNestedLoops = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(evaluateNestedLoopsName.Data()));
19509 Bool_t bEvaluateIntFlowNestedLoops = kFALSE;
19510 Bool_t bEvaluateDiffFlowNestedLoops = kFALSE;
19511 if(evaluateNestedLoops)
19512 {
19513 this->SetEvaluateNestedLoops(evaluateNestedLoops);
19514 bEvaluateIntFlowNestedLoops = (Int_t)evaluateNestedLoops->GetBinContent(1);
19515 bEvaluateDiffFlowNestedLoops = (Int_t)evaluateNestedLoops->GetBinContent(2);
19516 }
19517 // nested loops relevant for integrated flow:
19518 if(bEvaluateIntFlowNestedLoops)
19519 {
19520 // correlations:
19521 TString intFlowDirectCorrelationsName = "fIntFlowDirectCorrelations";
19522 intFlowDirectCorrelationsName += fAnalysisLabel->Data();
19523 TProfile *intFlowDirectCorrelations = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(intFlowDirectCorrelationsName.Data()));
19524 if(intFlowDirectCorrelations)
19525 {
19526 this->SetIntFlowDirectCorrelations(intFlowDirectCorrelations);
19527 } else
19528 {
19529 cout<<"WARNING: intFlowDirectCorrelations is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19530 exit(0);
19531 }
403e3389 19532 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 19533 {
19534 TString intFlowExtraDirectCorrelationsName = "fIntFlowExtraDirectCorrelations";
19535 intFlowExtraDirectCorrelationsName += fAnalysisLabel->Data();
19536 TProfile *intFlowExtraDirectCorrelations = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(intFlowExtraDirectCorrelationsName.Data()));
19537 if(intFlowExtraDirectCorrelations)
19538 {
19539 this->SetIntFlowExtraDirectCorrelations(intFlowExtraDirectCorrelations);
19540 } else
19541 {
19542 cout<<"WARNING: intFlowExtraDirectCorrelations is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19543 exit(0);
19544 }
403e3389 19545 } // end of if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 19546 // correction terms for non-uniform acceptance:
19547 TString intFlowDirectCorrectionTermsForNUAName = "fIntFlowDirectCorrectionTermsForNUA";
19548 intFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
19549 TProfile *intFlowDirectCorrectionTermsForNUA[2] = {NULL};
19550 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
19551 {
19552 intFlowDirectCorrectionTermsForNUA[sc] = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(Form("%s: %s terms",intFlowDirectCorrectionTermsForNUAName.Data(),sinCosFlag[sc].Data())));
19553 if(intFlowDirectCorrectionTermsForNUA[sc])
19554 {
19555 this->SetIntFlowDirectCorrectionTermsForNUA(intFlowDirectCorrectionTermsForNUA[sc],sc);
19556 } else
19557 {
19558 cout<<"WARNING: intFlowDirectCorrectionTermsForNUA[sc] is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19559 cout<<"sc = "<<sc<<endl;
19560 exit(0);
19561 }
19562 } // end of for(Int_t sc=0;sc<2;sc++)
e1d101a6 19563 // Mixed harmonics:
19564 if(fCalculateMixedHarmonics)
19565 {
19566 TString mixedHarmonicsNestedLoopsName = "fMixedHarmonicsNestedLoops";
19567 mixedHarmonicsNestedLoopsName += fAnalysisLabel->Data();
19568 TProfile *mixedHarmonicsNestedLoops = dynamic_cast<TProfile*>(nestedLoopsList->FindObject(mixedHarmonicsNestedLoopsName.Data()));
19569 if(mixedHarmonicsNestedLoops)
19570 {
19571 this->SetMixedHarmonicsNestedLoops(mixedHarmonicsNestedLoops);
19572 } else
19573 {
19574 cout<<"WARNING: mixedHarmonicsNestedLoops is NULL in AFAWQC::GPFNLH() !!!!"<<endl;
19575 exit(0);
19576 }
19577 } // end of if(fCalculateMixedHarmonics)
489d5531 19578 } // end of if(bEvaluateIntFlowNestedLoops)
19579
19580 // nested loops relevant for differential flow:
19581 if(bEvaluateDiffFlowNestedLoops)
19582 {
19583 // correlations:
19584 TString diffFlowDirectCorrelationsName = "fDiffFlowDirectCorrelations";
19585 diffFlowDirectCorrelationsName += fAnalysisLabel->Data();
19586 TProfile *diffFlowDirectCorrelations[2][2][4] = {{{NULL}}};
19587 for(Int_t t=0;t<2;t++)
19588 {
19589 for(Int_t pe=0;pe<2;pe++)
19590 {
19591 for(Int_t ci=0;ci<4;ci++) // correlation index
19592 {
19593 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())));
19594 if(diffFlowDirectCorrelations[t][pe][ci])
19595 {
19596 this->SetDiffFlowDirectCorrelations(diffFlowDirectCorrelations[t][pe][ci],t,pe,ci);
19597 } else
19598 {
19599 cout<<"WARNING: diffFlowDirectCorrelations[t][pe][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19600 cout<<"t = "<<t<<endl;
19601 cout<<"pe = "<<pe<<endl;
19602 cout<<"ci = "<<ci<<endl;
19603 }
19604 } // end of for(Int_t ci=0;ci<4;ci++) // correlation index
19605 } // end of for(Int_t pe=0;pe<2;pe++)
19606 } // end of for(Int_t t=0;t<2;t++)
19607 // correction terms for non-uniform acceptance:
19608 TString diffFlowDirectCorrectionTermsForNUAName = "fDiffFlowDirectCorrectionTermsForNUA";
19609 diffFlowDirectCorrectionTermsForNUAName += fAnalysisLabel->Data();
19610 TProfile *diffFlowDirectCorrectionTermsForNUA[2][2][2][10] = {{{{NULL}}}};
19611 for(Int_t t=0;t<2;t++)
19612 {
19613 for(Int_t pe=0;pe<2;pe++)
19614 {
19615 // correction terms for NUA:
19616 for(Int_t sc=0;sc<2;sc++) // sin or cos
19617 {
19618 for(Int_t cti=0;cti<9;cti++) // correction term index
19619 {
19620 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)));
19621 if(diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti])
19622 {
19623 this->SetDiffFlowDirectCorrectionTermsForNUA(diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti],t,pe,sc,cti);
19624 } else
19625 {
19626 cout<<"WARNING: diffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19627 cout<<"t = "<<t<<endl;
19628 cout<<"pe = "<<pe<<endl;
19629 cout<<"sc = "<<sc<<endl;
19630 cout<<"cti = "<<cti<<endl;
19631 }
19632 } // end of for(Int_t cti=0;cti<9;cti++) // correction term index
19633 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
19634 } // end of for(Int_t pe=0;pe<2;pe++)
19635 } // end of for(Int_t t=0;t<2;t++)
64e500e3 19636 // other differential correlators:
19637 TString otherDirectDiffCorrelatorsName = "fOtherDirectDiffCorrelators";
19638 otherDirectDiffCorrelatorsName += fAnalysisLabel->Data();
19639 TProfile *otherDirectDiffCorrelators[2][2][2][1] = {{{{NULL}}}};
19640 for(Int_t t=0;t<2;t++)
19641 {
e1d101a6 19642 for(Int_t pe=0;pe<2;pe++)
19643 {
19644 // correction terms for NUA:
19645 for(Int_t sc=0;sc<2;sc++) // sin or cos
19646 {
19647 for(Int_t ci=0;ci<1;ci++) // correlator index
19648 {
19649 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)));
19650 if(otherDirectDiffCorrelators[t][pe][sc][ci])
19651 {
19652 this->SetOtherDirectDiffCorrelators(otherDirectDiffCorrelators[t][pe][sc][ci],t,pe,sc,ci);
19653 } else
19654 {
19655 cout<<"WARNING: otherDirectDiffCorrelators[t][pe][sc][ci] is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19656 cout<<"t = "<<t<<endl;
19657 cout<<"pe = "<<pe<<endl;
19658 cout<<"sc = "<<sc<<endl;
19659 cout<<"ci = "<<ci<<endl;
19660 }
19661 } // end of for(Int_t ci=0;ci<9;ci++) // correction term index
19662 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
19663 } // end of for(Int_t pe=0;pe<2;pe++)
19664 } // end of for(Int_t t=0;t<2;t++)
19665 // number of RPs and POIs in selected pt and eta bins for cross-checkings:
19666 TString noOfParticlesInBinName = "fNoOfParticlesInBin";
19667 TH1D *noOfParticlesInBin = NULL;
19668 noOfParticlesInBin = dynamic_cast<TH1D*>(nestedLoopsList->FindObject(noOfParticlesInBinName.Data()));
19669 if(noOfParticlesInBin)
19670 {
19671 this->SetNoOfParticlesInBin(noOfParticlesInBin);
19672 } else
19673 {
19674 cout<<endl;
19675 cout<<" WARNING (QC): noOfParticlesInBin is NULL in AFAWQC::GPFDFH() !!!!"<<endl;
19676 cout<<endl;
19677 }
19678 } // end of if(bEvaluateDiffFlowNestedLoops)
19679
19680} // end of void AliFlowAnalysisWithQCumulants::GetPointersForNestedLoopsHistograms()
19681
19682//=======================================================================================================================
19683
19684void AliFlowAnalysisWithQCumulants::GetPointersForMixedHarmonicsHistograms()
19685{
19686 // Get pointers to all objects relevant for mixed harmonics.
19687
19688 // a) Get pointer to base list for mixed harmonics;
19689 // b) Get pointer to TProfile fMixedHarmonicsFlags holding all flags for mixed harmonics;
19690 // c) Get pointer to list fMixedHarmonicsProfiles and pointers to all objects that she holds;
c10259fb 19691 // d) Get pointer to list fMixedHarmonicsResults and pointers to all objects that she holds;
19692 // e) Get pointer to list fMixedHarmonicsErrorPropagation and pointers to all objects that she holds.
e1d101a6 19693
19694 // a) Get pointer to base list for mixed harmonics:
19695 TList *mixedHarmonicsList = dynamic_cast<TList*>(fHistList->FindObject("Mixed Harmonics"));
19696 if(mixedHarmonicsList)
19697 {
19698 this->SetMixedHarmonicsList(mixedHarmonicsList);
19699 } else
19700 {
19701 cout<<"WARNING: mixedHarmonicsList is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19702 exit(0);
19703 }
19704
19705 // b) Get pointer to TProfile fMixedHarmonicsFlags holding all flags for mixed harmonics:
19706 TString mixedHarmonicsFlagsName = "fMixedHarmonicsFlags";
19707 mixedHarmonicsFlagsName += fAnalysisLabel->Data();
19708 TProfile *mixedHarmonicsFlags = dynamic_cast<TProfile*>
19709 (mixedHarmonicsList->FindObject(mixedHarmonicsFlagsName.Data()));
19710 if(mixedHarmonicsFlags)
19711 {
19712 this->SetMixedHarmonicsFlags(mixedHarmonicsFlags);
19713 fCalculateMixedHarmonics = (Bool_t)mixedHarmonicsFlags->GetBinContent(1);
19714 fCalculateMixedHarmonicsVsM = (Bool_t)mixedHarmonicsFlags->GetBinContent(3);
19715 } else
19716 {
19717 cout<<"WARNING: mixedHarmonicsFlags is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19718 exit(0);
19719 }
19720
19721 if(!fCalculateMixedHarmonics){return;}
19722
19723 // c) Get pointer to list fMixedHarmonicsProfiles and pointers to all objects that she holds:
19724 TList *mixedHarmonicsProfiles = NULL;
19725 mixedHarmonicsProfiles = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Profiles"));
19726 if(mixedHarmonicsProfiles)
19727 {
19728 // 2p:
19729 TString s2pCorrelationsName = "f2pCorrelations";
19730 s2pCorrelationsName += fAnalysisLabel->Data();
19731 TProfile *p2pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s2pCorrelationsName.Data()));
19732 if(p2pCorrelations)
19733 {
19734 this->Set2pCorrelations(p2pCorrelations);
19735 } else
19736 {
19737 cout<<"WARNING: p2pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19738 exit(0);
19739 }
19740 // 3p:
19741 TString s3pCorrelationsName = "f3pCorrelations";
19742 s3pCorrelationsName += fAnalysisLabel->Data();
19743 TProfile *p3pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s3pCorrelationsName.Data()));
19744 if(p3pCorrelations)
19745 {
19746 this->Set3pCorrelations(p3pCorrelations);
19747 } else
19748 {
19749 cout<<"WARNING: p3pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19750 exit(0);
19751 }
19752 // 4p:
19753 TString s4pCorrelationsName = "f4pCorrelations";
19754 s4pCorrelationsName += fAnalysisLabel->Data();
19755 TProfile *p4pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s4pCorrelationsName.Data()));
19756 if(p4pCorrelations)
19757 {
19758 this->Set4pCorrelations(p4pCorrelations);
19759 } else
19760 {
19761 cout<<"WARNING: p4pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19762 exit(0);
19763 }
19764 // 5p:
19765 TString s5pCorrelationsName = "f5pCorrelations";
19766 s5pCorrelationsName += fAnalysisLabel->Data();
19767 TProfile *p5pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s5pCorrelationsName.Data()));
19768 if(p5pCorrelations)
19769 {
19770 this->Set5pCorrelations(p5pCorrelations);
19771 } else
19772 {
19773 cout<<"WARNING: p5pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19774 exit(0);
19775 }
19776 /* TBI not needed for the time being
19777 // 6p:
19778 TString s6pCorrelationsName = "f6pCorrelations";
19779 s6pCorrelationsName += fAnalysisLabel->Data();
19780 TProfile *p6pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s6pCorrelationsName.Data()));
19781 if(p6pCorrelations)
19782 {
19783 this->Set6pCorrelations(p6pCorrelations);
19784 } else
19785 {
19786 cout<<"WARNING: p6pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19787 exit(0);
19788 }
19789 // 7p:
19790 TString s7pCorrelationsName = "f7pCorrelations";
19791 s7pCorrelationsName += fAnalysisLabel->Data();
19792 TProfile *p7pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s7pCorrelationsName.Data()));
19793 if(p7pCorrelations)
19794 {
19795 this->Set7pCorrelations(p7pCorrelations);
19796 } else
19797 {
19798 cout<<"WARNING: p7pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19799 exit(0);
19800 }
19801 // 8p:
19802 TString s8pCorrelationsName = "f8pCorrelations";
19803 s8pCorrelationsName += fAnalysisLabel->Data();
19804 TProfile *p8pCorrelations = dynamic_cast<TProfile*>(mixedHarmonicsProfiles->FindObject(s8pCorrelationsName.Data()));
19805 if(p8pCorrelations)
19806 {
19807 this->Set8pCorrelations(p8pCorrelations);
19808 } else
19809 {
19810 cout<<"WARNING: p8pCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19811 exit(0);
19812 }
19813 */
19814 } else // to if(mixedHarmonicsProfiles)
19815 {
19816 cout<<"WARNING: mixedHarmonicsProfiles is NULL in FAWQC::GPFMHH() !!!!"<<endl;
19817 exit(0);
19818 }
19819
19820 // d) Get pointer to list fMixedHarmonicsResults and pointers to all objects that she holds.
19821 TList *mixedHarmonicsResults = NULL;
19822 mixedHarmonicsResults = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Results"));
19823 if(mixedHarmonicsResults)
19824 {
19825 // 2p:
19826 TString s2pCumulantsName = "f2pCumulants";
19827 s2pCumulantsName += fAnalysisLabel->Data();
19828 TH1D *p2pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s2pCumulantsName.Data()));
19829 if(p2pCumulants)
19830 {
19831 this->Set2pCumulants(p2pCumulants);
19832 } else
64e500e3 19833 {
e1d101a6 19834 cout<<"WARNING: p2pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19835 exit(0);
19836 }
19837 // 3p:
19838 TString s3pCumulantsName = "f3pCumulants";
19839 s3pCumulantsName += fAnalysisLabel->Data();
19840 TH1D *p3pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s3pCumulantsName.Data()));
19841 if(p3pCumulants)
19842 {
19843 this->Set3pCumulants(p3pCumulants);
19844 } else
19845 {
19846 cout<<"WARNING: p3pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19847 exit(0);
19848 }
19849 // 4p:
19850 TString s4pCumulantsName = "f4pCumulants";
19851 s4pCumulantsName += fAnalysisLabel->Data();
19852 TH1D *p4pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s4pCumulantsName.Data()));
19853 if(p4pCumulants)
19854 {
19855 this->Set4pCumulants(p4pCumulants);
19856 } else
19857 {
19858 cout<<"WARNING: p4pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19859 exit(0);
19860 }
19861 // 5p:
19862 TString s5pCumulantsName = "f5pCumulants";
19863 s5pCumulantsName += fAnalysisLabel->Data();
19864 TH1D *p5pCumulants = dynamic_cast<TH1D*>(mixedHarmonicsResults->FindObject(s5pCumulantsName.Data()));
19865 if(p5pCumulants)
19866 {
19867 this->Set5pCumulants(p5pCumulants);
19868 } else
19869 {
19870 cout<<"WARNING: p5pCumulants is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19871 exit(0);
19872 }
19873 } else // to if(mixedHarmonicsResults)
489d5531 19874 {
e1d101a6 19875 cout<<"WARNING: mixedHarmonicsResults is NULL in FAWQC::GPFMHH() !!!!"<<endl;
19876 }
489d5531 19877
c10259fb 19878 // e) Get pointer to list fMixedHarmonicsErrorPropagation and pointers to all objects that she holds:
19879 TList *mixedHarmonicsErrorPropagation = NULL;
19880 mixedHarmonicsErrorPropagation = dynamic_cast<TList*>(mixedHarmonicsList->FindObject("Error Propagation"));
19881 if(mixedHarmonicsErrorPropagation)
19882 {
19883 TString sMixedHarmonicEventWeightsName = "fMixedHarmonicEventWeights";
19884 sMixedHarmonicEventWeightsName += fAnalysisLabel->Data();
19885 TString powerFlag[2] = {"linear","quadratic"};
19886 for(Int_t power=0;power<2;power++)
19887 {
19888 TH1D *hMixedHarmonicEventWeights = dynamic_cast<TH1D*>(mixedHarmonicsErrorPropagation->FindObject(Form("%s: %s",sMixedHarmonicEventWeightsName.Data(),powerFlag[power].Data())));
19889 if(hMixedHarmonicEventWeights)
19890 {
19891 this->SetMixedHarmonicEventWeights(hMixedHarmonicEventWeights,power);
19892 } else
19893 {
19894 cout<<"WARNING: hMixedHarmonicEventWeights is NULL in AFAWQC::GPFIFH() !!!!"<<endl;
19895 cout<<"power = "<<power<<endl;
19896 exit(0);
19897 }
19898 } // end of for(Int_t power=0;power<2;power++)
19899 TString sMixedHarmonicProductOfEventWeightsName = "fMixedHarmonicProductOfEventWeights";
19900 sMixedHarmonicProductOfEventWeightsName += fAnalysisLabel->Data();
19901 TH2D *hMixedHarmonicProductOfEventWeights = dynamic_cast<TH2D*>(mixedHarmonicsErrorPropagation->FindObject(sMixedHarmonicProductOfEventWeightsName.Data()));
19902 if(hMixedHarmonicProductOfEventWeights)
19903 {
19904 this->SetMixedHarmonicProductOfEventWeights(hMixedHarmonicProductOfEventWeights);
19905 } else
19906 {
19907 cout<<"WARNING: hMixedHarmonicProductOfEventWeights is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19908 exit(0);
19909 }
19910 TString sMixedHarmonicProductOfCorrelationsName = "fMixedHarmonicProductOfCorrelations";
19911 sMixedHarmonicProductOfCorrelationsName += fAnalysisLabel->Data();
19912 TProfile2D *hMixedHarmonicProductOfCorrelations = dynamic_cast<TProfile2D*>(mixedHarmonicsErrorPropagation->FindObject(sMixedHarmonicProductOfCorrelationsName.Data()));
19913 if(hMixedHarmonicProductOfCorrelations)
19914 {
19915 this->SetMixedHarmonicProductOfCorrelations(hMixedHarmonicProductOfCorrelations);
19916 } else
19917 {
19918 cout<<"WARNING: hMixedHarmonicProductOfCorrelations is NULL in AFAWQC::GPFMHH() !!!!"<<endl;
19919 exit(0);
19920 }
19921 } // end of if(mixedHarmonicsErrorPropagation)
19922
e1d101a6 19923} // end of void AliFlowAnalysisWithQCumulants::GetPointersForMixedHarmonicsHistograms()
489d5531 19924
e1d101a6 19925//=======================================================================================================================
489d5531 19926
489d5531 19927void AliFlowAnalysisWithQCumulants::StoreHarmonic()
19928{
19929 // Store flow harmonic in common control histograms.
19930
19931 (fCommonHists->GetHarmonic())->Fill(0.5,fHarmonic);
dd442cd2 19932 if(fFillMultipleControlHistograms)
19933 {
19934 (fCommonHists2nd->GetHarmonic())->Fill(0.5,fHarmonic);
19935 (fCommonHists4th->GetHarmonic())->Fill(0.5,fHarmonic);
19936 (fCommonHists6th->GetHarmonic())->Fill(0.5,fHarmonic);
19937 (fCommonHists8th->GetHarmonic())->Fill(0.5,fHarmonic);
19938 }
19939
489d5531 19940} // end of void AliFlowAnalysisWithQCumulants::StoreHarmonic()
19941
e1d101a6 19942//=======================================================================================================================
489d5531 19943
489d5531 19944void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelationsUsingParticleWeights(TString type, TString ptOrEta) // type = RP or POI
19945{
19946 // Calculate all correlations needed for differential flow using particle weights.
19947
2a98ceb8 19948 Int_t t = 0; // type flag
19949 Int_t pe = 0; // ptEta flag
489d5531 19950
19951 if(type == "RP")
19952 {
19953 t = 0;
19954 } else if(type == "POI")
19955 {
19956 t = 1;
19957 }
19958
19959 if(ptOrEta == "Pt")
19960 {
19961 pe = 0;
19962 } else if(ptOrEta == "Eta")
19963 {
19964 pe = 1;
19965 }
19966
19967 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
19968 Double_t minPtEta[2] = {fPtMin,fEtaMin};
19969 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
19970 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
19971
19972 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
19973 Double_t dReQ1n1k = (*fReQ)(0,1);
19974 Double_t dReQ2n2k = (*fReQ)(1,2);
19975 Double_t dReQ1n3k = (*fReQ)(0,3);
19976 //Double_t dReQ4n4k = (*fReQ)(3,4);
19977 Double_t dImQ1n1k = (*fImQ)(0,1);
19978 Double_t dImQ2n2k = (*fImQ)(1,2);
19979 Double_t dImQ1n3k = (*fImQ)(0,3);
19980 //Double_t dImQ4n4k = (*fImQ)(3,4);
19981
1268c371 19982 // S^M_{p,k} (see .h file for the definition of fSpk):
19983 Double_t dSM1p1k = (*fSpk)(0,1);
19984 Double_t dSM1p2k = (*fSpk)(0,2);
19985 Double_t dSM1p3k = (*fSpk)(0,3);
19986 Double_t dSM2p1k = (*fSpk)(1,1);
19987 Double_t dSM3p1k = (*fSpk)(2,1);
489d5531 19988
19989 // looping over all bins and calculating reduced correlations:
19990 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
19991 {
19992 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular (pt,eta) bin):
19993 Double_t p1n0kRe = 0.;
19994 Double_t p1n0kIm = 0.;
19995
19996 // number of POIs in particular (pt,eta) bin):
19997 Double_t mp = 0.;
19998
19999 // real and imaginary parts of q_{m*n,k}:
20000 // (weighted Q-vector evaluated for particles which are both RPs and POIs in particular (pt,eta) bin)
20001 Double_t q1n2kRe = 0.;
20002 Double_t q1n2kIm = 0.;
20003 Double_t q2n1kRe = 0.;
20004 Double_t q2n1kIm = 0.;
20005
20006 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
20007 Double_t s1p1k = 0.;
20008 Double_t s1p2k = 0.;
20009 Double_t s1p3k = 0.;
20010
20011 // M0111 from Eq. (118) in QC2c (to be improved (notation))
20012 Double_t dM0111 = 0.;
20013
20014 if(type == "POI")
20015 {
20016 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20017 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20018 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20019 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20020
20021 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20022
20023 t = 1; // typeFlag = RP or POI
20024
20025 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
20026 q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
20027 * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
20028 q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
20029 * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
20030 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
20031 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
20032 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
20033 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
20034
20035 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
20036 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
20037 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
20038 s1p3k = pow(fs1dEBE[2][pe][3]->GetBinContent(b)*fs1dEBE[2][pe][3]->GetBinEntries(b),1.);
20039
20040 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
20041 dM0111 = mp*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
20042 - 3.*(s1p1k*(dSM2p1k-dSM1p2k)
20043 + 2.*(s1p3k-s1p2k*dSM1p1k));
20044 }
20045 else if(type == "RP")
20046 {
20047 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
20048 q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
20049 * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
20050 q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
20051 * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
20052 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
20053 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
20054 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
20055 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
20056
20057 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
20058 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
20059 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
20060 s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
20061
20062 // to be improved (cross-checked):
20063 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20064 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20065 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20066 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20067
20068 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20069
20070 t = 0; // typeFlag = RP or POI
20071
20072 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
20073 dM0111 = mp*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
20074 - 3.*(s1p1k*(dSM2p1k-dSM1p2k)
20075 + 2.*(s1p3k-s1p2k*dSM1p1k));
20076 //...............................................................................................
20077 }
20078
20079 // 2'-particle correlation:
20080 Double_t two1n1nW0W1 = 0.;
20081 if(mp*dSM1p1k-s1p1k)
20082 {
20083 two1n1nW0W1 = (p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k-s1p1k)
20084 / (mp*dSM1p1k-s1p1k);
20085
20086 // fill profile to get <<2'>>
b40a910e 20087 fDiffFlowCorrelationsPro[t][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nW0W1,mp*dSM1p1k-s1p1k);
20088 // fill profile to get <<2'>^2>
20089 fDiffFlowSquaredCorrelationsPro[t][pe][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],two1n1nW0W1*two1n1nW0W1,mp*dSM1p1k-s1p1k);
489d5531 20090 // histogram to store <2'> e-b-e (needed in some other methods):
20091 fDiffFlowCorrelationsEBE[t][pe][0]->SetBinContent(b,two1n1nW0W1);
20092 fDiffFlowEventWeightsForCorrelationsEBE[t][pe][0]->SetBinContent(b,mp*dSM1p1k-s1p1k);
20093 } // end of if(mp*dSM1p1k-s1p1k)
20094
20095 // 4'-particle correlation:
20096 Double_t four1n1n1n1nW0W1W1W1 = 0.;
20097 if(dM0111)
20098 {
20099 four1n1n1n1nW0W1W1W1 = ((pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*(p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k)
20100 - q2n1kRe*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))
20101 - 2.*q2n1kIm*dReQ1n1k*dImQ1n1k
20102 - p1n0kRe*(dReQ1n1k*dReQ2n2k+dImQ1n1k*dImQ2n2k)
20103 + p1n0kIm*(dImQ1n1k*dReQ2n2k-dReQ1n1k*dImQ2n2k)
20104 - 2.*dSM1p2k*(p1n0kRe*dReQ1n1k+p1n0kIm*dImQ1n1k)
20105 - 2.*(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*s1p1k
20106 + 6.*(q1n2kRe*dReQ1n1k+q1n2kIm*dImQ1n1k)
20107 + 1.*(q2n1kRe*dReQ2n2k+q2n1kIm*dImQ2n2k)
20108 + 2.*(p1n0kRe*dReQ1n3k+p1n0kIm*dImQ1n3k)
20109 + 2.*s1p1k*dSM1p2k
20110 - 6.*s1p3k)
20111 / dM0111; // to be improved (notation of dM0111)
20112
20113 // fill profile to get <<4'>>
b40a910e 20114 fDiffFlowCorrelationsPro[t][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nW0W1W1W1,dM0111);
20115 // fill profile to get <<4'>^2>
20116 fDiffFlowSquaredCorrelationsPro[t][pe][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],four1n1n1n1nW0W1W1W1*four1n1n1n1nW0W1W1W1,dM0111);
489d5531 20117 // histogram to store <4'> e-b-e (needed in some other methods):
20118 fDiffFlowCorrelationsEBE[t][pe][1]->SetBinContent(b,four1n1n1n1nW0W1W1W1);
20119 fDiffFlowEventWeightsForCorrelationsEBE[t][pe][1]->SetBinContent(b,dM0111);
20120 } // end of if(dM0111)
20121 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20122
20123} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrelationsUsingParticleWeights(TString type, TString ptOrEta); // type = RP or POI
20124
e1d101a6 20125//=======================================================================================================================
489d5531 20126
489d5531 20127void AliFlowAnalysisWithQCumulants::FillCommonControlHistograms(AliFlowEventSimple *anEvent)
20128{
20129 // Fill common control histograms.
20130
df23c5ae 20131 Int_t nRP = anEvent->GetNumberOfRPs(); // number of Reference Particles
489d5531 20132 fCommonHists->FillControlHistograms(anEvent);
dd442cd2 20133 if(fFillMultipleControlHistograms)
489d5531 20134 {
dd442cd2 20135 if(nRP>1)
489d5531 20136 {
dd442cd2 20137 fCommonHists2nd->FillControlHistograms(anEvent);
20138 if(nRP>3)
489d5531 20139 {
dd442cd2 20140 fCommonHists4th->FillControlHistograms(anEvent);
20141 if(nRP>5)
489d5531 20142 {
dd442cd2 20143 fCommonHists6th->FillControlHistograms(anEvent);
20144 if(nRP>7)
20145 {
20146 fCommonHists8th->FillControlHistograms(anEvent);
20147 } // end of if(nRP>7)
20148 } // end of if(nRP>5)
20149 } // end of if(nRP>3)
20150 } // end of if(nRP>1)
20151 } // end of if(fFillMultipleControlHistograms)
489d5531 20152
20153} // end of void AliFlowAnalysisWithQCumulants::FillCommonControlHistograms(AliFlowEventSimple *anEvent)
20154
e1d101a6 20155//=======================================================================================================================
489d5531 20156
df23c5ae 20157void AliFlowAnalysisWithQCumulants::FillControlHistograms(AliFlowEventSimple *anEvent)
20158{
20159 // Fill common control histograms.
20160
20161 Int_t nRPs = anEvent->GetNumberOfRPs(); // number of Reference Particles
20162 Int_t nPOIs = anEvent->GetNumberOfPOIs(); // number of Particles Of Interest
20163 Int_t nRefMult = anEvent->GetReferenceMultiplicity(); // reference multiplicity for current event (TBI: This call is not really needed here, use fReferenceMultiplicityEBE instead)
20164
20165 fCorrelationNoRPsVsRefMult->Fill(nRPs,nRefMult);
20166 fCorrelationNoPOIsVsRefMult->Fill(nPOIs,nRefMult);
20167 fCorrelationNoRPsVsNoPOIs->Fill(nRPs,nPOIs);
20168
20169} // end of void AliFlowAnalysisWithQCumulants::FillControlHistograms(AliFlowEventSimple *anEvent)
20170
20171//=======================================================================================================================
20172
489d5531 20173void AliFlowAnalysisWithQCumulants::ResetEventByEventQuantities()
20174{
20175 // Reset all event by event quantities.
20176
1268c371 20177 // Reference flow:
489d5531 20178 fReQ->Zero();
20179 fImQ->Zero();
1268c371 20180 fSpk->Zero();
489d5531 20181 fIntFlowCorrelationsEBE->Reset();
20182 fIntFlowEventWeightsForCorrelationsEBE->Reset();
20183 fIntFlowCorrelationsAllEBE->Reset();
20184
b92ea2b9 20185 for(Int_t sc=0;sc<2;sc++)
489d5531 20186 {
b92ea2b9 20187 fIntFlowCorrectionTermsForNUAEBE[sc]->Reset();
20188 fIntFlowEventWeightForCorrectionTermsForNUAEBE[sc]->Reset();
489d5531 20189 }
20190
1268c371 20191 // Differential flow:
20192 if(fCalculateDiffFlow)
489d5531 20193 {
1268c371 20194 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
489d5531 20195 {
62e36168 20196 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // 1D in pt or eta
489d5531 20197 {
1268c371 20198 for(Int_t m=0;m<4;m++) // multiple of harmonic
489d5531 20199 {
1268c371 20200 for(Int_t k=0;k<9;k++) // power of weight
20201 {
20202 if(fReRPQ1dEBE[t][pe][m][k]) fReRPQ1dEBE[t][pe][m][k]->Reset();
20203 if(fImRPQ1dEBE[t][pe][m][k]) fImRPQ1dEBE[t][pe][m][k]->Reset();
20204 }
20205 }
489d5531 20206 }
1268c371 20207 }
20208 for(Int_t t=0;t<3;t++) // type (0 = RP, 1 = POI, 2 = RP&&POI )
20209 {
62e36168 20210 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // 1D in pt or eta
489d5531 20211 {
1268c371 20212 for(Int_t k=0;k<9;k++)
20213 {
20214 if(fs1dEBE[t][pe][k]) fs1dEBE[t][pe][k]->Reset();
20215 }
489d5531 20216 }
20217 }
1268c371 20218 // e-b-e reduced correlations:
20219 for(Int_t t=0;t<2;t++) // type (0 = RP, 1 = POI)
20220 {
62e36168 20221 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 20222 {
1268c371 20223 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
20224 {
20225 if(fDiffFlowCorrelationsEBE[t][pe][rci]) fDiffFlowCorrelationsEBE[t][pe][rci]->Reset();
20226 if(fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci]) fDiffFlowEventWeightsForCorrelationsEBE[t][pe][rci]->Reset();
20227 }
489d5531 20228 }
1268c371 20229 }
20230 // correction terms for NUA:
20231 for(Int_t t=0;t<2;t++) // type (0 = RP, 1 = POI)
20232 {
62e36168 20233 for(Int_t pe=0;pe<1+(Int_t)fCalculateDiffFlowVsEta;pe++) // pt or eta
489d5531 20234 {
1268c371 20235 for(Int_t sc=0;sc<2;sc++) // sin or cos
489d5531 20236 {
1268c371 20237 for(Int_t cti=0;cti<9;cti++) // correction term index
20238 {
489d5531 20239 fDiffFlowCorrectionTermsForNUAEBE[t][pe][sc][cti]->Reset();
1268c371 20240 }
489d5531 20241 }
1268c371 20242 }
20243 }
20244 } // end of if(fCalculateDiffFlow)
20245
489d5531 20246 // 2D (pt,eta)
1268c371 20247 if(fCalculate2DDiffFlow)
489d5531 20248 {
20249 for(Int_t t=0;t<3;t++) // type (RP, POI, POI&&RP)
20250 {
20251 for(Int_t m=0;m<4;m++) // multiple of harmonic
20252 {
20253 for(Int_t k=0;k<9;k++) // power of weight
20254 {
b77b6434 20255 if(fReRPQ2dEBE[t][m][k]){fReRPQ2dEBE[t][m][k]->Reset();}
20256 if(fImRPQ2dEBE[t][m][k]){fImRPQ2dEBE[t][m][k]->Reset();}
489d5531 20257 }
20258 }
20259 }
20260 for(Int_t t=0;t<3;t++) // type (0 = RP, 1 = POI, 2 = RP&&POI )
20261 {
20262 for(Int_t k=0;k<9;k++)
20263 {
b77b6434 20264 if(fs2dEBE[t][k]){fs2dEBE[t][k]->Reset();}
489d5531 20265 }
20266 }
1268c371 20267 } // end of if(fCalculate2DDiffFlow)
489d5531 20268
20269} // end of void AliFlowAnalysisWithQCumulants::ResetEventByEventQuantities();
20270
e1d101a6 20271//=======================================================================================================================
489d5531 20272
489d5531 20273void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTerms(TString type, TString ptOrEta)
20274{
20275 // Calculate correction terms for non-uniform acceptance for differential flow (sin terms).
20276
20277 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][0][cti], where cti runs as follows:
20278 // 0: <<sin n(psi1)>>
20279 // 1: <<sin n(psi1+phi2)>>
20280 // 2: <<sin n(psi1+phi2-phi3)>>
20281 // 3: <<sin n(psi1-phi2-phi3)>>:
20282 // 4:
20283 // 5:
20284 // 6:
20285
20286 // multiplicity:
1268c371 20287 Double_t dMult = (*fSpk)(0,0);
489d5531 20288
20289 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
20290 Double_t dReQ1n = (*fReQ)(0,0);
20291 Double_t dReQ2n = (*fReQ)(1,0);
20292 //Double_t dReQ3n = (*fReQ)(2,0);
20293 //Double_t dReQ4n = (*fReQ)(3,0);
20294 Double_t dImQ1n = (*fImQ)(0,0);
20295 Double_t dImQ2n = (*fImQ)(1,0);
20296 //Double_t dImQ3n = (*fImQ)(2,0);
20297 //Double_t dImQ4n = (*fImQ)(3,0);
20298
2a98ceb8 20299 Int_t t = 0; // type flag
20300 Int_t pe = 0; // ptEta flag
489d5531 20301
20302 if(type == "RP")
20303 {
20304 t = 0;
20305 } else if(type == "POI")
20306 {
20307 t = 1;
20308 }
20309
20310 if(ptOrEta == "Pt")
20311 {
20312 pe = 0;
20313 } else if(ptOrEta == "Eta")
20314 {
20315 pe = 1;
20316 }
20317
20318 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20319 Double_t minPtEta[2] = {fPtMin,fEtaMin};
20320 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20321 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20322
20323 // looping over all bins and calculating correction terms:
20324 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20325 {
20326 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
20327 Double_t p1n0kRe = 0.;
20328 Double_t p1n0kIm = 0.;
20329
20330 // number of POIs in particular pt or eta bin:
20331 Double_t mp = 0.;
20332
20333 // 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):
20334 Double_t q1n0kRe = 0.;
20335 Double_t q1n0kIm = 0.;
20336 Double_t q2n0kRe = 0.;
20337 Double_t q2n0kIm = 0.;
20338
20339 // number of particles which are both RPs and POIs in particular pt or eta bin:
20340 Double_t mq = 0.;
20341
20342 if(type == "POI")
20343 {
20344 // q_{m*n,0}:
20345 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
20346 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
20347 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
20348 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
20349 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
20350 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
20351 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
20352 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
20353
20354 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20355 }
20356 else if(type == "RP")
20357 {
20358 // q_{m*n,0}:
20359 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20360 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20361 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20362 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20363 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
20364 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
20365 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
20366 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
20367
20368 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20369 }
20370 if(type == "POI")
20371 {
20372 // p_{m*n,0}:
20373 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20374 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20375 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20376 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20377
20378 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20379
20380 t = 1; // typeFlag = RP or POI
20381 }
20382 else if(type == "RP")
20383 {
20384 // p_{m*n,0} = q_{m*n,0}:
20385 p1n0kRe = q1n0kRe;
20386 p1n0kIm = q1n0kIm;
20387
20388 mp = mq;
20389
20390 t = 0; // typeFlag = RP or POI
20391 }
20392
20393 // <<sin n(psi1)>>:
20394 Double_t sinP1nPsi = 0.;
20395 if(mp)
20396 {
20397 sinP1nPsi = p1n0kIm/mp;
20398 // fill profile for <<sin n(psi1)>>:
20399 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi,mp);
20400 // histogram to store <sin n(psi1)> e-b-e (needed in some other methods):
20401 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][0]->SetBinContent(b,sinP1nPsi);
20402 } // end of if(mp)
20403
20404 // <<sin n(psi1+phi2)>>:
20405 Double_t sinP1nPsiP1nPhi = 0.;
20406 if(mp*dMult-mq)
20407 {
20408 sinP1nPsiP1nPhi = (p1n0kRe*dImQ1n+p1n0kIm*dReQ1n-q2n0kIm)/(mp*dMult-mq);
20409 // fill profile for <<sin n(psi1+phi2)>>:
20410 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsiP1nPhi,mp*dMult-mq);
20411 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20412 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][1]->SetBinContent(b,sinP1nPsiP1nPhi);
20413 } // end of if(mp*dMult-mq)
20414
20415 // <<sin n(psi1+phi2-phi3)>>:
20416 Double_t sinP1nPsi1P1nPhi2MPhi3 = 0.;
20417 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20418 {
20419 sinP1nPsi1P1nPhi2MPhi3 = (p1n0kIm*(pow(dImQ1n,2.)+pow(dReQ1n,2.)-dMult)
20420 - 1.*(q2n0kIm*dReQ1n-q2n0kRe*dImQ1n)
20421 - mq*dImQ1n+2.*q1n0kIm)
20422 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20423 // fill profile for <<sin n(psi1+phi2)>>:
20424 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1P1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20425 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20426 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][2]->SetBinContent(b,sinP1nPsi1P1nPhi2MPhi3);
20427 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20428
20429 // <<sin n(psi1-phi2-phi3)>>:
20430 Double_t sinP1nPsi1M1nPhi2MPhi3 = 0.;
20431 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20432 {
20433 sinP1nPsi1M1nPhi2MPhi3 = (p1n0kIm*(pow(dReQ1n,2.)-pow(dImQ1n,2.))-2.*p1n0kRe*dReQ1n*dImQ1n
20434 - 1.*(p1n0kIm*dReQ2n-p1n0kRe*dImQ2n)
20435 + 2.*mq*dImQ1n-2.*q1n0kIm)
20436 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20437 // fill profile for <<sin n(psi1+phi2)>>:
20438 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1M1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20439 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20440 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][3]->SetBinContent(b,sinP1nPsi1M1nPhi2MPhi3);
20441 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20442 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20443
20444} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTerms(TString type, TString ptOrEta)
20445
20446
e1d101a6 20447//=======================================================================================================================
489d5531 20448
20449
20450void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTerms(TString type, TString ptOrEta)
20451{
20452 // Calculate correction terms for non-uniform acceptance for differential flow (cos terms).
20453
20454 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][1][cti], where cti runs as follows:
20455 // 0: <<cos n(psi)>>
20456 // 1: <<cos n(psi1+phi2)>>
20457 // 2: <<cos n(psi1+phi2-phi3)>>
20458 // 3: <<cos n(psi1-phi2-phi3)>>
20459 // 4:
20460 // 5:
20461 // 6:
20462
20463 // multiplicity:
1268c371 20464 Double_t dMult = (*fSpk)(0,0);
489d5531 20465
20466 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
20467 Double_t dReQ1n = (*fReQ)(0,0);
20468 Double_t dReQ2n = (*fReQ)(1,0);
20469 //Double_t dReQ3n = (*fReQ)(2,0);
20470 //Double_t dReQ4n = (*fReQ)(3,0);
20471 Double_t dImQ1n = (*fImQ)(0,0);
20472 Double_t dImQ2n = (*fImQ)(1,0);
20473 //Double_t dImQ3n = (*fImQ)(2,0);
20474 //Double_t dImQ4n = (*fImQ)(3,0);
20475
2a98ceb8 20476 Int_t t = 0; // type flag
20477 Int_t pe = 0; // ptEta flag
489d5531 20478
20479 if(type == "RP")
20480 {
20481 t = 0;
20482 } else if(type == "POI")
20483 {
20484 t = 1;
20485 }
20486
20487 if(ptOrEta == "Pt")
20488 {
20489 pe = 0;
20490 } else if(ptOrEta == "Eta")
20491 {
20492 pe = 1;
20493 }
20494
20495 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20496 Double_t minPtEta[2] = {fPtMin,fEtaMin};
20497 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20498 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20499
20500 // looping over all bins and calculating correction terms:
20501 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20502 {
20503 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
20504 Double_t p1n0kRe = 0.;
20505 Double_t p1n0kIm = 0.;
20506
20507 // number of POIs in particular pt or eta bin:
20508 Double_t mp = 0.;
20509
20510 // 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):
20511 Double_t q1n0kRe = 0.;
20512 Double_t q1n0kIm = 0.;
20513 Double_t q2n0kRe = 0.;
20514 Double_t q2n0kIm = 0.;
20515
20516 // number of particles which are both RPs and POIs in particular pt or eta bin:
20517 Double_t mq = 0.;
20518
20519 if(type == "POI")
20520 {
20521 // q_{m*n,0}:
20522 q1n0kRe = fReRPQ1dEBE[2][pe][0][0]->GetBinContent(fReRPQ1dEBE[2][pe][0][0]->GetBin(b))
20523 * fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b));
20524 q1n0kIm = fImRPQ1dEBE[2][pe][0][0]->GetBinContent(fImRPQ1dEBE[2][pe][0][0]->GetBin(b))
20525 * fImRPQ1dEBE[2][pe][0][0]->GetBinEntries(fImRPQ1dEBE[2][pe][0][0]->GetBin(b));
20526 q2n0kRe = fReRPQ1dEBE[2][pe][1][0]->GetBinContent(fReRPQ1dEBE[2][pe][1][0]->GetBin(b))
20527 * fReRPQ1dEBE[2][pe][1][0]->GetBinEntries(fReRPQ1dEBE[2][pe][1][0]->GetBin(b));
20528 q2n0kIm = fImRPQ1dEBE[2][pe][1][0]->GetBinContent(fImRPQ1dEBE[2][pe][1][0]->GetBin(b))
20529 * fImRPQ1dEBE[2][pe][1][0]->GetBinEntries(fImRPQ1dEBE[2][pe][1][0]->GetBin(b));
20530
20531 mq = fReRPQ1dEBE[2][pe][0][0]->GetBinEntries(fReRPQ1dEBE[2][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20532 }
20533 else if(type == "RP")
20534 {
20535 // q_{m*n,0}:
20536 q1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
20537 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
20538 q1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
20539 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
20540 q2n0kRe = fReRPQ1dEBE[0][pe][1][0]->GetBinContent(fReRPQ1dEBE[0][pe][1][0]->GetBin(b))
20541 * fReRPQ1dEBE[0][pe][1][0]->GetBinEntries(fReRPQ1dEBE[0][pe][1][0]->GetBin(b));
20542 q2n0kIm = fImRPQ1dEBE[0][pe][1][0]->GetBinContent(fImRPQ1dEBE[0][pe][1][0]->GetBin(b))
20543 * fImRPQ1dEBE[0][pe][1][0]->GetBinEntries(fImRPQ1dEBE[0][pe][1][0]->GetBin(b));
20544
20545 mq = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20546 }
20547 if(type == "POI")
20548 {
20549 // p_{m*n,0}:
20550 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
20551 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
20552 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
20553 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
20554
20555 mp = fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
20556
20557 t = 1; // typeFlag = RP or POI
20558 }
20559 else if(type == "RP")
20560 {
20561 // p_{m*n,0} = q_{m*n,0}:
20562 p1n0kRe = q1n0kRe;
20563 p1n0kIm = q1n0kIm;
20564
20565 mp = mq;
20566
20567 t = 0; // typeFlag = RP or POI
20568 }
20569
20570 // <<cos n(psi1)>>:
20571 Double_t cosP1nPsi = 0.;
20572 if(mp)
20573 {
20574 cosP1nPsi = p1n0kRe/mp;
20575
20576 // fill profile for <<cos n(psi1)>>:
20577 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi,mp);
20578 // histogram to store <cos n(psi1)> e-b-e (needed in some other methods):
20579 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][0]->SetBinContent(b,cosP1nPsi);
20580 } // end of if(mp)
20581
20582 // <<cos n(psi1+phi2)>>:
20583 Double_t cosP1nPsiP1nPhi = 0.;
20584 if(mp*dMult-mq)
20585 {
20586 cosP1nPsiP1nPhi = (p1n0kRe*dReQ1n-p1n0kIm*dImQ1n-q2n0kRe)/(mp*dMult-mq);
20587 // fill profile for <<sin n(psi1+phi2)>>:
20588 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsiP1nPhi,mp*dMult-mq);
20589 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20590 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][1]->SetBinContent(b,cosP1nPsiP1nPhi);
20591 } // end of if(mp*dMult-mq)
20592
20593 // <<cos n(psi1+phi2-phi3)>>:
20594 Double_t cosP1nPsi1P1nPhi2MPhi3 = 0.;
20595 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20596 {
20597 cosP1nPsi1P1nPhi2MPhi3 = (p1n0kRe*(pow(dImQ1n,2.)+pow(dReQ1n,2.)-dMult)
20598 - 1.*(q2n0kRe*dReQ1n+q2n0kIm*dImQ1n)
20599 - mq*dReQ1n+2.*q1n0kRe)
20600 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20601 // fill profile for <<sin n(psi1+phi2)>>:
20602 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1P1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20603 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20604 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][2]->SetBinContent(b,cosP1nPsi1P1nPhi2MPhi3);
20605 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20606
20607 // <<cos n(psi1-phi2-phi3)>>:
20608 Double_t cosP1nPsi1M1nPhi2MPhi3 = 0.;
20609 if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20610 {
20611 cosP1nPsi1M1nPhi2MPhi3 = (p1n0kRe*(pow(dReQ1n,2.)-pow(dImQ1n,2.))+2.*p1n0kIm*dReQ1n*dImQ1n
20612 - 1.*(p1n0kRe*dReQ2n+p1n0kIm*dImQ2n)
20613 - 2.*mq*dReQ1n+2.*q1n0kRe)
20614 / (mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20615 // fill profile for <<sin n(psi1+phi2)>>:
20616 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1M1nPhi2MPhi3,mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.));
20617 // histogram to store <sin n(psi1+phi2)> e-b-e (needed in some other methods):
20618 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][3]->SetBinContent(b,cosP1nPsi1M1nPhi2MPhi3);
20619 } // end of if(mq*(dMult-1.)*(dMult-2.)+(mp-mq)*dMult*(dMult-1.))
20620 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20621
20622} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTerms(TString type, TString ptOrEta)
20623
e1d101a6 20624//=========================================================================================================================
489d5531 20625
489d5531 20626void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUADiffFlow(TString type, TString ptOrEta)
20627{
1268c371 20628 // Transfer profiles into histogams and correctly propagate the error.
489d5531 20629
2a98ceb8 20630 Int_t t = 0; // type flag
20631 Int_t pe = 0; // ptEta flag
489d5531 20632
20633 if(type == "RP")
20634 {
20635 t = 0;
20636 } else if(type == "POI")
20637 {
20638 t = 1;
20639 }
20640
20641 if(ptOrEta == "Pt")
20642 {
20643 pe = 0;
20644 } else if(ptOrEta == "Eta")
20645 {
20646 pe = 1;
20647 }
20648
20649 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
20650 //Double_t minPtEta[2] = {fPtMin,fEtaMin};
20651 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
20652 //Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
20653
20654 for(Int_t sc=0;sc<2;sc++) // sin or cos
20655 {
20656 for(Int_t cti=0;cti<9;cti++) // correction term index
20657 {
20658 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20659 {
20660 Double_t correctionTerm = fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]->GetBinContent(b);
20661 fDiffFlowCorrectionTermsForNUAHist[t][pe][sc][cti]->SetBinContent(b,correctionTerm);
20662 // to be improved (propagate error correctly)
20663 // ...
20664 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20665 } // correction term index
20666 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos
20667
20668}// end of void AliFlowAnalysisWithQCumulants::FinalizeCorrectionTermsForNUADiffFlow(TString type, TString ptOrEta)
20669
e1d101a6 20670//=========================================================================================================================
489d5531 20671
489d5531 20672void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
20673{
1268c371 20674 // Calculate generalized differential flow cumulants (corrected for non-uniform acceptance).
20675
20676 // to be improved - propagate error also from non-isotropic terms
489d5531 20677
1268c371 20678 Int_t t = 0; // RP = 0, POI = 1
20679 Int_t pe = 0; // pt = 0, eta = 1
489d5531 20680
20681 if(type == "RP")
20682 {
1268c371 20683 t = 0;
489d5531 20684 } else if(type == "POI")
20685 {
1268c371 20686 t = 1;
489d5531 20687 }
20688
20689 if(ptOrEta == "Pt")
20690 {
1268c371 20691 pe = 0;
489d5531 20692 } else if(ptOrEta == "Eta")
20693 {
1268c371 20694 pe = 1;
489d5531 20695 }
1268c371 20696
20697 // Common:
489d5531 20698 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
489d5531 20699 // 2-particle correlation:
20700 Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>>
1268c371 20701 // sinus terms coming from reference flow:
489d5531 20702 Double_t sinP1nPhi = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(1); // <<sin(n*phi1)>>
20703 Double_t sinP1nPhi1P1nPhi2 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(2); // <<sin(n*(phi1+phi2))>>
20704 Double_t sinP1nPhi1M1nPhi2M1nPhi3 = fIntFlowCorrectionTermsForNUAHist[0]->GetBinContent(3); // <<sin(n*(phi1-phi2-phi3))>>
1268c371 20705 // cosinus terms coming from reference flow:
489d5531 20706 Double_t cosP1nPhi = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(1); // <<cos(n*phi1)>>
20707 Double_t cosP1nPhi1P1nPhi2 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(2); // <<cos(n*(phi1+phi2))>>
20708 Double_t cosP1nPhi1M1nPhi2M1nPhi3 = fIntFlowCorrectionTermsForNUAHist[1]->GetBinContent(3); // <<cos(n*(phi1-phi2-phi3))>>
20709
20710 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20711 {
20712 Double_t twoPrime = fDiffFlowCorrelationsHist[t][pe][0]->GetBinContent(b); // <<2'>>
20713 Double_t fourPrime = fDiffFlowCorrelationsHist[t][pe][1]->GetBinContent(b); // <<4'>>
20714 Double_t sinP1nPsi = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][0]->GetBinContent(b); // <<sin n(Psi)>>
20715 Double_t cosP1nPsi = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][0]->GetBinContent(b); // <<cos n(Psi)>>
20716 Double_t sinP1nPsi1P1nPhi2 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][1]->GetBinContent(b); // <<sin n(psi1+phi2)>>
20717 Double_t cosP1nPsi1P1nPhi2 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][1]->GetBinContent(b); // <<cos n(psi1+phi2)>>
20718 Double_t sinP1nPsi1P1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][2]->GetBinContent(b); // <<sin n(psi1+phi2-phi3)>>
20719 Double_t cosP1nPsi1P1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][2]->GetBinContent(b); // <<cos n(psi1+phi2-phi3)>>
20720 Double_t sinP1nPsi1M1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][0][3]->GetBinContent(b); // <<sin n(psi1-phi2-phi3)>>
20721 Double_t cosP1nPsi1M1nPhi2M1nPhi3 = fDiffFlowCorrectionTermsForNUAHist[t][pe][1][3]->GetBinContent(b); // <<cos n(psi1-phi2-phi3)>>
1268c371 20722 // Generalized QC{2'}:
489d5531 20723 Double_t qc2Prime = twoPrime - sinP1nPsi*sinP1nPhi - cosP1nPsi*cosP1nPhi;
1268c371 20724 if(fApplyCorrectionForNUA)
20725 {
20726 fDiffFlowCumulants[t][pe][0]->SetBinContent(b,qc2Prime);
20727 }
20728 if(TMath::Abs(twoPrime)>0.)
20729 {
20730 fDiffFlowDetectorBias[t][pe][0]->SetBinContent(b,qc2Prime/twoPrime); // detector bias = generalized/isotropic cumulant.
20731 }
20732 // Generalized QC{4'}:
489d5531 20733 Double_t qc4Prime = fourPrime-2.*twoPrime*two
20734 - cosP1nPsi*cosP1nPhi1M1nPhi2M1nPhi3
20735 + sinP1nPsi*sinP1nPhi1M1nPhi2M1nPhi3
20736 - cosP1nPhi*cosP1nPsi1M1nPhi2M1nPhi3
20737 + sinP1nPhi*sinP1nPsi1M1nPhi2M1nPhi3
20738 - 2.*cosP1nPhi*cosP1nPsi1P1nPhi2M1nPhi3
20739 - 2.*sinP1nPhi*sinP1nPsi1P1nPhi2M1nPhi3
20740 - cosP1nPsi1P1nPhi2*cosP1nPhi1P1nPhi2
20741 - sinP1nPsi1P1nPhi2*sinP1nPhi1P1nPhi2
20742 + 2.*cosP1nPhi1P1nPhi2*(cosP1nPsi*cosP1nPhi-sinP1nPsi*sinP1nPhi)
20743 + 2.*sinP1nPhi1P1nPhi2*(cosP1nPsi*sinP1nPhi+sinP1nPsi*cosP1nPhi)
20744 + 4.*two*(cosP1nPsi*cosP1nPhi+sinP1nPsi*sinP1nPhi)
20745 + 2.*cosP1nPsi1P1nPhi2*(pow(cosP1nPhi,2.)-pow(sinP1nPhi,2.))
20746 + 4.*sinP1nPsi1P1nPhi2*cosP1nPhi*sinP1nPhi
20747 + 4.*twoPrime*(pow(cosP1nPhi,2.)+pow(sinP1nPhi,2.))
20748 - 6.*(pow(cosP1nPhi,2.)-pow(sinP1nPhi,2.))
20749 * (cosP1nPsi*cosP1nPhi-sinP1nPsi*sinP1nPhi)
20750 - 12.*cosP1nPhi*sinP1nPhi
20751 * (sinP1nPsi*cosP1nPhi+cosP1nPsi*sinP1nPhi);
1268c371 20752 if(fApplyCorrectionForNUA)
20753 {
20754 fDiffFlowCumulants[t][pe][1]->SetBinContent(b,qc4Prime);
20755 }
20756 if(TMath::Abs(fourPrime-2.*twoPrime*two)>0.)
20757 {
20758 fDiffFlowDetectorBias[t][pe][1]->SetBinContent(b,qc4Prime/(fourPrime-2.*twoPrime*two)); // detector bias = generalized/isotropic cumulant.
20759 }
489d5531 20760 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
20761
20762} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCumulantsCorrectedForNUA(TString type, TString ptOrEta)
20763
1268c371 20764//==================================================================================================================================
489d5531 20765
20766void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta)
20767{
20768 // Calculate differential flow corrected for non-uniform acceptance.
20769
1268c371 20770 // to be improved: eventually I will have to access here masured correlations and NUA terms
20771 // instead of cumulants in order to propagate statistical error correctly also
20772 // to NUA terms (propagating errors directly from cumulants is WRONG for
20773 // differential flow becuase that doesn't account at all cross-covariance terms)
489d5531 20774
1268c371 20775 // REMARK: When NUA correction is apllied error for differential flow DOES NOT get corrected,
20776 // i.e. only value is being corrected, error is still the one relevant for isotropic
20777 // case. This eventually will be resolved.
20778
20779
20780 Int_t t = 0; // RP or POI
20781 Int_t pe = 0; // pt or eta
489d5531 20782
20783 if(type == "RP")
20784 {
1268c371 20785 t = 0;
489d5531 20786 } else if(type == "POI")
20787 {
1268c371 20788 t = 1;
20789 }
489d5531 20790 if(ptOrEta == "Pt")
20791 {
1268c371 20792 pe = 0;
489d5531 20793 } else if(ptOrEta == "Eta")
20794 {
1268c371 20795 pe = 1;
489d5531 20796 }
20797
1268c371 20798 // Common:
489d5531 20799 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
1268c371 20800 // Reference Q-cumulants
20801 Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); // QC{2}
20802 Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); // QC{4}
20803 // Loop over pt or eta bins:
489d5531 20804 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
20805 {
1268c371 20806 // Differential Q-cumulants:
20807 Double_t qc2Prime = fDiffFlowCumulants[t][pe][0]->GetBinContent(b); // QC{2'}
20808 Double_t qc4Prime = fDiffFlowCumulants[t][pe][1]->GetBinContent(b); // QC{4'}
489d5531 20809 // v'{2}:
1268c371 20810 if(qc2>0.)
489d5531 20811 {
1268c371 20812 Double_t v2Prime = qc2Prime/pow(qc2,0.5);
20813 if(TMath::Abs(v2Prime)>0.){fDiffFlow[t][pe][0]->SetBinContent(b,v2Prime);}
489d5531 20814 }
489d5531 20815 // v'{4}:
1268c371 20816 if(qc4<0.)
489d5531 20817 {
1268c371 20818 Double_t v4Prime = -qc4Prime/pow(-qc4,3./4.);
20819 if(TMath::Abs(v4Prime)>0.){fDiffFlow[t][pe][1]->SetBinContent(b,v4Prime);}
489d5531 20820 }
20821 } // end of for(Int_t b=1;b<=fnBinsPtEta[pe];b++)
20822
20823} // end of void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectedForNUA(TString type, TString ptOrEta);
20824
e1d101a6 20825//=========================================================================================================================
489d5531 20826
0328db2d 20827void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 20828{
20829 // Evaluate with nested loops multiparticle correlations for integrated flow (without using the particle weights).
20830
20831 // Remark: Results are stored in profile fIntFlowDirectCorrelations whose binning is organized as follows:
20832 //
20833 // 1st bin: <2>_{1n|1n} = two1n1n = cos(n*(phi1-phi2))>
20834 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n*(phi1-phi2))>
20835 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n*(phi1-phi2))>
20836 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n*(phi1-phi2))>
20837 // 5th bin: ---- EMPTY ----
20838 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n*(2.*phi1-phi2-phi3))>
20839 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n*(3.*phi1-2.*phi2-phi3))>
20840 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
20841 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n*(4.*phi1-3.*phi2-phi3))>
20842 // 10th bin: ---- EMPTY ----
20843 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n*(phi1+phi2-phi3-phi4))>
20844 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(2.*n*(phi1+phi2-phi3-phi4))>
20845 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
20846 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n*(3.*phi1-phi2-phi3-phi4))>
20847 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
20848 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
20849 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n*(3.*phi1+phi2-3.*phi3-phi4))>
20850 // 18th bin: ---- EMPTY ----
20851 // 19th bin: <5>_{2n|1n,1n,1n,1n} = five2n1n1n1n1n = <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
20852 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
20853 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
20854 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
20855 // 23rd bin: ---- EMPTY ----
20856 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
20857 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
20858 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
20859 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
20860 // 28th bin: ---- EMPTY ----
20861 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
20862 // 30th bin: ---- EMPTY ----
20863 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
8ed4edc7 20864 // 32nd bin: ---- EMPTY ----
b84464d3 20865 // Extra correlations for 3p TY study:
8ed4edc7 20866 // 33rd bin: <4>_{4n,2n|3n,3n}= four4n2n3n3n = <cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4))>
b84464d3 20867 // 34th bin: <5>_{3n,3n|2n,2n,2n} = five3n3n2n2n2n = <cos(n(3*phi1+3*phi2-2*phi3-2*phi4-2*phi5))>
20868 // Extra correlations for 6p TY study:
20869 // 35th bin: <2>_{5n|5n} = two5n5n = <cos(5n*(phi1-phi2)> T
20870 // 36th bin: <2>_{6n|6n} = two6n6n = <cos(6n*(phi1-phi2)> T
20871 // 37th bin: <3>_{5n|3n,2n} = three5n3n2n = <cos(n*(5*phi1-3*phi2-2*phi3)>
20872 // 38th bin: <3>_{5n|4n,1n} = three5n4n1n = <cos(n*(5*phi1-4*phi2-1*phi3)>
20873 // 39th bin: <3>_{6n|3n,3n} = three6n3n3n = <cos(n*(6*phi1-3*phi2-3*phi3)> T
20874 // 40th bin: <3>_{6n|4n,2n} = three6n4n2n = <cos(n*(6*phi1-4*phi2-2*phi3)> T
20875 // 41st bin: <3>_{6n|5n,1n} = three6n5n1n = <cos(n*(6*phi1-5*phi2-1*phi3)>
20876 // 42nd bin: <4>_{6n|3n,2n,1n} = four6n3n2n1n = <cos(n*(6*phi1-3*phi2-2*phi3-1*phi4)>
20877 // 43rd bin: <4>_{3n,2n|3n,2n} = four3n2n3n2n = <cos(n*(3*phi1+2*phi2-3*phi3-2*phi4)>
20878 // 44th bin: <4>_{4n,1n|3n,2n} = four4n1n3n2n = <cos(n*(4*phi1+1*phi2-3*phi3-2*phi4)>
20879 // 45th bin: <4>_{3n,3n|3n,3n} = four3n3n3n3n = <cos(3.*n*(phi1+phi2-phi3-phi4))> T
20880 // 46th bin: <4>_{4n,2n|3n,3n} = four4n2n3n3n = <cos(n*(4*phi1+2*phi2-3*phi3-3*phi4)>
20881 // 47th bin: <4>_{5n,1n|3n,3n} = four5n1n3n3n = <cos(n*(5*phi1+1*phi2-3*phi3-3*phi4)>
20882 // 48th bin: <4>_{4n,2n|4n,2n} = four4n2n4n2n = <cos(n*(4*phi1+2*phi2-4*phi3-2*phi4)> T
20883 // 49th bin: <4>_{5n,1n|4n,2n} = four5n1n4n2n = <cos(n*(5*phi1+1*phi2-4*phi3-2*phi4)>
20884 // 50th bin: <4>_{5n|3n,1n,1n} = four5n3n1n1n = <cos(n*(5*phi1-3*phi2-1*phi3-1*phi4)>
20885 // 51st bin: <4>_{5n|2n,2n,1n} = four5n2n2n1n = <cos(n*(5*phi1-2*phi2-2*phi3-1*phi4)>
20886 // 52nd bin: <4>_{5n,1n|5n,1n} = four5n1n5n1n = <cos(n*(5*phi1+1*phi2-5*phi3-1*phi4)>
20887 // 53rd bin: <5>_{3n,3n|3n,2n,1n} = four3n3n3n2n1n = <cos(n*(3*phi1+3*phi2-3*phi3-2*phi4-1*phi5)>
20888 // 54th bin: <5>_{4n,2n|3n,2n,1n} = four4n2n3n2n1n = <cos(n*(4*phi1+2*phi2-3*phi3-2*phi4-1*phi5)>
20889 // 55th bin: <5>_{3n,2n|3n,1n,1n} = four3n2n3n1n1n = <cos(n*(3*phi1+2*phi2-3*phi3-1*phi4-1*phi5)>
20890 // 56th bin: <5>_{3n,2n|2n,2n,1n} = four3n2n2n2n1n = <cos(n*(3*phi1+2*phi2-2*phi3-2*phi4-1*phi5)>
20891 // 57th bin: <5>_{5n,1n|3n,2n,1n} = four5n1n3n2n1n = <cos(n*(5*phi1+1*phi2-3*phi3-2*phi4-1*phi5)>
20892 // 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 20893
489d5531 20894 Int_t nPrim = anEvent->NumberOfTracks();
20895 AliFlowTrackSimple *aftsTrack = NULL;
20896 Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
20897 Int_t n = fHarmonic;
20898 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 20899 Double_t dMult = (*fSpk)(0,0);
489d5531 20900 cout<<endl;
20901 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
20902 if(dMult<2)
20903 {
20904 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
20905 } else if (dMult>fMaxAllowedMultiplicity)
20906 {
20907 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
20908 } else
20909 {
20910 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
20911 }
20912
20913 // 2-particle correlations:
20914 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
20915 {
20916 for(Int_t i1=0;i1<nPrim;i1++)
20917 {
20918 aftsTrack=anEvent->GetTrack(i1);
20919 if(!(aftsTrack->InRPSelection())) continue;
20920 phi1=aftsTrack->Phi();
20921 for(Int_t i2=0;i2<nPrim;i2++)
20922 {
20923 if(i2==i1)continue;
20924 aftsTrack=anEvent->GetTrack(i2);
20925 if(!(aftsTrack->InRPSelection())) continue;
20926 phi2=aftsTrack->Phi();
20927 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
20928 // fill the profile with 2-p correlations:
b84464d3 20929 fIntFlowDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),1.); // <cos(n*(phi1-phi2))>
20930 fIntFlowDirectCorrelations->Fill(1.5,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
20931 fIntFlowDirectCorrelations->Fill(2.5,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
20932 fIntFlowDirectCorrelations->Fill(3.5,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>
20933 fIntFlowDirectCorrelations->Fill(34.5,cos(5.*n*(phi1-phi2)),1.); // <cos(5n*(phi1-phi2))>
20934 fIntFlowDirectCorrelations->Fill(35.5,cos(6.*n*(phi1-phi2)),1.); // <cos(6n*(phi1-phi2))>
489d5531 20935 } // end of for(Int_t i2=0;i2<nPrim;i2++)
20936 } // end of for(Int_t i1=0;i1<nPrim;i1++)
20937 } // end of if(nPrim>=2)
20938
20939 // 3-particle correlations:
20940 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
20941 {
20942 for(Int_t i1=0;i1<nPrim;i1++)
20943 {
20944 aftsTrack=anEvent->GetTrack(i1);
20945 if(!(aftsTrack->InRPSelection())) continue;
20946 phi1=aftsTrack->Phi();
20947 for(Int_t i2=0;i2<nPrim;i2++)
20948 {
20949 if(i2==i1)continue;
20950 aftsTrack=anEvent->GetTrack(i2);
20951 if(!(aftsTrack->InRPSelection())) continue;
20952 phi2=aftsTrack->Phi();
20953 for(Int_t i3=0;i3<nPrim;i3++)
20954 {
20955 if(i3==i1||i3==i2)continue;
20956 aftsTrack=anEvent->GetTrack(i3);
20957 if(!(aftsTrack->InRPSelection())) continue;
20958 phi3=aftsTrack->Phi();
20959 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
20960 // fill the profile with 3-p correlations:
b84464d3 20961 fIntFlowDirectCorrelations->Fill(5.,cos(2.*n*phi1-n*(phi2+phi3)),1.); //<3>_{2n|nn,n}
20962 fIntFlowDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.); //<3>_{3n|2n,n}
20963 fIntFlowDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); //<3>_{4n|2n,2n}
20964 fIntFlowDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),1.); //<3>_{4n|3n,n}
20965 fIntFlowDirectCorrelations->Fill(36.5,cos(5.*n*phi1-3.*n*phi2-2.*n*phi3),1.); //<3>_{5n|3n,2n}
20966 fIntFlowDirectCorrelations->Fill(37.5,cos(5.*n*phi1-4.*n*phi2-1.*n*phi3),1.); //<3>_{5n|4n,1n}
20967 fIntFlowDirectCorrelations->Fill(38.5,cos(6.*n*phi1-3.*n*phi2-3.*n*phi3),1.); //<3>_{6n|3n,3n}
20968 fIntFlowDirectCorrelations->Fill(39.5,cos(6.*n*phi1-4.*n*phi2-2.*n*phi3),1.); //<3>_{6n|4n,2n}
20969 fIntFlowDirectCorrelations->Fill(40.5,cos(6.*n*phi1-5.*n*phi2-1.*n*phi3),1.); //<3>_{6n|5n,1n}
489d5531 20970 } // end of for(Int_t i3=0;i3<nPrim;i3++)
20971 } // end of for(Int_t i2=0;i2<nPrim;i2++)
20972 } // end of for(Int_t i1=0;i1<nPrim;i1++)
20973 } // end of if(nPrim>=3)
20974
20975 // 4-particle correlations:
20976 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
20977 {
20978 for(Int_t i1=0;i1<nPrim;i1++)
20979 {
20980 aftsTrack=anEvent->GetTrack(i1);
20981 if(!(aftsTrack->InRPSelection())) continue;
20982 phi1=aftsTrack->Phi();
20983 for(Int_t i2=0;i2<nPrim;i2++)
20984 {
20985 if(i2==i1)continue;
20986 aftsTrack=anEvent->GetTrack(i2);
20987 if(!(aftsTrack->InRPSelection())) continue;
20988 phi2=aftsTrack->Phi();
20989 for(Int_t i3=0;i3<nPrim;i3++)
20990 {
20991 if(i3==i1||i3==i2)continue;
20992 aftsTrack=anEvent->GetTrack(i3);
20993 if(!(aftsTrack->InRPSelection())) continue;
20994 phi3=aftsTrack->Phi();
20995 for(Int_t i4=0;i4<nPrim;i4++)
20996 {
20997 if(i4==i1||i4==i2||i4==i3)continue;
20998 aftsTrack=anEvent->GetTrack(i4);
20999 if(!(aftsTrack->InRPSelection())) continue;
21000 phi4=aftsTrack->Phi();
21001 if(nPrim==4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush;
21002 // fill the profile with 4-p correlations:
21003 fIntFlowDirectCorrelations->Fill(10.,cos(n*phi1+n*phi2-n*phi3-n*phi4),1.); // <4>_{n,n|n,n}
21004 fIntFlowDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),1.); // <4>_{2n,n|2n,n}
21005 fIntFlowDirectCorrelations->Fill(12.,cos(2.*n*phi1+2*n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{2n,2n|2n,2n}
21006 fIntFlowDirectCorrelations->Fill(13.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),1.); // <4>_{3n|n,n,n}
21007 fIntFlowDirectCorrelations->Fill(14.,cos(3.*n*phi1+n*phi2-3.*n*phi3-n*phi4),1.); // <4>_{3n,n|3n,n}
21008 fIntFlowDirectCorrelations->Fill(15.,cos(3.*n*phi1+n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{3n,n|2n,2n}
21009 fIntFlowDirectCorrelations->Fill(16.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),1.); // <4>_{4n|2n,n,n}
b84464d3 21010 fIntFlowDirectCorrelations->Fill(32.,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
21011 fIntFlowDirectCorrelations->Fill(41.5,cos(n*(6.*phi1-3.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{6n|3n,2n,1n}
21012 fIntFlowDirectCorrelations->Fill(42.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{3n,2n|3n,2n}
21013 fIntFlowDirectCorrelations->Fill(43.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{4n,1n|3n,2n}
21014 fIntFlowDirectCorrelations->Fill(44.5,cos(n*(3.*phi1+3.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{3n,3n|3n,3n}
21015 fIntFlowDirectCorrelations->Fill(45.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
21016 fIntFlowDirectCorrelations->Fill(46.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{5n,1n|3n,3n}
21017 fIntFlowDirectCorrelations->Fill(47.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{4n,2n|4n,2n}
21018 fIntFlowDirectCorrelations->Fill(48.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{5n,1n|4n,2n}
21019 fIntFlowDirectCorrelations->Fill(49.5,cos(n*(5.*phi1-3.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{5n|3n,1n,1n}
21020 fIntFlowDirectCorrelations->Fill(50.5,cos(n*(5.*phi1-2.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{5n|2n,2n,1n}
403e3389 21021 fIntFlowDirectCorrelations->Fill(51.5,cos(n*(5.*phi1+1.*phi2-5.*phi3-1.*phi4)),1.); // <4>_{5n,1n|5n,1n}
21022 fIntFlowDirectCorrelations->Fill(58.5,cos(n*(6.*phi1-4.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{6n|4n,1n,1n}
21023 fIntFlowDirectCorrelations->Fill(59.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{6n|2n,2n,2n}
489d5531 21024 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21025 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21026 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21027 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21028 } // end of if(nPrim>=)
21029
21030 // 5-particle correlations:
21031 if(nPrim>=5 && nPrim<=fMaxAllowedMultiplicity)
21032 {
21033 for(Int_t i1=0;i1<nPrim;i1++)
21034 {
21035 aftsTrack=anEvent->GetTrack(i1);
21036 if(!(aftsTrack->InRPSelection())) continue;
21037 phi1=aftsTrack->Phi();
21038 for(Int_t i2=0;i2<nPrim;i2++)
21039 {
21040 if(i2==i1)continue;
21041 aftsTrack=anEvent->GetTrack(i2);
21042 if(!(aftsTrack->InRPSelection())) continue;
21043 phi2=aftsTrack->Phi();
21044 for(Int_t i3=0;i3<nPrim;i3++)
21045 {
21046 if(i3==i1||i3==i2)continue;
21047 aftsTrack=anEvent->GetTrack(i3);
21048 if(!(aftsTrack->InRPSelection())) continue;
21049 phi3=aftsTrack->Phi();
21050 for(Int_t i4=0;i4<nPrim;i4++)
21051 {
21052 if(i4==i1||i4==i2||i4==i3)continue;
21053 aftsTrack=anEvent->GetTrack(i4);
21054 if(!(aftsTrack->InRPSelection())) continue;
21055 phi4=aftsTrack->Phi();
21056 for(Int_t i5=0;i5<nPrim;i5++)
21057 {
21058 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21059 aftsTrack=anEvent->GetTrack(i5);
21060 if(!(aftsTrack->InRPSelection())) continue;
21061 phi5=aftsTrack->Phi();
21062 if(nPrim==5) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<"\r"<<flush;
21063 // fill the profile with 5-p correlations:
b84464d3 21064 fIntFlowDirectCorrelations->Fill(18.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1.); // <5>_{2n,n|n,n,n}
21065 fIntFlowDirectCorrelations->Fill(19.,cos(2.*n*phi1+2.*n*phi2-2.*n*phi3-n*phi4-n*phi5),1.); // <5>_{2n,2n|2n,n,n}
21066 fIntFlowDirectCorrelations->Fill(20.,cos(3.*n*phi1+n*phi2-2.*n*phi3-n*phi4-n*phi5),1.); // <5>_{3n,n|2n,n,n}
21067 fIntFlowDirectCorrelations->Fill(21.,cos(4.*n*phi1-n*phi2-n*phi3-n*phi4-n*phi5),1.); // <5>_{4n|n,n,n,n}
21068 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}
21069 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}
21070 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}
21071 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}
21072 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}
21073 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 21074 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}
21075 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 21076 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21077 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21078 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21079 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21080 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21081 } // end of if(nPrim>=5)
21082
21083 // 6-particle correlations:
21084 if(nPrim>=6 && nPrim<=fMaxAllowedMultiplicity)
21085 {
21086 for(Int_t i1=0;i1<nPrim;i1++)
21087 {
21088 aftsTrack=anEvent->GetTrack(i1);
21089 if(!(aftsTrack->InRPSelection())) continue;
21090 phi1=aftsTrack->Phi();
21091 for(Int_t i2=0;i2<nPrim;i2++)
21092 {
21093 if(i2==i1)continue;
21094 aftsTrack=anEvent->GetTrack(i2);
21095 if(!(aftsTrack->InRPSelection())) continue;
21096 phi2=aftsTrack->Phi();
21097 for(Int_t i3=0;i3<nPrim;i3++)
21098 {
21099 if(i3==i1||i3==i2)continue;
21100 aftsTrack=anEvent->GetTrack(i3);
21101 if(!(aftsTrack->InRPSelection())) continue;
21102 phi3=aftsTrack->Phi();
21103 for(Int_t i4=0;i4<nPrim;i4++)
21104 {
21105 if(i4==i1||i4==i2||i4==i3)continue;
21106 aftsTrack=anEvent->GetTrack(i4);
21107 if(!(aftsTrack->InRPSelection())) continue;
21108 phi4=aftsTrack->Phi();
21109 for(Int_t i5=0;i5<nPrim;i5++)
21110 {
21111 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21112 aftsTrack=anEvent->GetTrack(i5);
21113 if(!(aftsTrack->InRPSelection())) continue;
21114 phi5=aftsTrack->Phi();
21115 for(Int_t i6=0;i6<nPrim;i6++)
21116 {
21117 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21118 aftsTrack=anEvent->GetTrack(i6);
21119 if(!(aftsTrack->InRPSelection())) continue;
21120 phi6=aftsTrack->Phi();
21121 if(nPrim==6) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<"\r"<<flush;
21122 // fill the profile with 6-p correlations:
403e3389 21123 fIntFlowDirectCorrelations->Fill(23.,cos(n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6),1.); // <6>_{1n,1n,1n|1n,1n,1n}
21124 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}
21125 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}
21126 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 21127 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 21128 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 21129 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21130 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21131 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21132 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21133 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21134 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21135 } // end of if(nPrim>=6)
21136
21137 // 7-particle correlations:
21138 if(nPrim>=7 && nPrim<=fMaxAllowedMultiplicity)
21139 {
21140 for(Int_t i1=0;i1<nPrim;i1++)
21141 {
21142 aftsTrack=anEvent->GetTrack(i1);
21143 if(!(aftsTrack->InRPSelection())) continue;
21144 phi1=aftsTrack->Phi();
21145 for(Int_t i2=0;i2<nPrim;i2++)
21146 {
21147 if(i2==i1)continue;
21148 aftsTrack=anEvent->GetTrack(i2);
21149 if(!(aftsTrack->InRPSelection())) continue;
21150 phi2=aftsTrack->Phi();
21151 for(Int_t i3=0;i3<nPrim;i3++)
21152 {
21153 if(i3==i1||i3==i2)continue;
21154 aftsTrack=anEvent->GetTrack(i3);
21155 if(!(aftsTrack->InRPSelection())) continue;
21156 phi3=aftsTrack->Phi();
21157 for(Int_t i4=0;i4<nPrim;i4++)
21158 {
21159 if(i4==i1||i4==i2||i4==i3)continue;
21160 aftsTrack=anEvent->GetTrack(i4);
21161 if(!(aftsTrack->InRPSelection())) continue;
21162 phi4=aftsTrack->Phi();
21163 for(Int_t i5=0;i5<nPrim;i5++)
21164 {
21165 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21166 aftsTrack=anEvent->GetTrack(i5);
21167 if(!(aftsTrack->InRPSelection())) continue;
21168 phi5=aftsTrack->Phi();
21169 for(Int_t i6=0;i6<nPrim;i6++)
21170 {
21171 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21172 aftsTrack=anEvent->GetTrack(i6);
21173 if(!(aftsTrack->InRPSelection())) continue;
21174 phi6=aftsTrack->Phi();
21175 for(Int_t i7=0;i7<nPrim;i7++)
21176 {
21177 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
21178 aftsTrack=anEvent->GetTrack(i7);
21179 if(!(aftsTrack->InRPSelection())) continue;
21180 phi7=aftsTrack->Phi();
21181 if(nPrim==7) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<" "<<i7<<"\r"<<flush;
21182 // fill the profile with 7-p correlation:
21183 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}
21184 } // end of for(Int_t i7=0;i7<nPrim;i7++)
21185 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21186 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21187 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21188 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21189 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21190 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21191 } // end of if(nPrim>=7)
21192
21193 // 8-particle correlations:
21194 if(nPrim>=8 && nPrim<=fMaxAllowedMultiplicity)
21195 {
21196 for(Int_t i1=0;i1<nPrim;i1++)
21197 {
21198 aftsTrack=anEvent->GetTrack(i1);
21199 if(!(aftsTrack->InRPSelection())) continue;
21200 phi1=aftsTrack->Phi();
21201 for(Int_t i2=0;i2<nPrim;i2++)
21202 {
21203 if(i2==i1)continue;
21204 aftsTrack=anEvent->GetTrack(i2);
21205 if(!(aftsTrack->InRPSelection())) continue;
21206 phi2=aftsTrack->Phi();
21207 for(Int_t i3=0;i3<nPrim;i3++)
21208 {
21209 if(i3==i1||i3==i2)continue;
21210 aftsTrack=anEvent->GetTrack(i3);
21211 if(!(aftsTrack->InRPSelection())) continue;
21212 phi3=aftsTrack->Phi();
21213 for(Int_t i4=0;i4<nPrim;i4++)
21214 {
21215 if(i4==i1||i4==i2||i4==i3)continue;
21216 aftsTrack=anEvent->GetTrack(i4);
21217 if(!(aftsTrack->InRPSelection())) continue;
21218 phi4=aftsTrack->Phi();
21219 for(Int_t i5=0;i5<nPrim;i5++)
21220 {
21221 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21222 aftsTrack=anEvent->GetTrack(i5);
21223 if(!(aftsTrack->InRPSelection())) continue;
21224 phi5=aftsTrack->Phi();
21225 for(Int_t i6=0;i6<nPrim;i6++)
21226 {
21227 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
21228 aftsTrack=anEvent->GetTrack(i6);
21229 if(!(aftsTrack->InRPSelection())) continue;
21230 phi6=aftsTrack->Phi();
21231 for(Int_t i7=0;i7<nPrim;i7++)
21232 {
21233 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
21234 aftsTrack=anEvent->GetTrack(i7);
21235 if(!(aftsTrack->InRPSelection())) continue;
21236 phi7=aftsTrack->Phi();
21237 for(Int_t i8=0;i8<nPrim;i8++)
21238 {
21239 if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)continue;
21240 aftsTrack=anEvent->GetTrack(i8);
21241 if(!(aftsTrack->InRPSelection())) continue;
21242 phi8=aftsTrack->Phi();
21243 cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<" "<<i6<<" "<<i7<<" "<<i8<<"\r"<<flush;
21244 // fill the profile with 8-p correlation:
21245 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}
21246 } // end of for(Int_t i8=0;i8<nPrim;i8++)
21247 } // end of for(Int_t i7=0;i7<nPrim;i7++)
21248 } // end of for(Int_t i6=0;i6<nPrim;i6++)
21249 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21250 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21251 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21252 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21253 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21254 } // end of if(nPrim>=8)
21255
21256 cout<<endl;
21257
21258} // end of AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoops(AliFlowEventSimple* anEvent)
21259
e1d101a6 21260//================================================================================================================
21261
21262void AliFlowAnalysisWithQCumulants::EvaluateMixedHarmonicsWithNestedLoops(AliFlowEventSimple * const anEvent)
21263{
21264 // Evaluate with nested loops multi-particle correlations for mixed harmonics.
21265
21266 Int_t nPrim = anEvent->NumberOfTracks();
21267 AliFlowTrackSimple *aftsTrack = NULL;
21268 Double_t phi1=0.;
21269 Double_t phi2=0.;
21270 Double_t phi3=0.;
21271 Double_t phi4=0.;
21272 Double_t phi5=0.;
21273 /*Double_t phi6=0.;
21274 Double_t phi7=0.;
21275 Double_t phi8=0.;*/
21276 Int_t n = fHarmonic;
21277 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // TBI: is such casting safe in general?
21278 Double_t dMult = (*fSpk)(0,0);
21279 cout<<endl;
21280 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21281 if(dMult<2)
21282 {
21283 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21284 } else if (dMult>fMaxAllowedMultiplicity)
21285 {
21286 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21287 } else
21288 {
21289 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
21290 }
21291
21292 // 2-particle correlations:
21293 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21294 {
21295 for(Int_t i1=0;i1<nPrim;i1++)
21296 {
21297 aftsTrack=anEvent->GetTrack(i1);
21298 if(!(aftsTrack->InRPSelection())) continue;
21299 phi1=aftsTrack->Phi();
21300 for(Int_t i2=0;i2<nPrim;i2++)
21301 {
21302 if(i2==i1)continue;
21303 aftsTrack=anEvent->GetTrack(i2);
21304 if(!(aftsTrack->InRPSelection())) continue;
21305 phi2=aftsTrack->Phi();
21306 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21307 // Fill the profile fMixedHarmonicsNestedLoops with 2-p correlations:
21308 fMixedHarmonicsNestedLoops->Fill(0.5,cos(1.*n*(phi1-phi2)),1.); // <cos(1n*(phi1-phi2))>
21309 fMixedHarmonicsNestedLoops->Fill(1.5,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
21310 fMixedHarmonicsNestedLoops->Fill(2.5,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
21311 fMixedHarmonicsNestedLoops->Fill(3.5,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>
21312 fMixedHarmonicsNestedLoops->Fill(4.5,cos(5.*n*(phi1-phi2)),1.); // <cos(5n*(phi1-phi2))>
21313 fMixedHarmonicsNestedLoops->Fill(5.5,cos(6.*n*(phi1-phi2)),1.); // <cos(6n*(phi1-phi2))>
21314 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21315 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21316 } // end of if(nPrim>=2)
21317
21318 // 3-particle correlations:
21319 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21320 {
21321 for(Int_t i1=0;i1<nPrim;i1++)
21322 {
21323 aftsTrack=anEvent->GetTrack(i1);
21324 if(!(aftsTrack->InRPSelection())) continue;
21325 phi1=aftsTrack->Phi();
21326 for(Int_t i2=0;i2<nPrim;i2++)
21327 {
21328 if(i2==i1)continue;
21329 aftsTrack=anEvent->GetTrack(i2);
21330 if(!(aftsTrack->InRPSelection())) continue;
21331 phi2=aftsTrack->Phi();
21332 for(Int_t i3=0;i3<nPrim;i3++)
21333 {
21334 if(i3==i1||i3==i2)continue;
21335 aftsTrack=anEvent->GetTrack(i3);
21336 if(!(aftsTrack->InRPSelection())) continue;
21337 phi3=aftsTrack->Phi();
21338 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
21339 // Fill the profile fMixedHarmonicsNestedLoops with 3-p correlations:
21340 fMixedHarmonicsNestedLoops->Fill( 6.5,cos(2.*n*phi1-n*(phi2+phi3)),1.); // <3>_{2n|1n,1n}
21341 fMixedHarmonicsNestedLoops->Fill( 7.5,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); // <3>_{4n|2n,2n}
21342 fMixedHarmonicsNestedLoops->Fill( 8.5,cos(6.*n*phi1-3.*n*phi2-3.*n*phi3),1.); // <3>_{6n|3n,3n}
21343 fMixedHarmonicsNestedLoops->Fill(10.5,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.); // <3>_{3n|2n,1n}
21344 fMixedHarmonicsNestedLoops->Fill(11.5,cos(4.*n*phi1-3.*n*phi2-1.*n*phi3),1.); // <3>_{4n|3n,1n}
21345 fMixedHarmonicsNestedLoops->Fill(12.5,cos(5.*n*phi1-3.*n*phi2-2.*n*phi3),1.); // <3>_{5n|3n,2n}
21346 fMixedHarmonicsNestedLoops->Fill(13.5,cos(5.*n*phi1-4.*n*phi2-1.*n*phi3),1.); // <3>_{5n|4n,1n}
21347 fMixedHarmonicsNestedLoops->Fill(14.5,cos(6.*n*phi1-4.*n*phi2-2.*n*phi3),1.); // <3>_{6n|4n,2n}
21348 fMixedHarmonicsNestedLoops->Fill(15.5,cos(6.*n*phi1-5.*n*phi2-1.*n*phi3),1.); // <3>_{6n|5n,1n}
21349 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21350 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21351 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21352 } // end of if(nPrim>=3)
21353
21354 // 4-particle correlations:
21355 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
21356 {
21357 for(Int_t i1=0;i1<nPrim;i1++)
21358 {
21359 aftsTrack=anEvent->GetTrack(i1);
21360 if(!(aftsTrack->InRPSelection())) continue;
21361 phi1=aftsTrack->Phi();
21362 for(Int_t i2=0;i2<nPrim;i2++)
21363 {
21364 if(i2==i1)continue;
21365 aftsTrack=anEvent->GetTrack(i2);
21366 if(!(aftsTrack->InRPSelection())) continue;
21367 phi2=aftsTrack->Phi();
21368 for(Int_t i3=0;i3<nPrim;i3++)
21369 {
21370 if(i3==i1||i3==i2)continue;
21371 aftsTrack=anEvent->GetTrack(i3);
21372 if(!(aftsTrack->InRPSelection())) continue;
21373 phi3=aftsTrack->Phi();
21374 for(Int_t i4=0;i4<nPrim;i4++)
21375 {
21376 if(i4==i1||i4==i2||i4==i3)continue;
21377 aftsTrack=anEvent->GetTrack(i4);
21378 if(!(aftsTrack->InRPSelection())) continue;
21379 phi4=aftsTrack->Phi();
21380 if(nPrim==4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush;
21381 // fill the profile with 4-p correlations:
21382 fMixedHarmonicsNestedLoops->Fill(16.5,cos(1.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{1n,1n|1n,1n}
21383 fMixedHarmonicsNestedLoops->Fill(17.5,cos(2.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{2n,2n|2n,2n}
21384 fMixedHarmonicsNestedLoops->Fill(18.5,cos(3.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{3n,3n|3n,3n}
21385 fMixedHarmonicsNestedLoops->Fill(19.5,cos(4.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{4n,4n|4n,4n}
21386 fMixedHarmonicsNestedLoops->Fill(20.5,cos(5.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{5n,5n|5n,5n}
21387 fMixedHarmonicsNestedLoops->Fill(21.5,cos(6.*n*(phi1+phi2-phi3-phi4)),1.); // <4>_{6n,6n|6n,6n}
21388 fMixedHarmonicsNestedLoops->Fill(23.5,cos(n*(2.*phi1+1.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{2n,1n|2n,1n}
21389 fMixedHarmonicsNestedLoops->Fill(24.5,cos(n*(3.*phi1+1.*phi2-3.*phi3-1.*phi4)),1.); // <4>_{3n,1n|3n,1n}
21390 fMixedHarmonicsNestedLoops->Fill(25.5,cos(n*(3.*phi1+2.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{3n,2n|3n,2n}
21391 fMixedHarmonicsNestedLoops->Fill(26.5,cos(n*(4.*phi1+1.*phi2-4.*phi3-1.*phi4)),1.); // <4>_{4n,1n|4n,1n}
21392 fMixedHarmonicsNestedLoops->Fill(27.5,cos(n*(4.*phi1+2.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{4n,2n|4n,2n}
21393 fMixedHarmonicsNestedLoops->Fill(28.5,cos(n*(4.*phi1+3.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{4n,3n|4n,3n}
21394 fMixedHarmonicsNestedLoops->Fill(29.5,cos(n*(5.*phi1+1.*phi2-5.*phi3-1.*phi4)),1.); // <4>_{5n,1n|5n,1n}
21395 fMixedHarmonicsNestedLoops->Fill(30.5,cos(n*(5.*phi1+2.*phi2-5.*phi3-2.*phi4)),1.); // <4>_{5n,2n|5n,2n}
21396 fMixedHarmonicsNestedLoops->Fill(31.5,cos(n*(5.*phi1+3.*phi2-5.*phi3-3.*phi4)),1.); // <4>_{5n,3n|5n,3n}
21397 fMixedHarmonicsNestedLoops->Fill(32.5,cos(n*(5.*phi1+4.*phi2-5.*phi3-4.*phi4)),1.); // <4>_{5n,4n|5n,4n}
21398 fMixedHarmonicsNestedLoops->Fill(33.5,cos(n*(6.*phi1+1.*phi2-6.*phi3-1.*phi4)),1.); // <4>_{6n,1n|6n,1n}
21399 fMixedHarmonicsNestedLoops->Fill(34.5,cos(n*(6.*phi1+2.*phi2-6.*phi3-2.*phi4)),1.); // <4>_{6n,2n|6n,2n}
21400 fMixedHarmonicsNestedLoops->Fill(35.5,cos(n*(6.*phi1+3.*phi2-6.*phi3-3.*phi4)),1.); // <4>_{6n,3n|6n,3n}
21401 fMixedHarmonicsNestedLoops->Fill(36.5,cos(n*(6.*phi1+4.*phi2-6.*phi3-4.*phi4)),1.); // <4>_{6n,4n|6n,4n}
21402 fMixedHarmonicsNestedLoops->Fill(37.5,cos(n*(6.*phi1+5.*phi2-6.*phi3-5.*phi4)),1.); // <4>_{6n,5n|6n,5n}
21403 fMixedHarmonicsNestedLoops->Fill(39.5,cos(n*(3.*phi1-1.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{3n|1n,1n,1n}
21404 fMixedHarmonicsNestedLoops->Fill(40.5,cos(n*(6.*phi1-2.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{6n|2n,2n,2n}
21405 fMixedHarmonicsNestedLoops->Fill(42.5,cos(n*(3.*phi1+1.*phi2-2.*phi3-2.*phi4)),1.); // <4>_{3n,1n|2n,2n}
21406 fMixedHarmonicsNestedLoops->Fill(43.5,cos(n*(4.*phi1-2.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{4n|2n,1n,1n}
21407 fMixedHarmonicsNestedLoops->Fill(44.5,cos(n*(4.*phi1+2.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{4n,2n|3n,3n}
21408 fMixedHarmonicsNestedLoops->Fill(45.5,cos(n*(5.*phi1-2.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{5n|2n,2n,1n}
21409 fMixedHarmonicsNestedLoops->Fill(46.5,cos(n*(5.*phi1-3.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{5n|3n,1n,1n}
21410 fMixedHarmonicsNestedLoops->Fill(47.5,cos(n*(5.*phi1+1.*phi2-3.*phi3-3.*phi4)),1.); // <4>_{5n,1n|3n,3n}
21411 fMixedHarmonicsNestedLoops->Fill(48.5,cos(n*(5.*phi1+3.*phi2-4.*phi3-4.*phi4)),1.); // <4>_{5n,3n|4n,4n}
21412 fMixedHarmonicsNestedLoops->Fill(49.5,cos(n*(6.*phi1-4.*phi2-1.*phi3-1.*phi4)),1.); // <4>_{6n|4n,1n,1n}
21413 fMixedHarmonicsNestedLoops->Fill(50.5,cos(n*(6.*phi1+2.*phi2-4.*phi3-4.*phi4)),1.); // <4>_{6n,2n|4n,4n}
21414 fMixedHarmonicsNestedLoops->Fill(51.5,cos(n*(6.*phi1+4.*phi2-5.*phi3-5.*phi4)),1.); // <4>_{6n,4n|5n,5n}
21415 fMixedHarmonicsNestedLoops->Fill(53.5,cos(n*(4.*phi1+1.*phi2-3.*phi3-2.*phi4)),1.); // <4>_{4n,1n|3n,2n}
21416 fMixedHarmonicsNestedLoops->Fill(54.5,cos(n*(5.*phi1+1.*phi2-4.*phi3-2.*phi4)),1.); // <4>_{5n,1n|4n,2n}
21417 fMixedHarmonicsNestedLoops->Fill(55.5,cos(n*(5.*phi1+2.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{5n,2n|4n,3n}
21418 fMixedHarmonicsNestedLoops->Fill(56.5,cos(n*(6.*phi1+1.*phi2-4.*phi3-3.*phi4)),1.); // <4>_{6n,1n|4n,3n}
21419 fMixedHarmonicsNestedLoops->Fill(57.5,cos(n*(6.*phi1+1.*phi2-5.*phi3-2.*phi4)),1.); // <4>_{6n,1n|5n,2n}
21420 fMixedHarmonicsNestedLoops->Fill(58.5,cos(n*(6.*phi1-3.*phi2-2.*phi3-1.*phi4)),1.); // <4>_{6n|3n,2n,1n}
21421 fMixedHarmonicsNestedLoops->Fill(59.5,cos(n*(6.*phi1+2.*phi2-5.*phi3-3.*phi4)),1.); // <4>_{6n,2n|5n,3n}
21422 fMixedHarmonicsNestedLoops->Fill(60.5,cos(n*(6.*phi1+3.*phi2-5.*phi3-4.*phi4)),1.); // <4>_{6n,3n|5n,4n}
21423 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21424 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21425 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21426 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21427 } // end of if(nPrim>=)
21428
21429 // 5-particle correlations:
21430 if(nPrim>=5 && nPrim<=fMaxAllowedMultiplicity)
21431 {
21432 for(Int_t i1=0;i1<nPrim;i1++)
21433 {
21434 aftsTrack=anEvent->GetTrack(i1);
21435 if(!(aftsTrack->InRPSelection())) continue;
21436 phi1=aftsTrack->Phi();
21437 for(Int_t i2=0;i2<nPrim;i2++)
21438 {
21439 if(i2==i1)continue;
21440 aftsTrack=anEvent->GetTrack(i2);
21441 if(!(aftsTrack->InRPSelection())) continue;
21442 phi2=aftsTrack->Phi();
21443 for(Int_t i3=0;i3<nPrim;i3++)
21444 {
21445 if(i3==i1||i3==i2)continue;
21446 aftsTrack=anEvent->GetTrack(i3);
21447 if(!(aftsTrack->InRPSelection())) continue;
21448 phi3=aftsTrack->Phi();
21449 for(Int_t i4=0;i4<nPrim;i4++)
21450 {
21451 if(i4==i1||i4==i2||i4==i3)continue;
21452 aftsTrack=anEvent->GetTrack(i4);
21453 if(!(aftsTrack->InRPSelection())) continue;
21454 phi4=aftsTrack->Phi();
21455 for(Int_t i5=0;i5<nPrim;i5++)
21456 {
21457 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
21458 aftsTrack=anEvent->GetTrack(i5);
21459 if(!(aftsTrack->InRPSelection())) continue;
21460 phi5=aftsTrack->Phi();
21461 if(nPrim==5) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<" "<<i5<<"\r"<<flush;
21462 // fill the profile with 5-p correlations:
21463 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))>
21464 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))>
21465 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))>
21466 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))>
21467 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))>
21468 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))>
21469 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))>
21470 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))>
21471 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))>
21472 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))>
21473 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))>
21474 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))>
21475 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))>
21476 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))>
21477 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))>
21478 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))>
21479 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))>
21480 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))>
21481 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))>
21482 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))>
21483 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))>
21484 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))>
21485 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))>
21486 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))>
21487 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))>
21488 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))>
21489 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))>
21490 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))>
21491 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))>
21492 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))>
21493 //fMixedHarmonicsNestedLoops->Fill(91.5,-44.,1.); // empty
21494 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))>
21495 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))>
21496 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))>
21497 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))>
21498 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))>
21499 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))>
21500 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))>
21501 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))>
21502 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))>
21503 //fMixedHarmonicsNestedLoops->Fill(101.5,-44.,1.); // empty
21504 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))>
21505 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))>
21506 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))>
21507 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))>
21508 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))>
21509 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))>
21510 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))>
21511 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))>
21512 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))>
21513 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))>
21514 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))>
21515 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))>
21516 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))>
21517 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))>
21518 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))>
21519 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))>
21520 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))>
21521 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))>
21522 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))>
21523 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))>
21524 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))>
21525 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))>
21526 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))>
21527 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))>
21528 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))>
21529 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))>
21530 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))>
21531 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))>
21532 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))>
21533 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
21534 //fMixedHarmonicsNestedLoops->Fill(132.5,-44.,1.); // empty
21535 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))>
21536 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))>
21537 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))>
21538 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))>
21539 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))>
21540 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))>
21541 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))>
21542 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))>
21543 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))>
21544 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))>
21545 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))>
21546 //fMixedHarmonicsNestedLoops->Fill(144.5,-44.,1.); // empty
21547 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))>
21548 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))>
21549 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))>
21550 } // end of for(Int_t i5=0;i5<nPrim;i5++)
21551 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21552 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21553 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21554 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21555 } // end of if(nPrim>=5)
21556
21557 // QW44
489d5531 21558
e1d101a6 21559} // end of void AliFlowAnalysisWithQCumulants::EvaluateMixedHarmonicsWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 21560
e1d101a6 21561//================================================================================================================
489d5531 21562
21563void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrelations()
21564{
21565 // Cross-check results for multiparticle correlations needed for int. flow: results from Q-vectors vs results from nested loops.
21566
21567 cout<<endl;
21568 cout<<endl;
21569 cout<<" *****************************************"<<endl;
21570 cout<<" **** cross-checking the correlations ****"<<endl;
21571 cout<<" **** for integrated flow ****"<<endl;
403e3389 21572 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 21573 {
21574 cout<<" **** (particle weights not used) ****"<<endl;
21575 } else
21576 {
21577 cout<<" **** (particle weights used) ****"<<endl;
21578 }
21579 cout<<" *****************************************"<<endl;
21580 cout<<endl;
21581 cout<<endl;
21582
403e3389 21583 Int_t ciMax = 64; // to be improved (removed eventually when I calculate 6th and 8th order with particle weights)
489d5531 21584
403e3389 21585 if(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights)
489d5531 21586 {
21587 ciMax = 11;
21588 }
21589
21590 for(Int_t ci=1;ci<=ciMax;ci++)
21591 {
21592 if(strcmp((fIntFlowCorrelationsAllPro->GetXaxis())->GetBinLabel(ci), "") == 0) continue; // to be improved (access finalized histogram here)
21593 cout<<(fIntFlowCorrelationsAllPro->GetXaxis())->GetBinLabel(ci)<<":"<<endl; // to be improved (access finalized histogram here)
21594 cout<<"from Q-vectors = "<<fIntFlowCorrelationsAllPro->GetBinContent(ci)<<endl; // to be improved (access finalized histogram here)
21595 cout<<"from nested loops = "<<fIntFlowDirectCorrelations->GetBinContent(ci)<<endl;
21596 cout<<endl;
21597 }
e1d101a6 21598
21599 if(!fCalculateMixedHarmonics){return;}
21600
21601 cout<<endl;
21602 cout<<endl;
21603 cout<<" *****************************************"<<endl;
21604 cout<<" **** cross-checking the correlations ****"<<endl;
21605 cout<<" **** for mixed harmonics ****"<<endl;
21606 cout<<" *****************************************"<<endl;
21607 cout<<endl;
21608 cout<<endl;
21609
21610 // 2-p:
21611 for(Int_t ci=1;ci<=6;ci++)
21612 {
21613 cout<<(f2pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21614 cout<<"from Q-vectors = "<<f2pCorrelations->GetBinContent(ci)<<endl;
21615 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci)<<endl;
21616 cout<<endl;
21617 } // end of for(Int_t ci=1;ci<=6;ci++)
21618
21619 // 3-p:
21620 for(Int_t ci=1;ci<=10;ci++)
21621 {
21622 if(4==ci){continue;} // skipping the empty bins
21623 cout<<(f3pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21624 cout<<"from Q-vectors = "<<f3pCorrelations->GetBinContent(ci)<<endl;
21625 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6)<<endl;
21626 cout<<endl;
21627 } // end of for(Int_t ci=1;ci<=10;ci++)
21628
21629 // 4-p:
21630 for(Int_t ci=1;ci<=45;ci++)
21631 {
21632 if(7==ci||23==ci||26==ci||37==ci){continue;} // skipping the empty bins
21633 cout<<(f4pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21634 cout<<"from Q-vectors = "<<f4pCorrelations->GetBinContent(ci)<<endl;
21635 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10)<<endl;
21636 //if(TMath::Abs(f4pCorrelations->GetBinContent(ci)-fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10))
21637 // > 1.e-10){exit(0);}
21638 cout<<endl;
21639 } // end of for(Int_t ci=1;ci<=45;ci++)
21640
21641 for(Int_t ci=1;ci<=87;ci++)
21642 {
21643 if(31==ci||41==ci||72==ci||84==ci){continue;} // skipping the empty bins
21644 cout<<(f5pCorrelations->GetXaxis())->GetBinLabel(ci)<<":"<<endl;
21645 cout<<"from Q-vectors = "<<f5pCorrelations->GetBinContent(ci)<<endl;
21646 cout<<"from nested loops = "<<fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10+45)<<endl;
21647 if(TMath::Abs(f5pCorrelations->GetBinContent(ci)-fMixedHarmonicsNestedLoops->GetBinContent(ci+6+10+45))
21648 > 1.e-10){exit(0);}
21649 cout<<endl;
21650 } // end of for(Int_t ci=1;ci<=87;ci++)
21651
21652 return;
21653
489d5531 21654} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrelations()
21655
e1d101a6 21656//=======================================================================================================================
489d5531 21657
489d5531 21658void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrectionTermsForNUA()
21659{
21660 // Cross-check results for corrections terms for non-uniform acceptance needed for int. flow: results from Q-vectors vs results from nested loops.
21661
21662 cout<<endl;
21663 cout<<endl;
21664 cout<<" *********************************************"<<endl;
21665 cout<<" **** cross-checking the correction terms ****"<<endl;
21666 cout<<" **** for non-uniform acceptance relevant ****"<<endl;
21667 cout<<" **** for integrated flow ****"<<endl;
403e3389 21668 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 21669 {
21670 cout<<" **** (particle weights not used) ****"<<endl;
21671 } else
21672 {
21673 cout<<" **** (particle weights used) ****"<<endl;
21674 }
21675 cout<<" *********************************************"<<endl;
21676 cout<<endl;
21677 cout<<endl;
21678
b92ea2b9 21679 for(Int_t ci=1;ci<=4;ci++) // correction term index (to be improved - hardwired 4)
489d5531 21680 {
21681 for(Int_t sc=0;sc<2;sc++) // sin or cos term
21682 {
21683 if(strcmp((fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->GetBinLabel(ci), "") == 0) continue; // to be improved (access finalized histogram here)
21684 cout<<(fIntFlowCorrectionTermsForNUAPro[sc]->GetXaxis())->GetBinLabel(ci)<<":"<<endl; // to be improved (access finalized histogram here)
21685 cout<<"from Q-vectors = "<<fIntFlowCorrectionTermsForNUAPro[sc]->GetBinContent(ci)<<endl; // to be improved (access finalized histogram here)
21686 cout<<"from nested loops = "<<fIntFlowDirectCorrectionTermsForNUA[sc]->GetBinContent(ci)<<endl;
21687 cout<<endl;
21688 } // end of for(Int_t sc=0;sc<2;sc++) // sin or cos term
21689 } // end of for(Int_t ci=1;ci<=10;ci++) // correction term index
21690
21691} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowCorrectionTermsForNUA()
21692
e1d101a6 21693//=======================================================================================================================
489d5531 21694
0328db2d 21695void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent)
489d5531 21696{
21697 // Evaluate with nested loops multiparticle correlations for integrated flow (using the particle weights).
21698
21699 // Results are stored in profile fIntFlowDirectCorrelations.
21700 // Remark 1: When particle weights are used the binning of fIntFlowDirectCorrelations is organized as follows:
21701 //
21702 // 1st bin: <2>_{1n|1n} = two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
21703 // 2nd bin: <2>_{2n|2n} = two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
21704 // 3rd bin: <2>_{3n|3n} = two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
21705 // 4th bin: <2>_{4n|4n} = two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
21706 // 5th bin: ---- EMPTY ----
21707 // 6th bin: <3>_{2n|1n,1n} = three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
21708 // 7th bin: <3>_{3n|2n,1n} = ...
21709 // 8th bin: <3>_{4n|2n,2n} = ...
21710 // 9th bin: <3>_{4n|3n,1n} = ...
21711 // 10th bin: ---- EMPTY ----
21712 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
21713 // 12th bin: <4>_{2n,1n|2n,1n} = ...
21714 // 13th bin: <4>_{2n,2n|2n,2n} = ...
21715 // 14th bin: <4>_{3n|1n,1n,1n} = ...
21716 // 15th bin: <4>_{3n,1n|3n,1n} = ...
21717 // 16th bin: <4>_{3n,1n|2n,2n} = ...
21718 // 17th bin: <4>_{4n|2n,1n,1n} = ...
21719 // 18th bin: ---- EMPTY ----
21720 // 19th bin: <5>_{2n|1n,1n,1n,1n} = ...
21721 // 20th bin: <5>_{2n,2n|2n,1n,1n} = ...
21722 // 21st bin: <5>_{3n,1n|2n,1n,1n} = ...
21723 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = ...
21724 // 23rd bin: ---- EMPTY ----
21725 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = ...
21726 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = ...
21727 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = ...
21728 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = ...
21729 // 28th bin: ---- EMPTY ----
21730 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = ...
21731 // 30th bin: ---- EMPTY ----
21732 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = ...
57340a27 21733
489d5531 21734 // Remark 2: When particle weights are used there are some extra correlations. They are stored in
21735 // fIntFlowExtraDirectCorrelations binning of which is organized as follows:
57340a27 21736
489d5531 21737 // 1st bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
21738 // 2nd bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
21739 // ...
57340a27 21740
489d5531 21741 Int_t nPrim = anEvent->NumberOfTracks();
21742 AliFlowTrackSimple *aftsTrack = NULL;
21743 //Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
21744 //Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
21745 Double_t phi1=0., phi2=0., phi3=0., phi4=0.;
21746 Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1.;
21747 Int_t n = fHarmonic;
21748 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 21749 Double_t dMult = (*fSpk)(0,0);
489d5531 21750 cout<<endl;
21751 cout<<"Multiparticle correlations: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21752 if(dMult<2)
21753 {
21754 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21755 } else if (dMult>fMaxAllowedMultiplicity)
21756 {
21757 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21758 } else
21759 {
21760 cout<<"... evaluating nested loops (using particle weights) ..."<<endl;
21761 }
21762
21763 // 2-particle correlations:
21764 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21765 {
21766 // 2 nested loops multiparticle correlations using particle weights:
21767 for(Int_t i1=0;i1<nPrim;i1++)
21768 {
21769 aftsTrack=anEvent->GetTrack(i1);
21770 if(!(aftsTrack->InRPSelection())) continue;
21771 phi1=aftsTrack->Phi();
21772 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21773 for(Int_t i2=0;i2<nPrim;i2++)
21774 {
21775 if(i2==i1)continue;
21776 aftsTrack=anEvent->GetTrack(i2);
21777 if(!(aftsTrack->InRPSelection())) continue;
21778 phi2=aftsTrack->Phi();
21779 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21780 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21781 // 2-p correlations using particle weights:
21782 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),wPhi1*wPhi2); // <w1 w2 cos( n*(phi1-phi2))>
21783 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))>
21784 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))>
21785 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))>
21786 // extra correlations:
21787 // 2-p extra correlations (do not appear if particle weights are not used):
21788 if(fUsePhiWeights) fIntFlowExtraDirectCorrelations->Fill(0.5,cos(n*(phi1-phi2)),pow(wPhi1,3)*wPhi2); // <w1^3 w2 cos(n*(phi1-phi2))>
21789 // ...
21790 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21791 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21792 } // end of if(nPrim>=2)
21793
21794 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
57340a27 21795 {
489d5531 21796 // 3 nested loops multiparticle correlations using particle weights:
21797 for(Int_t i1=0;i1<nPrim;i1++)
57340a27 21798 {
489d5531 21799 aftsTrack=anEvent->GetTrack(i1);
21800 if(!(aftsTrack->InRPSelection())) continue;
21801 phi1=aftsTrack->Phi();
21802 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21803 for(Int_t i2=0;i2<nPrim;i2++)
21804 {
21805 if(i2==i1)continue;
21806 aftsTrack=anEvent->GetTrack(i2);
21807 if(!(aftsTrack->InRPSelection())) continue;
21808 phi2=aftsTrack->Phi();
21809 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21810 for(Int_t i3=0;i3<nPrim;i3++)
21811 {
21812 if(i3==i1||i3==i2)continue;
21813 aftsTrack=anEvent->GetTrack(i3);
21814 if(!(aftsTrack->InRPSelection())) continue;
21815 phi3=aftsTrack->Phi();
21816 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
21817 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
21818 // 3-p correlations using particle weights:
21819 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))>
21820 // ...
21821 // extra correlations:
21822 // 2-p extra correlations (do not appear if particle weights are not used):
21823 if(fUsePhiWeights) fIntFlowExtraDirectCorrelations->Fill(1.5,cos(n*(phi1-phi2)),wPhi1*wPhi2*pow(wPhi3,2)); // <w1 w2 w3^2 cos(n*(phi1-phi2))>
21824 // ...
21825 // 3-p extra correlations (do not appear if particle weights are not used):
21826 // ...
21827 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21828 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21829 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21830 } // end of if(nPrim>=3)
57340a27 21831
489d5531 21832 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
21833 {
21834 // 4 nested loops multiparticle correlations using particle weights:
21835 for(Int_t i1=0;i1<nPrim;i1++)
21836 {
21837 aftsTrack=anEvent->GetTrack(i1);
21838 if(!(aftsTrack->InRPSelection())) continue;
21839 phi1=aftsTrack->Phi();
21840 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
21841 for(Int_t i2=0;i2<nPrim;i2++)
21842 {
21843 if(i2==i1)continue;
21844 aftsTrack=anEvent->GetTrack(i2);
21845 if(!(aftsTrack->InRPSelection())) continue;
21846 phi2=aftsTrack->Phi();
21847 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
21848 for(Int_t i3=0;i3<nPrim;i3++)
21849 {
21850 if(i3==i1||i3==i2)continue;
21851 aftsTrack=anEvent->GetTrack(i3);
21852 if(!(aftsTrack->InRPSelection())) continue;
21853 phi3=aftsTrack->Phi();
21854 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
21855 for(Int_t i4=0;i4<nPrim;i4++)
21856 {
21857 if(i4==i1||i4==i2||i4==i3)continue;
21858 aftsTrack=anEvent->GetTrack(i4);
21859 if(!(aftsTrack->InRPSelection())) continue;
21860 phi4=aftsTrack->Phi();
21861 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
21862 if(nPrim>=4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush; // to be improved (replace eventually this if statement with if(nPrim==4))
21863 // 4-p correlations using particle weights:
21864 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(10.5,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4);
21865 // extra correlations:
21866 // 2-p extra correlations (do not appear if particle weights are not used):
21867 // ...
21868 // 3-p extra correlations (do not appear if particle weights are not used):
21869 // ...
21870 // 4-p extra correlations (do not appear if particle weights are not used):
21871 // ...
21872 } // end of for(Int_t i4=0;i4<nPrim;i4++)
21873 } // end of for(Int_t i3=0;i3<nPrim;i3++)
21874 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21875 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21876 } // end of if(nPrim>=4)
57340a27 21877
489d5531 21878 cout<<endl;
57340a27 21879
489d5531 21880} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent)
57340a27 21881
e1d101a6 21882//=======================================================================================================================
489d5531 21883
489d5531 21884void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowExtraCorrelations()
57340a27 21885{
489d5531 21886 // Cross-check results for extra multiparticle correlations needed for int. flow
21887 // which appear only when particle weights are used: results from Q-vectors vs results from nested loops.
57340a27 21888
489d5531 21889 cout<<endl;
21890 cout<<endl;
21891 cout<<" ***********************************************"<<endl;
21892 cout<<" **** cross-checking the extra correlations ****"<<endl;
21893 cout<<" **** for integrated flow ****"<<endl;
21894 cout<<" ***********************************************"<<endl;
21895 cout<<endl;
21896 cout<<endl;
21897
21898 for(Int_t eci=1;eci<=2;eci++) // to be improved (increased eciMax eventually when I calculate 6th and 8th)
57340a27 21899 {
489d5531 21900 if(strcmp((fIntFlowExtraCorrelationsPro->GetXaxis())->GetBinLabel(eci), "") == 0) continue;
21901 cout<<(fIntFlowExtraCorrelationsPro->GetXaxis())->GetBinLabel(eci)<<":"<<endl;
21902 cout<<"from Q-vectors = "<<fIntFlowExtraCorrelationsPro->GetBinContent(eci)<<endl;
21903 cout<<"from nested loops = "<<fIntFlowExtraDirectCorrelations->GetBinContent(eci)<<endl;
21904 cout<<endl;
21905 }
57340a27 21906
489d5531 21907} // end of void AliFlowAnalysisWithQCumulants::CrossCheckIntFlowExtraCorrelations()
57340a27 21908
e1d101a6 21909//=======================================================================================================================
3b552efe 21910
0328db2d 21911void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoops(AliFlowEventSimple * const anEvent)
489d5531 21912{
21913 // Evaluate with nested loops correction terms for non-uniform acceptance relevant for NONAME integrated flow (to be improved (name)).
21914 //
21915 // Remark: Both sin and cos correction terms are calculated in this method. Sin terms are stored in fIntFlowDirectCorrectionTermsForNUA[0],
21916 // and cos terms in fIntFlowDirectCorrectionTermsForNUA[1]. Binning of fIntFlowDirectCorrectionTermsForNUA[sc] is organized as follows
21917 // (sc stands for either sin or cos):
21918
21919 // 1st bin: <<sc(n*(phi1))>>
21920 // 2nd bin: <<sc(n*(phi1+phi2))>>
21921 // 3rd bin: <<sc(n*(phi1-phi2-phi3))>>
21922 // 4th bin: <<sc(n*(2phi1-phi2))>>
21923
21924 Int_t nPrim = anEvent->NumberOfTracks();
21925 AliFlowTrackSimple *aftsTrack = NULL;
21926 Double_t phi1=0., phi2=0., phi3=0.;
21927 Int_t n = fHarmonic;
21928 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 21929 Double_t dMult = (*fSpk)(0,0);
489d5531 21930 cout<<endl;
21931 cout<<"Correction terms for non-uniform acceptance: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
21932 if(dMult<1)
3b552efe 21933 {
489d5531 21934 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
21935 } else if (dMult>fMaxAllowedMultiplicity)
3b552efe 21936 {
489d5531 21937 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
21938 } else
21939 {
21940 cout<<"... evaluating nested loops (without using particle weights)..."<<endl;
21941 }
21942
21943 if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
21944 {
21945 // 1-particle correction terms for non-uniform acceptance:
21946 for(Int_t i1=0;i1<nPrim;i1++)
21947 {
21948 aftsTrack=anEvent->GetTrack(i1);
21949 if(!(aftsTrack->InRPSelection())) continue;
21950 phi1=aftsTrack->Phi();
21951 if(nPrim==1) cout<<i1<<"\r"<<flush;
21952 // sin terms:
21953 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(0.5,sin(n*phi1),1.); // <sin(n*phi1)>
21954 // cos terms:
21955 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(0.5,cos(n*phi1),1.); // <cos(n*phi1)>
21956 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21957 } // end of if(nPrim>=1)
21958
21959 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
21960 {
21961 // 2-particle correction terms for non-uniform acceptance:
21962 for(Int_t i1=0;i1<nPrim;i1++)
21963 {
21964 aftsTrack=anEvent->GetTrack(i1);
21965 if(!(aftsTrack->InRPSelection())) continue;
21966 phi1=aftsTrack->Phi();
21967 for(Int_t i2=0;i2<nPrim;i2++)
3b552efe 21968 {
489d5531 21969 if(i2==i1)continue;
21970 aftsTrack=anEvent->GetTrack(i2);
21971 if(!(aftsTrack->InRPSelection())) continue;
21972 phi2=aftsTrack->Phi();
21973 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
21974 // sin terms:
3b552efe 21975 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(1.5,sin(n*(phi1+phi2)),1.); // <<sin(n*(phi1+phi2))>>
489d5531 21976 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(3.5,sin(n*(2*phi1-phi2)),1.); // <<sin(n*(2*phi1-phi2))>>
21977 // cos terms:
3b552efe 21978 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(1.5,cos(n*(phi1+phi2)),1.); // <<cos(n*(phi1+phi2))>>
489d5531 21979 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(3.5,cos(n*(2*phi1-phi2)),1.); // <<cos(n*(2*phi1-phi2))>>
21980 } // end of for(Int_t i2=0;i2<nPrim;i2++)
21981 } // end of for(Int_t i1=0;i1<nPrim;i1++)
21982 } // end of if(nPrim>=2)
21983
21984 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
21985 {
21986 // 3-particle correction terms for non-uniform acceptance:
21987 for(Int_t i1=0;i1<nPrim;i1++)
21988 {
21989 aftsTrack=anEvent->GetTrack(i1);
21990 if(!(aftsTrack->InRPSelection())) continue;
21991 phi1=aftsTrack->Phi();
21992 for(Int_t i2=0;i2<nPrim;i2++)
21993 {
21994 if(i2==i1)continue;
21995 aftsTrack=anEvent->GetTrack(i2);
21996 if(!(aftsTrack->InRPSelection())) continue;
21997 phi2=aftsTrack->Phi();
21998 for(Int_t i3=0;i3<nPrim;i3++)
21999 {
22000 if(i3==i1||i3==i2)continue;
22001 aftsTrack=anEvent->GetTrack(i3);
22002 if(!(aftsTrack->InRPSelection())) continue;
22003 phi3=aftsTrack->Phi();
22004 if(nPrim>=3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush; // to be improved (eventually I will change this if statement)
22005 // sin terms:
22006 fIntFlowDirectCorrectionTermsForNUA[0]->Fill(2.5,sin(n*(phi1-phi2-phi3)),1.); // <<sin(n*(phi1-phi2-phi3))>>
22007 // cos terms:
22008 fIntFlowDirectCorrectionTermsForNUA[1]->Fill(2.5,cos(n*(phi1-phi2-phi3)),1.); // <<cos(n*(phi1-phi2-phi3))>>
22009 } // end of for(Int_t i3=0;i3<nPrim;i3++)
22010 } // end of for(Int_t i2=0;i2<nPrim;i2++)
22011 } // end of for(Int_t i1=0;i1<nPrim;i1++)
22012 } // end of if(nPrim>=3)
22013
22014 cout<<endl;
22015}
64e500e3 22016
e1d101a6 22017//=======================================================================================================================
64e500e3 22018
0328db2d 22019void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22020{
22021 // Evaluate reduced correlations with nested loops without using the particle weights.
22022
22023 // Remark 1: Reduced correlations are evaluated in pt bin number fCrossCheckInPtBinNo and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22024 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrelations[t][pe][ci], where indices runs as follows:
22025 // [0=RP,1=POI][0=Pt,1=Eta][0=<2'>,1=<4'>,2=<6'>,3=<8'>]
22026 // Remark 3: <2'> = <cos(n*(psi1-phi2))>
22027 // <4'> = <cos(n*(psi1+phi2-phi3-phi4))>
22028 // ...
22029
2a98ceb8 22030 Int_t typeFlag = 0;
22031 Int_t ptEtaFlag = 0;
489d5531 22032 if(type == "RP")
22033 {
22034 typeFlag = 0;
22035 } else if(type == "POI")
22036 {
22037 typeFlag = 1;
22038 }
22039 if(ptOrEta == "Pt")
22040 {
22041 ptEtaFlag = 0;
22042 } else if(ptOrEta == "Eta")
22043 {
22044 ptEtaFlag = 1;
22045 }
22046 // shortcuts:
22047 Int_t t = typeFlag;
22048 Int_t pe = ptEtaFlag;
22049
22050 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22051 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22052 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22053
22054 Int_t nPrim = anEvent->NumberOfTracks();
22055 AliFlowTrackSimple *aftsTrack = NULL;
22056
22057 Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22058
3b552efe 22059 Int_t n = fHarmonic;
489d5531 22060
22061 // 2'-particle correlations:
22062 for(Int_t i1=0;i1<nPrim;i1++)
22063 {
22064 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22065 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22066 if(typeFlag==1) // this is diff flow of POIs
489d5531 22067 {
22068 if(ptOrEta == "Pt")
22069 {
22070 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22071 } else if (ptOrEta == "Eta")
22072 {
22073 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22074 }
22075 } else // this is diff flow of RPs
22076 {
489d5531 22077 if(ptOrEta == "Pt")
22078 {
22079 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22080 } else if (ptOrEta == "Eta")
22081 {
22082 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22083 }
22084 }
489d5531 22085
22086 psi1=aftsTrack->Phi();
22087 for(Int_t i2=0;i2<nPrim;i2++)
22088 {
22089 if(i2==i1)continue;
22090 aftsTrack=anEvent->GetTrack(i2);
22091 // RP condition (!(first) particle in the correlator must be RP):
22092 if(!(aftsTrack->InRPSelection()))continue;
22093 phi2=aftsTrack->Phi();
22094 // 2'-particle correlations:
22095 fDiffFlowDirectCorrelations[t][pe][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(1.*n*(psi1-phi2)),1.); // <cos(n*(psi1-phi2))
22096 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22097 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22098
22099 /*
22100
22101 // 3'-particle correlations:
22102 for(Int_t i1=0;i1<nPrim;i1++)
22103 {
22104 aftsTrack=anEvent->GetTrack(i1);
22105 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22106 if(ptOrEta == "Pt")
22107 {
22108 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22109 } else if (ptOrEta == "Eta")
22110 {
22111 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22112 }
22113 psi1=aftsTrack->Phi();
22114 for(Int_t i2=0;i2<nPrim;i2++)
22115 {
22116 if(i2==i1)continue;
22117 aftsTrack=anEvent->GetTrack(i2);
22118 // RP condition (!(first) particle in the correlator must be RP):
22119 if(!(aftsTrack->InRPSelection())) continue;
22120 phi2=aftsTrack->Phi();
22121 for(Int_t i3=0;i3<nPrim;i3++)
22122 {
22123 if(i3==i1||i3==i2)continue;
22124 aftsTrack=anEvent->GetTrack(i3);
22125 // RP condition (!(first) particle in the correlator must be RP):
22126 if(!(aftsTrack->InRPSelection())) continue;
22127 phi3=aftsTrack->Phi();
22128 // 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))>
22129 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22130 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22131 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22132
22133 */
22134
22135 // 4'-particle correlations:
22136 for(Int_t i1=0;i1<nPrim;i1++)
22137 {
22138 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22139 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22140 if(typeFlag==1) // this is diff flow of POIs
489d5531 22141 {
22142 if(ptOrEta == "Pt")
22143 {
22144 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22145 } else if (ptOrEta == "Eta")
22146 {
22147 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22148 }
22149 } else // this is diff flow of RPs
22150 {
489d5531 22151 if(ptOrEta == "Pt")
22152 {
22153 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22154 } else if (ptOrEta == "Eta")
22155 {
22156 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22157 }
22158 }
489d5531 22159
22160 psi1=aftsTrack->Phi();
22161 for(Int_t i2=0;i2<nPrim;i2++)
22162 {
22163 if(i2==i1) continue;
22164 aftsTrack=anEvent->GetTrack(i2);
22165 // RP condition (!(first) particle in the correlator must be RP):
22166 if(!(aftsTrack->InRPSelection())) continue;
22167 phi2=aftsTrack->Phi();
22168 for(Int_t i3=0;i3<nPrim;i3++)
22169 {
22170 if(i3==i1||i3==i2) continue;
22171 aftsTrack=anEvent->GetTrack(i3);
22172 // RP condition (!(first) particle in the correlator must be RP):
22173 if(!(aftsTrack->InRPSelection())) continue;
22174 phi3=aftsTrack->Phi();
22175 for(Int_t i4=0;i4<nPrim;i4++)
22176 {
22177 if(i4==i1||i4==i2||i4==i3) continue;
22178 aftsTrack=anEvent->GetTrack(i4);
22179 // RP condition (!(first) particle in the correlator must be RP):
22180 if(!(aftsTrack->InRPSelection())) continue;
22181 phi4=aftsTrack->Phi();
22182 // 4'-particle correlations:
22183 fDiffFlowDirectCorrelations[t][pe][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3-phi4)),1.); // <cos(n(psi1+phi2-phi3-phi4))>
22184 }//end of for(Int_t i4=0;i4<nPrim;i4++)
22185 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22186 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22187 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22188
22189 // count # of RPs and POIs in selected pt and eta bins for cross-checkings:
3b552efe 22190 for(Int_t i=0;i<nPrim;i++)
22191 {
22192 aftsTrack=anEvent->GetTrack(i);
22193 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22194 if(typeFlag==1) // this is diff flow of POIs
489d5531 22195 {
22196 if(ptOrEta == "Pt")
22197 {
22198 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22199 } else if (ptOrEta == "Eta")
22200 {
22201 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22202 }
22203 } else // this is diff flow of RPs
22204 {
489d5531 22205 if(ptOrEta == "Pt")
22206 {
22207 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22208 } else if (ptOrEta == "Eta")
22209 {
22210 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22211 }
22212 }
22213 if(t==1)t++;
22214 fNoOfParticlesInBin->Fill(t+pe+0.5);
489d5531 22215 }
22216
22217} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoops(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22218
e1d101a6 22219//=======================================================================================================================
489d5531 22220
64e500e3 22221void AliFlowAnalysisWithQCumulants::EvaluateOtherDiffCorrelatorsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22222{
22223 // Evaluate other differential correlators with nested loops without using the particle weights.
22224
22225 // Remark 1: Other differential correlators are evaluated in pt bin number fCrossCheckInPtBinNo
22226 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22227 // Remark 2: Results are stored in 1 bin profiles fOtherDirectDiffCorrelators[t][pe][sc][ci], where indices runs as follows:
22228 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms][ci = correlator index]
22229 // Remark 3: Correlator index 'ci' runs as follows:
22230 // 0: <exp(n*(psi1-3phi2+2phi3))> (Teaney-Yan correlator)
22231
22232 Int_t typeFlag = 0;
22233 Int_t ptEtaFlag = 0;
22234 if(type == "RP")
22235 {
22236 typeFlag = 0;
22237 } else if(type == "POI")
22238 {
22239 typeFlag = 1;
22240 }
22241 if(ptOrEta == "Pt")
22242 {
22243 ptEtaFlag = 0;
22244 } else if(ptOrEta == "Eta")
22245 {
22246 ptEtaFlag = 1;
22247 }
22248 // shortcuts:
22249 Int_t t = typeFlag;
22250 Int_t pe = ptEtaFlag;
22251
22252 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22253 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22254 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22255
22256 Int_t nPrim = anEvent->NumberOfTracks();
22257 AliFlowTrackSimple *aftsTrack = NULL;
22258
22259 Double_t psi1=0., phi2=0., phi3=0.;
22260
22261 Int_t n = fHarmonic;
22262
22263 // 3-p correlators:
22264 for(Int_t i1=0;i1<nPrim;i1++)
22265 {
22266 aftsTrack=anEvent->GetTrack(i1);
22267 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22268 if(typeFlag==1) // this is diff flow of POIs
22269 {
22270 if(ptOrEta == "Pt")
22271 {
22272 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22273 } else if (ptOrEta == "Eta")
22274 {
22275 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22276 }
22277 } else // this is diff flow of RPs
22278 {
22279 if(ptOrEta == "Pt")
22280 {
22281 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22282 } else if (ptOrEta == "Eta")
22283 {
22284 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22285 }
22286 }
22287 psi1=aftsTrack->Phi();
22288 for(Int_t i2=0;i2<nPrim;i2++)
22289 {
22290 if(i2==i1) continue;
22291 aftsTrack=anEvent->GetTrack(i2);
22292 // RP condition (!(first) particle in the correlator must be RP):
22293 if(!(aftsTrack->InRPSelection())) continue;
22294 phi2=aftsTrack->Phi();
22295 for(Int_t i3=0;i3<nPrim;i3++)
22296 {
22297 if(i3==i1||i3==i2) continue;
22298 aftsTrack=anEvent->GetTrack(i3);
22299 // RP condition (!(first) particle in the correlator must be RP):
22300 if(!(aftsTrack->InRPSelection())) continue;
22301 phi3=aftsTrack->Phi();
22302 // Fill 3-p correlators:
22303 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))>
22304 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22305 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22306 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22307} // end of void AliFlowAnalysisWithQCumulants::EvaluateOtherDiffCorrelatorsWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
22308
e1d101a6 22309//=======================================================================================================================
489d5531 22310
22311void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrelations(TString type, TString ptOrEta)
22312{
22313 // Compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22314
2a98ceb8 22315 Int_t typeFlag = 0;
22316 Int_t ptEtaFlag = 0;
489d5531 22317 if(type == "RP")
22318 {
22319 typeFlag = 0;
22320 } else if(type == "POI")
22321 {
22322 typeFlag = 1;
22323 }
22324 if(ptOrEta == "Pt")
22325 {
22326 ptEtaFlag = 0;
22327 } else if(ptOrEta == "Eta")
22328 {
22329 ptEtaFlag = 1;
22330 }
22331 // shortcuts:
22332 Int_t t = typeFlag;
22333 Int_t pe = ptEtaFlag;
22334
22335 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22336 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22337 TString reducedCorrelations[4] = {"<<cos(n(psi1-phi2))>>","<<cos(n(psi1+phi2-phi3-phi4))>>","",""}; // to be improved (access this from pro or hist)
22338 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22339 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22340
22341 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22342
22343
22344 cout<<endl;
22345 cout<<" *****************************************"<<endl;
22346 cout<<" **** cross-checking the correlations ****"<<endl;
22347 cout<<" **** for differential flow ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22348 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 22349 {
22350 cout<<" **** (particle weights not used) ****"<<endl;
22351 } else
22352 {
22353 cout<<" **** (particle weights used) ****"<<endl;
22354 }
22355 cout<<" *****************************************"<<endl;
22356 cout<<endl;
22357 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22358 cout<<endl;
22359
22360 for(Int_t rci=0;rci<2;rci++) // to be improved (calculate 6th and 8th order)
22361 {
22362 cout<<" "<<reducedCorrelations[rci].Data()<<":"<<endl;
22363 cout<<" from Q-vectors = "<<fDiffFlowCorrelationsPro[t][pe][rci]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22364 cout<<" from nested loops = "<<fDiffFlowDirectCorrelations[t][pe][rci]->GetBinContent(1)<<endl;
22365 cout<<endl;
22366 } // end of for(Int_t rci=0;rci<4;rci++)
22367
22368} // end of void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrelations(TString type, TString ptOrEta)
22369
e1d101a6 22370//=======================================================================================================================
3b552efe 22371
64e500e3 22372void AliFlowAnalysisWithQCumulants::CrossCheckOtherDiffCorrelators(TString type, TString ptOrEta)
22373{
22374 // Compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22375
22376 Int_t typeFlag = 0;
22377 Int_t ptEtaFlag = 0;
22378 if(type == "RP")
22379 {
22380 typeFlag = 0;
22381 } else if(type == "POI")
22382 {
22383 typeFlag = 1;
22384 }
22385 if(ptOrEta == "Pt")
22386 {
22387 ptEtaFlag = 0;
22388 } else if(ptOrEta == "Eta")
22389 {
22390 ptEtaFlag = 1;
22391 }
22392 // shortcuts:
22393 Int_t t = typeFlag;
22394 Int_t pe = ptEtaFlag;
22395
22396 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22397 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22398 TString otherCorrelators[1] = {"<<cos(n(psi1-3phi2+2phi3))>>"}; // to be improved (access this from pro or hist)
22399 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22400 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22401
22402 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22403
22404 cout<<endl;
22405 cout<<" *****************************************"<<endl;
22406 cout<<" **** cross-checking the other ****"<<endl;
22407 cout<<" **** diff. correlators ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22408 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
64e500e3 22409 {
22410 cout<<" **** (particle weights not used) ****"<<endl;
22411 } else
22412 {
22413 cout<<" **** (particle weights used) ****"<<endl;
22414 }
22415 cout<<" *****************************************"<<endl;
22416 cout<<endl;
22417 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22418 cout<<endl;
22419
22420 for(Int_t ci=0;ci<1;ci++)
22421 {
22422 cout<<" "<<otherCorrelators[ci].Data()<<":"<<endl;
22423 cout<<" from Q-vectors = "<<fOtherDiffCorrelators[t][pe][1][ci]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22424 cout<<" from nested loops = "<<fOtherDirectDiffCorrelators[t][pe][1][ci]->GetBinContent(1)<<endl;
22425 cout<<endl;
22426 } // end of for(Int_t ci=0;ci<1;ci++)
22427
22428} // end of void AliFlowAnalysisWithQCumulants::CrossCheckOtherDiffCorrelators(TString type, TString ptOrEta)
22429
e1d101a6 22430//=======================================================================================================================
64e500e3 22431
489d5531 22432void AliFlowAnalysisWithQCumulants::PrintNumberOfParticlesInSelectedBin()
3b552efe 22433{
22434 // Print on the screen number of RPs and POIs in selected pt and eta bin for cross checkings.
22435
22436 cout<<endl;
22437 cout<<"Number of RPs in selected pt bin = "<<fNoOfParticlesInBin->GetBinContent(1)<<endl;
22438 cout<<"Number of RPs in selected eta bin = "<<fNoOfParticlesInBin->GetBinContent(2)<<endl;
22439 cout<<"Number of POIs in selected pt bin = "<<fNoOfParticlesInBin->GetBinContent(3)<<endl;
22440 cout<<"Number of POIs in selected eta bin = "<<fNoOfParticlesInBin->GetBinContent(4)<<endl;
22441
489d5531 22442} // end of void AliFlowAnalysisWithQCumulants::PrintNumberOfParticlesInSelectedBin()
22443
e1d101a6 22444//=======================================================================================================================
3b552efe 22445
0328db2d 22446void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22447{
22448 // Evaluate reduced correlations with nested loops without using the particle weights.
22449
22450 // Remark 1: Reduced correlations are evaluated in pt bin number fCrossCheckInPtBinNo and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22451 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrelations[t][pe][ci], where indices runs as follows:
22452 // [0=RP,1=POI][0=Pt,1=Eta][0=<2'>,1=<4'>,2=<6'>,3=<8'>]
22453 // Remark 3: <2'> = <w2 cos(n*(psi1-phi2))>
22454 // <4'> = <w2 w3 w4 cos(n*(psi1+phi2-phi3-phi4))>
22455 // ...
22456
2a98ceb8 22457 Int_t typeFlag = 0;
22458 Int_t ptEtaFlag = 0;
489d5531 22459 if(type == "RP")
22460 {
22461 typeFlag = 0;
22462 } else if(type == "POI")
22463 {
22464 typeFlag = 1;
22465 }
22466 if(ptOrEta == "Pt")
22467 {
22468 ptEtaFlag = 0;
22469 } else if(ptOrEta == "Eta")
22470 {
22471 ptEtaFlag = 1;
22472 }
22473 // shortcuts:
22474 Int_t t = typeFlag;
22475 Int_t pe = ptEtaFlag;
22476
22477 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22478 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22479 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22480
22481 Int_t nPrim = anEvent->NumberOfTracks();
22482 AliFlowTrackSimple *aftsTrack = NULL;
22483
22484 Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22485 Double_t wPhi2=1., wPhi3=1., wPhi4=1.;// wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
22486
22487 Int_t n = fHarmonic;
22488
22489 // 2'-particle correlations:
22490 for(Int_t i1=0;i1<nPrim;i1++)
22491 {
22492 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22493 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22494 if(typeFlag==1) // this is diff flow of POIs
489d5531 22495 {
22496 if(ptOrEta == "Pt")
22497 {
22498 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22499 } else if (ptOrEta == "Eta")
22500 {
22501 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22502 }
22503 } else // this is diff flow of RPs
22504 {
489d5531 22505 if(ptOrEta == "Pt")
22506 {
22507 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22508 } else if (ptOrEta == "Eta")
22509 {
22510 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22511 }
489d5531 22512 }
22513 psi1=aftsTrack->Phi();
22514 for(Int_t i2=0;i2<nPrim;i2++)
22515 {
22516 if(i2==i1) continue;
22517 aftsTrack=anEvent->GetTrack(i2);
22518 // RP condition (!(first) particle in the correlator must be RP):
22519 if(!(aftsTrack->InRPSelection())) continue;
22520 phi2=aftsTrack->Phi();
22521 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22522 // 2'-particle correlations:
22523 fDiffFlowDirectCorrelations[t][pe][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(1.*n*(psi1-phi2)),wPhi2); // <w2 cos(n*(psi1-phi2))
22524 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22525 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22526
22527 // 4'-particle correlations:
22528 for(Int_t i1=0;i1<nPrim;i1++)
22529 {
22530 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22531 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22532 if(typeFlag==1) // this is diff flow of POIs
489d5531 22533 {
22534 if(ptOrEta == "Pt")
22535 {
22536 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22537 } else if (ptOrEta == "Eta")
22538 {
22539 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22540 }
22541 } else // this is diff flow of RPs
22542 {
489d5531 22543 if(ptOrEta == "Pt")
22544 {
22545 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22546 } else if (ptOrEta == "Eta")
22547 {
22548 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22549 }
489d5531 22550 }
22551 psi1=aftsTrack->Phi();
22552 for(Int_t i2=0;i2<nPrim;i2++)
22553 {
22554 if(i2==i1) continue;
22555 aftsTrack=anEvent->GetTrack(i2);
22556 // RP condition (!(first) particle in the correlator must be RP):
22557 if(!(aftsTrack->InRPSelection())) continue;
22558 phi2=aftsTrack->Phi();
22559 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
22560 for(Int_t i3=0;i3<nPrim;i3++)
22561 {
22562 if(i3==i1||i3==i2) continue;
22563 aftsTrack=anEvent->GetTrack(i3);
22564 // RP condition (!(first) particle in the correlator must be RP):
22565 if(!(aftsTrack->InRPSelection())) continue;
22566 phi3=aftsTrack->Phi();
22567 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
22568 for(Int_t i4=0;i4<nPrim;i4++)
22569 {
22570 if(i4==i1||i4==i2||i4==i3) continue;
22571 aftsTrack=anEvent->GetTrack(i4);
22572 // RP condition (!(first) particle in the correlator must be RP):
22573 if(!(aftsTrack->InRPSelection())) continue;
22574 phi4=aftsTrack->Phi();
22575 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
22576 // 4'-particle correlations <w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))>:
22577 fDiffFlowDirectCorrelations[t][pe][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3-phi4)),wPhi2*wPhi3*wPhi4);
22578 }//end of for(Int_t i4=0;i4<nPrim;i4++)
22579 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22580 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22581 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22582
22583 // count # of RPs and POIs in selected pt and eta bins for cross-checkings: (to be improved - moved to dedicated method)
3b552efe 22584 for(Int_t i=0;i<nPrim;i++)
22585 {
489d5531 22586 aftsTrack=anEvent->GetTrack(i);
22587 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22588 if(typeFlag==1) // this is diff flow of POIs
22589 {
22590 if(ptOrEta == "Pt")
22591 {
22592 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22593 } else if (ptOrEta == "Eta")
22594 {
22595 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22596 }
22597 } else // this is diff flow of RPs
22598 {
22599 if(ptOrEta == "Pt")
22600 {
22601 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22602 } else if (ptOrEta == "Eta")
22603 {
22604 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22605 }
22606 }
22607 if(t==1)t++;
22608 fNoOfParticlesInBin->Fill(t+pe+0.5);
22609 }
22610
22611} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrelationsWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22612
e1d101a6 22613//=======================================================================================================================
489d5531 22614
0328db2d 22615void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 22616{
22617 // Evaluate with nested loops correction terms for non-uniform acceptance (both sin and cos terms) relevant for differential flow.
22618
22619 // Remark 1: Reduced correction terms for non-uniform acceptance are evaluated in pt bin number fCrossCheckInPtBinNo
22620 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
22621 // Remark 2: Results are stored in 1 bin profiles fDiffFlowDirectCorrections[t][pe][sc][cti], where first three indices runs as:
22622 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms], whilst the cti (correction term index) runs as follows:
22623 // cti:
22624 // 0: <<sc n(psi1)>>
22625 // 1: <<sc n(psi1+phi2)>>
22626 // 2: <<sc n(psi1+phi2-phi3)>>
22627 // 3: <<sc n(psi1-phi2-phi3)>>
22628 // 4:
22629 // 5:
22630 // 6:
22631
2a98ceb8 22632 Int_t typeFlag = 0;
22633 Int_t ptEtaFlag = 0;
489d5531 22634 if(type == "RP")
22635 {
22636 typeFlag = 0;
22637 } else if(type == "POI")
22638 {
22639 typeFlag = 1;
22640 }
22641 if(ptOrEta == "Pt")
22642 {
22643 ptEtaFlag = 0;
22644 } else if(ptOrEta == "Eta")
22645 {
22646 ptEtaFlag = 1;
22647 }
22648 // shortcuts:
22649 Int_t t = typeFlag;
22650 Int_t pe = ptEtaFlag;
22651
22652 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22653 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22654 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
22655
22656 Int_t nPrim = anEvent->NumberOfTracks();
22657 AliFlowTrackSimple *aftsTrack = NULL;
22658
22659 Double_t psi1=0., phi2=0., phi3=0.;// phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
22660
22661 Int_t n = fHarmonic;
22662
22663 // 1-particle correction terms:
22664 for(Int_t i1=0;i1<nPrim;i1++)
22665 {
22666 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22667 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22668 if(typeFlag==1) // this is diff flow of POIs
489d5531 22669 {
22670 if(ptOrEta == "Pt")
22671 {
22672 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22673 } else if (ptOrEta == "Eta")
22674 {
22675 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22676 }
22677 } else // this is diff flow of RPs
22678 {
489d5531 22679 if(ptOrEta == "Pt")
22680 {
22681 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22682 } else if (ptOrEta == "Eta")
22683 {
22684 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22685 }
22686 }
489d5531 22687 psi1=aftsTrack->Phi();
22688 // sin terms:
22689 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*psi1),1.); // <<sin(n*(psi1))>>
22690 // cos terms:
22691 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*psi1),1.); // <<cos(n*(psi1))>>
22692 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22693
22694 // 2-particle correction terms:
22695 for(Int_t i1=0;i1<nPrim;i1++)
22696 {
22697 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22698 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22699 if(typeFlag==1) // this is diff flow of POIs
489d5531 22700 {
22701 if(ptOrEta == "Pt")
22702 {
22703 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22704 } else if (ptOrEta == "Eta")
22705 {
22706 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22707 }
22708 } else // this is diff flow of RPs
22709 {
489d5531 22710 if(ptOrEta == "Pt")
22711 {
22712 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22713 } else if (ptOrEta == "Eta")
22714 {
22715 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22716 }
489d5531 22717 }
22718 psi1=aftsTrack->Phi();
22719 for(Int_t i2=0;i2<nPrim;i2++)
22720 {
22721 if(i2==i1) continue;
22722 aftsTrack=anEvent->GetTrack(i2);
22723 // RP condition (!(first) particle in the correlator must be RP):
22724 if(!(aftsTrack->InRPSelection())) continue;
22725 phi2=aftsTrack->Phi();
22726 // sin terms:
22727 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2)),1.); // <<sin(n*(psi1+phi2))>>
22728 // cos terms:
22729 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2)),1.); // <<cos(n*(psi1+phi2))>>
22730 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22731 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22732
22733 // 3-particle correction terms:
22734 for(Int_t i1=0;i1<nPrim;i1++)
22735 {
22736 aftsTrack=anEvent->GetTrack(i1);
3b552efe 22737 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
22738 if(typeFlag==1) // this is diff flow of POIs
489d5531 22739 {
22740 if(ptOrEta == "Pt")
22741 {
22742 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
22743 } else if (ptOrEta == "Eta")
22744 {
22745 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 22746 }
22747 } else // this is diff flow of RPs
22748 {
489d5531 22749 if(ptOrEta == "Pt")
22750 {
22751 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
22752 } else if (ptOrEta == "Eta")
22753 {
22754 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 22755 }
489d5531 22756 }
22757 psi1=aftsTrack->Phi();
22758 for(Int_t i2=0;i2<nPrim;i2++)
22759 {
22760 if(i2==i1) continue;
22761 aftsTrack=anEvent->GetTrack(i2);
22762 // RP condition (!(first) particle in the correlator must be RP):
22763 if(!(aftsTrack->InRPSelection())) continue;
22764 phi2=aftsTrack->Phi();
22765 for(Int_t i3=0;i3<nPrim;i3++)
22766 {
22767 if(i3==i1||i3==i2) continue;
22768 aftsTrack=anEvent->GetTrack(i3);
22769 // RP condition (!(first) particle in the correlator must be RP):
22770 if(!(aftsTrack->InRPSelection())) continue;
22771 phi3=aftsTrack->Phi();
22772 // sin terms:
22773 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2-phi3)),1.); // <<sin(n*(psi1+phi2-phi3))>>
22774 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1-phi2-phi3)),1.); // <<sin(n*(psi1-phi2-phi3))>>
22775 // cos terms:
22776 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][2]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2-phi3)),1.); // <<cos(n*(psi1+phi2-phi3))>>
22777 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][3]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1-phi2-phi3)),1.); // <<cos(n*(psi1-phi2-phi3))>>
22778 }//end of for(Int_t i3=0;i3<nPrim;i3++)
22779 }//end of for(Int_t i2=0;i2<nPrim;i2++)
22780 }//end of for(Int_t i1=0;i1<nPrim;i1++)
22781
22782} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoops(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
22783
22784
e1d101a6 22785//=======================================================================================================================
489d5531 22786
22787
22788void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrectionTermsForNUA(TString type, TString ptOrEta)
22789{
22790 // Compare corrections temrs for non-uniform acceptance needed for diff. flow calculated with nested loops and those calculated from Q-vectors
22791
2a98ceb8 22792 Int_t typeFlag = 0;
22793 Int_t ptEtaFlag = 0;
489d5531 22794 if(type == "RP")
22795 {
22796 typeFlag = 0;
22797 } else if(type == "POI")
22798 {
22799 typeFlag = 1;
22800 }
22801 if(ptOrEta == "Pt")
22802 {
22803 ptEtaFlag = 0;
22804 } else if(ptOrEta == "Eta")
22805 {
22806 ptEtaFlag = 1;
22807 }
22808 // shortcuts:
22809 Int_t t = typeFlag;
22810 Int_t pe = ptEtaFlag;
22811
22812 TString rpORpoiString[2] = {"RP ","POI"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22813 TString ptORetaString[2] = {"pt","eta"}; // to be improved (name in the same way as in the other methods, eventually promote to data member)
22814 //TString sinCosFlag[2] = {"sin","cos"}; // to be improved (eventually promote to data member)
22815 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)
22816 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)
22817 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
22818 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
22819
22820 Int_t crossCheckInPtEtaBinNo[2] = {fCrossCheckInPtBinNo,fCrossCheckInEtaBinNo};
22821
22822 cout<<endl;
22823 cout<<" ******************************************"<<endl;
22824 cout<<" **** cross-checking the correction ****"<<endl;
46b94261 22825 cout<<" **** terms for non-uniform acceptance ****"<<endl;
489d5531 22826 cout<<" **** for differential flow ("<<rpORpoiString[t]<<") ****"<<endl;
403e3389 22827 if(!(fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights))
489d5531 22828 {
22829 cout<<" **** (particle weights not used) ****"<<endl;
22830 } else
22831 {
22832 cout<<" **** (particle weights used) ****"<<endl;
22833 }
22834 cout<<" ******************************************"<<endl;
22835 cout<<endl;
22836 cout<<" "<<ptORetaString[pe]<<" bin: "<<lowerPtEtaEdge[pe]<<" <= "<<ptORetaString[pe]<<" < "<<upperPtEtaEdge[pe]<<endl;
22837 cout<<endl;
22838
22839 for(Int_t cti=0;cti<4;cti++) // correction term index
22840 {
22841 for(Int_t sc=0;sc<2;sc++) // sin or cos terms
22842 {
22843 if(sc==0) // to be improved (this can be implemented better)
22844 {
22845 cout<<" "<<reducedCorrectionSinTerms[cti].Data()<<":"<<endl;
22846 } else
22847 {
22848 cout<<" "<<reducedCorrectionCosTerms[cti].Data()<<":"<<endl;
22849 }
22850 cout<<" from Q-vectors = "<<fDiffFlowCorrectionTermsForNUAPro[t][pe][sc][cti]->GetBinContent(crossCheckInPtEtaBinNo[pe])<<endl;
22851 cout<<" from nested loops = "<<fDiffFlowDirectCorrectionTermsForNUA[t][pe][sc][cti]->GetBinContent(1)<<endl;
22852 cout<<endl;
22853 }
22854 } // end of for(Int_t rci=0;rci<4;rci++)
22855
22856} // end of void AliFlowAnalysisWithQCumulants::CrossCheckDiffFlowCorrectionTermsForNUA(TString type, TString ptOrEta)
22857
e1d101a6 22858//=======================================================================================================================
57340a27 22859
489d5531 22860void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights()
22861{
22862 // Calculate corrections using particle weights for non-uniform acceptance of the detector for no-name integrated flow (cos terms).
22863
22864 // **********************************************************************
22865 // **** weighted corrections for non-uniform acceptance (cos terms): ****
22866 // **********************************************************************
57340a27 22867
489d5531 22868 // Remark 1: When particle weights are used the binning of fIntFlowCorrectionTermsForNUAPro[1] is organized as follows:
57340a27 22869 //
489d5531 22870 // 1st bin: <<w1 cos(n*(phi1))>> = cosP1nW1
22871 // 2nd bin: <<w1 w2 cos(n*(phi1+phi2))>> = cosP1nP1nW1W1
22872 // 3rd bin: <<w1 w2 w3 cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1nW1W1W1
22873 // ...
22874
22875 // multiplicity (number of particles used to determine the reaction plane)
1268c371 22876 Double_t dMult = (*fSpk)(0,0);
489d5531 22877
22878 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
22879 Double_t dReQ1n1k = (*fReQ)(0,1);
22880 Double_t dReQ2n2k = (*fReQ)(1,2);
22881 //Double_t dReQ3n3k = (*fReQ)(2,3);
22882 //Double_t dReQ4n4k = (*fReQ)(3,4);
22883 Double_t dReQ1n3k = (*fReQ)(0,3);
22884 Double_t dImQ1n1k = (*fImQ)(0,1);
22885 Double_t dImQ2n2k = (*fImQ)(1,2);
22886 //Double_t dImQ3n3k = (*fImQ)(2,3);
22887 //Double_t dImQ4n4k = (*fImQ)(3,4);
22888 //Double_t dImQ1n3k = (*fImQ)(0,3);
22889
22890 // dMs are variables introduced in order to simplify some Eqs. bellow:
22891 //..............................................................................................
1268c371 22892 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
22893 Double_t dM111 = (*fSpk)(2,1)-3.*(*fSpk)(0,2)*(*fSpk)(0,1)
22894 + 2.*(*fSpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
489d5531 22895 //..............................................................................................
ecac11c2 22896 // 1-particle:
489d5531 22897 Double_t cosP1nW1 = 0.; // <<w1 cos(n*(phi1))>>
22898
1268c371 22899 if(dMult>0 && TMath::Abs((*fSpk)(0,1))>1.e-6)
489d5531 22900 {
1268c371 22901 cosP1nW1 = dReQ1n1k/(*fSpk)(0,1);
489d5531 22902
22903 // average weighted 1-particle correction (cos terms) for non-uniform acceptance for single event:
22904 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(1,cosP1nW1);
22905
22906 // final average weighted 1-particle correction (cos terms) for non-uniform acceptance for all events:
1268c371 22907 fIntFlowCorrectionTermsForNUAPro[1]->Fill(0.5,cosP1nW1,(*fSpk)(0,1));
489d5531 22908 }
22909
22910 // 2-particle:
22911 Double_t cosP1nP1nW1W1 = 0.; // <<w1 w2 cos(n*(phi1+phi2))>>
22912
1268c371 22913 if(dMult>1 && TMath::Abs(dM11)>1.e-6)
489d5531 22914 {
22915 cosP1nP1nW1W1 = (pow(dReQ1n1k,2)-pow(dImQ1n1k,2)-dReQ2n2k)/dM11;
22916
22917 // average weighted 2-particle correction (cos terms) for non-uniform acceptance for single event:
22918 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(2,cosP1nP1nW1W1);
22919
22920 // final average weighted 2-particle correction (cos terms) for non-uniform acceptance for all events:
22921 fIntFlowCorrectionTermsForNUAPro[1]->Fill(1.5,cosP1nP1nW1W1,dM11);
22922 }
22923
22924 // 3-particle:
22925 Double_t cosP1nM1nM1nW1W1W1 = 0.; // <<w1 w2 w3 cos(n*(phi1-phi2-phi3))>>
22926
1268c371 22927 if(dMult>2 && TMath::Abs(dM111)>1.e-6)
489d5531 22928 {
57340a27 22929 cosP1nM1nM1nW1W1W1 = (dReQ1n1k*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
22930 - dReQ1n1k*dReQ2n2k-dImQ1n1k*dImQ2n2k
1268c371 22931 - 2.*((*fSpk)(0,2))*dReQ1n1k
489d5531 22932 + 2.*dReQ1n3k)
22933 / dM111;
22934
22935 // average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for single event:
22936 fIntFlowCorrectionTermsForNUAEBE[1]->SetBinContent(3,cosP1nM1nM1nW1W1W1);
22937
22938 // final average non-weighted 3-particle correction (cos terms) for non-uniform acceptance for all events:
22939 fIntFlowCorrectionTermsForNUAPro[1]->Fill(2.5,cosP1nM1nM1nW1W1W1,dM111);
22940 }
22941
22942} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUACosTermsUsingParticleWeights()
22943
22944
e1d101a6 22945//=======================================================================================================================
489d5531 22946
22947
22948void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights()
22949{
22950 // calculate corrections using particle weights for non-uniform acceptance of the detector for no-name integrated flow (sin terms)
22951
22952 // **********************************************************************
22953 // **** weighted corrections for non-uniform acceptance (sin terms): ****
22954 // **********************************************************************
22955
22956 // Remark 1: When particle weights are used the binning of fIntFlowCorrectionTermsForNUAPro[0] is organized as follows:
57340a27 22957 //
489d5531 22958 // 1st bin: <<w1 sin(n*(phi1))>> = sinP1nW1
22959 // 2nd bin: <<w1 w2 sin(n*(phi1+phi2))>> = sinP1nP1nW1W1
22960 // 3rd bin: <<w1 w2 w3 sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1nW1W1W1
22961 // ...
22962
22963 // multiplicity (number of particles used to determine the reaction plane)
1268c371 22964 Double_t dMult = (*fSpk)(0,0);
489d5531 22965
22966 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
22967 Double_t dReQ1n1k = (*fReQ)(0,1);
22968 Double_t dReQ2n2k = (*fReQ)(1,2);
22969 //Double_t dReQ3n3k = (*fReQ)(2,3);
22970 //Double_t dReQ4n4k = (*fReQ)(3,4);
22971 //Double_t dReQ1n3k = (*fReQ)(0,3);
22972 Double_t dImQ1n1k = (*fImQ)(0,1);
22973 Double_t dImQ2n2k = (*fImQ)(1,2);
22974 //Double_t dImQ3n3k = (*fImQ)(2,3);
22975 //Double_t dImQ4n4k = (*fImQ)(3,4);
22976 Double_t dImQ1n3k = (*fImQ)(0,3);
22977
22978 // dMs are variables introduced in order to simplify some Eqs. bellow:
22979 //..............................................................................................
1268c371 22980 Double_t dM11 = (*fSpk)(1,1)-(*fSpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
22981 Double_t dM111 = (*fSpk)(2,1)-3.*(*fSpk)(0,2)*(*fSpk)(0,1)
22982 + 2.*(*fSpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
489d5531 22983 //..............................................................................................
22984
22985 // 1-particle:
22986 Double_t sinP1nW1 = 0.; // <<w1 sin(n*(phi1))>>
22987
1268c371 22988 if(dMult>0 && TMath::Abs((*fSpk)(0,1))>1.e-6)
489d5531 22989 {
1268c371 22990 sinP1nW1 = dImQ1n1k/((*fSpk)(0,1));
489d5531 22991
22992 // average weighted 1-particle correction (sin terms) for non-uniform acceptance for single event:
22993 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(1,sinP1nW1);
22994
22995 // final average weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
1268c371 22996 fIntFlowCorrectionTermsForNUAPro[0]->Fill(0.5,sinP1nW1,(*fSpk)(0,1));
489d5531 22997 }
22998
22999 // 2-particle:
23000 Double_t sinP1nP1nW1W1 = 0.; // <<w1 w2 sin(n*(phi1+phi2))>>
23001
1268c371 23002 if(dMult>1 && TMath::Abs(dM11)>1.e-6)
489d5531 23003 {
23004 sinP1nP1nW1W1 = (2.*dReQ1n1k*dImQ1n1k-dImQ2n2k)/dM11;
23005
23006 // average weighted 2-particle correction (sin terms) for non-uniform acceptance for single event:
23007 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(2,sinP1nP1nW1W1);
23008
23009 // final average weighted 1-particle correction (sin terms) for non-uniform acceptance for all events:
23010 fIntFlowCorrectionTermsForNUAPro[0]->Fill(1.5,sinP1nP1nW1W1,dM11);
23011 }
23012
23013 // 3-particle:
23014 Double_t sinP1nM1nM1nW1W1W1 = 0.; // <<w1 w2 w3 sin(n*(phi1-phi2-phi3))>>
23015
1268c371 23016 if(dMult>2 && TMath::Abs(dM111)>1.e-6)
489d5531 23017 {
57340a27 23018 sinP1nM1nM1nW1W1W1 = (-dImQ1n1k*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
23019 + dReQ1n1k*dImQ2n2k-dImQ1n1k*dReQ2n2k
1268c371 23020 + 2.*((*fSpk)(0,2))*dImQ1n1k
489d5531 23021 - 2.*dImQ1n3k)
23022 / dM111;
23023
23024 // average weighted 3-particle correction (sin terms) for non-uniform acceptance for single event:
23025 fIntFlowCorrectionTermsForNUAEBE[0]->SetBinContent(3,sinP1nM1nM1nW1W1W1);
23026
23027 // final average weighted 3-particle correction (sin terms) for non-uniform acceptance for all events:
23028 fIntFlowCorrectionTermsForNUAPro[0]->Fill(2.5,sinP1nM1nM1nW1W1W1,dM111);
23029 }
23030
23031} // end of AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrectionsForNUASinTermsUsingParticleWeights()
23032
e1d101a6 23033//=======================================================================================================================
489d5531 23034
0328db2d 23035void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent)
489d5531 23036{
23037 // Evaluate with nested loops correction terms for non-uniform acceptance for integrated flow (using the particle weights).
23038
57340a27 23039 // Results are stored in profiles fIntFlowDirectCorrectionTermsForNUA[0] (sin terms) and
23040 // fIntFlowDirectCorrectionTermsForNUA[1] (cos terms).
489d5531 23041
57340a27 23042 // Remark 1: When particle weights are used the binning of fIntFlowDirectCorrectionTermsForNUA[sc] is
489d5531 23043 // organized as follows (sc stands for either sin or cos):
23044 //
23045 // 1st bin: <<w1 sc(n*(phi1))>> = scP1nW1
23046 // 2nd bin: <<w1 w2 sc(n*(phi1+phi2))>> = scP1nP1nW1W1
23047 // 3rd bin: <<w1 w2 w3 sc(n*(phi1-phi2-phi3))>> = scP1nM1nM1nW1W1W1
3b552efe 23048 // ...
489d5531 23049
23050 Int_t nPrim = anEvent->NumberOfTracks();
23051 AliFlowTrackSimple *aftsTrack = NULL;
23052 //Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
23053 //Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
23054 Double_t phi1=0., phi2=0., phi3=0.;
23055 Double_t wPhi1=1., wPhi2=1., wPhi3=1.;
23056 Int_t n = fHarmonic;
23057 Int_t eventNo = (Int_t)fAvMultiplicity->GetBinEntries(1); // to be improved (is this casting safe in general?)
1268c371 23058 Double_t dMult = (*fSpk)(0,0);
489d5531 23059 cout<<endl;
23060 cout<<"Correction terms for non-uniform acceptance: Event number: "<<eventNo<<", multiplicity is "<<dMult<<endl;
23061 if(dMult<1)
23062 {
23063 cout<<"... skipping this event (multiplicity too low) ..."<<endl;
23064 } else if (dMult>fMaxAllowedMultiplicity)
23065 {
23066 cout<<"... skipping this event (multiplicity too high) ..."<<endl;
23067 } else
23068 {
23069 cout<<"... evaluating nested loops (using particle weights) ..."<<endl;
23070 }
23071
23072 // 1-particle correction terms using particle weights:
23073 if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
23074 {
23075 for(Int_t i1=0;i1<nPrim;i1++)
23076 {
23077 aftsTrack=anEvent->GetTrack(i1);
23078 if(!(aftsTrack->InRPSelection())) continue;
23079 phi1=aftsTrack->Phi();
23080 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
57340a27 23081 // 1-particle correction terms using particle weights:
489d5531 23082 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(0.5,sin(n*phi1),wPhi1); // <w1 sin(n*phi1)>
23083 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(0.5,cos(n*phi1),wPhi1); // <w1 cos(n*phi1)>
57340a27 23084 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23085 } // end of if(nPrim>=1 && nPrim<=fMaxAllowedMultiplicity)
23086
489d5531 23087 // 2-particle correction terms using particle weights:
23088 if(nPrim>=2 && nPrim<=fMaxAllowedMultiplicity)
23089 {
23090 for(Int_t i1=0;i1<nPrim;i1++)
23091 {
23092 aftsTrack=anEvent->GetTrack(i1);
23093 if(!(aftsTrack->InRPSelection())) continue;
23094 phi1=aftsTrack->Phi();
23095 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23096 for(Int_t i2=0;i2<nPrim;i2++)
23097 {
23098 if(i2==i1)continue;
23099 aftsTrack=anEvent->GetTrack(i2);
23100 if(!(aftsTrack->InRPSelection())) continue;
23101 phi2=aftsTrack->Phi();
23102 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23103 if(nPrim==2) cout<<i1<<" "<<i2<<"\r"<<flush;
57340a27 23104 // 2-p correction terms using particle weights:
489d5531 23105 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(1.5,sin(n*(phi1+phi2)),wPhi1*wPhi2); // <w1 w2 sin(n*(phi1+phi2))>
23106 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(1.5,cos(n*(phi1+phi2)),wPhi1*wPhi2); // <w1 w2 cos(n*(phi1+phi2))>
23107 } // end of for(Int_t i2=0;i2<nPrim;i2++)
23108 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23109 } // end of if(nPrim>=2)
23110
23111 // 3-particle correction terms using particle weights:
23112 if(nPrim>=3 && nPrim<=fMaxAllowedMultiplicity)
23113 {
23114 for(Int_t i1=0;i1<nPrim;i1++)
23115 {
23116 aftsTrack=anEvent->GetTrack(i1);
23117 if(!(aftsTrack->InRPSelection())) continue;
23118 phi1=aftsTrack->Phi();
23119 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23120 for(Int_t i2=0;i2<nPrim;i2++)
23121 {
23122 if(i2==i1)continue;
23123 aftsTrack=anEvent->GetTrack(i2);
23124 if(!(aftsTrack->InRPSelection())) continue;
23125 phi2=aftsTrack->Phi();
23126 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23127 for(Int_t i3=0;i3<nPrim;i3++)
23128 {
23129 if(i3==i1||i3==i2)continue;
23130 aftsTrack=anEvent->GetTrack(i3);
23131 if(!(aftsTrack->InRPSelection())) continue;
23132 phi3=aftsTrack->Phi();
23133 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23134 if(nPrim==3) cout<<i1<<" "<<i2<<" "<<i3<<"\r"<<flush;
57340a27 23135 // 3-p correction terms using particle weights:
489d5531 23136 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[0]->Fill(2.5,sin(n*(phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 sin(n*(phi1-phi2-phi3))>
23137 if(fUsePhiWeights) fIntFlowDirectCorrectionTermsForNUA[1]->Fill(2.5,cos(n*(phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 cos(n*(phi1-phi2-phi3))>
23138 } // end of for(Int_t i3=0;i3<nPrim;i3++)
23139 } // end of for(Int_t i2=0;i2<nPrim;i2++)
23140 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23141 } // end of if(nPrim>=3)
23142
57340a27 23143 /*
23144
489d5531 23145 if(nPrim>=4 && nPrim<=fMaxAllowedMultiplicity)
23146 {
23147 // 4 nested loops multiparticle correlations using particle weights:
23148 for(Int_t i1=0;i1<nPrim;i1++)
23149 {
23150 aftsTrack=anEvent->GetTrack(i1);
23151 if(!(aftsTrack->InRPSelection())) continue;
23152 phi1=aftsTrack->Phi();
23153 if(fUsePhiWeights && fPhiWeights) wPhi1 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*fnBinsPhi/TMath::TwoPi())));
23154 for(Int_t i2=0;i2<nPrim;i2++)
23155 {
23156 if(i2==i1)continue;
23157 aftsTrack=anEvent->GetTrack(i2);
23158 if(!(aftsTrack->InRPSelection())) continue;
23159 phi2=aftsTrack->Phi();
23160 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23161 for(Int_t i3=0;i3<nPrim;i3++)
23162 {
23163 if(i3==i1||i3==i2)continue;
23164 aftsTrack=anEvent->GetTrack(i3);
23165 if(!(aftsTrack->InRPSelection())) continue;
23166 phi3=aftsTrack->Phi();
23167 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23168 for(Int_t i4=0;i4<nPrim;i4++)
23169 {
23170 if(i4==i1||i4==i2||i4==i3)continue;
23171 aftsTrack=anEvent->GetTrack(i4);
23172 if(!(aftsTrack->InRPSelection())) continue;
23173 phi4=aftsTrack->Phi();
23174 if(fUsePhiWeights && fPhiWeights) wPhi4 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*fnBinsPhi/TMath::TwoPi())));
23175 if(nPrim>=4) cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<"\r"<<flush; // to be improved (replace eventually this if statement with if(nPrim==4))
23176 // 4-p correlations using particle weights:
23177 if(fUsePhiWeights) fIntFlowDirectCorrelations->Fill(10.5,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4);
23178 // extra correlations:
23179 // 2-p extra correlations (do not appear if particle weights are not used):
23180 // ...
23181 // 3-p extra correlations (do not appear if particle weights are not used):
23182 // ...
23183 // 4-p extra correlations (do not appear if particle weights are not used):
23184 // ...
23185 } // end of for(Int_t i4=0;i4<nPrim;i4++)
23186 } // end of for(Int_t i3=0;i3<nPrim;i3++)
23187 } // end of for(Int_t i2=0;i2<nPrim;i2++)
23188 } // end of for(Int_t i1=0;i1<nPrim;i1++)
23189 } // end of if(nPrim>=4)
23190
23191 */
23192
23193 cout<<endl;
23194
23195} // end of void AliFlowAnalysisWithQCumulants::EvaluateIntFlowCorrectionsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent)
23196
e1d101a6 23197//=======================================================================================================================
489d5531 23198
489d5531 23199void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights(TString type, TString ptOrEta)
23200{
23201 // Calculate correction terms for non-uniform acceptance for differential flow (cos terms) using particle weights.
57340a27 23202
489d5531 23203 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][1][cti], where cti runs as follows:
57340a27 23204 //
489d5531 23205 // 0: <<cos n(psi)>>
23206 // 1: <<w2 cos n(psi1+phi2)>>
23207 // 2: <<w2 w3 cos n(psi1+phi2-phi3)>>
23208 // 3: <<w2 w3 cos n(psi1-phi2-phi3)>>
23209 // 4:
23210 // 5:
23211 // 6:
23212
23213 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
23214 Double_t dReQ1n1k = (*fReQ)(0,1);
23215 Double_t dReQ2n2k = (*fReQ)(1,2);
23216 //Double_t dReQ1n3k = (*fReQ)(0,3);
23217 //Double_t dReQ4n4k = (*fReQ)(3,4);
23218 Double_t dImQ1n1k = (*fImQ)(0,1);
23219 Double_t dImQ2n2k = (*fImQ)(1,2);
23220 //Double_t dImQ1n3k = (*fImQ)(0,3);
23221 //Double_t dImQ4n4k = (*fImQ)(3,4);
23222
1268c371 23223 // S^M_{p,k} (see .h file for the definition of fSpk):
23224 Double_t dSM1p1k = (*fSpk)(0,1);
23225 Double_t dSM1p2k = (*fSpk)(0,2);
23226 Double_t dSM2p1k = (*fSpk)(1,1);
489d5531 23227
2a98ceb8 23228 Int_t t = 0; // type flag
23229 Int_t pe = 0; // ptEta flag
489d5531 23230
23231 if(type == "RP")
23232 {
23233 t = 0;
23234 } else if(type == "POI")
23235 {
23236 t = 1;
23237 }
23238
23239 if(ptOrEta == "Pt")
23240 {
23241 pe = 0;
23242 } else if(ptOrEta == "Eta")
23243 {
23244 pe = 1;
23245 }
23246
23247 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
23248 Double_t minPtEta[2] = {fPtMin,fEtaMin};
23249 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
23250 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23251
23252 // looping over all bins and calculating correction terms:
23253 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23254 {
23255 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
23256 Double_t p1n0kRe = 0.;
23257 Double_t p1n0kIm = 0.;
23258
23259 // number of POIs in particular pt or eta bin:
23260 Double_t mp = 0.;
23261
23262 // 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):
23263 Double_t q1n2kRe = 0.;
ea239361 23264 //Double_t q1n2kIm = 0.;
489d5531 23265 Double_t q2n1kRe = 0.;
23266 Double_t q2n1kIm = 0.;
46b94261 23267
489d5531 23268 // s_{1,1}, s_{1,2} // to be improved (add explanation)
23269 Double_t s1p1k = 0.;
23270 Double_t s1p2k = 0.;
46b94261 23271
489d5531 23272 // number of particles which are both RPs and POIs in particular pt or eta bin:
ea239361 23273 //Double_t mq = 0.;
489d5531 23274
23275 // M0111 from Eq. (118) in QC2c (to be improved (notation))
23276 Double_t dM01 = 0.;
23277 Double_t dM011 = 0.;
23278
23279 if(type == "POI")
23280 {
23281 // q_{m*n,k}:
23282 q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
23283 * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
ea239361 23284 //q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
23285 // * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
489d5531 23286 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
23287 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
23288 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
23289 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
ea239361 23290 //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 23291
489d5531 23292 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
23293 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
23294 }else if(type == "RP")
23295 {
23296 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
23297 q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
23298 * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
ea239361 23299 //q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
23300 // * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
489d5531 23301 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
23302 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
23303 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
23304 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
23305 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23306 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
23307 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
3b552efe 23308 //s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
23309
ea239361 23310 //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 23311 }
3b552efe 23312
489d5531 23313 if(type == "POI")
3b552efe 23314 {
23315 // p_{m*n,k}:
489d5531 23316 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
23317 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
23318 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
3b552efe 23319 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
23320 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 23321 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23322 dM01 = mp*dSM1p1k-s1p1k;
23323 dM011 = mp*(dSM2p1k-dSM1p2k)
23324 - 2.*(s1p1k*dSM1p1k-s1p2k);
23325
23326 // typeFlag = RP (0) or POI (1):
23327 t = 1;
23328 } else if(type == "RP")
489d5531 23329 {
23330 // to be improved (cross-checked):
23331 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
23332 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
23333 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
23334 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
23335 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23336 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23337 dM01 = mp*dSM1p1k-s1p1k;
23338 dM011 = mp*(dSM2p1k-dSM1p2k)
23339 - 2.*(s1p1k*dSM1p1k-s1p2k);
489d5531 23340 // typeFlag = RP (0) or POI (1):
3b552efe 23341 t = 0;
23342 }
489d5531 23343
23344 // <<cos n(psi1)>>:
23345 Double_t cosP1nPsi = 0.;
23346 if(mp)
23347 {
23348 cosP1nPsi = p1n0kRe/mp;
23349
23350 // fill profile for <<cos n(psi1)>>:
23351 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi,mp);
23352 // histogram to store <cos n(psi1)> e-b-e (needed in some other methods):
23353 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][0]->SetBinContent(b,cosP1nPsi);
46b94261 23354 } // end of if(mp)
57340a27 23355
489d5531 23356 // <<w2 cos n(psi1+phi2)>>:
23357 Double_t cosP1nPsiP1nPhiW2 = 0.;
23358 if(dM01)
23359 {
23360 cosP1nPsiP1nPhiW2 = (p1n0kRe*dReQ1n1k-p1n0kIm*dImQ1n1k-q2n1kRe)/(dM01);
23361 // fill profile for <<w2 cos n(psi1+phi2)>>:
23362 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsiP1nPhiW2,dM01);
23363 // histogram to store <w2 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23364 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][1]->SetBinContent(b,cosP1nPsiP1nPhiW2);
23365 } // end of if(dM01)
23366
23367 // <<w2 w3 cos n(psi1+phi2-phi3)>>:
23368 Double_t cosP1nPsi1P1nPhi2MPhi3W2W3 = 0.;
23369 if(dM011)
23370 {
46b94261 23371 cosP1nPsi1P1nPhi2MPhi3W2W3 = (p1n0kRe*(pow(dImQ1n1k,2.)+pow(dReQ1n1k,2.))
23372 - p1n0kRe*dSM1p2k
23373 - q2n1kRe*dReQ1n1k-q2n1kIm*dImQ1n1k
23374 - s1p1k*dReQ1n1k
23375 + 2.*q1n2kRe)
23376 / dM011;
489d5531 23377 // fill profile for <<w1 w2 w3 cos n(psi1+phi2)>>:
23378 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1P1nPhi2MPhi3W2W3,dM011);
23379 // histogram to store <w1 w2 w3 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23380 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][2]->SetBinContent(b,cosP1nPsi1P1nPhi2MPhi3W2W3);
23381 } // end of if(dM011)
23382
23383 // <<w2 w3 cos n(psi1-phi2-phi3)>>:
23384 Double_t cosP1nPsi1M1nPhi2MPhi3W2W3 = 0.;
23385 if(dM011)
23386 {
23387 cosP1nPsi1M1nPhi2MPhi3W2W3 = (p1n0kRe*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))+2.*p1n0kIm*dReQ1n1k*dImQ1n1k
23388 - 1.*(p1n0kRe*dReQ2n2k+p1n0kIm*dImQ2n2k)
46b94261 23389 - 2.*s1p1k*dReQ1n1k
489d5531 23390 + 2.*q1n2kRe)
23391 / dM011;
23392 // fill profile for <<w1 w2 w3 cos n(psi1+phi2)>>:
23393 fDiffFlowCorrectionTermsForNUAPro[t][pe][1][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],cosP1nPsi1M1nPhi2MPhi3W2W3,dM011);
23394 // histogram to store <w1 w2 w3 cos n(psi1+phi2)> e-b-e (needed in some other methods):
23395 fDiffFlowCorrectionTermsForNUAEBE[t][pe][1][3]->SetBinContent(b,cosP1nPsi1M1nPhi2MPhi3W2W3);
23396 } // end of if(dM011)
23397
23398 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
46b94261 23399
57340a27 23400} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUACosTermsUsingParticleWeights(TString type, TString ptOrEta)
23401
489d5531 23402
e1d101a6 23403//=======================================================================================================================
489d5531 23404
23405
23406void AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights(TString type, TString ptOrEta)
23407{
23408 // Calculate correction terms for non-uniform acceptance for differential flow (sin terms).
23409
23410 // Results are stored in fDiffFlowCorrectionTermsForNUAPro[t][pe][0][cti], where cti runs as follows:
23411 // 0: <<sin n(psi1)>>
23412 // 1: <<w2 sin n(psi1+phi2)>>
23413 // 2: <<w2 w3 sin n(psi1+phi2-phi3)>>
23414 // 3: <<w2 w3 sin n(psi1-phi2-phi3)>>:
23415 // 4:
23416 // 5:
23417 // 6:
23418
23419 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
23420 Double_t dReQ1n1k = (*fReQ)(0,1);
23421 Double_t dReQ2n2k = (*fReQ)(1,2);
23422 //Double_t dReQ1n3k = (*fReQ)(0,3);
23423 //Double_t dReQ4n4k = (*fReQ)(3,4);
23424 Double_t dImQ1n1k = (*fImQ)(0,1);
23425 Double_t dImQ2n2k = (*fImQ)(1,2);
23426 //Double_t dImQ1n3k = (*fImQ)(0,3);
23427 //Double_t dImQ4n4k = (*fImQ)(3,4);
23428
1268c371 23429 // S^M_{p,k} (see .h file for the definition of fSpk):
23430 Double_t dSM1p1k = (*fSpk)(0,1);
23431 Double_t dSM1p2k = (*fSpk)(0,2);
23432 Double_t dSM2p1k = (*fSpk)(1,1);
489d5531 23433
2a98ceb8 23434 Int_t t = 0; // type flag
23435 Int_t pe = 0; // ptEta flag
489d5531 23436
23437 if(type == "RP")
23438 {
23439 t = 0;
23440 } else if(type == "POI")
23441 {
23442 t = 1;
23443 }
23444
23445 if(ptOrEta == "Pt")
23446 {
23447 pe = 0;
23448 } else if(ptOrEta == "Eta")
23449 {
23450 pe = 1;
23451 }
23452
23453 Int_t nBinsPtEta[2] = {fnBinsPt,fnBinsEta};
23454 Double_t minPtEta[2] = {fPtMin,fEtaMin};
23455 //Double_t maxPtEta[2] = {fPtMax,fEtaMax};
23456 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23457
23458 // looping over all bins and calculating correction terms:
23459 for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23460 {
23461 // real and imaginary parts of p_{m*n,0} (non-weighted Q-vector evaluated for POIs in particular pt or eta bin):
23462 Double_t p1n0kRe = 0.;
23463 Double_t p1n0kIm = 0.;
23464
23465 // number of POIs in particular pt or eta bin:
23466 Double_t mp = 0.;
23467
23468 // 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 23469 //Double_t q1n2kRe = 0.;
489d5531 23470 Double_t q1n2kIm = 0.;
23471 Double_t q2n1kRe = 0.;
23472 Double_t q2n1kIm = 0.;
46b94261 23473
489d5531 23474 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23475 Double_t s1p1k = 0.;
23476 Double_t s1p2k = 0.;
46b94261 23477
489d5531 23478 // number of particles which are both RPs and POIs in particular pt or eta bin:
ea239361 23479 //Double_t mq = 0.;
489d5531 23480
23481 // M0111 from Eq. (118) in QC2c (to be improved (notation))
23482 Double_t dM01 = 0.;
23483 Double_t dM011 = 0.;
23484
23485 if(type == "POI")
23486 {
23487 // q_{m*n,k}:
ea239361 23488 //q1n2kRe = fReRPQ1dEBE[2][pe][0][2]->GetBinContent(fReRPQ1dEBE[2][pe][0][2]->GetBin(b))
23489 // * fReRPQ1dEBE[2][pe][0][2]->GetBinEntries(fReRPQ1dEBE[2][pe][0][2]->GetBin(b));
489d5531 23490 q1n2kIm = fImRPQ1dEBE[2][pe][0][2]->GetBinContent(fImRPQ1dEBE[2][pe][0][2]->GetBin(b))
23491 * fImRPQ1dEBE[2][pe][0][2]->GetBinEntries(fImRPQ1dEBE[2][pe][0][2]->GetBin(b));
23492 q2n1kRe = fReRPQ1dEBE[2][pe][1][1]->GetBinContent(fReRPQ1dEBE[2][pe][1][1]->GetBin(b))
23493 * fReRPQ1dEBE[2][pe][1][1]->GetBinEntries(fReRPQ1dEBE[2][pe][1][1]->GetBin(b));
23494 q2n1kIm = fImRPQ1dEBE[2][pe][1][1]->GetBinContent(fImRPQ1dEBE[2][pe][1][1]->GetBin(b))
23495 * fImRPQ1dEBE[2][pe][1][1]->GetBinEntries(fImRPQ1dEBE[2][pe][1][1]->GetBin(b));
ea239361 23496 //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 23497
489d5531 23498 s1p1k = pow(fs1dEBE[2][pe][1]->GetBinContent(b)*fs1dEBE[2][pe][1]->GetBinEntries(b),1.);
23499 s1p2k = pow(fs1dEBE[2][pe][2]->GetBinContent(b)*fs1dEBE[2][pe][2]->GetBinEntries(b),1.);
23500 }else if(type == "RP")
23501 {
23502 // q_{m*n,k}: (Remark: m=1 is 0, k=0 iz zero (to be improved!))
ea239361 23503 //q1n2kRe = fReRPQ1dEBE[0][pe][0][2]->GetBinContent(fReRPQ1dEBE[0][pe][0][2]->GetBin(b))
23504 // * fReRPQ1dEBE[0][pe][0][2]->GetBinEntries(fReRPQ1dEBE[0][pe][0][2]->GetBin(b));
489d5531 23505 q1n2kIm = fImRPQ1dEBE[0][pe][0][2]->GetBinContent(fImRPQ1dEBE[0][pe][0][2]->GetBin(b))
23506 * fImRPQ1dEBE[0][pe][0][2]->GetBinEntries(fImRPQ1dEBE[0][pe][0][2]->GetBin(b));
23507 q2n1kRe = fReRPQ1dEBE[0][pe][1][1]->GetBinContent(fReRPQ1dEBE[0][pe][1][1]->GetBin(b))
23508 * fReRPQ1dEBE[0][pe][1][1]->GetBinEntries(fReRPQ1dEBE[0][pe][1][1]->GetBin(b));
23509 q2n1kIm = fImRPQ1dEBE[0][pe][1][1]->GetBinContent(fImRPQ1dEBE[0][pe][1][1]->GetBin(b))
23510 * fImRPQ1dEBE[0][pe][1][1]->GetBinEntries(fImRPQ1dEBE[0][pe][1][1]->GetBin(b));
23511 // s_{1,1}, s_{1,2} and s_{1,3} // to be improved (add explanation)
23512 s1p1k = pow(fs1dEBE[0][pe][1]->GetBinContent(b)*fs1dEBE[0][pe][1]->GetBinEntries(b),1.);
23513 s1p2k = pow(fs1dEBE[0][pe][2]->GetBinContent(b)*fs1dEBE[0][pe][2]->GetBinEntries(b),1.);
23514 //s1p3k = pow(fs1dEBE[0][pe][3]->GetBinContent(b)*fs1dEBE[0][pe][3]->GetBinEntries(b),1.);
3b552efe 23515 }
23516
23517 if(type == "POI")
23518 {
23519 // p_{m*n,k}:
489d5531 23520 p1n0kRe = fReRPQ1dEBE[1][pe][0][0]->GetBinContent(fReRPQ1dEBE[1][pe][0][0]->GetBin(b))
23521 * fReRPQ1dEBE[1][pe][0][0]->GetBinEntries(fReRPQ1dEBE[1][pe][0][0]->GetBin(b));
23522 p1n0kIm = fImRPQ1dEBE[1][pe][0][0]->GetBinContent(fImRPQ1dEBE[1][pe][0][0]->GetBin(b))
3b552efe 23523 * fImRPQ1dEBE[1][pe][0][0]->GetBinEntries(fImRPQ1dEBE[1][pe][0][0]->GetBin(b));
23524 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 23525 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23526 dM01 = mp*dSM1p1k-s1p1k;
23527 dM011 = mp*(dSM2p1k-dSM1p2k)
23528 - 2.*(s1p1k*dSM1p1k-s1p2k);
23529 // typeFlag = RP (0) or POI (1):
23530 t = 1;
489d5531 23531 } else if(type == "RP")
3b552efe 23532 {
489d5531 23533 // to be improved (cross-checked):
23534 p1n0kRe = fReRPQ1dEBE[0][pe][0][0]->GetBinContent(fReRPQ1dEBE[0][pe][0][0]->GetBin(b))
23535 * fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b));
23536 p1n0kIm = fImRPQ1dEBE[0][pe][0][0]->GetBinContent(fImRPQ1dEBE[0][pe][0][0]->GetBin(b))
23537 * fImRPQ1dEBE[0][pe][0][0]->GetBinEntries(fImRPQ1dEBE[0][pe][0][0]->GetBin(b));
23538 mp = fReRPQ1dEBE[0][pe][0][0]->GetBinEntries(fReRPQ1dEBE[0][pe][0][0]->GetBin(b)); // to be improved (cross-checked by accessing other profiles here)
23539 // M01 from Eq. (118) in QC2c (to be improved (notation)):
3b552efe 23540 dM01 = mp*dSM1p1k-s1p1k;
23541 dM011 = mp*(dSM2p1k-dSM1p2k)
489d5531 23542 - 2.*(s1p1k*dSM1p1k-s1p2k);
23543 // typeFlag = RP (0) or POI (1):
3b552efe 23544 t = 0;
23545 }
23546
489d5531 23547 // <<sin n(psi1)>>:
23548 Double_t sinP1nPsi = 0.;
23549 if(mp)
23550 {
23551 sinP1nPsi = p1n0kIm/mp;
23552
23553 // fill profile for <<sin n(psi1)>>:
23554 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][0]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi,mp);
23555 // histogram to store <sin n(psi1)> e-b-e (needed in some other methods):
23556 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][0]->SetBinContent(b,sinP1nPsi);
46b94261 23557 } // end of if(mp)
23558
489d5531 23559 // <<w2 sin n(psi1+phi2)>>:
23560 Double_t sinP1nPsiP1nPhiW2 = 0.;
23561 if(dM01)
23562 {
23563 sinP1nPsiP1nPhiW2 = (p1n0kRe*dImQ1n1k+p1n0kIm*dReQ1n1k-q2n1kIm)/(dM01);
23564 // fill profile for <<w2 sin n(psi1+phi2)>>:
23565 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][1]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsiP1nPhiW2,dM01);
23566 // histogram to store <w2 sin n(psi1+phi2)> e-b-e (needed in some other methods):
23567 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][1]->SetBinContent(b,sinP1nPsiP1nPhiW2);
23568 } // end of if(mp*dMult-mq)
23569
23570 // <<w2 w3 sin n(psi1+phi2-phi3)>>:
23571 Double_t sinP1nPsi1P1nPhi2MPhi3W2W3 = 0.;
23572 if(dM011)
23573 {
46b94261 23574 sinP1nPsi1P1nPhi2MPhi3W2W3 = (p1n0kIm*(pow(dImQ1n1k,2.)+pow(dReQ1n1k,2.))
23575 - p1n0kIm*dSM1p2k
23576 + q2n1kRe*dImQ1n1k-q2n1kIm*dReQ1n1k
23577 - s1p1k*dImQ1n1k
23578 + 2.*q1n2kIm)
23579 / dM011;
489d5531 23580 // fill profile for <<w2 w3 sin n(psi1+phi2-phi3)>>:
23581 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][2]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1P1nPhi2MPhi3W2W3,dM011);
23582 // histogram to store <w2 w3 sin n(psi1+phi2-phi3)> e-b-e (needed in some other methods):
23583 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][2]->SetBinContent(b,sinP1nPsi1P1nPhi2MPhi3W2W3);
23584 } // end of if(dM011)
23585
23586 // <<w2 w3 sin n(psi1-phi2-phi3)>>:
23587 Double_t sinP1nPsi1M1nPhi2MPhi3W2W3 = 0.;
23588 if(dM011)
23589 {
23590 sinP1nPsi1M1nPhi2MPhi3W2W3 = (p1n0kIm*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))-2.*p1n0kRe*dReQ1n1k*dImQ1n1k
23591 + 1.*(p1n0kRe*dImQ2n2k-p1n0kIm*dReQ2n2k)
46b94261 23592 + 2.*s1p1k*dImQ1n1k
489d5531 23593 - 2.*q1n2kIm)
23594 / dM011;
23595 // fill profile for <<w2 w3 sin n(psi1-phi2-phi3)>>:
23596 fDiffFlowCorrectionTermsForNUAPro[t][pe][0][3]->Fill(minPtEta[pe]+(b-1)*binWidthPtEta[pe],sinP1nPsi1M1nPhi2MPhi3W2W3,dM011);
23597 // histogram to store <w2 w3 sin n(psi1-phi2-phi3)> e-b-e (needed in some other methods):
23598 fDiffFlowCorrectionTermsForNUAEBE[t][pe][0][3]->SetBinContent(b,sinP1nPsi1M1nPhi2MPhi3W2W3);
23599 } // end of if(dM011)
23600
23601 } // end of for(Int_t b=1;b<=nBinsPtEta[pe];b++)
23602
23603} // end of AliFlowAnalysisWithQCumulants::CalculateDiffFlowCorrectionsForNUASinTermsUsingParticleWeights(TString type, TString ptOrEta)
23604
e1d101a6 23605//=======================================================================================================================
489d5531 23606
0328db2d 23607void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple * const anEvent, TString type, TString ptOrEta)
489d5531 23608{
57340a27 23609 // Evaluate with nested loops correction terms for non-uniform acceptance
489d5531 23610 // with using particle weights (both sin and cos terms) relevant for differential flow.
23611
57340a27 23612 // Remark 1: "w1" in expressions bellow is a particle weight used only for particles which were
23613 // flagged both as POI and RP.
489d5531 23614 // Remark 2: Reduced correction terms for non-uniform acceptance are evaluated in pt bin number fCrossCheckInPtBinNo
23615 // and eta bin number fCrossCheckInEtaBinNo both for RPs and POIs.
23616 // Remark 3: Results are stored in 1 bin profiles fDiffFlowDirectCorrections[t][pe][sc][cti], where first three indices runs as:
23617 // [0=RP,1=POI][0=Pt,1=Eta][0=sin terms,1=cos terms], whilst the cti (correction term index) runs as follows:
23618 // cti:
23619 // 0: <<sc n(psi1)>>
23620 // 1: <<w2 sc n(psi1+phi2)>>
23621 // 2: <<w2 w3 sc n(psi1+phi2-phi3)>>
23622 // 3: <<w2 w3 sc n(psi1-phi2-phi3)>>
23623 // 4:
23624 // 5:
23625 // 6:
46b94261 23626
2a98ceb8 23627 Int_t typeFlag = 0;
23628 Int_t ptEtaFlag = 0;
489d5531 23629 if(type == "RP")
23630 {
23631 typeFlag = 0;
23632 } else if(type == "POI")
23633 {
23634 typeFlag = 1;
23635 }
23636 if(ptOrEta == "Pt")
23637 {
23638 ptEtaFlag = 0;
23639 } else if(ptOrEta == "Eta")
23640 {
23641 ptEtaFlag = 1;
23642 }
23643 // shortcuts:
23644 Int_t t = typeFlag;
23645 Int_t pe = ptEtaFlag;
23646
23647 Double_t lowerPtEtaEdge[2] = {fPtMin+(fCrossCheckInPtBinNo-1)*fPtBinWidth,fEtaMin+(fCrossCheckInEtaBinNo-1)*fEtaBinWidth};
23648 Double_t upperPtEtaEdge[2] = {fPtMin+fCrossCheckInPtBinNo*fPtBinWidth,fEtaMin+fCrossCheckInEtaBinNo*fEtaBinWidth};
23649 Double_t binWidthPtEta[2] = {fPtBinWidth,fEtaBinWidth};
23650
23651 Int_t nPrim = anEvent->NumberOfTracks();
23652 AliFlowTrackSimple *aftsTrack = NULL;
23653
23654 Double_t psi1=0., phi2=0., phi3=0.;// phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
23655 Double_t wPhi2=1., wPhi3=1.;
23656
23657 Int_t n = fHarmonic;
23658
23659 // 1'-particle correction terms:
23660 for(Int_t i1=0;i1<nPrim;i1++)
23661 {
23662 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23663 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23664 if(typeFlag==1) // this is diff flow of POIs
489d5531 23665 {
23666 if(ptOrEta == "Pt")
23667 {
23668 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23669 } else if (ptOrEta == "Eta")
23670 {
23671 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23672 }
23673 } else // this is diff flow of RPs
23674 {
489d5531 23675 if(ptOrEta == "Pt")
23676 {
23677 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23678 } else if (ptOrEta == "Eta")
23679 {
23680 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23681 }
489d5531 23682 }
23683 psi1=aftsTrack->Phi();
23684 // sin terms:
23685 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*psi1),1.); // <<sin(n*(psi1))>>
23686 // cos terms:
23687 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][0]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*psi1),1.); // <<cos(n*(psi1))>>
23688 }//end of for(Int_t i1=0;i1<nPrim;i1++)
23689
23690 // 2'-particle correction terms:
23691 for(Int_t i1=0;i1<nPrim;i1++)
23692 {
23693 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23694 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23695 if(typeFlag==1) // this is diff flow of POIs
489d5531 23696 {
23697 if(ptOrEta == "Pt")
23698 {
23699 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23700 } else if (ptOrEta == "Eta")
23701 {
23702 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23703 }
23704 } else // this is diff flow of RPs
23705 {
489d5531 23706 if(ptOrEta == "Pt")
23707 {
23708 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23709 } else if (ptOrEta == "Eta")
23710 {
23711 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23712 }
489d5531 23713 }
23714 psi1=aftsTrack->Phi();
23715 for(Int_t i2=0;i2<nPrim;i2++)
23716 {
23717 if(i2==i1) continue;
23718 aftsTrack=anEvent->GetTrack(i2);
23719 // RP condition (!(first) particle in the correlator must be RP):
23720 if(!(aftsTrack->InRPSelection())) continue;
46b94261 23721 phi2=aftsTrack->Phi();
489d5531 23722 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23723 // sin terms:
23724 fDiffFlowDirectCorrectionTermsForNUA[t][pe][0][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,sin(n*(psi1+phi2)),wPhi2); // <<w2 sin(n*(psi1+phi2))>>
23725 // cos terms:
23726 fDiffFlowDirectCorrectionTermsForNUA[t][pe][1][1]->Fill(lowerPtEtaEdge[pe]+binWidthPtEta[pe]/2.,cos(n*(psi1+phi2)),wPhi2); // <<w2 cos(n*(psi1+phi2))>>
23727 }//end of for(Int_t i2=0;i2<nPrim;i2++)
23728 }//end of for(Int_t i1=0;i1<nPrim;i1++)
23729
23730 // 3'-particle correction terms:
23731 for(Int_t i1=0;i1<nPrim;i1++)
23732 {
23733 aftsTrack=anEvent->GetTrack(i1);
3b552efe 23734 // POI condition (first particle in the correlator must be POI): // to be improved (this can be implemented much better)
23735 if(typeFlag==1) // this is diff flow of POIs
489d5531 23736 {
23737 if(ptOrEta == "Pt")
23738 {
23739 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
23740 } else if (ptOrEta == "Eta")
23741 {
23742 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InPOISelection())))continue;
3b552efe 23743 }
23744 } else // this is diff flow of RPs
23745 {
489d5531 23746 if(ptOrEta == "Pt")
23747 {
23748 if(!((aftsTrack->Pt()>=lowerPtEtaEdge[pe] && aftsTrack->Pt()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
23749 } else if (ptOrEta == "Eta")
23750 {
23751 if(!((aftsTrack->Eta()>=lowerPtEtaEdge[pe] && aftsTrack->Eta()<upperPtEtaEdge[pe]) && (aftsTrack->InRPSelection())))continue;
3b552efe 23752 }
489d5531 23753 }
23754 psi1=aftsTrack->Phi();
23755 for(Int_t i2=0;i2<nPrim;i2++)
23756 {
23757 if(i2==i1) continue;
23758 aftsTrack=anEvent->GetTrack(i2);
23759 // RP condition (!(first) particle in the correlator must be RP):
23760 if(!(aftsTrack->InRPSelection())) continue;
23761 phi2=aftsTrack->Phi();
23762 if(fUsePhiWeights && fPhiWeights) wPhi2 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*fnBinsPhi/TMath::TwoPi())));
23763 for(Int_t i3=0;i3<nPrim;i3++)
23764 {
23765 if(i3==i1||i3==i2) continue;
23766 aftsTrack=anEvent->GetTrack(i3);
23767 // RP condition (!(first) particle in the correlator must be RP):
23768 if(!(aftsTrack->InRPSelection())) continue;
23769 phi3=aftsTrack->Phi();
23770 if(fUsePhiWeights && fPhiWeights) wPhi3 = fPhiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*fnBinsPhi/TMath::TwoPi())));
23771 // sin terms:
23772 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))>>
23773 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))>>
23774 // cos terms:
23775 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))>>
23776 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))>>
23777 }//end of for(Int_t i3=0;i3<nPrim;i3++)
23778 }//end of for(Int_t i2=0;i2<nPrim;i2++)
46b94261 23779 }//end of for(Int_t i1=0;i1<nPrim;i1++)
489d5531 23780
23781} // end of void AliFlowAnalysisWithQCumulants::EvaluateDiffFlowCorrectionTermsForNUAWithNestedLoopsUsingParticleWeights(AliFlowEventSimple* anEvent, TString type, TString ptOrEta)
23782
e1d101a6 23783//=======================================================================================================================
2001bc3a 23784
b3dacf6b 23785void AliFlowAnalysisWithQCumulants::CheckPointersUsedInFinish()
23786{
23787 // Check all pointers used in method Finish().
23788
b77b6434 23789 if(!fAvMultiplicity)
23790 {
23791 cout<<endl;
23792 cout<<" WARNING (QC): fAvMultiplicity is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23793 cout<<endl;
23794 exit(0);
23795 }
b3dacf6b 23796 if(!fIntFlowCorrelationsPro)
23797 {
23798 cout<<endl;
23799 cout<<" WARNING (QC): fIntFlowCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23800 cout<<endl;
23801 exit(0);
23802 }
b40a910e 23803 if(!fIntFlowSquaredCorrelationsPro)
23804 {
23805 cout<<endl;
23806 cout<<" WARNING (QC): fIntFlowSquaredCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23807 cout<<endl;
23808 exit(0);
23809 }
b3dacf6b 23810 if(!fIntFlowCorrelationsHist)
23811 {
23812 cout<<endl;
23813 cout<<" WARNING (QC): fIntFlowCorrelationsHist is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23814 cout<<endl;
23815 exit(0);
23816 }
403e3389 23817 if((fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) && !fIntFlowExtraCorrelationsPro)
b77b6434 23818 {
23819 cout<<endl;
23820 cout<<" WARNING (QC): fIntFlowExtraCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23821 cout<<endl;
23822 exit(0);
23823 }
b3dacf6b 23824 for(Int_t power=0;power<2;power++)
23825 {
23826 if(!fIntFlowSumOfEventWeights[power])
23827 {
23828 cout<<endl;
23829 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeights[%d] is NULL in CheckPointersUsedInFinish() !!!!",power)<<endl;
23830 cout<<endl;
23831 exit(0);
23832 }
23833 } // end of for(Int_t power=0;power<2;power++)
23834 if(!fIntFlowProductOfCorrelationsPro)
23835 {
23836 cout<<endl;
23837 cout<<" WARNING (QC): fIntFlowProductOfCorrelationsPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23838 cout<<endl;
23839 exit(0);
23840 }
23841 if(!fIntFlowSumOfProductOfEventWeights)
23842 {
23843 cout<<endl;
23844 cout<<" WARNING (QC): fIntFlowSumOfProductOfEventWeights is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23845 cout<<endl;
23846 exit(0);
23847 }
23848 if(!fIntFlowCovariances)
23849 {
23850 cout<<endl;
23851 cout<<" WARNING (QC): fIntFlowCovariances is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23852 cout<<endl;
23853 exit(0);
23854 }
23855 if(!fIntFlowQcumulants)
23856 {
23857 cout<<endl;
23858 cout<<" WARNING (QC): fIntFlowQcumulants is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23859 cout<<endl;
23860 exit(0);
23861 }
0dd3b008 23862 if(!fIntFlow)
23863 {
23864 cout<<endl;
23865 cout<<" WARNING (QC): fIntFlow is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23866 cout<<endl;
23867 exit(0);
23868 }
23869 if(!fCommonHists)
23870 {
23871 cout<<endl;
23872 cout<<" WARNING (QC): fCommonHists is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23873 cout<<endl;
23874 exit(0);
23875 }
23876 if(!(fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th && fCommonHistsResults8th))
23877 {
23878 cout<<endl;
23879 cout<<" WARNING (QC): fCommonHistsResults2nd && fCommonHistsResults4th && fCommonHistsResults6th"<<endl;
23880 cout<<" && fCommonHistsResults8th is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23881 cout<<endl;
23882 exit(0);
23883 }
e1d101a6 23884
b92ea2b9 23885 // NUA stuff:
23886 for(Int_t sc=0;sc<2;sc++) // sin/cos
23887 {
23888 if(!fIntFlowCorrectionTermsForNUAPro[sc])
23889 {
23890 cout<<endl;
23891 cout<<Form(" WARNING (QC): fIntFlowCorrectionTermsForNUAPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",sc)<<endl;
23892 cout<<endl;
23893 exit(0);
23894 }
23895 if(!fIntFlowCorrectionTermsForNUAHist[sc])
23896 {
23897 cout<<endl;
23898 cout<<Form(" WARNING (QC): fIntFlowCorrectionTermsForNUAHist[%d] is NULL in CheckPointersUsedInFinish() !!!!",sc)<<endl;
23899 cout<<endl;
23900 exit(0);
23901 }
23902 for(Int_t lq=0;lq<2;lq++) // linear/quadratic
23903 {
23904 if(!fIntFlowSumOfEventWeightsNUA[sc][lq])
23905 {
23906 cout<<endl;
23907 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeightsNUA[%d][%d] is NULL in CheckPointersUsedInFinish() !!!!",sc,lq)<<endl;
23908 cout<<endl;
23909 exit(0);
23910 }
23911 } // end of for(Int_t lq=0;lq<2;lq++) // linear/quadratic
23912 } // end of for(Int_t power=0;power<2;power++)
23913 if(!fIntFlowProductOfCorrectionTermsForNUAPro)
23914 {
23915 cout<<endl;
23916 cout<<" WARNING (QC): fIntFlowProductOfCorrectionTermsForNUAPro is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23917 cout<<endl;
23918 exit(0);
23919 }
23920 if(!fIntFlowSumOfProductOfEventWeightsNUA)
23921 {
23922 cout<<endl;
23923 cout<<" WARNING (QC): fIntFlowSumOfProductOfEventWeightsNUA is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23924 cout<<endl;
23925 exit(0);
23926 }
23927 if(!fIntFlowCovariancesNUA)
23928 {
23929 cout<<endl;
23930 cout<<" WARNING (QC): fIntFlowCovariancesNUA is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23931 cout<<endl;
23932 exit(0);
23933 }
23934 if(!fIntFlowQcumulantsErrorSquaredRatio)
23935 {
23936 cout<<endl;
23937 cout<<" WARNING (QC): fIntFlowQcumulantsErrorSquaredRatio is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23938 cout<<endl;
23939 exit(0);
23940 }
23941 if(!fIntFlowDetectorBias)
23942 {
23943 cout<<endl;
23944 cout<<" WARNING (QC): fIntFlowDetectorBias is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23945 cout<<endl;
23946 exit(0);
23947 }
23948
e1d101a6 23949 if(fCalculateMixedHarmonics)
23950 {
23951 if(!(fMixedHarmonicsFlags))
23952 {
23953 cout<<endl;
23954 cout<<" WARNING (QC): fMixedHarmonicsFlags is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23955 cout<<endl;
23956 exit(0);
23957 }
23958 if(!(f2pCorrelations && f3pCorrelations && f4pCorrelations && f5pCorrelations))
23959 {
23960 cout<<endl;
23961 cout<<" WARNING (QC): f2pCorrelations && f3pCorrelations && f4pCorrelations && f5pCorrelations is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23962 cout<<endl;
23963 exit(0);
23964 }
23965 if(!(f2pCumulants && f3pCumulants && f4pCumulants && f5pCumulants))
23966 {
23967 cout<<endl;
23968 cout<<" WARNING (QC): f2pCumulants && f3pCumulants && f4pCumulants && f5pCumulants is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23969 cout<<endl;
23970 exit(0);
23971 }
c10259fb 23972 for(Int_t power=0;power<2;power++)
23973 {
23974 if(!fMixedHarmonicEventWeights[power])
23975 {
23976 cout<<endl;
23977 cout<<Form(" WARNING (QC): fMixedHarmonicEventWeights[%d] is NULL in CheckPointersUsedInFinish() !!!!",power)<<endl;
23978 cout<<endl;
23979 exit(0);
23980 }
23981 } // end of for(Int_t power=0;power<2;power++)
23982 if(!(fMixedHarmonicProductOfEventWeights))
23983 {
23984 cout<<endl;
23985 cout<<" WARNING (QC): fMixedHarmonicProductOfEventWeights is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23986 cout<<endl;
23987 exit(0);
23988 }
23989 if(!(fMixedHarmonicProductOfCorrelations))
23990 {
23991 cout<<endl;
23992 cout<<" WARNING (QC): fMixedHarmonicProductOfCorrelations is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
23993 cout<<endl;
23994 exit(0);
23995 }
e1d101a6 23996 } // end of if(fCalculateMixedHarmonics)
23997
b3dacf6b 23998 // Versus multiplicity:
23999 if(!fCalculateCumulantsVsM){return;}
b77b6434 24000 for(Int_t co=0;co<=3;co++) // cumulant order
b3dacf6b 24001 {
b77b6434 24002 if(!fIntFlowQcumulantsVsM[co])
b3dacf6b 24003 {
24004 cout<<endl;
b77b6434 24005 cout<<Form(" WARNING (QC): fIntFlowQcumulantsVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
b3dacf6b 24006 cout<<endl;
24007 exit(0);
24008 }
b77b6434 24009 if(!fIntFlowVsM[co])
b3dacf6b 24010 {
24011 cout<<endl;
b77b6434 24012 cout<<Form(" WARNING (QC): fIntFlowVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
24013 cout<<endl;
24014 exit(0);
24015 }
24016 if(!fIntFlowDetectorBiasVsM[co])
24017 {
24018 cout<<endl;
24019 cout<<Form(" WARNING (QC): fIntFlowDetectorBiasVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",co)<<endl;
24020 cout<<endl;
24021 exit(0);
24022 }
24023 } // end of for(Int_t c0=0;c0<=3;c0++) // cumulant order
24024 for(Int_t ci=0;ci<=3;ci++) // correlation index
24025 {
24026 if(!fIntFlowCorrelationsVsMPro[ci])
24027 {
24028 cout<<endl;
24029 cout<<Form(" WARNING (QC): fIntFlowCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
b3dacf6b 24030 cout<<endl;
24031 exit(0);
24032 }
b40a910e 24033 if(!fIntFlowSquaredCorrelationsVsMPro[ci])
24034 {
24035 cout<<endl;
24036 cout<<Form(" WARNING (QC): fIntFlowSquaredCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
24037 cout<<endl;
24038 exit(0);
24039 }
b77b6434 24040 if(!fIntFlowCorrelationsVsMHist[ci])
b92ea2b9 24041 {
24042 cout<<endl;
b77b6434 24043 cout<<Form(" WARNING (QC): fIntFlowCorrelationsVsMHist[%d] is NULL in CheckPointersUsedInFinish() !!!!",ci)<<endl;
b92ea2b9 24044 cout<<endl;
24045 exit(0);
24046 }
b3dacf6b 24047 for(Int_t power=0;power<2;power++)
24048 {
24049 if(!fIntFlowSumOfEventWeightsVsM[ci][power])
24050 {
24051 cout<<endl;
24052 cout<<Form(" WARNING (QC): fIntFlowSumOfEventWeightsVsM[%d][%d] is NULL in CheckPointersUsedInFinish() !!!!",ci,power)<<endl;
24053 cout<<endl;
24054 exit(0);
24055 }
24056 } // end of for(Int_t power=0;power<2;power++)
24057 } // end of for(Int_t ci=0;ci<=3;ci++) // correlation index
24058 for(Int_t i=0;i<6;i++)
24059 {
24060 if(!fIntFlowProductOfCorrelationsVsMPro[i])
24061 {
24062 cout<<endl;
24063 cout<<Form(" WARNING (QC): fIntFlowProductOfCorrelationsVsMPro[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24064 cout<<endl;
24065 exit(0);
24066 }
24067 if(!fIntFlowSumOfProductOfEventWeightsVsM[i])
24068 {
24069 cout<<endl;
24070 cout<<Form(" WARNING (QC): fIntFlowSumOfProductOfEventWeightsVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24071 cout<<endl;
24072 exit(0);
24073 }
24074 if(!fIntFlowCovariancesVsM[i])
24075 {
24076 cout<<endl;
24077 cout<<Form(" WARNING (QC): fIntFlowCovariancesVsM[%d] is NULL in CheckPointersUsedInFinish() !!!!",i)<<endl;
24078 cout<<endl;
24079 exit(0);
24080 }
24081 } // end of for(Int_t i=0;i<6;i++)
24082 if(!fIntFlowRebinnedInM)
24083 {
24084 cout<<endl;
24085 cout<<" WARNING (QC): fIntFlowRebinnedInM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24086 cout<<endl;
24087 exit(0);
24088 }
24089 if(!fIntFlowQcumulantsRebinnedInM)
24090 {
24091 cout<<endl;
24092 cout<<" WARNING (QC): fIntFlowQcumulantsRebinnedInM is NULL in CheckPointersUsedInFinish() !!!!"<<endl;
24093 cout<<endl;
24094 exit(0);
24095 }
24096
24097} // end of void AliFlowAnalysisWithQCumulants::CheckPointersUsedInFinish()
24098
e1d101a6 24099//=======================================================================================================================
b3dacf6b 24100
24101void AliFlowAnalysisWithQCumulants::CheckPointersUsedInMake()
24102{
1268c371 24103 // Check all pointers used in method Make(). // to be improved - check other pointers as well
b3dacf6b 24104
b77b6434 24105 if(!fAvMultiplicity)
24106 {
1268c371 24107 printf("\n WARNING (QC): fAvMultiplicity is NULL in CheckPointersUsedInMake() !!!!\n\n");
b77b6434 24108 exit(0);
24109 }
403e3389 24110 if((fUsePhiWeights||fUsePtWeights||fUseEtaWeights||fUseTrackWeights) && !fIntFlowExtraCorrelationsPro)
b77b6434 24111 {
1268c371 24112 printf("\n WARNING (QC): fIntFlowExtraCorrelationsPro is NULL in CheckPointersUsedInMake() !!!!\n\n");
b77b6434 24113 exit(0);
24114 }
1268c371 24115 // 2D:
24116 if(fCalculate2DDiffFlow)
24117 {
24118 for(Int_t t=0;t<2;t++) // type = RP or POI
24119 {
24120 for(Int_t rci=0;rci<4;rci++) // reduced correlation index
24121 {
24122 if(!f2DDiffFlowCorrelationsPro[t][rci])
24123 {
24124 printf("\n WARNING (QC): f2DDiffFlowCorrelationsPro[%i][%i] is NULL in CheckPointersUsedInMake() !!!!\n\n",t,rci);
24125 exit(0);
24126 } // end of if(!f2DDiffFlowCorrelationsPro[t][rci])
24127 } // end of for(Int_t rci=0;rci<4;rci++) // reduced correlation index
24128 } // end of for(Int_t t=0;t<2;t++)
24129 } // end of if(fCalculate2DDiffFlow)
b3dacf6b 24130
24131} // end of void AliFlowAnalysisWithQCumulants::CheckPointersUsedInMake()
24132
57340a27 24133