dBinsPair[0] = centralityBins;
axisTitlePair[0] = "Centrality percentile [%]"; */
- //Psi_2
- const Int_t kNPsi2Bins = 3;
- Double_t psi2Bins[kNPsi2Bins+1] = {-0.5,0.5,1.5,2.5};
+ //Psi_2: -0.5->0.5 (in plane), 0.5->1.5 (intermediate), 1.5->2.5 (out of plane), 2.5->3.5 (all)
+ const Int_t kNPsi2Bins = 4;
+ Double_t psi2Bins[kNPsi2Bins+1] = {-0.5,0.5,1.5,2.5,3.5};
iBinSingle[0] = kNPsi2Bins;
dBinsSingle[0] = psi2Bins;
axisTitleSingle[0] = "#phi - #Psi_{2} (a.u.)";
}
// 1st particle loop
- for (Int_t i=0; i<iMax; i++)
- {
+ for (Int_t i=0; i<iMax; i++) {
+ AliVParticle* firstParticle = (AliVParticle*) particles->At(i);
+
+ // some optimization
+ Float_t firstEta = firstParticle->Eta();
+ Float_t firstPhi = firstParticle->Phi();
+ Float_t firstPt = firstParticle->Pt();
+
+ // Event plane (determine psi bin)
+ Double_t gPsiMinusPhi = 0.;
+ Double_t gPsiMinusPhiBin = -10.;
+ gPsiMinusPhi = TMath::Abs(firstPhi - gReactionPlane);
+ //in-plane
+ if((gPsiMinusPhi <= 7.5)||
+ ((172.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 187.5)))
+ gPsiMinusPhiBin = 0.0;
+ //intermediate
+ else if(((37.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 52.5))||
+ ((127.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 142.5))||
+ ((217.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 232.5))||
+ ((307.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 322.5)))
+ gPsiMinusPhiBin = 1.0;
+ //out of plane
+ else if(((82.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 97.5))||
+ ((262.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 277.5)))
+ gPsiMinusPhiBin = 2.0;
+ //everything else
+ else
+ gPsiMinusPhiBin = 3.0;
+
+ Short_t charge = (Short_t) firstParticle->Charge();
+
+ trackVariablesSingle[0] = gPsiMinusPhiBin;
+ trackVariablesSingle[1] = firstPt;
+
+ //fill single particle histograms
+ if(charge > 0) fHistP->Fill(trackVariablesSingle,0,1.);
+ else if(charge < 0) fHistN->Fill(trackVariablesSingle,0,1.);
+
+ // 2nd particle loop (only for j < i for non double counting in the same pT region)
+ // --> SAME pT region for trigger and assoc: NO double counting with this
+ // --> DIFF pT region for trigger and assoc: Missing assoc. particles with j > i to a trigger i
+ // --> can be handled afterwards by using assoc. as trigger as well ?!
+ for(Int_t j = 0; j < i; j++) { // or go to full here (everything prepared)?
+ if (particlesMixed && jMax < i) // if the mixed track number is smaller than the main event one (could be done better if one loops over all tracks)
+ break;
- AliVParticle* firstParticle = (AliVParticle*) particles->At(i);
+ AliVParticle* secondParticle = (AliVParticle*) particlesSecond->At(j);
- // some optimization
- Float_t firstEta = firstParticle->Eta();
- Float_t firstPhi = firstParticle->Phi();
- Float_t firstPt = firstParticle->Pt();
-
- // Event plane (determine psi bin)
- Double_t gPsiMinusPhi = 0.;
- Double_t gPsiMinusPhiBin = -10.;
- gPsiMinusPhi = TMath::Abs(firstPhi - gReactionPlane);
- if((gPsiMinusPhi <= 7.5)||
- ((172.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 187.5)))
- gPsiMinusPhiBin = 0.0;
- else if(((37.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 52.5))||
- ((127.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 142.5))||
- ((217.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 232.5))||
- ((307.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 322.5)))
- gPsiMinusPhiBin = 1.0;
- else if(((82.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 97.5))||
- ((262.5 <= gPsiMinusPhi)&&(gPsiMinusPhi <= 277.5)))
- gPsiMinusPhiBin = 2.0;
- else continue;
-
+ Short_t charge2 = (Short_t) secondParticle->Charge();
- Short_t charge = (Short_t) firstParticle->Charge();
-
- trackVariablesSingle[0] = gPsiMinusPhiBin;
- trackVariablesSingle[1] = firstPt;
+ trackVariablesPair[0] = gPsiMinusPhiBin;
+ trackVariablesPair[1] = firstEta - secondEta[j]; // delta eta
+ trackVariablesPair[2] = firstPhi - secondPhi[j]; // delta phi
+ if (trackVariablesPair[2] > 180.) // delta phi between -180 and 180
+ trackVariablesPair[2] -= 360.;
+ if (trackVariablesPair[2] < - 180.)
+ trackVariablesPair[2] += 360.;
- //fill single particle histograms
- if(charge > 0) fHistP->Fill(trackVariablesSingle,0,1.);
- else if(charge < 0) fHistN->Fill(trackVariablesSingle,0,1.);
+ trackVariablesPair[3] = firstPt; // pt trigger
+ trackVariablesPair[4] = secondPt[j]; // pt
+ // trackVariablesPair[5] = fCentrality; // centrality
-
+ if( charge > 0 && charge2 < 0) fHistPN->Fill(trackVariablesPair,0,1.);
+ else if( charge < 0 && charge2 > 0) fHistNP->Fill(trackVariablesPair,0,1.);
+ else if( charge > 0 && charge2 > 0) fHistPP->Fill(trackVariablesPair,0,1.);
+ else if( charge < 0 && charge2 < 0) fHistNN->Fill(trackVariablesPair,0,1.);
+ else AliWarning(Form("Wrong charge combination: charge1 = %d and charge2 = %d",charge,charge2));
- // 2nd particle loop (only for j < i for non double counting in the same pT region)
- // --> SAME pT region for trigger and assoc: NO double counting with this
- // --> DIFF pT region for trigger and assoc: Missing assoc. particles with j > i to a trigger i
- // --> can be handled afterwards by using assoc. as trigger as well ?!
- for(Int_t j = 0; j < i; j++) { // or go to full here (everything prepared)?
-
- if (particlesMixed && jMax < i) // if the mixed track number is smaller than the main event one (could be done better if one loops over all tracks)
- break;
-
- AliVParticle* secondParticle = (AliVParticle*) particlesSecond->At(j);
-
- Short_t charge2 = (Short_t) secondParticle->Charge();
-
- trackVariablesPair[0] = gPsiMinusPhiBin;
- trackVariablesPair[1] = firstEta - secondEta[j]; // delta eta
- trackVariablesPair[2] = firstPhi - secondPhi[j]; // delta phi
- if (trackVariablesPair[2] > 180.) // delta phi between -180 and 180
- trackVariablesPair[2] -= 360.;
- if (trackVariablesPair[2] < - 180.)
- trackVariablesPair[2] += 360.;
-
- trackVariablesPair[3] = firstPt; // pt trigger
- trackVariablesPair[4] = secondPt[j]; // pt
- // trackVariablesPair[5] = fCentrality; // centrality
-
- if( charge > 0 && charge2 < 0) fHistPN->Fill(trackVariablesPair,0,1.);
- else if( charge < 0 && charge2 > 0) fHistNP->Fill(trackVariablesPair,0,1.);
- else if( charge > 0 && charge2 > 0) fHistPP->Fill(trackVariablesPair,0,1.);
- else if( charge < 0 && charge2 < 0) fHistNN->Fill(trackVariablesPair,0,1.);
- else AliWarning(Form("Wrong charge combination: charge1 = %d and charge2 = %d",charge,charge2));
-
- }//end of 2nd particle loop
- }//end of 1st particle loop
+ }//end of 2nd particle loop
+ }//end of 1st particle loop
}
//____________________________________________________________________//
TH1D *AliBalancePsi::GetBalanceFunctionHistogram(Int_t iVariableSingle,
Int_t iVariablePair,
Double_t psiMin,
- Double_t psiMax) {
+ Double_t psiMax,
+ Double_t ptTriggerMin,
+ Double_t ptTriggerMax,
+ Double_t ptAssociatedMin,
+ Double_t ptAssociatedMax) {
//Returns the BF histogram, extracted from the 6 AliTHn objects
//(private members) of the AliBalancePsi class.
//iVariableSingle: 0(phi-Psi), 1(pt-trigger)
//iVariablePair: 0(phi-Psi) 1(Delta eta), 2(Delta phi), 3(pt-trigger), 4(pt-associated
- TString gAnalysisType[ANALYSIS_TYPES] = {"y","eta","phi","qlong","qout","qside","qinv"};
- TString histName = "gHistBalanceFunctionHistogram";
- histName += gAnalysisType[iVariablePair];
-
// Psi_2
fHistP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
fHistN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
fHistPP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
fHistNN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
+ // pt trigger
+ if((ptTriggerMin != -1.)&&(ptTriggerMax != -1.)) {
+ fHistP->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistN->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistPN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistNP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistPP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistNN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ }
+
+ // pt associated
+ if((ptAssociatedMin != -1.)&&(ptAssociatedMax != -1.)) {
+ fHistPN->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
+ fHistNP->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
+ fHistPP->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
+ fHistNN->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
+ }
+
//Printf("P:%lf - N:%lf - PN:%lf - NP:%lf - PP:%lf - NN:%lf",fHistP->GetEntries(0),fHistN->GetEntries(0),fHistPN->GetEntries(0),fHistNP->GetEntries(0),fHistPP->GetEntries(0),fHistNN->GetEntries(0));
// Project into the wanted space (1st: analysis step, 2nd: axis)
//____________________________________________________________________//
TH2D *AliBalancePsi::GetBalanceFunctionDeltaEtaDeltaPhi(Double_t psiMin,
- Double_t psiMax) {
+ Double_t psiMax,
+ Double_t ptTriggerMin,
+ Double_t ptTriggerMax,
+ Double_t ptAssociatedMin,
+ Double_t ptAssociatedMax) {
//Returns the BF histogram in Delta eta vs Delta phi,
//extracted from the 6 AliTHn objects
//(private members) of the AliBalancePsi class.
fHistPP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
fHistNN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
- AliInfo(Form("P:%lf - N:%lf - PN:%lf - NP:%lf - PP:%lf - NN:%lf",fHistP->GetEntries(0),fHistN->GetEntries(0),fHistPN->GetEntries(0),fHistNP->GetEntries(0),fHistPP->GetEntries(0),fHistNN->GetEntries(0)));
+ // pt trigger
+ if((ptTriggerMin != -1.)&&(ptTriggerMax != -1.)) {
+ fHistP->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistN->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistPN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistNP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistPP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistNN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ }
+
+ // pt associated
+ if((ptAssociatedMin != -1.)&&(ptAssociatedMax != -1.)) {
+ fHistPN->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
+ fHistNP->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
+ fHistPP->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
+ fHistNN->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
+ }
+
+ //AliInfo(Form("P:%lf - N:%lf - PN:%lf - NP:%lf - PP:%lf - NN:%lf",fHistP->GetEntries(0),fHistN->GetEntries(0),fHistPN->GetEntries(0),fHistNP->GetEntries(0),fHistPP->GetEntries(0),fHistNN->GetEntries(0)));
// Project into the wanted space (1st: analysis step, 2nd: axis)
TH2D* hTemp1 = (TH2D*)fHistPN->Project(0,1,2);
//____________________________________________________________________//
TH2D *AliBalancePsi::GetCorrelationFunctionPN(Double_t psiMin,
- Double_t psiMax) {
+ Double_t psiMax,
+ Double_t ptTriggerMin,
+ Double_t ptTriggerMax,
+ Double_t ptAssociatedMin,
+ Double_t ptAssociatedMax) {
//Returns the 2D correlation function for (+-) pairs
// Psi_2: axis 0
fHistP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
fHistPN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
- //fHistP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(-0.5,2.5);
- //fHistPN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(-0.5,2.5);
- TH2D *gHistTest = dynamic_cast<TH2D *>(fHistP->Project(0,0,1));
- TCanvas *c1 = new TCanvas("c1","");
- c1->cd();
- if(!gHistTest){
- AliError("Projection of fHistP = NULL");
- return gHistTest;
- }
- else{
- gHistTest->DrawCopy("colz");
+ // pt trigger
+ if((ptTriggerMin != -1.)&&(ptTriggerMax != -1.)) {
+ fHistP->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistPN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
}
- //0:step, 2: Delta eta, 3: Delta phi
+ // pt associated
+ if((ptAssociatedMin != -1.)&&(ptAssociatedMax != -1.))
+ fHistPN->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
+
+ //fHistP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(-0.5,2.5);
+ //fHistPN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(-0.5,2.5);
+
+ //TH2D *gHistTest = dynamic_cast<TH2D *>(fHistP->Project(0,0,1));
+ //TCanvas *c1 = new TCanvas("c1","");
+ //c1->cd();
+ //if(!gHistTest){
+ //AliError("Projection of fHistP = NULL");
+ //return gHistTest;
+ //}
+ //else{
+ //gHistTest->DrawCopy("colz");
+ //}
+
+ //0:step, 1: Delta eta, 2: Delta phi
TH2D *gHist = dynamic_cast<TH2D *>(fHistPN->Project(0,1,2));
if(!gHist){
AliError("Projection of fHistPN = NULL");
return gHist;
}
- AliInfo(Form("Entries (test): %lf",(Double_t)(gHistTest->GetEntries())));
- AliInfo(Form("Entries (1D): %lf",(Double_t)(fHistP->Project(0,1)->GetEntries())));
- AliInfo(Form("Entries (2D): %lf",(Double_t)(fHistPN->Project(0,1,2)->GetEntries())));
+ //AliInfo(Form("Entries (test): %lf",(Double_t)(gHistTest->GetEntries())));
+ //AliInfo(Form("Entries (1D): %lf",(Double_t)(fHistP->Project(0,1)->GetEntries())));
+ //AliInfo(Form("Entries (2D): %lf",(Double_t)(fHistPN->Project(0,1,2)->GetEntries())));
- TCanvas *c2 = new TCanvas("c2","");
- c2->cd();
- fHistPN->Project(0,1,2)->DrawCopy("colz");
+ //TCanvas *c2 = new TCanvas("c2","");
+ //c2->cd();
+ //fHistPN->Project(0,1,2)->DrawCopy("colz");
if((Double_t)(fHistP->Project(0,1)->GetEntries())!=0)
gHist->Scale(1./(Double_t)(fHistP->Project(0,1)->GetEntries()));
//____________________________________________________________________//
TH2D *AliBalancePsi::GetCorrelationFunctionNP(Double_t psiMin,
- Double_t psiMax) {
+ Double_t psiMax,
+ Double_t ptTriggerMin,
+ Double_t ptTriggerMax,
+ Double_t ptAssociatedMin,
+ Double_t ptAssociatedMax) {
//Returns the 2D correlation function for (+-) pairs
// Psi_2: axis 0
fHistN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
fHistNP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
- //0:step, 2: Delta eta, 3: Delta phi
+ // pt trigger
+ if((ptTriggerMin != -1.)&&(ptTriggerMax != -1.)) {
+ fHistN->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistNP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ }
+
+ // pt associated
+ if((ptAssociatedMin != -1.)&&(ptAssociatedMax != -1.))
+ fHistNP->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
+
+ //0:step, 1: Delta eta, 2: Delta phi
TH2D *gHist = dynamic_cast<TH2D *>(fHistNP->Project(0,1,2));
if(!gHist){
AliError("Projection of fHistPN = NULL");
//____________________________________________________________________//
TH2D *AliBalancePsi::GetCorrelationFunctionPP(Double_t psiMin,
- Double_t psiMax) {
+ Double_t psiMax,
+ Double_t ptTriggerMin,
+ Double_t ptTriggerMax,
+ Double_t ptAssociatedMin,
+ Double_t ptAssociatedMax) {
//Returns the 2D correlation function for (+-) pairs
// Psi_2: axis 0
fHistP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
fHistPP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
+
+ // pt trigger
+ if((ptTriggerMin != -1.)&&(ptTriggerMax != -1.)) {
+ fHistP->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistPP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ }
+
+ // pt associated
+ if((ptAssociatedMin != -1.)&&(ptAssociatedMax != -1.))
+ fHistPP->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
- //0:step, 2: Delta eta, 3: Delta phi
+ //0:step, 1: Delta eta, 2: Delta phi
TH2D *gHist = dynamic_cast<TH2D *>(fHistPP->Project(0,1,2));
if(!gHist){
AliError("Projection of fHistPN = NULL");
//____________________________________________________________________//
TH2D *AliBalancePsi::GetCorrelationFunctionNN(Double_t psiMin,
- Double_t psiMax) {
+ Double_t psiMax,
+ Double_t ptTriggerMin,
+ Double_t ptTriggerMax,
+ Double_t ptAssociatedMin,
+ Double_t ptAssociatedMax) {
//Returns the 2D correlation function for (+-) pairs
// Psi_2: axis 0
fHistN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
fHistNN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRangeUser(psiMin,psiMax);
+
+ // pt trigger
+ if((ptTriggerMin != -1.)&&(ptTriggerMax != -1.)) {
+ fHistN->GetGrid(0)->GetGrid()->GetAxis(1)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ fHistNN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRangeUser(ptTriggerMin,ptTriggerMax);
+ }
+
+ // pt associated
+ if((ptAssociatedMin != -1.)&&(ptAssociatedMax != -1.))
+ fHistNN->GetGrid(0)->GetGrid()->GetAxis(4)->SetRangeUser(ptAssociatedMin,ptAssociatedMax);
- //0:step, 2: Delta eta, 3: Delta phi
+ //0:step, 1: Delta eta, 2: Delta phi
TH2D *gHist = dynamic_cast<TH2D *>(fHistNN->Project(0,1,2));
if(!gHist){
AliError("Projection of fHistPN = NULL");
TObjArray* particles,
TObjArray* particlesMixed);
- TH2D *GetCorrelationFunctionPN(Double_t psiMin, Double_t psiMax);
- TH2D *GetCorrelationFunctionNP(Double_t psiMin, Double_t psiMax);
- TH2D *GetCorrelationFunctionPP(Double_t psiMin, Double_t psiMax);
- TH2D *GetCorrelationFunctionNN(Double_t psiMin, Double_t psiMax);
+ TH2D *GetCorrelationFunctionPN(Double_t psiMin, Double_t psiMax,
+ Double_t ptTriggerMin=-1.,
+ Double_t ptTriggerMax=-1.,
+ Double_t ptAssociatedMin=-1.,
+ Double_t ptAssociatedMax=-1);
+ TH2D *GetCorrelationFunctionNP(Double_t psiMin, Double_t psiMax,
+ Double_t ptTriggerMin=-1.,
+ Double_t ptTriggerMax=-1.,
+ Double_t ptAssociatedMin=-1.,
+ Double_t ptAssociatedMax=-1);
+ TH2D *GetCorrelationFunctionPP(Double_t psiMin, Double_t psiMax,
+ Double_t ptTriggerMin=-1.,
+ Double_t ptTriggerMax=-1.,
+ Double_t ptAssociatedMin=-1.,
+ Double_t ptAssociatedMax=-1);
+ TH2D *GetCorrelationFunctionNN(Double_t psiMin, Double_t psiMax,
+ Double_t ptTriggerMin=-1.,
+ Double_t ptTriggerMax=-1.,
+ Double_t ptAssociatedMin=-1.,
+ Double_t ptAssociatedMax=-1);
AliTHn *GetHistNp() {return fHistP;}
AliTHn *GetHistNn() {return fHistN;}
TH1D *GetBalanceFunctionHistogram(Int_t iVariableSingle,
Int_t iVariablePair,
- Double_t psiMin, Double_t psiMax);
-
- TH2D *GetBalanceFunctionDeltaEtaDeltaPhi(Double_t psiMin, Double_t psiMax);
+ Double_t psiMin, Double_t psiMax,
+ Double_t ptTriggerMin=-1.,
+ Double_t ptTriggerMax=-1.,
+ Double_t ptAssociatedMin=-1.,
+ Double_t ptAssociatedMax=-1);
+
+ TH2D *GetBalanceFunctionDeltaEtaDeltaPhi(Double_t psiMin, Double_t psiMax,
+ Double_t ptTriggerMin=-1.,
+ Double_t ptTriggerMax=-1.,
+ Double_t ptAssociatedMin=-1.,
+ Double_t ptAssociatedMax=-1);
private:
Bool_t fShuffle; //shuffled balance function object
--- /dev/null
+const Int_t numberOfCentralityBins = 9;
+TString centralityArray[numberOfCentralityBins] = {"0-5","5-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80"};
+Double_t gMinCentrality[numberOfCentralityBins] = {0.,5.,10.,20.,30.,40.,50.,60.,70.};
+Double_t gMaxCentrality[numberOfCentralityBins] = {5.,10.,20.,30.,40.,50.,60.,70.,80.};
+TString gAnalysisType[7] = {"y","eta","qlong","qout","qside","qinv","phi"};
+
+const Int_t gRebin = 1;
+void drawBalanceFunction2DPsi(const char* filename = "AnalysisResultsPsi.root",
+ Double_t psiMin = 0., Double_t psiMax = 7.5,
+ Double_t ptTriggerMin = -1.,
+ Double_t ptTriggerMax = -1.,
+ Double_t ptAssociatedMin = -1.,
+ Double_t ptAssociatedMax = -1.) {
+ //Macro that draws the BF distributions for each centrality bin
+ //for reaction plane dependent analysis
+ //Author: Panos.Christakoglou@nikhef.nl
+ //Load the PWG2ebye library
+ gSystem->Load("libANALYSIS.so");
+ gSystem->Load("libANALYSISalice.so");
+ gSystem->Load("libEventMixing.so");
+ gSystem->Load("libCORRFW.so");
+ gSystem->Load("libPWGTools.so");
+ gSystem->Load("libPWGCFebye.so");
+
+ //Prepare the objects and return them
+ TList *listBF = GetListOfObjects(filename);
+ TList *listBFShuffled = GetListOfObjects(filename,kTRUE);
+ if(!listBF) {
+ Printf("The TList object was not created");
+ return;
+ }
+ else
+ draw(listBF,listBFShuffled,psiMin,psiMax,
+ ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+}
+
+//______________________________________________________//
+TList *GetListOfObjects(const char* filename, Bool_t kShuffling = kFALSE) {
+ //Get the TList objects (QA, bf, bf shuffled)
+ TList *listQA = 0x0;
+ TList *listBF = 0x0;
+ TList *listBFShuffling = 0x0;
+
+ //Open the file
+ TFile *f = TFile::Open(filename);
+ if((!f)||(!f->IsOpen())) {
+ Printf("The file %s is not found. Aborting...",filename);
+ return listBF;
+ }
+ //f->ls();
+
+ TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionPsiAnalysis"));
+ if(!dir) {
+ Printf("The TDirectoryFile is not found. Aborting...",filename);
+ return listBF;
+ }
+ //dir->ls();
+
+ TString listBFName;
+ if(!kShuffling)
+ listBFName = "listBFPsi";
+ else if(kShuffling)
+ listBFName = "listBFPsiShuffled";
+ listBF = dynamic_cast<TList *>(dir->Get(listBFName.Data()));
+ //listBF->ls();
+
+ //Get the histograms
+ TString histoName;
+ if(!kShuffling)
+ histoName = "fHistPV0M";
+ else if(kShuffling)
+ histoName = "fHistP_shuffleV0M";
+ AliTHn *fHistP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
+ if(!fHistP) {
+ Printf("fHistP %s not found!!!",histoName.Data());
+ break;
+ }
+ fHistP->FillParent(); fHistP->DeleteContainers();
+
+ if(!kShuffling)
+ histoName = "fHistNV0M";
+ else if(kShuffling)
+ histoName = "fHistN_shuffleV0M";
+ AliTHn *fHistN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
+ if(!fHistN) {
+ Printf("fHistN %s not found!!!",histoName.Data());
+ break;
+ }
+ fHistN->FillParent(); fHistN->DeleteContainers();
+
+ if(!kShuffling)
+ histoName = "fHistPNV0M";
+ else if(kShuffling)
+ histoName = "fHistPN_shuffleV0M";
+ AliTHn *fHistPN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
+ if(!fHistPN) {
+ Printf("fHistPN %s not found!!!",histoName.Data());
+ break;
+ }
+ fHistPN->FillParent(); fHistPN->DeleteContainers();
+
+ if(!kShuffling)
+ histoName = "fHistNPV0M";
+ else if(kShuffling)
+ histoName = "fHistNP_shuffleV0M";
+ AliTHn *fHistNP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
+ if(!fHistNP) {
+ Printf("fHistNP %s not found!!!",histoName.Data());
+ break;
+ }
+ fHistNP->FillParent(); fHistNP->DeleteContainers();
+
+ if(!kShuffling)
+ histoName = "fHistPPV0M";
+ else if(kShuffling)
+ histoName = "fHistPP_shuffleV0M";
+ AliTHn *fHistPP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
+ if(!fHistPP) {
+ Printf("fHistPP %s not found!!!",histoName.Data());
+ break;
+ }
+ fHistPP->FillParent(); fHistPP->DeleteContainers();
+
+ if(!kShuffling)
+ histoName = "fHistNNV0M";
+ else if(kShuffling)
+ histoName = "fHistNN_shuffleV0M";
+ AliTHn *fHistNN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
+ if(!fHistNN) {
+ Printf("fHistNN %s not found!!!",histoName.Data());
+ break;
+ }
+ fHistNN->FillParent(); fHistNN->DeleteContainers();
+
+ return listBF;
+}
+
+//______________________________________________________//
+void draw(TList *listBF, TList *listBFShuffled,
+ Double_t psiMin, Double_t psiMax,
+ Double_t ptTriggerMin, Double_t ptTriggerMax,
+ Double_t ptAssociatedMin, Double_t ptAssociatedMax) {
+ gROOT->LoadMacro("~/SetPlotStyle.C");
+ SetPlotStyle();
+ gStyle->SetPalette(1,0);
+
+ //balance function
+ AliTHn *hP = NULL;
+ AliTHn *hN = NULL;
+ AliTHn *hPN = NULL;
+ AliTHn *hNP = NULL;
+ AliTHn *hPP = NULL;
+ AliTHn *hNN = NULL;
+ //listBF->ls();
+ //Printf("=================");
+ hP = (AliTHn*) listBF->FindObject("fHistPV0M");
+ hN = (AliTHn*) listBF->FindObject("fHistNV0M");
+ hPN = (AliTHn*) listBF->FindObject("fHistPNV0M");
+ hNP = (AliTHn*) listBF->FindObject("fHistNPV0M");
+ hPP = (AliTHn*) listBF->FindObject("fHistPPV0M");
+ hNN = (AliTHn*) listBF->FindObject("fHistNNV0M");
+
+ AliBalancePsi *b = new AliBalancePsi();
+ b->SetHistNp(hP);
+ b->SetHistNn(hN);
+ b->SetHistNpn(hPN);
+ b->SetHistNnp(hNP);
+ b->SetHistNpp(hPP);
+ b->SetHistNnn(hNN);
+
+ //balance function shuffling
+ AliTHn *hPShuffled = NULL;
+ AliTHn *hNShuffled = NULL;
+ AliTHn *hPNShuffled = NULL;
+ AliTHn *hNPShuffled = NULL;
+ AliTHn *hPPShuffled = NULL;
+ AliTHn *hNNShuffled = NULL;
+ //listBFShuffled->ls();
+ hPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistP_shuffleV0M");
+ hNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistN_shuffleV0M");
+ hPNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPN_shuffleV0M");
+ hNPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNP_shuffleV0M");
+ hPPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPP_shuffleV0M");
+ hNNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNN_shuffleV0M");
+
+ AliBalancePsi *bShuffled = new AliBalancePsi();
+ bShuffled->SetHistNp(hPShuffled);
+ bShuffled->SetHistNn(hNShuffled);
+ bShuffled->SetHistNpn(hPNShuffled);
+ bShuffled->SetHistNnp(hNPShuffled);
+ bShuffled->SetHistNpp(hPPShuffled);
+ bShuffled->SetHistNnn(hNNShuffled);
+
+ TH2D *gHistBalanceFunction;
+ TH2D *gHistBalanceFunctionShuffled;
+ TCanvas *c1;
+ TString histoTitle, pngName;
+ TLegend *legend;
+
+ //loop over the centrality bins
+ //for(Int_t iCentralityBin = 0; iCentralityBin < numberOfCentralityBins; iCentralityBin++) {
+ histoTitle = "Centrality: ";
+ histoTitle += centralityArray[6];
+ histoTitle += "%";
+ histoTitle += " | "; histoTitle += psiMin;
+ histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
+
+ gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+ gHistBalanceFunction->SetTitle(histoTitle.Data());
+ gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.3);
+
+ gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+
+ c1 = new TCanvas(histoTitle.Data(),"",0,0,600,500);
+ c1->SetFillColor(10);
+ c1->SetHighLightColor(10);
+ c1->SetLeftMargin(0.15);
+ gHistBalanceFunction->Draw("lego2");
+ //gHistBalanceFunctionShuffled->Draw("ESAME");
+
+ legend = new TLegend(0.18,0.6,0.45,0.82,"","brNDC");
+ legend->SetTextSize(0.045);
+ legend->SetTextFont(42);
+ legend->SetBorderSize(0);
+ legend->SetFillStyle(0);
+ legend->SetFillColor(10);
+ legend->SetMargin(0.25);
+ legend->SetShadowColor(10);
+ legend->AddEntry(gHistBalanceFunction,"Data","lp");
+ legend->AddEntry(gHistBalanceFunctionShuffled,"Shuffled data","lp");
+ legend->Draw();
+
+ pngName = "BalanceFunctionDeltaEta.Centrality";
+ pngName += centralityArray[6];
+ pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
+ pngName += ".png";
+ c1->SaveAs(pngName.Data());
+}
+
+//____________________________________________________________________//
+void GetWeightedMean(TH1D *gHistBalance, Int_t fStartBin = 1) {
+ //Prints the calculated width of the BF and its error
+ Double_t gSumXi = 0.0, gSumBi = 0.0, gSumBiXi = 0.0;
+ Double_t gSumBiXi2 = 0.0, gSumBi2Xi2 = 0.0;
+ Double_t gSumDeltaBi2 = 0.0, gSumXi2DeltaBi2 = 0.0;
+ Double_t deltaBalP2 = 0.0, integral = 0.0;
+ Double_t deltaErrorNew = 0.0;
+
+ //Retrieve this variables from Histogram
+ Int_t fNumberOfBins = gHistBalance->GetNbinsX();
+ Double_t fP2Step = gHistBalance->GetBinWidth(1); // assume equal binning!
+
+ cout<<"=================================================="<<endl;
+ cout<<"RECALCULATION OF BF WIDTH (StartBin = "<<fStartBin<<")"<<endl;
+ cout<<"HISTOGRAM has "<<fNumberOfBins<<" bins with bin size of "<<fP2Step<<endl;
+ cout<<"=================================================="<<endl;
+ for(Int_t i = 1; i <= fNumberOfBins; i++) {
+
+ // this is to simulate |Delta eta| or |Delta phi|
+ if(fNumberOfBins/2 - fStartBin + 1 < i && i < fNumberOfBins/2 + fStartBin ) continue;
+
+ cout<<"B: "<<gHistBalance->GetBinContent(i)<<"\t Error: "<<gHistBalance->GetBinError(i)<<"\t bin: "<<TMath::Abs(gHistBalance->GetBinCenter(i))<<endl;
+
+ gSumXi += TMath::Abs(gHistBalance->GetBinCenter(i)); // this is to simulate |Delta eta| or |Delta phi|
+ gSumBi += gHistBalance->GetBinContent(i);
+ gSumBiXi += gHistBalance->GetBinContent(i)*TMath::Abs(gHistBalance->GetBinCenter(i));
+ gSumBiXi2 += gHistBalance->GetBinContent(i)*TMath::Power(TMath::Abs(gHistBalance->GetBinCenter(i)),2);
+ gSumBi2Xi2 += TMath::Power(gHistBalance->GetBinContent(i),2)*TMath::Power(TMath::Abs(gHistBalance->GetBinCenter(i)),2);
+ gSumDeltaBi2 += TMath::Power(gHistBalance->GetBinError(i),2);
+ gSumXi2DeltaBi2 += TMath::Power(TMath::Abs(gHistBalance->GetBinCenter(i)),2) * TMath::Power(gHistBalance->GetBinError(i),2);
+
+ deltaBalP2 += fP2Step*TMath::Power(gHistBalance->GetBinError(i),2);
+ integral += fP2Step*gHistBalance->GetBinContent(i);
+ }
+ for(Int_t i = fStartBin; i < fNumberOfBins; i++)
+ deltaErrorNew += gHistBalance->GetBinError(i)*(TMath::Abs(gHistBalance->GetBinCenter(i))*gSumBi - gSumBiXi)/TMath::Power(gSumBi,2);
+
+ Double_t integralError = TMath::Sqrt(deltaBalP2);
+
+ Double_t delta = gSumBiXi / gSumBi;
+ Double_t deltaError = (gSumBiXi / gSumBi) * TMath::Sqrt(TMath::Power((TMath::Sqrt(gSumXi2DeltaBi2)/gSumBiXi),2) + TMath::Power((gSumDeltaBi2/gSumBi),2) );
+ cout<<"=================================================="<<endl;
+ cout<<"Width: "<<delta<<"\t Error: "<<deltaError<<endl;
+ cout<<"New error: "<<deltaErrorNew<<endl;
+ cout<<"Integral: "<<integral<<"\t Error: "<<integralError<<endl;
+ cout<<"=================================================="<<endl;
+ cout<<endl;
+}
const Int_t gRebin = 1;
void drawBalanceFunctionPsi(const char* filename = "AnalysisResultsPsi.root",
- Double_t psiMin = 0., Double_t psiMax = 7.5) {
+ Double_t psiMin = -0.5, Double_t psiMax = 0.5,
+ Double_t ptTriggerMin = -1.,
+ Double_t ptTriggerMax = -1.,
+ Double_t ptAssociatedMin = -1.,
+ Double_t ptAssociatedMax = -1.) {
//Macro that draws the BF distributions for each centrality bin
//for reaction plane dependent analysis
//Author: Panos.Christakoglou@nikhef.nl
return;
}
else
- draw(listBF,listBFShuffled,psiMin,psiMax);
+ draw(listBF,listBFShuffled,psiMin,psiMax,
+ ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
}
//______________________________________________________//
}
//f->ls();
- TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionAnalysis"));
+ TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionPsiAnalysis"));
if(!dir) {
Printf("The TDirectoryFile is not found. Aborting...",filename);
return listBF;
TString listBFName;
if(!kShuffling)
- listBFName = "listBF_0-100_V0M_vZ10.0_DCAxy-1.0_DCAz-1.0_Pt0.3-5.0_Eta-0.8-0.8_Chi-1.0_nClus-1_Bit1_withCentralTrigger";
+ listBFName = "listBFPsi";
else if(kShuffling)
- listBFName = "listBFShuffled_0-100_V0M_vZ10.0_DCAxy-1.0_DCAz-1.0_Pt0.3-5.0_Eta-0.8-0.8_Chi-1.0_nClus-1_Bit1_withCentralTrigger";
+ listBFName = "listBFPsiShuffled";
listBF = dynamic_cast<TList *>(dir->Get(listBFName.Data()));
//listBF->ls();
//______________________________________________________//
void draw(TList *listBF, TList *listBFShuffled,
- Double_t psiMin, Double_t psiMax) {
+ Double_t psiMin, Double_t psiMax,
+ Double_t ptTriggerMin, Double_t ptTriggerMax,
+ Double_t ptAssociatedMin, Double_t ptAssociatedMax) {
gROOT->LoadMacro("~/SetPlotStyle.C");
SetPlotStyle();
gStyle->SetPalette(1,0);
bShuffled->SetHistNpp(hPPShuffled);
bShuffled->SetHistNnn(hNNShuffled);
- TH1D *gHistBalanceFunction[numberOfCentralityBins];
- TH1D *gHistBalanceFunctionShuffled[numberOfCentralityBins];
- TCanvas *c1[numberOfCentralityBins];
+ TH1D *gHistBalanceFunction;
+ TH1D *gHistBalanceFunctionShuffled;
+ TCanvas *c1;
TString histoTitle, pngName;
- TLegend *legend[numberOfCentralityBins];
+ TLegend *legend;
//loop over the centrality bins
- for(Int_t iCentralityBin = 0; iCentralityBin < numberOfCentralityBins; iCentralityBin++) {
- histoTitle = "Centrality: ";
- histoTitle += centralityArray[iCentralityBin];
- histoTitle += "%";
- histoTitle += " | "; histoTitle += psiMin;
- histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
-
- gHistBalanceFunction[iCentralityBin] = b->GetBalanceFunctionHistogram(2,2,gMinCentrality[iCentralityBin],gMaxCentrality[iCentralityBin],psiMin,psiMax);
- //gHistBalanceFunction[iCentralityBin] = b->GetBalanceFunctionHistogram(3,3,gMinCentrality[iCentralityBin],gMaxCentrality[iCentralityBin],psiMin,psiMax);
- gHistBalanceFunction[iCentralityBin]->SetMarkerStyle(20);
- gHistBalanceFunction[iCentralityBin]->SetTitle(histoTitle.Data());
- gHistBalanceFunction[iCentralityBin]->GetYaxis()->SetTitleOffset(1.3);
-
- gHistBalanceFunctionShuffled[iCentralityBin] = bShuffled->GetBalanceFunctionHistogram(2,2,gMinCentrality[iCentralityBin],gMaxCentrality[iCentralityBin],psiMin,psiMax);
- //gHistBalanceFunctionShuffled[iCentralityBin] = b->GetBalanceFunctionHistogram(3,3,gMinCentrality[iCentralityBin],gMaxCentrality[iCentralityBin],psiMin,psiMax);
- gHistBalanceFunctionShuffled[iCentralityBin]->SetMarkerStyle(24);
-
- c1[iCentralityBin] = new TCanvas(histoTitle.Data(),"",0,0,600,500);
- c1[iCentralityBin]->SetFillColor(10);
- c1[iCentralityBin]->SetHighLightColor(10);
- c1[iCentralityBin]->SetLeftMargin(0.15);
- gHistBalanceFunction[iCentralityBin]->Draw("E");
- gHistBalanceFunctionShuffled[iCentralityBin]->Draw("ESAME");
-
- legend[iCentralityBin] = new TLegend(0.18,0.6,0.45,0.82,"","brNDC");
- legend[iCentralityBin]->SetTextSize(0.045);
- legend[iCentralityBin]->SetTextFont(42);
- legend[iCentralityBin]->SetBorderSize(0);
- legend[iCentralityBin]->SetFillStyle(0);
- legend[iCentralityBin]->SetFillColor(10);
- legend[iCentralityBin]->SetMargin(0.25);
- legend[iCentralityBin]->SetShadowColor(10);
- legend[iCentralityBin]->AddEntry(gHistBalanceFunction[iCentralityBin],"Data","lp");
- legend[iCentralityBin]->AddEntry(gHistBalanceFunctionShuffled[iCentralityBin],"Shuffled data","lp");
- legend[iCentralityBin]->Draw();
-
- pngName = "BalanceFunctionDeltaEta.Centrality";
- pngName += centralityArray[iCentralityBin];
- pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
- pngName += ".png";
- c1[iCentralityBin]->SaveAs(pngName.Data());
-
- GetWeightedMean(gHistBalanceFunction[iCentralityBin]);
- GetWeightedMean(gHistBalanceFunctionShuffled[iCentralityBin]);
-
- TString meanLatex, rmsLatex, skewnessLatex, kurtosisLatex;
- meanLatex = "#mu = ";
- meanLatex += Form("%.3f",gHistBalanceFunction[iCentralityBin]->GetMean());
- meanLatex += " #pm ";
- meanLatex += Form("%.3f",gHistBalanceFunction[iCentralityBin]->GetMeanError());
-
- rmsLatex = "#sigma = ";
- rmsLatex += Form("%.3f",gHistBalanceFunction[iCentralityBin]->GetRMS());
- rmsLatex += " #pm ";
- rmsLatex += Form("%.3f",gHistBalanceFunction[iCentralityBin]->GetRMSError());
-
- skewnessLatex = "S = ";
- skewnessLatex += Form("%.3f",gHistBalanceFunction[iCentralityBin]->GetSkewness(1));
- skewnessLatex += " #pm ";
- skewnessLatex += Form("%.3f",gHistBalanceFunction[iCentralityBin]->GetSkewness(11));
-
- kurtosisLatex = "K = ";
- kurtosisLatex += Form("%.3f",gHistBalanceFunction[iCentralityBin]->GetKurtosis(1));
- kurtosisLatex += " #pm ";
- kurtosisLatex += Form("%.3f",gHistBalanceFunction[iCentralityBin]->GetKurtosis(11));
-
- TLatex *latex = new TLatex();
- latex->SetNDC();
- latex->SetTextSize(0.035);
- latex->SetTextColor(1);
- latex->DrawLatex(0.64,0.85,meanLatex.Data());
- latex->DrawLatex(0.64,0.81,rmsLatex.Data());
- latex->DrawLatex(0.64,0.77,skewnessLatex.Data());
- latex->DrawLatex(0.64,0.73,kurtosisLatex.Data());
- Printf("Mean: %lf - Error: %lf",gHistBalanceFunction[iCentralityBin]->GetMean(),gHistBalanceFunction[iCentralityBin]->GetMeanError());
- Printf("RMS: %lf - Error: %lf",gHistBalanceFunction[iCentralityBin]->GetRMS(),gHistBalanceFunction[iCentralityBin]->GetRMSError());
- Printf("Skeweness: %lf - Error: %lf",gHistBalanceFunction[iCentralityBin]->GetSkewness(1),gHistBalanceFunction[iCentralityBin]->GetSkewness(11));
- Printf("Kurtosis: %lf - Error: %lf",gHistBalanceFunction[iCentralityBin]->GetKurtosis(1),gHistBalanceFunction[iCentralityBin]->GetKurtosis(11));
- }
+ //for(Int_t iCentralityBin = 0; iCentralityBin < numberOfCentralityBins; iCentralityBin++) {
+ histoTitle = "Centrality: ";
+ histoTitle += centralityArray[6];
+ histoTitle += "%";
+ histoTitle += " | "; histoTitle += psiMin;
+ histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
+
+ gHistBalanceFunction = b->GetBalanceFunctionHistogram(0,2,psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+ gHistBalanceFunction->SetMarkerStyle(20);
+ gHistBalanceFunction->SetTitle(histoTitle.Data());
+ gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.3);
+
+ gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionHistogram(0,2,psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+ gHistBalanceFunctionShuffled->SetMarkerStyle(24);
+
+ c1 = new TCanvas(histoTitle.Data(),"",0,0,600,500);
+ c1->SetFillColor(10);
+ c1->SetHighLightColor(10);
+ c1->SetLeftMargin(0.15);
+ gHistBalanceFunction->DrawCopy("E");
+ gHistBalanceFunctionShuffled->DrawCopy("ESAME");
+
+ legend = new TLegend(0.18,0.6,0.45,0.82,"","brNDC");
+ legend->SetTextSize(0.045);
+ legend->SetTextFont(42);
+ legend->SetBorderSize(0);
+ legend->SetFillStyle(0);
+ legend->SetFillColor(10);
+ legend->SetMargin(0.25);
+ legend->SetShadowColor(10);
+ legend->AddEntry(gHistBalanceFunction,"Data","lp");
+ legend->AddEntry(gHistBalanceFunctionShuffled,"Shuffled data","lp");
+ legend->Draw();
+
+ pngName = "BalanceFunctionDeltaEta.Centrality";
+ pngName += centralityArray[6];
+ pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
+ pngName += ".png";
+ c1->SaveAs(pngName.Data());
+
+ GetWeightedMean(gHistBalanceFunction);
+ GetWeightedMean(gHistBalanceFunctionShuffled);
+
+ TString meanLatex, rmsLatex, skewnessLatex, kurtosisLatex;
+ meanLatex = "#mu = ";
+ meanLatex += Form("%.3f",gHistBalanceFunction->GetMean());
+ meanLatex += " #pm ";
+ meanLatex += Form("%.3f",gHistBalanceFunction->GetMeanError());
+
+ rmsLatex = "#sigma = ";
+ rmsLatex += Form("%.3f",gHistBalanceFunction->GetRMS());
+ rmsLatex += " #pm ";
+ rmsLatex += Form("%.3f",gHistBalanceFunction->GetRMSError());
+
+ skewnessLatex = "S = ";
+ skewnessLatex += Form("%.3f",gHistBalanceFunction->GetSkewness(1));
+ skewnessLatex += " #pm ";
+ skewnessLatex += Form("%.3f",gHistBalanceFunction->GetSkewness(11));
+
+ kurtosisLatex = "K = ";
+ kurtosisLatex += Form("%.3f",gHistBalanceFunction->GetKurtosis(1));
+ kurtosisLatex += " #pm ";
+ kurtosisLatex += Form("%.3f",gHistBalanceFunction->GetKurtosis(11));
+
+ TLatex *latex = new TLatex();
+ latex->SetNDC();
+ latex->SetTextSize(0.035);
+ latex->SetTextColor(1);
+ latex->DrawLatex(0.64,0.85,meanLatex.Data());
+ latex->DrawLatex(0.64,0.81,rmsLatex.Data());
+ latex->DrawLatex(0.64,0.77,skewnessLatex.Data());
+ latex->DrawLatex(0.64,0.73,kurtosisLatex.Data());
+ Printf("Mean: %lf - Error: %lf",gHistBalanceFunction->GetMean(),gHistBalanceFunction->GetMeanError());
+ Printf("RMS: %lf - Error: %lf",gHistBalanceFunction->GetRMS(),gHistBalanceFunction->GetRMSError());
+ Printf("Skeweness: %lf - Error: %lf",gHistBalanceFunction->GetSkewness(1),gHistBalanceFunction->GetSkewness(11));
+ Printf("Kurtosis: %lf - Error: %lf",gHistBalanceFunction->GetKurtosis(1),gHistBalanceFunction->GetKurtosis(11));
+ //}
}
//____________________________________________________________________//
cout<<"HISTOGRAM has "<<fNumberOfBins<<" bins with bin size of "<<fP2Step<<endl;
cout<<"=================================================="<<endl;
for(Int_t i = 1; i <= fNumberOfBins; i++) {
-
// this is to simulate |Delta eta| or |Delta phi|
if(fNumberOfBins/2 - fStartBin + 1 < i && i < fNumberOfBins/2 + fStartBin ) continue;
const Int_t gRebin = 1;
void drawCorrelationFunctionPsi(const char* filename = "AnalysisResults.root",
- Double_t psiMin = 0., Double_t psiMax = 7.5) {
+ Double_t psiMin = -0.5,
+ Double_t psiMax = 0.5,
+ Double_t ptTriggerMin = -1.,
+ Double_t ptTriggerMax = -1.,
+ Double_t ptAssociatedMin = -1.,
+ Double_t ptAssociatedMax = -1.) {
//Macro that draws the correlation functions from the balance function
//analysis vs the reaction plane
//Author: Panos.Christakoglou@nikhef.nl
return;
}
else
- draw(list,psiMin,psiMax);
+ draw(list,psiMin,psiMax,
+ ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
}
//______________________________________________________//
}
//f->ls();
- TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionAnalysis"));
+ TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionPsiAnalysis"));
if(!dir) {
Printf("The TDirectoryFile is not found. Aborting...",filename);
return listBF;
}
//dir->ls();
- TString listBFName = "listBF_0-100_V0M_vZ10.0_DCAxy-1.0_DCAz-1.0_Pt0.3-5.0_Eta-0.8-0.8_Chi-1.0_nClus-1_Bit1_withCentralTrigger";
+ TString listBFName = "listBFPsi";
listBF = dynamic_cast<TList *>(dir->Get(listBFName.Data()));
//listBF->ls();
}
//______________________________________________________//
-void draw(TList *list, Double_t psiMin, Double_t psiMax) {
+void draw(TList *list, Double_t psiMin, Double_t psiMax,
+ Double_t ptTriggerMin, Double_t ptTriggerMax,
+ Double_t ptAssociatedMin, Double_t ptAssociatedMax) {
//Draws the correlation functions for every centrality bin
//(+-), (-+), (++), (--)
gROOT->LoadMacro("~/SetPlotStyle.C");
b->SetHistNnp(hNP);
b->SetHistNpp(hPP);
b->SetHistNnn(hNN);
- TH2D *gHistPN[numberOfCentralityBins];
- TH2D *gHistNP[numberOfCentralityBins];
- TH2D *gHistPP[numberOfCentralityBins];
- TH2D *gHistNN[numberOfCentralityBins];
+ TH2D *gHistPN;
+ TH2D *gHistNP;
+ TH2D *gHistPP;
+ TH2D *gHistNN;
- TCanvas *cPN[numberOfCentralityBins];
- TCanvas *cNP[numberOfCentralityBins];
- TCanvas *cPP[numberOfCentralityBins];
- TCanvas *cNN[numberOfCentralityBins];
+ TCanvas *cPN;
+ TCanvas *cNP;
+ TCanvas *cPP;
+ TCanvas *cNN;
TString histoTitle, pngName;
//loop over the centrality bins
- for(Int_t iCentralityBin = 0; iCentralityBin < numberOfCentralityBins; iCentralityBin++) {
- histoTitle = "(+-) | Centrality: ";
- histoTitle += centralityArray[iCentralityBin];
- histoTitle += "%";
- histoTitle += " | "; histoTitle += psiMin;
- histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
- gHistPN[iCentralityBin] = b->GetCorrelationFunctionPN(gMinCentrality[iCentralityBin],gMaxCentrality[iCentralityBin],psiMin,psiMax);
- gHistPN[iCentralityBin]->GetYaxis()->SetTitleOffset(1.5);
- gHistPN[iCentralityBin]->SetTitle(histoTitle.Data());
- cPN[iCentralityBin] = new TCanvas(histoTitle.Data(),"",0,0,400,400);
- cPN[iCentralityBin]->SetFillColor(10);
- cPN[iCentralityBin]->SetHighLightColor(10);
- gHistPN[iCentralityBin]->DrawCopy("lego2");
- pngName = "DeltaPhiDeltaEta.Centrality";
- pngName += centralityArray[iCentralityBin];
- pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
- pngName += ".PositiveNegative.png";
- cPN[iCentralityBin]->SaveAs(pngName.Data());
-
- histoTitle = "(-+) | Centrality: ";
- histoTitle += centralityArray[iCentralityBin];
- histoTitle += "%";
- histoTitle += " | "; histoTitle += psiMin;
- histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
- gHistNP[iCentralityBin] = b->GetCorrelationFunctionNP(gMinCentrality[iCentralityBin],gMaxCentrality[iCentralityBin],psiMin,psiMax);
- gHistNP[iCentralityBin]->GetYaxis()->SetTitleOffset(1.5);
- gHistNP[iCentralityBin]->SetTitle(histoTitle.Data());
- cNP[iCentralityBin] = new TCanvas(histoTitle.Data(),"",400,0,400,400);
- cNP[iCentralityBin]->SetFillColor(10);
- cNP[iCentralityBin]->SetHighLightColor(10);
- gHistNP[iCentralityBin]->DrawCopy("lego2");
- pngName = "DeltaPhiDeltaEta.Centrality";
- pngName += centralityArray[iCentralityBin];
- pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
- pngName += ".NegativePositive.png";
- cNP[iCentralityBin]->SaveAs(pngName.Data());
-
- histoTitle = "(++) | Centrality: ";
- histoTitle += centralityArray[iCentralityBin];
- histoTitle += "%";
- histoTitle += " | "; histoTitle += psiMin;
- histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
- gHistPP[iCentralityBin] = b->GetCorrelationFunctionPP(gMinCentrality[iCentralityBin],gMaxCentrality[iCentralityBin],psiMin,psiMax);
- gHistPP[iCentralityBin]->GetYaxis()->SetTitleOffset(1.5);
- gHistPP[iCentralityBin]->SetTitle(histoTitle.Data());
- cPP[iCentralityBin] = new TCanvas(histoTitle.Data(),"",0,400,400,400);
- cPP[iCentralityBin]->SetFillColor(10);
- cPP[iCentralityBin]->SetHighLightColor(10);
- gHistPP[iCentralityBin]->DrawCopy("lego2");
- pngName = "DeltaPhiDeltaEta.Centrality";
- pngName += centralityArray[iCentralityBin];
- pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
- pngName += ".PositivePositive.png";
- cPP[iCentralityBin]->SaveAs(pngName.Data());
-
- histoTitle = "(--) | Centrality: ";
- histoTitle += centralityArray[iCentralityBin];
- histoTitle += "%";
- histoTitle += " | "; histoTitle += psiMin;
- histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
- gHistNN[iCentralityBin] = b->GetCorrelationFunctionNN(gMinCentrality[iCentralityBin],gMaxCentrality[iCentralityBin],psiMin,psiMax);
- gHistNN[iCentralityBin]->GetYaxis()->SetTitleOffset(1.5);
- gHistNN[iCentralityBin]->SetTitle(histoTitle.Data());
- cNN[iCentralityBin] = new TCanvas(histoTitle.Data(),"",400,400,400,400);
- cNN[iCentralityBin]->SetFillColor(10);
- cNN[iCentralityBin]->SetHighLightColor(10);
- gHistNN[iCentralityBin]->DrawCopy("lego2");
- pngName = "DeltaPhiDeltaEta.Centrality";
- pngName += centralityArray[iCentralityBin];
- pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
- pngName += ".NegativeNegative.png";
- cNN[iCentralityBin]->SaveAs(pngName.Data());
- }//end of loop over centralities
+ //for(Int_t iCentralityBin = 0; iCentralityBin < numberOfCentralityBins; iCentralityBin++) {
+
+ histoTitle = "(+-) | Centrality: ";
+ histoTitle += centralityArray[6];
+ histoTitle += "%";
+ histoTitle += " | "; histoTitle += psiMin;
+ histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
+ gHistPN = b->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+ gHistPN->GetYaxis()->SetTitleOffset(1.5);
+ gHistPN->SetTitle(histoTitle.Data());
+ cPN = new TCanvas(histoTitle.Data(),"",0,0,400,400);
+ cPN->SetFillColor(10);
+ cPN->SetHighLightColor(10);
+ gHistPN->DrawCopy("lego2");
+ pngName = "DeltaPhiDeltaEta.Centrality";
+ pngName += centralityArray[6];
+ pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
+ pngName += ".PositiveNegative.png";
+ cPN->SaveAs(pngName.Data());
+
+ histoTitle = "(-+) | Centrality: ";
+ histoTitle += centralityArray[6];
+ histoTitle += "%";
+ histoTitle += " | "; histoTitle += psiMin;
+ histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
+ gHistNP = b->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+ gHistNP->GetYaxis()->SetTitleOffset(1.5);
+ gHistNP->SetTitle(histoTitle.Data());
+ cNP = new TCanvas(histoTitle.Data(),"",400,0,400,400);
+ cNP->SetFillColor(10);
+ cNP->SetHighLightColor(10);
+ gHistNP->DrawCopy("lego2");
+ pngName = "DeltaPhiDeltaEta.Centrality";
+ pngName += centralityArray[6];
+ pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
+ pngName += ".NegativePositive.png";
+ cNP->SaveAs(pngName.Data());
+
+ histoTitle = "(++) | Centrality: ";
+ histoTitle += centralityArray[6];
+ histoTitle += "%";
+ histoTitle += " | "; histoTitle += psiMin;
+ histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
+ gHistPP = b->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+ gHistPP->GetYaxis()->SetTitleOffset(1.5);
+ gHistPP->SetTitle(histoTitle.Data());
+ cPP = new TCanvas(histoTitle.Data(),"",0,400,400,400);
+ cPP->SetFillColor(10);
+ cPP->SetHighLightColor(10);
+ gHistPP->DrawCopy("lego2");
+ pngName = "DeltaPhiDeltaEta.Centrality";
+ pngName += centralityArray[6];
+ pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
+ pngName += ".PositivePositive.png";
+ cPP->SaveAs(pngName.Data());
+
+ histoTitle = "(--) | Centrality: ";
+ histoTitle += centralityArray[6];
+ histoTitle += "%";
+ histoTitle += " | "; histoTitle += psiMin;
+ histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
+ gHistNN = b->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+ gHistNN->GetYaxis()->SetTitleOffset(1.5);
+ gHistNN->SetTitle(histoTitle.Data());
+ cNN = new TCanvas(histoTitle.Data(),"",400,400,400,400);
+ cNN->SetFillColor(10);
+ cNN->SetHighLightColor(10);
+ gHistNN->DrawCopy("lego2");
+ pngName = "DeltaPhiDeltaEta.Centrality";
+ pngName += centralityArray[6];
+ pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
+ pngName += ".NegativeNegative.png";
+ cNN->SaveAs(pngName.Data());
+ //}//end of loop over centralities
}