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.};
//================================ALICE================================//

//================================ALICE================================//
Double_t gNParticipants200[nCentralityBins] = {352.,299.,235.,167.,116.,77.,47.,27.,14.};
Double_t gNParticipants200Error[nCentralityBins] = {4.,7.,9.,10.,10.,9.,8.,6.,4.};
Double_t gNuDynSTARData200[nCentralityBins] = {-0.002308,-0.002821,-0.003567,-0.004950,-0.007078,-0.010419,-0.010419,-0.016410,-0.028150,-0.056151};
Double_t gNuDynSTARData200Error[nCentralityBins] = {2e-06,2e-06,2e-06,2e-06,2e-06,2e-06,2e-06,2e-06,3e-06};

Double_t gNParticipants130[nCentralityBins] = {352.,298.,234.,166.,115.,76.,47.,27.,14.};
Double_t gNParticipants130Error[nCentralityBins] = {4.,7.,9.,10.,10.,9.,8.,5.,4.};
Double_t gNuDynSTARData130[nCentralityBins] = {-0.0023,-0.0029,-0.0036,-0.0051,-0.0070,-0.0103,-0.0103,-0.0154,-0.0274,-0.0547};
Double_t gNuDynSTARData130Error[nCentralityBins] = {0.0003,0.0002,0.0001,0.0001,0.0002,0.0002,0.0002,0.0002,0.0002};

Double_t gNParticipants62[nCentralityBins] = {347.,293.,229.,162.,112.,74.,46.,26.,13.};
Double_t gNParticipants62Error[nCentralityBins] = {4.,7.,9.,10.,10.,9.,7.,6.,3.};
Double_t gNuDynSTARData62[nCentralityBins] = {-0.002954,-0.003582,-0.004628,-0.006292,-0.008876,-0.013046,-0.020570,-0.035563,-0.071856};
Double_t gNuDynSTARData62Error[nCentralityBins] = {10e-06,8e-06,6e-06,6e-06,6e-06,6e-06,7e-06,7e-06,7e-06};
//================================ALICE================================//
//+++++++++++++++++++++END OF VARIABLES+++++++++++++++++++++//

//_____________________________________________________//
void compareRHIC(const char*resultPath = "../LHC10h/Pass1_4Plus/10CentralityBins/") {
  //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);

  //================================================//
  //STAR AuAu @ 200 GeV
  TGraphErrors *grSTARData200Nudyn = new TGraphErrors(9,
						      gNParticipants,
						      gNuDynSTARData200,
						      gNParticipantsError,
						      gNuDynSTARData200Error);
  grSTARData200Nudyn->SetMarkerStyle(25);
  grSTARData200Nudyn->SetMarkerColor(1);

  //================================================//
  //STAR AuAu @ 130 GeV
  TGraphErrors *grSTARData130Nudyn = new TGraphErrors(9,
						      gNParticipants,
						      gNuDynSTARData130,
						      gNParticipantsError,
						      gNuDynSTARData130Error);
  grSTARData130Nudyn->SetMarkerStyle(26);
  grSTARData130Nudyn->SetMarkerColor(3);
  grSTARData130Nudyn->SetMarkerSize(1.4);

  //================================================//
  //STAR AuAu @ 62 GeV
  TGraphErrors *grSTARData62Nudyn = new TGraphErrors(9,
						     gNParticipants,
						     gNuDynSTARData62,
						     gNParticipantsError,
						     gNuDynSTARData62Error);
  grSTARData62Nudyn->SetMarkerStyle(30);
  grSTARData62Nudyn->SetMarkerColor(4);
  grSTARData62Nudyn->SetMarkerSize(1.6);
  
  //_____________________________________________________//
  //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,0.01);
  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");
  grSTARData200Nudyn->Draw("P");
  grSTARData130Nudyn->Draw("P");
  grSTARData62Nudyn->Draw("P");
  grALICEDataNudyn->Draw("P");

  DrawMarker(140., -0.043, 20, 1.6, 2);
  latex->DrawLatex(150.,-0.0445,"ALICE PbPb @ #sqrt{s_{NN}} = 2.76 TeV");
  DrawMarker(140., -0.05, 25, 1.6, 1);
  latex->DrawLatex(150.,-0.0515,"STAR AuAu @ #sqrt{s_{NN}} = 200 GeV");
  DrawMarker(140., -0.057, 26, 1.6, 3);
  latex->DrawLatex(150.,-0.0585,"STAR AuAu @ #sqrt{s_{NN}} = 200 GeV");
  DrawMarker(140., -0.064, 30, 1.6, 4);
  latex->DrawLatex(150.,-0.0655,"STAR AuAu @ #sqrt{s_{NN}} = 200 GeV");

  c1->SaveAs("comparisonRHICNparticipantsDependenceNuDyn.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.;
    }

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