X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWG%2FFLOW%2FBase%2FAliFlowAnalysisWithQCumulants.cxx;fp=PWG%2FFLOW%2FBase%2FAliFlowAnalysisWithQCumulants.cxx;h=5031b73c91f8db10afb972757208903d65e81a0c;hb=538844729b47b124d39a6c1d81f3cc0adfa41274;hp=463cc29a35059cc5368b2c42dbae2c1429b50d2d;hpb=b591bbbb8f709a5b00e755cfb0fc6d2d5d719388;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWG/FLOW/Base/AliFlowAnalysisWithQCumulants.cxx b/PWG/FLOW/Base/AliFlowAnalysisWithQCumulants.cxx index 463cc29a350..5031b73c91f 100644 --- a/PWG/FLOW/Base/AliFlowAnalysisWithQCumulants.cxx +++ b/PWG/FLOW/Base/AliFlowAnalysisWithQCumulants.cxx @@ -70,7 +70,7 @@ AliFlowAnalysisWithQCumulants::AliFlowAnalysisWithQCumulants(): // 0.) base: fHistList(NULL), // 1.) common: - fBookOnlyBasicCCH(kFALSE), + fBookOnlyBasicCCH(kTRUE), fCommonHists(NULL), fCommonHists2nd(NULL), fCommonHists4th(NULL), @@ -2866,6 +2866,8 @@ void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations() Double_t dQ3nQ2nQ3nstarQ2nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ3n,2.)+pow(dImQ3n,2.)); // |Q_{5n}|^2 |Q_{n}|^2 Double_t dQ5nQ1nQ5nstarQ1nstar = (pow(dReQ5n,2.)+pow(dImQ5n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)); + // |Q_{3n}|^2 |Q_{n}|^2 + Double_t dQ3nQ1nQ3nstarQ1nstar = (pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)); // Re[Q_{2n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*] Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2)) + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3)); @@ -2927,7 +2929,30 @@ void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations() // Re[Q_{2n}Q_{n}Q_{n}Q_{n}^*Q_{n}^*Q_{n}^*Q_{n}^*] Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.) * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.) - + 2.*dReQ1n*dImQ1n*dImQ2n); + + 2.*dReQ1n*dImQ1n*dImQ2n); + // Re[Q_{6n}Q_{2n}^*Q_{2n}^*Q_{n}^*Q_{n}^*] + Double_t reQ6nQ2nstarQ2nstarQ1nstarQ1nstar = pow(dReQ1n*dReQ2n,2.)*dReQ6n-pow(dReQ2n*dImQ1n,2.)*dReQ6n + - 4.*dReQ1n*dReQ2n*dReQ6n*dImQ1n*dImQ2n + - pow(dReQ1n*dImQ2n,2.)*dReQ6n+pow(dImQ1n*dImQ2n,2.)*dReQ6n + + 2.*dReQ1n*pow(dReQ2n,2.)*dImQ1n*dImQ6n + + 2.*pow(dReQ1n,2.)*dReQ2n*dImQ2n*dImQ6n + - 2.*dReQ2n*pow(dImQ1n,2.)*dImQ2n*dImQ6n + - 2.*dReQ1n*dImQ1n*pow(dImQ2n,2.)*dImQ6n; + // Re[Q_{4n}Q_{1n}Q_{1n}Q_{3n}^*Q_{3n}^*] + Double_t reQ4nQ1nQ1nQ3nstarQ3nstar = pow(dReQ1n*dReQ3n,2.)*dReQ4n-pow(dReQ3n*dImQ1n,2.)*dReQ4n + + 4.*dReQ1n*dReQ3n*dReQ4n*dImQ1n*dImQ3n + - pow(dReQ1n*dImQ3n,2.)*dReQ4n+pow(dImQ1n*dImQ3n,2.)*dReQ4n + - 2.*dReQ1n*pow(dReQ3n,2.)*dImQ1n*dImQ4n + + 2.*pow(dReQ1n,2.)*dReQ3n*dImQ3n*dImQ4n + - 2.*dReQ3n*pow(dImQ1n,2.)*dImQ3n*dImQ4n + + 2.*dReQ1n*dImQ1n*pow(dImQ3n,2.)*dImQ4n; + // Re[Q_{3n}Q_{3n}Q_{2n}^*Q_{2n}^*Q_{1n}^*Q_{1n}^*] + Double_t reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar = (dReQ1n*dReQ2n*dReQ3n-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n + - dReQ3n*dImQ1n*dImQ2n+dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n + + dReQ1n*dImQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n)*(dReQ1n*dReQ2n*dReQ3n + + dReQ2n*dReQ3n*dImQ1n+dReQ1n*dReQ3n*dImQ2n-dReQ3n*dImQ1n*dImQ2n + - dReQ1n*dReQ2n*dImQ3n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n + + dImQ1n*dImQ2n*dImQ3n); // Results for multiparticle azimuthal correlations: // 2-particle: @@ -3528,14 +3553,15 @@ void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations() four5n1n5n1n = (dQ5nQ1nQ5nstarQ1nstar-2.*reQ6nQ5nstarQ1nstar-2.*reQ5nQ4nstarQ1nstar + pow(dReQ6n,2.)+pow(dImQ6n,2.)-(dMult-4.)*(pow(dReQ5n,2.)+pow(dImQ5n,2.)) + pow(dReQ4n,2.)+pow(dImQ4n,2.)-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+dMult*(dMult-6.)) - / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); - + / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); + + // TBI: Recursive formula needed: four6n4n1n1n = (reQ6nQ4nstarQ1nstarQ1nstar - dMult*(dMult-1.)*(dMult-2.)*(three2n1n1n+2.*three5n4n1n+2.*three6n5n1n+three6n4n2n) - dMult*(dMult-1.)*(2.*two1n1n+1.*two4n4n+1.*two6n6n+1.*two2n2n+2.*two5n5n) - 1.*dMult) / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)); - + four6n2n2n2n = (reQ6nQ2nstarQ2nstarQ2nstar-3.*reQ6nQ4nstarQ2nstar-3.*reQ4nQ2nstarQ2nstar + 2.*(pow(dReQ6n,2.)+pow(dImQ6n,2.))+3.*(pow(dReQ4n,2.)+pow(dImQ4n,2.)) + 6.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-6.*dMult) @@ -3633,9 +3659,42 @@ void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations() + (dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*(dMult-7.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) - 2.*dMult*(dMult-12.)) / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); + + // Peter Jochumzsen: + five6n2n2n1n1n = (reQ6nQ2nstarQ2nstarQ1nstarQ1nstar + - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.) + - 14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.) + - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.) + - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.) + - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.) + - 6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.) + + 2.*reQ2nQ1nstarQ1nstar + 8.*reQ3nQ2nstarQ1nstar + + 5.*reQ6nQ4nstarQ2nstar - reQ6nQ4nstarQ1nstarQ1nstar + + 2.*reQ6nQ3nstarQ3nstar - reQ6nQ2nstarQ2nstarQ2nstar + + 4.*reQ4nQ2nstarQ2nstar - 2.*reQ4nQ2nstarQ1nstarQ1nstar + + 2.*reQ5nQ4nstarQ1nstar - 2.*reQ5nQ2nstarQ2nstarQ1nstar + + 4.*reQ4nQ3nstarQ1nstar + 4.*reQ5nQ3nstarQ2nstar + + 4.*reQ6nQ5nstarQ1nstar - 4.*reQ6nQ3nstarQ2nstarQ1nstar + 24.*dMult) + / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); - // five6n2n2n1n1n = ; - // five4n1n1n3n3n = ; + // Peter Jochumzsen: + /* + five4n1n1n3n3n = (reQ6nQ2nstarQ2nstarQ1nstarQ1nstar + - 12.*pow(dReQ1n,2.)-12.*pow(dImQ1n,2.) + - 14.*pow(dReQ2n,2.)-14.*pow(dImQ2n,2.) + - 8.*pow(dReQ3n,2.)-8.*pow(dImQ3n,2.) + - 6.*pow(dReQ4n,2.)-6.*pow(dImQ4n,2.) + - 4.*pow(dReQ5n,2.)-4.*pow(dImQ5n,2.) + - 6.*pow(dReQ6n,2.)-6.*pow(dImQ6n,2.) + + 2.*reQ2nQ1nstarQ1nstar + 8.*reQ3nQ2nstarQ1nstar + + 5.*reQ6nQ4nstarQ2nstar - reQ6nQ4nstarQ1nstarQ1nstar + + 2.*reQ6nQ3nstarQ3nstar - reQ6nQ2nstarQ2nstarQ2nstar + + 4.*reQ4nQ2nstarQ2nstar - 2.*reQ4nQ2nstarQ1nstarQ1nstar + + 2.*reQ5nQ4nstarQ1nstar - 2.*reQ5nQ2nstarQ2nstarQ1nstar + + 4.*reQ4nQ3nstarQ1nstar + 4.*reQ5nQ3nstarQ2nstar + + 4.*reQ6nQ5nstarQ1nstar - 4.*reQ6nQ3nstarQ2nstarQ1nstar + 24.*dMult) + / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); + */ // Average 5-particle correlations for all events: fIntFlowCorrelationsAllPro->Fill(52.5,five3n3n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)); @@ -3688,8 +3747,36 @@ void AliFlowAnalysisWithQCumulants::CalculateIntFlowCorrelations() + (dMult*dMult-20.*dMult+80.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.)) - dMult*(dMult-12.)*(dMult-10.)) / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); - - // six3n3n2n2n1n1n = ; + + // Peter Jochumzsen: + six3n3n2n2n1n1n = (reQ3nQ3nQ2nstarQ2nstarQ1nstarQ1nstar + + (80.-16.*dMult)*pow(dReQ1n,2.)+(80.-16.*dMult)*pow(dImQ1n,2.) + + (78.-16.*dMult)*pow(dReQ2n,2.)+(78.-16.*dMult)*pow(dImQ2n,2.) + + (72.-16.*dMult)*pow(dReQ3n,2.)+(72.-16.*dMult)*pow(dImQ3n,2.) + + 14.*pow(dReQ4n,2.)+14.*pow(dImQ4n,2.) + + 8.*pow(dReQ5n,2.)+8.*pow(dImQ5n,2.) + + 6.*pow(dReQ6n,2.)+6.*pow(dImQ6n,2.) + + 1.*reQ6nQ2nstarQ2nstarQ2nstar - 1.*reQ6nQ2nstarQ2nstarQ1nstarQ1nstar + - 76.*reQ3nQ2nstarQ1nstar + 4.*reQ3nQ1nstarQ1nstarQ1nstar + - 8.*reQ3nQ2nstarQ1nstar + 8.*dQ2nQ1nQ2nstarQ1nstar + + 4.*reQ5nQ2nstarQ2nstarQ1nstar - 2.*reQ6nQ3nstarQ3nstar + + 4.*reQ6nQ3nstarQ2nstarQ1nstar - 4.*reQ5nQ4nstarQ1nstar + + 16.*dMult*reQ3nQ2nstarQ1nstar - 2.*reQ4nQ2nstarQ2nstar + - 4.*reQ3nQ3nQ3nstarQ2nstarQ1nstar -8.*reQ4nQ3nstarQ1nstar + - 10.*reQ4nQ2nstarQ2nstar + 4.*reQ4nQ2nstarQ1nstarQ1nstar + - 12.*reQ4nQ3nstarQ1nstar + 8.*dQ3nQ1nQ3nstarQ1nstar + + 8.*reQ3nQ1nQ2nstarQ2nstar - 4.*reQ3nQ1nQ2nstarQ1nstarQ1nstar + + 5.*reQ4nQ2nQ3nstarQ3nstar+2.*pow(pow(dReQ2n,2.)+pow(dImQ2n,2.),2.) + + 4.*reQ5nQ1nQ3nstarQ3nstar+2.*pow(pow(dReQ3n,2.)+pow(dImQ3n,2.),2.) + - 6.*reQ6nQ3nstarQ3nstar - 14.*reQ2nQ1nstarQ1nstar + - 1.*reQ3nQ3nQ2nstarQ2nstarQ2nstar-4.*reQ3nQ2nQ2nstarQ2nstarQ1nstar + - 1.*reQ4nQ1nQ1nQ3nstarQ3nstar-8.*reQ5nQ3nstarQ2nstar + + 2.*pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),2.) - 10.*reQ2nQ1nstarQ1nstar + - 4.*reQ6nQ5nstarQ1nstar-5.*reQ6nQ4nstarQ2nstar + + 1.*reQ6nQ4nstarQ1nstarQ1nstar-8.*reQ5nQ3nstarQ2nstar + + 4.*reQ4nQ1nQ3nstarQ2nstar+8.*dQ3nQ2nQ3nstarQ2nstar + - 120.*dMult + 16.*dMult*dMult) + / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); // Average 6-particle correlations for all events: fIntFlowCorrelationsAllPro->Fill(57.5,six3n2n1n3n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); @@ -9915,14 +10002,14 @@ void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow() // Calculate generalized Q-cumulants (cumulants corrected for non-unifom acceptance). // Isotropic cumulants: - Double_t qc2 = fIntFlowQcumulants->GetBinContent(1); - Double_t qc2Error = fIntFlowQcumulants->GetBinError(1); - Double_t qc4 = fIntFlowQcumulants->GetBinContent(2); - Double_t qc4Error = fIntFlowQcumulants->GetBinError(2); - //Double_t qc6 = fIntFlowQcumulants->GetBinContent(3); - //Double_t qc6Error = fIntFlowQcumulants->GetBinError(3); - //Double_t qc8 = fIntFlowQcumulants->GetBinContent(4); - //Double_t qc8Error = fIntFlowQcumulants->GetBinError(4); + Double_t QC2 = fIntFlowQcumulants->GetBinContent(1); + Double_t QC2Error = fIntFlowQcumulants->GetBinError(1); + Double_t QC4 = fIntFlowQcumulants->GetBinContent(2); + Double_t QC4Error = fIntFlowQcumulants->GetBinError(2); + //Double_t QC6 = fIntFlowQcumulants->GetBinContent(3); + //Double_t QC6Error = fIntFlowQcumulants->GetBinError(3); + //Double_t QC8 = fIntFlowQcumulants->GetBinContent(4); + //Double_t QC8Error = fIntFlowQcumulants->GetBinError(4); // Measured 2-, 4-, 6- and 8-particle correlations: Double_t two = fIntFlowCorrelationsHist->GetBinContent(1); // <<2>> @@ -10047,18 +10134,18 @@ void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow() } } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT) // Quantify detector bias to QC{2}: - if(TMath::Abs(qc2)>0.) + if(TMath::Abs(QC2)>0.) { - fIntFlowDetectorBias->SetBinContent(1,gQC2/qc2); - if(qc2Error>0.) + fIntFlowDetectorBias->SetBinContent(1,gQC2/QC2); + if(QC2Error>0.) { - Double_t errorSquared = gQC2ErrorSquared/pow(qc2,2.)+pow(gQC2,2.)*pow(qc2Error,2.)/pow(qc2,4.); + Double_t errorSquared = gQC2ErrorSquared/pow(QC2,2.)+pow(gQC2,2.)*pow(QC2Error,2.)/pow(QC2,4.); if(errorSquared>0.) { fIntFlowDetectorBias->SetBinError(1,pow(errorSquared,0.5)); } } - } // end of if(TMath::Abs(qc2)>0.) + } // end of if(TMath::Abs(QC2)>0.) // Calculating generalized QC{4}: // Generalized QC{4}: @@ -10099,18 +10186,18 @@ void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow() } } // end of if(fApplyCorrectionForNUA && fPropagateErrorAlsoFromNIT) // Quantify detector bias to QC{4}: - if(TMath::Abs(qc4)>0.) + if(TMath::Abs(QC4)>0.) { - fIntFlowDetectorBias->SetBinContent(2,gQC4/qc4); - if(qc4Error>0.) + fIntFlowDetectorBias->SetBinContent(2,gQC4/QC4); + if(QC4Error>0.) { - Double_t errorSquared = gQC4ErrorSquared/pow(qc4,2.)+pow(gQC4,2.)*pow(qc4Error,2.)/pow(qc4,4.); + Double_t errorSquared = gQC4ErrorSquared/pow(QC4,2.)+pow(gQC4,2.)*pow(QC4Error,2.)/pow(QC4,4.); if(errorSquared>0.) { fIntFlowDetectorBias->SetBinError(2,pow(errorSquared,0.5)); } } - } // end of if(TMath::Abs(qc4)>0.) + } // end of if(TMath::Abs(QC4)>0.) // .... to be improved (continued for 6th and 8th order) .... @@ -10130,8 +10217,8 @@ void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow() two = fIntFlowCorrelationsVsMHist[0]->GetBinContent(b); // <<2>> vs M four = fIntFlowCorrelationsVsMHist[1]->GetBinContent(b); // <<4>> vs M // Isotropic cumulants: - qc2 = two; - qc4 = four-2.*pow(two,2.); + QC2 = two; + QC4 = four-2.*pow(two,2.); // Non-isotropic terms: c1 = fIntFlowCorrectionTermsForNUAVsMPro[1][0]->GetBinContent(b); // <> c2 = fIntFlowCorrectionTermsForNUAVsMPro[1][1]->GetBinContent(b); // <> @@ -10149,14 +10236,14 @@ void AliFlowAnalysisWithQCumulants::CalculateQcumulantsCorrectedForNUAIntFlow() + 8.*two*(pow(c1,2.)+pow(s1,2.))-6.*pow((pow(c1,2.)+pow(s1,2.)),2.); if(fApplyCorrectionForNUAVsM){fIntFlowQcumulantsVsM[1]->SetBinContent(b,gQC4);} // Detector bias vs M: - if(TMath::Abs(qc2)>0.) + if(TMath::Abs(QC2)>0.) { - fIntFlowDetectorBiasVsM[0]->SetBinContent(b,gQC2/qc2); - } // end of if(TMath::Abs(qc2)>0.) - if(TMath::Abs(qc4)>0.) + fIntFlowDetectorBiasVsM[0]->SetBinContent(b,gQC2/QC2); + } // end of if(TMath::Abs(QC2)>0.) + if(TMath::Abs(QC4)>0.) { - fIntFlowDetectorBiasVsM[1]->SetBinContent(b,gQC4/qc4); - } // end of if(TMath::Abs(qc4)>0.) + fIntFlowDetectorBiasVsM[1]->SetBinContent(b,gQC4/QC4); + } // end of if(TMath::Abs(QC4)>0.) // Rebin in M: for(Int_t co=0;co<4;co++) {