Parsing the output of ldapsearch with a perl script to unfold lines and make it compa...
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / drawSystematicsNew.C
CommitLineData
9e952c39 1
2Int_t markers[] = {20,21,22,23,28,29};
3Int_t colors[] = {1,2,3,4,6,8,102};
4
dd367a14 5void loadlibs()
6{
7 gSystem->Load("libTree");
8 gSystem->Load("libVMC");
9
10 gSystem->Load("libSTEERBase");
11 gSystem->Load("libANALYSIS");
12 gSystem->Load("libPWG0base");
13}
14
b541c64c 15void DrawpiKpAndCombinedZOnly(Float_t upperPtLimit=0.99)
16{
17 //gROOT->ProcessLine(".L drawPlots.C");
18 gSystem->Load("libPWG0base");
19
20 const char* fileNames[] = { "systematics.root", "systematics.root", "systematics.root", "correction_map.root" };
21 const char* folderNames[] = { "correction_0", "correction_1", "correction_2", "dndeta_correction" };
22 const char* legendNames[] = { "#pi", "K", "p", "standard" };
23 Int_t folderCount = 3;
24
25
26
27 TH2F* h2DCorrections[4];
28 TH1F* h1DCorrections[4];
29 for (Int_t i=0; i<4; i++) {
30 TFile::Open(fileNames[i]);
31 AlidNdEtaCorrection* correctionTmp = new AlidNdEtaCorrection(folderNames[i],folderNames[i]);
32 correctionTmp->LoadHistograms();
33
34 // h2DCorrections[i] = correctionTmp->GetTrack2ParticleCorrection()->GetTrackCorrection()->Get2DCorrectionHistogram("yz",-1,1);
35
36 h1DCorrections[i] = correctionTmp->GetTrack2ParticleCorrection()->GetTrackCorrection()->Get1DCorrectionHistogram("z",-10,10,0.8,0.8);
37 }
38
39 TH2F* null = new TH2F("","",100,0.1,10,100,0.5,9.99);
40 null->SetXTitle("p_{T} (GeV/c)");
41 null->SetXTitle("Correction");
42
43 null->Draw();
44
45 //h1DCorrections[0]->SetMaximum(5);
46 //h1DCorrections[0]->Draw();
47 // h2DCorrections[0]->Draw("colz");
48 for (Int_t i=1; i<4; i++) {
49 h1DCorrections[i]->Draw("same");
50 }
51
52}
53
54
dd367a14 55void DrawEffectOfChangeInCrossSection(const char* fileName) {
b541c64c 56
57 //get the data
dd367a14 58 TFile* fin = TFile::Open(fileName);
b541c64c 59
dd367a14 60 const Char_t* changes[] = {"pythia","ddmore","ddless","sdmore","sdless", "dmore", "dless", "sdmoreddless", "sdlessddmore" };
61 //const Char_t* changes[] = {"pythia","ddmore25","ddless25","sdmore25","sdless25", "dmore25", "dless25", "sdmoreddless25", "sdlessddmore25" };
62 Int_t colors[] = {1,1,kRed,kBlue,kGreen,kPink,1,kRed,kBlue};
b541c64c 63
dd367a14 64 TH1F* hRatios[9];
65 for(Int_t i=0; i<9; i++) {
b541c64c 66 hRatios[i] = (TH1F*)fin->Get(Form("ratio_vertexReco_triggerBias_%s",changes[i]));
67 hRatios[i]->SetLineWidth(2);
dd367a14 68 hRatios[i]->SetLineColor(colors[i]);
b541c64c 69 hRatios[i]->SetMarkerStyle(22);
70 hRatios[i]->SetMarkerSize(0.8);
dd367a14 71
72 Float_t average = hRatios[i]->Integral(hRatios[i]->FindBin(-1), hRatios[i]->FindBin(1)) / (hRatios[i]->FindBin(1) - hRatios[i]->FindBin(-1) + 1);
73 Printf("%s: %.2f %%" , hRatios[i]->GetTitle(), (average - 1) * 100);
b541c64c 74 }
75
76 TPad* p = DrawCanvasAndPad("syst_changeInXsection",700,400);
77 p->SetRightMargin(0.2);
78 p->SetLeftMargin(0.13);
79
dd367a14 80 TH2F* null = new TH2F("","",100,-1.05,1.05,100,0.9,1.1);
b541c64c 81 null->GetXaxis()->SetTitle("#eta");
82 null->GetYaxis()->SetTitle("Ratio pythia/modified cross-sections");
83 null->Draw();
84
dd367a14 85 TLatex* text[9];
b541c64c 86
dd367a14 87 for(Int_t i=1; i<9; i++) {
b541c64c 88 hRatios[i]->Draw("same");
89
90 TString str(hRatios[i]->GetTitle());
91 str.Remove(0,str.First("DD"));
92 str.Remove(str.First(")"),1);
93 text[i] = new TLatex(1.08,hRatios[i]->GetBinContent(hRatios[i]->FindBin(0.))-0.002,str.Data());
94 text[i]->SetTextColor(colors[i]);
95 text[i]->Draw();
96 }
97}
98
99
100void DrawEffectOfChangeInComposition() {
101
102 //get the data
103 TFile* fin = TFile::Open("systematics_composition.root");
104
105 Int_t colors[] = {1,2,103,102,4,6,1};
106
107 TH1F* hRatios[6];
108
28899aeb 109 Float_t etaRange = 0.899;
110
b541c64c 111 for (Int_t i=0; i<6; i++) {
112 hRatios[i] = (TH1F*)fin->Get(Form("ratio_%d",i));
28899aeb 113
b541c64c 114 hRatios[i]->SetLineWidth(2);
28899aeb 115 hRatios[i]->SetLineColor(colors[i]);
b541c64c 116 hRatios[i]->SetMarkerStyle(22);
117 hRatios[i]->SetMarkerSize(0.8);
28899aeb 118
119 hRatios[i]->GetXaxis()->SetRangeUser(-etaRange, etaRange);
b541c64c 120 }
121
122 TPad* p = DrawCanvasAndPad("syst_changeOfComposition",700,400);
123 p->SetRightMargin(0.2);
124 p->SetLeftMargin(0.13);
125
126 TH2F* null = new TH2F("","",100,-1.05,1.05,100,0.97,1.03);
127 null->GetXaxis()->SetTitle("#eta");
128 null->GetYaxis()->SetTitle("Ratio pythia/modified composition");
129 null->Draw();
130
131 TLatex* text[6];
132
133 for(Int_t i=0; i<6; i++) {
134 hRatios[i]->Draw("same");
135
136 TString str(hRatios[i]->GetTitle());
137 str.Remove(0,16);
28899aeb 138 text[i] = new TLatex(1.08,hRatios[i]->GetBinContent(hRatios[i]->FindBin(0))-0.002,str.Data());
b541c64c 139 text[i]->SetTextColor(colors[i]);
140 text[i]->SetTextSize(0.053);
141
142 text[i]->Draw();
143 }
144
145
146}
147
148TPad* DrawCanvasAndPad(const Char_t* name, Int_t sizeX=600, Int_t sizeY=500) {
149
150 gStyle->SetOptStat(0);
151 gStyle->SetOptTitle(0);
152 gStyle->SetOptFit(0);
153
154 gStyle->SetTextSize(0.04);
155 gStyle->SetTitleSize(0.05,"xyz");
156 //gStyle->SetTitleFont(133, "xyz");
157 //gStyle->SetLabelFont(133, "xyz");
158 //gStyle->SetLabelSize(17, "xyz");
159 gStyle->SetLabelOffset(0.01, "xyz");
160
161 gStyle->SetTitleOffset(1.1, "y");
162 gStyle->SetTitleOffset(1.1, "x");
163 gStyle->SetEndErrorSize(0.0);
164
165 //##############################################
166
167 //making canvas and pads
168 TCanvas *c = new TCanvas(name,name,sizeX,sizeY);
169
170 TPad* p1 = new TPad("pad1","", 0, 0.0, 1.0, 1.0, 0, 0, 0);
171
172 p1->SetBottomMargin(0.15);
173 p1->SetTopMargin(0.03);
174 p1->SetLeftMargin(0.15);
175 p1->SetRightMargin(0.03);
176
177 p1->SetGridx();
178 p1->SetGridy();
179
180 p1->Draw();
181 p1->cd();
182
183 return p1;
184}
9e952c39 185
dd367a14 186void MisalignmentShowRawTrackPlots(const char* dirName = "fdNdEtaAnalysisESD")
9e952c39 187{
dd367a14 188 loadlibs();
189
190 TFile* file = TFile::Open("fullA-simrec/MB2/analysis_esd_raw.root");
191 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(dirName, dirName);
192 fdNdEtaAnalysis->LoadHistograms();
9e952c39 193
dd367a14 194 TFile* file2 = TFile::Open("fullA-sim/analysis_esd_raw.root");
195 dNdEtaAnalysis* fdNdEtaAnalysis2 = new dNdEtaAnalysis(dirName, dirName);
196 fdNdEtaAnalysis2->LoadHistograms();
9e952c39 197
198 TH3* track1 = fdNdEtaAnalysis->GetData()->GetTrackCorrection()->GetMeasuredHistogram()->Clone("track1");
199 TH3* track2 = fdNdEtaAnalysis2->GetData()->GetTrackCorrection()->GetMeasuredHistogram()->Clone("track2");
200
201 // normalize to number of events;
202 TH2* event1 = fdNdEtaAnalysis->GetData()->GetEventCorrection()->GetMeasuredHistogram();
203 TH2* event2 = fdNdEtaAnalysis2->GetData()->GetEventCorrection()->GetMeasuredHistogram();
204 Int_t event1Count = event1->Integral();
205 Int_t event2Count = event2->Integral();
206 track1->Scale(1.0 / event1Count);
207 track2->Scale(1.0 / event2Count);
208
209 const Float_t innerLimit = 0.49;
210 const Float_t outerLimit = 0.99;
211
212 track1->GetYaxis()->SetRangeUser(-outerLimit, outerLimit);
213 track2->GetYaxis()->SetRangeUser(-outerLimit, outerLimit);
214 AliPWG0Helper::CreateDividedProjections(track1, track2, "ze1");
215 TH1* fullRange = gROOT->FindObject("track1_ze1_div_track2_ze1");
216
217 track1->GetYaxis()->SetRangeUser(-innerLimit, innerLimit);
218 track2->GetYaxis()->SetRangeUser(-innerLimit, innerLimit);
219 AliPWG0Helper::CreateDividedProjections(track1, track2, "ze2");
220 TH1* central = gROOT->FindObject("track1_ze2_div_track2_ze2");
221 central->SetLineColor(1);
222 central->SetMarkerStyle(21);
223
224 for (Int_t x=1; x<track1->GetXaxis()->GetNbins(); ++x)
225 for (Int_t y=track1->GetYaxis()->FindBin(-innerLimit); y<track1->GetYaxis()->FindBin(innerLimit); ++y)
226 for (Int_t z=1; z<track1->GetZaxis()->GetNbins(); ++z)
227 {
228 track1->SetBinContent(x, y, z, 0);
229 track1->SetBinError(x, y, z, 0);
230 track2->SetBinContent(x, y, z, 0);
231 track2->SetBinError(x, y, z, 0);
232 }
233
234 track1->GetYaxis()->SetRangeUser(-outerLimit, outerLimit);
235 track2->GetYaxis()->SetRangeUser(-outerLimit, outerLimit);
236 AliPWG0Helper::CreateDividedProjections(track1, track2, "ze3");
237 TH1* peripheral = gROOT->FindObject("track1_ze3_div_track2_ze3");
238 peripheral->SetLineColor(2);
239 peripheral->SetMarkerStyle(22);
240 peripheral->SetMarkerColor(2);
241
dd367a14 242 TH2* tmp = new TH2F("tmp", ";p_{T} [GeV/c] ;#frac{tracks full misalignment during rec.}{tracks ideal misalignment during rec.}", 1, 0.1, 10, 1, 0.9, 1.3);
9e952c39 243
244 tmp->SetStats(kFALSE);
245 //tmp->GetXaxis()->SetNoExponent();
246
247 Float_t ptStart = 0.1;
248
249 fullRange->GetXaxis()->SetRangeUser(ptStart, 9.9);
250 central->GetXaxis()->SetRangeUser(ptStart, 9.9);
251 peripheral->GetXaxis()->SetRangeUser(ptStart, 9.9);
252
253 TCanvas* canvas = new TCanvas("MisalignmentShowRawTrackPlots", "MisalignmentShowRawTrackPlots", 700, 400);
254 gPad->SetLogx();
255 gPad->SetGridx();
256 gPad->SetGridy();
257
258 TLegend* legend = new TLegend(0.2, 0.7, 0.4, 0.8);
259
260 legend->AddEntry(central, "|#eta| < 0.5");
261 legend->AddEntry(peripheral, "0.5 < |#eta| < 1.0");
262
263 legend->SetFillColor(0);
264
265 tmp->Draw();
266 //fullRange->Draw("SAME");
267 central->Draw("SAME");
268 peripheral->Draw("SAME");
269
270 legend->Draw();
271
272 canvas->SaveAs("syst_mis_ntracks.eps");
273}
274
275
276void drawdNdEtaRatios(const char* canvasName, Int_t n, const char** files, const char** dirs, const char** names, Int_t* histID)
277{
278 gSystem->Load("libPWG0base");
279
280 TCanvas* canvas = new TCanvas(canvasName, canvasName, 1000, 500);
281 canvas->Divide(2, 1);
282
283 TLegend* legend = new TLegend(0.63, 0.73, 0.98, 0.98);
284 legend->SetFillColor(0);
285
286 TH1* base = 0;
287
288 for (Int_t i = 0; i < n; ++i)
289 {
290 TFile::Open(files[i]);
291
292 dNdEtaAnalysis* tmp = new dNdEtaAnalysis(dirs[i], dirs[i]);
293 tmp->LoadHistograms();
294
295 TH1* hist = tmp->GetdNdEtaPtCutOffCorrectedHistogram(histID[i]);
296
297 if (i == 0)
298 base = hist;
299
300 legend->AddEntry(hist, names[i]);
301
302 hist->SetMarkerColor(colors[i]);
303 hist->SetMarkerStyle(markers[i]);
304
305 canvas->cd(1);
306 hist->DrawCopy((i == 0) ? "" : "SAME");
307
308 if (i != 0)
309 {
310 canvas->cd(2);
311 hist->Divide(hist, base, 1, 1, "B");
312 hist->GetYaxis()->SetRangeUser(0.98, 1.02);
313 hist->DrawCopy((i == 1) ? "" : "SAME");
314 }
315 }
316
317 legend->Draw();
318
319 canvas->SaveAs(Form("%s.eps", canvas->GetName()));
320}
321
322void drawdNdEtaRatios(const char* canvasName, Int_t n, const char** files1, const char** files2, const char** dirs1, const char** dirs2, const char** names, Int_t* histID)
323{
324 gSystem->Load("libPWG0base");
325
326 TCanvas* canvas = new TCanvas(canvasName, canvasName, 700, 400);
327 canvas->SetLeftMargin(0.12);
328
329 TLegend* legend = new TLegend(0.35, 0.7, 0.65, 0.85);
330 legend->SetFillColor(0);
331
332 for (Int_t i = 0; i < n; ++i)
333 {
334 TFile::Open(files1[i]);
335
336 dNdEtaAnalysis* tmp1 = new dNdEtaAnalysis(dirs1[i], dirs1[i]);
337 tmp1->LoadHistograms();
338
339 TFile::Open(files2[i]);
340
341 dNdEtaAnalysis* tmp2 = new dNdEtaAnalysis(dirs2[i], dirs2[i]);
342 tmp2->LoadHistograms();
343
344 TH1* hist1 = tmp1->GetdNdEtaPtCutOffCorrectedHistogram(histID[i]);
345 TH1* hist2 = tmp2->GetdNdEtaPtCutOffCorrectedHistogram(histID[i]);
346
347 TH1* division = hist1->Clone();
348
349 division->Divide(hist1, hist2, 1, 1, "B");
350
351 division->SetMarkerColor(colors[i]);
352 division->SetMarkerStyle(markers[i]);
353
354 legend->AddEntry(division, names[i]);
355
356 division->SetTitle("");
357 division->GetYaxis()->SetTitle("#frac{dN_{ch}/d#eta using MC vtx}{dN_{ch}/d#eta using ESD vtx}");
358 division->SetStats(kFALSE);
359 division->GetYaxis()->SetTitleOffset(1.3);
360 division->GetXaxis()->SetRangeUser(-0.99, 0.99);
361 division->GetYaxis()->SetRangeUser(0.981, 1.02);
362 division->DrawCopy((i == 0) ? "" : "SAME");
363 }
364
365 gPad->SetGridx();
366 gPad->SetGridy();
367
368 legend->Draw();
369
370 canvas->SaveAs(Form("%s.eps", canvas->GetName()));
371}
372
373void vertexShiftStudy(Int_t histID)
374{
375 const char* files[] = { "maps/idealA/mc-vertex/analysis_esd.root", "results/idealC-idealA/analysis_esd.root", "maps/idealA/mc-vertex-shift-0.05/analysis_esd.root", "maps/idealA/mc-vertex-shift-0.1/analysis_esd.root", "maps/idealA/mc-vertex-shift-dep/analysis_esd.root" };
376 const char* dirs[] = { "dndeta", "dndeta", "dndeta", "dndeta", "dndeta" };
377 const char* names[] = { "mc vtx", "esd vtx", "+ 0.05 cm", "+ 0.1 cm", "old vtx shift" };
378 Int_t hist[] = { histID, histID, histID, histID, histID };
379
380 drawdNdEtaRatios("syst_vertex_shift1", 5, files, dirs, names, hist);
381
382 const char* files1[] = { "maps/idealA/mc-vertex/analysis_esd.root", "maps/idealA/mc-vertex/analysis_esd.root", "maps/idealA/mc-vertex/analysis_esd.root" };
383 const char* files2[] = { "results/idealC-idealA/analysis_esd.root", "results/idealC-idealA/analysis_esd.root", "results/idealC-idealA/analysis_esd.root" };
384 const char* dirs1[] = { "dndeta", "dndeta", "dndeta"};
385 const char* names[] = { "|vtx-z| < 10 cm", "-10 cm < vtx-z < 0 cm", "0 cm < vtx-z < 10 cm" };
386 Int_t hist[] = { 0, 1, 2 };
387
388 drawdNdEtaRatios("syst_vertex_shift2", 3, files1, files2, dirs, dirs, names, hist);
389}
390
391void vertexShift()
392{
393 TFile::Open("vertex.root");
394
395 TH2* hist = gFile->Get("fVertexCorr");
396 TProfile* prof = hist->ProfileX();
397
398 prof->SetStats(kFALSE);
399 prof->SetTitle(";MC vtx-z [cm];mean (ESD vtx-z - MC vtx-z) [cm]");
400 prof->GetYaxis()->SetTitleOffset(1.2);
401
402 prof->SetLineWidth(2);
403
404 TCanvas* canvas = new TCanvas("syst_vertex_shift", "syst_vertex_shift", 700, 400);
405
406 gPad->SetGridx();
407 gPad->SetGridy();
408
409 prof->Draw();
410
411 canvas->SaveAs(Form("%s.eps", canvas->GetName()));
412}
413
dd367a14 414void CompareRawTrackPlots(Float_t ptCut = 0.0)
415{
416 loadlibs();
417
418 const char* dirName = "fdNdEtaAnalysisESD";
419
420 TFile* file = TFile::Open("fullA-simrec/MB2/analysis_esd_raw.root");
421 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(dirName, dirName);
422 fdNdEtaAnalysis->LoadHistograms();
423
424 //TFile* file2 = TFile::Open("fullA-sim/analysis_esd_raw.root");
425 TFile* file2 = TFile::Open("fullA-simrecexcepttpc/analysis_esd_raw.root");
426 dNdEtaAnalysis* fdNdEtaAnalysis2 = new dNdEtaAnalysis(dirName, dirName);
427 fdNdEtaAnalysis2->LoadHistograms();
428
429 TH3* track1 = fdNdEtaAnalysis->GetData()->GetTrackCorrection()->GetMeasuredHistogram()->Clone("track1");
430 TH3* track2 = fdNdEtaAnalysis2->GetData()->GetTrackCorrection()->GetMeasuredHistogram()->Clone("track2");
431
432 // normalize to number of events;
433 TH2* event1 = fdNdEtaAnalysis->GetData()->GetEventCorrection()->GetMeasuredHistogram();
434 TH2* event2 = fdNdEtaAnalysis2->GetData()->GetEventCorrection()->GetMeasuredHistogram();
435 Int_t event1Count = event1->Integral();
436 Int_t event2Count = event2->Integral();
437 track1->Scale(1.0 / event1Count);
438 track2->Scale(1.0 / event2Count);
439
440 Float_t nTrack1 = track1->Integral(-1, -1, -1, -1, track1->GetZaxis()->FindBin(ptCut), track1->GetZaxis()->GetNbins());
441 Float_t nTrack2 = track2->Integral(-1, -1, -1, -1, track2->GetZaxis()->FindBin(ptCut), track2->GetZaxis()->GetNbins());
442
443 Printf("There are %.2f tracks/event in the first sample and %.2f tracks/event in the second sample. %.2f %% difference (with pt cut at %.2f GeV/c)", nTrack1, nTrack2, 100.0 * (nTrack1 - nTrack2) / nTrack1, ptCut);
444
445 gROOT->cd();
446
447 AliPWG0Helper::CreateDividedProjections(track1, track2);
448
449 new TCanvas; gROOT->FindObject("track1_yx_div_track2_yx")->Draw("COLZ");
450 new TCanvas; gROOT->FindObject("track1_zx_div_track2_zx")->Draw("COLZ");
451 new TCanvas; gROOT->FindObject("track1_zy_div_track2_zy")->Draw("COLZ");
452
453 new TCanvas;
454 proj1 = track1->Project3D("ze2");
455 proj2 = track2->Project3D("ze2");
456 AliPWG0Helper::NormalizeToBinWidth(proj1);
457 AliPWG0Helper::NormalizeToBinWidth(proj2);
458
459 proj1->DrawCopy();
460 proj2->SetLineColor(2);
461 proj2->SetMarkerColor(2);
462 proj2->DrawCopy("SAME");
463
464 AliPWG0Helper::CreateDividedProjections(track1, track2, "ze2");
465 TH1* pt = gROOT->FindObject("track1_ze2_div_track2_ze2");
466 new TCanvas; pt->Draw();
467}
468
469void MagnitudeOfCorrection(const char* fileName, const char* dirName = "dndeta", Float_t ptCut = 0.3)
470{
471 loadlibs();
472
473 TFile* file = TFile::Open(fileName);
474 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(dirName, dirName);
475 fdNdEtaAnalysis->LoadHistograms();
476 fdNdEtaAnalysis->GetData()->PrintInfo(ptCut);
477}
478