]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Coverity fix and addition of new macros for the fluctuation studies
authorpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 10 Feb 2011 13:25:55 +0000 (13:25 +0000)
committerpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 10 Feb 2011 13:25:55 +0000 (13:25 +0000)
PWG2/EBYE/Fluctuations/macro/calculateNuDyn.C [new file with mode: 0644]
PWG2/EBYE/Fluctuations/macro/drawCentralityDependence.C [new file with mode: 0644]
PWG2/EBYE/Fluctuations/macro/drawEnergyDependence.C [new file with mode: 0644]
PWG2/EBYE/Fluctuations/macro/drawMultiplicity.C [new file with mode: 0644]
PWG2/EBYE/Fluctuations/macro/drawNpartDependence.C [new file with mode: 0644]
PWG2/EBYE/Fluctuations/macro/drawScaledNpartDependence.C [new file with mode: 0644]
PWG2/EBYE/Fluctuations/macro/drawSystematics.C [new file with mode: 0644]
PWG2/SPECTRA/AliProtonAnalysisBase.cxx

diff --git a/PWG2/EBYE/Fluctuations/macro/calculateNuDyn.C b/PWG2/EBYE/Fluctuations/macro/calculateNuDyn.C
new file mode 100644 (file)
index 0000000..556b28c
--- /dev/null
@@ -0,0 +1,136 @@
+const Int_t nCentralityBins = 20;
+
+void calculateNuDyn(Int_t runNumber = 1) {
+  //macro to read the output of the fluctuations task
+  //calculate nu_dyn for each centrality bin 
+  //and draw the centrality dependence
+  TString filename = "mergedOutputCentrality.Pass1_4Plus."; filename += runNumber; filename += ".root";
+  TString outputFileName = "output."; outputFileName += runNumber; outputFileName += ".txt";
+
+  //===============================================================//
+  Double_t nEvents[nCentralityBins] = {1.,1.,1.,1.,1.,1.,1.,1.,1.};
+  Double_t nMeanPlus[nCentralityBins] = {1.,1.,1.,1.,1.,1.,1.,1.,1.};
+  Double_t nMeanMinus[nCentralityBins] = {1.,1.,1.,1.,1.,1.,1.,1.,1.};
+  Double_t gNuStat[nCentralityBins] = {1.,1.,1.,1.,1.,1.,1.,1.,1.};
+  Double_t gNu[nCentralityBins] = {1.,1.,1.,1.,1.,1.,1.,1.,1.};
+  Double_t gNuDyn[nCentralityBins] = {1.,1.,1.,1.,1.,1.,1.,1.,1.};
+  //===============================================================//
+
+  //_______________________________________________________________//
+  //Open the input file
+  TFile *f = TFile::Open(filename.Data());
+  if(!f->IsOpen()) {
+    Printf("File not found!!!");
+    break;
+  }
+
+  //_______________________________________________________________//
+  //Get the TDirectoryFile
+  TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("outputFluctuationAnalysis.root"));
+  if(!dir) {
+    Printf("TDirectoryFile not found!!!");
+    break;
+  }
+
+  //_______________________________________________________________//
+  //Get the TList
+  TList *list = dynamic_cast<TList *>(dir->Get("fluctuationsOutput"));
+  if(!list) {
+    Printf("TList not found!!!");
+    break;
+  }
+
+  //_______________________________________________________________//
+  //Get the histograms
+  TH1F *gHistEventStats = dynamic_cast<TH1F *>(list->FindObject("fHistEventStats"));
+  PrintEventStats(gHistEventStats);
+  TH1F *gHistCentrality = dynamic_cast<TH1F *>(list->FindObject("fHistCentrality"));
+  GetCentralityStats(gHistCentrality,nEvents);
+
+  TH2F *gHistNPlusNMinus[nCentralityBins];
+  TH1F *gHistNetCharge[nCentralityBins];
+  TCanvas *c[nCentralityBins];
+  TString histName;
+
+  ofstream outputAscii;
+  outputAscii.open(outputFileName.Data());
+
+  for(Int_t iBin = 1; iBin <= nCentralityBins; iBin++) {
+    histName = "fHistNPlusNMinusCentrality"; histName += iBin;
+    gHistNPlusNMinus[iBin-1] = dynamic_cast<TH2F *>(list->FindObject(histName.Data()));
+    histName = "fHistNetChargeCentrality"; histName += iBin;
+    gHistNetCharge[iBin-1] = new TH1F(histName.Data(),
+                                     "Net Charge;#Delta Q = N_{+} - N_{-};Entries",100,-100,100);
+    gHistNetCharge[iBin-1]->SetStats(kFALSE);
+    //Printf("%s",gHistNPlusNMinus[iBin-1]->GetName());
+    if(nEvents[iBin-1] != 0) {
+      gNuDyn[iBin-1] = GetNuDun(gHistNPlusNMinus[iBin-1],
+                               gHistNetCharge[iBin-1],
+                               nEvents[iBin-1]);
+      cout<<"Centrality: "<<iBin<<" - nuDyn: "<<gNuDyn[iBin-1]<<endl;
+      outputAscii << iBin<<" "<<gNuDyn[iBin-1]<<" "<<gHistNetCharge[iBin-1]->GetMean()<<" "<<gHistNetCharge[iBin-1]->GetRMS()<<" "<<nEvents[iBin-1]<<endl;
+
+      //c[iBin-1] = new TCanvas(histName.Data(),histName.Data(),
+      //(iBin-1)*50,(iBin-1)*50,600,500);
+      //c[iBin-1]->SetFillColor(10); c[iBin-1]->SetHighLightColor(10);
+      //gHistNetCharge[iBin-1]->Draw("E");
+    }//centrality with events
+  }//centrality loop
+  outputAscii.close();
+}
+
+//_______________________________________________________________//
+void PrintEventStats(TH1F *gHistEventStats) {
+  Printf("================EVENT STATISTICS================");
+  Printf("Total events: %d",(Int_t)(gHistEventStats->GetBinContent(1)));  
+  Printf("Total triggered events: %d",(Int_t)(gHistEventStats->GetBinContent(2)));
+  Printf("Total events with proper vertex: %d",(Int_t)(gHistEventStats->GetBinContent(3)));  
+  Printf("Total events analyzed: %d",(Int_t)(gHistEventStats->GetBinContent(4)));
+  Printf("================EVENT STATISTICS================\n\n\n");
+
+  return;
+}
+
+//_______________________________________________________________//
+void GetCentralityStats(TH1F *gHistCentrality,
+                       Double_t *nEvents) {
+  Printf("================CENTRALITY STATISTICS================");
+  for(Int_t iBin = 1; iBin <= gHistCentrality->GetNbinsX(); iBin++) {
+    nEvents[iBin-1] = gHistCentrality->GetBinContent(iBin);  
+    Printf("Centrality %d: %d",iBin,
+          (Int_t)(gHistCentrality->GetBinContent(iBin)));  
+  }
+  Printf("================CENTRALITY STATISTICS================");
+
+  return;
+}
+
+//_______________________________________________________________//
+Double_t GetNuDun(TH2F *gHistNPlusNMinus,
+                 TH1F *gHistNetCharge,
+                 Int_t numberOfEvents) {
+  Double_t avgNPlus = gHistNPlusNMinus->GetMean(1);
+  Double_t avgNMinus = gHistNPlusNMinus->GetMean(2);
+  Double_t gNuStat = (1./avgNPlus) + (1./avgNMinus);
+  Double_t gNuDyn = 0., gNu = 0.;
+
+  for(Int_t iBinX = 1; iBinX <= gHistNPlusNMinus->GetNbinsX(); iBinX++) {
+    for(Int_t iBinY = 1; iBinY <= gHistNPlusNMinus->GetNbinsY(); iBinY++) {
+      if(gHistNPlusNMinus->GetBinContent(iBinX,iBinY) != 0) {
+       for(Int_t nEvents = 0; nEvents < gHistNPlusNMinus->GetBinContent(iBinX,iBinY); nEvents++) {
+         Int_t nPlus = (Int_t)(gHistNPlusNMinus->GetXaxis()->GetBinCenter(iBinX));
+         Int_t nMinus = (Int_t)(gHistNPlusNMinus->GetYaxis()->GetBinCenter(iBinY));
+         if((avgNPlus != 0)&&(avgNMinus != 0)) {
+           gHistNetCharge->Fill(nPlus-nMinus);
+           gNu += TMath::Power(((nPlus/avgNPlus)-(nMinus/avgNMinus)),2); 
+         }
+       }
+      }
+    }
+  }
+
+  gNu /= numberOfEvents;
+  gNuDyn = gNu - gNuStat;
+
+  return gNuDyn;
+}
diff --git a/PWG2/EBYE/Fluctuations/macro/drawCentralityDependence.C b/PWG2/EBYE/Fluctuations/macro/drawCentralityDependence.C
new file mode 100644 (file)
index 0000000..3c2752d
--- /dev/null
@@ -0,0 +1,232 @@
+//=======================================================================//
+//Macro to draw the main results of the charge fluctuation analysis:
+//=======================================================================//
+
+//+++++++++++++++++++++GLOBAL VARIABLES+++++++++++++++++++++//
+const Int_t nCentralityBins = 20;
+//Double_t gCentralityPercentile[nCentralityBins] = {2.5,7.5,12.5,17.5,22.5,27.5,32.5,37.5,42.5,47.5,52.5,57.5,62.5,67.5,72.5,77.5,82.5,87.5,92.5,97.5};
+//Double_t gCentralityPercentileError[nCentralityBins] = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5};
+Double_t gCentralityPercentile[nCentralityBins] = {5.,15.,25.,35.,45.,55.,65.,75.,85.,95.};
+Double_t gCentralityPercentileError[nCentralityBins] = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5};
+
+//================================ALICE================================//
+Double_t gNuDynALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
+Double_t gNuDynALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+Double_t gNetChargeALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
+Double_t gNetChargeALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+Double_t gNetChargeRmsALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
+Double_t gNetChargeRmsALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+//================================ALICE================================//
+//+++++++++++++++++++++END OF VARIABLES+++++++++++++++++++++//
+
+//_____________________________________________________//
+void drawCentralityDependence(const char*resultPath = "../LHC10h/Pass1_4Plus/20CentralityBins/") {
+  //Draws the nu_dyn vs centrality percentile
+  SetDataPoints(resultPath);
+  //================================================//
+  //ALICE PbPb @ 2.76 TeV
+  TGraphErrors *grALICEDataNudyn = new TGraphErrors(nCentralityBins,
+                                                   gCentralityPercentile,
+                                                   gNuDynALICEData,
+                                                   gCentralityPercentileError,
+                                                   gNuDynALICEDataError);
+  grALICEDataNudyn->SetMarkerStyle(20);
+  grALICEDataNudyn->SetMarkerColor(2);
+
+  TGraphErrors *grALICEDataNetCharge = new TGraphErrors(nCentralityBins,
+                                                       gCentralityPercentile,
+                                                       gNetChargeALICEData,
+                                                       gCentralityPercentileError,
+                                                       gNetChargeALICEDataError);
+  grALICEDataNetCharge->SetMarkerStyle(20);
+  grALICEDataNetCharge->SetMarkerColor(2);
+
+  TGraphErrors *grALICEDataNetChargeRms = new TGraphErrors(nCentralityBins,
+                                                          gCentralityPercentile,
+                                                          gNetChargeRmsALICEData,
+                                                          gCentralityPercentileError,
+                                                          gNetChargeRmsALICEDataError);
+  grALICEDataNetChargeRms->SetMarkerStyle(20);
+  grALICEDataNetChargeRms->SetMarkerColor(2);
+  
+  //_____________________________________________________//
+  //Draw the results
+  //_____________________________________________________//
+  TLatex *latex = new TLatex();
+  latex->SetTextSize(0.035);
+
+  //====================================//
+  //Results vs centrality
+  TH2F *gEmpty1 = new TH2F("gEmpty1",
+                          ";Centrality percentile;",
+                          nCentralityBins,0,100,10000,-0.1,50.);
+  gEmpty1->SetStats(kFALSE);
+  gEmpty1->GetYaxis()->SetTitleOffset(1.5);
+  gEmpty1->GetXaxis()->SetTitleOffset(1.5);
+  gEmpty1->GetYaxis()->SetNdivisions(10);
+  gEmpty1->GetXaxis()->SetNdivisions(10);
+
+  TF1 *f1 = new TF1("f1","0",0,1000);
+  f1->SetLineColor(1); f1->SetLineStyle(3); f1->SetLineWidth(2);
+
+  //============================================================//
+  //nu_{dyn.}
+  TCanvas *c1 = new TCanvas("c1","Centrality dependence: nu_dyn",
+                           0,0,500,500);
+  c1->SetFillColor(10); c1->SetHighLightColor(10);
+  c1->SetLeftMargin(0.15); c1->SetBottomMargin(0.15);
+  c1->SetGridx(); c1->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(-0.08,0.01);
+  gEmpty1->GetYaxis()->SetTitle("#nu_{dyn.}");
+  gEmpty1->DrawCopy();
+  f1->Draw("same");
+  grALICEDataNudyn->Draw("P");
+
+  DrawMarker(47., 0.0043, 20, 1.6, 2);
+  latex->DrawLatex(52.,0.0035,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
+
+  c1->SaveAs("centralityPercentileDependenceNuDyn.png");
+
+  //============================================================//
+  //net charge
+  TCanvas *c2 = new TCanvas("c2","Centrality dependence: net charge",
+                           100,100,500,500);
+  c2->SetFillColor(10); c2->SetHighLightColor(10);
+  c2->SetLeftMargin(0.15); c2->SetBottomMargin(0.15);
+  c2->SetGridx(); c2->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(0.0,10.0);
+  gEmpty1->GetYaxis()->SetTitle("#LT #Delta Q = N_{+} - N_{-}#GT");
+  gEmpty1->DrawCopy();
+  grALICEDataNetCharge->Draw("P");
+
+  DrawMarker(47., 8.3, 20, 1.6, 2);
+  latex->DrawLatex(52.,8.1,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
+
+  c2->SaveAs("centralityPercentileDependenceNetCharge.png");
+
+  //============================================================//
+  //rms net charge
+  TCanvas *c3 = new TCanvas("c3","Centrality dependence: net charge rms",
+                           200,200,500,500);
+  c3->SetFillColor(10); c3->SetHighLightColor(10);
+  c3->SetLeftMargin(0.15); c3->SetBottomMargin(0.15);
+  c3->SetGridx(); c3->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(0.0,40.0);
+  gEmpty1->GetYaxis()->SetTitle("#sigma_{#Delta Q}");
+  gEmpty1->DrawCopy();
+  grALICEDataNetChargeRms->Draw("P");
+
+  DrawMarker(47., 38.3, 20, 1.6, 2);
+  latex->DrawLatex(52.,38.1,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
+
+  c3->SaveAs("centralityPercentileDependenceNetChargeRms.png");
+}
+
+//_______________________________________________________________//
+void SetDataPoints(const char* resultPath) {
+  //Calculate the mean and the statistical error of the data points
+  const Int_t nRuns = 7;
+  Double_t nuDyn[nRuns][nCentralityBins];
+  Double_t gNetCharge[nRuns][nCentralityBins];
+  Double_t gNetChargeRms[nRuns][nCentralityBins];
+  Double_t nuDyn[nRuns][nCentralityBins];
+  Int_t nEvents[nRuns][nCentralityBins];
+  Int_t nRunNumbers[nRuns] = {137161,137431,137549,
+                             137595,137638,137639,137693};
+  Int_t gCentrality;
+  Double_t netChargeValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                          0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+  Double_t netChargeValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,
+                                                   0.,0.,0.,0.,0.,0.,0.,0.,
+                                                   0.,0.,0.,0.};
+  Double_t netChargeRmsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,
+                                                 0.,0.,0.,0.,0.,0.,0.,
+                                                 0.,0.,0.,0.,0.,0.};
+  Double_t netChargeRmsValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,
+                                                      0.,0.,0.,0.,0.,0.,0.,0.,
+                                                   0.,0.,0.,0.};
+  Double_t nuDynValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                          0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+  Double_t nuDynValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                               0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+  Double_t nEventsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                            0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+
+  TString inputFileName;
+  for(Int_t iRun = 0; iRun < nRuns; iRun++) {
+    ifstream inputAscii;
+    Printf("Adding run %d",nRunNumbers[iRun]);
+    inputFileName = resultPath;
+    inputFileName += "/output."; inputFileName += nRunNumbers[iRun];
+    inputFileName += ".txt";
+
+    //Printf("Filename: %s",inputFileName.Data());
+    inputAscii.open(inputFileName.Data());
+    for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
+      inputAscii>>gCentrality>>nuDyn[iRun][iCentrality]>>gNetCharge[iRun][iCentrality]>>gNetChargeRms[iRun][iCentrality]>>nEvents[iRun][iCentrality];
+      //cout<<nuDyn[iRun][iCentrality]<<" "<<nEvents[iRun][iCentrality]<<endl;
+    }
+    inputAscii.close();
+  }
+
+  Int_t nRunCounter = 0;
+  for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
+    for(Int_t iRun = 0; iRun < nRuns; iRun++) {
+      nuDynValues[iCentrality] += nuDyn[iRun][iCentrality]*nEvents[iRun][iCentrality];
+      netChargeValues[iCentrality] += gNetCharge[iRun][iCentrality]*nEvents[iRun][iCentrality];
+      netChargeRmsValues[iCentrality] += gNetChargeRms[iRun][iCentrality]*nEvents[iRun][iCentrality];
+      nEventsValues[iCentrality] += nEvents[iRun][iCentrality];
+    }
+
+    if(nEventsValues[iCentrality] != 0) {
+      nRunCounter += 1;
+
+      netChargeValues[iCentrality] /= nEventsValues[iCentrality];
+      netChargeRmsValues[iCentrality] /= nEventsValues[iCentrality];
+      nuDynValues[iCentrality] /= nEventsValues[iCentrality];
+    }
+    else {
+      netChargeValues[iCentrality] = 999.;
+      netChargeRmsValues[iCentrality] = 999.;
+      nuDynValues[iCentrality] = 999.;
+    }
+
+    gNetChargeALICEData[iCentrality] = netChargeValues[iCentrality];
+    gNetChargeRmsALICEData[iCentrality] = netChargeRmsValues[iCentrality];
+    gNuDynALICEData[iCentrality] = nuDynValues[iCentrality];
+  }
+
+  ofstream outputAscii;
+  outputAscii.open("output.txt");
+  for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
+    for(Int_t iRun = 0; iRun < nRuns; iRun++) {
+      netChargeValuesError[iCentrality] += TMath::Power((netChargeValues[iCentrality]-gNetCharge[iRun][iCentrality]),2);
+      netChargeRmsValuesError[iCentrality] += TMath::Power((netChargeRmsValues[iCentrality]-gNetChargeRms[iRun][iCentrality]),2);
+      nuDynValuesError[iCentrality] += TMath::Power((nuDynValues[iCentrality]-nuDyn[iRun][iCentrality]),2);
+    }
+    gNetChargeALICEDataError[iCentrality] = TMath::Sqrt(netChargeValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
+    gNetChargeRmsALICEDataError[iCentrality] = TMath::Sqrt(netChargeRmsValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
+    gNuDynALICEDataError[iCentrality] = TMath::Sqrt(nuDynValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
+    Printf("Centrality: %d - nu_dyn: %lf +- %lf - Net charge: %lf +- %lf - RMS: %lf - %lf",iCentrality+1,
+          gNuDynALICEData[iCentrality],
+          gNuDynALICEDataError[iCentrality],
+          gNetChargeALICEData[iCentrality],
+          gNetChargeALICEDataError[iCentrality],
+          gNetChargeRmsALICEData[iCentrality],
+          gNetChargeRmsALICEDataError[iCentrality]);
+
+    outputAscii<<iCentrality+1<<" "<<gNuDynALICEData[iCentrality]<<" "<<gNuDynALICEDataError[iCentrality]<<" "<<gNetChargeALICEData[iCentrality]<<" "<<gNetChargeALICEDataError[iCentrality]<<" "<<gNetChargeRmsALICEData[iCentrality]<<" "<<gNetChargeRmsALICEDataError[iCentrality]<<endl;
+  }
+  outputAscii.close();
+
+}
+
+
+//_______________________________________________________________//
+void DrawMarker(Double_t x, Double_t y, Int_t style, 
+               Double_t size, Int_t color) {
+  TMarker *m = new TMarker(x,y,style);
+  m->SetMarkerSize(size);
+  m->SetMarkerColor(color);
+  m->Draw();
+}
diff --git a/PWG2/EBYE/Fluctuations/macro/drawEnergyDependence.C b/PWG2/EBYE/Fluctuations/macro/drawEnergyDependence.C
new file mode 100644 (file)
index 0000000..04f2949
--- /dev/null
@@ -0,0 +1,117 @@
+void drawEnergyDependence() {
+  //Macro to draw the energy dependence of the nu_dyn
+
+  //================================ALICE================================//
+  Double_t gNuDynALICEData[1] = {-0.000991451};
+  Double_t gNuDynALICEDataStatError[1] = {3.06304e-05};
+
+  Double_t gALICEEnergy[1] = {2760.};
+  Double_t gALICEEnergyError[1] = {10.};
+
+  TGraphErrors *grNuDynALICEData = new TGraphErrors(1,gALICEEnergy,
+                                                   gNuDynALICEData,
+                                                   gALICEEnergyError,
+                                                   gNuDynALICEDataStatError);
+  grNuDynALICEData->SetMarkerStyle(20);
+  grNuDynALICEData->SetMarkerColor(2);
+  grNuDynALICEData->SetMarkerSize(1.4);
+
+  //================================CERES================================//
+  Double_t gNuDynCERESData[3] = {-0.00006,-0.00069,-0.00108};
+  Double_t gNuDynCERESDataStatError[3] = {5.0e-05,5.0e-05,5.0e-05};
+
+  Double_t gCERESEnergy[3] = {7.8,12.3,17.3};
+  Double_t gCERESEnergyError[3] = {0.5,0.5,0.5};
+
+  TGraphErrors *grNuDynCERESData = new TGraphErrors(3,gCERESEnergy,
+                                                   gNuDynCERESData,
+                                                   gCERESEnergyError,
+                                                   gNuDynCERESDataStatError);
+  grNuDynCERESData->SetMarkerStyle(23);
+  grNuDynCERESData->SetMarkerColor(1);
+  grNuDynCERESData->SetMarkerSize(1.4);
+
+  //================================STAR================================//
+  Double_t gNuDynSTARData[4] = {-0.00113,-0.00147,-0.00122,-0.00163};
+  Double_t gNuDynSTARDataStatError[4] = {0.00026,0.00018,0.00014,7e-05};
+
+  Double_t gSTAREnergy[4] = {19.6,62.4,130.,200.};
+  Double_t gSTAREnergyError[4] = {0.5,0.5,0.5,0.5};
+
+  TGraphErrors *grNuDynSTARData = new TGraphErrors(4,gSTAREnergy,
+                                                  gNuDynSTARData,
+                                                  gSTAREnergyError,
+                                                  gNuDynSTARDataStatError);
+  grNuDynSTARData->SetMarkerStyle(29);
+  grNuDynSTARData->SetMarkerColor(3);
+  grNuDynSTARData->SetMarkerSize(1.6);
+
+  //================================PHENIX================================//
+  Double_t gNuDynPHENIXData[1] = {-0.00086};
+  Double_t gNuDynPHENIXDataStatError[1] = {0.00038};
+
+  Double_t gPHENIXEnergy[1] = {150.};
+  Double_t gPHENIXEnergyError[4] = {0.5};
+
+  TGraphErrors *grNuDynPHENIXData = new TGraphErrors(1,gPHENIXEnergy,
+                                                  gNuDynPHENIXData,
+                                                  gPHENIXEnergyError,
+                                                  gNuDynPHENIXDataStatError);
+  grNuDynPHENIXData->SetMarkerStyle(21);
+  grNuDynPHENIXData->SetMarkerColor(4);
+  grNuDynPHENIXData->SetMarkerSize(1.2);
+
+  //_____________________________________________________//
+  //Draw the results
+  //_____________________________________________________//
+  TLatex *latex = new TLatex();
+  latex->SetTextSize(0.035);
+  //====================================//
+  //results vs centrality
+  TH2F *gEmpty1 = new TH2F("gEmpty1",
+                          ";#sqrt{s_{NN}} (GeV);",
+                          100,1,10000,10000,-0.003,0.5e-03);
+  gEmpty1->SetStats(kFALSE);
+  gEmpty1->GetYaxis()->SetTitleOffset(1.5);
+  gEmpty1->GetXaxis()->SetTitleOffset(1.5);
+  gEmpty1->GetYaxis()->SetNdivisions(10);
+  gEmpty1->GetXaxis()->SetNdivisions(10);
+
+  TF1 *f1 = new TF1("f1","0",0,10000);
+  f1->SetLineColor(1); f1->SetLineStyle(3); f1->SetLineWidth(3);
+
+  //============================================================//
+  //nu_{dyn.}
+  TCanvas *c1 = new TCanvas("c1","Energy dependence: nu_dyn",
+                           0,0,500,500);
+  c1->SetFillColor(10); c1->SetHighLightColor(10);
+  c1->SetLeftMargin(0.15); c1->SetBottomMargin(0.15);
+  c1->SetGridx(); c1->SetGridy(); c1->SetLogx();
+  gEmpty1->GetYaxis()->SetTitle("#nu_{dyn.}");
+  gEmpty1->DrawCopy();
+  f1->Draw("same");
+  grNuDynALICEData->Draw("P");
+  grNuDynCERESData->Draw("P");
+  grNuDynSTARData->Draw("P");
+  grNuDynPHENIXData->Draw("P");
+
+  DrawMarker(7., -0.0019, 20, 1.6, 2);
+  DrawMarker(7., -0.0021, 29, 1.6, 3);
+  DrawMarker(7., -0.0023, 21, 1.6, 4);
+  DrawMarker(7., -0.0025, 23, 1.6, 1);
+  latex->DrawLatex(10.,-0.00195,"ALICE");
+  latex->DrawLatex(10.,-0.00215,"STAR");
+  latex->DrawLatex(10.,-0.00235,"PHENIX");
+  latex->DrawLatex(10.,-0.00255,"CERES");
+
+  c1->SaveAs("energyDependenceNuDyn.png");
+}
+
+//_______________________________________________________________//
+void DrawMarker(Double_t x, Double_t y, Int_t style, 
+               Double_t size, Int_t color) {
+  TMarker *m = new TMarker(x,y,style);
+  m->SetMarkerSize(size);
+  m->SetMarkerColor(color);
+  m->Draw();
+}
diff --git a/PWG2/EBYE/Fluctuations/macro/drawMultiplicity.C b/PWG2/EBYE/Fluctuations/macro/drawMultiplicity.C
new file mode 100644 (file)
index 0000000..5388095
--- /dev/null
@@ -0,0 +1,76 @@
+void drawMultiplicity(const char* filename = "AnalysisResults.root") {
+  //Draws the multiplicity for each centrality bin
+  const Int_t nCentralityBins = 20;
+
+  //_______________________________________________________________//
+  //Open the input file
+  TFile *f = TFile::Open(filename);
+  if(!f->IsOpen()) {
+    Printf("File not found!!!");
+    break;
+  }
+
+  //_______________________________________________________________//
+  //Get the TDirectoryFile
+  TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("outputFluctuationAnalysis.root"));
+  if(!dir) {
+    Printf("TDirectoryFile not found!!!");
+    break;
+  }
+
+  //_______________________________________________________________//
+  //Get the TList
+  TList *list = dynamic_cast<TList *>(dir->Get("fluctuationsOutput"));
+  if(!list) {
+    Printf("TList not found!!!");
+    break;
+  }
+  //list->ls();
+
+  TH1F *gHistNMultiplicity[nCentralityBins];
+  TH2F *gHistNPlusNMinus[nCentralityBins];
+  TString histName;
+
+  for(Int_t iBin = 1; iBin <= nCentralityBins; iBin++) {
+    histName = "fHistNPlusNMinusCentrality"; histName += iBin;
+    gHistNPlusNMinus[iBin-1] = dynamic_cast<TH2F *>(list->FindObject(histName.Data()));
+    gHistNPlusNMinus[iBin-1]->SetMarkerColor(iBin);
+
+    histName = "fHistNMultCentrality"; histName += iBin;
+    gHistNMultiplicity[iBin-1] = dynamic_cast<TH1F *>(list->FindObject(histName.Data()));
+    gHistNMultiplicity[iBin-1]->SetMarkerColor(iBin);
+    gHistNMultiplicity[iBin-1]->SetLineColor(iBin);
+    gHistNMultiplicity[iBin-1]->Scale(5000./gHistNMultiplicity[iBin-1]->Integral());
+  }
+
+  //_______________________________________________________________//
+  //Draw the multiplicity distributions
+  TH2F *hEmpty = new TH2F("hEmpty","",200,0,2000,500,0,2000);
+  hEmpty->SetStats(kFALSE);
+  hEmpty->GetXaxis()->SetNdivisions(10);
+  hEmpty->GetYaxis()->SetNdivisions(10);
+  hEmpty->GetXaxis()->SetTitleOffset(1.4);
+  hEmpty->GetYaxis()->SetTitleOffset(1.4);
+
+  TCanvas *c1 = new TCanvas("c1","",0,0,600,500);
+  c1->SetFillColor(10); c1->SetHighLightColor(10);
+  c1->SetLeftMargin(0.15); c1->SetBottomMargin(0.15);
+  hEmpty->GetXaxis()->SetTitle("N_{+}");
+  hEmpty->GetYaxis()->SetTitle("N_{-}");
+  hEmpty->GetXaxis()->SetRangeUser(0,1000);
+  hEmpty->GetYaxis()->SetRangeUser(0,1000);
+  hEmpty->DrawCopy();
+  for(Int_t iBin = 1; iBin <= nCentralityBins; iBin++)
+    gHistNPlusNMinus[iBin-1]->DrawCopy("same");
+
+  TCanvas *c2 = new TCanvas("c2","",600,0,600,500);
+  c2->SetFillColor(10); c2->SetHighLightColor(10);
+  c2->SetLeftMargin(0.15); c2->SetBottomMargin(0.15);
+  hEmpty->GetXaxis()->SetTitle("N_{tracks}");
+  hEmpty->GetYaxis()->SetTitle("Entries");
+  hEmpty->GetYaxis()->SetRangeUser(0,2000);
+  hEmpty->GetXaxis()->SetRangeUser(0,2000);
+  hEmpty->DrawCopy();
+  for(Int_t iBin = 1; iBin <= nCentralityBins; iBin++)
+    gHistNMultiplicity[iBin-1]->DrawCopy("esame");
+}
diff --git a/PWG2/EBYE/Fluctuations/macro/drawNpartDependence.C b/PWG2/EBYE/Fluctuations/macro/drawNpartDependence.C
new file mode 100644 (file)
index 0000000..e4bd0ec
--- /dev/null
@@ -0,0 +1,228 @@
+//=======================================================================//
+//Macro to draw the main results of the charge fluctuation analysis:
+//=======================================================================//
+
+//+++++++++++++++++++++GLOBAL VARIABLES+++++++++++++++++++++//
+const Int_t nCentralityBins = 20;
+
+Double_t gNParticipants[nCentralityBins] = {382.646,329.213,280.911,238.617,201.81,169.339,141.067,116.208,94.2515,75.4558,59.4054,45.7565,34.4839,25.3127,18.0293,12.6535,8.84139,6.16348,4.37454,3.06182};
+Double_t gNParticipantsError[nCentralityBins] = {16.9428,18.0505,17.0971,16.2076,15.5418,14.9458,14.3174,13.9067,13.2661,12.6134,11.8133,11.0495,10.0939,8.99737,7.7884,6.48725,5.21602,3.91988,2.78741,1.75066};
+//Double_t gNParticipants[nCentralityBins] = {356.132,260.175,185.76,128.428,84.5666,52.3432,29.7072,15.2207,7.47192,3.71973};//10 bins
+//Double_t gNParticipantsError[nCentralityBins] = {31.8228,26.9093,22.3767,18.8802,15.9735,13.3103,10.5806,7.62745,4.78538,2.41942};//10 bins
+
+//================================ALICE================================//
+Double_t gNuDynALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
+Double_t gNuDynALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+Double_t gNetChargeALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
+Double_t gNetChargeALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+Double_t gNetChargeRmsALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
+Double_t gNetChargeRmsALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+//================================ALICE================================//
+//+++++++++++++++++++++END OF VARIABLES+++++++++++++++++++++//
+
+//_____________________________________________________//
+void drawNpartDependence(const char*resultPath = "../LHC10h/Pass1_4Plus/20CentralityBins/") {
+  //Draws the nu_dyn vs centrality percentile
+  SetDataPoints(resultPath);
+  //================================================//
+  //ALICE PbPb @ 2.76 TeV
+  TGraphErrors *grALICEDataNudyn = new TGraphErrors(nCentralityBins,
+                                                   gNParticipants,
+                                                   gNuDynALICEData,
+                                                   gNParticipantsError,
+                                                   gNuDynALICEDataError);
+  grALICEDataNudyn->SetMarkerStyle(20);
+  grALICEDataNudyn->SetMarkerColor(2);
+
+  TGraphErrors *grALICEDataNetCharge = new TGraphErrors(nCentralityBins,
+                                                       gNParticipants,
+                                                       gNetChargeALICEData,
+                                                       gNParticipantsError,
+                                                       gNetChargeALICEDataError);
+  grALICEDataNetCharge->SetMarkerStyle(20);
+  grALICEDataNetCharge->SetMarkerColor(2);
+
+  TGraphErrors *grALICEDataNetChargeRms = new TGraphErrors(nCentralityBins,
+                                                          gNParticipants,
+                                                          gNetChargeRmsALICEData,
+                                                          gNParticipantsError,
+                                                          gNetChargeRmsALICEDataError);
+  grALICEDataNetChargeRms->SetMarkerStyle(20);
+  grALICEDataNetChargeRms->SetMarkerColor(2);
+  
+  //_____________________________________________________//
+  //Draw the results
+  //_____________________________________________________//
+  TLatex *latex = new TLatex();
+  latex->SetTextSize(0.035);
+
+  //====================================//
+  //Results vs centrality
+  TH2F *gEmpty1 = new TH2F("gEmpty1",
+                          ";N_{part.};",
+                          100,0,400,10000,-0.1,50.);
+  gEmpty1->SetStats(kFALSE);
+  gEmpty1->GetYaxis()->SetTitleOffset(1.5);
+  gEmpty1->GetXaxis()->SetTitleOffset(1.5);
+  gEmpty1->GetYaxis()->SetNdivisions(10);
+  gEmpty1->GetXaxis()->SetNdivisions(10);
+
+  TF1 *f1 = new TF1("f1","0",0,1000);
+  f1->SetLineColor(1); f1->SetLineStyle(3); f1->SetLineWidth(2);
+
+  //============================================================//
+  //nu_{dyn.}
+  TCanvas *c1 = new TCanvas("c1","Centrality dependence: nu_dyn",
+                           0,0,500,500);
+  c1->SetFillColor(10); c1->SetHighLightColor(10);
+  c1->SetLeftMargin(0.15); c1->SetBottomMargin(0.15);
+  c1->SetGridx(); c1->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(-0.08,0.01);
+  gEmpty1->GetYaxis()->SetTitle("#nu_{dyn.}");
+  gEmpty1->DrawCopy();
+  f1->Draw("same");
+  grALICEDataNudyn->Draw("P");
+
+  DrawMarker(40., 0.0043, 20, 1.6, 2);
+  latex->DrawLatex(50.,0.0033,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
+
+  c1->SaveAs("NparticipantsDependenceNuDyn.png");
+
+  //============================================================//
+  //net charge
+  TCanvas *c2 = new TCanvas("c2","Centrality dependence: net charge",
+                           100,100,500,500);
+  c2->SetFillColor(10); c2->SetHighLightColor(10);
+  c2->SetLeftMargin(0.15); c2->SetBottomMargin(0.15);
+  c2->SetGridx(); c2->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(0.0,10.0);
+  gEmpty1->GetYaxis()->SetTitle("#LT #Delta Q = N_{+} - N_{-}#GT");
+  gEmpty1->DrawCopy();
+  grALICEDataNetCharge->Draw("P");
+
+  DrawMarker(40., 8.3, 20, 1.6, 2);
+  latex->DrawLatex(50.,8.1,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
+
+  c2->SaveAs("NparticipantsDependenceNetCharge.png");
+
+  //============================================================//
+  //rms net charge
+  TCanvas *c3 = new TCanvas("c3","Centrality dependence: net charge rms",
+                           200,200,500,500);
+  c3->SetFillColor(10); c3->SetHighLightColor(10);
+  c3->SetLeftMargin(0.15); c3->SetBottomMargin(0.15);
+  c3->SetGridx(); c3->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(0.0,40.0);
+  gEmpty1->GetYaxis()->SetTitle("#sigma_{#Delta Q}");
+  gEmpty1->DrawCopy();
+  grALICEDataNetChargeRms->Draw("P");
+
+  DrawMarker(40., 38., 20, 1.6, 2);
+  latex->DrawLatex(50.,37.,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
+
+  c3->SaveAs("NparticipantsDependenceNetChargeRms.png");
+}
+
+//_______________________________________________________________//
+void SetDataPoints(const char* resultPath) {
+  //Calculate the mean and the statistical error of the data points
+  const Int_t nRuns = 7;
+  Double_t nuDyn[nRuns][nCentralityBins];
+  Double_t gNetCharge[nRuns][nCentralityBins];
+  Double_t gNetChargeRms[nRuns][nCentralityBins];
+  Double_t nuDyn[nRuns][nCentralityBins];
+  Int_t nEvents[nRuns][nCentralityBins];
+  Int_t nRunNumbers[nRuns] = {137161,137431,137549,
+                             137595,137638,137639,137693};
+  Int_t gCentrality;
+  Double_t netChargeValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                          0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+  Double_t netChargeValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,
+                                                   0.,0.,0.,0.,0.,0.,0.,0.,
+                                                   0.,0.,0.,0.};
+  Double_t netChargeRmsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,
+                                                 0.,0.,0.,0.,0.,0.,0.,
+                                                 0.,0.,0.,0.,0.,0.};
+  Double_t netChargeRmsValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,
+                                                      0.,0.,0.,0.,0.,0.,0.,0.,
+                                                   0.,0.,0.,0.};
+  Double_t nuDynValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                          0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+  Double_t nuDynValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                               0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+  Double_t nEventsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                            0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+
+  TString inputFileName;
+  for(Int_t iRun = 0; iRun < nRuns; iRun++) {
+    ifstream inputAscii;
+    Printf("Adding run %d",nRunNumbers[iRun]);
+    inputFileName = resultPath;
+    inputFileName += "/output."; inputFileName += nRunNumbers[iRun];
+    inputFileName += ".txt";
+
+    Printf("Filename: %s",inputFileName.Data());
+    inputAscii.open(inputFileName.Data());
+    for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
+      inputAscii>>gCentrality>>nuDyn[iRun][iCentrality]>>gNetCharge[iRun][iCentrality]>>gNetChargeRms[iRun][iCentrality]>>nEvents[iRun][iCentrality];
+      cout<<nuDyn[iRun][iCentrality]<<" "<<nEvents[iRun][iCentrality]<<endl;
+    }
+    inputAscii.close();
+  }
+
+  Int_t nRunCounter = 0;
+  for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
+    for(Int_t iRun = 0; iRun < nRuns; iRun++) {
+      nuDynValues[iCentrality] += nuDyn[iRun][iCentrality]*nEvents[iRun][iCentrality];
+      netChargeValues[iCentrality] += gNetCharge[iRun][iCentrality]*nEvents[iRun][iCentrality];
+      netChargeRmsValues[iCentrality] += gNetChargeRms[iRun][iCentrality]*nEvents[iRun][iCentrality];
+      nEventsValues[iCentrality] += nEvents[iRun][iCentrality];
+    }
+
+    if(nEventsValues[iCentrality] != 0) {
+      nRunCounter += 1;
+
+      netChargeValues[iCentrality] /= nEventsValues[iCentrality];
+      netChargeRmsValues[iCentrality] /= nEventsValues[iCentrality];
+      nuDynValues[iCentrality] /= nEventsValues[iCentrality];
+    }
+    else {
+      netChargeValues[iCentrality] = 999.;
+      netChargeRmsValues[iCentrality] = 999.;
+      nuDynValues[iCentrality] = 999.;
+    }
+
+    gNetChargeALICEData[iCentrality] = netChargeValues[iCentrality];
+    gNetChargeRmsALICEData[iCentrality] = netChargeRmsValues[iCentrality];
+    gNuDynALICEData[iCentrality] = nuDynValues[iCentrality];
+  }
+
+  for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
+    for(Int_t iRun = 0; iRun < nRuns; iRun++) {
+      netChargeValuesError[iCentrality] += TMath::Power((netChargeValues[iCentrality]-gNetCharge[iRun][iCentrality]),2);
+      netChargeRmsValuesError[iCentrality] += TMath::Power((netChargeRmsValues[iCentrality]-gNetChargeRms[iRun][iCentrality]),2);
+      nuDynValuesError[iCentrality] += TMath::Power((nuDynValues[iCentrality]-nuDyn[iRun][iCentrality]),2);
+    }
+    gNetChargeALICEDataError[iCentrality] = TMath::Sqrt(netChargeValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
+    gNetChargeRmsALICEDataError[iCentrality] = TMath::Sqrt(netChargeRmsValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
+    gNuDynALICEDataError[iCentrality] = TMath::Sqrt(nuDynValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
+    Printf("Centrality: %d - nu_dyn: %lf +- %lf - Net charge: %lf +- %lf - RMS: %lf - %lf",iCentrality+1,
+          gNuDynALICEData[iCentrality],
+          gNuDynALICEDataError[iCentrality],
+          gNetChargeALICEData[iCentrality],
+          gNetChargeALICEDataError[iCentrality],
+          gNetChargeRmsALICEData[iCentrality],
+          gNetChargeRmsALICEDataError[iCentrality]);
+  }
+
+}
+
+
+//_______________________________________________________________//
+void DrawMarker(Double_t x, Double_t y, Int_t style, 
+               Double_t size, Int_t color) {
+  TMarker *m = new TMarker(x,y,style);
+  m->SetMarkerSize(size);
+  m->SetMarkerColor(color);
+  m->Draw();
+}
diff --git a/PWG2/EBYE/Fluctuations/macro/drawScaledNpartDependence.C b/PWG2/EBYE/Fluctuations/macro/drawScaledNpartDependence.C
new file mode 100644 (file)
index 0000000..8ff5dda
--- /dev/null
@@ -0,0 +1,228 @@
+//=======================================================================//
+//Macro to draw the main results of the charge fluctuation analysis:
+//=======================================================================//
+
+//+++++++++++++++++++++GLOBAL VARIABLES+++++++++++++++++++++//
+const Int_t nCentralityBins = 20;
+
+Double_t gNParticipants[nCentralityBins] = {382.646,329.213,280.911,238.617,201.81,169.339,141.067,116.208,94.2515,75.4558,59.4054,45.7565,34.4839,25.3127,18.0293,12.6535,8.84139,6.16348,4.37454,3.06182};
+Double_t gNParticipantsError[nCentralityBins] = {16.9428,18.0505,17.0971,16.2076,15.5418,14.9458,14.3174,13.9067,13.2661,12.6134,11.8133,11.0495,10.0939,8.99737,7.7884,6.48725,5.21602,3.91988,2.78741,1.75066};
+//Double_t gNParticipants[nCentralityBins] = {356.132,260.175,185.76,128.428,84.5666,52.3432,29.7072,15.2207,7.47192,3.71973};//10 bins
+//Double_t gNParticipantsError[nCentralityBins] = {31.8228,26.9093,22.3767,18.8802,15.9735,13.3103,10.5806,7.62745,4.78538,2.41942};//10 bins
+
+//================================ALICE================================//
+Double_t gNuDynALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
+Double_t gNuDynALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+Double_t gNetChargeALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
+Double_t gNetChargeALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+Double_t gNetChargeRmsALICEData[nCentralityBins] = {10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.,10.};
+Double_t gNetChargeRmsALICEDataError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+//================================ALICE================================//
+//+++++++++++++++++++++END OF VARIABLES+++++++++++++++++++++//
+
+//_____________________________________________________//
+void drawScaledNpartDependence(const char*resultPath = "../LHC10h/Pass1_4Plus/20CentralityBins/") {
+  //Draws the nu_dyn vs centrality percentile
+  SetDataPoints(resultPath);
+  //================================================//
+  //ALICE PbPb @ 2.76 TeV
+  TGraphErrors *grALICEDataNudyn = new TGraphErrors(nCentralityBins,
+                                                   gNParticipants,
+                                                   gNuDynALICEData,
+                                                   gNParticipantsError,
+                                                   gNuDynALICEDataError);
+  grALICEDataNudyn->SetMarkerStyle(20);
+  grALICEDataNudyn->SetMarkerColor(2);
+
+  TGraphErrors *grALICEDataNetCharge = new TGraphErrors(nCentralityBins,
+                                                       gNParticipants,
+                                                       gNetChargeALICEData,
+                                                       gNParticipantsError,
+                                                       gNetChargeALICEDataError);
+  grALICEDataNetCharge->SetMarkerStyle(20);
+  grALICEDataNetCharge->SetMarkerColor(2);
+
+  TGraphErrors *grALICEDataNetChargeRms = new TGraphErrors(nCentralityBins,
+                                                          gNParticipants,
+                                                          gNetChargeRmsALICEData,
+                                                          gNParticipantsError,
+                                                          gNetChargeRmsALICEDataError);
+  grALICEDataNetChargeRms->SetMarkerStyle(20);
+  grALICEDataNetChargeRms->SetMarkerColor(2);
+  
+  //_____________________________________________________//
+  //Draw the results
+  //_____________________________________________________//
+  TLatex *latex = new TLatex();
+  latex->SetTextSize(0.035);
+
+  //====================================//
+  //Results vs centrality
+  TH2F *gEmpty1 = new TH2F("gEmpty1",
+                          ";N_{part.};",
+                          100,0,400,10000,-2.,1.);
+  gEmpty1->SetStats(kFALSE);
+  gEmpty1->GetYaxis()->SetTitleOffset(1.5);
+  gEmpty1->GetXaxis()->SetTitleOffset(1.5);
+  gEmpty1->GetYaxis()->SetNdivisions(10);
+  gEmpty1->GetXaxis()->SetNdivisions(10);
+
+  TF1 *f1 = new TF1("f1","0",0,1000);
+  f1->SetLineColor(1); f1->SetLineStyle(3); f1->SetLineWidth(2);
+
+  //============================================================//
+  //nu_{dyn.}
+  TCanvas *c1 = new TCanvas("c1","Centrality dependence: nu_dyn",
+                           0,0,500,500);
+  c1->SetFillColor(10); c1->SetHighLightColor(10);
+  c1->SetLeftMargin(0.15); c1->SetBottomMargin(0.15);
+  c1->SetGridx(); c1->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(-2.,0.0);
+  gEmpty1->GetYaxis()->SetTitle("#nu_{dyn.} #times N_{part.}");
+  gEmpty1->DrawCopy();
+  f1->Draw("same");
+  grALICEDataNudyn->Draw("P");
+
+  DrawMarker(40., 0.0043, 20, 1.6, 2);
+  latex->DrawLatex(50.,0.0033,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
+
+  c1->SaveAs("scaledNparticipantsDependenceNuDyn.png");
+
+  //============================================================//
+  //net charge
+  TCanvas *c2 = new TCanvas("c2","Centrality dependence: net charge",
+                           100,100,500,500);
+  c2->SetFillColor(10); c2->SetHighLightColor(10);
+  c2->SetLeftMargin(0.15); c2->SetBottomMargin(0.15);
+  c2->SetGridx(); c2->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(0.0,0.05);
+  gEmpty1->GetYaxis()->SetTitle("#LT #Delta Q = N_{+} - N_{-}#GT/N_{part.}");
+  gEmpty1->DrawCopy();
+  grALICEDataNetCharge->Draw("P");
+
+  DrawMarker(40., 8.3, 20, 1.6, 2);
+  latex->DrawLatex(50.,8.1,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
+
+  c2->SaveAs("scaledNparticipantsDependenceNetCharge.png");
+
+  //============================================================//
+  //rms net charge
+  TCanvas *c3 = new TCanvas("c3","Centrality dependence: net charge rms",
+                           200,200,500,500);
+  c3->SetFillColor(10); c3->SetHighLightColor(10);
+  c3->SetLeftMargin(0.15); c3->SetBottomMargin(0.15);
+  c3->SetGridx(); c3->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(0.0,0.6);
+  gEmpty1->GetYaxis()->SetTitle("#sigma_{#Delta Q}/N_{part.}");
+  gEmpty1->DrawCopy();
+  grALICEDataNetChargeRms->Draw("P");
+
+  DrawMarker(40., 38., 20, 1.6, 2);
+  latex->DrawLatex(50.,37.,"PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
+
+  c3->SaveAs("scaledNparticipantsDependenceNetChargeRms.png");
+}
+
+//_______________________________________________________________//
+void SetDataPoints(const char* resultPath) {
+  //Calculate the mean and the statistical error of the data points
+  const Int_t nRuns = 7;
+  Double_t nuDyn[nRuns][nCentralityBins];
+  Double_t gNetCharge[nRuns][nCentralityBins];
+  Double_t gNetChargeRms[nRuns][nCentralityBins];
+  Double_t nuDyn[nRuns][nCentralityBins];
+  Int_t nEvents[nRuns][nCentralityBins];
+  Int_t nRunNumbers[nRuns] = {137161,137431,137549,
+                             137595,137638,137639,137693};
+  Int_t gCentrality;
+  Double_t netChargeValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                          0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+  Double_t netChargeValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,
+                                                   0.,0.,0.,0.,0.,0.,0.,0.,
+                                                   0.,0.,0.,0.};
+  Double_t netChargeRmsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,
+                                                 0.,0.,0.,0.,0.,0.,0.,
+                                                 0.,0.,0.,0.,0.,0.};
+  Double_t netChargeRmsValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,
+                                                      0.,0.,0.,0.,0.,0.,0.,0.,
+                                                   0.,0.,0.,0.};
+  Double_t nuDynValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                          0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+  Double_t nuDynValuesError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                               0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+  Double_t nEventsValues[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
+                                            0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
+
+  TString inputFileName;
+  for(Int_t iRun = 0; iRun < nRuns; iRun++) {
+    ifstream inputAscii;
+    Printf("Adding run %d",nRunNumbers[iRun]);
+    inputFileName = resultPath;
+    inputFileName += "/output."; inputFileName += nRunNumbers[iRun];
+    inputFileName += ".txt";
+
+    Printf("Filename: %s",inputFileName.Data());
+    inputAscii.open(inputFileName.Data());
+    for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
+      inputAscii>>gCentrality>>nuDyn[iRun][iCentrality]>>gNetCharge[iRun][iCentrality]>>gNetChargeRms[iRun][iCentrality]>>nEvents[iRun][iCentrality];
+      cout<<nuDyn[iRun][iCentrality]<<" "<<nEvents[iRun][iCentrality]<<endl;
+    }
+    inputAscii.close();
+  }
+
+  Int_t nRunCounter = 0;
+  for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
+    for(Int_t iRun = 0; iRun < nRuns; iRun++) {
+      nuDynValues[iCentrality] += nuDyn[iRun][iCentrality]*nEvents[iRun][iCentrality];
+      netChargeValues[iCentrality] += gNetCharge[iRun][iCentrality]*nEvents[iRun][iCentrality];
+      netChargeRmsValues[iCentrality] += gNetChargeRms[iRun][iCentrality]*nEvents[iRun][iCentrality];
+      nEventsValues[iCentrality] += nEvents[iRun][iCentrality];
+    }
+
+    if(nEventsValues[iCentrality] != 0) {
+      nRunCounter += 1;
+
+      netChargeValues[iCentrality] /= nEventsValues[iCentrality];
+      netChargeRmsValues[iCentrality] /= nEventsValues[iCentrality];
+      nuDynValues[iCentrality] /= nEventsValues[iCentrality];
+    }
+    else {
+      netChargeValues[iCentrality] = 999.;
+      netChargeRmsValues[iCentrality] = 999.;
+      nuDynValues[iCentrality] = 999.;
+    }
+
+    gNetChargeALICEData[iCentrality] = netChargeValues[iCentrality]/gNParticipants[iCentrality];
+    gNetChargeRmsALICEData[iCentrality] = netChargeRmsValues[iCentrality]/gNParticipants[iCentrality];;
+    gNuDynALICEData[iCentrality] = nuDynValues[iCentrality]*gNParticipants[iCentrality];
+  }
+
+  for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
+    for(Int_t iRun = 0; iRun < nRuns; iRun++) {
+      netChargeValuesError[iCentrality] += TMath::Power((netChargeValues[iCentrality]-gNetCharge[iRun][iCentrality]),2);
+      netChargeRmsValuesError[iCentrality] += TMath::Power((netChargeRmsValues[iCentrality]-gNetChargeRms[iRun][iCentrality]),2);
+      nuDynValuesError[iCentrality] += TMath::Power((nuDynValues[iCentrality]-nuDyn[iRun][iCentrality]),2);
+    }
+    gNetChargeALICEDataError[iCentrality] = TMath::Sqrt(netChargeValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)))/gNParticipants[iCentrality];
+    gNetChargeRmsALICEDataError[iCentrality] = TMath::Sqrt(netChargeRmsValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)))/gNParticipants[iCentrality];
+    gNuDynALICEDataError[iCentrality] = TMath::Sqrt(nuDynValuesError[iCentrality]/(nRunCounter*(nRunCounter-1)));
+    Printf("Centrality: %d - nu_dyn: %lf +- %lf - Net charge: %lf +- %lf - RMS: %lf - %lf",iCentrality+1,
+          gNuDynALICEData[iCentrality],
+          gNuDynALICEDataError[iCentrality],
+          gNetChargeALICEData[iCentrality],
+          gNetChargeALICEDataError[iCentrality],
+          gNetChargeRmsALICEData[iCentrality],
+          gNetChargeRmsALICEDataError[iCentrality]);
+  }
+
+}
+
+
+//_______________________________________________________________//
+void DrawMarker(Double_t x, Double_t y, Int_t style, 
+               Double_t size, Int_t color) {
+  TMarker *m = new TMarker(x,y,style);
+  m->SetMarkerSize(size);
+  m->SetMarkerColor(color);
+  m->Draw();
+}
diff --git a/PWG2/EBYE/Fluctuations/macro/drawSystematics.C b/PWG2/EBYE/Fluctuations/macro/drawSystematics.C
new file mode 100644 (file)
index 0000000..b4104bf
--- /dev/null
@@ -0,0 +1,263 @@
+//=======================================================================//
+//Macro to draw the main results of the charge fluctuation analysis:
+//=======================================================================//
+
+//+++++++++++++++++++++GLOBAL VARIABLES+++++++++++++++++++++//
+const Int_t nCentralityBins = 10;
+Double_t gCentralityPercentileSet1[nCentralityBins];
+Double_t gCentralityPercentileSet2[nCentralityBins];
+Double_t gCentralityPercentileSet3[nCentralityBins];
+Double_t gCentralityPercentileError[nCentralityBins];
+
+//================================ALICE================================//
+Double_t gNuDynALICEDataSet1[nCentralityBins];
+Double_t gNuDynALICEDataSet1Error[nCentralityBins];
+Double_t gNuDynALICEDataSet2[nCentralityBins];
+Double_t gNuDynALICEDataSet2Error[nCentralityBins];
+Double_t gNuDynALICEDataSet3[nCentralityBins];
+Double_t gNuDynALICEDataSet3Error[nCentralityBins];
+
+Double_t gNetChargeALICEDataSet1[nCentralityBins];
+Double_t gNetChargeALICEDataSet1Error[nCentralityBins];
+Double_t gNetChargeALICEDataSet2[nCentralityBins];
+Double_t gNetChargeALICEDataSet2Error[nCentralityBins];
+Double_t gNetChargeALICEDataSet3[nCentralityBins];
+Double_t gNetChargeALICEDataSet3Error[nCentralityBins];
+
+Double_t gNetChargeRmsALICEDataSet1[nCentralityBins];
+Double_t gNetChargeRmsALICEDataSet1Error[nCentralityBins];
+Double_t gNetChargeRmsALICEDataSet2[nCentralityBins];
+Double_t gNetChargeRmsALICEDataSet2Error[nCentralityBins];
+Double_t gNetChargeRmsALICEDataSet3[nCentralityBins];
+Double_t gNetChargeRmsALICEDataSet3Error[nCentralityBins];
+//================================ALICE================================//
+//+++++++++++++++++++++END OF VARIABLES+++++++++++++++++++++//
+
+//_____________________________________________________//
+void drawSystematics(const char* resultsPath) {
+  //Draws the nu_dyn vs centrality percentile
+  for(Int_t i = 0; i < nCentralityBins; i++) {
+    if(nCentralityBins == 20) {
+      gCentralityPercentileSet1[i] = 1.0 + i*5.0;
+      gCentralityPercentileSet2[i] = 2.5 + i*5.0;
+      gCentralityPercentileSet3[i] = 4.0 + i*5.0;
+    }
+    if(nCentralityBins == 10) {
+      gCentralityPercentileSet1[i] = 3.0 + i*10.0;
+      gCentralityPercentileSet2[i] = 5.0 + i*10.0;
+      gCentralityPercentileSet3[i] = 7.0 + i*10.0;
+    }
+    gCentralityPercentileError[i] = 0.5;
+  }
+
+  SetDataPoints(resultsPath);
+
+  //================================================//
+  //ALICE PbPb @ 2.76 TeV
+  //Nu dyn
+  TGraphErrors *grNuDynALICEDataSet1 = new TGraphErrors(nCentralityBins,
+                                                       gCentralityPercentileSet1,
+                                                       gNuDynALICEDataSet1,
+                                                       gCentralityPercentileError,
+                                                       gNuDynALICEDataSet1Error);
+  grNuDynALICEDataSet1->SetMarkerStyle(20);
+  grNuDynALICEDataSet1->SetMarkerColor(4);
+  
+  TGraphErrors *grNuDynALICEDataSet2 = new TGraphErrors(nCentralityBins,
+                                                       gCentralityPercentileSet2,
+                                                       gNuDynALICEDataSet2,
+                                                       gCentralityPercentileError,
+                                                       gNuDynALICEDataSet2Error);
+  grNuDynALICEDataSet2->SetMarkerStyle(25);
+  grNuDynALICEDataSet2->SetMarkerColor(2);
+  
+  TGraphErrors *grNuDynALICEDataSet3 = new TGraphErrors(nCentralityBins,
+                                                       gCentralityPercentileSet3,
+                                                       gNuDynALICEDataSet3,
+                                                       gCentralityPercentileError,
+                                                       gNuDynALICEDataSet3Error);
+  grNuDynALICEDataSet3->SetMarkerStyle(29);
+  grNuDynALICEDataSet3->SetMarkerColor(3);
+  
+  //Net charge
+  TGraphErrors *grNetChargeALICEDataSet1 = new TGraphErrors(nCentralityBins,
+                                                           gCentralityPercentileSet1,
+                                                           gNetChargeALICEDataSet1,
+                                                           gCentralityPercentileError,
+                                                           gNetChargeALICEDataSet1Error);
+  grNetChargeALICEDataSet1->SetMarkerStyle(20);
+  grNetChargeALICEDataSet1->SetMarkerColor(4);
+  
+  TGraphErrors *grNetChargeALICEDataSet2 = new TGraphErrors(nCentralityBins,
+                                                           gCentralityPercentileSet2,
+                                                           gNetChargeALICEDataSet2,
+                                                           gCentralityPercentileError,
+                                                           gNetChargeALICEDataSet2Error);
+  grNetChargeALICEDataSet2->SetMarkerStyle(25);
+  grNetChargeALICEDataSet2->SetMarkerColor(2);
+  
+  TGraphErrors *grNetChargeALICEDataSet3 = new TGraphErrors(nCentralityBins,
+                                                           gCentralityPercentileSet3,
+                                                           gNetChargeALICEDataSet3,
+                                                           gCentralityPercentileError,
+                                                           gNetChargeALICEDataSet3Error);
+  grNetChargeALICEDataSet3->SetMarkerStyle(29);
+  grNetChargeALICEDataSet3->SetMarkerColor(3);
+  
+  //Net charge rms
+  TGraphErrors *grNetChargeRmsALICEDataSet1 = new TGraphErrors(nCentralityBins,
+                                                              gCentralityPercentileSet1,
+                                                              gNetChargeRmsALICEDataSet1,
+                                                              gCentralityPercentileError,
+                                                              gNetChargeRmsALICEDataSet1Error);
+  grNetChargeRmsALICEDataSet1->SetMarkerStyle(20);
+  grNetChargeRmsALICEDataSet1->SetMarkerColor(4);
+  
+  TGraphErrors *grNetChargeRmsALICEDataSet2 = new TGraphErrors(nCentralityBins,
+                                                              gCentralityPercentileSet2,
+                                                              gNetChargeRmsALICEDataSet2,
+                                                              gCentralityPercentileError,
+                                                              gNetChargeRmsALICEDataSet2Error);
+  grNetChargeRmsALICEDataSet2->SetMarkerStyle(25);
+  grNetChargeRmsALICEDataSet2->SetMarkerColor(2);
+  
+  TGraphErrors *grNetChargeRmsALICEDataSet3 = new TGraphErrors(nCentralityBins,
+                                                              gCentralityPercentileSet3,
+                                                              gNetChargeRmsALICEDataSet3,
+                                                              gCentralityPercentileError,
+                                                              gNetChargeRmsALICEDataSet3Error);
+  grNetChargeRmsALICEDataSet3->SetMarkerStyle(29);
+  grNetChargeRmsALICEDataSet3->SetMarkerColor(3);
+  
+  //_____________________________________________________//
+  //Draw the results
+  //_____________________________________________________//
+  TLatex *latex = new TLatex();
+  latex->SetTextSize(0.035);
+
+  //====================================//
+  //results vs centrality
+  TH2F *gEmpty1 = new TH2F("gEmpty1",
+                          ";Centrality percentile;",
+                          nCentralityBins,0,100,10000,-0.1,50.);
+  gEmpty1->SetStats(kFALSE);
+  gEmpty1->GetYaxis()->SetTitleOffset(1.5);
+  gEmpty1->GetXaxis()->SetTitleOffset(1.5);
+  gEmpty1->GetYaxis()->SetNdivisions(10);
+  gEmpty1->GetXaxis()->SetNdivisions(10);
+
+  TF1 *f1 = new TF1("f1","0",0,1000);
+  f1->SetLineColor(1); f1->SetLineStyle(3); f1->SetLineWidth(2);
+
+  //============================================================//
+  //nu_{dyn.}
+  TCanvas *c1 = new TCanvas("c1","Centrality dependence: nu_dyn",
+                           0,0,500,500);
+  c1->SetFillColor(10); c1->SetHighLightColor(10);
+  c1->SetLeftMargin(0.15); c1->SetBottomMargin(0.15);
+  c1->SetGridx(); c1->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(-0.08,0.01);
+  gEmpty1->GetYaxis()->SetTitle("#nu_{dyn.}");
+  gEmpty1->DrawCopy();
+  f1->Draw("same");
+  grNuDynALICEDataSet1->Draw("P");
+  grNuDynALICEDataSet2->Draw("P");
+  grNuDynALICEDataSet3->Draw("P");
+
+  DrawMarker(7., -0.053, 20, 1.6, 1);
+  DrawMarker(7., -0.058, 25, 1.6, 2);
+  DrawMarker(7., -0.063, 29, 1.6, 3);
+  latex->DrawLatex(12.,-0.0545,"V0");
+  latex->DrawLatex(12.,-0.0595,"TPC tracks");
+  latex->DrawLatex(12.,-0.0645,"SPD clusters");
+
+  c1->SaveAs("systematicsCentralityPercentileDependenceNuDyn.png");
+
+  //============================================================//
+  //net charge
+  TCanvas *c2 = new TCanvas("c2","Centrality dependence: net charge",
+                           100,100,500,500);
+  c2->SetFillColor(10); c2->SetHighLightColor(10);
+  c2->SetLeftMargin(0.15); c2->SetBottomMargin(0.15);
+  c2->SetGridx(); c2->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(0.0,10.0);
+  gEmpty1->GetYaxis()->SetTitle("#LT #Delta Q = N_{+} - N_{-}#GT");
+  gEmpty1->DrawCopy();
+  grNetChargeALICEDataSet1->Draw("P");
+  grNetChargeALICEDataSet2->Draw("P");
+  grNetChargeALICEDataSet3->Draw("P");
+
+  DrawMarker(47., 9.0, 20, 1.6, 1);
+  DrawMarker(47., 8.0, 25, 1.6, 2);
+  DrawMarker(47., 7.0, 29, 1.6, 3);
+  latex->DrawLatex(52.,8.8,"V0");
+  latex->DrawLatex(52.,7.8,"TPC tracks");
+  latex->DrawLatex(52.,6.8,"SPD clusters");
+
+  c2->SaveAs("systematicsCentralityPercentileDependenceNetCharge.png");
+
+  //============================================================//
+  //net charge
+  TCanvas *c3 = new TCanvas("c3","Centrality dependence: net charge rms",
+                           200,200,500,500);
+  c3->SetFillColor(10); c3->SetHighLightColor(10);
+  c3->SetLeftMargin(0.15); c3->SetBottomMargin(0.15);
+  c3->SetGridx(); c3->SetGridy();
+  gEmpty1->GetYaxis()->SetRangeUser(0.0,40.0);
+  gEmpty1->GetYaxis()->SetTitle("#sigma_{#Delta Q}");
+  gEmpty1->DrawCopy();
+  grNetChargeRmsALICEDataSet1->Draw("P");
+  grNetChargeRmsALICEDataSet2->Draw("P");
+  grNetChargeRmsALICEDataSet3->Draw("P");
+
+  DrawMarker(47., 37., 20, 1.6, 1);
+  DrawMarker(47., 35., 25, 1.6, 2);
+  DrawMarker(47., 33., 29, 1.6, 3);
+  latex->DrawLatex(52.,36.,"V0");
+  latex->DrawLatex(52.,34.,"TPC tracks");
+  latex->DrawLatex(52.,32,"SPD clusters");
+
+  c3->SaveAs("systematicsCentralityPercentileDependenceNetChargeRms.png");
+}
+
+//_______________________________________________________________//
+void SetDataPoints(const char* resultsPath) {
+  //Calculate the mean and the statistical error of the data points
+
+  TString inputFileName;
+  Int_t gCentrality = 0;
+
+  //Set 1
+  ifstream inputAscii1;
+  inputFileName = resultsPath; inputFileName += "V0/output.txt";     
+  inputAscii1.open(inputFileName.Data());
+
+  //Set 2
+  ifstream inputAscii2;
+  inputFileName = resultsPath; inputFileName += "TPC/output.txt";     
+  inputAscii2.open(inputFileName.Data());
+
+  //Set 3
+  ifstream inputAscii3;
+  inputFileName = resultsPath; inputFileName += "SPDClusters/output.txt";     
+  inputAscii3.open(inputFileName.Data());
+
+  for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) {
+    inputAscii1>>gCentrality>>gNuDynALICEDataSet1[iCentrality]>>gNuDynALICEDataSet1Error[iCentrality]>>gNetChargeALICEDataSet1[iCentrality]>>gNetChargeALICEDataSet1Error[iCentrality]>>gNetChargeRmsALICEDataSet1[iCentrality]>>gNetChargeRmsALICEDataSet1Error[iCentrality];
+    inputAscii2>>gCentrality>>gNuDynALICEDataSet2[iCentrality]>>gNuDynALICEDataSet2Error[iCentrality]>>gNetChargeALICEDataSet2[iCentrality]>>gNetChargeALICEDataSet2Error[iCentrality]>>gNetChargeRmsALICEDataSet2[iCentrality]>>gNetChargeRmsALICEDataSet2Error[iCentrality];
+    inputAscii3>>gCentrality>>gNuDynALICEDataSet3[iCentrality]>>gNuDynALICEDataSet3Error[iCentrality]>>gNetChargeALICEDataSet3[iCentrality]>>gNetChargeALICEDataSet3Error[iCentrality]>>gNetChargeRmsALICEDataSet3[iCentrality]>>gNetChargeRmsALICEDataSet3Error[iCentrality];
+
+  }
+  inputAscii1.close();
+
+}
+
+
+//_______________________________________________________________//
+void DrawMarker(Double_t x, Double_t y, Int_t style, 
+               Double_t size, Int_t color) {
+  TMarker *m = new TMarker(x,y,style);
+  m->SetMarkerSize(size);
+  m->SetMarkerColor(color);
+  m->Draw();
+}
index 5c459d94a1718ea6bba30293aed9341f778086a8..355cb9e070d0041e6272d4cf1811eb3e5316fa2f 100644 (file)
@@ -56,7 +56,7 @@ AliProtonAnalysisBase::AliProtonAnalysisBase() :
   fMaxDCAXY(0.), fMaxDCAXYTPC(0.),
   fMaxDCAZ(0.), fMaxDCAZTPC(0.),
   fMaxDCA3D(0.), fMaxDCA3DTPC(0.),
-  fMaxConstrainChi2(0), fMinTPCdEdxPoints(0),
+  fMaxConstrainChi2(0.), fMinTPCdEdxPoints(0),
   fMinTPCClustersFlag(kFALSE), fMinITSClustersFlag(kFALSE),
   fMaxChi2PerTPCClusterFlag(kFALSE), fMaxChi2PerITSClusterFlag(kFALSE),
   fMaxCov11Flag(kFALSE), fMaxCov22Flag(kFALSE), 
@@ -73,9 +73,9 @@ AliProtonAnalysisBase::AliProtonAnalysisBase() :
   fPointOnITSLayer3Flag(0), fPointOnITSLayer4Flag(0),
   fPointOnITSLayer5Flag(0), fPointOnITSLayer6Flag(0),
   fMinTPCdEdxPointsFlag(kFALSE),
-  fPtDependentDcaXY(0), fPtDependentDcaXYFlag(kFALSE), fNSigmaDCAXY(0.0),
+  fPtDependentDcaXY(0), fPtDependentDcaXYFlag(kFALSE), fNSigmaDCAXY(0),
   fFunctionProbabilityFlag(kFALSE), 
-  fNSigma(0), fNRatio(0),
+  fNSigma(0), fNRatio(0.),
   fElectronFunction(0), fMuonFunction(0),
   fPionFunction(0), fKaonFunction(0), fProtonFunction(0),
   fDebugMode(kFALSE), fListVertexQA(0) {