ROOT logo
//=======================================================================//
//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();
}
 drawScaledNpartDependence.C:1
 drawScaledNpartDependence.C:2
 drawScaledNpartDependence.C:3
 drawScaledNpartDependence.C:4
 drawScaledNpartDependence.C:5
 drawScaledNpartDependence.C:6
 drawScaledNpartDependence.C:7
 drawScaledNpartDependence.C:8
 drawScaledNpartDependence.C:9
 drawScaledNpartDependence.C:10
 drawScaledNpartDependence.C:11
 drawScaledNpartDependence.C:12
 drawScaledNpartDependence.C:13
 drawScaledNpartDependence.C:14
 drawScaledNpartDependence.C:15
 drawScaledNpartDependence.C:16
 drawScaledNpartDependence.C:17
 drawScaledNpartDependence.C:18
 drawScaledNpartDependence.C:19
 drawScaledNpartDependence.C:20
 drawScaledNpartDependence.C:21
 drawScaledNpartDependence.C:22
 drawScaledNpartDependence.C:23
 drawScaledNpartDependence.C:24
 drawScaledNpartDependence.C:25
 drawScaledNpartDependence.C:26
 drawScaledNpartDependence.C:27
 drawScaledNpartDependence.C:28
 drawScaledNpartDependence.C:29
 drawScaledNpartDependence.C:30
 drawScaledNpartDependence.C:31
 drawScaledNpartDependence.C:32
 drawScaledNpartDependence.C:33
 drawScaledNpartDependence.C:34
 drawScaledNpartDependence.C:35
 drawScaledNpartDependence.C:36
 drawScaledNpartDependence.C:37
 drawScaledNpartDependence.C:38
 drawScaledNpartDependence.C:39
 drawScaledNpartDependence.C:40
 drawScaledNpartDependence.C:41
 drawScaledNpartDependence.C:42
 drawScaledNpartDependence.C:43
 drawScaledNpartDependence.C:44
 drawScaledNpartDependence.C:45
 drawScaledNpartDependence.C:46
 drawScaledNpartDependence.C:47
 drawScaledNpartDependence.C:48
 drawScaledNpartDependence.C:49
 drawScaledNpartDependence.C:50
 drawScaledNpartDependence.C:51
 drawScaledNpartDependence.C:52
 drawScaledNpartDependence.C:53
 drawScaledNpartDependence.C:54
 drawScaledNpartDependence.C:55
 drawScaledNpartDependence.C:56
 drawScaledNpartDependence.C:57
 drawScaledNpartDependence.C:58
 drawScaledNpartDependence.C:59
 drawScaledNpartDependence.C:60
 drawScaledNpartDependence.C:61
 drawScaledNpartDependence.C:62
 drawScaledNpartDependence.C:63
 drawScaledNpartDependence.C:64
 drawScaledNpartDependence.C:65
 drawScaledNpartDependence.C:66
 drawScaledNpartDependence.C:67
 drawScaledNpartDependence.C:68
 drawScaledNpartDependence.C:69
 drawScaledNpartDependence.C:70
 drawScaledNpartDependence.C:71
 drawScaledNpartDependence.C:72
 drawScaledNpartDependence.C:73
 drawScaledNpartDependence.C:74
 drawScaledNpartDependence.C:75
 drawScaledNpartDependence.C:76
 drawScaledNpartDependence.C:77
 drawScaledNpartDependence.C:78
 drawScaledNpartDependence.C:79
 drawScaledNpartDependence.C:80
 drawScaledNpartDependence.C:81
 drawScaledNpartDependence.C:82
 drawScaledNpartDependence.C:83
 drawScaledNpartDependence.C:84
 drawScaledNpartDependence.C:85
 drawScaledNpartDependence.C:86
 drawScaledNpartDependence.C:87
 drawScaledNpartDependence.C:88
 drawScaledNpartDependence.C:89
 drawScaledNpartDependence.C:90
 drawScaledNpartDependence.C:91
 drawScaledNpartDependence.C:92
 drawScaledNpartDependence.C:93
 drawScaledNpartDependence.C:94
 drawScaledNpartDependence.C:95
 drawScaledNpartDependence.C:96
 drawScaledNpartDependence.C:97
 drawScaledNpartDependence.C:98
 drawScaledNpartDependence.C:99
 drawScaledNpartDependence.C:100
 drawScaledNpartDependence.C:101
 drawScaledNpartDependence.C:102
 drawScaledNpartDependence.C:103
 drawScaledNpartDependence.C:104
 drawScaledNpartDependence.C:105
 drawScaledNpartDependence.C:106
 drawScaledNpartDependence.C:107
 drawScaledNpartDependence.C:108
 drawScaledNpartDependence.C:109
 drawScaledNpartDependence.C:110
 drawScaledNpartDependence.C:111
 drawScaledNpartDependence.C:112
 drawScaledNpartDependence.C:113
 drawScaledNpartDependence.C:114
 drawScaledNpartDependence.C:115
 drawScaledNpartDependence.C:116
 drawScaledNpartDependence.C:117
 drawScaledNpartDependence.C:118
 drawScaledNpartDependence.C:119
 drawScaledNpartDependence.C:120
 drawScaledNpartDependence.C:121
 drawScaledNpartDependence.C:122
 drawScaledNpartDependence.C:123
 drawScaledNpartDependence.C:124
 drawScaledNpartDependence.C:125
 drawScaledNpartDependence.C:126
 drawScaledNpartDependence.C:127
 drawScaledNpartDependence.C:128
 drawScaledNpartDependence.C:129
 drawScaledNpartDependence.C:130
 drawScaledNpartDependence.C:131
 drawScaledNpartDependence.C:132
 drawScaledNpartDependence.C:133
 drawScaledNpartDependence.C:134
 drawScaledNpartDependence.C:135
 drawScaledNpartDependence.C:136
 drawScaledNpartDependence.C:137
 drawScaledNpartDependence.C:138
 drawScaledNpartDependence.C:139
 drawScaledNpartDependence.C:140
 drawScaledNpartDependence.C:141
 drawScaledNpartDependence.C:142
 drawScaledNpartDependence.C:143
 drawScaledNpartDependence.C:144
 drawScaledNpartDependence.C:145
 drawScaledNpartDependence.C:146
 drawScaledNpartDependence.C:147
 drawScaledNpartDependence.C:148
 drawScaledNpartDependence.C:149
 drawScaledNpartDependence.C:150
 drawScaledNpartDependence.C:151
 drawScaledNpartDependence.C:152
 drawScaledNpartDependence.C:153
 drawScaledNpartDependence.C:154
 drawScaledNpartDependence.C:155
 drawScaledNpartDependence.C:156
 drawScaledNpartDependence.C:157
 drawScaledNpartDependence.C:158
 drawScaledNpartDependence.C:159
 drawScaledNpartDependence.C:160
 drawScaledNpartDependence.C:161
 drawScaledNpartDependence.C:162
 drawScaledNpartDependence.C:163
 drawScaledNpartDependence.C:164
 drawScaledNpartDependence.C:165
 drawScaledNpartDependence.C:166
 drawScaledNpartDependence.C:167
 drawScaledNpartDependence.C:168
 drawScaledNpartDependence.C:169
 drawScaledNpartDependence.C:170
 drawScaledNpartDependence.C:171
 drawScaledNpartDependence.C:172
 drawScaledNpartDependence.C:173
 drawScaledNpartDependence.C:174
 drawScaledNpartDependence.C:175
 drawScaledNpartDependence.C:176
 drawScaledNpartDependence.C:177
 drawScaledNpartDependence.C:178
 drawScaledNpartDependence.C:179
 drawScaledNpartDependence.C:180
 drawScaledNpartDependence.C:181
 drawScaledNpartDependence.C:182
 drawScaledNpartDependence.C:183
 drawScaledNpartDependence.C:184
 drawScaledNpartDependence.C:185
 drawScaledNpartDependence.C:186
 drawScaledNpartDependence.C:187
 drawScaledNpartDependence.C:188
 drawScaledNpartDependence.C:189
 drawScaledNpartDependence.C:190
 drawScaledNpartDependence.C:191
 drawScaledNpartDependence.C:192
 drawScaledNpartDependence.C:193
 drawScaledNpartDependence.C:194
 drawScaledNpartDependence.C:195
 drawScaledNpartDependence.C:196
 drawScaledNpartDependence.C:197
 drawScaledNpartDependence.C:198
 drawScaledNpartDependence.C:199
 drawScaledNpartDependence.C:200
 drawScaledNpartDependence.C:201
 drawScaledNpartDependence.C:202
 drawScaledNpartDependence.C:203
 drawScaledNpartDependence.C:204
 drawScaledNpartDependence.C:205
 drawScaledNpartDependence.C:206
 drawScaledNpartDependence.C:207
 drawScaledNpartDependence.C:208
 drawScaledNpartDependence.C:209
 drawScaledNpartDependence.C:210
 drawScaledNpartDependence.C:211
 drawScaledNpartDependence.C:212
 drawScaledNpartDependence.C:213
 drawScaledNpartDependence.C:214
 drawScaledNpartDependence.C:215
 drawScaledNpartDependence.C:216
 drawScaledNpartDependence.C:217
 drawScaledNpartDependence.C:218
 drawScaledNpartDependence.C:219
 drawScaledNpartDependence.C:220
 drawScaledNpartDependence.C:221
 drawScaledNpartDependence.C:222
 drawScaledNpartDependence.C:223
 drawScaledNpartDependence.C:224
 drawScaledNpartDependence.C:225
 drawScaledNpartDependence.C:226
 drawScaledNpartDependence.C:227
 drawScaledNpartDependence.C:228
 drawScaledNpartDependence.C:229