Added class AliForwarddNdetaTask to do the dN/deta
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / OtherData.C
CommitLineData
7c1a1f1d 1/**
2 * @file
3 *
4 * @ingroup pwg2_forward_scripts
5 */
7e4038b5 6#include <TGraphAsymmErrors.h>
7#include <TMultiGraph.h>
8#include <TStyle.h>
9#include <TMath.h>
10#include <TCanvas.h>
11#include <TLegend.h>
12
13//____________________________________________________________________
14/**
7c1a1f1d 15 * @defgroup pwg2_forward_otherdata External data
7e4038b5 16 *
7c1a1f1d 17 * @ingroup pwg2_forward_scripts
7e4038b5 18 */
19//____________________________________________________________________
20/**
21 * Values used
22 *
7c1a1f1d 23 * @ingroup pwg2_forward_otherdata
7e4038b5 24 */
25enum {
26 /** Color used for UA5 data */
27 UA5Color = kBlue+1,
28 /** Color used for CMS data */
29 CMSColor = kGreen+1,
30 /** Color used for ALICE data */
31 ALICEColor = kMagenta+1,
32 /** Marker style INEL data */
9bff843b 33 INELStyle = 22,
7e4038b5 34 /** Marker style INEL>0 data */
9bff843b 35 INELGtStyle= 29,
7e4038b5 36 /** Marker style NSD data */
9bff843b 37 NSDStyle = 23,
7e4038b5 38 /** Colour offset for mirror data */
39 MirrorOff = 4
40};
41
42//____________________________________________________________________
43/**
44 * Set graph attributes
45 *
46 * @param g Graph
47 * @param marker Marker style
48 * @param color Marker and line color
49 * @param name Name of graph
50 * @param title Title of graph
51 *
7c1a1f1d 52 * @ingroup pwg2_forward_otherdata
7e4038b5 53 */
54void
55SetGraphAttributes(TGraph* g, Int_t marker, Int_t color,
56 const Char_t* name, const Char_t* title)
57{
58 g->SetName(name);
59 g->SetTitle(title);
60 g->SetMarkerStyle(marker);
61 g->SetMarkerColor(color);
62 g->SetLineColor(color);
63 g->SetFillColor(0);
64 g->SetFillStyle(0);
65 g->GetHistogram()->SetStats(kFALSE);
66 g->GetHistogram()->SetXTitle("#eta");
67 g->GetHistogram()->SetYTitle("#frac{1}{N} #frac{dN_{ch}}{#eta}");
68}
69
70//____________________________________________________________________
71/**
72 * Get the UA5 NSD data for pp at @f$ \sqrt{s} = 900GeV@f$
73 * p7886_d1x1y4 - Z.Phys.C33:1-6,1986.
74 *
75 * @param mirrored Wether to produce the mirrored plot
76 *
77 * @return graph of data
78 *
7c1a1f1d 79 * @ingroup pwg2_forward_otherdata
7e4038b5 80 */
81TGraphAsymmErrors* UA5Nsd(Bool_t mirrored=false)
82{
83 //UA5 data NSD - p7886_d1x1y4 - Z.Phys.C33:1-6,1986.
84 double x[] = { 0.125, 0.375, 0.625, 0.875, 1.125, 1.375, 1.625, 1.875, 2.125,
85 2.375, 2.625, 2.875, 3.125, 3.375, 3.625, 3.875, 4.125, 4.375,
86 4.625 };
87 double exm[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
88 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
89 double exp[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
90 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
91 double y[] = { 3.48, 3.38, 3.52, 3.68, 3.71, 3.86, 3.76, 3.66, 3.72,
92 3.69, 3.56, 3.41, 3.15, 3.09, 2.74, 2.73, 2.32, 1.99, 1.69 };
93 double eym[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07,
94 0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
95 double eyp[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07,
96 0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
97 const int np = 20;
98 double xm[np];
b2e7f2d6 99 double exmm[np];
100 double expm[np];
101 double ym[np];
102 double eymm[np];
103 double eypm[np];
104 for (int i = 0; i < np; i++) {
105 int j = np-1-i;
106 xm[i] = -x[j];
107 exmm[i] = exm[j];
108 expm[i] = exp[j];
109 ym[i] = y[j];
110 eymm[i] = eym[j];
111 eypm[i] = eyp[j];
112 }
7e4038b5 113
b2e7f2d6 114 TGraphAsymmErrors* g = new TGraphAsymmErrors(19,x, y, exm, exp, eym, eyp);
115 TGraphAsymmErrors* gm = new TGraphAsymmErrors(19,xm,ym,exmm,expm,eymm,eypm);
7e4038b5 116 SetGraphAttributes(g, NSDStyle, UA5Color,"ua5_nsd", "UA5 NSD");
117 SetGraphAttributes(gm, NSDStyle+MirrorOff, UA5Color,"ua5_nsd_mirrored",
118 "UA5 NSD (mirrored)");
119
120 return (mirrored ? gm : g);
121}
122
123//____________________________________________________________________
124/**
125 * Get the UA5 INEL data for pp at @f$ \sqrt{s} = 900GeV@f$
126 * p7886_d2x1y2 - Z.Phys.C33:1-6,1986.
127 *
128 * @param mirrored Wether to produce the mirrored plot
129 *
130 * @return graph of data
131 *
7c1a1f1d 132 * @ingroup pwg2_forward_otherdata
7e4038b5 133 */
134TGraphAsymmErrors* UA5Inel(Bool_t mirrored=false)
135{
136 //UA5 data INEL - p7886_d2x1y2 - Z.Phys.C33:1-6,1986.
137 double x[] = { 0.125, 0.375, 0.625, 0.875, 1.125, 1.375, 1.625, 1.875, 2.125,
138 2.375, 2.625, 2.875, 3.125, 3.375, 3.625, 3.875, 4.125, 4.375,
139 4.625 };
140 double exm[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
141 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
142 double exp[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
143 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
144 double y[] = { 3.14, 3.04, 3.17, 3.33, 3.33, 3.53, 3.46, 3.41, 3.45,
145 3.39, 3.07, 3.07, 2.93, 2.93, 2.55, 2.48, 2.18, 1.91, 1.52 };
146 double eym[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07,
147 0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
148 double eyp[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07,
149 0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
150 const int np = 19;
151 double xm[np];
b2e7f2d6 152 double exmm[np];
153 double expm[np];
154 double ym[np];
155 double eymm[np];
156 double eypm[np];
157 for (int i = 0; i < np; i++) {
158 int j = np-1-i;
159 xm[i] = -x[j];
160 exmm[i] = exm[j];
161 expm[i] = exp[j];
162 ym[i] = y[j];
163 eymm[i] = eym[j];
164 eypm[i] = eyp[j];
165 }
166 TGraphAsymmErrors* g = new TGraphAsymmErrors(np,x, y, exm, exp, eym, eyp);
167 TGraphAsymmErrors* gm = new TGraphAsymmErrors(np,xm,ym,exmm,expm,eymm,eypm);
7e4038b5 168
169 SetGraphAttributes(g, INELStyle, UA5Color, "ua5_inel", "UA5 INEL");
170 SetGraphAttributes(gm, INELStyle+MirrorOff, UA5Color, "ua5_inel_mirrored",
171 "UA5 INEL (mirrored)");
172
173 return (mirrored ? gm : g);
174}
175
176//____________________________________________________________________
177/**
178 * Get the ALICE INEL data in @f$ |\eta|<1.3@f$ for pp at @f$ \sqrt{s}
179 * = 900GeV@f$
180 * p7742_d1x1y1 - Eur.Phys.J.C68:89-108,2010.
181 *
182 * @return graph of data
183 *
7c1a1f1d 184 * @ingroup pwg2_forward_otherdata
7e4038b5 185 */
186TGraphAsymmErrors* AliceCentralInel900()
187{
188 // INEL - p7742_d1x1y1 - Eur.Phys.J.C68:89-108,2010.
189 TGraphAsymmErrors* g = 0;
190 double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3,
191 -0.1, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3 };
192 double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
193 0.1, 0.1, 0.1, 0.1, 0.1 };
194 double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
195 0.1, 0.1, 0.1, 0.1, 0.1 };
196 double y[] = { 3.28, 3.28, 3.22, 3.12, 3.06, 3.02, 2.98, 3.02, 3.02,
197 3.05, 3.15, 3.21, 3.26, 3.33 };
198 double eym[] = { 0.06324555320336758, 0.06324555320336758,
199 0.06324555320336758, 0.06324555320336758,
200 0.06324555320336758, 0.05385164807134505,
201 0.05385164807134505, 0.05385164807134505,
202 0.05385164807134505, 0.06324555320336758,
203 0.06324555320336758, 0.06324555320336758,
204 0.06324555320336758, 0.06324555320336758 };
205 double eyp[] = { 0.08246211251235322, 0.08246211251235322,
206 0.08246211251235322, 0.08246211251235322,
207 0.08246211251235322, 0.08246211251235322,
208 0.07280109889280519, 0.08246211251235322,
209 0.08246211251235322, 0.08246211251235322,
210 0.08246211251235322, 0.08246211251235322,
211 0.08246211251235322, 0.08246211251235322 };
212 const int np = 14;
213 for (int i = 0; i < np; i++) {
214 eym[i] += 0.02;
215 eyp[i] += 0.02;
216 }
217 g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
218 SetGraphAttributes(g, INELStyle, ALICEColor, "alice_inel",
219 "ALICE INEL (publ.)");
220
221 return g;
222}
223
224//____________________________________________________________________
225/**
226 * Get the ALICE INEL>0 data in @f$ |\eta|<1.3@f$ for pp at @f$
227 * \sqrt{s} = 900GeV@f$
228 *
229 * p7741_d4x1y1 - Eur.Phys.J.C68:345-354,2010.
230 *
231 * @return graph of data
232 *
7c1a1f1d 233 * @ingroup pwg2_forward_otherdata
7e4038b5 234 */
235TGraphAsymmErrors* AliceCentralInelGt900()
236{
237 // INEL>0 - p7741_d4x1y1 - Eur.Phys.J.C68:345-354,2010.
238 double x[] = { -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.7,
239 0.9 };
240 double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
241 0.1 };
242 double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
243 0.1 };
244 double y[] = { 4.0, 3.87, 3.8, 3.7, 3.67, 3.73, 3.72, 3.77, 3.92,
245 4.01 };
246 double eym[] = { 0.07615773105863909, 0.07615773105863909,
247 0.07615773105863909, 0.06324555320336758,
248 0.06324555320336758, 0.06324555320336758,
249 0.0670820393249937, 0.07615773105863909,
250 0.07615773105863909, 0.07615773105863909 };
251 double eyp[] = { 0.08544003745317531, 0.07615773105863909,
252 0.07615773105863909, 0.07280109889280519,
253 0.07280109889280519, 0.07280109889280519,
254 0.07615773105863909, 0.07615773105863909,
255 0.08544003745317531, 0.08544003745317531 };
256 const int np = 10;
257 for (int i = 0; i < np; i++) {
258 double stat = (i >= 3 && i<=5) ? 0.02 : 0.03;
259 eym[i] += stat;
260 eyp[i] += stat;
261 }
262
263 TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
264 SetGraphAttributes(g, INELGtStyle, ALICEColor, "alice_inelgt900",
265 "ALICE INEL>0 (publ.)");
266 return g;
267
268}
269
270//____________________________________________________________________
271/**
272 * Get the ALICE INEL>0 data in @f$ |\eta|<0.9@f$ for pp at @f$
273 * \sqrt{s} = 2.36TeV@f$
274 *
275 * p7741_d5x1y1 - Eur.Phys.J.C68:345-354,2010.
276 *
277 * @return graph of data
278 *
7c1a1f1d 279 * @ingroup pwg2_forward_otherdata
7e4038b5 280 */
281TGraphAsymmErrors* AliceCentralInelGt2360()
282{
283 // INEL>0 - p7741_d5x1y1 - Eur.Phys.J.C68:345-354,2010.
284 double x[] = { -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.7, 0.9 };
285 double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
286 double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
287 double y[] = { 4.91, 4.76, 4.63, 4.64, 4.55, 4.55, 4.64, 4.66, 4.82, 4.88 };
288 double eym[] = { 0.08544003745317531, 0.08544003745317531,
289 0.08544003745317531, 0.08544003745317531,
290 0.08544003745317531, 0.08544003745317531,
291 0.08544003745317531, 0.08544003745317531,
292 0.08544003745317531, 0.08544003745317531 };
293 double eyp[] = { 0.11401754250991379, 0.11401754250991379,
294 0.1044030650891055, 0.1044030650891055,
295 0.1044030650891055, 0.1044030650891055,
296 0.1044030650891055, 0.1044030650891055,
297 0.11401754250991379, 0.11401754250991379 };
298 const int np = 10;
299 for (int i = 0; i < np; i++) {
300 double stat = 0.3;
301 eym[i] += stat;
302 eyp[i] += stat;
303 }
304
305 TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
306 SetGraphAttributes(g, INELGtStyle, ALICEColor, "alice_inelgt2360",
307 "ALICE INEL>0 (publ.)");
308 return g;
309}
310
311//____________________________________________________________________
312/**
313 * Get the ALICE INEL>0 data in @f$ |\eta|<0.9@f$ for pp at @f$
314 * \sqrt{s} = 7TeV@f$
315 *
316 * p7741_d6x1y1 - Eur.Phys.J.C68:345-354,2010.
317 *
318 * @return graph of data
319 *
7c1a1f1d 320 * @ingroup pwg2_forward_otherdata
7e4038b5 321 */
322TGraphAsymmErrors* AliceCentralInelGt7000()
323{
324 // INEL>0 - p7741_d6x1y1 - Eur.Phys.J.C68:345-354,2010.
325// Plot: p7741_d6x1y1
326 double x[] = { -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.7, 0.9 };
327 double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
328 double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
329 double y[] = { 6.22, 6.07, 6.01, 5.84, 5.85, 5.85, 5.91, 6.01, 6.17, 6.26 };
330 double eym[] = { 0.1216552506059644, 0.1216552506059644,
331 0.1216552506059644, 0.11180339887498948,
332 0.11180339887498948, 0.11180339887498948,
333 0.11180339887498948, 0.1216552506059644,
334 0.1216552506059644, 0.1216552506059644 };
335 double eyp[] = { 0.21095023109728983, 0.21095023109728983,
336 0.2009975124224178, 0.2009975124224178,
337 0.2009975124224178, 0.2009975124224178,
338 0.2009975124224178, 0.2009975124224178,
339 0.21095023109728983, 0.21095023109728983 };
340 const int np = 10;
341 for (int i = 0; i < np; i++) {
342 double stat = 0.2;
343 eym[i] += stat;
344 eyp[i] += stat;
345 }
346
347 TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
348 SetGraphAttributes(g, INELGtStyle, ALICEColor, "alice_inelgt7000",
349 "ALICE INEL>0 (publ.)");
350 return g;
351}
352
353//____________________________________________________________________
354/**
355 * Get the ALICE NSD data in @f$ |\eta|<1.3@f$ for pp at @f$
356 * \sqrt{s} = 900GeV@f$
357 *
358 * p7742_d2x1y1 - Eur.Phys.J.C68:89-108,2010.
359 *
360 * @return graph of data
361 *
7c1a1f1d 362 * @ingroup pwg2_forward_otherdata
7e4038b5 363 */
364TGraphAsymmErrors* AliceCentralNsd900()
365{
366 //NSD - p7742_d2x1y1 - Eur.Phys.J.C68:89-108,2010.
367 double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3,
368 0.5, 0.7, 0.9, 1.1, 1.3 };
369 double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
370 0.1, 0.1, 0.1, 0.1, 0.1 };
371 double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
372 0.1, 0.1, 0.1, 0.1, 0.1 };
373 double y[] = { 3.9, 3.89, 3.81, 3.7, 3.64, 3.59, 3.53, 3.58, 3.59,
374 3.61, 3.74, 3.8, 3.87, 3.95 };
375 double eym[] = { 0.13341664064126335, 0.13152946437965907,
376 0.13152946437965907, 0.1216552506059644,
377 0.1216552506059644, 0.1216552506059644,
378 0.1216552506059644, 0.1216552506059644,
379 0.1216552506059644, 0.1216552506059644,
380 0.1216552506059644, 0.13152946437965907,
381 0.13152946437965907, 0.13341664064126335 };
382 double eyp[] = { 0.13341664064126335, 0.13152946437965907,
383 0.13152946437965907, 0.1216552506059644,
384 0.1216552506059644, 0.1216552506059644,
385 0.1216552506059644, 0.1216552506059644,
386 0.1216552506059644, 0.1216552506059644,
387 0.1216552506059644, 0.13152946437965907,
388 0.13152946437965907, 0.13341664064126335 };
389 const int np = 14;
390 for (int i = 0; i < np; i++) {
391 double stat = (i == 0 || i == np-1) ? 0.03 : 0.02;
392 eym[i] += stat;
393 eyp[i] += stat;
394 }
395
396 TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
397 SetGraphAttributes(g, NSDStyle, ALICEColor, "alice_nsd", "ALICE NSD (publ.)");
398
399 return g;
400}
401
402//____________________________________________________________________
403/**
404 * Get the ALICE INEL data in @f$ |\eta|<1.3@f$ for pp at @f$
405 * \sqrt{s} = 2.36TeV@f$
406 *
407 * p7742_d3x1y1 - Eur.Phys.J.C68:89-108,2010.
408 *
409 * @return graph of data
410 *
7c1a1f1d 411 * @ingroup pwg2_forward_otherdata
7e4038b5 412 */
413TGraphAsymmErrors* AliceCentralInel2360()
414{
415 // INEL - p7742_d3x1y1 - Eur.Phys.J.C68:89-108,2010.
416 double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3,
417 0.5, 0.7, 0.9, 1.1, 1.3 };
418 double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
419 0.1, 0.1, 0.1, 0.1, 0.1 };
420 double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
421 0.1, 0.1, 0.1, 0.1, 0.1 };
422 double y[] = { 4.08, 4.01, 4.0, 3.88, 3.77, 3.8, 3.73, 3.71, 3.79,
423 3.82, 3.94, 4.02, 4.05, 4.16 };
424 double eym[] = { 0.13341664064126335, 0.12369316876852982,
425 0.12369316876852982, 0.1216552506059644,
426 0.1216552506059644, 0.1216552506059644,
427 0.1216552506059644, 0.11180339887498948,
428 0.1216552506059644, 0.1216552506059644,
429 0.12369316876852982, 0.12369316876852982,
430 0.13341664064126335, 0.13341664064126335 };
431 double eyp[] = { 0.2716615541441225, 0.2716615541441225,
432 0.2716615541441225, 0.260768096208106,
433 0.25079872407968906, 0.25079872407968906,
434 0.25079872407968906, 0.25079872407968906,
435 0.25079872407968906, 0.260768096208106,
436 0.261725046566048, 0.2716615541441225,
437 0.2716615541441225, 0.2816025568065745 };
438 const int np = 14;
439 for (int i = 0; i < np; i++) {
440 double stat = (i < 3 || i > np-1-4) ? 0.03 : 0.02;
441 eym[i] += stat;
442 eyp[i] += stat;
443 }
444
445 TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
446 SetGraphAttributes(g, NSDStyle, ALICEColor, "alice_inel2360",
447 "ALICE INEL (publ.)");
448 return g;
449}
450
451//____________________________________________________________________
452/**
453 * Get the ALICE NSD data in @f$ |\eta|<1.3@f$ for pp at @f$
454 * \sqrt{s} = 2.36TeV@f$
455 *
456 * p7742_d4x1y1 - Eur.Phys.J.C68:89-108,2010.
457 *
458 * @return graph of data
459 *
7c1a1f1d 460 * @ingroup pwg2_forward_otherdata
7e4038b5 461 */
462TGraphAsymmErrors* AliceCentralNsd2360()
463{
464 // NSD - p7742_d4x1y1 - Eur.Phys.J.C68:89-108,2010.
465 double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3,
466 0.5, 0.7, 0.9, 1.1, 1.3 };
467 double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
468 0.1, 0.1, 0.1, 0.1, 0.1 };
469 double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
470 0.1, 0.1, 0.1, 0.1, 0.1 };
471 double y[] = { 4.79, 4.72, 4.7, 4.56, 4.44, 4.47, 4.39, 4.37, 4.47,
472 4.5, 4.64, 4.73, 4.76, 4.9 };
473 double eym[] = { 0.13601470508735444, 0.13341664064126335,
474 0.13341664064126335, 0.12369316876852982,
475 0.12369316876852982, 0.12369316876852982,
476 0.12369316876852982, 0.12369316876852982,
477 0.12369316876852982, 0.12369316876852982,
478 0.12369316876852982, 0.13341664064126335,
479 0.13341664064126335, 0.13341664064126335 };
480 double eyp[] = { 0.18439088914585774, 0.18248287590894657,
481 0.18248287590894657, 0.1726267650163207,
482 0.1726267650163207, 0.1726267650163207,
483 0.16278820596099708, 0.16278820596099708,
484 0.1726267650163207, 0.1726267650163207,
485 0.1726267650163207, 0.18248287590894657,
486 0.18248287590894657, 0.18248287590894657 };
487 const int np = 14;
488
489 for (int i = 0; i < np; i++) {
490 double stat = (i < 1) ? 0.03 : 0.02;
491 eym[i] += stat;
492 eyp[i] += stat;
493 }
494
495 TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
496 SetGraphAttributes(g, NSDStyle, ALICEColor, "alice_nsd2360",
497 "ALICE NSD (publ.)");
498 return g;
499}
500
501
502//____________________________________________________________________
503/**
504 * Get the CMS NSD data in @f$ |\eta|<2.25@f$ for pp at @f$
505 * \sqrt{s} = 900GeV@f$
506 *
507 * p7743_d8x1y1
508 *
509 * @return graph of data
510 *
7c1a1f1d 511 * @ingroup pwg2_forward_otherdata
7e4038b5 512 */
513TGraphAsymmErrors* CMSNsd900()
514{
515 // CMS published NSD data - p7743_d8x1y1
516 double x[] = { -2.25, -1.75, -1.25, -0.75, -0.25, 0.25, 0.75, 1.25, 1.75,
517 2.25 };
518 double exm[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
519 double exp[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
520 double y[] = { 3.6, 3.73, 3.62, 3.54, 3.48, 3.48, 3.54, 3.62, 3.73, 3.6 };
521 double eym[] = { 0.13, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.14,0.13 };
522 double eyp[] = { 0.13, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.14, 0.13 };
523 const int np = 10;
524 TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
525 SetGraphAttributes(g, NSDStyle, CMSColor, "cms_nsd900", "CMS NSD");
526
527 return g;
528}
529
530
531//____________________________________________________________________
532/**
533 * Get the CMS NSD data in @f$ |\eta|<2.25@f$ for pp at @f$
534 * \sqrt{s} = 2.36GeV@f$
535 *
536 * p7743_d8x1y2
537 *
538 * @return graph of data
539 *
7c1a1f1d 540 * @ingroup pwg2_forward_otherdata
7e4038b5 541 */
542TGraphAsymmErrors* CMSNsd2360()
543{
544 // CMS NSD 2360 - p7743_d8x1y2
545 double x[] = { -2.25, -1.75, -1.25, -0.75, -0.25, 0.25, 0.75,1.25,1.75,2.25 };
546 double exm[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
547 double exp[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
548 double y[] = { 4.78, 4.81, 4.66, 4.61, 4.47, 4.47, 4.61, 4.66, 4.81, 4.78 };
549 double eym[] = { 0.17, 0.18, 0.17, 0.17, 0.16, 0.16, 0.17, 0.17, 0.18, 0.17 };
550 double eyp[] = { 0.17, 0.18, 0.17, 0.17, 0.16, 0.16, 0.17, 0.17, 0.18, 0.17 };
551 const int np = 10;
552 TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
553 SetGraphAttributes(g, NSDStyle, CMSColor, "cms_nsd2360", "CMS NSD");
554 return g;
555}
556
557
558//____________________________________________________________________
559/**
560 * Get the CMS NSD data in @f$ |\eta|<2.25@f$ for pp at @f$
561 * \sqrt{s} = 7TeV@f$
562 *
563 * p7838_d5x1y1
564 *
565 * @return graph of data
566 *
7c1a1f1d 567 * @ingroup pwg2_forward_otherdata
7e4038b5 568 */
569TGraphAsymmErrors* CMSNsd7000()
570{
571 // CMS NSD 7000 - Plot: p7838_d5x1y1
572 double x[] = { -2.25, -1.75, -1.25, -0.75, -0.25, 0.25, 0.75,1.25,1.75,2.25 };
573 double exm[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
574 double exp[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
575 double y[] = { 6.18, 6.26, 6.14, 6.01, 5.78, 5.78, 6.01, 6.14, 6.26, 6.18 };
576 double eym[] = { 0.25, 0.25, 0.24, 0.24, 0.23, 0.23, 0.24, 0.24, 0.25, 0.25 };
577 double eyp[] = { 0.25, 0.25, 0.24, 0.24, 0.23, 0.23, 0.24, 0.24, 0.25, 0.25 };
578 const int np = 10;
579 TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
580 SetGraphAttributes(g, NSDStyle, CMSColor, "cms_nsd7000", "CMS NSD");
581 return g;
582}
583
584//____________________________________________________________________
585/**
586 * Get a multi graph of data for a given energy and trigger type
587 *
588 * @param energy Energy in GeV (900, 2360, 7000)
589 * @param type Bit pattern of trigger type
590 * - 0x1 INEL
591 * - 0x2 INEL>0
592 * - 0x4 NSD
593 *
594 * @return A multi graph with the selected data.
595 *
7c1a1f1d 596 * @ingroup pwg2_forward_otherdata
7e4038b5 597 */
598TMultiGraph*
b2e7f2d6 599GetData(Int_t energy, Int_t type, bool aliceOnly=false)
7e4038b5 600{
601 TMultiGraph* mp = new TMultiGraph(Form("dndeta_%dGeV_%d", energy, type),"");
602 TString tn;
603 TString en;
604 if (TMath::Abs(energy-900) < 10) {
605 en.Append(" #sqrt{s}=900GeV");
606 if (type & 0x1) {
607 tn.Append(" INEL");
b2e7f2d6 608 if (!aliceOnly) mp->Add(UA5Inel(false));
609 if (!aliceOnly) mp->Add(UA5Inel(true));
7e4038b5 610 mp->Add(AliceCentralInel900());
611 }
612 if (type & 0x4) {
613 tn.Append(" NSD");
b2e7f2d6 614 if (!aliceOnly) mp->Add(UA5Nsd(false));
615 if (!aliceOnly) mp->Add(UA5Nsd(true));
7e4038b5 616 mp->Add(AliceCentralNsd900());
b2e7f2d6 617 if (!aliceOnly) mp->Add(CMSNsd900());
7e4038b5 618 }
619 if (type & 0x2) {
620 tn.Append(" INEL>0");
621 mp->Add(AliceCentralInelGt900());
622 }
623 }
624 if (TMath::Abs(energy-2360) < 10) {
625 en.Append(" #sqrt{s}=2.36TeV");
626 if (type & 0x1) {
627 tn.Append(" INEL");
628 mp->Add(AliceCentralInel2360());
629 }
630 if (type & 0x4) {
631 tn.Append(" NSD");
632 mp->Add(AliceCentralNsd2360());
b2e7f2d6 633 if (!aliceOnly) mp->Add(CMSNsd2360());
7e4038b5 634 }
635 if (type & 0x1) {
636 tn.Append(" INEL>0");
637 mp->Add(AliceCentralInelGt2360());
638 }
639 }
640 if (TMath::Abs(energy-7000) < 10) {
641 en.Append(" #sqrt{s}=7TeV");
642 if (type & 0x1) {
643 tn.Append(" INEL");
644 }
645 if (type & 0x4) {
646 tn.Append(" NSD");
b2e7f2d6 647 if (!aliceOnly) mp->Add(CMSNsd7000());
7e4038b5 648 }
649 if (type & 0x1) {
650 tn.Append(" INEL>0");
651 mp->Add(AliceCentralInelGt7000());
652 }
653 }
654 mp->SetTitle(Form("1/N dN_{ch}/d#eta, pp(p#bar{p}), %s, %s",
655 en.Data(), tn.Data()));
82fc512a 656 if (!mp->GetListOfGraphs() || mp->GetListOfGraphs()->GetEntries() <= 0) {
657 delete mp;
658 mp = 0;
659 }
7e4038b5 660 return mp;
661}
662
663//____________________________________________________________________
664/**
665 * Plot external data for a given selection of energy and trigger type
666 * (see GetData)
667 *
668 * @param energy Energy in GeV
669 * @param type Trigger type bit mask
670 *
7c1a1f1d 671 * @ingroup pwg2_forward_otherdata
7e4038b5 672 */
673void
b2e7f2d6 674OtherData(Int_t energy=900, Int_t type=0x1, bool aliceOnly=false)
7e4038b5 675{
b2e7f2d6 676 TMultiGraph* mp = GetData(energy, type, aliceOnly);
82fc512a 677 if (!mp) return;
678
7e4038b5 679 gStyle->SetTitleX(0.1);
680 gStyle->SetTitleY(1.0);
681 gStyle->SetTitleW(0.85);
682 gStyle->SetTitleH(0.05);
683 gStyle->SetTitleBorderSize(0);
684 gStyle->SetTitleTextColor(kWhite);
685 gStyle->SetTitleFillColor(kBlack);
686 gStyle->SetTitleFontSize(0.02);
687
688 gStyle->SetOptTitle(1);
689 gStyle->SetOptStat(0);
690
691 TCanvas* c = new TCanvas("c", "dN/deta", 800, 600);
692 c->SetFillColor(0);
693 c->SetBorderSize(0);
694 c->SetBorderMode(0);
695 c->SetRightMargin(0.05);
696 c->SetTopMargin(0.05);
697
82fc512a 698
7e4038b5 699 mp->SetMinimum(0);
700 mp->Draw("ap");
701 if (mp->GetXaxis())
702 mp->GetXaxis()->SetTitle("#eta");
703 if (mp->GetYaxis())
704 mp->GetYaxis()->SetTitle("#frac{1}{N} #frac{dN_{ch}}{#eta}");
705
706 TLegend* l = c->BuildLegend(0.3, 0.15, 0.7, 0.5);
707 l->SetFillColor(0);
708 l->SetBorderSize(0);
709
710 c->cd();
711}
712
713//____________________________________________________________________
714//
715// EOF
716//