]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FORWARD/analysis2/corrs/DrawCorrVtxBias.C
Documentation fixes
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / corrs / DrawCorrVtxBias.C
CommitLineData
b0e36b4a 1/**
2 * @file
3 *
4 * Scripts to draw energy loss fits from correction object file
5 *
f0ef1e71 6 * @ingroup pwg2_forward_scripts_corr
b0e36b4a 7 */
8/**
9 * Clear canvas
10 *
11 * @param c Canvas to clear
12 *
f0ef1e71 13 * @ingroup pwg2_forward_scripts_corr
b0e36b4a 14 */
15void
16ClearCanvas(TCanvas* c)
17{
18 c->SetLeftMargin(.1);
19 c->SetRightMargin(.05);
20 c->SetBottomMargin(.1);
21 c->SetTopMargin(.05);
22 c->Clear();
23}
24
25/**
26 * Draw energy loss fits to a multi-page PDF.
27 *
28 * @par Input:
29 * The input file is expected to contain a AliFMDCorrELossFit object
970b1a8a 30 * named @c elossfits in the top level directory.
b0e36b4a 31 *
970b1a8a 32 * @par Output:
b0e36b4a 33 * A multi-page PDF. Note, that the PDF generated by ROOT in this way
34 * is broken (cannot be read by Acrobat Reader on Windows and MacOSX)
35 * and one should pass it through a filter to correct these problems.
36 *
37 * @param fname File name
38 * @param option Drawing options
39 *
f0ef1e71 40 * @ingroup pwg2_forward_scripts_corr
b0e36b4a 41 */
42void
43DrawCorrVtxBias(const char* fname, const char* option="colz")
44{
45 //__________________________________________________________________
46 // Load libraries and object
47 gROOT->Macro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadLibs.C");
48
49 TFile* file = TFile::Open(fname, "READ");
50 if (!file) {
51 Error("DrawCorrVtxBias", "Failed to open %s", fname);
52 return;
53 }
54 TString pname(fname);
55 pname.ReplaceAll(".root", ".pdf");
56
57 const char* objName =
58 AliForwardCorrectionManager::Instance()
59 .GetObjectName(AliForwardCorrectionManager::kVertexBias);
60 AliFMDCorrVertexBias* corr =
61 static_cast<AliFMDCorrVertexBias*>(file->Get(objName));
62 if (!corr) {
63 Error("DrawCorrVtxBias", "Object '%s' not found in %s", objName, fname);
64 return;
65 }
66
67 //__________________________________________________________________
68 // Create a canvas
69 TCanvas* c = new TCanvas("c", "c", 800 / TMath::Sqrt(2), 800);
70 c->SetFillColor(0);
71 c->SetBorderSize(0);
72 c->SetBorderMode(0);
73 c->Print(Form("%s[", pname.Data()));
74
75 gStyle->SetOptStat(0);
76 gStyle->SetTitleColor(0);
77 gStyle->SetTitleStyle(0);
78 gStyle->SetTitleBorderSize(0);
79 gStyle->SetTitleX(.1);
80 gStyle->SetTitleY(1);
81 gStyle->SetTitleW(.8);
82 gStyle->SetTitleH(.09);
83 gStyle->SetFrameFillColor(kWhite);
84 gStyle->SetFrameBorderSize(1);
85 gStyle->SetFrameBorderMode(1);
86 gStyle->SetPalette(1);
87
88 ClearCanvas(c);
89 //__________________________________________________________________
90 // Create a title page
91 TLatex* ll = new TLatex(.5,.8, fname);
92 ll->SetTextAlign(22);
93 ll->SetTextSize(0.03);
94 ll->SetNDC();
95 ll->Draw();
96
97 TLatex* l = new TLatex(.5,.8, fname);
98 l->SetNDC();
99 l->SetTextSize(0.03);
100 l->SetTextFont(132);
101 l->SetTextAlign(12);
102 l->DrawLatex(0.2, 0.70, "Vertex Bias Corrections");
103 l->SetTextAlign(22);
104 l->DrawLatex(0.5, 0.60, "c_{v}(#eta,#phi)=#frac{1/N_{t}}{1/N_{v}}"
105 "#sum_{i}^{N_{tv}}N_{ch,i}(#eta,#phi) / "
106 "#sum_{i}^{N_{v}}N_{ch,i}(#eta,#phi)");
107 l->SetTextAlign(12);
108 l->DrawLatex(0.2, 0.50, "N_{t}: Number of events w/triggers");
109 l->DrawLatex(0.2, 0.45, "N_{v}: Number of events w/vertex");
110 l->DrawLatex(0.2, 0.40, "N_{tv}: Number of events w/trigger and vertex");
111 l->DrawLatex(0.2, 0.35, "N_{ch,i}(#eta,#phi): Number of charged, "
112 "particles in (#eta,#phi) bin");
113 l->DrawLatex(0.2, 0.30, "All quantities determined in MC");
114
115 c->Print(pname.Data(), "Title:Title page");
116
117 ClearCanvas(c);
118
119 //__________________________________________________________________
120 // Draw all corrections
121 const TAxis& vtxAxis = corr->GetVertexAxis();
122 Int_t nVtx = vtxAxis.GetNbins();
123 UShort_t nQ = 2;
124 UShort_t d = 0;
125 for (UShort_t q = 0; q < nQ; q++) {
126 Char_t r = (q == 0 ? 'I' : 'O');
127
128 ClearCanvas(c);
129 c->Divide(2, (nVtx+1)/2);
130 for (UShort_t v=1; v <= nVtx; v++) {
131 TVirtualPad* p = c->cd(v);
132
133
134 TH2* h1 = corr->GetCorrection(r, v);
135 if (!h1) {
136 Warning("DrawCorrVtxBias", "No correction for r=%c, v=%d", r, v);
137 continue;
138 }
139 h1->Draw(option);
140 }
141 c->Print(pname.Data(), Form("Title:FMDX%c", r));
142 }
143
144 //__________________________________________________________________
145 // Close output file
146 c->Print(Form("%s]", pname.Data()));
147}
148//
149// EOF
150//