]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/OtherData.C
flat friend update
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / OtherData.C
1 //____________________________________________________________________
2 /**
3  * @defgroup pwglf_forward_otherdata  External data 
4  *
5  * Collection of external data points for comparisons and the like 
6  *
7  * @ingroup pwglf_forward_scripts
8  */
9 /**
10  * @file 
11  * 
12  * @ingroup pwglf_forward_script_otherdata
13  */
14 #ifndef __CINT__
15 # include <TGraphAsymmErrors.h>
16 # include <TMultiGraph.h>
17 # include <TStyle.h>
18 # include <TMath.h>
19 # include <TCanvas.h>
20 # include <TLegend.h>
21 # include <TLegendEntry.h>
22 # include <TList.h>
23 # include <TAxis.h>
24 # include <TH1F.h>
25 #else
26 class TGraphAsymmErrors;
27 class TMultiGraph;
28 class TStyle;
29 class TCanvas;
30 class TLegend;
31 class TLegendEntry;
32 class TList;
33 class TAxis;
34 class TH1F;
35 class TGraph;
36 #endif
37
38 struct RefData
39 {
40   //____________________________________________________________________
41   /**
42    * Values used 
43    * 
44    * @ingroup pwglf_forward_otherdata 
45    */
46   enum { 
47     UA5, 
48     CMS, 
49     ALICE, 
50     WIP,
51     PYTHIA,
52     INEL, 
53     INELGt0, 
54     NSD
55   };
56   enum { 
57     /** Style used for UA5 data */
58     UA5Style   = 21, 
59     /** Style used for CMS data */
60     CMSStyle   = 29, 
61     /** Style used for ALICE published data */
62     ALICEStyle = 27,
63     /** Color used for ALICE work-in-progress data */
64     WIPStyle = 33,
65     /** Style used for Pythia data */
66     PYTHIAStyle = 28,
67     /** Color used for UA5 data */
68     UA5Color   = kBlue+1,
69     /** Color used for Pytia data */
70     PYTHIAColor = kGray+2,
71     /** Color used for CMS data */
72     CMSColor   = kGreen+1,
73     /** Color used for ALICE data */
74     ALICEColor = kMagenta+1,
75     /** Color used for ALICE work-in-progress data */
76     WIPColor = kMagenta+3
77   }; 
78   enum { 
79     /** Marker style INEL data */
80     INELStyle   = 22,
81     /** Marker style INEL>0 data */
82     INELGt0Style= 29,
83     /** Marker style NSD data */
84     NSDStyle    = 23,
85     /** Color used for UA5 data */
86     INELColor   = kBlue+1,
87     /** Color used for CMS data */
88     INELGt0Color = kGreen+1,
89     /** Color used for ALICE data */
90     NSDColor     = kMagenta+1
91   };
92   enum {
93     /** Style offset for mirror data */
94     MirrorOff  = 4
95   };
96
97   //____________________________________________________________________
98   /** 
99    * Set graph attributes based on trigger type and experiment. 
100    * 
101    * @param g        Graph
102    * @param exp      Experiment 
103    * @param mirror   True if mirrored data 
104    * @param name     Name of graph 
105    * @param title    Title of graph 
106    * 
107    * @ingroup pwglf_forward_otherdata
108    */
109   static void SetGraphAttributes(TGraph* g, 
110                                  Int_t /*trig*/, 
111                                  Int_t exp, 
112                                  bool mirror,
113                                  const Char_t* name, 
114                                  const Char_t* title)
115   {
116     Int_t color = 0;
117     switch (exp) { 
118     case UA5:       color = UA5Color;       break;
119     case CMS:       color = CMSColor;       break;
120     case ALICE:     color = ALICEColor;     break;
121     case WIP:       color = WIPColor;       break;
122     case PYTHIA:    color = PYTHIAColor;    break;
123     }
124     Int_t style = 0;
125     switch (exp) { 
126     case UA5:       style = UA5Style;        break;
127     case CMS:       style = CMSStyle;        break;
128     case ALICE:     style = ALICEStyle;      break;
129     case WIP:       style = WIPStyle;        break;
130     case PYTHIA:    style = PYTHIAStyle;     break;
131     }
132     Float_t size = g->GetMarkerSize();
133     switch (style) {
134     case 21: 
135     case 25: size *= 0.8; break;
136     case 27: size *= 1.4; break;
137     case 33: size *= 1.4; break;
138     }
139     
140     if (mirror) style += MirrorOff;
141
142     g->SetName(name);
143     g->SetTitle(title);
144     g->SetMarkerStyle(style);
145     g->SetMarkerSize(size);
146     g->SetMarkerColor(color);
147     g->SetLineColor(color);
148     g->SetFillColor(0);
149     g->SetFillStyle(0);
150     g->GetHistogram()->SetStats(kFALSE);
151     g->GetHistogram()->SetXTitle("#eta");
152     g->GetHistogram()->SetYTitle("#frac{1}{N} #frac{dN_{ch}}{#eta}");
153   }
154
155   //____________________________________________________________________
156   /** 
157    * Get PYTHIA 900GeV INEL data 
158    * 
159    * 
160    * @return Data graph
161    */
162   static TGraphAsymmErrors* Pythia900INEL()
163   {
164    
165     TGraphAsymmErrors *gre = new TGraphAsymmErrors(100);
166     SetGraphAttributes(gre, INEL, PYTHIA, false, "pythia900Inel",
167                        "Pythia");
168     gre->SetPoint(0,-3.95,1.78199);
169     gre->SetPointError(0, 0, 0, 0.0145305, 0.0145305);
170     gre->SetPoint(1,-3.85,1.85486);
171     gre->SetPointError(1,0,0,0.0148246,0.0148246);
172     gre->SetPoint(2,-3.75,1.93886);
173     gre->SetPointError(2,0,0,0.0151566,0.0151566);
174     gre->SetPoint(3,-3.65,1.96055);
175     gre->SetPointError(3,0,0,0.0152411,0.0152411);
176     gre->SetPoint(4,-3.55,1.98756);
177     gre->SetPointError(4,0,0,0.0153458,0.0153458);
178     gre->SetPoint(5,-3.45,2.02844);
179     gre->SetPointError(5,0,0,0.0155028,0.0155028);
180     gre->SetPoint(6,-3.35,2.09585);
181     gre->SetPointError(6,0,0,0.0157583,0.0157583);
182     gre->SetPoint(7,-3.25,2.13732);
183     gre->SetPointError(7,0,0,0.0159134,0.0159134);
184     gre->SetPoint(8,-3.15,2.1686);
185     gre->SetPointError(8,0,0,0.0160295,0.0160295);
186     gre->SetPoint(9,-3.05,2.25296);
187     gre->SetPointError(9,0,0,0.0163383,0.0163383);
188     gre->SetPoint(10,-2.95,2.29265);
189     gre->SetPointError(10,0,0,0.0164815,0.0164815);
190     gre->SetPoint(11,-2.85,2.34799);
191     gre->SetPointError(11,0,0,0.0166792,0.0166792);
192     gre->SetPoint(12,-2.75,2.35652);
193     gre->SetPointError(12,0,0,0.0167095,0.0167095);
194     gre->SetPoint(13,-2.65,2.40545);
195     gre->SetPointError(13,0,0,0.0168821,0.0168821);
196     gre->SetPoint(14,-2.55,2.43934);
197     gre->SetPointError(14,0,0,0.0170006,0.0170006);
198     gre->SetPoint(15,-2.45,2.45735);
199     gre->SetPointError(15,0,0,0.0170633,0.0170633);
200     gre->SetPoint(16,-2.35,2.48945);
201     gre->SetPointError(16,0,0,0.0171744,0.0171744);
202     gre->SetPoint(17,-2.25,2.51635);
203     gre->SetPointError(17,0,0,0.0172669,0.0172669);
204     gre->SetPoint(18,-2.15,2.55047);
205     gre->SetPointError(18,0,0,0.0173836,0.0173836);
206     gre->SetPoint(19,-2.05,2.58021);
207     gre->SetPointError(19,0,0,0.0174846,0.0174846);
208     gre->SetPoint(20,-1.95,2.58732);
209     gre->SetPointError(20,0,0,0.0175087,0.0175087);
210     gre->SetPoint(21,-1.85,2.60095);
211     gre->SetPointError(21,0,0,0.0175547,0.0175547);
212     gre->SetPoint(22,-1.75,2.59941);
213     gre->SetPointError(22,0,0,0.0175495,0.0175495);
214     gre->SetPoint(23,-1.65,2.63021);
215     gre->SetPointError(23,0,0,0.0176532,0.0176532);
216     gre->SetPoint(24,-1.55,2.61043);
217     gre->SetPointError(24,0,0,0.0175867,0.0175867);
218     gre->SetPoint(25,-1.45,2.61363);
219     gre->SetPointError(25,0,0,0.0175975,0.0175975);
220     gre->SetPoint(26,-1.35,2.60829);
221     gre->SetPointError(26,0,0,0.0175795,0.0175795);
222     gre->SetPoint(27,-1.25,2.61434);
223     gre->SetPointError(27,0,0,0.0175999,0.0175999);
224     gre->SetPoint(28,-1.15,2.61327);
225     gre->SetPointError(28,0,0,0.0175963,0.0175963);
226     gre->SetPoint(29,-1.05,2.57145);
227     gre->SetPointError(29,0,0,0.0174549,0.0174549);
228     gre->SetPoint(30,-0.95,2.55723);
229     gre->SetPointError(30,0,0,0.0174066,0.0174066);
230     gre->SetPoint(31,-0.85,2.57879);
231     gre->SetPointError(31,0,0,0.0174798,0.0174798);
232     gre->SetPoint(32,-0.75,2.516);
233     gre->SetPointError(32,0,0,0.0172657,0.0172657);
234     gre->SetPoint(33,-0.65,2.53709);
235     gre->SetPointError(33,0,0,0.0173379,0.0173379);
236     gre->SetPoint(34,-0.55,2.51197);
237     gre->SetPointError(34,0,0,0.0172519,0.0172519);
238     gre->SetPoint(35,-0.45,2.44052);
239     gre->SetPointError(35,0,0,0.0170047,0.0170047);
240     gre->SetPoint(36,-0.35,2.44882);
241     gre->SetPointError(36,0,0,0.0170336,0.0170336);
242     gre->SetPoint(37,-0.25,2.45308);
243     gre->SetPointError(37,0,0,0.0170484,0.0170484);
244     gre->SetPoint(38,-0.15,2.4622);
245     gre->SetPointError(38,0,0,0.0170801,0.0170801);
246     gre->SetPoint(39,-0.05,2.45735);
247     gre->SetPointError(39,0,0,0.0170633,0.0170633);
248     gre->SetPoint(40,0.05,2.49254);
249     gre->SetPointError(40,0,0,0.017185,0.017185);
250     gre->SetPoint(41,0.15,2.49479);
251     gre->SetPointError(41,0,0,0.0171928,0.0171928);
252     gre->SetPoint(42,0.25,2.49289);
253     gre->SetPointError(42,0,0,0.0171862,0.0171862);
254     gre->SetPoint(43,0.35,2.4628);
255     gre->SetPointError(43,0,0,0.0170822,0.0170822);
256     gre->SetPoint(44,0.45,2.51422);
257     gre->SetPointError(44,0,0,0.0172596,0.0172596);
258     gre->SetPoint(45,0.55,2.51268);
259     gre->SetPointError(45,0,0,0.0172543,0.0172543);
260     gre->SetPoint(46,0.65,2.51066);
261     gre->SetPointError(46,0,0,0.0172474,0.0172474);
262     gre->SetPoint(47,0.75,2.53661);
263     gre->SetPointError(47,0,0,0.0173363,0.0173363);
264     gre->SetPoint(48,0.85,2.54479);
265     gre->SetPointError(48,0,0,0.0173642,0.0173642);
266     gre->SetPoint(49,0.95,2.55391);
267     gre->SetPointError(49,0,0,0.0173953,0.0173953);
268     gre->SetPoint(50,1.05,2.5872);
269     gre->SetPointError(50,0,0,0.0175083,0.0175083);
270     gre->SetPoint(51,1.15,2.60344);
271     gre->SetPointError(51,0,0,0.0175631,0.0175631);
272     gre->SetPoint(52,1.25,2.60616);
273     gre->SetPointError(52,0,0,0.0175723,0.0175723);
274     gre->SetPoint(53,1.35,2.62156);
275     gre->SetPointError(53,0,0,0.0176242,0.0176242);
276     gre->SetPoint(54,1.45,2.61173);
277     gre->SetPointError(54,0,0,0.0175911,0.0175911);
278     gre->SetPoint(55,1.55,2.60415);
279     gre->SetPointError(55,0,0,0.0175655,0.0175655);
280     gre->SetPoint(56,1.65,2.60723);
281     gre->SetPointError(56,0,0,0.0175759,0.0175759);
282     gre->SetPoint(57,1.75,2.60427);
283     gre->SetPointError(57,0,0,0.0175659,0.0175659);
284     gre->SetPoint(58,1.85,2.56765);
285     gre->SetPointError(58,0,0,0.017442,0.017442);
286     gre->SetPoint(59,1.95,2.58602);
287     gre->SetPointError(59,0,0,0.0175043,0.0175043);
288     gre->SetPoint(60,2.05,2.55936);
289     gre->SetPointError(60,0,0,0.0174138,0.0174138);
290     gre->SetPoint(61,2.15,2.54858);
291     gre->SetPointError(61,0,0,0.0173771,0.0173771);
292     gre->SetPoint(62,2.25,2.5205);
293     gre->SetPointError(62,0,0,0.0172811,0.0172811);
294     gre->SetPoint(63,2.35,2.49491);
295     gre->SetPointError(63,0,0,0.0171932,0.0171932);
296     gre->SetPoint(64,2.45,2.42773);
297     gre->SetPointError(64,0,0,0.0169601,0.0169601);
298     gre->SetPoint(65,2.55,2.42879);
299     gre->SetPointError(65,0,0,0.0169638,0.0169638);
300     gre->SetPoint(66,2.65,2.39372);
301     gre->SetPointError(66,0,0,0.0168409,0.0168409);
302     gre->SetPoint(67,2.75,2.38412);
303     gre->SetPointError(67,0,0,0.0168071,0.0168071);
304     gre->SetPoint(68,2.85,2.31896);
305     gre->SetPointError(68,0,0,0.0165758,0.0165758);
306     gre->SetPoint(69,2.95,2.26209);
307     gre->SetPointError(69,0,0,0.0163713,0.0163713);
308     gre->SetPoint(70,3.05,2.24313);
309     gre->SetPointError(70,0,0,0.0163026,0.0163026);
310     gre->SetPoint(71,3.15,2.20403);
311     gre->SetPointError(71,0,0,0.0161599,0.0161599);
312     gre->SetPoint(72,3.25,2.12855);
313     gre->SetPointError(72,0,0,0.0158808,0.0158808);
314     gre->SetPoint(73,3.35,2.13104);
315     gre->SetPointError(73,0,0,0.01589,0.01589);
316     gre->SetPoint(74,3.45,2.06339);
317     gre->SetPointError(74,0,0,0.0156358,0.0156358);
318     gre->SetPoint(75,3.55,1.9846);
319     gre->SetPointError(75,0,0,0.0153343,0.0153343);
320     gre->SetPoint(76,3.65,1.95391);
321     gre->SetPointError(76,0,0,0.0152153,0.0152153);
322     gre->SetPoint(77,3.75,1.87998);
323     gre->SetPointError(77,0,0,0.0149247,0.0149247);
324     gre->SetPoint(78,3.85,1.86256);
325     gre->SetPointError(78,0,0,0.0148554,0.0148554);
326     gre->SetPoint(79,3.95,1.77239);
327     gre->SetPointError(79,0,0,0.0144913,0.0144913);
328     gre->SetPoint(80,4.05,1.72855);
329     gre->SetPointError(80,0,0,0.014311,0.014311);
330     gre->SetPoint(81,4.15,1.69479);
331     gre->SetPointError(81,0,0,0.0141705,0.0141705);
332     gre->SetPoint(82,4.25,1.64147);
333     gre->SetPointError(82,0,0,0.0139459,0.0139459);
334     gre->SetPoint(83,4.35,1.58116);
335     gre->SetPointError(83,0,0,0.0136873,0.0136873);
336     gre->SetPoint(84,4.45,1.55735);
337     gre->SetPointError(84,0,0,0.0135838,0.0135838);
338     gre->SetPoint(85,4.55,1.48815);
339     gre->SetPointError(85,0,0,0.0132786,0.0132786);
340     gre->SetPoint(86,4.65,1.40853);
341     gre->SetPointError(86,0,0,0.0129185,0.0129185);
342     gre->SetPoint(87,4.75,1.36979);
343     gre->SetPointError(87,0,0,0.0127396,0.0127396);
344     gre->SetPoint(88,4.85,1.32666);
345     gre->SetPointError(88,0,0,0.0125374,0.0125374);
346     gre->SetPoint(89,4.95,1.29763);
347     gre->SetPointError(89,0,0,0.0123995,0.0123995);
348     gre->SetPoint(90,5.05,1.25533);
349     gre->SetPointError(90,0,0,0.0121957,0.0121957);
350     gre->SetPoint(91,5.15,1.20912);
351     gre->SetPointError(91,0,0,0.0119692,0.0119692);
352     gre->SetPoint(92,5.25,1.18839);
353     gre->SetPointError(92,0,0,0.0118661,0.0118661);
354     gre->SetPoint(93,5.35,1.15948);
355     gre->SetPointError(93,0,0,0.0117209,0.0117209);
356     gre->SetPoint(94,5.45,1.1141);
357     gre->SetPointError(94,0,0,0.0114892,0.0114892);
358     gre->SetPoint(95,5.55,1.06315);
359     gre->SetPointError(95,0,0,0.0112235,0.0112235);
360     gre->SetPoint(96,5.65,1.05213);
361     gre->SetPointError(96,0,0,0.0111651,0.0111651);
362     gre->SetPoint(97,5.75,1.02476);
363     gre->SetPointError(97,0,0,0.011019,0.011019);
364     gre->SetPoint(98,5.85,0.984834);
365     gre->SetPointError(98,0,0,0.0108022,0.0108022);
366     gre->SetPoint(99,5.95,0.952844);
367     gre->SetPointError(99,0,0,0.0106253,0.0106253);
368
369     return gre;
370   }
371
372   //____________________________________________________________________
373   /** 
374    * Get PYTHIA 900GeV NSD data 
375    * 
376    * 
377    * @return Data graph
378    */
379   static TGraphAsymmErrors* Pythia900NSD()
380   {
381    
382     TGraphAsymmErrors *gre = new TGraphAsymmErrors(100);
383     SetGraphAttributes(gre, NSD, PYTHIA, false, "pythia900NSD",
384                        "Pythia");
385
386     gre->SetPoint(0,-3.95,2.11766);
387     gre->SetPointError(0,0,0,0.0179417,0.0179417);
388     gre->SetPoint(1,-3.85,2.20415);
389     gre->SetPointError(1,0,0,0.0183045,0.0183045);
390     gre->SetPoint(2,-3.75,2.30949);
391     gre->SetPointError(2,0,0,0.0187368,0.0187368);
392     gre->SetPoint(3,-3.65,2.34582);
393     gre->SetPointError(3,0,0,0.0188836,0.0188836);
394     gre->SetPoint(4,-3.55,2.38322);
395     gre->SetPointError(4,0,0,0.0190335,0.0190335);
396     gre->SetPoint(5,-3.45,2.43353);
397     gre->SetPointError(5,0,0,0.0192334,0.0192334);
398     gre->SetPoint(6,-3.35,2.51106);
399     gre->SetPointError(6,0,0,0.0195373,0.0195373);
400     gre->SetPoint(7,-3.25,2.56578);
401     gre->SetPointError(7,0,0,0.0197491,0.0197491);
402     gre->SetPoint(8,-3.15,2.60515);
403     gre->SetPointError(8,0,0,0.0199,0.0199);
404     gre->SetPoint(9,-3.05,2.7105);
405     gre->SetPointError(9,0,0,0.0202984,0.0202984);
406     gre->SetPoint(10,-2.95,2.77008);
407     gre->SetPointError(10,0,0,0.0205203,0.0205203);
408     gre->SetPoint(11,-2.85,2.83332);
409     gre->SetPointError(11,0,0,0.0207532,0.0207532);
410     gre->SetPoint(12,-2.75,2.84715);
411     gre->SetPointError(12,0,0,0.0208038,0.0208038);
412     gre->SetPoint(13,-2.65,2.91693);
413     gre->SetPointError(13,0,0,0.0210571,0.0210571);
414     gre->SetPoint(14,-2.55,2.95797);
415     gre->SetPointError(14,0,0,0.0212048,0.0212048);
416     gre->SetPoint(15,-2.45,2.97499);
417     gre->SetPointError(15,0,0,0.0212657,0.0212657);
418     gre->SetPoint(16,-2.35,3.01345);
419     gre->SetPointError(16,0,0,0.0214027,0.0214027);
420     gre->SetPoint(17,-2.25,3.04659);
421     gre->SetPointError(17,0,0,0.0215201,0.0215201);
422     gre->SetPoint(18,-2.15,3.09341);
423     gre->SetPointError(18,0,0,0.0216848,0.0216848);
424     gre->SetPoint(19,-2.05,3.13187);
425     gre->SetPointError(19,0,0,0.0218192,0.0218192);
426     gre->SetPoint(20,-1.95,3.13917);
427     gre->SetPointError(20,0,0,0.0218446,0.0218446);
428     gre->SetPoint(21,-1.85,3.16911);
429     gre->SetPointError(21,0,0,0.0219485,0.0219485);
430     gre->SetPoint(22,-1.75,3.15665);
431     gre->SetPointError(22,0,0,0.0219053,0.0219053);
432     gre->SetPoint(23,-1.65,3.19693);
433     gre->SetPointError(23,0,0,0.0220446,0.0220446);
434     gre->SetPoint(24,-1.55,3.17002);
435     gre->SetPointError(24,0,0,0.0219517,0.0219517);
436     gre->SetPoint(25,-1.45,3.18538);
437     gre->SetPointError(25,0,0,0.0220048,0.0220048);
438     gre->SetPoint(26,-1.35,3.18066);
439     gre->SetPointError(26,0,0,0.0219885,0.0219885);
440     gre->SetPoint(27,-1.25,3.19754);
441     gre->SetPointError(27,0,0,0.0220467,0.0220467);
442     gre->SetPoint(28,-1.15,3.18021);
443     gre->SetPointError(28,0,0,0.0219869,0.0219869);
444     gre->SetPoint(29,-1.05,3.13111);
445     gre->SetPointError(29,0,0,0.0218165,0.0218165);
446     gre->SetPoint(30,-0.95,3.12153);
447     gre->SetPointError(30,0,0,0.0217831,0.0217831);
448     gre->SetPoint(31,-0.85,3.14798);
449     gre->SetPointError(31,0,0,0.0218752,0.0218752);
450     gre->SetPoint(32,-0.75,3.07912);
451     gre->SetPointError(32,0,0,0.0216347,0.0216347);
452     gre->SetPoint(33,-0.65,3.10207);
453     gre->SetPointError(33,0,0,0.0217151,0.0217151);
454     gre->SetPoint(34,-0.55,3.06346);
455     gre->SetPointError(34,0,0,0.0215796,0.0215796);
456     gre->SetPoint(35,-0.45,2.97651);
457     gre->SetPointError(35,0,0,0.0212711,0.0212711);
458     gre->SetPoint(36,-0.35,2.98715);
459     gre->SetPointError(36,0,0,0.0213091,0.0213091);
460     gre->SetPoint(37,-0.25,2.98548);
461     gre->SetPointError(37,0,0,0.0213032,0.0213032);
462     gre->SetPoint(38,-0.15,3.00555);
463     gre->SetPointError(38,0,0,0.0213746,0.0213746);
464     gre->SetPoint(39,-0.05,3.01193);
465     gre->SetPointError(39,0,0,0.0213973,0.0213973);
466     gre->SetPoint(40,0.05,3.04385);
467     gre->SetPointError(40,0,0,0.0215104,0.0215104);
468     gre->SetPoint(41,0.15,3.04933);
469     gre->SetPointError(41,0,0,0.0215297,0.0215297);
470     gre->SetPoint(42,0.25,3.04659);
471     gre->SetPointError(42,0,0,0.0215201,0.0215201);
472     gre->SetPoint(43,0.35,3.00813);
473     gre->SetPointError(43,0,0,0.0213838,0.0213838);
474     gre->SetPoint(44,0.45,3.06666);
475     gre->SetPointError(44,0,0,0.0215908,0.0215908);
476     gre->SetPoint(45,0.55,3.07167);
477     gre->SetPointError(45,0,0,0.0216085,0.0216085);
478     gre->SetPoint(46,0.65,3.0659);
479     gre->SetPointError(46,0,0,0.0215881,0.0215881);
480     gre->SetPoint(47,0.75,3.09159);
481     gre->SetPointError(47,0,0,0.0216784,0.0216784);
482     gre->SetPoint(48,0.85,3.10846);
483     gre->SetPointError(48,0,0,0.0217375,0.0217375);
484     gre->SetPoint(49,0.95,3.11925);
485     gre->SetPointError(49,0,0,0.0217752,0.0217752);
486     gre->SetPoint(50,1.05,3.15558);
487     gre->SetPointError(50,0,0,0.0219016,0.0219016);
488     gre->SetPoint(51,1.15,3.16911);
489     gre->SetPointError(51,0,0,0.0219485,0.0219485);
490     gre->SetPoint(52,1.25,3.17246);
491     gre->SetPointError(52,0,0,0.0219601,0.0219601);
492     gre->SetPoint(53,1.35,3.19146);
493     gre->SetPointError(53,0,0,0.0220258,0.0220258);
494     gre->SetPoint(54,1.45,3.17458);
495     gre->SetPointError(54,0,0,0.0219675,0.0219675);
496     gre->SetPoint(55,1.55,3.16866);
497     gre->SetPointError(55,0,0,0.0219469,0.0219469);
498     gre->SetPoint(56,1.65,3.16592);
499     gre->SetPointError(56,0,0,0.0219375,0.0219375);
500     gre->SetPoint(57,1.75,3.16394);
501     gre->SetPointError(57,0,0,0.0219306,0.0219306);
502     gre->SetPoint(58,1.85,3.11956);
503     gre->SetPointError(58,0,0,0.0217762,0.0217762);
504     gre->SetPoint(59,1.95,3.14646);
505     gre->SetPointError(59,0,0,0.02187,0.02187);
506     gre->SetPoint(60,2.05,3.10147);
507     gre->SetPointError(60,0,0,0.021713,0.021713);
508     gre->SetPoint(61,2.15,3.09356);
509     gre->SetPointError(61,0,0,0.0216853,0.0216853);
510     gre->SetPoint(62,2.25,3.05328);
511     gre->SetPointError(62,0,0,0.0215437,0.0215437);
512     gre->SetPoint(63,2.35,3.01953);
513     gre->SetPointError(63,0,0,0.0214243,0.0214243);
514     gre->SetPoint(64,2.45,2.9373);
515     gre->SetPointError(64,0,0,0.0211305,0.0211305);
516     gre->SetPoint(65,2.55,2.92772);
517     gre->SetPointError(65,0,0,0.0210961,0.0210961);
518     gre->SetPoint(66,2.65,2.89154);
519     gre->SetPointError(66,0,0,0.0209653,0.0209653);
520     gre->SetPoint(67,2.75,2.87619);
521     gre->SetPointError(67,0,0,0.0209096,0.0209096);
522     gre->SetPoint(68,2.85,2.78924);
523     gre->SetPointError(68,0,0,0.0205911,0.0205911);
524     gre->SetPoint(69,2.95,2.72159);
525     gre->SetPointError(69,0,0,0.0203399,0.0203399);
526     gre->SetPoint(70,3.05,2.69089);
527     gre->SetPointError(70,0,0,0.0202248,0.0202248);
528     gre->SetPoint(71,3.15,2.64939);
529     gre->SetPointError(71,0,0,0.0200682,0.0200682);
530     gre->SetPoint(72,3.25,2.55545);
531     gre->SetPointError(72,0,0,0.0197092,0.0197092);
532     gre->SetPoint(73,3.35,2.56745);
533     gre->SetPointError(73,0,0,0.0197555,0.0197555);
534     gre->SetPoint(74,3.45,2.47503);
535     gre->SetPointError(74,0,0,0.0193967,0.0193967);
536     gre->SetPoint(75,3.55,2.36741);
537     gre->SetPointError(75,0,0,0.0189703,0.0189703);
538     gre->SetPoint(76,3.65,2.33412);
539     gre->SetPointError(76,0,0,0.0188364,0.0188364);
540     gre->SetPoint(77,3.75,2.2385);
541     gre->SetPointError(77,0,0,0.0184466,0.0184466);
542     gre->SetPoint(78,3.85,2.21768);
543     gre->SetPointError(78,0,0,0.0183606,0.0183606);
544     gre->SetPoint(79,3.95,2.1055);
545     gre->SetPointError(79,0,0,0.0178901,0.0178901);
546     gre->SetPoint(80,4.05,2.05047);
547     gre->SetPointError(80,0,0,0.0176548,0.0176548);
548     gre->SetPoint(81,4.15,2.00486);
549     gre->SetPointError(81,0,0,0.0174574,0.0174574);
550     gre->SetPoint(82,4.25,1.94573);
551     gre->SetPointError(82,0,0,0.017198,0.017198);
552     gre->SetPoint(83,4.35,1.87064);
553     gre->SetPointError(83,0,0,0.0168629,0.0168629);
554     gre->SetPoint(84,4.45,1.83735);
555     gre->SetPointError(84,0,0,0.0167122,0.0167122);
556     gre->SetPoint(85,4.55,1.75314);
557     gre->SetPointError(85,0,0,0.0163247,0.0163247);
558     gre->SetPoint(86,4.65,1.65828);
559     gre->SetPointError(86,0,0,0.0158769,0.0158769);
560     gre->SetPoint(87,4.75,1.60751);
561     gre->SetPointError(87,0,0,0.015632,0.015632);
562     gre->SetPoint(88,4.85,1.56312);
563     gre->SetPointError(88,0,0,0.0154146,0.0154146);
564     gre->SetPoint(89,4.95,1.52117);
565     gre->SetPointError(89,0,0,0.0152064,0.0152064);
566     gre->SetPoint(90,5.05,1.46553);
567     gre->SetPointError(90,0,0,0.0149257,0.0149257);
568     gre->SetPoint(91,5.15,1.42038);
569     gre->SetPointError(91,0,0,0.014694,0.014694);
570     gre->SetPoint(92,5.25,1.38816);
571     gre->SetPointError(92,0,0,0.0145263,0.0145263);
572     gre->SetPoint(93,5.35,1.35046);
573     gre->SetPointError(93,0,0,0.0143277,0.0143277);
574     gre->SetPoint(94,5.45,1.30075);
575     gre->SetPointError(94,0,0,0.0140616,0.0140616);
576     gre->SetPoint(95,5.55,1.24025);
577     gre->SetPointError(95,0,0,0.0137307,0.0137307);
578     gre->SetPoint(96,5.65,1.21806);
579     gre->SetPointError(96,0,0,0.0136073,0.0136073);
580     gre->SetPoint(97,5.75,1.19435);
581     gre->SetPointError(97,0,0,0.0134742,0.0134742);
582     gre->SetPoint(98,5.85,1.14175);
583     gre->SetPointError(98,0,0,0.0131741,0.0131741);
584     gre->SetPoint(99,5.95,1.09235);
585     gre->SetPointError(99,0,0,0.012886,0.012886);
586
587     return gre;
588   }   
589   
590   //____________________________________________________________________
591   /** 
592    * Get the UA5 NSD data for pp at @f$ \sqrt{s} = 900GeV@f$
593    * p7886_d1x1y4 - Z.Phys.C33:1-6,1986.
594    *
595    * @param mirrored Wether to produce the mirrored plot 
596    * 
597    * @return graph of data 
598    * 
599    * @ingroup pwglf_forward_otherdata
600    */
601   static TGraphAsymmErrors* UA5Nsd(Bool_t mirrored=false) 
602   {
603     //UA5 data NSD - p7886_d1x1y4 - Z.Phys.C33:1-6,1986.
604     double x[] = { 0.125, 0.375, 0.625, 0.875, 1.125, 1.375, 1.625, 1.875,2.125,
605                    2.375, 2.625, 2.875, 3.125, 3.375, 3.625, 3.875, 4.125,4.375,
606                    4.625 };
607     double exm[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
608                      0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
609     double exp[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
610                      0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
611     double y[] = { 3.48, 3.38, 3.52, 3.68, 3.71, 3.86, 3.76, 3.66, 3.72, 
612                    3.69, 3.56, 3.41, 3.15, 3.09, 2.74, 2.73, 2.32, 1.99, 1.69 };
613     double eym[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 
614                      0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 
615                      0.13 };
616     double eyp[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 
617                      0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 
618                      0.13 };
619     const int np = 19;
620     double xm[np]; 
621     double exmm[np];
622     double expm[np];
623     double ym[np];
624     double eymm[np];
625     double eypm[np];
626     for (int i = 0; i < np; i++) {
627       int j = np-1-i;
628       xm[i]   = -x[j];
629       exmm[i] = exm[j];
630       expm[i] = exp[j];
631       ym[i]   = y[j];
632       eymm[i] = eym[j];
633       eypm[i] = eyp[j];
634     }
635
636     TGraphAsymmErrors* g  = new TGraphAsymmErrors(19,x, y, exm, exp, eym, eyp);
637     TGraphAsymmErrors* gm = new TGraphAsymmErrors(19,xm,ym,exmm,expm,eymm,eypm);
638     SetGraphAttributes(g,  NSD, UA5, false,"ua5_nsd",         "UA5");
639     SetGraphAttributes(gm, NSD, UA5, true,"ua5_nsd_mirrored",
640                        "UA5 (mirrored)");
641
642     return (mirrored ? gm : g);
643   }
644
645   //____________________________________________________________________
646   /** 
647    * Get the UA5 INEL data for pp at @f$ \sqrt{s} = 900GeV@f$
648    * p7886_d2x1y2 - Z.Phys.C33:1-6,1986.
649    *
650    * @param mirrored Wether to produce the mirrored plot 
651    * 
652    * @return graph of data 
653    * 
654    * @ingroup pwglf_forward_otherdata
655    */
656   static TGraphAsymmErrors* UA5Inel(Bool_t mirrored=false) 
657   {
658     //UA5 data INEL - p7886_d2x1y2 - Z.Phys.C33:1-6,1986.
659     double x[] = { 0.125, 0.375, 0.625, 0.875, 1.125, 1.375, 1.625, 1.875,2.125,
660                    2.375, 2.625, 2.875, 3.125, 3.375, 3.625, 3.875, 4.125,4.375,
661                    4.625 };
662     double exm[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
663                      0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
664     double exp[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
665                      0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
666     double y[] = { 3.14, 3.04, 3.17, 3.33, 3.33, 3.53, 3.46, 3.41, 3.45, 
667                    3.39, 3.07, 3.07, 2.93, 2.93, 2.55, 2.48, 2.18, 1.91, 1.52 };
668     double eym[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 
669                      0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 
670                      0.13 };
671     double eyp[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 
672                      0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 
673                      0.13 };
674     const int np = 19;
675     double xm[np]; 
676     double exmm[np];
677     double expm[np];
678     double ym[np];
679     double eymm[np];
680     double eypm[np];
681     for (int i = 0; i < np; i++) {
682       int j = np-1-i;
683       xm[i]   = -x[j];
684       exmm[i] = exm[j];
685       expm[i] = exp[j];
686       ym[i]   = y[j];
687       eymm[i] = eym[j];
688       eypm[i] = eyp[j];
689     }
690     TGraphAsymmErrors* g  = new TGraphAsymmErrors(np,x, y, exm, exp, eym, eyp);
691     TGraphAsymmErrors* gm = new TGraphAsymmErrors(np,xm,ym,exmm,expm,eymm,eypm);
692
693     SetGraphAttributes(g,  INEL, UA5, false, "ua5_inel", "UA5");
694     SetGraphAttributes(gm, INEL, UA5, true, "ua5_inel_mirrored", 
695                        "UA5 (mirrored)");
696   
697     return (mirrored ? gm : g);
698   }
699
700   //____________________________________________________________________
701   /** 
702    * Get the ALICE INEL data in @f$ |\eta|<1.3@f$ for pp at @f$ \sqrt{s}
703    * = 900GeV@f$ 
704    * p7742_d1x1y1 - Eur.Phys.J.C68:89-108,2010. 
705    *
706    * @return graph of data 
707    * 
708    * @ingroup pwglf_forward_otherdata
709    */
710   static TGraphAsymmErrors* AliceCentralInel900()
711   {  
712     // INEL - p7742_d1x1y1 - Eur.Phys.J.C68:89-108,2010. 
713     TGraphAsymmErrors* g = 0;
714     double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, 
715                    -0.1, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3 };
716     double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
717                      0.1, 0.1, 0.1, 0.1, 0.1 };
718     double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
719                      0.1, 0.1, 0.1, 0.1, 0.1 };
720     double y[] = { 3.28, 3.28, 3.22, 3.12, 3.06, 3.02, 2.98, 3.02, 3.02, 
721                    3.05, 3.15, 3.21, 3.26, 3.33 };
722     double eym[] = { 0.06324555320336758, 0.06324555320336758, 
723                      0.06324555320336758, 0.06324555320336758, 
724                      0.06324555320336758, 0.05385164807134505, 
725                      0.05385164807134505, 0.05385164807134505, 
726                      0.05385164807134505, 0.06324555320336758, 
727                      0.06324555320336758, 0.06324555320336758, 
728                      0.06324555320336758, 0.06324555320336758 };
729     double eyp[] = { 0.08246211251235322, 0.08246211251235322, 
730                      0.08246211251235322, 0.08246211251235322, 
731                      0.08246211251235322, 0.08246211251235322, 
732                      0.07280109889280519, 0.08246211251235322, 
733                      0.08246211251235322, 0.08246211251235322, 
734                      0.08246211251235322, 0.08246211251235322, 
735                      0.08246211251235322, 0.08246211251235322 };
736     const int np = 14;
737     for (int i = 0; i < np; i++) { 
738       eym[i] += 0.02;
739       eyp[i] += 0.02;
740     }
741     g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
742     SetGraphAttributes(g, INEL, ALICE, false, "alice_inel", 
743                        "#it{Eur.Phys.J}.#bf{C68}:89-108,2010"
744                        /* "ALICE INEL (publ.)" */);
745
746     return g;
747   }
748
749   //____________________________________________________________________
750   /** 
751    * Get the ALICE INEL>0 data in @f$ |\eta|<1.3@f$ for pp at @f$
752    * \sqrt{s} = 900GeV@f$ 
753    *
754    * p7741_d4x1y1 - Eur.Phys.J.C68:345-354,2010. 
755    *
756    * @return graph of data 
757    * 
758    * @ingroup pwglf_forward_otherdata
759    */
760   static TGraphAsymmErrors* AliceCentralInelGt900()
761   {  
762 #if 0
763     // INEL>0 - p7741_d4x1y1 - Eur.Phys.J.C68:345-354,2010. 
764     double x[] = { -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.7, 
765                    0.9 };
766     double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
767                      0.1 };
768     double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
769                      0.1 };
770     double y[] = { 4.0, 3.87, 3.8, 3.7, 3.67, 3.73, 3.72, 3.77, 3.92, 
771                    4.01 };
772     double eym[] = { 0.07615773105863909, 0.07615773105863909, 
773                      0.07615773105863909, 0.06324555320336758, 
774                      0.06324555320336758, 0.06324555320336758, 
775                      0.0670820393249937, 0.07615773105863909, 
776                      0.07615773105863909, 0.07615773105863909 };
777     double eyp[] = { 0.08544003745317531, 0.07615773105863909, 
778                      0.07615773105863909, 0.07280109889280519, 
779                      0.07280109889280519, 0.07280109889280519, 
780                      0.07615773105863909, 0.07615773105863909, 
781                      0.08544003745317531, 0.08544003745317531 };
782     const int np = 10;
783     for (int i = 0; i < np; i++) { 
784       double stat = (i >= 3  && i<=5) ? 0.02 : 0.03;
785       eym[i] += stat;
786       eyp[i] += stat;
787     }
788
789     TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
790 #else
791     // These are from JFGO
792     TGraphAsymmErrors *g = new TGraphAsymmErrors(15);
793     g->SetPoint(0,-1.5,4.12575);
794     g->SetPointError(0,0.1,0.1,0.0742967,0.0814571);
795     g->SetPoint(1,-1.3,3.91209);
796     g->SetPointError(1,0.1,0.1,0.0697701,0.0766199);
797     g->SetPoint(2,-1.1,3.98377);
798     g->SetPointError(2,0.1,0.1,0.0704503,0.0774795);
799     g->SetPoint(3,-0.9,4.00035);
800     g->SetPointError(3,0.1,0.1,0.0702388,0.0773433);
801     g->SetPoint(4,-0.7,3.87228);
802     g->SetPointError(4,0.1,0.1,0.067597,0.0745103);
803     g->SetPoint(5,-0.5,3.79613);
804     g->SetPointError(5,0.1,0.1,0.0659771,0.0727816);
805     g->SetPoint(6,-0.3,3.70489);
806     g->SetPointError(6,0.1,0.1,0.0642016,0.0708603);
807     g->SetPoint(7,-0.1,3.67423);
808     g->SetPointError(7,0.1,0.1,0.0635759,0.0701884);
809     g->SetPoint(8,0.1,3.72765);
810     g->SetPointError(8,0.1,0.1,0.0645004,0.071209);
811     g->SetPoint(9,0.3,3.72171);
812     g->SetPointError(9,0.1,0.1,0.064493,0.071182);
813     g->SetPoint(10,0.5,3.77428);
814     g->SetPointError(10,0.1,0.1,0.0655974,0.0723627);
815     g->SetPoint(11,0.7,3.91704);
816     g->SetPointError(11,0.1,0.1,0.0683783,0.0753716);
817     g->SetPoint(12,0.9,4.00674);
818     g->SetPointError(12,0.1,0.1,0.0703511,0.0774669);
819     g->SetPoint(13,1.1,3.97948);
820     g->SetPointError(13,0.1,0.1,0.0703744,0.077396);
821     g->SetPoint(14,1.3,3.99165);
822     g->SetPointError(14,0.1,0.1,0.0711888,0.078178);
823 #endif
824     SetGraphAttributes(g, INELGt0, ALICE, false, "alice_inelgt900", 
825                        // "ALICE INEL>0 (publ.)"
826                        "#it{Eur.Phys.J}.#bf{C68}:345-354,2010");
827     return g;
828   }
829
830   //____________________________________________________________________
831   /** 
832    * Get the ALICE INEL>0 data in @f$ |\eta|<0.9@f$ for pp at @f$
833    * \sqrt{s} = 2.36TeV@f$ 
834    *
835    * p7741_d5x1y1 - Eur.Phys.J.C68:345-354,2010. 
836    *
837    * @return graph of data 
838    * 
839    * @ingroup pwglf_forward_otherdata
840    */
841   static TGraphAsymmErrors* AliceCentralInelGt2360()
842   {  
843 #if 0
844     // INEL>0 - p7741_d5x1y1 - Eur.Phys.J.C68:345-354,2010. 
845     double x[] = { -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.7, 0.9 };
846     double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
847     double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
848     double y[] = { 4.91, 4.76, 4.63, 4.64, 4.55, 4.55, 4.64, 4.66, 4.82, 4.88 };
849     double eym[] = { 0.08544003745317531, 0.08544003745317531, 
850                      0.08544003745317531, 0.08544003745317531, 
851                      0.08544003745317531, 0.08544003745317531, 
852                      0.08544003745317531, 0.08544003745317531, 
853                      0.08544003745317531, 0.08544003745317531 };
854     double eyp[] = { 0.11401754250991379, 0.11401754250991379, 
855                      0.1044030650891055, 0.1044030650891055, 
856                      0.1044030650891055, 0.1044030650891055, 
857                      0.1044030650891055, 0.1044030650891055, 
858                      0.11401754250991379, 0.11401754250991379 };
859     const int np = 10;
860     for (int i = 0; i < np; i++) { 
861       double stat = 0.3;
862       eym[i] += stat;
863       eyp[i] += stat;
864     }
865
866     TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
867 #else 
868     // These are from JFGO
869     TGraphAsymmErrors* g = new TGraphAsymmErrors(15);
870     g->SetPoint(0,-1.5,4.79047);
871     g->SetPointError(0,0.1,0.1,0.0844278,0.109947);
872     g->SetPoint(1,-1.3,4.91068);
873     g->SetPointError(1,0.1,0.1,0.0856751,0.112038);
874     g->SetPoint(2,-1.1,4.87386);
875     g->SetPointError(2,0.1,0.1,0.0842846,0.110628);
876     g->SetPoint(3,-0.9,4.91365);
877     g->SetPointError(3,0.1,0.1,0.084339,0.111049);
878     g->SetPoint(4,-0.7,4.7601);
879     g->SetPointError(4,0.1,0.1,0.0812087,0.107203);
880     g->SetPoint(5,-0.5,4.63355);
881     g->SetPointError(5,0.1,0.1,0.078687,0.104079);
882     g->SetPoint(6,-0.3,4.63885);
883     g->SetPointError(6,0.1,0.1,0.0785337,0.104014);
884     g->SetPoint(7,-0.1,4.55439);
885     g->SetPointError(7,0.1,0.1,0.0769842,0.10203);
886     g->SetPoint(8,0.1,4.55087);
887     g->SetPointError(8,0.1,0.1,0.0769246,0.101951);
888     g->SetPoint(9,0.3,4.64118);
889     g->SetPointError(9,0.1,0.1,0.0785732,0.104066);
890     g->SetPoint(10,0.5,4.66172);
891     g->SetPointError(10,0.1,0.1,0.0791652,0.104711);
892     g->SetPoint(11,0.7,4.81871);
893     g->SetPointError(11,0.1,0.1,0.0822086,0.108523);
894     g->SetPoint(12,0.9,4.88193);
895     g->SetPointError(12,0.1,0.1,0.0837944,0.110332);
896     g->SetPoint(13,1.1,4.89068);
897     g->SetPointError(13,0.1,0.1,0.0845754,0.111009);
898     g->SetPoint(14,1.3,5.05663);
899     g->SetPointError(14,0.1,0.1,0.0882216,0.115368);
900 #endif
901
902     SetGraphAttributes(g, INELGt0, ALICE, false, "alice_inelgt2360", 
903                        // "ALICE INEL>0 (publ.)"
904                        "#it{Eur.Phys.J}.#bf{C68}:345-354,2010");
905     return g;
906   }
907
908   //____________________________________________________________________
909   /** 
910    * Get the ALICE INEL>0 data in @f$ |\eta|<0.9@f$ for pp at @f$
911    * \sqrt{s} = 7TeV@f$ 
912    *
913    * p7741_d6x1y1 - Eur.Phys.J.C68:345-354,2010. 
914    *
915    * @return graph of data 
916    * 
917    * @ingroup pwglf_forward_otherdata
918    */
919   static TGraphAsymmErrors* AliceCentralInelGt7000()
920   {  
921 #if 0
922     // INEL>0 - p7741_d6x1y1 - Eur.Phys.J.C68:345-354,2010. 
923     // Plot: p7741_d6x1y1
924     double x[] = { -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 0.5, 0.7, 0.9 };
925     double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
926     double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
927     double y[] = { 6.22, 6.07, 6.01, 5.84, 5.85, 5.85, 5.91, 6.01, 6.17, 6.26 };
928     double eym[] = { 0.1216552506059644, 0.1216552506059644, 
929                      0.1216552506059644, 0.11180339887498948, 
930                      0.11180339887498948, 0.11180339887498948, 
931                      0.11180339887498948, 0.1216552506059644, 
932                      0.1216552506059644, 0.1216552506059644 };
933     double eyp[] = { 0.21095023109728983, 0.21095023109728983, 
934                      0.2009975124224178, 0.2009975124224178, 
935                      0.2009975124224178, 0.2009975124224178, 
936                      0.2009975124224178, 0.2009975124224178, 
937                      0.21095023109728983, 0.21095023109728983 };
938     const int np = 10;
939     for (int i = 0; i < np; i++) { 
940       double stat = 0.2;
941       eym[i] += stat;
942       eyp[i] += stat;
943     }
944
945     TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
946 #else 
947     // These are from JFGO
948     TGraphAsymmErrors* g = new TGraphAsymmErrors(15);
949     g->SetPoint(0,-1.5,6.28573);
950     g->SetPointError(0,0.1,0.1,0.125928,0.215392);
951     g->SetPoint(1,-1.3,6.25573);
952     g->SetPointError(1,0.1,0.1,0.124352,0.213795);
953     g->SetPoint(2,-1.1,6.28779);
954     g->SetPointError(2,0.1,0.1,0.124143,0.214399);
955     g->SetPoint(3,-0.9,6.21881);
956     g->SetPointError(3,0.1,0.1,0.122079,0.211642);
957     g->SetPoint(4,-0.7,6.0728);
958     g->SetPointError(4,0.1,0.1,0.118661,0.206355);
959     g->SetPoint(5,-0.5,6.011);
960     g->SetPointError(5,0.1,0.1,0.117043,0.204019);
961     g->SetPoint(6,-0.3,5.84071);
962     g->SetPointError(6,0.1,0.1,0.11346,0.198086);
963     g->SetPoint(7,-0.1,5.8532);
964     g->SetPointError(7,0.1,0.1,0.113569,0.198433);
965     g->SetPoint(8,0.1,5.84811);
966     g->SetPointError(8,0.1,0.1,0.11347,0.198261);
967     g->SetPoint(9,0.3,5.91022);
968     g->SetPointError(9,0.1,0.1,0.11481,0.200444);
969     g->SetPoint(10,0.5,6.00649);
970     g->SetPointError(10,0.1,0.1,0.116955,0.203866);
971     g->SetPoint(11,0.7,6.17115);
972     g->SetPointError(11,0.1,0.1,0.120583,0.209697);
973     g->SetPoint(12,0.9,6.2645);
974     g->SetPointError(12,0.1,0.1,0.122976,0.213197);
975     g->SetPoint(13,1.1,6.36448);
976     g->SetPointError(13,0.1,0.1,0.125657,0.217014);
977     g->SetPoint(14,1.3,6.39489);
978     g->SetPointError(14,0.1,0.1,0.127118,0.218551);
979 #endif
980     SetGraphAttributes(g, INELGt0, ALICE, false, "alice_inelgt7000", 
981                        // "ALICE INEL>0 (publ.)"
982                        "#it{Eur.Phys.J}.#bf{C68}:345-354,2010");
983     return g;
984   }
985
986   //____________________________________________________________________
987   /** 
988    * Get the ALICE NSD data in @f$ |\eta|<1.3@f$ for pp at @f$
989    * \sqrt{s} = 900GeV@f$ 
990    *
991    * p7742_d2x1y1 - Eur.Phys.J.C68:89-108,2010. 
992    *
993    * @return graph of data 
994    * 
995    * @ingroup pwglf_forward_otherdata
996    */
997   static TGraphAsymmErrors* AliceCentralNsd900()
998   {
999     //NSD - p7742_d2x1y1 - Eur.Phys.J.C68:89-108,2010. 
1000     double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 
1001                    0.5, 0.7, 0.9, 1.1, 1.3 };
1002     double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
1003                      0.1, 0.1, 0.1, 0.1, 0.1 };
1004     double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
1005                      0.1, 0.1, 0.1, 0.1, 0.1 };
1006     double y[] = { 3.9, 3.89, 3.81, 3.7, 3.64, 3.59, 3.53, 3.58, 3.59, 
1007                    3.61, 3.74, 3.8, 3.87, 3.95 };
1008     double eym[] = { 0.13341664064126335, 0.13152946437965907, 
1009                      0.13152946437965907, 0.1216552506059644, 
1010                      0.1216552506059644, 0.1216552506059644, 
1011                      0.1216552506059644, 0.1216552506059644, 
1012                      0.1216552506059644, 0.1216552506059644, 
1013                      0.1216552506059644, 0.13152946437965907, 
1014                      0.13152946437965907, 0.13341664064126335 };
1015     double eyp[] = { 0.13341664064126335, 0.13152946437965907, 
1016                      0.13152946437965907, 0.1216552506059644, 
1017                      0.1216552506059644, 0.1216552506059644, 
1018                      0.1216552506059644, 0.1216552506059644, 
1019                      0.1216552506059644, 0.1216552506059644, 
1020                      0.1216552506059644, 0.13152946437965907, 
1021                      0.13152946437965907, 0.13341664064126335 };
1022     const int np = 14;
1023     for (int i = 0; i < np; i++) { 
1024       double stat = (i == 0 || i == np-1) ? 0.03 : 0.02;
1025       eym[i] += stat;
1026       eyp[i] += stat;
1027     }
1028
1029     TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
1030     SetGraphAttributes(g, NSD, ALICE, false, "alice_nsd", 
1031                        //"ALICE NSD (publ.)"
1032                        "#it{Eur.Phys.J}.#bf{C68}:89-108,2010");
1033
1034     return g;
1035   }
1036
1037   //____________________________________________________________________
1038   /** 
1039    * Get the ALICE INEL data in @f$ |\eta|<1.3@f$ for pp at @f$
1040    * \sqrt{s} = 2.36TeV@f$ 
1041    *
1042    * p7742_d3x1y1 - Eur.Phys.J.C68:89-108,2010. 
1043    *
1044    * @return graph of data 
1045    * 
1046    * @ingroup pwglf_forward_otherdata
1047    */
1048   static TGraphAsymmErrors* AliceCentralInel2360()
1049   {  
1050     // INEL - p7742_d3x1y1 - Eur.Phys.J.C68:89-108,2010. 
1051     double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 
1052                    0.5, 0.7, 0.9, 1.1, 1.3 };
1053     double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
1054                      0.1, 0.1, 0.1, 0.1, 0.1 };
1055     double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
1056                      0.1, 0.1, 0.1, 0.1, 0.1 };
1057     double y[] = { 4.08, 4.01, 4.0, 3.88, 3.77, 3.8, 3.73, 3.71, 3.79, 
1058                    3.82, 3.94, 4.02, 4.05, 4.16 };
1059     double eym[] = { 0.13341664064126335, 0.12369316876852982, 
1060                      0.12369316876852982, 0.1216552506059644, 
1061                      0.1216552506059644, 0.1216552506059644, 
1062                      0.1216552506059644, 0.11180339887498948, 
1063                      0.1216552506059644, 0.1216552506059644, 
1064                      0.12369316876852982, 0.12369316876852982, 
1065                      0.13341664064126335, 0.13341664064126335 };
1066     double eyp[] = { 0.2716615541441225, 0.2716615541441225, 
1067                      0.2716615541441225, 0.260768096208106, 
1068                      0.25079872407968906, 0.25079872407968906, 
1069                      0.25079872407968906, 0.25079872407968906, 
1070                      0.25079872407968906, 0.260768096208106, 
1071                      0.261725046566048, 0.2716615541441225, 
1072                      0.2716615541441225, 0.2816025568065745 };
1073     const int np = 14;
1074     for (int i = 0; i < np; i++) { 
1075       double stat = (i < 3  || i > np-1-4) ? 0.03 : 0.02;
1076       eym[i] += stat;
1077       eyp[i] += stat;
1078     }
1079
1080     TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
1081     SetGraphAttributes(g, NSD, ALICE, false, "alice_inel2360", 
1082                        // "ALICE INEL (publ.)"
1083                        "#it{Eur.Phys.J}.#bf{C68}:89-108,2010");
1084     return g;
1085   }
1086
1087   //____________________________________________________________________
1088   /** 
1089    * Get the ALICE NSD data in @f$ |\eta|<1.3@f$ for pp at @f$
1090    * \sqrt{s} = 2.36TeV@f$ 
1091    *
1092    * p7742_d4x1y1 - Eur.Phys.J.C68:89-108,2010. 
1093    *
1094    * @return graph of data 
1095    * 
1096    * @ingroup pwglf_forward_otherdata
1097    */
1098   static TGraphAsymmErrors* AliceCentralNsd2360()
1099   {  
1100     // NSD - p7742_d4x1y1 - Eur.Phys.J.C68:89-108,2010. 
1101     double x[] = { -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1, 0.1, 0.3, 
1102                    0.5, 0.7, 0.9, 1.1, 1.3 };
1103     double exm[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
1104                      0.1, 0.1, 0.1, 0.1, 0.1 };
1105     double exp[] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
1106                      0.1, 0.1, 0.1, 0.1, 0.1 };
1107     double y[] = { 4.79, 4.72, 4.7, 4.56, 4.44, 4.47, 4.39, 4.37, 4.47, 
1108                    4.5, 4.64, 4.73, 4.76, 4.9 };
1109     double eym[] = { 0.13601470508735444, 0.13341664064126335, 
1110                      0.13341664064126335, 0.12369316876852982, 
1111                      0.12369316876852982, 0.12369316876852982, 
1112                      0.12369316876852982, 0.12369316876852982, 
1113                      0.12369316876852982, 0.12369316876852982,
1114                      0.12369316876852982, 0.13341664064126335,
1115                      0.13341664064126335, 0.13341664064126335 };
1116     double eyp[] = { 0.18439088914585774, 0.18248287590894657,
1117                      0.18248287590894657, 0.1726267650163207,
1118                      0.1726267650163207, 0.1726267650163207, 
1119                      0.16278820596099708, 0.16278820596099708, 
1120                      0.1726267650163207, 0.1726267650163207, 
1121                      0.1726267650163207, 0.18248287590894657, 
1122                      0.18248287590894657, 0.18248287590894657 };
1123     const int np = 14;
1124   
1125     for (int i = 0; i < np; i++) { 
1126       double stat = (i < 1) ? 0.03 : 0.02;
1127       eym[i] += stat;
1128       eyp[i] += stat;
1129     }
1130
1131     TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
1132     SetGraphAttributes(g, NSD, ALICE, false, "alice_nsd2360", 
1133                        // "ALICE NSD (publ.)"
1134                        "#it{Eur.Phys.J}.#bf{C68}:89-108,2010");
1135     return g;
1136   }
1137
1138   //____________________________________________________________________
1139   /** 
1140    * Get the ALICE MB (CINT5, V0AND) data in @f$ |\eta|<2@f$ for pPb at 
1141    * @f$ \sqrt{s} = 5.023TeV@f$ 
1142    *
1143    * arXiv:1210.3615 [nucl-ex]
1144    *
1145    * @return graph of data 
1146    * 
1147    * @ingroup pwglf_forward_otherdata
1148    */
1149   static TGraphAsymmErrors* AliceCentralpPb5023()
1150   {  
1151     TGraphAsymmErrors *g = new TGraphAsymmErrors(43);
1152     g->SetName("");
1153     g->SetTitle("");
1154     g->SetFillColor(1);
1155     g->SetMarkerStyle(24);
1156     g->SetMarkerSize(1.3);
1157     g->SetPoint(0,-2.05,16.1757);
1158     g->SetPointError(0,0.05,0.05,0.360241,0.360241);
1159     g->SetPoint(1,-1.95,16.8454);
1160     g->SetPointError(1,0.05,0.05,0.184436,0.184436);
1161     g->SetPoint(2,-1.85,16.9748);
1162     g->SetPointError(2,0.05,0.05,0.112833,0.112833);
1163     g->SetPoint(3,-1.75,17.2504);
1164     g->SetPointError(3,0.05,0.05,0.0851792,0.0851792);
1165     g->SetPoint(4,-1.65,17.336);
1166     g->SetPointError(4,0.05,0.05,0.0674453,0.0674453);
1167     g->SetPoint(5,-1.55,17.4649);
1168     g->SetPointError(5,0.05,0.05,0.0558537,0.0558537);
1169     g->SetPoint(6,-1.45,17.5884);
1170     g->SetPointError(6,0.05,0.05,0.0481065,0.0481065);
1171     g->SetPoint(7,-1.35,17.7509);
1172     g->SetPointError(7,0.05,0.05,0.0448122,0.0448122);
1173     g->SetPoint(8,-1.25,17.8052);
1174     g->SetPointError(8,0.05,0.05,0.0403298,0.0403298);
1175     g->SetPoint(9,-1.15,17.8357);
1176     g->SetPointError(9,0.05,0.05,0.0383174,0.0383174);
1177     g->SetPoint(10,-1.05,17.7547);
1178     g->SetPointError(10,0.05,0.05,0.0356689,0.0356689);
1179     g->SetPoint(11,-0.95,17.6859);
1180     g->SetPointError(11,0.05,0.05,0.034326,0.034326);
1181     g->SetPoint(12,-0.85,17.6665);
1182     g->SetPointError(12,0.05,0.05,0.0333449,0.0333449);
1183     g->SetPoint(13,-0.75,17.6044);
1184     g->SetPointError(13,0.05,0.05,0.0325356,0.0325356);
1185     g->SetPoint(14,-0.65,17.4815);
1186     g->SetPointError(14,0.05,0.05,0.0318004,0.0318004);
1187     g->SetPoint(15,-0.55,17.4);
1188     g->SetPointError(15,0.05,0.05,0.0312675,0.0312675);
1189     g->SetPoint(16,-0.45,17.3425);
1190     g->SetPointError(16,0.05,0.05,0.0310344,0.0310344);
1191     g->SetPoint(17,-0.35,17.2885);
1192     g->SetPointError(17,0.05,0.05,0.0306043,0.0306043);
1193     g->SetPoint(18,-0.25,17.2646);
1194     g->SetPointError(18,0.05,0.05,0.0303226,0.0303226);
1195     g->SetPoint(19,-0.15,17.316);
1196     g->SetPointError(19,0.05,0.05,0.0302368,0.0302368);
1197     g->SetPoint(20,-0.05,17.312);
1198     g->SetPointError(20,0.05,0.05,0.0301444,0.0301444);
1199     g->SetPoint(21,0.05,17.4418);
1200     g->SetPointError(21,0.05,0.05,0.0301526,0.0301526);
1201     g->SetPoint(22,0.15,17.4944);
1202     g->SetPointError(22,0.05,0.05,0.0303199,0.0303199);
1203     g->SetPoint(23,0.25,17.642);
1204     g->SetPointError(23,0.05,0.05,0.0303867,0.0303867);
1205     g->SetPoint(24,0.35,17.8153);
1206     g->SetPointError(24,0.05,0.05,0.0306752,0.0306752);
1207     g->SetPoint(25,0.45,18.0244);
1208     g->SetPointError(25,0.05,0.05,0.0310274,0.0310274);
1209     g->SetPoint(26,0.55,18.1993);
1210     g->SetPointError(26,0.05,0.05,0.0314353,0.0314353);
1211     g->SetPoint(27,0.65,18.349);
1212     g->SetPointError(27,0.05,0.05,0.0316803,0.0316803);
1213     g->SetPoint(28,0.75,18.5976);
1214     g->SetPointError(28,0.05,0.05,0.0322819,0.0322819);
1215     g->SetPoint(29,0.85,18.8045);
1216     g->SetPointError(29,0.05,0.05,0.0329447,0.0329447);
1217     g->SetPoint(30,0.95,18.9865);
1218     g->SetPointError(30,0.05,0.05,0.0337513,0.0337513);
1219     g->SetPoint(31,1.05,19.2313);
1220     g->SetPointError(31,0.05,0.05,0.0354009,0.0354009);
1221     g->SetPoint(32,1.15,19.4055);
1222     g->SetPointError(32,0.05,0.05,0.0367366,0.0367366);
1223     g->SetPoint(33,1.25,19.5893);
1224     g->SetPointError(33,0.05,0.05,0.0385048,0.0385048);
1225     g->SetPoint(34,1.35,19.8196);
1226     g->SetPointError(34,0.05,0.05,0.0421699,0.0421699);
1227     g->SetPoint(35,1.45,19.9476);
1228     g->SetPointError(35,0.05,0.05,0.0451541,0.0451541);
1229     g->SetPoint(36,1.55,20.1012);
1230     g->SetPointError(36,0.05,0.05,0.0513641,0.0513641);
1231     g->SetPoint(37,1.65,20.1082);
1232     g->SetPointError(37,0.05,0.05,0.060302,0.060302);
1233     g->SetPoint(38,1.75,20.1732);
1234     g->SetPointError(38,0.05,0.05,0.0739969,0.0739969);
1235     g->SetPoint(39,1.85,20.1964);
1236     g->SetPointError(39,0.05,0.05,0.0953757,0.0953757);
1237     g->SetPoint(40,1.95,20.0509);
1238     g->SetPointError(40,0.05,0.05,0.147212,0.147212);
1239     g->SetPoint(41,2.05,20.3151);
1240     g->SetPointError(41,0.05,0.05,0.272151,0.272151);
1241     g->SetPoint(42,2.15,20.1319);
1242     g->SetPointError(42,0.05,0.05,0.802706,0.802706);
1243
1244
1245     SetGraphAttributes(g, NSD, ALICE, false, "alice_ppb50230", 
1246                        "arXiv:1210.3615");
1247     return g;
1248   }
1249
1250   //____________________________________________________________________
1251   /** 
1252    * Get the ALICE INEL data in @f$ |\eta|<1.8@f$ for pp at @f$ \sqrt{s}
1253    * = 900GeV@f$ 
1254    * Work in progress
1255    *
1256    * @return graph of data 
1257    * 
1258    * @ingroup pwglf_forward_otherdata
1259    */
1260   static TGraphAsymmErrors* AliceCentralInel900Work()
1261   {
1262     TGraphAsymmErrors *g = new TGraphAsymmErrors(18);
1263     // g->SetPoint(0,-1.9,0);   g->SetPointError(0,0.1,0.1,0,0);
1264     g->SetPoint(0,-1.7,3.13935);g->SetPointError(0,0.1,0.1,0.0726186,0.0525276);
1265     g->SetPoint(1,-1.5,3.15634);g->SetPointError(1,0.1,0.1,0.0338547,0.0380273);
1266     g->SetPoint(2,-1.3,3.13683);g->SetPointError(2,0.1,0.1,0.0295176,0.0295638);
1267     g->SetPoint(3,-1.1,3.10618);g->SetPointError(3,0.1,0.1,0.0306925,0.0329387);
1268     g->SetPoint(4,-0.9,3.05921);g->SetPointError(4,0.1,0.1,0.0224684,0.025408);
1269     g->SetPoint(5,-0.7,3.00303);g->SetPointError(5,0.1,0.1,0.0389278,0.0238328);
1270     g->SetPoint(6,-0.5,2.94604);g->SetPointError(6,0.1,0.1,0.0211986,0.0322219);
1271     g->SetPoint(7,-0.3,2.91507);g->SetPointError(7,0.1,0.1,0.030029,0.0209573);
1272     g->SetPoint(8,-0.1,2.88965);g->SetPointError(8,0.1,0.1,0.0286516,0.0253694);
1273     g->SetPoint(9,0.1,2.89731); g->SetPointError(9,0.1,0.1,0.0334615,0.0192116);
1274     g->SetPoint(10,0.3,2.91188);g->SetPointError(10,0.1,0.1,0.0503868,0.024911);
1275     g->SetPoint(11,0.5,2.96295);g->SetPointError(11,0.1,0.1,0.030009,0.0284692);
1276     g->SetPoint(12,0.7,3.0089); g->SetPointError(12,0.1,0.1,0.0189095,0.026319);
1277     g->SetPoint(13,0.9,3.07028);g->SetPointError(13,0.1,0.1,0.0449128,0.030738);
1278     g->SetPoint(14,1.1,3.10215);g->SetPointError(14,0.1,0.1,0.0288688,0.026301);
1279     g->SetPoint(15,1.3,3.12946);g->SetPointError(15,0.1,0.1,0.0431495,0.026355);
1280     g->SetPoint(16,1.5,3.14549);g->SetPointError(16,0.1,0.1,0.0322482,0.033611);
1281     g->SetPoint(17,1.7,3.15729);g->SetPointError(17,0.1,0.1,0.105509,0.0523796);
1282     // g->SetPoint(19,1.9,0);   g->SetPointError(19,0.1,0.1,0,0);
1283
1284     SetGraphAttributes(g, INEL, WIP, false, "alice_pp900work", 
1285                        "PWG-UD/MULT - work in progress");
1286     return g;
1287   }
1288
1289   //____________________________________________________________________
1290   /** 
1291    * Get the ALICE NSD data in @f$ |\eta|<1.8@f$ for pp at @f$ \sqrt{s} 
1292    * = 900GeV@f$  
1293    * Work in progress
1294    *
1295    * @return graph of data 
1296    * 
1297    * @ingroup pwglf_forward_otherdata
1298    */
1299   static TGraphAsymmErrors* AliceCentralNsd900Work()
1300   {
1301     TGraphAsymmErrors *g = new TGraphAsymmErrors(18);
1302   
1303     g->SetPoint(0,-1.7,3.84726);g->SetPointError(0,0.1,0.1,0.114853,0.118974);
1304     g->SetPoint(1,-1.5,3.87094);g->SetPointError(1,0.1,0.1,0.10574,0.108613);
1305     g->SetPoint(2,-1.3,3.84769);g->SetPointError(2,0.1,0.1,0.105942,0.107644);
1306     g->SetPoint(3,-1.1,3.8122); g->SetPointError(3,0.1,0.1,0.100838,0.101818);
1307     g->SetPoint(4,-0.9,3.75388);g->SetPointError(4,0.1,0.1,0.0967073,0.0972099);
1308     g->SetPoint(5,-0.7,3.68733);g->SetPointError(5,0.1,0.1,0.0923424,0.0925662);
1309     g->SetPoint(6,-0.5,3.61874);g->SetPointError(6,0.1,0.1,0.0904027,0.090477);
1310     g->SetPoint(7,-0.3,3.58091);g->SetPointError(7,0.1,0.1,0.0875915,0.0875992);
1311     g->SetPoint(8,-0.1,3.54905);g->SetPointError(8,0.1,0.1,0.086046,0.0860293);
1312     g->SetPoint(9,0.1,3.55968); g->SetPointError(9,0.1,0.1,0.0884776,0.0884612);
1313     g->SetPoint(10,0.3,3.57729);g->SetPointError(10,0.1,0.1,0.0857614,0.085769);
1314     g->SetPoint(11,0.5,3.63879);g->SetPointError(11,0.1,0.1,0.0879787,0.088056);
1315     g->SetPoint(12,0.7,3.69422);g->SetPointError(12,0.1,0.1,0.0931736,0.093396);
1316     g->SetPoint(13,0.9,3.76835);g->SetPointError(13,0.1,0.1,0.0928833,0.093410);
1317     g->SetPoint(14,1.1,3.80647);g->SetPointError(14,0.1,0.1,0.0998124,0.100799);
1318     g->SetPoint(15,1.3,3.83824);g->SetPointError(15,0.1,0.1,0.102549,0.104298);
1319     g->SetPoint(16,1.5,3.85778);g->SetPointError(16,0.1,0.1,0.10267,0.105607);
1320     g->SetPoint(17,1.7,3.87075);g->SetPointError(17,0.1,0.1,0.114093,0.11829);
1321
1322     SetGraphAttributes(g, NSD, WIP, false, "alice_pp900nsdwork", 
1323                        "PWG-UD/MULT - work in progress");
1324     return g;
1325   }
1326
1327   //____________________________________________________________________
1328   /** 
1329    * Get the ALICE INEL>0 data in @f$ |\eta|<1.8@f$ for pp at @f$ \sqrt{s}
1330    * = 900GeV@f$ 
1331    * Work in progress
1332    *
1333    * @return graph of data 
1334    * 
1335    * @ingroup pwglf_forward_otherdata
1336    */
1337   static TGraphAsymmErrors* AliceCentralInelGt900Work()
1338   {
1339     TGraphAsymmErrors *g = new TGraphAsymmErrors(10);
1340      
1341     g->SetPoint(0,-0.9,3.90755);g->SetPointError(0,0.1,0.1,0.0377085,0.0355101);
1342     g->SetPoint(1,-0.7,3.8357); g->SetPointError(1,0.1,0.1,0.0477674,0.0349303);
1343     g->SetPoint(2,-0.5,3.76291);g->SetPointError(2,0.1,0.1,0.0277709,0.040401);
1344     g->SetPoint(3,-0.3,3.72336);g->SetPointError(3,0.1,0.1,0.0343553,0.0250805);
1345     g->SetPoint(4,-0.1,3.69098);g->SetPointError(4,0.1,0.1,0.0324842,0.0324248);
1346     g->SetPoint(5,0.1,3.70076); g->SetPointError(5,0.1,0.1,0.0390932,0.0246738);
1347     g->SetPoint(6,0.3,3.71924); g->SetPointError(6,0.1,0.1,0.0576054,0.0287106);
1348     g->SetPoint(7,0.5,3.7844);  g->SetPointError(7,0.1,0.1,0.0316759,0.0295124);
1349     g->SetPoint(8,0.7,3.84319); g->SetPointError(8,0.1,0.1,0.0293134,0.0332125);
1350     g->SetPoint(9,0.9,3.92163); g->SetPointError(9,0.1,0.1,0.0558339,0.0394925);
1351
1352     SetGraphAttributes(g, INELGt0, WIP, false, "alice_pp900inelgtwork", 
1353                        "PWG-UD/MULT - work in progress");
1354     return g;
1355   }
1356
1357   //____________________________________________________________________
1358   /**
1359    * Get the ALICE INEL data in @f$ |\eta|<1.8@f$ for pp
1360    * at @f$ \sqrt{s} = 2760GeV@f$
1361    * Work in progress
1362    * 
1363    * @return graph of data
1364    * 
1365    * @ingroup pwglf_forward_otherdata
1366    */
1367   static TGraphAsymmErrors* AliceCentralInel2760Work()
1368   {
1369     TGraphAsymmErrors*    g = new TGraphAsymmErrors(18);
1370     g->SetPoint(0,-1.7,4.0313);  g->SetPointError(0,0.1,0.1,0.100951,0.104678);
1371     g->SetPoint(1,-1.5,4.0431);  g->SetPointError(1,0.1,0.1,0.10129,0.103883);
1372     g->SetPoint(2,-1.3,4.01251); g->SetPointError(2,0.1,0.1,0.10847,0.110089);
1373     g->SetPoint(3,-1.1,3.96799); g->SetPointError(3,0.1,0.1,0.105543,0.106623);
1374     g->SetPoint(4,-0.9,3.89669); g->SetPointError(4,0.1,0.1,0.110974,0.111625);
1375     g->SetPoint(5,-0.7,3.81051); g->SetPointError(5,0.1,0.1,0.108463,0.108882);
1376     g->SetPoint(6,-0.5,3.76537); g->SetPointError(6,0.1,0.1,0.105488,0.105773);
1377     g->SetPoint(7,-0.3,3.69733); g->SetPointError(7,0.1,0.1,0.110156,0.11035);
1378     g->SetPoint(8,-0.1,3.68148); g->SetPointError(8,0.1,0.1,0.105564,0.105733);
1379     g->SetPoint(9,0.1,3.67386);  g->SetPointError(9,0.1,0.1,0.1058,0.105968);
1380     g->SetPoint(10,0.3,3.69873); g->SetPointError(10,0.1,0.1,0.107167,0.107367);
1381     g->SetPoint(11,0.5,3.76377); g->SetPointError(11,0.1,0.1,0.111177,0.111448);
1382     g->SetPoint(12,0.7,3.81956); g->SetPointError(12,0.1,0.1,0.107198,0.107623);
1383     g->SetPoint(13,0.9,3.89506); g->SetPointError(13,0.1,0.1,0.105617,0.1063);
1384     g->SetPoint(14,1.1,3.95888); g->SetPointError(14,0.1,0.1,0.111316,0.112336);
1385     g->SetPoint(15,1.3,4.00176); g->SetPointError(15,0.1,0.1,0.111751,0.113315);
1386     g->SetPoint(16,1.5,4.03247); g->SetPointError(16,0.1,0.1,0.114383,0.116674);
1387     g->SetPoint(17,1.7,4.061);   g->SetPointError(17,0.1,0.1,0.107094,0.110665);
1388   
1389     SetGraphAttributes(g, INEL, WIP, false,
1390                        "alice_ppInel2760Work",
1391                        "PWG-UD/MULT - work in progress");
1392     return g;
1393   }
1394   //____________________________________________________________________
1395   /**
1396    * Get the ALICE NSD data in @f$ |\eta|<1.8@f$ for pp
1397    * at @f$ \sqrt{s} = 2760GeV@f$
1398    * Work in progress
1399    * 
1400    * @return graph of data
1401    * 
1402    * @ingroup pwglf_forward_otherdata
1403    */
1404   static TGraphAsymmErrors* AliceCentralNsd2760Work()
1405   {
1406     TGraphAsymmErrors*    g = new TGraphAsymmErrors(18);
1407     g->SetPoint(0,-1.7,4.8704);  g->SetPointError(0,0.1,0.1,0.221293,0.224755);
1408     g->SetPoint(1,-1.5,4.88859); g->SetPointError(1,0.1,0.1,0.221269,0.223478);
1409     g->SetPoint(2,-1.3,4.85326); g->SetPointError(2,0.1,0.1,0.21109,0.212455);
1410     g->SetPoint(3,-1.1,4.80085); g->SetPointError(3,0.1,0.1,0.21041,0.211157);
1411     g->SetPoint(4,-0.9,4.71513); g->SetPointError(4,0.1,0.1,0.198361,0.198749);
1412     g->SetPoint(5,-0.7,4.61153); g->SetPointError(5,0.1,0.1,0.194009,0.194176);
1413     g->SetPoint(6,-0.5,4.55715); g->SetPointError(6,0.1,0.1,0.193226,0.193281);
1414     g->SetPoint(7,-0.3,4.47508); g->SetPointError(7,0.1,0.1,0.182433,0.182439);
1415     g->SetPoint(8,-0.1,4.45709); g->SetPointError(8,0.1,0.1,0.186518,0.186506);
1416     g->SetPoint(9,0.1,4.44707);  g->SetPointError(9,0.1,0.1,0.185747,0.185735);
1417     g->SetPoint(10,0.3,4.47734); g->SetPointError(10,0.1,0.1,0.185835,0.185841);
1418     g->SetPoint(11,0.5,4.55477); g->SetPointError(11,0.1,0.1,0.186934,0.186991);
1419     g->SetPoint(12,0.7,4.62236); g->SetPointError(12,0.1,0.1,0.196631,0.196796);
1420     g->SetPoint(13,0.9,4.71277); g->SetPointError(13,0.1,0.1,0.204034,0.20441);
1421     g->SetPoint(14,1.1,4.78902); g->SetPointError(14,0.1,0.1,0.20317,0.20394);
1422     g->SetPoint(15,1.3,4.84008); g->SetPointError(15,0.1,0.1,0.205573,0.206967);
1423     g->SetPoint(16,1.5,4.87453); g->SetPointError(16,0.1,0.1,0.206314,0.208667);
1424     g->SetPoint(17,1.7,4.90614); g->SetPointError(17,0.1,0.1,0.218996,0.222545);
1425   
1426     SetGraphAttributes(g, NSD, WIP, false,
1427                        "alice_ppNsd2760Work",
1428                        "PWG-UD/MULT - work in progress");
1429     return g;
1430   }
1431   //____________________________________________________________________
1432   /**
1433    * Get the ALICE INELGt0 data in @f$ |\eta|<1.8@f$ for pp
1434    * at @f$ \sqrt{s} = 2760GeV@f$
1435    * Work in progress
1436    * 
1437    * @return graph of data
1438    * 
1439    * @ingroup pwglf_forward_otherdata
1440    */
1441   static TGraphAsymmErrors* AliceCentralInelGt2760Work()
1442   {
1443     TGraphAsymmErrors*    g = new TGraphAsymmErrors(10);
1444     g->SetPoint(0,-0.9,4.96315); g->SetPointError(0,0.1,0.1,0.0439746,0.0440108);
1445     g->SetPoint(1,-0.7,4.8532); g->SetPointError(1,0.1,0.1,0.0426373,0.0600727);
1446     g->SetPoint(2,-0.5,4.79582);g->SetPointError(2,0.1,0.1,0.0475367,0.0466255);
1447     g->SetPoint(3,-0.3,4.70907);g->SetPointError(3,0.1,0.1,0.0313084,0.0468084);
1448     g->SetPoint(4,-0.1,4.68906);g->SetPointError(4,0.1,0.1,0.0413149,0.0397909);
1449     g->SetPoint(5,0.1,4.67937); g->SetPointError(5,0.1,0.1,0.0346151,0.0450248);
1450     g->SetPoint(6,0.3,4.7109);  g->SetPointError(6,0.1,0.1,0.0408403,0.0839992);
1451     g->SetPoint(7,0.5,4.79359); g->SetPointError(7,0.1,0.1,0.0324516,0.0357053);
1452     g->SetPoint(8,0.7,4.86469); g->SetPointError(8,0.1,0.1,0.0452175,0.0477304);
1453     g->SetPoint(9,0.9,4.96078); g->SetPointError(9,0.1,0.1,0.0566798,0.0804077);
1454   
1455     SetGraphAttributes(g, INELGt0, WIP, false,
1456                        "alice_ppInelGt2760Work",
1457                        "PWG-UD/MULT - work in progress");
1458     return g;
1459   }
1460
1461   //____________________________________________________________________
1462   /**
1463    * Get the ALICE INEL data in @f$ |\eta|<1.8@f$ for pp
1464    * at @f$ \sqrt{s} = 7000GeV@f$
1465    * Work in progress
1466    * 
1467    * @return graph of data
1468    * 
1469    * @ingroup pwglf_forward_otherdata
1470    */
1471   static TGraphAsymmErrors* AliceCentralInel7000Work()
1472   {
1473     TGraphAsymmErrors* g = new TGraphAsymmErrors(18);
1474     g->SetPoint(0,-1.7,4.97541); g->SetPointError(0,0.1,0.1,0.187526,0.162049);
1475     g->SetPoint(1,-1.5,4.98161); g->SetPointError(1,0.1,0.1,0.128353,0.149085);
1476     g->SetPoint(2,-1.3,4.94853); g->SetPointError(2,0.1,0.1,0.129841,0.144762);
1477     g->SetPoint(3,-1.1,4.88924); g->SetPointError(3,0.1,0.1,0.137866,0.157862);
1478     g->SetPoint(4,-0.9,4.79998); g->SetPointError(4,0.1,0.1,0.144492,0.158783);
1479     g->SetPoint(5,-0.7,4.71399); g->SetPointError(5,0.1,0.1,0.132703,0.156135);
1480     g->SetPoint(6,-0.5,4.63098); g->SetPointError(6,0.1,0.1,0.129938,0.147085);
1481     g->SetPoint(7,-0.3,4.56815); g->SetPointError(7,0.1,0.1,0.129424,0.145485);
1482     g->SetPoint(8,-0.1,4.52372); g->SetPointError(8,0.1,0.1,0.129049,0.145285);
1483     g->SetPoint(9,0.1,4.52946);  g->SetPointError(9,0.1,0.1,0.131266,0.144285);
1484     g->SetPoint(10,0.3,4.56411); g->SetPointError(10,0.1,0.1,0.130652,0.149019);
1485     g->SetPoint(11,0.5,4.63554); g->SetPointError(11,0.1,0.1,0.133415,0.144298);
1486     g->SetPoint(12,0.7,4.71592); g->SetPointError(12,0.1,0.1,0.136436,0.151768);
1487     g->SetPoint(13,0.9,4.8059);  g->SetPointError(13,0.1,0.1,0.136996,0.142551);
1488     g->SetPoint(14,1.1,4.88457); g->SetPointError(14,0.1,0.1,0.134237,0.142764);
1489     g->SetPoint(15,1.3,4.92903); g->SetPointError(15,0.1,0.1,0.131933,0.152767);
1490     g->SetPoint(16,1.5,4.96487); g->SetPointError(16,0.1,0.1,0.140214,0.147354);
1491     g->SetPoint(17,1.7,4.95502); g->SetPointError(17,0.1,0.1,0.156906,0.14759);
1492   
1493     SetGraphAttributes(g, INEL, WIP, false,
1494                        "alice_ppInel7000Work",
1495                        "PWG-UD/MULT - work in progress");
1496     return g;
1497   }
1498   //____________________________________________________________________
1499   /**
1500    * Get the ALICE NSD data in @f$ |\eta|<1.8@f$ for pp
1501    * at @f$ \sqrt{s} = 7000GeV@f$
1502    * Work in progress
1503    * 
1504    * @return graph of data
1505    * 
1506    * @ingroup pwglf_forward_otherdata
1507    */
1508   static TGraphAsymmErrors* AliceCentralNsd7000Work()
1509   {
1510     TGraphAsymmErrors* g = new TGraphAsymmErrors(18);
1511     g->SetPoint(0,-1.7,6.12747);g->SetPointError(0,0.1,0.1,0.157334,0.164918);
1512     g->SetPoint(1,-1.5,6.1353); g->SetPointError(1,0.1,0.1,0.146834,0.152011);
1513     g->SetPoint(2,-1.3,6.09648);g->SetPointError(2,0.1,0.1,0.140067,0.143287);
1514     g->SetPoint(3,-1.1,6.02552);g->SetPointError(3,0.1,0.1,0.133435,0.135281);
1515     g->SetPoint(4,-0.9,5.91705);g->SetPointError(4,0.1,0.1,0.129449,0.130381);
1516     g->SetPoint(5,-0.7,5.81246);g->SetPointError(5,0.1,0.1,0.126477,0.126883);
1517     g->SetPoint(6,-0.5,5.71104);g->SetPointError(6,0.1,0.1,0.124521,0.124655);
1518     g->SetPoint(7,-0.3,5.63422);g->SetPointError(7,0.1,0.1,0.120116,0.12013);
1519     g->SetPoint(8,-0.1,5.57977);g->SetPointError(8,0.1,0.1,0.119286,0.119256);
1520     g->SetPoint(9,0.1,5.58662); g->SetPointError(9,0.1,0.1,0.119331,0.119301);
1521     g->SetPoint(10,0.3,5.6291); g->SetPointError(10,0.1,0.1,0.120683,0.120697);
1522     g->SetPoint(11,0.5,5.7166); g->SetPointError(11,0.1,0.1,0.122787,0.122923);
1523     g->SetPoint(12,0.7,5.81463);g->SetPointError(12,0.1,0.1,0.126293,0.1267);
1524     g->SetPoint(13,0.9,5.92404);g->SetPointError(13,0.1,0.1,0.129522,0.130456);
1525     g->SetPoint(14,1.1,6.01958);g->SetPointError(14,0.1,0.1,0.134505,0.136333);
1526     g->SetPoint(15,1.3,6.07232);g->SetPointError(15,0.1,0.1,0.140728,0.143909);
1527     g->SetPoint(16,1.5,6.11596);g->SetPointError(16,0.1,0.1,0.14756,0.15268);
1528     g->SetPoint(17,1.7,6.10155);g->SetPointError(17,0.1,0.1,0.151731,0.159518);
1529   
1530     SetGraphAttributes(g, NSD, WIP, false,
1531                        "alice_ppNsd7000Work",
1532                        "PWG-UD/MULT - work in progress");
1533     return g;
1534   }
1535
1536   //____________________________________________________________________
1537   /**
1538    * Get the ALICE INELGt0 data in @f$ |\eta|<1.8@f$ for pp
1539    * at @f$ \sqrt{s} = 7000GeV@f$
1540    * Work in progress
1541    * 
1542    * @return graph of data
1543    * 
1544    * @ingroup pwglf_forward_otherdata
1545    */
1546   static TGraphAsymmErrors* AliceCentralInelGt7000Work()
1547   {
1548     TGraphAsymmErrors* g = new TGraphAsymmErrors(10);
1549     g->SetPoint(0,-0.9,6.22689);g->SetPointError(0,0.1,0.1,0.0959094,0.10395);
1550     g->SetPoint(1,-0.7,6.11603);g->SetPointError(1,0.1,0.1,0.0609242,0.0984269);
1551     g->SetPoint(2,-0.5,6.00881);g->SetPointError(2,0.1,0.1,0.0595691,0.0842045);
1552     g->SetPoint(3,-0.3,5.9274); g->SetPointError(3,0.1,0.1,0.0560837,0.0780806);
1553     g->SetPoint(4,-0.1,5.86988);g->SetPointError(4,0.1,0.1,0.0552611,0.0798584);
1554     g->SetPoint(5,0.1,5.8773);  g->SetPointError(5,0.1,0.1,0.062512,0.077947);
1555     g->SetPoint(6,0.3,5.92215); g->SetPointError(6,0.1,0.1,0.0535152,0.0863595);
1556     g->SetPoint(7,0.5,6.01458); g->SetPointError(7,0.1,0.1,0.0578218,0.0745799);
1557     g->SetPoint(8,0.7,6.1186);  g->SetPointError(8,0.1,0.1,0.0767397,0.0899574);
1558     g->SetPoint(9,0.9,6.23468); g->SetPointError(9,0.1,0.1,0.0786932,0.073295);
1559   
1560     SetGraphAttributes(g, INELGt0, WIP, false,
1561                        "alice_ppInelGt7000Work",
1562                        "PWG-UD/MULT - work in progress");
1563     return g;
1564   }
1565   //____________________________________________________________________
1566   /**
1567    * Get the ALICE INEL data in @f$ |\eta|<1.8@f$ for pp
1568    * at @f$ \sqrt{s} = 8000GeV@f$
1569    * Work in progress
1570    * 
1571    * @return graph of data
1572    * 
1573    * @ingroup pwglf_forward_otherdata
1574    */
1575   static TGraphAsymmErrors* AliceCentralInel8000Work()
1576   {
1577     TGraphAsymmErrors*  g = new TGraphAsymmErrors(18);
1578     g->SetPoint(0,-1.7,5.1333); g->SetPointError(0,0.1,0.1,0.0613865,0.0707879);
1579     g->SetPoint(1,-1.5,5.14341);g->SetPointError(1,0.1,0.1,0.117829,0.121428);
1580     g->SetPoint(2,-1.3,5.13589);g->SetPointError(2,0.1,0.1,0.110807,0.113393);
1581     g->SetPoint(3,-1.1,5.06167);g->SetPointError(3,0.1,0.1,0.120091,0.121635);
1582     g->SetPoint(4,-0.9,4.97796);g->SetPointError(4,0.1,0.1,0.116141,0.117154);
1583     g->SetPoint(5,-0.7,4.88431);g->SetPointError(5,0.1,0.1,0.11944,0.120064);
1584     g->SetPoint(6,-0.5,4.81236);g->SetPointError(6,0.1,0.1,0.11049,0.110936);
1585     g->SetPoint(7,-0.3,4.72239);g->SetPointError(7,0.1,0.1,0.110969,0.111284);
1586     g->SetPoint(8,-0.1,4.66962);g->SetPointError(8,0.1,0.1,0.125108,0.125337);
1587     g->SetPoint(9,0.1,4.69441); g->SetPointError(9,0.1,0.1,0.113766,0.114021);
1588     g->SetPoint(10,0.3,4.7335); g->SetPointError(10,0.1,0.1,0.104531,0.104866);
1589     g->SetPoint(11,0.5,4.79917);g->SetPointError(11,0.1,0.1,0.107076,0.107534);
1590     g->SetPoint(12,0.7,4.88713);g->SetPointError(12,0.1,0.1,0.106124,0.106827);
1591     g->SetPoint(13,0.9,4.98035);g->SetPointError(13,0.1,0.1,0.120107,0.121087);
1592     g->SetPoint(14,1.1,5.05366);g->SetPointError(14,0.1,0.1,0.115795,0.11739);
1593     g->SetPoint(15,1.3,5.11276);g->SetPointError(15,0.1,0.1,0.123574,0.125877);
1594     g->SetPoint(16,1.5,5.16105);g->SetPointError(16,0.1,0.1,0.0979751,0.102305);
1595     g->SetPoint(17,1.7,5.16477);g->SetPointError(17,0.1,0.1,0.116096,0.121392);
1596   
1597     SetGraphAttributes(g, INEL, WIP, false,
1598                        "alice_ppInel8000Work",
1599                        "PWG-UD/MULT - work in progress");
1600     return g;
1601   }
1602
1603   //____________________________________________________________________
1604   /**
1605    * Get the ALICE NSD data in @f$ |\eta|<1.8@f$ for pp
1606    * at @f$ \sqrt{s} = 8000GeV@f$
1607    * Work in progress
1608    * 
1609    * @return graph of data
1610    * 
1611    * @ingroup pwglf_forward_otherdata
1612    */
1613   static TGraphAsymmErrors* AliceCentralNsd8000Work()
1614   {
1615     TGraphAsymmErrors* g = new TGraphAsymmErrors(18);
1616     g->SetPoint(0,-1.7,6.28722);g->SetPointError(0,0.1,0.1,0.220541,0.2263);
1617     g->SetPoint(1,-1.5,6.29211);g->SetPointError(1,0.1,0.1,0.126653,0.132922);
1618     g->SetPoint(2,-1.3,6.29313);g->SetPointError(2,0.1,0.1,0.142432,0.145805);
1619     g->SetPoint(3,-1.1,6.1944); g->SetPointError(3,0.1,0.1,0.116871,0.119093);
1620     g->SetPoint(4,-0.9,6.09529);g->SetPointError(4,0.1,0.1,0.121064,0.122121);
1621     g->SetPoint(5,-0.7,5.97811);g->SetPointError(5,0.1,0.1,0.111525,0.112012);
1622     g->SetPoint(6,-0.5,5.88992);g->SetPointError(6,0.1,0.1,0.119488,0.119637);
1623     g->SetPoint(7,-0.3,5.78296);g->SetPointError(7,0.1,0.1,0.114947,0.114962);
1624     g->SetPoint(8,-0.1,5.71633);g->SetPointError(8,0.1,0.1,0.0933,0.09326);
1625     g->SetPoint(9,0.1,5.74663); g->SetPointError(9,0.1,0.1,0.109892,0.109857);
1626     g->SetPoint(10,0.3,5.79472);g->SetPointError(10,0.1,0.1,0.123704,0.123718);
1627     g->SetPoint(11,0.5,5.87545);g->SetPointError(11,0.1,0.1,0.122522,0.122667);
1628     g->SetPoint(12,0.7,5.98273);g->SetPointError(12,0.1,0.1,0.128316,0.128739);
1629     g->SetPoint(13,0.9,6.09037);g->SetPointError(13,0.1,0.1,0.114321,0.115437);
1630     g->SetPoint(14,1.1,6.18105);g->SetPointError(14,0.1,0.1,0.125412,0.127476);
1631     g->SetPoint(15,1.3,6.24275);g->SetPointError(15,0.1,0.1,0.118631,0.122597);
1632     g->SetPoint(16,1.5,6.28916);g->SetPointError(16,0.1,0.1,0.144205,0.149736);
1633     g->SetPoint(17,1.7,6.28878);g->SetPointError(17,0.1,0.1,0.134438,0.143695);
1634   
1635     SetGraphAttributes(g, NSD, WIP, false,
1636                        "alice_ppNsd8000Work",
1637                        "PWG-UD/MULT - work in progress");
1638     return g;
1639   }
1640   //____________________________________________________________________
1641   /**
1642    * Get the ALICE INELGt0 data in @f$ |\eta|<1.8@f$ for pp
1643    * at @f$ \sqrt{s} = 8000GeV@f$
1644    * Work in progress
1645    * 
1646    * @return graph of data
1647    * 
1648    * @ingroup pwglf_forward_otherdata
1649    */
1650   static TGraphAsymmErrors* AliceCentralInelGt8000Work()
1651   {
1652     TGraphAsymmErrors*  g = new TGraphAsymmErrors(10);
1653     g->SetPoint(0,-0.9,6.38567);g->SetPointError(0,0.1,0.1,0.0436571,0.0436571);
1654     g->SetPoint(1,-0.7,6.26363);g->SetPointError(1,0.1,0.1,0.0312036,0.0312036);
1655     g->SetPoint(2,-0.5,6.17205);g->SetPointError(2,0.1,0.1,0.0351509,0.0351509);
1656     g->SetPoint(3,-0.3,6.05629);g->SetPointError(3,0.1,0.1,0.0302028,0.0302028);
1657     g->SetPoint(4,-0.1,5.98823);g->SetPointError(4,0.1,0.1,0.0141541,0.0141541);
1658     g->SetPoint(5,0.1,6.02043); g->SetPointError(5,0.1,0.1,0.0256893,0.0256893);
1659     g->SetPoint(6,0.3,6.07111); g->SetPointError(6,0.1,0.1,0.0380304,0.0380304);
1660     g->SetPoint(7,0.5,6.15492); g->SetPointError(7,0.1,0.1,0.0384435,0.0384435);
1661     g->SetPoint(8,0.7,6.26781); g->SetPointError(8,0.1,0.1,0.0450579,0.0450579);
1662     g->SetPoint(9,0.9,6.38491); g->SetPointError(9,0.1,0.1,0.0396431,0.0396431);
1663   
1664     SetGraphAttributes(g, INELGt0, WIP, false,
1665                        "alice_ppInelGt8000Work",
1666                        "PWG-UD/MULT - work in progress");
1667     return g;
1668   }
1669   
1670   //____________________________________________________________________
1671   /** 
1672    * Get the CMS NSD data in @f$ |\eta|<2.25@f$ for pp at @f$
1673    * \sqrt{s} = 900GeV@f$ 
1674    *
1675    * p7743_d8x1y1
1676    *
1677    * @return graph of data 
1678    * 
1679    * @ingroup pwglf_forward_otherdata
1680    */
1681   static TGraphAsymmErrors* CMSNsd900()
1682   {
1683     // CMS published NSD data - p7743_d8x1y1
1684     double x[] ={ -2.25, -1.75, -1.25, -0.75, -0.25, 0.25, 0.75,1.25,1.75,2.25};
1685     double exm[] ={ 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25};
1686     double exp[] ={ 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25};
1687     double y[] = { 3.6, 3.73, 3.62, 3.54, 3.48, 3.48, 3.54, 3.62, 3.73,  3.6 };
1688     double eym[] ={ 0.13, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.14,0.13 };
1689     double eyp[] ={ 0.13, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.14,0.13 };
1690     const int np = 10;
1691     TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
1692     SetGraphAttributes(g, NSD, CMS, false, "cms_nsd900", "CMS");
1693
1694     return g;
1695   }
1696
1697
1698   //____________________________________________________________________
1699   /** 
1700    * Get the CMS NSD data in @f$ |\eta|<2.25@f$ for pp at @f$
1701    * \sqrt{s} = 2.36GeV@f$ 
1702    *
1703    * p7743_d8x1y2
1704    *
1705    * @return graph of data 
1706    * 
1707    * @ingroup pwglf_forward_otherdata
1708    */
1709   static TGraphAsymmErrors* CMSNsd2360()
1710   {
1711     // CMS NSD 2360 - p7743_d8x1y2
1712     double x[] ={ -2.25, -1.75, -1.25, -0.75, -0.25, 0.25, 0.75,1.25,1.75,2.25};
1713     double exm[] ={ 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25};
1714     double exp[] ={ 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25};
1715     double y[] = { 4.78, 4.81, 4.66, 4.61, 4.47, 4.47, 4.61, 4.66, 4.81,  4.78};
1716     double eym[] ={ 0.17, 0.18, 0.17, 0.17, 0.16, 0.16, 0.17, 0.17, 0.18, 0.17};
1717     double eyp[] ={ 0.17, 0.18, 0.17, 0.17, 0.16, 0.16, 0.17, 0.17, 0.18, 0.17};
1718     const int np = 10;
1719     TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
1720     SetGraphAttributes(g, NSD, CMS, false, "cms_nsd2360", "CMS");
1721     return g;
1722   }
1723
1724
1725   //____________________________________________________________________
1726   /** 
1727    * Get the CMS NSD data in @f$ |\eta|<2.25@f$ for pp at @f$
1728    * \sqrt{s} = 7TeV@f$ 
1729    *
1730    * p7838_d5x1y1
1731    *
1732    * @return graph of data 
1733    * 
1734    * @ingroup pwglf_forward_otherdata
1735    */
1736   static TGraphAsymmErrors* CMSNsd7000()
1737   {
1738     // CMS NSD 7000 - Plot: p7838_d5x1y1
1739     double x[] ={ -2.25, -1.75, -1.25, -0.75, -0.25, 0.25, 0.75,1.25,1.75,2.25};
1740     double exm[] ={ 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25};
1741     double exp[] ={ 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25};
1742     double y[] ={ 6.18, 6.26, 6.14, 6.01, 5.78, 5.78, 6.01, 6.14, 6.26,  6.18 };
1743     double eym[] ={ 0.25, 0.25, 0.24, 0.24, 0.23, 0.23, 0.24, 0.24, 0.25, 0.25};
1744     double eyp[] ={ 0.25, 0.25, 0.24, 0.24, 0.23, 0.23, 0.24, 0.24, 0.25, 0.25};
1745     const int np = 10;
1746     TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
1747     SetGraphAttributes(g, NSD, CMS, false, "cms_nsd7000", "CMS");
1748     return g;
1749   }
1750
1751   //____________________________________________________________________
1752   static TGraphAsymmErrors* AlicePbPb2760(UShort_t centLow, UShort_t centHigh)
1753   {
1754     const Int_t  n    = 42;
1755     // --- /HepData/8430/d1x1y1 --------------------------------------
1756     const double x[]  = { -4.875, -4.625, -4.375, -4.125, -3.875, 
1757                           -3.625, -3.375, -3.125, -2.875, -2.625, 
1758                           -2.375, -2.125, -1.875, -1.625, -1.375, 
1759                           -1.125, -0.875, -0.625, -0.375, -0.125, 
1760                            +0.125, +0.375, +0.625, +0.875, +1.125,
1761                           +1.375, +1.625, +1.875, +2.125, +2.375, 
1762                           +2.625, +2.875, +3.125, +3.375, +3.625,  
1763                           +3.875, +4.125, +4.375, +4.625, +4.875, 
1764                           +5.125, +5.375 };
1765     const double xe[] = { 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 
1766                           0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 
1767                           0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 
1768                           0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 
1769                           0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 
1770                           0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 
1771                           0.125, 0.125, 0.125, 0.125, 0.125, 0.125 };
1772     const double y00_05[]  = { 888.0,  974.0, 1046.0,  1128.0, 1209.0, 1304.0, 
1773                                1388.0, 1449.0, 1504.0, 1578.0, 1627.0, 1674.0, 
1774                                1709.0, 1736.0, 1739.0, 1699.0, 1674.0, 1658.0,
1775                                1627.0, 1615.0, 1615.0, 1627.0, 1658.0, 1674.0,
1776                                1699.0, 1739.0, 1736.0, 1709.0, 1674.0, 1627.0, 
1777                                1578.0, 1504.0, 1449.0, 1388.0, 1304.0, 1209.0, 
1778                                1128.0, 1046.0, 974.0,   888.0,  770.0,  667.0};
1779     const double ye00_05[] = { 39.0, 41.0, 44.0, 46.0, 50.0, 54.0, 57.0, 
1780                                59.0, 58.0, 61.0, 62.0, 62.0, 66.0, 64.0, 
1781                                65.0, 68.0, 46.0, 40.0, 39.0, 39.0, 39.0, 
1782                                39.0, 40.0, 46.0, 68.0, 65.0, 64.0, 66.0, 
1783                                62.0, 62.0, 61.0, 58.0, 59.0, 57.0, 54.0, 
1784                                 50.0, 46.0, 44.0, 41.0, 39.0, 42.0, 39.0 };
1785     // --- /HepData/8430/d1x1y2 --------------------------------------
1786     const double y05_10[] = { 744.0, 807.0, 861.0, 929.0, 1001.0, 1072.0,
1787                               1144.0, 1196.0, 1243.0, 1298.0, 1333.0, 1361.0,
1788                               1393.0, 1422.0, 1418.0, 1380.0, 1362.0, 1338.0,
1789                               1330.0, 1318.0, 1318.0, 1330.0, 1338.0, 1362.0,
1790                               1380.0, 1418.0, 1422.0, 1393.0, 1361.0, 1333.0,
1791                               1298.0, 1243.0, 1196.0, 1144.0, 1072.0, 1001.0, 
1792                               929.0, 861.0, 807.0,    744.0, 651.0, 577.0 };
1793     const double ye05_10[]  = { 34.0, 35.0, 37.0, 39.0, 43.0, 46.0, 49.0,
1794                                 51.0, 51.0, 52.0, 54.0, 54.0, 58.0, 56.0,
1795                                 56.0, 58.0, 37.0, 32.0, 32.0, 32.0, 32.0,
1796                                 32.0, 32.0, 37.0, 58.0, 56.0, 56.0, 58.0,
1797                                 54.0, 54.0, 52.0, 51.0, 51.0, 49.0, 46.0,
1798                                 43.0, 39.0, 37.0, 35.0, 34.0, 39.0, 35.0 };
1799     
1800     // --- /HepData/8430/d1x1y3 --------------------------------------
1801     const double y10_20[] = { 559.0, 615.0, 656.0, 705.0, 754.0, 812.0,
1802                               862.0, 899.0, 928.0, 969.0, 998.0, 1022.0,
1803                               1048.0, 1062.0, 1064.0, 1026.0, 1014.0, 1006.0,
1804                               991.0, 982.0, 982.0, 991.0, 1006.0, 1014.0,
1805                               1026.0, 1064.0, 1062.0, 1048.0, 1022.0, 998.0,
1806                               969.0, 928.0, 899.0, 862.0, 812.0, 754.0,
1807                               705.0, 656.0, 615.0, 559.0, 491.0, 451.0 };
1808     const double ye10_20[]  = { 29.0, 31.0, 32.0, 33.0, 36.0, 39.0, 42.0,
1809                                 43.0, 44.0, 45.0, 45.0, 44.0, 46.0, 47.0,
1810                                 47.0, 46.0, 28.0, 24.0, 24.0, 24.0, 24.0,
1811                                 24.0, 24.0, 28.0, 46.0, 47.0, 47.0, 46.0,
1812                                 44.0, 45.0, 45.0, 44.0, 43.0, 42.0, 39.0,
1813                                 36.0, 33.0, 32.0, 31.0, 29.0, 37.0, 29.0 };
1814
1815     // --- /HepData/8430/d1x1y4 --------------------------------------
1816     const double y20_30[] = { 389.0, 429.0, 459.0, 491.0, 526.0, 563.0,
1817                               596.0, 619.0, 641.0, 669.0, 683.0, 700.0,
1818                               716.0, 725.0, 724.0, 701.0, 692.0, 682.0,
1819                               673.0, 666.0, 666.0, 673.0, 682.0, 692.0,
1820                               701.0, 724.0, 725.0, 716.0, 700.0, 683.0,
1821                               669.0, 641.0, 619.0, 596.0, 563.0, 526.0,
1822                               491.0, 459.0, 429.0, 389.0, 343.0, 313.0 };
1823     const double ye20_30[]  = { 21.0, 22.0, 24.0, 25.0, 27.0, 30.0, 31.0,
1824                                 32.0, 34.0, 35.0, 33.0, 34.0, 35.0, 36.0,
1825                                 37.0, 34.0, 19.0, 16.0, 16.0, 16.0, 16.0,
1826                                 16.0, 16.0, 19.0, 34.0, 37.0, 36.0, 35.0,
1827                                 34.0, 33.0, 35.0, 34.0, 32.0, 31.0, 30.0,
1828                                 27.0, 25.0, 24.0, 22.0, 21.0, 26.0, 22.0 };
1829
1830     // --- Select ----------------------------------------------------
1831     const double* yp  = 0;
1832     const double* ype = 0;
1833     if      (TMath::Abs(centLow- 0) < 1 && TMath::Abs(centHigh- 5) < 1) {
1834       yp  = y00_05;
1835       ype = ye00_05;
1836     }
1837     else if (TMath::Abs(centLow- 5) < 1 && TMath::Abs(centHigh-10) < 1) {
1838       yp  = y05_10;
1839       ype = ye05_10;
1840     }
1841     else if (TMath::Abs(centLow-10) < 1 && TMath::Abs(centHigh-20) < 1) {
1842       yp  = y10_20;
1843       ype = ye10_20;
1844     }
1845     else if (TMath::Abs(centLow-20) < 1 && TMath::Abs(centHigh-30) < 1) {
1846       yp  = y20_30;
1847       ype = ye20_30;
1848     }
1849     if (!yp || !ype) return 0;
1850     TGraphAsymmErrors* g = new TGraphAsymmErrors(n,x,yp,xe,xe,ype,ype);
1851     SetGraphAttributes(g, INEL, ALICE, false, "alice_pbpb2760", 
1852                        "#it{Phys.Lett.} #bf{B726}:610-622,2013");
1853     
1854     return g;
1855   }
1856   //____________________________________________________________________
1857   /** 
1858    * Get a single data graph 
1859    * 
1860    * @param which    Which type
1861    * @param sys      Collisition system
1862    * @param energy   Collision energy
1863    * @param type     Trigger type 
1864    * @param centLow  Low cut on centrality 
1865    * @param centHigh Up cut on centraltiy
1866    * 
1867    * @return Data graph 
1868    */
1869   static TGraphAsymmErrors* GetSingle(UShort_t which, 
1870                                       UShort_t sys, 
1871                                       UShort_t energy, 
1872                                       UShort_t type=0x1, 
1873                                       UShort_t centLow=0,
1874                                       UShort_t centHigh=0,
1875                                       Bool_t   verbose=false) 
1876   {
1877     TGraphAsymmErrors* ret = 0;
1878     if (sys == 1) { 
1879       if (TMath::Abs(energy-900) < 10) {
1880         switch (type) { 
1881         case 1: // INEL 
1882           switch (which) { 
1883           case PYTHIA:    ret = Pythia900INEL(); break;
1884           case UA5:       ret = UA5Inel(false);  break;
1885           case UA5+10:    ret = UA5Inel(true);   break;
1886           case ALICE:     ret = AliceCentralInel900(); break;
1887           case WIP:       ret = AliceCentralInel900Work(); break;
1888           }      
1889           break;
1890         case 2: // INEL>0
1891           switch (which) { 
1892           case ALICE: ret = AliceCentralInelGt900(); break;
1893           case WIP:   ret = AliceCentralInelGt900Work(); break;
1894           }
1895           break;
1896         case 4:  // NSD
1897         case 0x2000: // V0-AND - same as NSD
1898           switch (which) { 
1899           case PYTHIA: ret = Pythia900NSD(); break;
1900           case UA5:    ret = UA5Nsd(false);  break;
1901           case UA5+10: ret = UA5Nsd(true);   break;
1902           case ALICE:  ret = AliceCentralNsd900(); break;
1903           case WIP:    ret = AliceCentralNsd900Work(); break;
1904           case CMS:    ret = CMSNsd900();          break;
1905           }
1906           break;
1907         } // type 
1908       }
1909       else if (TMath::Abs(energy-2360) < 10) {
1910         switch (type) { 
1911         case 1: // INEL 
1912           switch (which) { 
1913           case ALICE: ret = AliceCentralInel2360(); break;
1914           case WIP: ret = AliceCentralInel2760Work(); break;
1915           }
1916           break;
1917         case 2: // INEL > 0
1918           switch (which) {
1919           case ALICE: ret = AliceCentralInelGt2360(); break;
1920           case WIP: ret = AliceCentralInelGt2760Work(); break;
1921           }
1922           break;
1923         case 4: // NSD 
1924           switch (which) { 
1925           case ALICE: ret = AliceCentralNsd2360(); break;
1926           case CMS:   ret = CMSNsd2360(); break;
1927           case WIP:   ret = AliceCentralNsd2760Work(); break;
1928           }
1929           break;
1930         }
1931       }
1932       else if (TMath::Abs(energy-2760) < 10) {
1933         switch (type) { 
1934         case 1: // INEL 
1935           switch (which) { 
1936           case WIP: ret = AliceCentralInel2760Work(); break;
1937           }
1938           break;
1939         case 2: // INEL > 0
1940           switch (which) {
1941           case WIP: ret = AliceCentralInelGt2760Work(); break;
1942           }
1943           break;
1944         case 4: // NSD 
1945           switch (which) { 
1946           case WIP: ret = AliceCentralNsd2760Work(); break;
1947           }
1948           break;
1949         }
1950       }
1951       else if (TMath::Abs(energy-7000) < 10) {
1952         switch (type) { 
1953         case 1: 
1954           switch (which) { 
1955           case WIP: ret = AliceCentralInel7000Work(); break;
1956           }
1957           break;
1958         case 2: // INEL > 0
1959           switch (which) { 
1960           case ALICE: ret = AliceCentralInelGt7000(); break;
1961           case WIP: ret = AliceCentralInelGt7000Work(); break;
1962           }
1963           break;
1964         case 4: // NSD 
1965           switch (which) { 
1966           case CMS: ret = CMSNsd7000(); break;
1967           case WIP: ret = AliceCentralNsd7000Work(); break;
1968           }
1969           break;
1970         }
1971       }
1972       else if (TMath::Abs(energy-8000) < 10) {
1973         switch (type) { 
1974         case 1: 
1975           switch (which) { 
1976           case WIP: ret = AliceCentralInel8000Work(); break;
1977           }
1978           break;
1979         case 2: // INEL > 0
1980           switch (which) { 
1981           case WIP: ret = AliceCentralInelGt8000Work(); break;
1982           }
1983           break;
1984         case 4: // NSD 
1985           switch (which) { 
1986           case WIP: ret = AliceCentralNsd8000Work(); break;
1987           }
1988           break;
1989         }
1990       }
1991     } // pp 
1992     else if (sys == 2) { // PbPb 
1993       if (TMath::Abs(energy - 2760) < 10) {
1994         switch (which) { 
1995         case ALICE: ret = AlicePbPb2760(centLow, centHigh);
1996         }
1997       }
1998       if (ret) {
1999         Int_t col = CentralityColor(centLow, centHigh);
2000         ret->SetMarkerColor(col);
2001         ret->SetLineColor(col);
2002         ret->SetFillColor(col);
2003       }
2004     }
2005     else if (sys == 3) { // pPb 
2006       if (TMath::Abs(energy - 5023) < 10 || 
2007           TMath::Abs(energy - 8000) < 10) {
2008         switch (which) { 
2009         case ALICE: ret = AliceCentralpPb5023(); break;
2010         }
2011       }
2012     } // pPb
2013     if (!ret) {
2014       TString w;
2015       switch (which) { 
2016       case UA5:   w = "UA5";     break;
2017       case CMS:   w = "CMS";     break;
2018       case ALICE: w = "ALICE";   break;
2019       case WIP:   w = "WIP";     break;
2020       case PYTHIA:w = "Pyhthia"; break;
2021       default: w = Form("unknown(%d)", which);
2022       }
2023       TString sy;
2024       switch (sys) { 
2025       case 1:  sy = "pp"; break;
2026       case 2:  sy = "PbPb"; break;
2027       case 3:  sy = "pPb"; break;
2028       default: sy = Form("unknown(%d)", sys);
2029       }
2030       TString tr;
2031       if (sys == 1 || sys == 3) {
2032         switch (type) { 
2033         case 1:        tr = "INEL"; break;
2034         case 2:        tr = "INEL>0"; break;
2035         case 4:        tr = "NSD"; break;
2036         default:       tr = Form("unknown(%d)", sys);
2037         }
2038       }
2039       else 
2040         tr.Form("%2d--%2d%%", centLow, centHigh);
2041
2042       if (verbose) 
2043         Warning("GetSingle", "Nothing to get for "
2044                 "which=%s, sys=%s, energy=%dGeV, type=%s, "
2045                 "centLow=%d, centHigh=%d",
2046                 w.Data(), sy.Data(), energy, tr.Data(), centLow, centHigh);
2047     }
2048 #if 0
2049     if (ret) {
2050       if (!wn.IsNull()) wn.Append(",");
2051       switch (which) { 
2052       case PYTHIA: wn.Append("Pythia"); break;
2053       case UA5:    wn.Append("UA5");    break;
2054       case CMS:    wn.Append("CMS");    break;
2055       case ALICE:  wn.Append("ALICE");  break;
2056       }      
2057     }
2058 #endif
2059     return ret;
2060   }
2061
2062   //____________________________________________________________________
2063   /** 
2064    * Append an item to a list 
2065    * 
2066    * @param s      List to append to 
2067    * @param delim  Delimiter 
2068    * @param what   What to append 
2069    * 
2070    * @return New string value 
2071    */
2072   static TString&  AppendItem(TString& s, char delim, const char* what)   
2073   {
2074     if (!s.IsNull()) s.Append(Form("%c", delim));
2075     s.Append(what);
2076     return s;
2077   }
2078
2079   static void FormatEnergy(TString& en, UShort_t sys, UShort_t energy)
2080   {
2081     en.Append(Form("#sqrt{s%s}=", sys == 1 ? "" : "_{NN}"));
2082     if (energy < 1000) 
2083       en.Append(Form("%dGeV", energy));
2084     else {
2085       if (energy % 1000 == 0) 
2086         en.Append(Form("%dTeV", energy/1000));
2087       else 
2088         en.Append(Form("%4.2fTeV", float(energy)/1000));
2089     }
2090   }
2091   static void FormatSystem(TString& sn, UShort_t sys)
2092   {
2093     switch (sys) { 
2094     case 1:  sn = "pp";      break;
2095     case 2:  sn = "PbPb";    break;
2096     case 3:  sn = "pPb";     break;
2097     default: sn = "unknown"; break;
2098     }
2099   }
2100   static void FormatCentrality(TString& cn, UShort_t sys, UShort_t l,UShort_t u)
2101   {
2102     if (sys == 2) cn.Form("%d%% - %d%% central", l, u);
2103   }
2104   static void FormatType(TString& tn, UShort_t sys, UShort_t type)
2105   {
2106     if (sys == 2) { 
2107       tn = "";
2108       return;
2109     }
2110     if (type == 0x2000) type = 0x4;
2111     if (type & 0x1) AppendItem(tn, '|', "INEL");
2112     if (type & 0x2) AppendItem(tn, '|', "INEL>0");
2113     if (type & 0x4) AppendItem(tn, '|', "NSD");
2114   }
2115   static void FormatTitle(TString& title,
2116                           UShort_t sys, 
2117                           UShort_t energy,
2118                           UShort_t type, 
2119                           UShort_t centLow, 
2120                           UShort_t centHigh,
2121                           Bool_t   seenUA5)
2122   {
2123     TString sn; FormatSystem(sn, sys);
2124     TString en; FormatEnergy(en, sys, energy);
2125     TString tn; FormatType(tn, sys, type);
2126     TString cn; FormatCentrality(cn, sys, centLow, centHigh);
2127     if (seenUA5) sn.Append("(p#bar{p})");
2128     if (!en.IsNull()) en.Prepend(", ");
2129     if (!tn.IsNull()) tn.Prepend(", ");
2130     if (!cn.IsNull()) cn.Prepend(", ");
2131     title.Form("%s%s%s%s", sn.Data(), en.Data(), tn.Data(), cn.Data());
2132   }
2133   //__________________________________________________________________
2134   /** 
2135    * Get the color for a centrality bin
2136    * 
2137    * @param bin Centrality bin 
2138    * 
2139    * @return Color 
2140    */
2141   static Int_t CentralityColor(UShort_t centLow, 
2142                                UShort_t centHigh,
2143                                UShort_t /*nBins*/=0)
2144   {
2145 #if 0
2146     if (nBins > 0 && nBins < 6) { 
2147       switch (bin) { 
2148       case 1: return kRed+2;
2149       case 2: return kGreen+2;
2150       case 3: return kBlue+1;
2151       case 4: return kCyan+1;
2152       case 5: return kMagenta+1;
2153       case 6: return kYellow+2;
2154       }
2155     }
2156 #endif
2157     Float_t  fc       = (centLow+double(centHigh-centLow)/2) / 100;
2158     Int_t    nCol     = gStyle->GetNumberOfColors();
2159     Int_t    icol     = TMath::Min(nCol-1,int(fc * nCol + .5));
2160     Int_t    col      = gStyle->GetColorPalette(icol);
2161     //Info("GetCentralityColor","%3d: %3d-%3d -> %3d",bin,centLow,centHigh,col);
2162     return col;
2163   }
2164   static Bool_t GetPbPb(TMultiGraph* mp, 
2165                         Bool_t cms, Bool_t alice, Bool_t pythia, 
2166                         Bool_t work, UShort_t energy, UShort_t centLow, 
2167                         UShort_t centHigh)
2168   {
2169     // Nothing for PbPb so far 
2170     TGraphAsymmErrors* gCMS =(cms   ?GetSingle(CMS,   2,energy,0,
2171                                                centLow, centHigh):0);
2172     TGraphAsymmErrors* gALI =(alice ?GetSingle(ALICE, 2,energy,0,
2173                                                centLow, centHigh):0);
2174     TGraphAsymmErrors* gPYT =(pythia?GetSingle(PYTHIA,2,energy,0,
2175                                                centLow, centHigh):0);
2176     TGraphAsymmErrors* gWRK =(work  ?GetSingle(WIP,   2,energy,0,
2177                                                  centLow, centHigh):0);
2178     if (gCMS) mp->Add(gCMS);
2179     if (gALI) mp->Add(gALI);
2180     if (gPYT) mp->Add(gPYT);
2181     if (gWRK) mp->Add(gWRK);
2182     return (gCMS || gALI || gPYT || gWRK);
2183   }
2184   //____________________________________________________________________
2185   /** 
2186    * Get a multi graph of data for a given energy and trigger type 
2187    * 
2188    * @param sys    Collision system (1: pp, 2: PbPb)
2189    * @param energy Energy in GeV (900, 2360, 7000)
2190    * @param type   Bit pattern of trigger type 
2191    *   - 0x1 INEL 
2192    *   - 0x2 INEL>0
2193    *   - 0x4 NSD 
2194    * @param centLow   Low centrality cut (only for PbPB)
2195    * @param centHigh  High centrality cut (only for PbPB)
2196    * @param which     What to get
2197    * 
2198    * @return A multi graph with the selected data. 
2199    * 
2200    * @ingroup pwglf_forward_otherdata
2201    */
2202   static TMultiGraph* GetData(UShort_t sys, 
2203                               UShort_t energy,
2204                               UShort_t type=0x1, 
2205                               UShort_t centLow=0, 
2206                               UShort_t centHigh=0, 
2207                               UShort_t which=0x7)
2208   {
2209     TMultiGraph* mp = new TMultiGraph(Form("dndeta_%dGeV_%d_%03d_%03d", 
2210                                            energy, type, centLow, centHigh),"");
2211     bool    ua5       = (which & (1 << UA5));       // 0x1
2212     bool    cms       = (which & (1 << CMS));       // 0x2
2213     bool    alice     = (which & (1 << ALICE));     // 0x4
2214     bool    work      = (which & (1 << WIP)); // 0x8
2215     bool    pythia    = (which & (1 << PYTHIA));    // 0x10
2216     Bool_t  seenUA5   = false;
2217
2218     if (sys == 1) { 
2219       if (!(type & 0x2007)) 
2220         Warning("GetData", "Unknown trigger mask 0x%x", type);
2221
2222       if (TMath::Abs(energy-2750) < 11) {
2223         Warning("GetData", "Using 2360GeV data for %dGeV comparison", energy);
2224         energy = 2360;
2225       }
2226       if (!(TMath::Abs(energy-900) < 10 || 
2227             TMath::Abs(energy-2360) < 10 || 
2228             TMath::Abs(energy-7000) < 10 || 
2229             TMath::Abs(energy-8000) < 10)) {
2230         Warning("GetData", "No other results for sys=%d, energy=%d",
2231                 sys, energy);
2232         return 0;
2233       }
2234
2235       // Substitute NSD for V0-AND
2236       if (type == 0x2000) { 
2237         Warning("GetData", "Using NSD for V0-AND results 0x%04x", type);
2238         type = 4;
2239       }
2240
2241       for (Int_t i = 0; i < 3; i++) { 
2242         UShort_t mask = (1 << i);
2243         if ((type & mask) == 0) continue;
2244         TGraphAsymmErrors* gUAp =(ua5   ?GetSingle(UA5,   sys,energy,mask):0);
2245         TGraphAsymmErrors* gUAn =(ua5   ?GetSingle(UA5+10,sys,energy,mask):0);
2246         TGraphAsymmErrors* gCMS =(cms   ?GetSingle(CMS,   sys,energy,mask):0);
2247         TGraphAsymmErrors* gALI =(alice ?GetSingle(ALICE, sys,energy,mask):0);
2248         TGraphAsymmErrors* gPYT =(pythia?GetSingle(PYTHIA,sys,energy,mask):0);
2249         TGraphAsymmErrors* gWRK =(work  ?GetSingle(WIP,   sys,energy,mask):0);
2250         if (gUAp) mp->Add(gUAp);
2251         if (gUAn) mp->Add(gUAn);
2252         if (gCMS) mp->Add(gCMS);
2253         if (gALI) mp->Add(gALI);
2254         if (gPYT) mp->Add(gPYT);
2255         if (gWRK) mp->Add(gWRK);
2256         if (gUAp || gUAn) seenUA5 = true;
2257       }
2258     }
2259     else if (sys == 2) { 
2260       // Warning("GetData", "No other data for PbPb yet");
2261       GetPbPb(mp,cms,alice,pythia,work,energy,centLow,centHigh);
2262     }
2263     else if (sys == 3) {
2264       if (!(TMath::Abs(energy-5023) < 10 ||
2265             TMath::Abs(energy-8000) < 10) ) {
2266         Warning("GetData", "No other results for sys=%d, energy=%d",
2267                 sys, energy);
2268         return 0;
2269       }
2270     
2271       // Info("GetData", "Getting ALICE pPb data");
2272       TGraphAsymmErrors* gALI =(alice ?GetSingle(ALICE, sys,energy, 0):0);
2273       if (gALI) mp->Add(gALI);
2274       // Info("GetData", "Got %p", gALI);
2275       // Warning("GetData", "Unknown system %d", sys);
2276     }
2277
2278     if (!mp->GetListOfGraphs() || mp->GetListOfGraphs()->GetEntries() <= 0) {
2279       delete mp;
2280       mp = 0;
2281       return 0;
2282     }
2283     TString title;
2284     FormatTitle(title, sys, energy, type, centLow, centHigh, seenUA5);
2285     mp->SetTitle(title.Data());
2286     return mp;
2287   }
2288 };
2289 //____________________________________________________________________
2290 /** 
2291  * Plot external data for a given selection of energy and trigger type
2292  * (see GetData)
2293  * 
2294  * @param sys    Collision system (1: pp, 2: PbPb)
2295  * @param energy Energy in GeV (900, 2360, 7000)
2296  * @param type   Bit pattern of trigger type 
2297  *   - 0x1 INEL 
2298  *   - 0x2 INEL>0
2299  *   - 0x4 NSD 
2300  * @param centLow   Low centrality cut (only for PbPB)
2301  * @param centHigh  High centrality cut (only for PbPB)
2302  * @param which     Which data to show 
2303  * 
2304  * @ingroup pwglf_forward_otherdata
2305  */
2306 void
2307 OtherData(UShort_t sys=1, 
2308           UShort_t energy=900, 
2309           UShort_t type=0x1, 
2310           UShort_t centLow=0, 
2311           UShort_t centHigh=5, 
2312           UShort_t which=0xf)
2313 {
2314   TMultiGraph* mp = 
2315     RefData::GetData(sys, energy, type, centLow, centHigh, which);
2316   if (!mp) {
2317     if (sys != 2) return;
2318
2319     UShort_t  cents[] = { 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 100, 0 };
2320     UShort_t* lC      = &(cents[0]);
2321     UShort_t* uC      = &(cents[1]);
2322     TString   title;
2323     RefData::FormatTitle(title, sys, energy, type, centLow, centHigh, false);
2324     mp   = new TMultiGraph(Form("pbpb_%04dGeV_%03d_%03d", 
2325                                 energy, centLow, centHigh), title.Data());
2326     Bool_t filled = false;
2327     while (*lC < centLow) { lC++; uC++; }
2328     while (*uC > 0 && *uC <= centHigh) {
2329       TMultiGraph* mg = RefData::GetData(sys, energy, type, *lC, *uC, which);
2330       if (!mg) continue;
2331       filled = true;
2332       mp->Add(mg);
2333       uC++;
2334       lC++;
2335     }
2336     if (!filled) return;
2337   }
2338
2339   gStyle->SetTitleX(0.1);
2340   gStyle->SetTitleY(1.0);
2341   gStyle->SetTitleW(0.85);
2342   gStyle->SetTitleH(0.05);
2343   gStyle->SetTitleBorderSize(0);
2344   gStyle->SetTitleTextColor(kWhite);
2345   gStyle->SetTitleFillColor(kBlack);
2346   gStyle->SetTitleFontSize(0.02);
2347   
2348   gStyle->SetOptTitle(0);
2349   gStyle->SetOptStat(0);
2350   
2351   TCanvas* c = new TCanvas("c", "dN/deta", 800, 600);
2352   c->SetFillColor(0);
2353   c->SetBorderSize(0);
2354   c->SetBorderMode(0);
2355   c->SetRightMargin(0.02);
2356   c->SetTopMargin(0.02);
2357   
2358
2359   mp->SetMinimum(0);
2360   mp->Draw("ap");
2361   if (mp->GetXaxis()) {
2362     mp->GetXaxis()->SetTitle("#eta");
2363     mp->GetXaxis()->SetTitleFont(12);
2364     mp->GetXaxis()->SetLabelFont(132);
2365   }
2366   if (mp->GetYaxis()) {
2367     mp->GetYaxis()->SetTitle("#frac{1}{N} #frac{dN_{#font[132]{ch}}}{d#eta}");
2368     mp->GetYaxis()->SetTitleFont(12);
2369     mp->GetYaxis()->SetLabelFont(132);
2370   }
2371   TLegend* l = c->BuildLegend(0.3, 0.15, 0.7, 0.5, 
2372                               mp->GetTitle());
2373   l->SetFillColor(0);
2374   l->SetTextFont(132);
2375   l->SetBorderSize(0);
2376   TLegendEntry* h = static_cast<TLegendEntry*>(l->GetListOfPrimitives()->At(0));
2377   if (h) { 
2378     h->SetTextFont(22);
2379   }
2380   c->cd();
2381 }
2382
2383 //____________________________________________________________________
2384 //
2385 // EOF
2386 //