Fixes
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / OtherData.C
1 //____________________________________________________________________
2 /**
3  * @defgroup pwg2_forward_otherdata  External data 
4  *
5  * @ingroup pwg2_forward_scripts
6  */
7 /**
8  * @file 
9  * 
10  * @ingroup pwg2_forward_script_otherdata
11  */
12 #include <TGraphAsymmErrors.h>
13 #include <TMultiGraph.h>
14 #include <TStyle.h>
15 #include <TMath.h>
16 #include <TCanvas.h>
17 #include <TLegend.h>
18
19 //____________________________________________________________________
20 /**
21  * Values used 
22  * 
23  * @ingroup pwg2_forward_otherdata 
24  */
25 enum { 
26   UA5, 
27   CMS, 
28   ALICE, 
29   PYTHIA,
30   INEL, 
31   INELGt0, 
32   NSD
33 };
34 enum { 
35   /** Style used for UA5 data */
36   UA5Style   = 21, 
37   /** Style used for CMS data */
38   CMSStyle   = 29, 
39   /** Style used for ALICE published data */
40   ALICEStyle = 27,
41   /** Style used for Pythia data */
42   PYTHIAStyle = 28,
43   /** Color used for UA5 data */
44   UA5Color   = kBlue+1,
45   /** Color used for Pytia data */
46   PYTHIAColor = kGray+2,
47   /** Color used for CMS data */
48   CMSColor   = kGreen+1,
49   /** Color used for ALICE data */
50   ALICEColor = kMagenta+1
51 }; 
52 enum { 
53   /** Marker style INEL data */
54   INELStyle   = 22,
55   /** Marker style INEL>0 data */
56   INELGt0Style= 29,
57   /** Marker style NSD data */
58   NSDStyle    = 23,
59   /** Color used for UA5 data */
60   INELColor   = kBlue+1,
61   /** Color used for CMS data */
62   INELGt0Color = kGreen+1,
63   /** Color used for ALICE data */
64   NSDColor     = kMagenta+1
65 };
66 enum {
67   /** Style offset for mirror data */
68   MirrorOff  = 4
69 };
70
71 //____________________________________________________________________
72 /** 
73  * Set graph attributes based on trigger type and experiment. 
74  * 
75  * @param g        Graph
76  * @param trig     Trigger (INEL, INEL>0, NSD)
77  * @param exp      Experiment 
78  * @param mirror   True if mirrored data 
79  * @param name     Name of graph 
80  * @param title    Title of graph 
81  * 
82  * @ingroup pwg2_forward_otherdata
83  */
84 void
85 SetGraphAttributes(TGraph* g, Int_t trig, Int_t exp, bool mirror,
86                    const Char_t* name, const Char_t* title)
87 {
88   Int_t color = 0;
89   switch (exp) { 
90   case UA5:    color = UA5Color;    break;
91   case CMS:    color = CMSColor;    break;
92   case ALICE:  color = ALICEColor;  break;
93   case PYTHIA: color = PYTHIAColor; break;
94   }
95   Int_t style = 0;
96   switch (exp) { 
97   case UA5:    style = UA5Style;    break;
98   case CMS:    style = CMSStyle;    break;
99   case ALICE:  style = ALICEStyle;  break;
100   case PYTHIA: style = PYTHIAStyle; break;
101   }
102   Float_t size = g->GetMarkerSize();
103   switch (style) {
104   case 21: 
105   case 25: size *= 0.8; break;
106   case 27: size *= 1.4; break;
107   }
108     
109   if (mirror) style += MirrorOff;
110
111   g->SetName(name);
112   g->SetTitle(title);
113   g->SetMarkerStyle(style);
114   g->SetMarkerSize(size);
115   g->SetMarkerColor(color);
116   g->SetLineColor(color);
117   g->SetFillColor(0);
118   g->SetFillStyle(0);
119   g->GetHistogram()->SetStats(kFALSE);
120   g->GetHistogram()->SetXTitle("#eta");
121   g->GetHistogram()->SetYTitle("#frac{1}{N} #frac{dN_{ch}}{#eta}");
122 }
123
124 //____________________________________________________________________
125 TGraphAsymmErrors*
126 Pythia900INEL()
127 {
128    
129   TGraphAsymmErrors *gre = new TGraphAsymmErrors(100);
130   SetGraphAttributes(gre, INEL, PYTHIA, false, "pythia900Inel",
131                      "Pythia INEL");
132   gre->SetPoint(0,-3.95,1.78199);
133   gre->SetPointError(0, 0, 0, 0.0145305, 0.0145305);
134   gre->SetPoint(1,-3.85,1.85486);
135   gre->SetPointError(1,0,0,0.0148246,0.0148246);
136   gre->SetPoint(2,-3.75,1.93886);
137   gre->SetPointError(2,0,0,0.0151566,0.0151566);
138   gre->SetPoint(3,-3.65,1.96055);
139   gre->SetPointError(3,0,0,0.0152411,0.0152411);
140   gre->SetPoint(4,-3.55,1.98756);
141   gre->SetPointError(4,0,0,0.0153458,0.0153458);
142   gre->SetPoint(5,-3.45,2.02844);
143   gre->SetPointError(5,0,0,0.0155028,0.0155028);
144   gre->SetPoint(6,-3.35,2.09585);
145   gre->SetPointError(6,0,0,0.0157583,0.0157583);
146   gre->SetPoint(7,-3.25,2.13732);
147   gre->SetPointError(7,0,0,0.0159134,0.0159134);
148   gre->SetPoint(8,-3.15,2.1686);
149   gre->SetPointError(8,0,0,0.0160295,0.0160295);
150   gre->SetPoint(9,-3.05,2.25296);
151   gre->SetPointError(9,0,0,0.0163383,0.0163383);
152   gre->SetPoint(10,-2.95,2.29265);
153   gre->SetPointError(10,0,0,0.0164815,0.0164815);
154   gre->SetPoint(11,-2.85,2.34799);
155   gre->SetPointError(11,0,0,0.0166792,0.0166792);
156   gre->SetPoint(12,-2.75,2.35652);
157   gre->SetPointError(12,0,0,0.0167095,0.0167095);
158   gre->SetPoint(13,-2.65,2.40545);
159   gre->SetPointError(13,0,0,0.0168821,0.0168821);
160   gre->SetPoint(14,-2.55,2.43934);
161   gre->SetPointError(14,0,0,0.0170006,0.0170006);
162   gre->SetPoint(15,-2.45,2.45735);
163   gre->SetPointError(15,0,0,0.0170633,0.0170633);
164   gre->SetPoint(16,-2.35,2.48945);
165   gre->SetPointError(16,0,0,0.0171744,0.0171744);
166   gre->SetPoint(17,-2.25,2.51635);
167   gre->SetPointError(17,0,0,0.0172669,0.0172669);
168   gre->SetPoint(18,-2.15,2.55047);
169   gre->SetPointError(18,0,0,0.0173836,0.0173836);
170   gre->SetPoint(19,-2.05,2.58021);
171   gre->SetPointError(19,0,0,0.0174846,0.0174846);
172   gre->SetPoint(20,-1.95,2.58732);
173   gre->SetPointError(20,0,0,0.0175087,0.0175087);
174   gre->SetPoint(21,-1.85,2.60095);
175   gre->SetPointError(21,0,0,0.0175547,0.0175547);
176   gre->SetPoint(22,-1.75,2.59941);
177   gre->SetPointError(22,0,0,0.0175495,0.0175495);
178   gre->SetPoint(23,-1.65,2.63021);
179   gre->SetPointError(23,0,0,0.0176532,0.0176532);
180   gre->SetPoint(24,-1.55,2.61043);
181   gre->SetPointError(24,0,0,0.0175867,0.0175867);
182   gre->SetPoint(25,-1.45,2.61363);
183   gre->SetPointError(25,0,0,0.0175975,0.0175975);
184   gre->SetPoint(26,-1.35,2.60829);
185   gre->SetPointError(26,0,0,0.0175795,0.0175795);
186   gre->SetPoint(27,-1.25,2.61434);
187   gre->SetPointError(27,0,0,0.0175999,0.0175999);
188   gre->SetPoint(28,-1.15,2.61327);
189   gre->SetPointError(28,0,0,0.0175963,0.0175963);
190   gre->SetPoint(29,-1.05,2.57145);
191   gre->SetPointError(29,0,0,0.0174549,0.0174549);
192   gre->SetPoint(30,-0.95,2.55723);
193   gre->SetPointError(30,0,0,0.0174066,0.0174066);
194   gre->SetPoint(31,-0.85,2.57879);
195   gre->SetPointError(31,0,0,0.0174798,0.0174798);
196   gre->SetPoint(32,-0.75,2.516);
197   gre->SetPointError(32,0,0,0.0172657,0.0172657);
198   gre->SetPoint(33,-0.65,2.53709);
199   gre->SetPointError(33,0,0,0.0173379,0.0173379);
200   gre->SetPoint(34,-0.55,2.51197);
201   gre->SetPointError(34,0,0,0.0172519,0.0172519);
202   gre->SetPoint(35,-0.45,2.44052);
203   gre->SetPointError(35,0,0,0.0170047,0.0170047);
204   gre->SetPoint(36,-0.35,2.44882);
205   gre->SetPointError(36,0,0,0.0170336,0.0170336);
206   gre->SetPoint(37,-0.25,2.45308);
207   gre->SetPointError(37,0,0,0.0170484,0.0170484);
208   gre->SetPoint(38,-0.15,2.4622);
209   gre->SetPointError(38,0,0,0.0170801,0.0170801);
210   gre->SetPoint(39,-0.05,2.45735);
211   gre->SetPointError(39,0,0,0.0170633,0.0170633);
212   gre->SetPoint(40,0.05,2.49254);
213   gre->SetPointError(40,0,0,0.017185,0.017185);
214   gre->SetPoint(41,0.15,2.49479);
215   gre->SetPointError(41,0,0,0.0171928,0.0171928);
216   gre->SetPoint(42,0.25,2.49289);
217   gre->SetPointError(42,0,0,0.0171862,0.0171862);
218   gre->SetPoint(43,0.35,2.4628);
219   gre->SetPointError(43,0,0,0.0170822,0.0170822);
220   gre->SetPoint(44,0.45,2.51422);
221   gre->SetPointError(44,0,0,0.0172596,0.0172596);
222   gre->SetPoint(45,0.55,2.51268);
223   gre->SetPointError(45,0,0,0.0172543,0.0172543);
224   gre->SetPoint(46,0.65,2.51066);
225   gre->SetPointError(46,0,0,0.0172474,0.0172474);
226   gre->SetPoint(47,0.75,2.53661);
227   gre->SetPointError(47,0,0,0.0173363,0.0173363);
228   gre->SetPoint(48,0.85,2.54479);
229   gre->SetPointError(48,0,0,0.0173642,0.0173642);
230   gre->SetPoint(49,0.95,2.55391);
231   gre->SetPointError(49,0,0,0.0173953,0.0173953);
232   gre->SetPoint(50,1.05,2.5872);
233   gre->SetPointError(50,0,0,0.0175083,0.0175083);
234   gre->SetPoint(51,1.15,2.60344);
235   gre->SetPointError(51,0,0,0.0175631,0.0175631);
236   gre->SetPoint(52,1.25,2.60616);
237   gre->SetPointError(52,0,0,0.0175723,0.0175723);
238   gre->SetPoint(53,1.35,2.62156);
239   gre->SetPointError(53,0,0,0.0176242,0.0176242);
240   gre->SetPoint(54,1.45,2.61173);
241   gre->SetPointError(54,0,0,0.0175911,0.0175911);
242   gre->SetPoint(55,1.55,2.60415);
243   gre->SetPointError(55,0,0,0.0175655,0.0175655);
244   gre->SetPoint(56,1.65,2.60723);
245   gre->SetPointError(56,0,0,0.0175759,0.0175759);
246   gre->SetPoint(57,1.75,2.60427);
247   gre->SetPointError(57,0,0,0.0175659,0.0175659);
248   gre->SetPoint(58,1.85,2.56765);
249   gre->SetPointError(58,0,0,0.017442,0.017442);
250   gre->SetPoint(59,1.95,2.58602);
251   gre->SetPointError(59,0,0,0.0175043,0.0175043);
252   gre->SetPoint(60,2.05,2.55936);
253   gre->SetPointError(60,0,0,0.0174138,0.0174138);
254   gre->SetPoint(61,2.15,2.54858);
255   gre->SetPointError(61,0,0,0.0173771,0.0173771);
256   gre->SetPoint(62,2.25,2.5205);
257   gre->SetPointError(62,0,0,0.0172811,0.0172811);
258   gre->SetPoint(63,2.35,2.49491);
259   gre->SetPointError(63,0,0,0.0171932,0.0171932);
260   gre->SetPoint(64,2.45,2.42773);
261   gre->SetPointError(64,0,0,0.0169601,0.0169601);
262   gre->SetPoint(65,2.55,2.42879);
263   gre->SetPointError(65,0,0,0.0169638,0.0169638);
264   gre->SetPoint(66,2.65,2.39372);
265   gre->SetPointError(66,0,0,0.0168409,0.0168409);
266   gre->SetPoint(67,2.75,2.38412);
267   gre->SetPointError(67,0,0,0.0168071,0.0168071);
268   gre->SetPoint(68,2.85,2.31896);
269   gre->SetPointError(68,0,0,0.0165758,0.0165758);
270   gre->SetPoint(69,2.95,2.26209);
271   gre->SetPointError(69,0,0,0.0163713,0.0163713);
272   gre->SetPoint(70,3.05,2.24313);
273   gre->SetPointError(70,0,0,0.0163026,0.0163026);
274   gre->SetPoint(71,3.15,2.20403);
275   gre->SetPointError(71,0,0,0.0161599,0.0161599);
276   gre->SetPoint(72,3.25,2.12855);
277   gre->SetPointError(72,0,0,0.0158808,0.0158808);
278   gre->SetPoint(73,3.35,2.13104);
279   gre->SetPointError(73,0,0,0.01589,0.01589);
280   gre->SetPoint(74,3.45,2.06339);
281   gre->SetPointError(74,0,0,0.0156358,0.0156358);
282   gre->SetPoint(75,3.55,1.9846);
283   gre->SetPointError(75,0,0,0.0153343,0.0153343);
284   gre->SetPoint(76,3.65,1.95391);
285   gre->SetPointError(76,0,0,0.0152153,0.0152153);
286   gre->SetPoint(77,3.75,1.87998);
287   gre->SetPointError(77,0,0,0.0149247,0.0149247);
288   gre->SetPoint(78,3.85,1.86256);
289   gre->SetPointError(78,0,0,0.0148554,0.0148554);
290   gre->SetPoint(79,3.95,1.77239);
291   gre->SetPointError(79,0,0,0.0144913,0.0144913);
292   gre->SetPoint(80,4.05,1.72855);
293   gre->SetPointError(80,0,0,0.014311,0.014311);
294   gre->SetPoint(81,4.15,1.69479);
295   gre->SetPointError(81,0,0,0.0141705,0.0141705);
296   gre->SetPoint(82,4.25,1.64147);
297   gre->SetPointError(82,0,0,0.0139459,0.0139459);
298   gre->SetPoint(83,4.35,1.58116);
299   gre->SetPointError(83,0,0,0.0136873,0.0136873);
300   gre->SetPoint(84,4.45,1.55735);
301   gre->SetPointError(84,0,0,0.0135838,0.0135838);
302   gre->SetPoint(85,4.55,1.48815);
303   gre->SetPointError(85,0,0,0.0132786,0.0132786);
304   gre->SetPoint(86,4.65,1.40853);
305   gre->SetPointError(86,0,0,0.0129185,0.0129185);
306   gre->SetPoint(87,4.75,1.36979);
307   gre->SetPointError(87,0,0,0.0127396,0.0127396);
308   gre->SetPoint(88,4.85,1.32666);
309   gre->SetPointError(88,0,0,0.0125374,0.0125374);
310   gre->SetPoint(89,4.95,1.29763);
311   gre->SetPointError(89,0,0,0.0123995,0.0123995);
312   gre->SetPoint(90,5.05,1.25533);
313   gre->SetPointError(90,0,0,0.0121957,0.0121957);
314   gre->SetPoint(91,5.15,1.20912);
315   gre->SetPointError(91,0,0,0.0119692,0.0119692);
316   gre->SetPoint(92,5.25,1.18839);
317   gre->SetPointError(92,0,0,0.0118661,0.0118661);
318   gre->SetPoint(93,5.35,1.15948);
319   gre->SetPointError(93,0,0,0.0117209,0.0117209);
320   gre->SetPoint(94,5.45,1.1141);
321   gre->SetPointError(94,0,0,0.0114892,0.0114892);
322   gre->SetPoint(95,5.55,1.06315);
323   gre->SetPointError(95,0,0,0.0112235,0.0112235);
324   gre->SetPoint(96,5.65,1.05213);
325   gre->SetPointError(96,0,0,0.0111651,0.0111651);
326   gre->SetPoint(97,5.75,1.02476);
327   gre->SetPointError(97,0,0,0.011019,0.011019);
328   gre->SetPoint(98,5.85,0.984834);
329   gre->SetPointError(98,0,0,0.0108022,0.0108022);
330   gre->SetPoint(99,5.95,0.952844);
331   gre->SetPointError(99,0,0,0.0106253,0.0106253);
332
333   return gre;
334 }
335
336 //____________________________________________________________________
337 TGraphAsymmErrors*
338 Pythia900NSD()
339 {
340    
341   TGraphAsymmErrors *gre = new TGraphAsymmErrors(100);
342   SetGraphAttributes(gre, NSD, PYTHIA, false, "pythia900NSD",
343                      "Pythia NSD");
344
345   gre->SetPoint(0,-3.95,2.11766);
346   gre->SetPointError(0,0,0,0.0179417,0.0179417);
347   gre->SetPoint(1,-3.85,2.20415);
348   gre->SetPointError(1,0,0,0.0183045,0.0183045);
349   gre->SetPoint(2,-3.75,2.30949);
350   gre->SetPointError(2,0,0,0.0187368,0.0187368);
351   gre->SetPoint(3,-3.65,2.34582);
352   gre->SetPointError(3,0,0,0.0188836,0.0188836);
353   gre->SetPoint(4,-3.55,2.38322);
354   gre->SetPointError(4,0,0,0.0190335,0.0190335);
355   gre->SetPoint(5,-3.45,2.43353);
356   gre->SetPointError(5,0,0,0.0192334,0.0192334);
357   gre->SetPoint(6,-3.35,2.51106);
358   gre->SetPointError(6,0,0,0.0195373,0.0195373);
359   gre->SetPoint(7,-3.25,2.56578);
360   gre->SetPointError(7,0,0,0.0197491,0.0197491);
361   gre->SetPoint(8,-3.15,2.60515);
362   gre->SetPointError(8,0,0,0.0199,0.0199);
363   gre->SetPoint(9,-3.05,2.7105);
364   gre->SetPointError(9,0,0,0.0202984,0.0202984);
365   gre->SetPoint(10,-2.95,2.77008);
366   gre->SetPointError(10,0,0,0.0205203,0.0205203);
367   gre->SetPoint(11,-2.85,2.83332);
368   gre->SetPointError(11,0,0,0.0207532,0.0207532);
369   gre->SetPoint(12,-2.75,2.84715);
370   gre->SetPointError(12,0,0,0.0208038,0.0208038);
371   gre->SetPoint(13,-2.65,2.91693);
372   gre->SetPointError(13,0,0,0.0210571,0.0210571);
373   gre->SetPoint(14,-2.55,2.95797);
374   gre->SetPointError(14,0,0,0.0212048,0.0212048);
375   gre->SetPoint(15,-2.45,2.97499);
376   gre->SetPointError(15,0,0,0.0212657,0.0212657);
377   gre->SetPoint(16,-2.35,3.01345);
378   gre->SetPointError(16,0,0,0.0214027,0.0214027);
379   gre->SetPoint(17,-2.25,3.04659);
380   gre->SetPointError(17,0,0,0.0215201,0.0215201);
381   gre->SetPoint(18,-2.15,3.09341);
382   gre->SetPointError(18,0,0,0.0216848,0.0216848);
383   gre->SetPoint(19,-2.05,3.13187);
384   gre->SetPointError(19,0,0,0.0218192,0.0218192);
385   gre->SetPoint(20,-1.95,3.13917);
386   gre->SetPointError(20,0,0,0.0218446,0.0218446);
387   gre->SetPoint(21,-1.85,3.16911);
388   gre->SetPointError(21,0,0,0.0219485,0.0219485);
389   gre->SetPoint(22,-1.75,3.15665);
390   gre->SetPointError(22,0,0,0.0219053,0.0219053);
391   gre->SetPoint(23,-1.65,3.19693);
392   gre->SetPointError(23,0,0,0.0220446,0.0220446);
393   gre->SetPoint(24,-1.55,3.17002);
394   gre->SetPointError(24,0,0,0.0219517,0.0219517);
395   gre->SetPoint(25,-1.45,3.18538);
396   gre->SetPointError(25,0,0,0.0220048,0.0220048);
397   gre->SetPoint(26,-1.35,3.18066);
398   gre->SetPointError(26,0,0,0.0219885,0.0219885);
399   gre->SetPoint(27,-1.25,3.19754);
400   gre->SetPointError(27,0,0,0.0220467,0.0220467);
401   gre->SetPoint(28,-1.15,3.18021);
402   gre->SetPointError(28,0,0,0.0219869,0.0219869);
403   gre->SetPoint(29,-1.05,3.13111);
404   gre->SetPointError(29,0,0,0.0218165,0.0218165);
405   gre->SetPoint(30,-0.95,3.12153);
406   gre->SetPointError(30,0,0,0.0217831,0.0217831);
407   gre->SetPoint(31,-0.85,3.14798);
408   gre->SetPointError(31,0,0,0.0218752,0.0218752);
409   gre->SetPoint(32,-0.75,3.07912);
410   gre->SetPointError(32,0,0,0.0216347,0.0216347);
411   gre->SetPoint(33,-0.65,3.10207);
412   gre->SetPointError(33,0,0,0.0217151,0.0217151);
413   gre->SetPoint(34,-0.55,3.06346);
414   gre->SetPointError(34,0,0,0.0215796,0.0215796);
415   gre->SetPoint(35,-0.45,2.97651);
416   gre->SetPointError(35,0,0,0.0212711,0.0212711);
417   gre->SetPoint(36,-0.35,2.98715);
418   gre->SetPointError(36,0,0,0.0213091,0.0213091);
419   gre->SetPoint(37,-0.25,2.98548);
420   gre->SetPointError(37,0,0,0.0213032,0.0213032);
421   gre->SetPoint(38,-0.15,3.00555);
422   gre->SetPointError(38,0,0,0.0213746,0.0213746);
423   gre->SetPoint(39,-0.05,3.01193);
424   gre->SetPointError(39,0,0,0.0213973,0.0213973);
425   gre->SetPoint(40,0.05,3.04385);
426   gre->SetPointError(40,0,0,0.0215104,0.0215104);
427   gre->SetPoint(41,0.15,3.04933);
428   gre->SetPointError(41,0,0,0.0215297,0.0215297);
429   gre->SetPoint(42,0.25,3.04659);
430   gre->SetPointError(42,0,0,0.0215201,0.0215201);
431   gre->SetPoint(43,0.35,3.00813);
432   gre->SetPointError(43,0,0,0.0213838,0.0213838);
433   gre->SetPoint(44,0.45,3.06666);
434   gre->SetPointError(44,0,0,0.0215908,0.0215908);
435   gre->SetPoint(45,0.55,3.07167);
436   gre->SetPointError(45,0,0,0.0216085,0.0216085);
437   gre->SetPoint(46,0.65,3.0659);
438   gre->SetPointError(46,0,0,0.0215881,0.0215881);
439   gre->SetPoint(47,0.75,3.09159);
440   gre->SetPointError(47,0,0,0.0216784,0.0216784);
441   gre->SetPoint(48,0.85,3.10846);
442   gre->SetPointError(48,0,0,0.0217375,0.0217375);
443   gre->SetPoint(49,0.95,3.11925);
444   gre->SetPointError(49,0,0,0.0217752,0.0217752);
445   gre->SetPoint(50,1.05,3.15558);
446   gre->SetPointError(50,0,0,0.0219016,0.0219016);
447   gre->SetPoint(51,1.15,3.16911);
448   gre->SetPointError(51,0,0,0.0219485,0.0219485);
449   gre->SetPoint(52,1.25,3.17246);
450   gre->SetPointError(52,0,0,0.0219601,0.0219601);
451   gre->SetPoint(53,1.35,3.19146);
452   gre->SetPointError(53,0,0,0.0220258,0.0220258);
453   gre->SetPoint(54,1.45,3.17458);
454   gre->SetPointError(54,0,0,0.0219675,0.0219675);
455   gre->SetPoint(55,1.55,3.16866);
456   gre->SetPointError(55,0,0,0.0219469,0.0219469);
457   gre->SetPoint(56,1.65,3.16592);
458   gre->SetPointError(56,0,0,0.0219375,0.0219375);
459   gre->SetPoint(57,1.75,3.16394);
460   gre->SetPointError(57,0,0,0.0219306,0.0219306);
461   gre->SetPoint(58,1.85,3.11956);
462   gre->SetPointError(58,0,0,0.0217762,0.0217762);
463   gre->SetPoint(59,1.95,3.14646);
464   gre->SetPointError(59,0,0,0.02187,0.02187);
465   gre->SetPoint(60,2.05,3.10147);
466   gre->SetPointError(60,0,0,0.021713,0.021713);
467   gre->SetPoint(61,2.15,3.09356);
468   gre->SetPointError(61,0,0,0.0216853,0.0216853);
469   gre->SetPoint(62,2.25,3.05328);
470   gre->SetPointError(62,0,0,0.0215437,0.0215437);
471   gre->SetPoint(63,2.35,3.01953);
472   gre->SetPointError(63,0,0,0.0214243,0.0214243);
473   gre->SetPoint(64,2.45,2.9373);
474   gre->SetPointError(64,0,0,0.0211305,0.0211305);
475   gre->SetPoint(65,2.55,2.92772);
476   gre->SetPointError(65,0,0,0.0210961,0.0210961);
477   gre->SetPoint(66,2.65,2.89154);
478   gre->SetPointError(66,0,0,0.0209653,0.0209653);
479   gre->SetPoint(67,2.75,2.87619);
480   gre->SetPointError(67,0,0,0.0209096,0.0209096);
481   gre->SetPoint(68,2.85,2.78924);
482   gre->SetPointError(68,0,0,0.0205911,0.0205911);
483   gre->SetPoint(69,2.95,2.72159);
484   gre->SetPointError(69,0,0,0.0203399,0.0203399);
485   gre->SetPoint(70,3.05,2.69089);
486   gre->SetPointError(70,0,0,0.0202248,0.0202248);
487   gre->SetPoint(71,3.15,2.64939);
488   gre->SetPointError(71,0,0,0.0200682,0.0200682);
489   gre->SetPoint(72,3.25,2.55545);
490   gre->SetPointError(72,0,0,0.0197092,0.0197092);
491   gre->SetPoint(73,3.35,2.56745);
492   gre->SetPointError(73,0,0,0.0197555,0.0197555);
493   gre->SetPoint(74,3.45,2.47503);
494   gre->SetPointError(74,0,0,0.0193967,0.0193967);
495   gre->SetPoint(75,3.55,2.36741);
496   gre->SetPointError(75,0,0,0.0189703,0.0189703);
497   gre->SetPoint(76,3.65,2.33412);
498   gre->SetPointError(76,0,0,0.0188364,0.0188364);
499   gre->SetPoint(77,3.75,2.2385);
500   gre->SetPointError(77,0,0,0.0184466,0.0184466);
501   gre->SetPoint(78,3.85,2.21768);
502   gre->SetPointError(78,0,0,0.0183606,0.0183606);
503   gre->SetPoint(79,3.95,2.1055);
504   gre->SetPointError(79,0,0,0.0178901,0.0178901);
505   gre->SetPoint(80,4.05,2.05047);
506   gre->SetPointError(80,0,0,0.0176548,0.0176548);
507   gre->SetPoint(81,4.15,2.00486);
508   gre->SetPointError(81,0,0,0.0174574,0.0174574);
509   gre->SetPoint(82,4.25,1.94573);
510   gre->SetPointError(82,0,0,0.017198,0.017198);
511   gre->SetPoint(83,4.35,1.87064);
512   gre->SetPointError(83,0,0,0.0168629,0.0168629);
513   gre->SetPoint(84,4.45,1.83735);
514   gre->SetPointError(84,0,0,0.0167122,0.0167122);
515   gre->SetPoint(85,4.55,1.75314);
516   gre->SetPointError(85,0,0,0.0163247,0.0163247);
517   gre->SetPoint(86,4.65,1.65828);
518   gre->SetPointError(86,0,0,0.0158769,0.0158769);
519   gre->SetPoint(87,4.75,1.60751);
520   gre->SetPointError(87,0,0,0.015632,0.015632);
521   gre->SetPoint(88,4.85,1.56312);
522   gre->SetPointError(88,0,0,0.0154146,0.0154146);
523   gre->SetPoint(89,4.95,1.52117);
524   gre->SetPointError(89,0,0,0.0152064,0.0152064);
525   gre->SetPoint(90,5.05,1.46553);
526   gre->SetPointError(90,0,0,0.0149257,0.0149257);
527   gre->SetPoint(91,5.15,1.42038);
528   gre->SetPointError(91,0,0,0.014694,0.014694);
529   gre->SetPoint(92,5.25,1.38816);
530   gre->SetPointError(92,0,0,0.0145263,0.0145263);
531   gre->SetPoint(93,5.35,1.35046);
532   gre->SetPointError(93,0,0,0.0143277,0.0143277);
533   gre->SetPoint(94,5.45,1.30075);
534   gre->SetPointError(94,0,0,0.0140616,0.0140616);
535   gre->SetPoint(95,5.55,1.24025);
536   gre->SetPointError(95,0,0,0.0137307,0.0137307);
537   gre->SetPoint(96,5.65,1.21806);
538   gre->SetPointError(96,0,0,0.0136073,0.0136073);
539   gre->SetPoint(97,5.75,1.19435);
540   gre->SetPointError(97,0,0,0.0134742,0.0134742);
541   gre->SetPoint(98,5.85,1.14175);
542   gre->SetPointError(98,0,0,0.0131741,0.0131741);
543   gre->SetPoint(99,5.95,1.09235);
544   gre->SetPointError(99,0,0,0.012886,0.012886);
545
546   return gre;
547 }   
548   
549 //____________________________________________________________________
550 /** 
551  * Get the UA5 NSD data for pp at @f$ \sqrt{s} = 900GeV@f$
552  * p7886_d1x1y4 - Z.Phys.C33:1-6,1986.
553  *
554  * @param mirrored Wether to produce the mirrored plot 
555  * 
556  * @return graph of data 
557  * 
558  * @ingroup pwg2_forward_otherdata
559  */
560 TGraphAsymmErrors* UA5Nsd(Bool_t mirrored=false) 
561 {
562   //UA5 data NSD - p7886_d1x1y4 - Z.Phys.C33:1-6,1986.
563   double x[] = { 0.125, 0.375, 0.625, 0.875, 1.125, 1.375, 1.625, 1.875, 2.125, 
564                  2.375, 2.625, 2.875, 3.125, 3.375, 3.625, 3.875, 4.125, 4.375,
565                  4.625 };
566   double exm[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
567                    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
568   double exp[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
569                    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
570   double y[] = { 3.48, 3.38, 3.52, 3.68, 3.71, 3.86, 3.76, 3.66, 3.72, 
571                  3.69, 3.56, 3.41, 3.15, 3.09, 2.74, 2.73, 2.32, 1.99, 1.69 };
572   double eym[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 
573                    0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
574   double eyp[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 
575                    0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
576   const int np = 19;
577   double xm[np]; 
578   double exmm[np];
579   double expm[np];
580   double ym[np];
581   double eymm[np];
582   double eypm[np];
583   for (int i = 0; i < np; i++) {
584     int j = np-1-i;
585     xm[i]   = -x[j];
586     exmm[i] = exm[j];
587     expm[i] = exp[j];
588     ym[i]   = y[j];
589     eymm[i] = eym[j];
590     eypm[i] = eyp[j];
591   }
592
593   TGraphAsymmErrors* g  = new TGraphAsymmErrors(19,x, y, exm, exp, eym, eyp);
594   TGraphAsymmErrors* gm = new TGraphAsymmErrors(19,xm,ym,exmm,expm,eymm,eypm);
595   SetGraphAttributes(g,  NSD, UA5, false,"ua5_nsd",         "UA5 NSD");
596   SetGraphAttributes(gm, NSD, UA5, true,"ua5_nsd_mirrored",
597                      "UA5 NSD (mirrored)");
598
599   return (mirrored ? gm : g);
600 }
601
602 //____________________________________________________________________
603 /** 
604  * Get the UA5 INEL data for pp at @f$ \sqrt{s} = 900GeV@f$
605  * p7886_d2x1y2 - Z.Phys.C33:1-6,1986.
606  *
607  * @param mirrored Wether to produce the mirrored plot 
608  * 
609  * @return graph of data 
610  * 
611  * @ingroup pwg2_forward_otherdata
612  */
613 TGraphAsymmErrors* UA5Inel(Bool_t mirrored=false) 
614 {
615   //UA5 data INEL - p7886_d2x1y2 - Z.Phys.C33:1-6,1986.
616   double x[] = { 0.125, 0.375, 0.625, 0.875, 1.125, 1.375, 1.625, 1.875, 2.125, 
617                  2.375, 2.625, 2.875, 3.125, 3.375, 3.625, 3.875, 4.125, 4.375,
618                  4.625 };
619   double exm[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
620                    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
621   double exp[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
622                    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
623   double y[] = { 3.14, 3.04, 3.17, 3.33, 3.33, 3.53, 3.46, 3.41, 3.45, 
624                  3.39, 3.07, 3.07, 2.93, 2.93, 2.55, 2.48, 2.18, 1.91, 1.52 };
625   double eym[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 
626                    0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
627   double eyp[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 
628                    0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
629   const int np = 19;
630   double xm[np]; 
631   double exmm[np];
632   double expm[np];
633   double ym[np];
634   double eymm[np];
635   double eypm[np];
636   for (int i = 0; i < np; i++) {
637     int j = np-1-i;
638     xm[i]   = -x[j];
639     exmm[i] = exm[j];
640     expm[i] = exp[j];
641     ym[i]   = y[j];
642     eymm[i] = eym[j];
643     eypm[i] = eyp[j];
644   }
645   TGraphAsymmErrors* g  = new TGraphAsymmErrors(np,x, y, exm, exp, eym, eyp);
646   TGraphAsymmErrors* gm = new TGraphAsymmErrors(np,xm,ym,exmm,expm,eymm,eypm);
647
648   SetGraphAttributes(g,  INEL, UA5, false, "ua5_inel", "UA5 INEL");
649   SetGraphAttributes(gm, INEL, UA5, true, "ua5_inel_mirrored", 
650                      "UA5 INEL (mirrored)");
651   
652   return (mirrored ? gm : g);
653 }
654
655 //____________________________________________________________________
656 /** 
657  * Get the ALICE INEL data in @f$ |\eta|<1.3@f$ for pp at @f$ \sqrt{s}
658  * = 900GeV@f$ 
659  * p7742_d1x1y1 - Eur.Phys.J.C68:89-108,2010. 
660  *
661  * @return graph of data 
662  * 
663  * @ingroup pwg2_forward_otherdata
664  */
665 TGraphAsymmErrors* AliceCentralInel900()
666 {  
667   // INEL - p7742_d1x1y1 - Eur.Phys.J.C68:89-108,2010. 
668   TGraphAsymmErrors* g = 0;
669   double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, 
670                                  -0.1, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3 };
671   double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
672                    0.1, 0.1, 0.1, 0.1, 0.1 };
673   double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
674                    0.1, 0.1, 0.1, 0.1, 0.1 };
675   double y[] = { 3.28, 3.28, 3.22, 3.12, 3.06, 3.02, 2.98, 3.02, 3.02, 
676                  3.05, 3.15, 3.21, 3.26, 3.33 };
677   double eym[] = { 0.06324555320336758, 0.06324555320336758, 
678                    0.06324555320336758, 0.06324555320336758, 
679                    0.06324555320336758, 0.05385164807134505, 
680                    0.05385164807134505, 0.05385164807134505, 
681                    0.05385164807134505, 0.06324555320336758, 
682                    0.06324555320336758, 0.06324555320336758, 
683                    0.06324555320336758, 0.06324555320336758 };
684   double eyp[] = { 0.08246211251235322, 0.08246211251235322, 
685                    0.08246211251235322, 0.08246211251235322, 
686                    0.08246211251235322, 0.08246211251235322, 
687                    0.07280109889280519, 0.08246211251235322, 
688                    0.08246211251235322, 0.08246211251235322, 
689                    0.08246211251235322, 0.08246211251235322, 
690                    0.08246211251235322, 0.08246211251235322 };
691   const int np = 14;
692   for (int i = 0; i < np; i++) { 
693     eym[i] += 0.02;
694     eyp[i] += 0.02;
695   }
696   g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
697   SetGraphAttributes(g, INEL, ALICE, false, "alice_inel", 
698                      "ALICE INEL (publ.)");
699
700   return g;
701 }
702
703 //____________________________________________________________________
704 /** 
705  * Get the ALICE INEL>0 data in @f$ |\eta|<1.3@f$ for pp at @f$
706  * \sqrt{s} = 900GeV@f$ 
707  *
708  * p7741_d4x1y1 - Eur.Phys.J.C68:345-354,2010. 
709  *
710  * @return graph of data 
711  * 
712  * @ingroup pwg2_forward_otherdata
713  */
714 TGraphAsymmErrors* AliceCentralInelGt900()
715 {  
716   // INEL>0 - p7741_d4x1y1 - Eur.Phys.J.C68:345-354,2010. 
717   double x[] = { -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.7, 
718     0.9 };
719   double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
720     0.1 };
721   double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
722     0.1 };
723   double y[] = { 4.0, 3.87, 3.8, 3.7, 3.67, 3.73, 3.72, 3.77, 3.92, 
724     4.01 };
725   double eym[] = { 0.07615773105863909, 0.07615773105863909, 
726                    0.07615773105863909, 0.06324555320336758, 
727                    0.06324555320336758, 0.06324555320336758, 
728                    0.0670820393249937, 0.07615773105863909, 
729                    0.07615773105863909, 0.07615773105863909 };
730   double eyp[] = { 0.08544003745317531, 0.07615773105863909, 
731                    0.07615773105863909, 0.07280109889280519, 
732                    0.07280109889280519, 0.07280109889280519, 
733                    0.07615773105863909, 0.07615773105863909, 
734                    0.08544003745317531, 0.08544003745317531 };
735   const int np = 10;
736   for (int i = 0; i < np; i++) { 
737     double stat = (i >= 3  && i<=5) ? 0.02 : 0.03;
738     eym[i] += stat;
739     eyp[i] += stat;
740   }
741
742   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
743   SetGraphAttributes(g, INELGt0, ALICE, false, "alice_inelgt900", 
744                      "ALICE INEL>0 (publ.)");
745   return g;
746
747 }
748
749 //____________________________________________________________________
750 /** 
751  * Get the ALICE INEL>0 data in @f$ |\eta|<0.9@f$ for pp at @f$
752  * \sqrt{s} = 2.36TeV@f$ 
753  *
754  * p7741_d5x1y1 - Eur.Phys.J.C68:345-354,2010. 
755  *
756  * @return graph of data 
757  * 
758  * @ingroup pwg2_forward_otherdata
759  */
760 TGraphAsymmErrors* AliceCentralInelGt2360()
761 {  
762   // INEL>0 - p7741_d5x1y1 - Eur.Phys.J.C68:345-354,2010. 
763   double x[] = { -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.7, 0.9 };
764   double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
765   double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
766   double y[] = { 4.91, 4.76, 4.63, 4.64, 4.55, 4.55, 4.64, 4.66, 4.82, 4.88 };
767   double eym[] = { 0.08544003745317531, 0.08544003745317531, 
768                    0.08544003745317531, 0.08544003745317531, 
769                    0.08544003745317531, 0.08544003745317531, 
770                    0.08544003745317531, 0.08544003745317531, 
771                    0.08544003745317531, 0.08544003745317531 };
772   double eyp[] = { 0.11401754250991379, 0.11401754250991379, 
773                    0.1044030650891055, 0.1044030650891055, 
774                    0.1044030650891055, 0.1044030650891055, 
775                    0.1044030650891055, 0.1044030650891055, 
776                    0.11401754250991379, 0.11401754250991379 };
777   const int np = 10;
778   for (int i = 0; i < np; i++) { 
779     double stat = 0.3;
780     eym[i] += stat;
781     eyp[i] += stat;
782   }
783
784   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
785   SetGraphAttributes(g, INELGt0, ALICE, false, "alice_inelgt2360", 
786                      "ALICE INEL>0 (publ.)");
787   return g;
788 }
789
790 //____________________________________________________________________
791 /** 
792  * Get the ALICE INEL>0 data in @f$ |\eta|<0.9@f$ for pp at @f$
793  * \sqrt{s} = 7TeV@f$ 
794  *
795  * p7741_d6x1y1 - Eur.Phys.J.C68:345-354,2010. 
796  *
797  * @return graph of data 
798  * 
799  * @ingroup pwg2_forward_otherdata
800  */
801 TGraphAsymmErrors* AliceCentralInelGt7000()
802 {  
803   // INEL>0 - p7741_d6x1y1 - Eur.Phys.J.C68:345-354,2010. 
804 // Plot: p7741_d6x1y1
805   double x[] = { -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.7, 0.9 };
806   double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
807   double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
808   double y[] = { 6.22, 6.07, 6.01, 5.84, 5.85, 5.85, 5.91, 6.01, 6.17, 6.26 };
809   double eym[] = { 0.1216552506059644, 0.1216552506059644, 
810                    0.1216552506059644, 0.11180339887498948, 
811                    0.11180339887498948, 0.11180339887498948, 
812                    0.11180339887498948, 0.1216552506059644, 
813                    0.1216552506059644, 0.1216552506059644 };
814   double eyp[] = { 0.21095023109728983, 0.21095023109728983, 
815                    0.2009975124224178, 0.2009975124224178, 
816                    0.2009975124224178, 0.2009975124224178, 
817                    0.2009975124224178, 0.2009975124224178, 
818                    0.21095023109728983, 0.21095023109728983 };
819   const int np = 10;
820   for (int i = 0; i < np; i++) { 
821     double stat = 0.2;
822     eym[i] += stat;
823     eyp[i] += stat;
824   }
825
826   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
827   SetGraphAttributes(g, INELGt0, ALICE, false, "alice_inelgt7000", 
828                      "ALICE INEL>0 (publ.)");
829   return g;
830 }
831
832 //____________________________________________________________________
833 /** 
834  * Get the ALICE NSD data in @f$ |\eta|<1.3@f$ for pp at @f$
835  * \sqrt{s} = 900GeV@f$ 
836  *
837  * p7742_d2x1y1 - Eur.Phys.J.C68:89-108,2010. 
838  *
839  * @return graph of data 
840  * 
841  * @ingroup pwg2_forward_otherdata
842  */
843 TGraphAsymmErrors* AliceCentralNsd900()
844 {
845   //NSD - p7742_d2x1y1 - Eur.Phys.J.C68:89-108,2010. 
846   double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 
847                  0.5, 0.7, 0.9, 1.1, 1.3 };
848   double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
849                    0.1, 0.1, 0.1, 0.1, 0.1 };
850   double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
851                    0.1, 0.1, 0.1, 0.1, 0.1 };
852   double y[] = { 3.9, 3.89, 3.81, 3.7, 3.64, 3.59, 3.53, 3.58, 3.59, 
853                  3.61, 3.74, 3.8, 3.87, 3.95 };
854   double eym[] = { 0.13341664064126335, 0.13152946437965907, 
855                    0.13152946437965907, 0.1216552506059644, 
856                    0.1216552506059644, 0.1216552506059644, 
857                    0.1216552506059644, 0.1216552506059644, 
858                    0.1216552506059644, 0.1216552506059644, 
859                    0.1216552506059644, 0.13152946437965907, 
860                    0.13152946437965907, 0.13341664064126335 };
861   double eyp[] = { 0.13341664064126335, 0.13152946437965907, 
862                    0.13152946437965907, 0.1216552506059644, 
863                    0.1216552506059644, 0.1216552506059644, 
864                    0.1216552506059644, 0.1216552506059644, 
865                    0.1216552506059644, 0.1216552506059644, 
866                    0.1216552506059644, 0.13152946437965907, 
867                    0.13152946437965907, 0.13341664064126335 };
868   const int np = 14;
869   for (int i = 0; i < np; i++) { 
870     double stat = (i == 0 || i == np-1) ? 0.03 : 0.02;
871     eym[i] += stat;
872     eyp[i] += stat;
873   }
874
875   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
876   SetGraphAttributes(g, NSD, ALICE, false, "alice_nsd", "ALICE NSD (publ.)");
877
878   return g;
879 }
880
881 //____________________________________________________________________
882 /** 
883  * Get the ALICE INEL data in @f$ |\eta|<1.3@f$ for pp at @f$
884  * \sqrt{s} = 2.36TeV@f$ 
885  *
886  * p7742_d3x1y1 - Eur.Phys.J.C68:89-108,2010. 
887  *
888  * @return graph of data 
889  * 
890  * @ingroup pwg2_forward_otherdata
891  */
892 TGraphAsymmErrors* AliceCentralInel2360()
893 {  
894   // INEL - p7742_d3x1y1 - Eur.Phys.J.C68:89-108,2010. 
895   double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 
896                  0.5, 0.7, 0.9, 1.1, 1.3 };
897   double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
898                    0.1, 0.1, 0.1, 0.1, 0.1 };
899   double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
900                    0.1, 0.1, 0.1, 0.1, 0.1 };
901   double y[] = { 4.08, 4.01, 4.0, 3.88, 3.77, 3.8, 3.73, 3.71, 3.79, 
902                  3.82, 3.94, 4.02, 4.05, 4.16 };
903   double eym[] = { 0.13341664064126335, 0.12369316876852982, 
904                    0.12369316876852982, 0.1216552506059644, 
905                    0.1216552506059644, 0.1216552506059644, 
906                    0.1216552506059644, 0.11180339887498948, 
907                    0.1216552506059644, 0.1216552506059644, 
908                    0.12369316876852982, 0.12369316876852982, 
909                    0.13341664064126335, 0.13341664064126335 };
910   double eyp[] = { 0.2716615541441225, 0.2716615541441225, 
911                    0.2716615541441225, 0.260768096208106, 
912                    0.25079872407968906, 0.25079872407968906, 
913                    0.25079872407968906, 0.25079872407968906, 
914                    0.25079872407968906, 0.260768096208106, 
915                    0.261725046566048, 0.2716615541441225, 
916                    0.2716615541441225, 0.2816025568065745 };
917   const int np = 14;
918   for (int i = 0; i < np; i++) { 
919     double stat = (i < 3  || i > np-1-4) ? 0.03 : 0.02;
920     eym[i] += stat;
921     eyp[i] += stat;
922   }
923
924   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
925   SetGraphAttributes(g, NSD, ALICE, false, "alice_inel2360", 
926                      "ALICE INEL (publ.)");
927   return g;
928 }
929
930 //____________________________________________________________________
931 /** 
932  * Get the ALICE NSD data in @f$ |\eta|<1.3@f$ for pp at @f$
933  * \sqrt{s} = 2.36TeV@f$ 
934  *
935  * p7742_d4x1y1 - Eur.Phys.J.C68:89-108,2010. 
936  *
937  * @return graph of data 
938  * 
939  * @ingroup pwg2_forward_otherdata
940  */
941 TGraphAsymmErrors* AliceCentralNsd2360()
942 {  
943   // NSD - p7742_d4x1y1 - Eur.Phys.J.C68:89-108,2010. 
944   double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 
945                  0.5, 0.7, 0.9, 1.1, 1.3 };
946   double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
947                    0.1, 0.1, 0.1, 0.1, 0.1 };
948   double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
949                    0.1, 0.1, 0.1, 0.1, 0.1 };
950   double y[] = { 4.79, 4.72, 4.7, 4.56, 4.44, 4.47, 4.39, 4.37, 4.47, 
951     4.5, 4.64, 4.73, 4.76, 4.9 };
952   double eym[] = { 0.13601470508735444, 0.13341664064126335, 
953                    0.13341664064126335, 0.12369316876852982, 
954                    0.12369316876852982, 0.12369316876852982, 
955                    0.12369316876852982, 0.12369316876852982, 
956                    0.12369316876852982, 0.12369316876852982,
957                    0.12369316876852982, 0.13341664064126335,
958                    0.13341664064126335, 0.13341664064126335 };
959   double eyp[] = { 0.18439088914585774, 0.18248287590894657,
960                    0.18248287590894657, 0.1726267650163207,
961                    0.1726267650163207, 0.1726267650163207, 
962                    0.16278820596099708, 0.16278820596099708, 
963                    0.1726267650163207, 0.1726267650163207, 
964                    0.1726267650163207, 0.18248287590894657, 
965                    0.18248287590894657, 0.18248287590894657 };
966   const int np = 14;
967   
968   for (int i = 0; i < np; i++) { 
969     double stat = (i < 1) ? 0.03 : 0.02;
970     eym[i] += stat;
971     eyp[i] += stat;
972   }
973
974   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
975   SetGraphAttributes(g, NSD, ALICE, false, "alice_nsd2360", 
976                      "ALICE NSD (publ.)");
977   return g;
978 }
979
980   
981 //____________________________________________________________________
982 /** 
983  * Get the CMS NSD data in @f$ |\eta|<2.25@f$ for pp at @f$
984  * \sqrt{s} = 900GeV@f$ 
985  *
986  * p7743_d8x1y1
987  *
988  * @return graph of data 
989  * 
990  * @ingroup pwg2_forward_otherdata
991  */
992 TGraphAsymmErrors* CMSNsd900()
993 {
994   // CMS published NSD data - p7743_d8x1y1
995   double x[] = { -2.25, -1.75, -1.25, -0.75, -0.25, 0.25, 0.75, 1.25, 1.75, 
996     2.25 };
997   double exm[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
998   double exp[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
999   double y[] = { 3.6, 3.73, 3.62, 3.54, 3.48, 3.48, 3.54, 3.62, 3.73,  3.6 };
1000   double eym[] = { 0.13, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.14,0.13 };
1001   double eyp[] = { 0.13, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.14, 0.13 };
1002   const int np = 10;
1003   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
1004   SetGraphAttributes(g, NSD, CMS, false, "cms_nsd900", "CMS NSD");
1005
1006   return g;
1007 }
1008
1009
1010 //____________________________________________________________________
1011 /** 
1012  * Get the CMS NSD data in @f$ |\eta|<2.25@f$ for pp at @f$
1013  * \sqrt{s} = 2.36GeV@f$ 
1014  *
1015  * p7743_d8x1y2
1016  *
1017  * @return graph of data 
1018  * 
1019  * @ingroup pwg2_forward_otherdata
1020  */
1021 TGraphAsymmErrors* CMSNsd2360()
1022 {
1023   // CMS NSD 2360 - p7743_d8x1y2
1024   double x[] = { -2.25, -1.75, -1.25, -0.75, -0.25, 0.25, 0.75,1.25,1.75,2.25 };
1025   double exm[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
1026   double exp[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
1027   double y[] = { 4.78, 4.81, 4.66, 4.61, 4.47, 4.47, 4.61, 4.66, 4.81,  4.78 };
1028   double eym[] = { 0.17, 0.18, 0.17, 0.17, 0.16, 0.16, 0.17, 0.17, 0.18, 0.17 };
1029   double eyp[] = { 0.17, 0.18, 0.17, 0.17, 0.16, 0.16, 0.17, 0.17, 0.18, 0.17 };
1030   const int np = 10;
1031   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
1032   SetGraphAttributes(g, NSD, CMS, false, "cms_nsd2360", "CMS NSD");
1033   return g;
1034 }
1035
1036
1037 //____________________________________________________________________
1038 /** 
1039  * Get the CMS NSD data in @f$ |\eta|<2.25@f$ for pp at @f$
1040  * \sqrt{s} = 7TeV@f$ 
1041  *
1042  * p7838_d5x1y1
1043  *
1044  * @return graph of data 
1045  * 
1046  * @ingroup pwg2_forward_otherdata
1047  */
1048 TGraphAsymmErrors* CMSNsd7000()
1049 {
1050   // CMS NSD 7000 - Plot: p7838_d5x1y1
1051   double x[] = { -2.25, -1.75, -1.25, -0.75, -0.25, 0.25, 0.75,1.25,1.75,2.25 };
1052   double exm[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
1053   double exp[] = { 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 };
1054   double y[] = { 6.18, 6.26, 6.14, 6.01, 5.78, 5.78, 6.01, 6.14, 6.26,  6.18 };
1055   double eym[] = { 0.25, 0.25, 0.24, 0.24, 0.23, 0.23, 0.24, 0.24, 0.25, 0.25 };
1056   double eyp[] = { 0.25, 0.25, 0.24, 0.24, 0.23, 0.23, 0.24, 0.24, 0.25, 0.25 };
1057   const int np = 10;
1058   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
1059   SetGraphAttributes(g, NSD, CMS, false, "cms_nsd7000", "CMS NSD");
1060   return g;
1061 }
1062
1063 //____________________________________________________________________
1064 /** 
1065  * Get a multi graph of data for a given energy and trigger type 
1066  * 
1067  * @param sys    Collision system (1: pp, 2: PbPb)
1068  * @param energy Energy in GeV (900, 2360, 7000)
1069  * @param type   Bit pattern of trigger type 
1070  *   - 0x1 INEL 
1071  *   - 0x2 INEL>0
1072  *   - 0x4 NSD 
1073  * @param centLow   Low centrality cut (only for PbPB)
1074  * @param centHigh  High centrality cut (only for PbPB)
1075  * @param aliceOnly Only return other ALICE data
1076  * 
1077  * @return A multi graph with the selected data. 
1078  * 
1079  * @ingroup pwg2_forward_otherdata
1080  */
1081 TMultiGraph* 
1082 GetData(UShort_t sys, 
1083         UShort_t energy,
1084         UShort_t type=0x1, 
1085         UShort_t centLow=0, 
1086         UShort_t centHigh=0, 
1087         bool     aliceOnly=false)
1088 {
1089   TMultiGraph* mp = new TMultiGraph(Form("dndeta_%dGeV_%d_%03d_%03d", 
1090                                          energy, type, centLow, centHigh),"");
1091   TString tn;
1092   TString en;
1093   TString sn;
1094   TString cn;
1095   if (sys == 1) { 
1096     sn = ", pp(p#bar{p})";
1097     if (energy < 1000) 
1098       en = Form(", #sqrt{s}=%dGeV", energy);
1099     else 
1100       en = Form(", #sqrt{s}=%f4.2TeV", float(energy)/1000);
1101     if (!(type & 0x7)) 
1102       Warning("GetData", "Unknown trigger mask 0x%x", type);
1103
1104     if (TMath::Abs(energy-900) < 10) {
1105       if (type & 0x1) { 
1106         tn.Append(" INEL");
1107         if (!aliceOnly) mp->Add(Pythia900INEL());
1108         if (!aliceOnly) mp->Add(UA5Inel(false));
1109         if (!aliceOnly) mp->Add(UA5Inel(true));
1110         mp->Add(AliceCentralInel900());
1111       }      
1112       if (type & 0x4) { 
1113         tn.Append(" NSD");
1114         if (!aliceOnly) mp->Add(Pythia900NSD());
1115         if (!aliceOnly) mp->Add(UA5Nsd(false));
1116         if (!aliceOnly) mp->Add(UA5Nsd(true));
1117         mp->Add(AliceCentralNsd900());
1118         if (!aliceOnly) mp->Add(CMSNsd900());
1119       }
1120       if (type & 0x2) { 
1121         tn.Append(" INEL>0");
1122         mp->Add(AliceCentralInelGt900());
1123       }
1124     }
1125     else if (TMath::Abs(energy-2360) < 10) {
1126       if (type & 0x1) { 
1127         tn.Append(" INEL");
1128         mp->Add(AliceCentralInel2360());
1129       }
1130       if (type & 0x4) { 
1131         tn.Append(" NSD");
1132         mp->Add(AliceCentralNsd2360());
1133         if (!aliceOnly) mp->Add(CMSNsd2360());
1134       }
1135       if (type & 0x2) { 
1136         tn.Append(" INEL>0");
1137         mp->Add(AliceCentralInelGt2360());
1138       }
1139     }
1140     else if (TMath::Abs(energy-7000) < 10) {
1141       if (type & 0x1) { 
1142         tn.Append(" INEL");
1143       }
1144       if (type & 0x4) { 
1145         tn.Append(" NSD");
1146         if (!aliceOnly) mp->Add(CMSNsd7000());
1147       }
1148       if (type & 0x2) { 
1149         tn.Append(" INEL>0");
1150         mp->Add(AliceCentralInelGt7000());
1151       }
1152     }
1153     else 
1154       Warning("GetData", "No other results for sys=%d, energy=%d",
1155               sys, energy);
1156   }
1157   else if (sys == 2) { 
1158     // Nothing for PbPb so far 
1159     cn = Form(", %d%%-%d%% central", centLow, centHigh);
1160     sn = ", PbPb";
1161     if (energy < 1000) 
1162       en = Form(", #sqrt{s_{NN}}=%dGeV", energy);
1163     else 
1164       en = Form(", #sqrt{s_{NN}}=%f4.2TeV", float(energy)/1000);
1165     Warning("GetData", "No other data for PbP b yet");
1166   }
1167   else 
1168     Warning("GetData", "Unknown system %d", sys);
1169   TString tit(Form("1/N dN_{ch}/d#eta%s%s%s%s", 
1170                    sn.Data(), en.Data(), tn.Data(), cn.Data()));
1171   mp->SetTitle(tit.Data());
1172   if (!mp->GetListOfGraphs() || mp->GetListOfGraphs()->GetEntries() <= 0) {
1173     delete mp;
1174     mp = 0;
1175   }
1176   return mp;
1177 }
1178
1179 //____________________________________________________________________
1180 /** 
1181  * Plot external data for a given selection of energy and trigger type
1182  * (see GetData)
1183  * 
1184  * @param sys    Collision system (1: pp, 2: PbPb)
1185  * @param energy Energy in GeV (900, 2360, 7000)
1186  * @param type   Bit pattern of trigger type 
1187  *   - 0x1 INEL 
1188  *   - 0x2 INEL>0
1189  *   - 0x4 NSD 
1190  * @param centLow   Low centrality cut (only for PbPB)
1191  * @param centHigh  High centrality cut (only for PbPB)
1192  * @param aliceOnly Only return other ALICE data
1193  * 
1194  * @ingroup pwg2_forward_otherdata
1195  */
1196 void
1197 OtherData(UShort_t sys=1, 
1198               UShort_t energy=900, 
1199               UShort_t type=0x1, 
1200               UShort_t centLow=0, 
1201               UShort_t centHigh=5, 
1202               bool     aliceOnly=false)
1203 {
1204   TMultiGraph* mp = GetData(sys, energy, type, centLow, centHigh, aliceOnly);
1205   if (!mp) return;
1206
1207   gStyle->SetTitleX(0.1);
1208   gStyle->SetTitleY(1.0);
1209   gStyle->SetTitleW(0.85);
1210   gStyle->SetTitleH(0.05);
1211   gStyle->SetTitleBorderSize(0);
1212   gStyle->SetTitleTextColor(kWhite);
1213   gStyle->SetTitleFillColor(kBlack);
1214   gStyle->SetTitleFontSize(0.02);
1215   
1216   gStyle->SetOptTitle(1);
1217   gStyle->SetOptStat(0);
1218   
1219   TCanvas* c = new TCanvas("c", "dN/deta", 800, 600);
1220   c->SetFillColor(0);
1221   c->SetBorderSize(0);
1222   c->SetBorderMode(0);
1223   c->SetRightMargin(0.05);
1224   c->SetTopMargin(0.05);
1225   
1226
1227   mp->SetMinimum(0);
1228   mp->Draw("ap");
1229   if (mp->GetXaxis())
1230     mp->GetXaxis()->SetTitle("#eta");
1231   if (mp->GetYaxis())
1232     mp->GetYaxis()->SetTitle("#frac{1}{N} #frac{dN_{ch}}{#eta}");
1233
1234   TLegend* l = c->BuildLegend(0.3, 0.15, 0.7, 0.5);
1235   l->SetFillColor(0);
1236   l->SetBorderSize(0);
1237
1238   c->cd();
1239 }
1240
1241 //____________________________________________________________________
1242 //
1243 // EOF
1244 //