#include "AliFlowCommonHistResults.h"
#include "TChain.h"
#include "TFile.h"
-#include "TList.h" //NEW
+#include "TList.h"
#include "TParticle.h"
#include "TRandom3.h"
+#include "TStyle.h"
#include "TProfile.h"
#include "TProfile2D.h"
#include "TProfile3D.h"
#include "AliFlowEventSimple.h"
#include "AliFlowTrackSimple.h"
#include "AliFlowAnalysisWithQCumulants.h"
+#include "AliQCumulantsFunctions.h"
#include "TRandom.h"
AliFlowAnalysisWithQCumulants::AliFlowAnalysisWithQCumulants():
fTrack(NULL),
fHistList(NULL),
- fAvMultIntFlow(NULL),
+ fAvMultIntFlowQC(NULL),
fQvectorComponents(NULL),
- fIntFlowResults(NULL),
- fDiffFlowResults2ndOrder(NULL),
- fDiffFlowResults4thOrder(NULL),
+ fIntFlowResultsQC(NULL),
+ fDiffFlowResults2ndOrderQC(NULL),
+ fDiffFlowResults4thOrderQC(NULL),
+ fCovariances(NULL),
fQCorrelations(NULL),
fQCovariance(NULL),
fDirectCorrelations(NULL),
f4_1n1n1n1n(NULL),
fQCorrelationsPerBin(NULL),
fCommonHists(NULL),
- abTempDeleteMe(0)
+ //fCommonHistsResults2nd(NULL),
+ //fCommonHistsResults4th(NULL),
+ //fCommonHistsResults6th(NULL),
+ f2Distribution(NULL),
+ f4Distribution(NULL),
+ f6Distribution(NULL)
{
//constructor
fHistList = new TList();
//various output histograms
//avarage multiplicity
- fAvMultIntFlow = new TProfile("fAvMultIntFlow","Avarage multiplicity of selected particles used for int. flow",1,0,1,0,100000,"s");
- fAvMultIntFlow->SetXTitle("");
- fAvMultIntFlow->SetYTitle("<multiplicity>");
- fHistList->Add(fAvMultIntFlow);
+ fAvMultIntFlowQC = new TProfile("fAvMultIntFlowQC","Average Multiplicity",1,0,1,"s");
+ fAvMultIntFlowQC->SetXTitle("");
+ fAvMultIntFlowQC->SetYTitle("");
+ fAvMultIntFlowQC->SetLabelSize(0.06);
+ fAvMultIntFlowQC->SetMarkerStyle(25);
+ fAvMultIntFlowQC->SetLabelOffset(0.01);
+ (fAvMultIntFlowQC->GetXaxis())->SetBinLabel(1,"Average Multiplicity");
+ fHistList->Add(fAvMultIntFlowQC);
//Q-vector stuff
fQvectorComponents = new TProfile("fQvectorComponents","Avarage of Q-vector components",44,0.,44.,"s");
//fHistList->Add(fQvectorComponents);
//final results for integrated flow from Q-cumulants
- fIntFlowResults = new TH1D("fIntFlowResults","Integrated Flow From Q-cumulants",4,0,4);
- fIntFlowResults->SetXTitle("");
- fIntFlowResults->SetYTitle("Integrated Flow [%]");
- fHistList->Add(fIntFlowResults);
-
+ fIntFlowResultsQC = new TH1D("fIntFlowResultsQC","Integrated Flow from Q-cumulants",4,0,4);
+ //fIntFlowResults->SetXTitle("");
+ //fIntFlowResultsQC->SetYTitle("Integrated Flow");
+ fIntFlowResultsQC->SetLabelSize(0.06);
+ fIntFlowResultsQC->SetTickLength(1);
+ fIntFlowResultsQC->SetMarkerStyle(25);
+ (fIntFlowResultsQC->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
+ (fIntFlowResultsQC->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
+ (fIntFlowResultsQC->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
+ (fIntFlowResultsQC->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
+ //gStyle->SetErrorX(0);
+ fHistList->Add(fIntFlowResultsQC);
+
//final results for differential flow from 2nd order Q-cumulant
- fDiffFlowResults2ndOrder = new TH1D("fDiffFlowResults2ndOrder","Differential Flow From 2nd Order Q-cumulant",10000,0,1000);
- fDiffFlowResults2ndOrder->SetXTitle("Pt [GeV]");
- fDiffFlowResults2ndOrder->SetYTitle("Differential Flow [%]");
- fHistList->Add(fDiffFlowResults2ndOrder);
+ fDiffFlowResults2ndOrderQC = new TH1D("fDiffFlowResults2ndOrderQC","Differential Flow from 2nd Order Q-cumulant",10000,0,1000);
+ fDiffFlowResults2ndOrderQC->SetXTitle("p_{t} [GeV]");
+ //fDiffFlowResults2ndOrderQC->SetYTitle("Differential Flow");
+ fHistList->Add(fDiffFlowResults2ndOrderQC);
//final results for differential flow from 4th order Q-cumulant
- fDiffFlowResults4thOrder = new TH1D("fDiffFlowResults4thOrder","Differential Flow From 4th Order Q-cumulant",10000,0,1000);
- fDiffFlowResults4thOrder->SetXTitle("Pt [GeV]");
- fDiffFlowResults4thOrder->SetYTitle("Differential Flow [%]");
- fHistList->Add(fDiffFlowResults4thOrder);
+ fDiffFlowResults4thOrderQC = new TH1D("fDiffFlowResults4thOrderQC","Differential Flow from 4th Order Q-cumulant",10000,0,1000);
+ fDiffFlowResults4thOrderQC->SetXTitle("p_{t} [GeV]");
+ //fDiffFlowResults4thOrderQC->SetYTitle("Differential Flow");
+ fHistList->Add(fDiffFlowResults4thOrderQC);
+
+ //final results for covariances (1st bin: <2*4>-<2>*<4>, 2nd bin: <2*6>-<2>*<6>, ...)
+ fCovariances = new TH1D("fCovariances","Covariances",6,0,6);
+ //fCovariances->SetXTitle("");
+ //fCovariances->SetYTitle("<covariance>");
+ fCovariances->SetLabelSize(0.04);
+ fCovariances->SetTickLength(1);
+ fCovariances->SetMarkerStyle(25);
+ (fCovariances->GetXaxis())->SetBinLabel(1,"Cov(2,4)");
+ (fCovariances->GetXaxis())->SetBinLabel(2,"Cov(2,6)");
+ (fCovariances->GetXaxis())->SetBinLabel(3,"Cov(2,8)");
+ (fCovariances->GetXaxis())->SetBinLabel(4,"Cov(4,6)");
+ (fCovariances->GetXaxis())->SetBinLabel(5,"Cov(4,8)");
+ (fCovariances->GetXaxis())->SetBinLabel(6,"Cov(6,8)");
+ fHistList->Add(fCovariances);
//multi-particle correlations calculated from Q-vectors
fQCorrelations = new TProfile("fQCorrelations","multi-particle correlations from Q-vectors",35,0,35,"s");
- fQCorrelations->SetXTitle("");
- fQCorrelations->SetYTitle("correlations");
+ //fQCorrelations->SetXTitle("correlations");
+ //fQCorrelations->SetYTitle("");
+ fQCorrelations->SetTickLength(-0.01,"Y");
+ fQCorrelations->SetMarkerStyle(25);
+ fQCorrelations->SetLabelSize(0.03);
+ fQCorrelations->SetLabelOffset(0.01,"Y");
+ (fQCorrelations->GetXaxis())->SetBinLabel(1,"<<2>>_{n|n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(2,"<<2>>_{2n|2n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(3,"<<2>>_{3n|3n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(4,"<<2>>_{4n|4n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(6,"<<3>>_{2n|n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(7,"<<3>>_{3n|2n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(8,"<<3>>_{4n|2n,2n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(9,"<<3>>_{4n|3n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(11,"<<4>>_{n,n|n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(12,"<<4>>_{2n,n|2n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(13,"<<4>>_{3n|n,n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(14,"<<4>>_{4n|2n,n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(15,"<<4>>_{3n,n|2n,2n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(16,"<<5>>_{2n|n,n,n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(17,"<<5>>_{2n,2n|2n,n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(18,"<<5>>_{3n,n|2n,n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(19,"<<5>>_{4n|n,n,n,n}");
+ (fQCorrelations->GetXaxis())->SetBinLabel(21,"<<6>>_{n,n,n|n,n,n}");
fHistList->Add(fQCorrelations);
//covariance of multi-particle correlations
//ReD
fReD = new TProfile("fReD","Re[D]",10000,0.,1000.,"s");
- fReD->SetXTitle("Pt");
+ fReD->SetXTitle("p_{t} [GeV]");
fReD->SetYTitle("Re[D]");
//fHistList->Add(fReD);
//ImD
fImD = new TProfile("fImD","Im[D]",10000,0.,1000.,"s");
- fImD->SetXTitle("Pt");
+ fImD->SetXTitle("p_{t} [GeV]");
fImD->SetYTitle("Im[D]");
//fHistList->Add(fImD);
//fReq1n
fReq1n = new TProfile("fReq1n","Re[q_n]",10000,0.,1000.,"s");
- fReq1n->SetXTitle("Pt");
+ fReq1n->SetXTitle("p_{t} [GeV]");
fReq1n->SetYTitle("Re[q_n]");
fHistList->Add(fReq1n);
//fImq1n
fImq1n = new TProfile("fImq1n","Im[q_n]",10000,0.,1000.,"s");
- fImq1n->SetXTitle("Pt");
+ fImq1n->SetXTitle("p_{t} [GeV]");
fImq1n->SetYTitle("Im[q_n]");
fHistList->Add(fImq1n);
//fReq2n
fReq2n = new TProfile("fReq2n","Re[q_2n]",10000,0.,1000.,"s");
- fReq2n->SetXTitle("Pt");
+ fReq2n->SetXTitle("p_{t} [GeV]");
fReq2n->SetYTitle("Im[D]");
fHistList->Add(fReq2n);
//fImq2n
fImq2n = new TProfile("fImq2n","Im[q_2n]",10000,0.,1000.,"s");
- fImq2n->SetXTitle("Pt");
+ fImq2n->SetXTitle("p_{t} [GeV]");
fImq2n->SetYTitle("Im[q_2n]");
fHistList->Add(fImq2n);
//f2_1n1n
f2_1n1n = new TProfile("f2_1n1n","<2'>_{n|n}",10000,0.,1000.,"s");
- f2_1n1n->SetXTitle("Pt");
- f2_1n1n->SetYTitle("<2'>_{n|n}");
+ f2_1n1n->SetXTitle("p_{t} [GeV]");
+ //f2_1n1n->SetYTitle("<2'>_{n|n}");
fHistList->Add(f2_1n1n);
//f2_2n2n
f2_2n2n = new TProfile("f2_2n2n","<2'>_{2n|2n}",10000,0.,1000.,"s");
- f2_2n2n->SetXTitle("Pt");
- f2_2n2n->SetYTitle("<2'>_{2n|2n}");
+ f2_2n2n->SetXTitle("p_{t} [GeV]");
+ //f2_2n2n->SetYTitle("<2'>_{2n|2n}");
fHistList->Add(f2_2n2n);
//f3_2n1n1n
f3_2n1n1n = new TProfile("f3_2n1n1n","<3'>_{2n|n,n}",10000,0.,1000.,"s");
- f3_2n1n1n->SetXTitle("Pt");
- f3_2n1n1n->SetYTitle("<3'>_{2n|n,n}");
+ f3_2n1n1n->SetXTitle("p_{t} [GeV]");
+ //f3_2n1n1n->SetYTitle("<3'>_{2n|n,n}");
fHistList->Add(f3_2n1n1n);
//f3_1n1n2n
f3_1n1n2n = new TProfile("f3_1n1n2n","<3'>_{n,n|2n}",10000,0.,1000.,"s");
- f3_1n1n2n->SetXTitle("Pt");
- f3_1n1n2n->SetYTitle("<3'>_{n,n|2n}");
+ f3_1n1n2n->SetXTitle("p_{t} [GeV]");
+ //f3_1n1n2n->SetYTitle("<3'>_{n,n|2n}");
fHistList->Add(f3_1n1n2n);
//f4_1n1n1n1n
f4_1n1n1n1n = new TProfile("f4_1n1n1n1n","<4'>_{n,n|n,n}",10000,0.,1000.,"s");
- f4_1n1n1n1n->SetXTitle("Pt");
- f4_1n1n1n1n->SetYTitle("<4'>_{n,n|n,n}");
+ f4_1n1n1n1n->SetXTitle("p_{t} [GeV]");
+ //f4_1n1n1n1n->SetYTitle("<4'>_{n,n|n,n}");
fHistList->Add(f4_1n1n1n1n);
//multi-particle correlations calculated from Q-vectors for each pt bin
//fHistList->Add(fQCorrelationsPerBin);
//common control histograms
- fCommonHists = new AliFlowCommonHist("QCumulants");
- fHistList->Add(fCommonHists->GetHistList());
+ fCommonHists = new AliFlowCommonHist("AliFlowCommonHistQC");
+ fHistList->Add(fCommonHists);
+
+ /*
+ //common histograms for final results
+ fCommonHistsResults2nd = new AliFlowCommonHistResults("AliFlowCommonHistResults2ndOrderQC");
+ fHistList->Add(fCommonHistsResults2nd);
+
+ //common histograms for final results
+ fCommonHistsResults4th = new AliFlowCommonHistResults("AliFlowCommonHistResults4thOrderQC");
+ fHistList->Add(fCommonHistsResults4th);
+
+ //common histograms for final results
+ fCommonHistsResults6th = new AliFlowCommonHistResults("AliFlowCommonHistResults6thOrderQC");
+ fHistList->Add(fCommonHistsResults6th);
+
+ //common histograms for final results
+ fCommonHistsResults8th = new AliFlowCommonHistResults("AliFlowCommonHistResults8thOrderQC");
+ fHistList->Add(fCommonHistsResults8th);
+ */
+
+ //weighted <2>_{n|n} distribution
+ f2Distribution = new TH1D("f2Distribution","<2>_{n|n} distribution",100000,-0.02,0.1);
+ f2Distribution->SetXTitle("<2>_{n|n}");
+ f2Distribution->SetYTitle("Counts");
+ fHistList->Add(f2Distribution);
+
+ //weighted <4>_{n,n|n,n} distribution
+ f4Distribution = new TH1D("f4Distribution","<4>_{n,n|n,n} distribution",100000,-0.00025,0.002);
+ f4Distribution->SetXTitle("<4>_{n,n|n,n}");
+ f4Distribution->SetYTitle("Counts");
+ fHistList->Add(f4Distribution);
+
+ //weighted <6>_{n,n,n|n,n,n} distribution
+ f6Distribution = new TH1D("f6Distribution","<6>_{n,n,n|n,n,n} distribution",100000,-0.000005,0.000025);
+ f6Distribution->SetXTitle("<6>_{n,n,n|n,n,n}");
+ f6Distribution->SetYTitle("Counts");
+ fHistList->Add(f6Distribution);
}//end of CreateOutputObjects()
void AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
{
- //running over data
-
+ //running over data
+
//get the total multiplicity of event:
//Int_t nPrim = anEvent->NumberOfTracks();
-
-
- //if(nPrim>8&&nPrim<24)
+ //if(nPrim>8&&nPrim<24)
//{
//fill the common control histograms:
- fCommonHists->FillControlHistograms(anEvent);
+ fCommonHists->FillControlHistograms(anEvent);
+
+
//get the selected multiplicity (i.e. number of particles used for int. flow):
//Int_t nEventNSelTracksIntFlow = anEvent->GetEventNSelTracksIntFlow();
//multiplicity (to be improved, because I already have nEventNSelTracksIntFlow and nPrim)
Double_t M = Qvector1n.GetMult();
- fAvMultIntFlow->Fill(0.,M,1.);
+ fAvMultIntFlowQC->Fill(0.,M,1.);
//---------------------------------------------------------------------------------------------------------
//*************
//* Q-vectors *
//*************
- Double_t ReQ2nQ1nstarQ1nstar = pow(Qvector1n.X(),2.)*Qvector2n.X()+2.*Qvector1n.X()*Qvector1n.Y()*Qvector2n.Y()-pow(Qvector1n.Y(),2.)*Qvector2n.X();
- //Double_t ImQ2nQ1nstarQ1nstar = calculate and implement this (deleteMe)
- Double_t ReQ4nQ2nstarQ2nstar = pow(Qvector2n.X(),2.)*Qvector4n.X()+2.*Qvector2n.X()*Qvector2n.Y()*Qvector4n.Y()-pow(Qvector2n.Y(),2.)*Qvector4n.X();
+ Double_t ReQ2nQ1nstarQ1nstar = pow(Qvector1n.X(),2.)*Qvector2n.X()+2.*Qvector1n.X()*Qvector1n.Y()*Qvector2n.Y()-pow(Qvector1n.Y(),2.)*Qvector2n.X();//Re[Q_{2n} Q_{n}^* Q_{n}^*]
+ //Double_t ImQ2nQ1nstarQ1nstar = pow(Qvector1n.X(),2.)*Qvector2n.Y()-2.*Qvector1n.X()*Qvector1n.Y()*Qvector2n.X()-pow(Qvector1n.Y(),2.)*Qvector2n.Y();//Im[Q_{2n} Q_{n}^* Q_{n}^*]
+ Double_t ReQ1nQ1nQ2nstar = ReQ2nQ1nstarQ1nstar;//Re[Q_{n} Q_{n} Q_{2n}^*] = Re[Q_{2n} Q_{n}^* Q_{n}^*]
+ Double_t ReQ3nQ1nQ2nstarQ2nstar = (pow(Qvector2n.X(),2.)-pow(Qvector2n.Y(),2.))*(Qvector3n.X()*Qvector1n.X()-Qvector3n.Y()*Qvector1n.Y())+2.*Qvector2n.X()*Qvector2n.Y()*(Qvector3n.X()*Qvector1n.Y()+Qvector3n.Y()*Qvector1n.X());
+ //Double_t ImQ3nQ1nQ2nstarQ2nstar = calculate and implement this (deleteMe)
+ Double_t ReQ2nQ2nQ3nstarQ1nstar = ReQ3nQ1nQ2nstarQ2nstar;
+ Double_t ReQ4nQ2nstarQ2nstar = pow(Qvector2n.X(),2.)*Qvector4n.X()+2.*Qvector2n.X()*Qvector2n.Y()*Qvector4n.Y()-pow(Qvector2n.Y(),2.)*Qvector4n.X();//Re[Q_{4n} Q_{2n}^* Q_{2n}^*]
//Double_t ImQ4nQ2nstarQ2nstar = calculate and implement this (deleteMe)
- Double_t ReQ4nQ3nstarQ1nstar = Qvector4n.X()*(Qvector3n.X()*Qvector1n.X()-Qvector3n.Y()*Qvector1n.Y())+Qvector4n.Y()*(Qvector3n.X()*Qvector1n.Y()+Qvector3n.Y()*Qvector1n.X());
+ Double_t ReQ2nQ2nQ4nstar = ReQ4nQ2nstarQ2nstar;
+ Double_t ReQ4nQ3nstarQ1nstar = Qvector4n.X()*(Qvector3n.X()*Qvector1n.X()-Qvector3n.Y()*Qvector1n.Y())+Qvector4n.Y()*(Qvector3n.X()*Qvector1n.Y()+Qvector3n.Y()*Qvector1n.X());//Re[Q_{4n} Q_{3n}^* Q_{n}^*]
+ Double_t ReQ3nQ1nQ4nstar = ReQ4nQ3nstarQ1nstar;//Re[Q_{3n} Q_{n} Q_{4n}^*] = Re[Q_{4n} Q_{3n}^* Q_{n}^*]
//Double_t ImQ4nQ3nstarQ1nstar = calculate and implement this (deleteMe)
- Double_t ReQ3nQ2nstarQ1nstar = Qvector3n.X()*Qvector2n.X()*Qvector1n.X()-Qvector3n.X()*Qvector2n.Y()*Qvector1n.Y()+Qvector3n.Y()*Qvector2n.X()*Qvector1n.Y()+Qvector3n.Y()*Qvector2n.Y()*Qvector1n.X(); //Re<Q_{3n} Q_{2n}^* Q_{n}^*>
+ Double_t ReQ3nQ2nstarQ1nstar = Qvector3n.X()*Qvector2n.X()*Qvector1n.X()-Qvector3n.X()*Qvector2n.Y()*Qvector1n.Y()+Qvector3n.Y()*Qvector2n.X()*Qvector1n.Y()+Qvector3n.Y()*Qvector2n.Y()*Qvector1n.X();//Re[Q_{3n} Q_{2n}^* Q_{n}^*]
+ Double_t ReQ2nQ1nQ3nstar = ReQ3nQ2nstarQ1nstar;//Re[Q_{2n} Q_{n} Q_{3n}^*] = Re[Q_{3n} Q_{2n}^* Q_{n}^*]
//Double_t ImQ3nQ2nstarQ1nstar; //calculate and implement this (deleteMe)
- Double_t ReQ3nQ1nstarQ1nstarQ1nstar = Qvector3n.X()*pow(Qvector1n.X(),3)-3.*Qvector1n.X()*Qvector3n.X()*pow(Qvector1n.Y(),2)+3.*Qvector1n.Y()*Qvector3n.Y()*pow(Qvector1n.X(),2)-Qvector3n.Y()*pow(Qvector1n.Y(),3); //Re<Q_{3n} Q_{n}^* Q_{n}^* Q_{n}^*>
+ Double_t ReQ3nQ1nstarQ1nstarQ1nstar = Qvector3n.X()*pow(Qvector1n.X(),3)-3.*Qvector1n.X()*Qvector3n.X()*pow(Qvector1n.Y(),2)+3.*Qvector1n.Y()*Qvector3n.Y()*pow(Qvector1n.X(),2)-Qvector3n.Y()*pow(Qvector1n.Y(),3);//Re[Q_{3n} Q_{n}^* Q_{n}^* Q_{n}^*]
//Double_t ImQ3nQ1nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
- Double_t Q2nQ1nQ2nstarQ1nstar = pow(Qvector2n.Mod()*Qvector1n.Mod(),2); //<|Q_{2n}|^2 |Q_{n}|^2>
- Double_t ReQ4nQ2nstarQ1nstarQ1nstar = (Qvector4n.X()*Qvector2n.X()+Qvector4n.Y()*Qvector2n.Y())*(pow(Qvector1n.X(),2)-pow(Qvector1n.Y(),2))+2.*Qvector1n.X()*Qvector1n.Y()*(Qvector4n.Y()*Qvector2n.X()-Qvector4n.X()*Qvector2n.Y()); //Re<Q_{4n} Q_{2n}^* Q_{n}^* Q_{n}^*>
+ Double_t Q2nQ1nQ2nstarQ1nstar = pow(Qvector2n.Mod()*Qvector1n.Mod(),2);//|Q_{2n}|^2 |Q_{n}|^2
+ Double_t ReQ4nQ2nstarQ1nstarQ1nstar = (Qvector4n.X()*Qvector2n.X()+Qvector4n.Y()*Qvector2n.Y())*(pow(Qvector1n.X(),2)-pow(Qvector1n.Y(),2))+2.*Qvector1n.X()*Qvector1n.Y()*(Qvector4n.Y()*Qvector2n.X()-Qvector4n.X()*Qvector2n.Y());//Re[Q_{4n} Q_{2n}^* Q_{n}^* Q_{n}^*]
//Double_t ImQ4nQ2nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
- Double_t ReQ2nQ1nQ1nstarQ1nstarQ1nstar = (Qvector2n.X()*Qvector1n.X()-Qvector2n.Y()*Qvector1n.Y())*(pow(Qvector1n.X(),3)-3.*Qvector1n.X()*pow(Qvector1n.Y(),2))+(Qvector2n.X()*Qvector1n.Y()+Qvector1n.X()*Qvector2n.Y())*(3.*Qvector1n.Y()*pow(Qvector1n.X(),2)-pow(Qvector1n.Y(),3));
+ Double_t ReQ2nQ1nQ1nstarQ1nstarQ1nstar = (Qvector2n.X()*Qvector1n.X()-Qvector2n.Y()*Qvector1n.Y())*(pow(Qvector1n.X(),3)-3.*Qvector1n.X()*pow(Qvector1n.Y(),2))+(Qvector2n.X()*Qvector1n.Y()+Qvector1n.X()*Qvector2n.Y())*(3.*Qvector1n.Y()*pow(Qvector1n.X(),2)-pow(Qvector1n.Y(),3));//Re[Q_{2n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^*]
//Double_t ImQ2nQ1nQ1nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
+ Double_t ReQ2nQ2nQ2nstarQ1nstarQ1nstar = pow(Qvector2n.Mod(),2.)*(Qvector2n.X()*(pow(Qvector1n.X(),2.)-pow(Qvector1n.Y(),2.))+2.*Qvector2n.Y()*Qvector1n.X()*Qvector1n.Y());//Re[Q_{2n} Q_{2n} Q_{2n}^* Q_{n}^* Q_{n}^*]
+ //Double_t ImQ2nQ2nQ2nstarQ1nstarQ1nstar = pow(Qvector2n.Mod(),2.)*(Qvector2n.Y()*(pow(Qvector1n.X(),2.)-pow(Qvector1n.Y(),2.))-2.*Qvector2n.X()*Qvector1n.X()*Qvector1n.Y());//Im[Q_{2n} Q_{2n} Q_{2n}^* Q_{n}^* Q_{n}^*]
+ Double_t ReQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(Qvector1n.X(),4.)*Qvector4n.X()-6.*pow(Qvector1n.X(),2.)*Qvector4n.X()*pow(Qvector1n.Y(),2.)+pow(Qvector1n.Y(),4.)*Qvector4n.X()+4.*pow(Qvector1n.X(),3.)*Qvector1n.Y()*Qvector4n.Y()-4.*pow(Qvector1n.Y(),3.)*Qvector1n.X()*Qvector4n.Y();
+ //Double_t ImQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(Qvector1n.X(),4.)*Qvector4n.Y()-6.*pow(Qvector1n.X(),2.)*Qvector4n.Y()*pow(Qvector1n.Y(),2.)+pow(Qvector1n.Y(),4.)*Qvector4n.Y()+4.*pow(Qvector1n.Y(),3.)*Qvector1n.X()*Qvector4n.X()-4.*pow(Qvector1n.X(),3.)*Qvector1n.Y()*Qvector4n.X();
+
+
//---------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------
//12th bin: <4>_{2n,n|2n,n} = four_2n1n2n1n
//13th bin: <4>_{3n|n,n,n} = four_3n1n1n1n
//14th bin: <4>_{4n|2n,n,n} = four_4n2n1n1n
+ //15th bin: <4>_{3n,n|2n,2n} = four_3n1n2n2n
//16th bin: <5>_{2n|n,n,n,n} = five_2n1n1n1n1n
+ //17th bin: <5>_{2n,2n|2n,n,n} = five_2n2n2n1n1n
+ //18th bin: <5>_{3n,n|2n,n,n} = five_3n1n2n1n1n
+ //19th bin: <5>_{4n|n,n,n,n} = five_4n1n1n1n1n
//21th bin: <6>_{n,n,n|n,n,n} = six_1n1n1n1n1n1n
+ //31th bin: <4>_{2n,2n|2n,2n} = four_2n2n2n2n //to be improved
+ //32nd bin: <4>_{3n,n|3n,n} = four_3n1n3n1n //to be improved
+
// binning of fQCovariance:
// 1st bin: <2>_{n|n}*<4>_{n,n|n,n}
// 2nd bin: <2>_{n|n}*<6>_{n,n,n|n,n,n}
two_2n2n = (pow(Qvector2n.Mod(),2.)-M)/(M*(M-1.)); //<2>_{2n|2n} = <cos(2n*(phi1-phi2))>
two_3n3n = (pow(Qvector3n.Mod(),2.)-M)/(M*(M-1.)); //<2>_{3n|3n} = <cos(3n*(phi1-phi2))>
two_4n4n = (pow(Qvector4n.Mod(),2.)-M)/(M*(M-1.)); //<2>_{4n|4n} = <cos(4n*(phi1-phi2))>
-
+
fQCorrelations->Fill(0.,two_1n1n,M*(M-1.));
fQCorrelations->Fill(1.,two_2n2n,M*(M-1.));
fQCorrelations->Fill(2.,two_3n3n,M*(M-1.));
fQCorrelations->Fill(3.,two_4n4n,M*(M-1.));
+
+ f2Distribution->Fill(two_1n1n,M*(M-1.));
}
//3-particle
}
//4-particle
- Double_t four_1n1n1n1n=0., four_2n1n2n1n=0., four_3n1n1n1n=0., four_4n2n1n1n=0.;
+ Double_t four_1n1n1n1n=0., four_2n2n2n2n=0., four_2n1n2n1n=0., four_3n1n1n1n=0., four_4n2n1n1n=0., four_3n1n2n2n=0., four_3n1n3n1n=0.;
if(M>3)
{
- four_1n1n1n1n = (2.*M*(M-3.)+pow(Qvector1n.Mod(),4.)-4.*(M-2.)*pow(Qvector1n.Mod(),2.)-2.*ReQ2nQ1nstarQ1nstar+pow(Qvector2n.Mod(),2.))/(M*(M-1)*(M-2.)*(M-3.)); //<4>_{n,n|n,n}
- four_2n1n2n1n = (Q2nQ1nQ2nstarQ1nstar-2.*ReQ3nQ2nstarQ1nstar-2.*ReQ2nQ1nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.))-((M-5.)*pow(Qvector1n.Mod(),2.)+(M-4.)*pow(Qvector2n.Mod(),2.)-pow(Qvector3n.Mod(),2.))/(M*(M-1.)*(M-2.)*(M-3.))+(M-6.)/((M-1.)*(M-2.)*(M-3.)); //Re[<4>_{2n,n|2n,n}]
- four_3n1n1n1n = (ReQ3nQ1nstarQ1nstarQ1nstar-3.*ReQ3nQ2nstarQ1nstar-3.*ReQ2nQ1nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.))+(2.*pow(Qvector3n.Mod(),2.)+3.*pow(Qvector2n.Mod(),2.)+6.*pow(Qvector1n.Mod(),2.)-6.*M)/(M*(M-1.)*(M-2.)*(M-3.)); //Re[<4>_{3n|n,n,n}]
- four_4n2n1n1n = (ReQ4nQ2nstarQ1nstarQ1nstar-M*(M-1.)*(M-2.)*(2.*three_3n2n1n+2.*three_4n3n1n+three_4n2n2n+three_2n1n1n)-M*(M-1.)*(2.*two_1n1n+2.*two_2n2n+2*two_3n3n+two_4n4n)-M)/(M*(M-1.)*(M-2.)*(M-3.)); //Re[<4>_{4n|2n,n,n}]
-
- fQCorrelations->Fill(10.,four_1n1n1n1n,M*(M-1.)*(M-2.)*(M-3.));
+ four_1n1n1n1n = (2.*M*(M-3.)+pow(Qvector1n.Mod(),4.)-4.*(M-2.)*pow(Qvector1n.Mod(),2.)-2.*ReQ2nQ1nstarQ1nstar+pow(Qvector2n.Mod(),2.))/(M*(M-1)*(M-2.)*(M-3.));//<4>_{n,n|n,n}
+ four_2n2n2n2n = (2.*M*(M-3.)+pow(Qvector2n.Mod(),4.)-4.*(M-2.)*pow(Qvector2n.Mod(),2.)-2.*ReQ4nQ2nstarQ2nstar+pow(Qvector4n.Mod(),2.))/(M*(M-1)*(M-2.)*(M-3.));//<4>_{2n,2n|2n,2n}
+ four_2n1n2n1n = (Q2nQ1nQ2nstarQ1nstar-2.*ReQ3nQ2nstarQ1nstar-2.*ReQ2nQ1nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.))-((M-5.)*pow(Qvector1n.Mod(),2.)+(M-4.)*pow(Qvector2n.Mod(),2.)-pow(Qvector3n.Mod(),2.))/(M*(M-1.)*(M-2.)*(M-3.))+(M-6.)/((M-1.)*(M-2.)*(M-3.));//Re[<4>_{2n,n|2n,n}]
+ four_3n1n1n1n = (ReQ3nQ1nstarQ1nstarQ1nstar-3.*ReQ3nQ2nstarQ1nstar-3.*ReQ2nQ1nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.))+(2.*pow(Qvector3n.Mod(),2.)+3.*pow(Qvector2n.Mod(),2.)+6.*pow(Qvector1n.Mod(),2.)-6.*M)/(M*(M-1.)*(M-2.)*(M-3.));//Re[<4>_{3n|n,n,n}]
+ four_4n2n1n1n = (ReQ4nQ2nstarQ1nstarQ1nstar-2.*ReQ4nQ3nstarQ1nstar-ReQ4nQ2nstarQ2nstar-2.*ReQ3nQ2nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.))-(ReQ2nQ1nstarQ1nstar-2.*pow(Qvector4n.Mod(),2.)-2.*pow(Qvector3n.Mod(),2.)-3.*pow(Qvector2n.Mod(),2.)-4.*pow(Qvector1n.Mod(),2.))/(M*(M-1.)*(M-2.)*(M-3.))-(6.)/((M-1.)*(M-2.)*(M-3.));//Re[<4>_{4n|2n,n,n}]
+ four_3n1n2n2n = (ReQ3nQ1nQ2nstarQ2nstar-ReQ4nQ2nstarQ2nstar-ReQ3nQ1nQ4nstar-2.*ReQ3nQ2nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.))-(2.*ReQ1nQ1nQ2nstar-pow(Qvector4n.Mod(),2.)-2.*pow(Qvector3n.Mod(),2.)-4.*pow(Qvector2n.Mod(),2.)-4.*pow(Qvector1n.Mod(),2.))/(M*(M-1.)*(M-2.)*(M-3.))-(6.)/((M-1.)*(M-2.)*(M-3.));//Re[<4>_{3n,n|2n,2n}]
+ four_3n1n3n1n = (pow(Qvector3n.Mod(),2.)*pow(Qvector1n.Mod(),2.)-2.*ReQ4nQ3nstarQ1nstar-2.*ReQ3nQ2nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.))+(pow(Qvector4n.Mod(),2.)-(M-4.)*pow(Qvector3n.Mod(),2.)+pow(Qvector2n.Mod(),2.)-(M-4.)*pow(Qvector1n.Mod(),2.))/(M*(M-1.)*(M-2.)*(M-3.))+(M-6.)/((M-1.)*(M-2.)*(M-3.));//<4>_{3n,n|3n,n}
+ //four_3n1n3n1n = Q3nQ1nQ3nstarQ1nstar/(M*(M-1.)*(M-2.)*(M-3.))-(2.*three_3n2n1n+2.*three_4n3n1n)/(M-3.)-(two_4n4n+M*two_3n3n+two_2n2n+M*two_1n1n)/((M-2.)*(M-3.))-M/((M-1.)*(M-2.)*(M-3.));//<4>_{3n,n|3n,n}
+
+ fQCorrelations->Fill(10.,four_1n1n1n1n,M*(M-1.)*(M-2.)*(M-3.));
+
+ fQCorrelations->Fill(30.,four_2n2n2n2n,M*(M-1.)*(M-2.)*(M-3.));//to be improved
+ fQCorrelations->Fill(31.,four_3n1n3n1n,M*(M-1.)*(M-2.)*(M-3.));//to be improved
+
fQCorrelations->Fill(11.,four_2n1n2n1n,M*(M-1.)*(M-2.)*(M-3.));
fQCorrelations->Fill(12.,four_3n1n1n1n,M*(M-1.)*(M-2.)*(M-3.));
- fQCorrelations->Fill(13.,four_4n2n1n1n,M*(M-1.)*(M-2.)*(M-3.));
+ fQCorrelations->Fill(13.,four_4n2n1n1n,M*(M-1.)*(M-2.)*(M-3.));
+ fQCorrelations->Fill(14.,four_3n1n2n2n,M*(M-1.)*(M-2.)*(M-3.));
+ f4Distribution->Fill(four_1n1n1n1n,M*(M-1.)*(M-2.)*(M-3.));
+
fQCovariance->Fill(0.,two_1n1n*four_1n1n1n1n,M*(M-1.)*M*(M-1.)*(M-2.)*(M-3.));
}
//5-particle
- //if(M>4)
- //{
- //temporarily, doesn't work with above scoping
- //Double_t five_2n1n1n1n1n = (ReQ2nQ1nQ1nstarQ1nstarQ1nstar-M*(M-1.)*(M-2.)*(M-3.)*(four_3n1n1n1n+3.*four_1n1n1n1n+3.*four_2n1n2n1n)-M*(M-1.)*(M-2.)*(3.*M*three_2n1n1n+4.*three_3n2n1n)-M*(M-1.)*((9.*M-11.)*two_1n1n+(3.*M-2.)*two_2n2n+two_3n3n)-M*(3.*M-2.))/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.)); //Re[<5>_{2n,n|n,n,n}]
-
- //fQCorrelations->Fill(15.,five_2n1n1n1n1n,M*(M-1.)*(M-2.)*(M-3.)*(M-4.));
- //}
+ Double_t five_2n1n1n1n1n=0., five_2n2n2n1n1n=0., five_3n1n2n1n1n=0., five_4n1n1n1n1n=0.;
+ if(M>4)
+ {
+ five_2n1n1n1n1n = (ReQ2nQ1nQ1nstarQ1nstarQ1nstar-ReQ3nQ1nstarQ1nstarQ1nstar+6.*ReQ3nQ2nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))-(ReQ2nQ1nQ3nstar+3.*(M-6.)*ReQ2nQ1nstarQ1nstar+3.*ReQ1nQ1nQ2nstar)/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))-(2.*pow(Qvector3n.Mod(),2.)+3.*pow(Qvector2n.Mod()*Qvector1n.Mod(),2.)-3.*(M-4.)*pow(Qvector2n.Mod(),2.))/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))-3.*(pow(Qvector1n.Mod(),4.)-2.*(2*M-5.)*pow(Qvector1n.Mod(),2.)+2.*M*(M-4.))/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.));//Re[<5>_{2n,n|n,n,n}]
+
+ five_2n2n2n1n1n = (ReQ2nQ2nQ2nstarQ1nstarQ1nstar-ReQ4nQ2nstarQ1nstarQ1nstar-2.*ReQ2nQ2nQ3nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))+2.*(ReQ4nQ2nstarQ2nstar+4.*ReQ3nQ2nstarQ1nstar+ReQ3nQ1nQ4nstar)/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))+(ReQ2nQ2nQ4nstar-2.*(M-5.)*ReQ2nQ1nstarQ1nstar+2.*ReQ1nQ1nQ2nstar)/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))-(2.*pow(Qvector4n.Mod(),2.)+4.*pow(Qvector3n.Mod(),2.)+1.*pow(Qvector2n.Mod(),4.)-2.*(3.*M-10.)*pow(Qvector2n.Mod(),2.))/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))-(4.*pow(Qvector1n.Mod(),2.)*pow(Qvector2n.Mod(),2.)-4.*(M-5.)*pow(Qvector1n.Mod(),2.)+4.*M*(M-6.))/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.));//Re[<5>_{2n,2n|2n,n,n}]
+
+ //five_2n2n2n1n1n = ReQ2nQ2nQ2nstarQ1nstarQ1nstar/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))-(4.*four_2n1n2n1n+2.*four_3n1n2n2n+1.*four_2n2n2n2n+four_4n2n1n1n)/(M-4.)-(2.*three_4n3n1n+three_4n2n2n+three_4n2n2n+2.*three_3n2n1n)/((M-3.)*(M-4.))-(4.*three_3n2n1n+(2.*M-1.)*three_2n1n1n+2.*three_2n1n1n)/((M-3.)*(M-4.))-(two_4n4n+2.*two_3n3n+4.*(M-1.)*two_2n2n+2.*(2.*M-1.)*two_1n1n)/((M-2.)*(M-3.)*(M-4.))-(2.*M-1.)/((M-1.)*(M-2.)*(M-3.)*(M-4.));
+
+ five_4n1n1n1n1n = (ReQ4nQ1nstarQ1nstarQ1nstarQ1nstar-6.*ReQ4nQ2nstarQ1nstarQ1nstar-4.*ReQ3nQ1nstarQ1nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))+(8.*ReQ4nQ3nstarQ1nstar+3.*ReQ4nQ2nstarQ2nstar+12.*ReQ3nQ2nstarQ1nstar+12.*ReQ2nQ1nstarQ1nstar)/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))-(6.*pow(Qvector4n.Mod(),2.)+8.*pow(Qvector3n.Mod(),2.)+12.*pow(Qvector2n.Mod(),2.)+24.*pow(Qvector1n.Mod(),2.)-24.*M)/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.));//Re[<5>_{4n|n,n,n,n}]
+
+ //five_4n1n1n1n1n = ReQ4nQ1nstarQ1nstarQ1nstarQ1nstar/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.)) - (4.*four_3n1n1n1n+6.*four_4n2n1n1n)/(M-4.) - (6.*three_2n1n1n + 12.*three_3n2n1n + 4.*three_4n3n1n + 3.*three_4n2n2n)/((M-3.)*(M-4.)) - (4.*two_1n1n + 6.*two_2n2n + 4.*two_3n3n + 1.*two_4n4n)/((M-2.)*(M-3.)*(M-4.)) - 1./((M-1.)*(M-2.)*(M-3.)*(M-4.));
+
+ fQCorrelations->Fill(15.,five_2n1n1n1n1n,M*(M-1.)*(M-2.)*(M-3.)*(M-4.));
+ fQCorrelations->Fill(16.,five_2n2n2n1n1n,M*(M-1.)*(M-2.)*(M-3.)*(M-4.));
+ fQCorrelations->Fill(17.,five_3n1n2n1n1n,M*(M-1.)*(M-2.)*(M-3.)*(M-4.));
+ fQCorrelations->Fill(18.,five_4n1n1n1n1n,M*(M-1.)*(M-2.)*(M-3.)*(M-4.));
+ }
//6-particle
+ Double_t six_1n1n1n1n1n1n=0.;
if(M>5)
{
- Double_t six_1n1n1n1n1n1n = (pow(Qvector1n.Mod(),6.)+9.*Q2nQ1nQ2nstarQ1nstar-6.*ReQ2nQ1nQ1nstarQ1nstarQ1nstar)/(M*(M-1)*(M-2)*(M-3)*(M-4)*(M-5)) + 4.*(ReQ3nQ1nstarQ1nstarQ1nstar-3.*ReQ3nQ2nstarQ1nstar)/(M*(M-1)*(M-2)*(M-3)*(M-4)*(M-5)) + 2.*(9.*(M-4.)*ReQ2nQ1nstarQ1nstar+2.*pow(Qvector3n.Mod(),2.))/(M*(M-1)*(M-2)*(M-3)*(M-4)*(M-5)) - 9.*(pow(Qvector1n.Mod(),4.)+pow(Qvector2n.Mod(),2.))/(M*(M-1)*(M-2)*(M-3)*(M-5)) + (18.*pow(Qvector1n.Mod(),2.))/(M*(M-1)*(M-3)*(M-4)) - (6.)/((M-1)*(M-2)*(M-3)); //<6>_{n,n,n|n,n,n}
+ six_1n1n1n1n1n1n = (pow(Qvector1n.Mod(),6.)+9.*Q2nQ1nQ2nstarQ1nstar-6.*ReQ2nQ1nQ1nstarQ1nstarQ1nstar)/(M*(M-1)*(M-2)*(M-3)*(M-4)*(M-5))+4.*(ReQ3nQ1nstarQ1nstarQ1nstar-3.*ReQ3nQ2nstarQ1nstar)/(M*(M-1)*(M-2)*(M-3)*(M-4)*(M-5))+2.*(9.*(M-4.)*ReQ2nQ1nstarQ1nstar+2.*pow(Qvector3n.Mod(),2.))/(M*(M-1)*(M-2)*(M-3)*(M-4)*(M-5))-9.*(pow(Qvector1n.Mod(),4.)+pow(Qvector2n.Mod(),2.))/(M*(M-1)*(M-2)*(M-3)*(M-5))+(18.*pow(Qvector1n.Mod(),2.))/(M*(M-1)*(M-3)*(M-4))-(6.)/((M-1)*(M-2)*(M-3));//<6>_{n,n,n|n,n,n}
+
+ fQCorrelations->Fill(20.,six_1n1n1n1n1n1n,M*(M-1.)*(M-2.)*(M-3.)*(M-4.)*(M-5.));
- fQCorrelations->Fill(20.,six_1n1n1n1n1n1n,M*(M-1.)*(M-2.)*(M-3.)*(M-4.)*(M-5.));
+ f6Distribution->Fill(six_1n1n1n1n1n1n,M*(M-1.)*(M-2.)*(M-3.)*(M-4.)*(M-5.));
fQCovariance->Fill(1.,two_1n1n*six_1n1n1n1n1n1n,M*(M-1.)*M*(M-1.)*(M-2.)*(M-3.)*(M-4.)*(M-5.));
fQCovariance->Fill(2.,four_1n1n1n1n*six_1n1n1n1n1n1n,M*(M-1.)*(M-2.)*(M-3.)*M*(M-1.)*(M-2.)*(M-3.)*(M-4.)*(M-5.));
Double_t Q_y = Qvector1n.Y();
Double_t Q_2x = Qvector2n.X();
Double_t Q_2y = Qvector2n.Y();
-
+
Double_t q_x=0.,q_y=0.,q_2x=0.,q_2y=0.,m=0.;
for(Int_t i=0;i<M;i++) //check if nPrim == M
{
fTrack=anEvent->GetTrack(i);
- fReq1n->Fill(fTrack->Pt(),cos(n*(fTrack->Phi())),1.);
- fImq1n->Fill(fTrack->Pt(),sin(n*(fTrack->Phi())),1.);
- fReq2n->Fill(fTrack->Pt(),cos(2.*n*(fTrack->Phi())),1.);
- fImq2n->Fill(fTrack->Pt(),sin(2.*n*(fTrack->Phi())),1.);
+ if(fTrack)
+ {
+ fReq1n->Fill(fTrack->Pt(),cos(n*(fTrack->Phi())),1.);
+ fImq1n->Fill(fTrack->Pt(),sin(n*(fTrack->Phi())),1.);
+ fReq2n->Fill(fTrack->Pt(),cos(2.*n*(fTrack->Phi())),1.);
+ fImq2n->Fill(fTrack->Pt(),sin(2.*n*(fTrack->Phi())),1.);
+ }
}
Double_t twoDiff_1n1n=0.,twoDiff_2n2n=0.,threeDiff_2n1n1n=0.,threeDiff_1n1n2n=0.,fourDiff_1n1n1n1n=0.;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/*
+/*
//12th bin: <4>_{2n,n|2n,n}
//13th bin: <4>_{3n|n,n,n}
//14th bin: <4>_{4n|2n,n,n}
- //16th bin: <5>_{2n|n,n,n,n}
+ //15th bin: <4>_{3n,n|2n,2n}
+ //16th bin: <5>_{2n,n|n,n,n}
+ //17th bin: <5>_{2n,2n|2n,n,n}
+ //18th bin: <5>_{3n,n|2n,n,n}
+ //19th bin: <5>_{4n|n,n,n,n}
//21th bin: <6>_{n,n,n|n,n,n}
+
+ //31th bin: <4>_{2n,2n|2n,2n} //to be improved
+ //32nd bin: <4>_{3n,n|3n,n} //to be improved
+
+
//differential flow
//41st bin: <2'>_{n|n}
//42nd bin: <2'>_{2n|2n}
if(j==i)continue;
fTrack=anEvent->GetTrack(j);
phi2=fTrack->Phi();
- fDirectCorrelations->Fill(0.,cos(n*(phi1-phi2)),1); //<2>_{n,n}
- fDirectCorrelations->Fill(1.,cos(2.*n*(phi1-phi2)),1); //<2>_{2n,2n}
- fDirectCorrelations->Fill(2.,cos(3.*n*(phi1-phi2)),1); //<2>_{3n,3n}
- fDirectCorrelations->Fill(3.,cos(4.*n*(phi1-phi2)),1); //<2>_{4n,4n}
+ fDirectCorrelations->Fill(0.,cos(n*(phi1-phi2)),1); //<2>_{n|n}
+ fDirectCorrelations->Fill(1.,cos(2.*n*(phi1-phi2)),1); //<2>_{2n|2n}
+ fDirectCorrelations->Fill(2.,cos(3.*n*(phi1-phi2)),1); //<2>_{3n|3n}
+ fDirectCorrelations->Fill(3.,cos(4.*n*(phi1-phi2)),1); //<2>_{4n|4n}
}
}
- //<3>_{2n,n,n}, <3>_{3n|2n,n}, <3>_{4n,2n,2n} and <3>_{4n,3n,n}
+ //<3>_{2n|n,n}, <3>_{3n|2n,n}, <3>_{4n|2n,2n} and <3>_{4n|3n,n}
for(Int_t i=0;i<M;i++)
{
fTrack=anEvent->GetTrack(i);
if(k==i||k==j)continue;
fTrack=anEvent->GetTrack(k);
phi3=fTrack->Phi();
- fDirectCorrelations->Fill(5.,cos(2*n*phi1-n*(phi2+phi3)),1); //<3>_{2n,n,n}
- fDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),1); //<3>_{3n,2n,n}
- fDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1); //<3>_{4n,2n,2n}
- fDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),1); //<3>_{4n,3n,n}
+ fDirectCorrelations->Fill(5.,cos(2*n*phi1-n*(phi2+phi3)),1); //<3>_{2n|n,n}
+ fDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),1); //<3>_{3n|2n,n}
+ fDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1); //<3>_{4n|2n,2n}
+ fDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),1); //<3>_{4n|3n,n}
}
}
}
- //<4>_{n,n,n,n}, <4>_{2n,n,2n,n}, <4>_{3n,n,n,n} and <4>_{4n,2n,n,n}
+ //<4>_{n,n|n,n}, <4>_{2n,n|2n,n}, <4>_{3n|n,n,n}, <4>_{4n|2n,n,n}, <4>_{2n,2n|2n,2n} and <4>_{3n,n|3n,n}
for(Int_t i=0;i<M;i++)
{
fTrack=anEvent->GetTrack(i);
if(l==i||l==j||l==k)continue;
fTrack=anEvent->GetTrack(l);
phi4=fTrack->Phi();
- fDirectCorrelations->Fill(10.,cos(n*phi1+n*phi2-n*phi3-n*phi4),1); //<4>_{n,n,n,n}
- fDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),1); //<4>_{2n,n,2n,n}
- fDirectCorrelations->Fill(12.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),1); //<4>_{3n,n,n,n}
- fDirectCorrelations->Fill(13.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),1); //<4>_{4n,2n,n,n}
+ fDirectCorrelations->Fill(10.,cos(n*phi1+n*phi2-n*phi3-n*phi4),1); //<4>_{n,n|n,n}
+ fDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),1); //<4>_{2n,n|2n,n}
+ fDirectCorrelations->Fill(12.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),1); //<4>_{3n|n,n,n}
+ fDirectCorrelations->Fill(13.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),1); //<4>_{4n|2n,n,n}
+ fDirectCorrelations->Fill(14.,cos(3.*n*phi1+n*phi2-2.*n*phi3-2.*n*phi4),1); //<4>_{3n,n|2n,2n}
+ fDirectCorrelations->Fill(30.,cos(2.*n*phi1+2*n*phi2-2.*n*phi3-2.*n*phi4),1); //<4>_{2n,2n|2n,2n}//to be improved
+ fDirectCorrelations->Fill(31.,cos(3.*n*phi1+n*phi2-3.*n*phi3-n*phi4),1); //<4>_{3n,n|3n,n}//to be improved
}
}
}
- */
- /*
+
+
//<5>_{2n,n,n,n,n}
- for(Int_t i=0;i<nPrim;i++)
+ for(Int_t i=0;i<M;i++)
{
cout<<"i = "<<i<<endl;
fTrack=anEvent->GetTrack(i);
phi1=fTrack->Phi();
- for(Int_t j=0;j<nPrim;j++)
+ for(Int_t j=0;j<M;j++)
{
if(j==i)continue;
fTrack=anEvent->GetTrack(j);
phi2=fTrack->Phi();
- for(Int_t k=0;k<nPrim;k++)
+ for(Int_t k=0;k<M;k++)
{
if(k==i||k==j)continue;
fTrack=anEvent->GetTrack(k);
phi3=fTrack->Phi();
- for(Int_t l=0;l<nPrim;l++)
+ for(Int_t l=0;l<M;l++)
{
if(l==i||l==j||l==k)continue;
fTrack=anEvent->GetTrack(l);
phi4=fTrack->Phi();
- for(Int_t m=0;m<nPrim;m++)
+ for(Int_t m=0;m<M;m++)
{
if(m==i||m==j||m==k||m==l)continue;
fTrack=anEvent->GetTrack(m);
phi5=fTrack->Phi();
- fDirectCorrelations->Fill(15.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1); //<5>_{2n,n,n,n,n}
+ fDirectCorrelations->Fill(15.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1); //<5>_{2n,n|n,n,n}
+ fDirectCorrelations->Fill(16.,cos(2.*n*phi1+2.*n*phi2-2.*n*phi3-n*phi4-n*phi5),1);//<5>_{2n,2n|2n,n,n}
+ fDirectCorrelations->Fill(17.,cos(3.*n*phi1+n*phi2-2.*n*phi3-n*phi4-n*phi5),1); //<5>_{3n,n|2n,n,n}
+ fDirectCorrelations->Fill(18.,cos(4.*n*phi1-n*phi2-n*phi3-n*phi4-n*phi5),1); //<5>_{4n|n,n,n,n}
}
}
}
}
+
+ */
+
+
+
+ /*
//<6>_{n,n,n,n,n,n}
for(Int_t i=0;i<nPrim;i++)
void AliFlowAnalysisWithQCumulants::Finish()
{
- //not needed for the time being...
+ //calculate the final results
+ //AliQCumulantsFunctions finalResults(fIntFlowResultsQC,fDiffFlowResults2ndOrderQC,fDiffFlowResults4thOrderQC,fCovariances,fAvMultIntFlowQC,fQvectorComponents,fQCorrelations,fQCovariance, fQCorrelationsPerBin,fDirectCorrelations,f2_1n1n,f2_2n2n,f3_2n1n1n,f3_1n1n2n, f4_1n1n1n1n,fCommonHistsResults2nd,fCommonHistsResults4th,fCommonHistsResults6th,fCommonHistsResults8th);
+
+ AliQCumulantsFunctions finalResults(fIntFlowResultsQC,fDiffFlowResults2ndOrderQC,fDiffFlowResults4thOrderQC,fCovariances,fAvMultIntFlowQC,fQvectorComponents,fQCorrelations,fQCovariance, fQCorrelationsPerBin,fDirectCorrelations,f2_1n1n,f2_2n2n,f3_2n1n1n,f3_1n1n2n, f4_1n1n1n1n);
+
+ finalResults.Calculate();
}
+//================================================================================================================
+void AliFlowAnalysisWithQCumulants::WriteHistograms(TString* outputFileName)
+{
+ //store the final results in output .root file
+ TFile *output = new TFile(outputFileName->Data(),"RECREATE");
+ fHistList->Write();
+ delete output;
+}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+//================================================================================================================
#define AliQCumulantsFunctions_cxx
#include "Riostream.h"
-#include "AliFlowCommonConstants.h"
#include "TChain.h"
#include "TFile.h"
#include "TList.h"
#include "AliFlowTrackSimple.h"
#include "AliFlowAnalysisWithCumulants.h"
#include "AliFlowCommonConstants.h"
+#include "AliFlowCommonHistResults.h"
#include "AliQCumulantsFunctions.h"
ClassImp(AliQCumulantsFunctions)
fIntRes(NULL),
fDiffRes2nd(NULL),
fDiffRes4th(NULL),
+ fCovar(NULL),
fAvMult(NULL),
fQVector(NULL),
fQCorr(NULL),
fbin2_2n2n(NULL),
fbin3_2n1n1n(NULL),
fbin3_1n1n2n(NULL),
- fbin4_1n1n1n1n(NULL)
+ fbin4_1n1n1n1n(NULL)
+ //fchr2nd(NULL),
+ //fchr4th(NULL),
+ //fchr6th(NULL),
+ //fchr8th(NULL)
{
//default constructor
}
//destructor
}
-AliQCumulantsFunctions::AliQCumulantsFunctions(TH1D *intRes, TH1D *diffRes2nd, TH1D *diffRes4th, TProfile *AvMult, TProfile *QVector, TProfile *QCorr, TProfile *QCovar, TProfile *QCorrPerBin, TProfile *Direct, TProfile *bin2_1n1n, TProfile *bin2_2n2n, TProfile *bin3_2n1n1n, TProfile *bin3_1n1n2n, TProfile *bin4_1n1n1n1n):
+/*
+AliQCumulantsFunctions::AliQCumulantsFunctions(TH1D *intRes, TH1D *diffRes2nd, TH1D *diffRes4th, TH1D *covar, TProfile *AvMult, TProfile *QVector, TProfile *QCorr, TProfile *QCovar, TProfile *QCorrPerBin, TProfile *Direct, TProfile *bin2_1n1n, TProfile *bin2_2n2n, TProfile *bin3_2n1n1n, TProfile *bin3_1n1n2n, TProfile *bin4_1n1n1n1n, AliFlowCommonHistResults *chr2nd, AliFlowCommonHistResults *chr4th, AliFlowCommonHistResults *chr6th, AliFlowCommonHistResults *chr8th):
fIntRes(intRes),
fDiffRes2nd(diffRes2nd),
fDiffRes4th(diffRes4th),
+ fCovar(covar),
fAvMult(AvMult),
fQVector(QVector),
fQCorr(QCorr),
fbin2_2n2n(bin2_2n2n),
fbin3_2n1n1n(bin3_2n1n1n),
fbin3_1n1n2n(bin3_1n1n2n),
- fbin4_1n1n1n1n(bin4_1n1n1n1n)
+ fbin4_1n1n1n1n(bin4_1n1n1n1n),
+ fchr2nd(chr2nd),
+ fchr4th(chr4th),
+ fchr6th(chr6th),
+ fchr8th(chr8th)
{
//custom constructor
}
+*/
+
+AliQCumulantsFunctions::AliQCumulantsFunctions(TH1D *intRes, TH1D *diffRes2nd, TH1D *diffRes4th, TH1D *covar, TProfile *AvMult, TProfile *QVector, TProfile *QCorr, TProfile *QCovar, TProfile *QCorrPerBin, TProfile *Direct, TProfile *bin2_1n1n, TProfile *bin2_2n2n, TProfile *bin3_2n1n1n, TProfile *bin3_1n1n2n, TProfile *bin4_1n1n1n1n):
+ fIntRes(intRes),
+ fDiffRes2nd(diffRes2nd),
+ fDiffRes4th(diffRes4th),
+ fCovar(covar),
+ fAvMult(AvMult),
+ fQVector(QVector),
+ fQCorr(QCorr),
+ fQCovar(QCovar),
+ fQCorrPerBin(QCorrPerBin),
+ fDirect(Direct),
+ fbin2_1n1n(bin2_1n1n),
+ fbin2_2n2n(bin2_2n2n),
+ fbin3_2n1n1n(bin3_2n1n1n),
+ fbin3_1n1n2n(bin3_1n1n2n),
+ fbin4_1n1n1n1n(bin4_1n1n1n1n)
+ //fchr2nd(chr2nd),
+ //fchr4th(chr4th),
+ //fchr6th(chr6th),
+ //fchr8th(chr8th)
+{
+ //custom constructor
+}
+
+
//================================================================================================================
void AliQCumulantsFunctions::Calculate()
Double_t cov24=fQCovar->GetBinContent(1)-two*four;//cov24=<<2>*<4>>-<<2>>*<<4>>
Double_t cov26=fQCovar->GetBinContent(2)-two*six; //cov26=<<2>*<6>>-<<2>>*<<6>>
Double_t cov46=fQCovar->GetBinContent(3)-four*six;//cov46=<<4>*<6>>-<<4>>*<<6>>
+ fCovar->SetBinContent(1,cov24);
+ fCovar->SetBinContent(2,cov26);
+ fCovar->SetBinContent(4,cov46);
//2nd, 4th and 6th order Q-cumulant and theirs errors:
Double_t secondOrderQCumulant = two; //c_n{2}
fourthOrderQCumulantError = pow(16.*pow(two,2.)*pow(twoErr,2.)+pow(fourErr,2.)-8.*two*cov24,0.5);//sigma_{c_n{4}}
}
- Double_t sixthOrderQCumulant = six-9.*two*four+12.*pow(two,3.); //c_n{6}
+ Double_t sixthOrderQCumulant = six-9.*two*four+12.*pow(two,3.); //c_n{6}
Double_t sixthOrderQCumulantError = 0.; //sigma_{c_n{6}}
if(81.*pow(4.*two*two-four,2.)*pow(twoErr,2.)+81.*pow(two,2.)*pow(fourErr,2.)+pow(sixErr,2.)-162.*(4.*two*two-four)*two*cov24+18.*(4.*two*two-four)*cov26-18.*two*cov46>0.)
cout<<" v_"<<n<<"{2} = "<<vn2<<" +/- "<<sd2<<endl;
fIntRes->SetBinContent(1,vn2);
fIntRes->SetBinError(1,sd2);
+ //fchr2nd->FillIntegratedFlow(vn2,sd2);//common histogram
}else{
cout<<" v_"<<n<<"{2} = Im"<<endl;
}
cout<<" v_"<<n<<"{4} = "<<vn4<<" +/- "<<sd4<<endl;
fIntRes->SetBinContent(2,vn4);
fIntRes->SetBinError(2,sd4);
+ //fchr4th->FillIntegratedFlow(vn4,sd4);//common histogram
}else{
cout<<" v_"<<n<<"{4} = Im"<<endl;
}
cout<<" v_"<<n<<"{6} = "<<vn6<<" +/- "<<sd6<<endl;
fIntRes->SetBinContent(3,vn6);
fIntRes->SetBinError(3,sd6);
+ //fchr6th->FillIntegratedFlow(vn6,sd6);//common histogram
//fIntRes->Draw("E1P0");
}else{
cout<<" v_"<<n<<"{6} = Im"<<endl;
cout<<"*********************************"<<endl;
cout<<" "<<endl;
//---------------------------------------------------------------------------------------------------------
-
-
+
//---------------------------------------------------------------------------------------------------------
//differential flow
Double_t secondOrderQCumulantDiffFlow = 0.;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /*
+ Double_t first=16.*pow(two*twoErr,2.);
+ Double_t second=pow(fourErr,2.);
+ Double_t third=-8.*two*cov24;
+
+ cout<<" "<<endl;
+ cout<<" "<<endl;
+ cout<<" "<<endl;
+ cout<<" 1st = "<<(1./16.)*first/(pow(-fourthOrderQCumulant,1.5))<<endl;
+ cout<<" 2nd = "<<(1./16.)*second/(pow(-fourthOrderQCumulant,1.5))<<endl;
+ cout<<" 3rd = "<<(1./16.)*third/(pow(-fourthOrderQCumulant,1.5))<<endl;
+ cout<<" "<<endl;
+ cout<<" nEvts = "<<nEvts<<", AvM = "<<AvM<<endl;
+ cout<<" "<<endl;
+ cout<<" "<<endl;
+ cout<<"c-c = "<<pow((1./16.)*((first+second+third)/(pow(-fourthOrderQCumulant,1.5))),0.5)<<endl;
+ */
+/*
-
-/*
//needed for direct correlations
cout<<" "<<endl;
cout<<" nEvts = "<<nEvts<<", AvM = "<<AvM<<endl;
cout<<" "<<endl;
- cout<<"<2>_{n|n} from Q-vectors = "<<fQCorr->GetBinContent(1)<<endl;
- //cout<<"<2>_{n|n} from Q-vectors = "<<fQCorr->GetBinContent(1)<<" +/- "<<pow(-1.*fQCorrErr->GetBinContent(1),0.5)<<endl;// to be improved (deleteMe)
- cout<<"<2>_{n|n} from nested loops = "<<fDirect->GetBinContent(1)<<endl;
+ cout<<"<2>_{n|n} from Q-vectors = "<<fQCorr->GetBinContent(1)<<endl;
+ cout<<"<2>_{n|n} from nested loops = "<<fDirect->GetBinContent(1)<<endl;
cout<<" "<<endl;
- cout<<"<2>_{2n|2n} from Q-vectors = "<<fQCorr->GetBinContent(2)<<endl;
- cout<<"<2>_{2n|2n} from nested loops = "<<fDirect->GetBinContent(2)<<endl;
+ cout<<"<2>_{2n|2n} from Q-vectors = "<<fQCorr->GetBinContent(2)<<endl;
+ cout<<"<2>_{2n|2n} from nested loops = "<<fDirect->GetBinContent(2)<<endl;
cout<<" "<<endl;
- cout<<"<2>_{3n|3n} from Q-vectors = "<<fQCorr->GetBinContent(3)<<endl;
- cout<<"<2>_{3n|3n} from nested loops = "<<fDirect->GetBinContent(3)<<endl;
+ cout<<"<2>_{3n|3n} from Q-vectors = "<<fQCorr->GetBinContent(3)<<endl;
+ cout<<"<2>_{3n|3n} from nested loops = "<<fDirect->GetBinContent(3)<<endl;
cout<<" "<<endl;
- cout<<"<2>_{4n|4n} from Q-vectors = "<<fQCorr->GetBinContent(4)<<endl;
- cout<<"<2>_{4n|4n} from nested loops = "<<fDirect->GetBinContent(4)<<endl;
+ cout<<"<2>_{4n|4n} from Q-vectors = "<<fQCorr->GetBinContent(4)<<endl;
+ cout<<"<2>_{4n|4n} from nested loops = "<<fDirect->GetBinContent(4)<<endl;
cout<<" "<<endl;
- cout<<"<3>_{2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(6)<<endl;
- cout<<"<3>_{2n,n,n} from nested loops = "<<fDirect->GetBinContent(6)<<endl;
+ cout<<"<3>_{2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(6)<<endl;
+ cout<<"<3>_{2n,n,n} from nested loops = "<<fDirect->GetBinContent(6)<<endl;
cout<<" "<<endl;
- cout<<"<3>_{3n,2n,n} from Q-vectors = "<<fQCorr->GetBinContent(7)<<endl;
- cout<<"<3>_{3n,2n,n} from nested loops = "<<fDirect->GetBinContent(7)<<endl;
+ cout<<"<3>_{3n,2n,n} from Q-vectors = "<<fQCorr->GetBinContent(7)<<endl;
+ cout<<"<3>_{3n,2n,n} from nested loops = "<<fDirect->GetBinContent(7)<<endl;
cout<<" "<<endl;
- cout<<"<3>_{4n,2n,2n} from Q-vectors = "<<fQCorr->GetBinContent(8)<<endl;
- cout<<"<3>_{4n,2n,2n} from nested loops = "<<fDirect->GetBinContent(8)<<endl;
+ cout<<"<3>_{4n,2n,2n} from Q-vectors = "<<fQCorr->GetBinContent(8)<<endl;
+ cout<<"<3>_{4n,2n,2n} from nested loops = "<<fDirect->GetBinContent(8)<<endl;
cout<<" "<<endl;
- cout<<"<3>_{4n,3n,n} from Q-vectors = "<<fQCorr->GetBinContent(9)<<endl;
- cout<<"<3>_{4n,3n,n} from nested loops = "<<fDirect->GetBinContent(9)<<endl;
+ cout<<"<3>_{4n,3n,n} from Q-vectors = "<<fQCorr->GetBinContent(9)<<endl;
+ cout<<"<3>_{4n,3n,n} from nested loops = "<<fDirect->GetBinContent(9)<<endl;
cout<<" "<<endl;
- cout<<"<4>_{n,n|n,n} from Q-vectors = "<<fQCorr->GetBinContent(11)<<endl;
- cout<<"<4>_{n,n|n,n} from nested loops = "<<fDirect->GetBinContent(11)<<endl;
+ cout<<"<4>_{n,n|n,n} from Q-vectors = "<<fQCorr->GetBinContent(11)<<endl;
+ cout<<"<4>_{n,n|n,n} from nested loops = "<<fDirect->GetBinContent(11)<<endl;
cout<<" "<<endl;
- cout<<"<4>_{2n,n|2n,n} from Q-vectors = "<<fQCorr->GetBinContent(12)<<endl;
- cout<<"<4>_{2n,n|2n,n} from nested loops = "<<fDirect->GetBinContent(12)<<endl;
+ cout<<"<4>_{2n,2n|2n,2n} from Q-vectors = "<<fQCorr->GetBinContent(31)<<endl;//to be improved
+ cout<<"<4>_{2n,2n|2n,2n} from nested loops = "<<fDirect->GetBinContent(31)<<endl;//to be improved
cout<<" "<<endl;
- cout<<"<4>_{3n|n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(13)<<endl;
- cout<<"<4>_{3n|n,n,n} from nested loops = "<<fDirect->GetBinContent(13)<<endl;
+ cout<<"<4>_{3n,n|3n,n} from Q-vectors = "<<fQCorr->GetBinContent(32)<<endl;//to be improved
+ cout<<"<4>_{3n,n|3n,n} from nested loops = "<<fDirect->GetBinContent(32)<<endl;//to be improved
cout<<" "<<endl;
- cout<<"<4>_{4n|2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(14)<<endl;
- cout<<"<4>_{4n|2n,n,n} from nested loops = "<<fDirect->GetBinContent(14)<<endl;
+ cout<<"<4>_{2n,n|2n,n} from Q-vectors = "<<fQCorr->GetBinContent(12)<<endl;
+ cout<<"<4>_{2n,n|2n,n} from nested loops = "<<fDirect->GetBinContent(12)<<endl;
+ cout<<" "<<endl;
+ cout<<"<4>_{3n|n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(13)<<endl;
+ cout<<"<4>_{3n|n,n,n} from nested loops = "<<fDirect->GetBinContent(13)<<endl;
+ cout<<" "<<endl;
+ cout<<"<4>_{4n|2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(14)<<endl;
+ cout<<"<4>_{4n|2n,n,n} from nested loops = "<<fDirect->GetBinContent(14)<<endl;
+ cout<<" "<<endl;
+ cout<<"<4>_{3n,n|2n,2n} from Q-vectors = "<<fQCorr->GetBinContent(15)<<endl;
+ cout<<"<4>_{3n,n|2n,2n} from nested loops = "<<fDirect->GetBinContent(15)<<endl;
+ cout<<" "<<endl;
+ cout<<"<5>_{2n,n|n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(16)<<endl;
+ cout<<"<5>_{2n,n|n,n,n} from nested loops = "<<fDirect->GetBinContent(16)<<endl;
+ cout<<" "<<endl;
+ cout<<"<5>_{2n,2n|2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(17)<<endl;
+ cout<<"<5>_{2n,2n|2n,n,n} from nested loops = "<<fDirect->GetBinContent(17)<<endl;
+ cout<<" "<<endl;
+ cout<<"<5>_{3n,n|2n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(18)<<endl;
+ cout<<"<5>_{3n,n|2n,n,n} from nested loops = "<<fDirect->GetBinContent(18)<<endl;
+ cout<<" "<<endl;
+ cout<<"<5>_{4n|n,n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(19)<<endl;
+ cout<<"<5>_{4n|n,n,n,n} from nested loops = "<<fDirect->GetBinContent(19)<<endl;
cout<<" "<<endl;
-
*/
+
/*
- cout<<"<5>_{2n,n|n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(16)<<endl;
- cout<<"<5>_{2n,n|n,n,n} from nested loops = "<<fDirect->GetBinContent(16)<<endl;
- cout<<" "<<endl;
+
cout<<"<6>_{n,n,n|n,n,n} from Q-vectors = "<<fQCorr->GetBinContent(21)<<endl;
cout<<"<6>_{n,n,n|n,n,n} from nested loops = "<<fDirect->GetBinContent(21)<<endl;
cout<<" "<<endl;
*/
-
-
-
+ /*
+
+
+cout<<" "<<endl;
+cout<<" "<<endl;
+cout<<" nEvts = "<<nEvts<<", AvM = "<<AvM<<endl;
+cout<<" "<<endl;
+cout<<"sigma_2 = "<<twoErr<<endl;
+cout<<"sigma_4 = "<<fourErr<<endl;
+cout<<"sigma_6 = "<<sixErr<<endl;
+
+
+*/
+
}