0321b05e |
1 | // |
2 | // This macro is a part of "Alice PPR fast flow analysis package" |
3 | // |
4 | // The macro draws event plane resolution and V2 resolution in function |
5 | // of V2 and multiplicity |
6 | // |
7 | // IMPUT PARAMETERS |
8 | // type: |
9 | // 0 - event plane resolution |
10 | // 1 - V2 resolution |
11 | // |
12 | // desc 0/1 - draw Graph descriptions |
13 | // |
14 | // Sylwester Radomski, GSI |
15 | // mail: S.Radomski@gsi.de |
16 | // Oct 31, 2002 |
17 | // |
18 | |
19 | AliFlowDrawSummary(int type = 0, int desc = 0, const char* fileName = 0) { |
20 | |
21 | gROOT->SetStyle("Plain"); |
22 | |
23 | if (type > 1) { |
24 | ::Error("AliFlowDrawSummary","Wrong Type [0-1] : %d", type); |
25 | return; |
26 | } |
27 | |
28 | const Int_t startMarker = 21; |
29 | const char *dataName = "flowPicoEvent.root"; |
30 | TFile *dataFile = new TFile(dataName,"UPDATE"); |
31 | TNtuple *data = (TNtuple *) dataFile->Get("flowData"); |
32 | |
33 | TGraphErrors *g; |
34 | TH1D *h; |
35 | |
36 | const char* patt = "Mult == %d && trueV2 > %f && trueV2 < %f"; |
37 | |
38 | const char* varName[2] = {"Psi - truePsi >> htemp(90, -90, 90) ", |
39 | "100 * (trueV2-V2)/trueV2 >> htemp(100,-200,200)"}; |
40 | |
41 | const char* yTitle[2] = {"Event Plane Resolution [deg]", |
42 | "V_{2} Resolution [%]"}; |
43 | |
44 | char buff[100]; |
45 | |
46 | Double_t v2 = 0.02; |
47 | |
48 | const Int_t nMultPoint = 11; |
49 | const Int_t nV2Point = 4; |
50 | |
51 | const Int_t multPoints[nMultPoint] = {200, 400, 600, 800, 1000, 1500, 2000, 2500, 3000, |
52 | 4000, 5000};// 6000, 8000, 10000}; |
53 | |
54 | const Double_t v2Points[nV2Point] = {0.04, 0.06, 0.08, 0.1}; |
55 | //const Double_t v2Points[nV2Point] = {0.06}; |
56 | |
57 | TCanvas *c = new TCanvas(); |
58 | c->SetFillColor(10); |
59 | c->SetTicks(1,1); |
60 | |
61 | TCanvas *d = new TCanvas(); |
62 | |
63 | for (Int_t j=0; j<nV2Point; j++) { |
64 | |
65 | g = new TGraphErrors(); |
66 | g->SetMarkerStyle(18+j); |
67 | |
68 | for(Int_t i=0; i<nMultPoint; i++) { |
69 | |
70 | Int_t totalMult = multPoints[i]; |
71 | Double_t totalV2 = v2Points[j]; |
72 | |
73 | sprintf(buff, patt, totalMult, totalV2-0.001, totalV2+0.001); |
74 | data->Draw(varName[type], buff); |
75 | h = (TH1D*)gPad->GetPrimitive("htemp"); |
76 | |
77 | ::Info("AliFlowDrawSummary", buff); |
78 | |
79 | g->SetPoint(i, multPoints[i], h->GetRMS()); |
80 | g->SetPointError(i, 0, h->GetRMS() / TMath::Sqrt(h->GetEntries())); |
81 | } |
82 | |
83 | g->SetMinimum(0); |
84 | g->SetMarkerSize(1); |
85 | g->SetMarkerStyle(startMarker+j); |
86 | |
87 | c->cd(); |
88 | if (j==0) { |
89 | g->Draw("APL"); |
90 | g->GetHistogram()->SetXTitle("Number of Good Tracks"); |
91 | g->GetHistogram()->SetYTitle(yTitle[type]); |
92 | } |
93 | else g->Draw("PL"); |
94 | d->cd(); |
95 | } |
96 | |
97 | if (desc) { |
98 | |
99 | TText *text; |
100 | TMarker *marker; |
101 | c->cd(); |
102 | |
103 | const char* info = "v2 = %.2f"; |
104 | |
105 | for (Int_t j=0; j<nV2Point; j++) { |
106 | |
107 | Double_t y; |
108 | if (type == 0) y = 30 - 3*y; |
109 | else y = 70 - 5*j; |
110 | |
111 | marker = new TMarker(3000, y+1, startMarker+j); |
112 | marker->Draw("a"); |
113 | marker->ls(); |
114 | |
115 | sprintf(buff, info, v2Points[j]); |
116 | text = new TText(3100, y, buff); |
117 | //text->SetTextColor(j-1); |
118 | text->Draw(); |
119 | } |
120 | } |
121 | |
122 | if (fileName) { |
123 | |
124 | char buffer[60]; |
125 | sprintf(buffer, "plots/%s.eps", fileName); |
126 | c->Print(buffer, "eps"); |
127 | |
128 | sprintf(buffer, "plots/%s.gif", fileName); |
129 | c->Print(buffer, "gif"); |
130 | } |
131 | } |