Renames and new scripts
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / scripts / CompareSecMaps.C
CommitLineData
cc83fca2 1/**
2 * Make ratio of two specific maps
3 *
4 * @param d Detector
5 * @param r Ring
6 * @param v Vertex bin (1 based)
7 * @param first First correction
8 * @param second Second correction
9 *
10 * @return Ratio of the two, or null
11 */
cc83fca2 12
13//____________________________________________________________________
14void
15CompareSecMaps(const char* fn1, const char* fn2,
0f84fefb 16 const char* n1=0, const char* n2=0,
17 bool load=true)
cc83fca2 18{
19
0f84fefb 20 // --- Load Utilities ----------------------------------------------
21 if (load) {
22 gROOT->Macro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadLibs.C");
23 gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/CompareCorrs.C");
cc83fca2 24 }
25
0f84fefb 26 // --- Get Objects -------------------------------------------------
27 TObject* o1 = 0;
28 TObject* o2 = 0;
29 GetObjects(AliForwardCorrectionManager::kSecondaryMap, fn1, fn2, o1, o2);
30 if (!o1 || !o2) return;
31 AliFMDCorrSecondaryMap* obj1 = static_cast<AliFMDCorrSecondaryMap*>(o1);
32 AliFMDCorrSecondaryMap* obj2 = static_cast<AliFMDCorrSecondaryMap*>(o2);
cc83fca2 33 UShort_t nVtx = obj1->GetVertexAxis().GetNbins();
34
35 // --- Make canvas -------------------------------------------------
0f84fefb 36 Canvas* c = new Canvas("secMapComparison", "Ratio of secondary maps", n1, n2);
37 c->Open();
cc83fca2 38
0f84fefb 39 // --- Loop over the data ------------------------------------------
cc83fca2 40 for (UShort_t d = 1; d <= 3; d++) {
41 UShort_t nR = (d == 1 ? 1 : 2);
42 for (UShort_t q = 0; q < nR; q++) {
43 Char_t r = (q == 0 ? 'I' : 'O');
44 UShort_t nS = (q == 0 ? 20 : 40);
45
0f84fefb 46 // --- Make 2D ratios ------------------------------------------
47 c->Clear(nVtx, d, r);
cc83fca2 48 TList hists;
49 for (UShort_t v=1; v <= nVtx; v++) {
0f84fefb 50 TVirtualPad* p = c->cd(v);
cc83fca2 51
0f84fefb 52 TH2* h1 = obj1->GetCorrection(d, r, v);
53 TH2* h2 = obj1->GetCorrection(d, r, v);
54
55 if (!h1) {
56 Error("CompareSecMaps",
57 "Map for FMD%d%c, vtxbin %3d not found in first",
58 d, r, v);
59 continue;
60 }
61 if (!h2) {
62 Error("CompareSecMaps",
63 "Map for FMD%d%c, vtxbin %3d not found in second",
64 d, r, v);
65 continue;
66 }
67
68 Double_t vl = obj1->GetVertexAxis().GetBinLowEdge(v);
69 Double_t vh = obj1->GetVertexAxis().GetBinUpEdge(v);
70 TH2* ratio =
71 static_cast<TH2*>(h1->Clone(Form("tmpFMD%d%c_%3d",d,r,v)));
72 ratio->SetName(Form("FMD%d%c_vtx%03d_ratio", d, r, v));
73 ratio->SetTitle(Form("%+5.1f<v_{z}<%-+5.1f", vl, vh));
74 ratio->Divide(h2);
75 ratio->SetStats(0);
76 ratio->SetDirectory(0);
77 ratio->SetZTitle("ratio");
78
cc83fca2 79 if (ratio->GetMaximum()-ratio->GetMinimum() > 10)
80 p->SetLogz();
81
82 ratio->Draw("colz");
83 hists.AddAt(ratio, v-1);
84 }
0f84fefb 85 c->Print(d, r);
cc83fca2 86
0f84fefb 87 // --- Make 1D profiles ----------------------------------------
88 c->Clear(nVtx, d, r);
cc83fca2 89 for (UShort_t v=1; v <= nVtx; v++) {
0f84fefb 90 c->cd(v);
91 TH2* hist = static_cast<TH2*>(hists.At(v-1));
92 TH1* prof = hist->ProjectionX();
cc83fca2 93 prof->Scale(1. / nS);
94 prof->SetStats(0);
95 prof->SetMinimum(0.8);
96 prof->SetMaximum(1.2);
97
cc83fca2 98 prof->Draw();
99 prof->Fit("pol0","Q");
100
101 TF1* f = prof->GetFunction("pol0");
102
103 TLatex* l = new TLatex(0.5, 0.4, Form("A = %f #pm %f",
104 f->GetParameter(0),
105 f->GetParError(0)));
106 l->SetTextAlign(22);
107 l->SetNDC();
108 l->Draw();
109 l->DrawLatex(0.5, 0.3, Form("#chi^2/NDF = %f / %d = %f",
110 f->GetChisquare(),
111 f->GetNDF(),
112 f->GetChisquare() / f->GetNDF()));
113 Double_t dist = TMath::Abs(1 - f->GetParameter(0));
114 l->DrawLatex(0.5, 0.35, Form("|1 - A| = %f %s #deltaA",
115 dist, dist <= f->GetParError(0) ?
116 "#leq" : ">"));
117
118 TLine* l1 = new TLine(-4, 1, 6, 1);
119 l1->SetLineColor(kRed);
120 l1->SetLineStyle(2);
121 l1->Draw();
122 }
123
0f84fefb 124 c->Print(d, r, "profiles");
cc83fca2 125 }
126 }
127
0f84fefb 128 // --- Close stuff -------------------------------------------------
129 c->Close();
130 // file1->Close();
131 // file2->Close();
cc83fca2 132}
133
134
0f84fefb 135//____________________________________________________________________
136//
137// EOF
138//