]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/EBYE/macros/drawCorrelationFunctionPsi.C
new task MK
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / drawCorrelationFunctionPsi.C
index fdc04d555ebe61f1e3f993c747622e264b6ec42f..fd5f0954934402c4b0bd6b920908caf9882939eb 100644 (file)
@@ -1,6 +1,6 @@
 const Int_t numberOfCentralityBins = 12;
 //TString centralityArray[numberOfCentralityBins] = {"0-4","4-5","6-14","30-40","40-50","50-60","60-70","70-80","0-100","0-1","1-2","2-3"};
-TString centralityArray[numberOfCentralityBins] = {"0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","0-100","0-1","1-2","2-3"};
+TString centralityArray[numberOfCentralityBins] = {"0-100","10-20","20-30","30-40","40-50","50-60","60-70","70-80","0-100","0-1","1-2","2-3"};
 
 const Int_t gRebin = 1;
 
@@ -12,11 +12,14 @@ void drawCorrelationFunctionPsi(const char* filename = "AnalysisResultsPsi_train
                                Bool_t kShowMixed = kTRUE, 
                                Double_t psiMin = -0.5, 
                                Double_t psiMax = 3.5,
+                               Double_t vertexZMin = -10.,
+                               Double_t vertexZMax = 10.,
                                Double_t ptTriggerMin = -1.,
                                Double_t ptTriggerMax = -1.,
                                Double_t ptAssociatedMin = -1.,
                                Double_t ptAssociatedMax = -1.,
                                Bool_t normToTrig = kTRUE,
+                               Bool_t kUseVzBinning = kTRUE,
                                Int_t rebinEta = 1,
                                Int_t rebinPhi = 1,
                                TString eventClass = "EventPlane") //Can be "EventPlane", "Centrality", "Multiplicity"
@@ -87,8 +90,8 @@ void drawCorrelationFunctionPsi(const char* filename = "AnalysisResultsPsi_train
   }
   else 
     draw(list,listShuffled,listMixed,listQA,
-        gCentralityEstimator,gCentrality,psiMin,psiMax,
-        ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,normToTrig,rebinEta,rebinPhi,eventClass);
+        gCentralityEstimator,gCentrality,psiMin,psiMax,vertexZMin,vertexZMax,
+        ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,normToTrig,kUseVzBinning,rebinEta,rebinPhi,eventClass);
 }
 
 //______________________________________________________//
@@ -251,12 +254,16 @@ TList *GetListOfObjects(const char* filename,
 }
 
 //______________________________________________________//
-void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
+void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, 
+         TList *listQA,
          const char *gCentralityEstimator,
-         Int_t gCentrality, Double_t psiMin, Double_t psiMax,
+         Int_t gCentrality, Double_t psiMin, Double_t psiMax,  
+         Double_t vertexZMin,Double_t vertexZMax,
          Double_t ptTriggerMin, Double_t ptTriggerMax,
          Double_t ptAssociatedMin, Double_t ptAssociatedMax,
-         Bool_t normToTrig, Int_t rebinEta, Int_t rebinPhi,TString eventClass) {
+         Bool_t normToTrig,                            
+         Bool_t kUseVzBinning,
+         Int_t rebinEta, Int_t rebinPhi,TString eventClass) {
   //Draws the correlation functions for every centrality bin
   //(+-), (-+), (++), (--)  
   AliTHn *hP = NULL;
@@ -297,6 +304,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   b->SetHistNnp(hNP);
   b->SetHistNpp(hPP);
   b->SetHistNnn(hNN);
+  if(kUseVzBinning) b->SetVertexZBinning(kTRUE);
 
   //balance function shuffling
   AliTHn *hPShuffled = NULL;
@@ -342,6 +350,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
     bShuffled->SetHistNnp(hNPShuffled);
     bShuffled->SetHistNpp(hPPShuffled);
     bShuffled->SetHistNnn(hNNShuffled);
+    if(kUseVzBinning) bShuffled->SetVertexZBinning(kTRUE);
   }
 
   //balance function mixing
@@ -388,6 +397,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
     bMixed->SetHistNnp(hNPMixed);
     bMixed->SetHistNpp(hPPMixed);
     bMixed->SetHistNnn(hNNMixed);
+    if(kUseVzBinning) bMixed->SetVertexZBinning(kTRUE);
   }
 
 
@@ -463,8 +473,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
     else 
       histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
   }
-
-  gHistPN[0] = b->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+  gHistPN[0] = b->GetCorrelationFunctionPN(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
   if(rebinEta > 1 || rebinPhi > 1){
     gHistPN[0]->Rebin2D(rebinEta,rebinPhi);
     gHistPN[0]->Scale(1./(Double_t)(rebinEta*rebinPhi));
@@ -486,19 +495,10 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   //cPN[0]->SaveAs(pngName.Data());
   
   if(listBFShuffled) {
-    histoTitle = "(+-) shuffled | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+
+    histoTitle.ReplaceAll("(+-)","(+-) shuffled"); 
     
-    gHistPN[1] = bShuffled->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+    gHistPN[1] = bShuffled->GetCorrelationFunctionPN(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
     if(rebinEta > 1 || rebinPhi > 1){
       gHistPN[1]->Rebin2D(rebinEta,rebinPhi);
       gHistPN[1]->Scale(1./(Double_t)(rebinEta*rebinPhi));
@@ -522,20 +522,12 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   }
 
   if(listBFMixed) {
-    histoTitle = "(+-) mixed | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+
+    if(histoTitle.Contains("shuffled")) histoTitle.ReplaceAll("(+-) shuffled","(+-) mixed"); 
+    else                                histoTitle.ReplaceAll("(+-)","(+-) mixed"); 
     
     // if normalization to trigger then do not divide Event mixing by number of trigger particles
-    gHistPN[2] = bMixed->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+    gHistPN[2] = bMixed->GetCorrelationFunctionPN(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
     if(rebinEta > 1 || rebinPhi > 1){
       gHistPN[2]->Rebin2D(rebinEta,rebinPhi);
       gHistPN[2]->Scale(1./(Double_t)(rebinEta*rebinPhi));
@@ -566,8 +558,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
     //cPN[2]->SaveAs(pngName.Data());
 
     //Correlation function (+-)
-    gHistPN[3] = dynamic_cast<TH2D *>(gHistPN[0]->Clone());
-    gHistPN[3]->Divide(gHistPN[2]);
+    gHistPN[3] = b->GetCorrelationFunction("PN",psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
     gHistPN[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
     if(normToTrig)
       gHistPN[3]->GetZaxis()->SetTitle("#frac{1}{N_{trig}}#frac{d^{2}N_{assoc}}{d#Delta#eta#Delta#varphi} (rad^{-1})");
@@ -590,17 +581,9 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   }
   // if no mixing then divide by convoluted histograms
   else if(listQA){
-    histoTitle = "(+-) mixed | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+
+    if(histoTitle.Contains("shuffled")) histoTitle.ReplaceAll("(+-) shuffled","(+-) convoluted"); 
+    else                                histoTitle.ReplaceAll("(+-)","(+-) convoluted"); 
     
     if(rebinEta > 1 || rebinPhi > 1){
       gHistPN[2]->Rebin2D(rebinEta,rebinPhi);
@@ -686,7 +669,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
       histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
   }
 
-  gHistNP[0] = b->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+  gHistNP[0] = b->GetCorrelationFunctionNP(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
   if(rebinEta > 1 || rebinPhi > 1){
     gHistNP[0]->Rebin2D(rebinEta,rebinPhi);
     gHistNP[0]->Scale(1./(Double_t)(rebinEta*rebinPhi));
@@ -709,19 +692,10 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   //cNP[0]->SaveAs(pngName.Data());
 
   if(listBFShuffled) {
-    histoTitle = "(-+) shuffled | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+
+    histoTitle.ReplaceAll("(-+)","(-+) shuffled"); 
     
-    gHistNP[1] = bShuffled->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+    gHistNP[1] = bShuffled->GetCorrelationFunctionNP(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
     if(rebinEta > 1 || rebinPhi > 1){
       gHistNP[1]->Rebin2D(rebinEta,rebinPhi);
       gHistNP[1]->Scale(1./(Double_t)(rebinEta*rebinPhi));
@@ -745,20 +719,12 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   }
 
   if(listBFMixed) {
-    histoTitle = "(-+) mixed | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
-
+    
+    if(histoTitle.Contains("shuffled")) histoTitle.ReplaceAll("(-+) shuffled","(-+) mixed"); 
+    else                                histoTitle.ReplaceAll("(-+)","(-+) mixed"); 
+    
     // if normalization to trigger then do not divide Event mixing by number of trigger particles
-    gHistNP[2] = bMixed->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+    gHistNP[2] = bMixed->GetCorrelationFunctionNP(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
     if(rebinEta > 1 || rebinPhi > 1){
       gHistNP[2]->Rebin2D(rebinEta,rebinPhi);
       gHistNP[2]->Scale(1./(Double_t)(rebinEta*rebinPhi));
@@ -788,8 +754,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
     //cNP[2]->SaveAs(pngName.Data());
 
     //Correlation function (-+)
-    gHistNP[3] = dynamic_cast<TH2D *>(gHistNP[0]->Clone());
-    gHistNP[3]->Divide(gHistNP[2]);
+    gHistNP[3] = b->GetCorrelationFunction("NP",psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
     gHistNP[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
     if(normToTrig)
       gHistNP[3]->GetZaxis()->SetTitle("#frac{1}{N_{trig}}#frac{d^{2}N_{assoc}}{d#Delta#eta#Delta#varphi} (rad^{-1})");
@@ -812,17 +777,9 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   }
   // if no mixing then divide by convoluted histograms
   else if(listQA){
-    histoTitle = "(-+) mixed | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+
+    if(histoTitle.Contains("shuffled")) histoTitle.ReplaceAll("(-+) shuffled","(-+) convoluted"); 
+    else                                histoTitle.ReplaceAll("(-+)","(-+) convoluted"); 
 
     if(rebinEta > 1 || rebinPhi > 1){
       gHistNP[2]->Rebin2D(rebinEta,rebinPhi);
@@ -909,7 +866,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
       histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
   }
 
-  gHistPP[0] = b->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+  gHistPP[0] = b->GetCorrelationFunctionPP(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
   if(rebinEta > 1 || rebinPhi > 1){
     gHistPP[0]->Rebin2D(rebinEta,rebinPhi);
     gHistPP[0]->Scale(1./(Double_t)(rebinEta*rebinPhi));  
@@ -932,19 +889,10 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   //cPP[0]->SaveAs(pngName.Data());
   
   if(listBFShuffled) {
-    histoTitle = "(++) shuffled | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+
+    histoTitle.ReplaceAll("(++)","(++) shuffled"); 
     
-    gHistPP[1] = bShuffled->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+    gHistPP[1] = bShuffled->GetCorrelationFunctionPP(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
     if(rebinEta > 1 || rebinPhi > 1){
       gHistPP[1]->Rebin2D(rebinEta,rebinPhi);
       gHistPP[1]->Scale(1./(Double_t)(rebinEta*rebinPhi));  
@@ -968,20 +916,12 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   }
 
   if(listBFMixed) {
-    histoTitle = "(++) mixed | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+    if(histoTitle.Contains("shuffled")) histoTitle.ReplaceAll("(++) shuffled","(++) mixed"); 
+    else                                histoTitle.ReplaceAll("(++)","(++) mixed"); 
     
     // if normalization to trigger then do not divide Event mixing by number of trigger particles
-    gHistPP[2] = bMixed->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+    gHistPP[2] = bMixed->GetCorrelationFunctionPP(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
     if(rebinEta > 1 || rebinPhi > 1){
       gHistPP[2]->Rebin2D(rebinEta,rebinPhi);
       gHistPP[2]->Scale(1./(Double_t)(rebinEta*rebinPhi));  
@@ -1011,8 +951,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
     //cPP[2]->SaveAs(pngName.Data());
 
     //Correlation function (++)
-    gHistPP[3] = dynamic_cast<TH2D *>(gHistPP[0]->Clone());
-    gHistPP[3]->Divide(gHistPP[2]);
+    gHistPP[3] = b->GetCorrelationFunction("PP",psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
     gHistPP[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
     if(normToTrig)
       gHistPP[3]->GetZaxis()->SetTitle("#frac{1}{N_{trig}}#frac{d^{2}N_{assoc}}{d#Delta#eta#Delta#varphi} (rad^{-1})");
@@ -1035,17 +974,9 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   }
   // if no mixing then divide by convoluted histograms
   else if(listQA){
-        histoTitle = "(++) mixed | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+
+    if(histoTitle.Contains("shuffled")) histoTitle.ReplaceAll("(++) shuffled","(++) convoluted"); 
+    else                                histoTitle.ReplaceAll("(++)","(++) convoluted"); 
     
     if(rebinEta > 1 || rebinPhi > 1){
       gHistPP[2]->Rebin2D(rebinEta,rebinPhi);
@@ -1130,7 +1061,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
       histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
   } 
 
-  gHistNN[0] = b->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+  gHistNN[0] = b->GetCorrelationFunctionNN(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
   if(rebinEta > 1 || rebinPhi > 1){
     gHistNN[0]->Rebin2D(rebinEta,rebinPhi);
     gHistNN[0]->Scale(1./(Double_t)(rebinEta*rebinPhi));  
@@ -1153,19 +1084,10 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   //cNN[0]->SaveAs(pngName.Data());
 
   if(listBFShuffled) {
-    histoTitle = "(--) shuffled | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+
+    histoTitle.ReplaceAll("(--)","(--) shuffled"); 
     
-    gHistNN[1] = bShuffled->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+    gHistNN[1] = bShuffled->GetCorrelationFunctionNN(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
     if(rebinEta > 1 || rebinPhi > 1){
       gHistNN[1]->Rebin2D(rebinEta,rebinPhi);
       gHistNN[1]->Scale(1./(Double_t)(rebinEta*rebinPhi));  
@@ -1189,20 +1111,12 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   }
 
   if(listBFMixed) {
-    histoTitle = "(--) mixed | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+    if(histoTitle.Contains("shuffled")) histoTitle.ReplaceAll("(--) shuffled","(--) mixed"); 
+    else                                histoTitle.ReplaceAll("(--)","(--) mixed"); 
     
     // if normalization to trigger then do not divide Event mixing by number of trigger particles
-    gHistNN[2] = bMixed->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
+    gHistNN[2] = bMixed->GetCorrelationFunctionNN(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
     if(rebinEta > 1 || rebinPhi > 1){
       gHistNN[2]->Rebin2D(rebinEta,rebinPhi);
       gHistNN[2]->Scale(1./(Double_t)(rebinEta*rebinPhi));  
@@ -1232,8 +1146,7 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
     //cNN[2]->SaveAs(pngName.Data());
 
     //Correlation function (--)
-    gHistNN[3] = dynamic_cast<TH2D *>(gHistNN[0]->Clone());
-    gHistNN[3]->Divide(gHistNN[2]);
+    gHistNN[3] = b->GetCorrelationFunction("NN",psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
     gHistNN[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
     if(normToTrig)
       gHistNN[3]->GetZaxis()->SetTitle("#frac{1}{N_{trig}}#frac{d^{2}N_{assoc}}{d#Delta#eta#Delta#varphi} (rad^{-1})");
@@ -1256,17 +1169,9 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   }
   // if no mixing then divide by convoluted histograms
   else if(listQA){
-        histoTitle = "(--) mixed | Centrality: "; 
-    histoTitle += centralityArray[gCentrality-1]; 
-    histoTitle += "%";
-    if((psiMin == -0.5)&&(psiMax == 0.5))
-      histoTitle += " (-7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o})"; 
-    else if((psiMin == 0.5)&&(psiMax == 1.5))
-      histoTitle += " (37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o})"; 
-    else if((psiMin == 1.5)&&(psiMax == 2.5))
-      histoTitle += " (82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o})"; 
-    else 
-      histoTitle += " (0^{o} < #varphi^{t} - #Psi_{2} < 180^{o})"; 
+
+    if(histoTitle.Contains("shuffled")) histoTitle.ReplaceAll("(--) shuffled","(--) convoluted"); 
+    else                                histoTitle.ReplaceAll("(--)","(--) convoluted"); 
     
     if(rebinEta > 1 || rebinPhi > 1){
       gHistNN[2]->Rebin2D(rebinEta,rebinPhi);
@@ -1343,7 +1248,13 @@ void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, TList *listQA,
   newFileName += Form("%.1f",ptTriggerMax); newFileName += "PtaFrom";
   newFileName += Form("%.1f",ptAssociatedMin); newFileName += "To"; 
   newFileName += Form("%.1f",ptAssociatedMax); 
+
+  newFileName += "_"; 
+  newFileName += Form("%.1f",psiMin);
+  newFileName += "-";   
+  newFileName += Form("%.1f",psiMax);
   newFileName += ".root";
+
   TFile *newFile = TFile::Open(newFileName.Data(),"recreate");
   gHistPN[0]->SetName("gHistPNRaw"); gHistPN[0]->Write();
   gHistNP[0]->SetName("gHistNPRaw"); gHistNP[0]->Write();
@@ -1415,6 +1326,8 @@ void drawCorrelationFunctions(const char* lhcPeriod = "LHC10h",
                              const char* gEventPlaneEstimator = "VZERO",
                              Int_t gCentrality = 1,
                              Double_t psiMin = -0.5, Double_t psiMax = 3.5,
+                             Double_t vertexZMin = -10.,
+                             Double_t vertexZMax = 10.,
                              Double_t ptTriggerMin = -1.,
                              Double_t ptTriggerMax = -1.,
                              Double_t ptAssociatedMin = -1.,
@@ -1427,7 +1340,7 @@ void drawCorrelationFunctions(const char* lhcPeriod = "LHC10h",
   TGaxis::SetMaxDigits(3);
 
   //Get the input file
-  TString filename = lhcPeriod; 
+  /* TString filename = lhcPeriod; 
   filename += "/Centrality"; filename += gCentralityEstimator;
   filename += "_Bit"; filename += gBit;
   filename += "_"; filename += gEventPlaneEstimator;
@@ -1435,8 +1348,9 @@ void drawCorrelationFunctions(const char* lhcPeriod = "LHC10h",
   filename += Form("%.1f",ptTriggerMin); filename += "To"; 
   filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
   filename += Form("%.1f",ptAssociatedMin); filename += "To"; 
-  filename += Form("%.1f",ptAssociatedMax); 
-  filename += "correlationFunction.Centrality";
+  filename += Form("%.1f",ptAssociatedMax); */
+
+  TString filename = "correlationFunction.Centrality";
   filename += gCentrality; filename += ".Psi";
   if((psiMin == -0.5)&&(psiMax == 0.5)) filename += "InPlane.Ptt";
   else if((psiMin == 0.5)&&(psiMax == 1.5)) filename += "Intermediate.Ptt";
@@ -1447,6 +1361,11 @@ void drawCorrelationFunctions(const char* lhcPeriod = "LHC10h",
   filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
   filename += Form("%.1f",ptAssociatedMin); filename += "To"; 
   filename += Form("%.1f",ptAssociatedMax); 
+  
+  filename += "_"; 
+  filename += Form("%.1f",psiMin);
+  filename += "-";   
+  filename += Form("%.1f",psiMax);
   filename += ".root";  
 
   //Open the file
@@ -1527,7 +1446,7 @@ void drawCorrelationFunctions(const char* lhcPeriod = "LHC10h",
   pngName += ".PositiveNegative.png";
   cPN->SaveAs(pngName.Data());
   if(kFit)
-    fitCorrelationFunctions(gCentrality, psiMin, psiMax,
+    fitCorrelationFunctions(gCentrality, psiMin, psiMax,vertexZMin, vertexZMax,
                            ptTriggerMin,ptTriggerMax,
                            ptAssociatedMin, ptAssociatedMax,gHistPN);
 
@@ -1572,7 +1491,7 @@ void drawCorrelationFunctions(const char* lhcPeriod = "LHC10h",
   cNP->SaveAs(pngName.Data());
 
   if(kFit)
-    fitCorrelationFunctions(gCentrality, psiMin, psiMax,
+    fitCorrelationFunctions(gCentrality, psiMin, psiMax,vertexZMin, vertexZMax,
                            ptTriggerMin,ptTriggerMax,
                            ptAssociatedMin, ptAssociatedMax,gHistNP);
 
@@ -1617,7 +1536,7 @@ void drawCorrelationFunctions(const char* lhcPeriod = "LHC10h",
   cPP->SaveAs(pngName.Data());
 
   if(kFit)
-    fitCorrelationFunctions(gCentrality, psiMin, psiMax,
+    fitCorrelationFunctions(gCentrality, psiMin, psiMax,vertexZMin, vertexZMax,
                            ptTriggerMin,ptTriggerMax,
                            ptAssociatedMin, ptAssociatedMax,gHistPP);
 
@@ -1662,7 +1581,7 @@ void drawCorrelationFunctions(const char* lhcPeriod = "LHC10h",
   cNN->SaveAs(pngName.Data());
 
   if(kFit)
-    fitCorrelationFunctions(gCentrality, psiMin, psiMax,
+    fitCorrelationFunctions(gCentrality, psiMin, psiMax,vertexZMin, vertexZMax,
                            ptTriggerMin,ptTriggerMax,
                            ptAssociatedMin, ptAssociatedMax,gHistNN);
 }
@@ -1678,6 +1597,8 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
                     Int_t gCentrality = 1,
                     Double_t psiMin = -0.5, 
                     Double_t psiMax = 3.5,
+                    Double_t vertexZMin = -10., 
+                    Double_t vertexZMax = 10.,
                     Double_t ptTriggerMin = -1.,
                     Double_t ptTriggerMax = -1.,
                     Double_t ptAssociatedMin = -1.,
@@ -1689,7 +1610,7 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
   TGaxis::SetMaxDigits(3);
 
   //Get the input file
-  TString filename = lhcPeriod; 
+  /*TString filename = lhcPeriod; 
   filename += "/Centrality"; filename += gCentralityEstimator;
   filename += "_Bit"; filename += gBit;
   filename += "_"; filename += gEventPlaneEstimator;
@@ -1697,8 +1618,9 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
   filename += Form("%.1f",ptTriggerMin); filename += "To"; 
   filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
   filename += Form("%.1f",ptAssociatedMin); filename += "To"; 
-  filename += Form("%.1f",ptAssociatedMax); 
-  filename += "correlationFunction.Centrality";
+  filename += Form("%.1f",ptAssociatedMax); */
+
+  TString filename = "correlationFunction.Centrality";
   filename += gCentrality; filename += ".Psi";
   if((psiMin == -0.5)&&(psiMax == 0.5)) filename += "InPlane.Ptt";
   else if((psiMin == 0.5)&&(psiMax == 1.5)) filename += "Intermediate.Ptt";
@@ -1709,6 +1631,11 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
   filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
   filename += Form("%.1f",ptAssociatedMin); filename += "To"; 
   filename += Form("%.1f",ptAssociatedMax); 
+  
+  filename += "_"; 
+  filename += Form("%.1f",psiMin);
+  filename += "-";   
+  filename += Form("%.1f",psiMax);
   filename += ".root";  
 
   //Open the file
@@ -1800,7 +1727,8 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
     gHistPNprojection = new TH1D("gHistPNprojection","",gHistPN->GetNbinsY(),gHistPN->GetYaxis()->GetXmin(),gHistPN->GetYaxis()->GetXmax());
     for(Int_t iBinY = 1; iBinY <= gHistPN->GetNbinsY(); iBinY++) {
       sum = 0.; gError = 0.0; nCounter = 0;
-      for(Int_t iBinX = 1; iBinX <= gHistPN->GetNbinsX(); iBinX++) {
+      for(Int_t iBinX = binMin; iBinX <= binMax; iBinX++) {
+      //for(Int_t iBinX = 1; iBinX <= gHistPN->GetNbinsX(); iBinX++) {
        sum += gHistPN->GetBinContent(iBinX,iBinY);
        if(gHistPN->GetBinContent(iBinX,iBinY) != 0.) nCounter += 1;
         Double_t exy = gHistPN->GetCellError(iBinX,iBinY);
@@ -1885,7 +1813,8 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
     gHistNPprojection = new TH1D("gHistNPprojection","",gHistNP->GetNbinsX(),gHistNP->GetXaxis()->GetXmin(),gHistNP->GetXaxis()->GetXmax());
     for(Int_t iBinX = 1; iBinX <= gHistNP->GetNbinsX(); iBinX++) {
       sum = 0.; gError = 0.0; nCounter = 0;
-      for(Int_t iBinY = 1; iBinY <= gHistNP->GetNbinsY(); iBinY++) {
+      for(Int_t iBinY = binMin; iBinY <= binMax; iBinY++) {
+      //for(Int_t iBinY = 1; iBinY <= gHistNP->GetNbinsY(); iBinY++) {
        sum += gHistNP->GetBinContent(iBinX,iBinY);
        if(gHistNP->GetBinContent(iBinX,iBinY) != 0.) nCounter += 1;
         Double_t exy = gHistNP->GetCellError(iBinX,iBinY);
@@ -1909,7 +1838,8 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
     gHistNPprojection = new TH1D("gHistNPprojection","",gHistNP->GetNbinsY(),gHistNP->GetYaxis()->GetXmin(),gHistNP->GetYaxis()->GetXmax());
     for(Int_t iBinY = 1; iBinY <= gHistNP->GetNbinsY(); iBinY++) {
       sum = 0.; gError = 0.0; nCounter = 0;
-      for(Int_t iBinX = 1; iBinX <= gHistNP->GetNbinsX(); iBinX++) {
+      for(Int_t iBinX = binMin; iBinX <= binMax; iBinX++) {
+       //for(Int_t iBinX = 1; iBinX <= gHistNP->GetNbinsX(); iBinX++) {
        sum += gHistNP->GetBinContent(iBinX,iBinY);
        if(gHistNP->GetBinContent(iBinX,iBinY) != 0.) nCounter += 1;
         Double_t exy = gHistNP->GetCellError(iBinX,iBinY);
@@ -1993,7 +1923,8 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
     gHistPPprojection = new TH1D("gHistPPprojection","",gHistPP->GetNbinsX(),gHistPP->GetXaxis()->GetXmin(),gHistPP->GetXaxis()->GetXmax());
     for(Int_t iBinX = 1; iBinX <= gHistPP->GetNbinsX(); iBinX++) {
       sum = 0.; gError = 0.0; nCounter = 0;
-      for(Int_t iBinY = 1; iBinY <= gHistPP->GetNbinsY(); iBinY++) {
+      for(Int_t iBinY = binMin; iBinY <= binMax; iBinY++) {
+       //for(Int_t iBinY = 1; iBinY <= gHistPP->GetNbinsY(); iBinY++) {
        sum += gHistPP->GetBinContent(iBinX,iBinY);
        if(gHistPP->GetBinContent(iBinX,iBinY) != 0.) nCounter += 1;
         Double_t exy = gHistPP->GetCellError(iBinX,iBinY);
@@ -2017,7 +1948,8 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
     gHistPPprojection = new TH1D("gHistPPprojection","",gHistPP->GetNbinsY(),gHistPP->GetYaxis()->GetXmin(),gHistPP->GetYaxis()->GetXmax());
     for(Int_t iBinY = 1; iBinY <= gHistPP->GetNbinsY(); iBinY++) {
       sum = 0.; gError = 0.0; nCounter = 0;
-      for(Int_t iBinX = 1; iBinX <= gHistPP->GetNbinsX(); iBinX++) {
+      for(Int_t iBinX = binMin; iBinX <= binMax; iBinX++) {
+       //for(Int_t iBinX = 1; iBinX <= gHistPP->GetNbinsX(); iBinX++) {
        sum += gHistPP->GetBinContent(iBinX,iBinY);
        if(gHistPP->GetBinContent(iBinX,iBinY) != 0.) nCounter += 1;
         Double_t exy = gHistPP->GetCellError(iBinX,iBinY);
@@ -2101,7 +2033,8 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
     gHistNNprojection = new TH1D("gHistNNprojection","",gHistNN->GetNbinsX(),gHistNN->GetXaxis()->GetXmin(),gHistNN->GetXaxis()->GetXmax());
     for(Int_t iBinX = 1; iBinX <= gHistNN->GetNbinsX(); iBinX++) {
       sum = 0.; gError = 0.0; nCounter = 0;
-      for(Int_t iBinY = 1; iBinY <= gHistNN->GetNbinsY(); iBinY++) {
+      for(Int_t iBinY = binMin; iBinY <= binMax; iBinY++) {
+       //for(Int_t iBinY = 1; iBinY <= gHistNN->GetNbinsY(); iBinY++) {
        sum += gHistNN->GetBinContent(iBinX,iBinY);
        if(gHistNN->GetBinContent(iBinX,iBinY) != 0.) nCounter += 1;
         Double_t exy = gHistNN->GetCellError(iBinX,iBinY);
@@ -2125,7 +2058,8 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
     gHistNNprojection = new TH1D("gHistNNprojection","",gHistNN->GetNbinsY(),gHistNN->GetYaxis()->GetXmin(),gHistNN->GetYaxis()->GetXmax());
     for(Int_t iBinY = 1; iBinY <= gHistNN->GetNbinsY(); iBinY++) {
       sum = 0.; gError = 0.0; nCounter = 0;
-      for(Int_t iBinX = 1; iBinX <= gHistNN->GetNbinsX(); iBinX++) {
+      for(Int_t iBinX = binMin; iBinX <= binMax; iBinX++) {
+       //for(Int_t iBinX = 1; iBinX <= gHistNN->GetNbinsX(); iBinX++) {
        sum += gHistNN->GetBinContent(iBinX,iBinY);
        if(gHistNN->GetBinContent(iBinX,iBinY) != 0.) nCounter += 1;
         Double_t exy = gHistNN->GetCellError(iBinX,iBinY);
@@ -2198,6 +2132,7 @@ void drawProjections(const char* lhcPeriod = "LHC10h",
 //____________________________________________________________//
 void fitCorrelationFunctions(Int_t gCentrality = 1,
                             Double_t psiMin = -0.5, Double_t psiMax = 3.5,
+                            Double_t vertexZMin = -10.,Double_t vertexZMax = 10.,
                             Double_t ptTriggerMin = -1.,
                             Double_t ptTriggerMax = -1.,
                             Double_t ptAssociatedMin = -1.,
@@ -2319,6 +2254,12 @@ void fitCorrelationFunctions(Int_t gCentrality = 1,
   newFileName += Form("%.1f",ptTriggerMax); newFileName += "PtaFrom";
   newFileName += Form("%.1f",ptAssociatedMin); newFileName += "To"; 
   newFileName += Form("%.1f",ptAssociatedMax); 
+
+  newFileName += "_"; 
+  newFileName += Form("%.1f",psiMin);
+  newFileName += "-";   
+  newFileName += Form("%.1f",psiMax); 
+
   newFileName += ".root";
   TFile *newFile = TFile::Open(newFileName.Data(),"recreate");
   gHist->Write();