]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/OtherData.C
Now use gSystem->Exec("gbbox ps -Ax > tmpfile") to work
[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   /** 
1753    * Get a single data graph 
1754    * 
1755    * @param which    Which type
1756    * @param sys      Collisition system
1757    * @param energy   Collision energy
1758    * @param type     Trigger type 
1759    * @param centLow  Low cut on centrality 
1760    * @param centHigh Up cut on centraltiy
1761    * 
1762    * @return Data graph 
1763    */
1764   static TGraphAsymmErrors* GetSingle(UShort_t which, 
1765                                       UShort_t sys, 
1766                                       UShort_t energy, 
1767                                       UShort_t type=0x1, 
1768                                       UShort_t centLow=0,
1769                                       UShort_t centHigh=0) 
1770   {
1771     TGraphAsymmErrors* ret = 0;
1772     if (sys == 1) { 
1773       if (TMath::Abs(energy-900) < 10) {
1774         switch (type) { 
1775         case 1: // INEL 
1776           switch (which) { 
1777           case PYTHIA:    ret = Pythia900INEL(); break;
1778           case UA5:       ret = UA5Inel(false);  break;
1779           case UA5+10:    ret = UA5Inel(true);   break;
1780           case ALICE:     ret = AliceCentralInel900(); break;
1781           case WIP:       ret = AliceCentralInel900Work(); break;
1782           }      
1783           break;
1784         case 2: // INEL>0
1785           switch (which) { 
1786           case ALICE: ret = AliceCentralInelGt900(); break;
1787           case WIP:   ret = AliceCentralInelGt900Work(); break;
1788           }
1789           break;
1790         case 4:  // NSD 
1791           switch (which) { 
1792           case PYTHIA: ret = Pythia900NSD(); break;
1793           case UA5:    ret = UA5Nsd(false);  break;
1794           case UA5+10: ret = UA5Nsd(true);   break;
1795           case ALICE:  ret = AliceCentralNsd900(); break;
1796           case WIP:    ret = AliceCentralNsd900Work(); break;
1797           case CMS:    ret = CMSNsd900();          break;
1798           }
1799           break;
1800         } // type 
1801       }
1802       else if (TMath::Abs(energy-2360) < 10) {
1803         switch (type) { 
1804         case 1: // INEL 
1805           switch (which) { 
1806           case ALICE: ret = AliceCentralInel2360(); break;
1807           case WIP: ret = AliceCentralInel2760Work(); break;
1808           }
1809           break;
1810         case 2: // INEL > 0
1811           switch (which) {
1812           case ALICE: ret = AliceCentralInelGt2360(); break;
1813           case WIP: ret = AliceCentralInelGt2760Work(); break;
1814           }
1815           break;
1816         case 4: // NSD 
1817           switch (which) { 
1818           case ALICE: ret = AliceCentralNsd2360(); break;
1819           case CMS:   ret = CMSNsd2360(); break;
1820           case WIP:   ret = AliceCentralNsd2760Work(); break;
1821           }
1822           break;
1823         }
1824       }
1825       else if (TMath::Abs(energy-2760) < 10) {
1826         switch (type) { 
1827         case 1: // INEL 
1828           switch (which) { 
1829           case WIP: ret = AliceCentralInel2760Work(); break;
1830           }
1831           break;
1832         case 2: // INEL > 0
1833           switch (which) {
1834           case WIP: ret = AliceCentralInelGt2760Work(); break;
1835           }
1836           break;
1837         case 4: // NSD 
1838           switch (which) { 
1839           case WIP: ret = AliceCentralNsd2760Work(); break;
1840           }
1841           break;
1842         }
1843       }
1844       else if (TMath::Abs(energy-7000) < 10) {
1845         switch (type) { 
1846         case 1: 
1847           switch (which) { 
1848           case WIP: ret = AliceCentralInel7000Work(); break;
1849           }
1850           break;
1851         case 2: // INEL > 0
1852           switch (which) { 
1853           case ALICE: ret = AliceCentralInelGt7000(); break;
1854           case WIP: ret = AliceCentralInelGt7000Work(); break;
1855           }
1856           break;
1857         case 4: // NSD 
1858           switch (which) { 
1859           case CMS: ret = CMSNsd7000(); break;
1860           case WIP: ret = AliceCentralNsd7000Work(); break;
1861           }
1862           break;
1863         }
1864       }
1865       else if (TMath::Abs(energy-8000) < 10) {
1866         switch (type) { 
1867         case 1: 
1868           switch (which) { 
1869           case WIP: ret = AliceCentralInel8000Work(); break;
1870           }
1871           break;
1872         case 2: // INEL > 0
1873           switch (which) { 
1874           case WIP: ret = AliceCentralInelGt8000Work(); break;
1875           }
1876           break;
1877         case 4: // NSD 
1878           switch (which) { 
1879           case WIP: ret = AliceCentralNsd8000Work(); break;
1880           }
1881           break;
1882         }
1883       }
1884     }
1885     else if (sys == 3) { // pPb 
1886       if (TMath::Abs(energy - 5023) < 10 || 
1887           TMath::Abs(energy - 8000) < 10) {
1888         switch (which) { 
1889         case ALICE: ret = AliceCentralpPb5023(); break;
1890         }
1891       }
1892     }
1893     if (!ret) {
1894       TString w;
1895       switch (which) { 
1896       case UA5:   w = "UA5";     break;
1897       case CMS:   w = "CMS";     break;
1898       case ALICE: w = "ALICE";   break;
1899       case WIP:   w = "WIP";     break;
1900       case PYTHIA:w = "Pyhthia"; break;
1901       default: w = Form("unknown(%d)", which);
1902       }
1903       TString sy;
1904       switch (sys) { 
1905       case 1:  sy = "pp"; break;
1906       case 2:  sy = "PbPb"; break;
1907       case 3:  sy = "pPb"; break;
1908       default: sy = Form("unknown(%d)", sys);
1909       }
1910       TString tr;
1911       switch (type) { 
1912       case 1:        tr = "INEL"; break;
1913       case 2:        tr = "INEL>0"; break;
1914       case 4:      tr = "NSD"; break;
1915       default:       tr = Form("unknown(%d)", sys);
1916       }
1917     
1918       Warning("GetSingle", "Nothing to get for "
1919               "which=%s, sys=%s, energy=%dGeV, type=%s, "
1920               "centLow=%d, centHigh=%d",
1921               w.Data(), sy.Data(), energy, tr.Data(), centLow, centHigh);
1922     }
1923 #if 0
1924     if (ret) {
1925       if (!wn.IsNull()) wn.Append(",");
1926       switch (which) { 
1927       case PYTHIA: wn.Append("Pythia"); break;
1928       case UA5:    wn.Append("UA5");    break;
1929       case CMS:    wn.Append("CMS");    break;
1930       case ALICE:  wn.Append("ALICE");  break;
1931       }      
1932     }
1933 #endif
1934     return ret;
1935   }
1936
1937   //____________________________________________________________________
1938   /** 
1939    * Append an item to a list 
1940    * 
1941    * @param s      List to append to 
1942    * @param delim  Delimiter 
1943    * @param what   What to append 
1944    * 
1945    * @return New string value 
1946    */
1947   static TString&  AppendItem(TString& s, char delim, const char* what)   
1948   {
1949     if (!s.IsNull()) s.Append(Form("%c", delim));
1950     s.Append(what);
1951     return s;
1952   }
1953
1954   //____________________________________________________________________
1955   /** 
1956    * Get a multi graph of data for a given energy and trigger type 
1957    * 
1958    * @param sys    Collision system (1: pp, 2: PbPb)
1959    * @param energy Energy in GeV (900, 2360, 7000)
1960    * @param type   Bit pattern of trigger type 
1961    *   - 0x1 INEL 
1962    *   - 0x2 INEL>0
1963    *   - 0x4 NSD 
1964    * @param centLow   Low centrality cut (only for PbPB)
1965    * @param centHigh  High centrality cut (only for PbPB)
1966    * @param which     What to get
1967    * 
1968    * @return A multi graph with the selected data. 
1969    * 
1970    * @ingroup pwglf_forward_otherdata
1971    */
1972   static TMultiGraph* GetData(UShort_t sys, 
1973                               UShort_t energy,
1974                               UShort_t type=0x1, 
1975                               UShort_t centLow=0, 
1976                               UShort_t centHigh=0, 
1977                               UShort_t which=0x7)
1978   {
1979     TMultiGraph* mp = new TMultiGraph(Form("dndeta_%dGeV_%d_%03d_%03d", 
1980                                            energy, type, centLow, centHigh),"");
1981     TString tn;
1982     TString en;
1983     TString sn;
1984     TString cn;
1985     bool    ua5       = (which & (1 << UA5));       // 0x1
1986     bool    cms       = (which & (1 << CMS));       // 0x2
1987     bool    alice     = (which & (1 << ALICE));     // 0x4
1988     bool    work      = (which & (1 << WIP)); // 0x8
1989     bool    pythia    = (which & (1 << PYTHIA));    // 0x10
1990     en.Append(Form(", #sqrt{s%s}=", sys == 1 ? "" : "_{NN}"));
1991     if (energy < 1000) 
1992       en.Append(Form("%dGeV", energy));
1993     else {
1994       if (energy % 1000 == 0) 
1995         en.Append(Form("%dTeV", energy/1000));
1996       else 
1997         en.Append(Form("%4.2fTeV", float(energy)/1000));
1998     }
1999
2000     if (sys == 1) { 
2001       if (!(type & 0x7)) 
2002         Warning("GetData", "Unknown trigger mask 0x%x", type);
2003
2004       if (TMath::Abs(energy-2750) < 11) {
2005         Warning("GetData", "Using 2360GeV data for %dGeV comparison", energy);
2006         energy = 2360;
2007       }
2008       if (!(TMath::Abs(energy-900) < 10 || 
2009             TMath::Abs(energy-2360) < 10 || 
2010             TMath::Abs(energy-7000) < 10 || 
2011             TMath::Abs(energy-8000) < 10)) {
2012         Warning("GetData", "No other results for sys=%d, energy=%d",
2013                 sys, energy);
2014         return 0;
2015       }
2016     
2017       sn = "pp";
2018
2019       // Substitute NSD for V0-AND
2020       if (type == 0x2000) type = 0x4;
2021       if (type & 0x1) AppendItem(tn, '|', "INEL");
2022       if (type & 0x2) AppendItem(tn, '|', "INEL>0");
2023       if (type & 0x4) AppendItem(tn, '|', "NSD");
2024
2025       Bool_t seenUA5 = false;
2026       for (Int_t i = 0; i < 3; i++) { 
2027         UShort_t mask = (1 << i);
2028         if ((type & mask) == 0) continue;
2029         TGraphAsymmErrors* gUAp =(ua5   ?GetSingle(UA5,   sys,energy,mask):0);
2030         TGraphAsymmErrors* gUAn =(ua5   ?GetSingle(UA5+10,sys,energy,mask):0);
2031         TGraphAsymmErrors* gCMS =(cms   ?GetSingle(CMS,   sys,energy,mask):0);
2032         TGraphAsymmErrors* gALI =(alice ?GetSingle(ALICE, sys,energy,mask):0);
2033         TGraphAsymmErrors* gPYT =(pythia?GetSingle(PYTHIA,sys,energy,mask):0);
2034         TGraphAsymmErrors* gWRK =(work  ?GetSingle(WIP,   sys,energy,mask):0);
2035         if (gUAp) mp->Add(gUAp);
2036         if (gUAn) mp->Add(gUAn);
2037         if (gCMS) mp->Add(gCMS);
2038         if (gALI) mp->Add(gALI);
2039         if (gPYT) mp->Add(gPYT);
2040         if (gWRK) mp->Add(gWRK);
2041         if (gUAp || gUAn) seenUA5 = true;
2042       }
2043       if (seenUA5) sn.Append("(p#bar{p})");
2044     }
2045     else if (sys == 2) { 
2046       // Nothing for PbPb so far 
2047       cn = Form(", %d%%-%d%% central", centLow, centHigh);
2048       sn = "PbPb";
2049       // Warning("GetData", "No other data for PbPb yet");
2050     }
2051     else if (sys == 3) {
2052       if (!(TMath::Abs(energy-5023) < 10 ||
2053             TMath::Abs(energy-8000) < 10) ) {
2054         Warning("GetData", "No other results for sys=%d, energy=%d",
2055                 sys, energy);
2056         return 0;
2057       }
2058     
2059       // Info("GetData", "Getting ALICE pPb data");
2060       sn = "pPb";
2061       TGraphAsymmErrors* gALI =(alice ?GetSingle(ALICE, sys,energy, 0):0);
2062       if (gALI) mp->Add(gALI);
2063       // Info("GetData", "Got %p", gALI);
2064       // Warning("GetData", "Unknown system %d", sys);
2065     }
2066
2067     if (!mp->GetListOfGraphs() || mp->GetListOfGraphs()->GetEntries() <= 0) {
2068       delete mp;
2069       mp = 0;
2070       return 0;
2071     }
2072     TString tit(Form("%s%s, %s%s", 
2073                      sn.Data(), en.Data(), tn.Data(), cn.Data()));
2074     mp->SetTitle(tit.Data());
2075     return mp;
2076   }
2077 };
2078 //____________________________________________________________________
2079 /** 
2080  * Plot external data for a given selection of energy and trigger type
2081  * (see GetData)
2082  * 
2083  * @param sys    Collision system (1: pp, 2: PbPb)
2084  * @param energy Energy in GeV (900, 2360, 7000)
2085  * @param type   Bit pattern of trigger type 
2086  *   - 0x1 INEL 
2087  *   - 0x2 INEL>0
2088  *   - 0x4 NSD 
2089  * @param centLow   Low centrality cut (only for PbPB)
2090  * @param centHigh  High centrality cut (only for PbPB)
2091  * @param which     Which data to show 
2092  * 
2093  * @ingroup pwglf_forward_otherdata
2094  */
2095 void
2096 OtherData(UShort_t sys=1, 
2097           UShort_t energy=900, 
2098           UShort_t type=0x1, 
2099           UShort_t centLow=0, 
2100           UShort_t centHigh=5, 
2101           UShort_t which=0xf)
2102 {
2103   TMultiGraph* mp = 
2104     RefData::GetData(sys, energy, type, centLow, centHigh, which);
2105   if (!mp) return;
2106
2107   gStyle->SetTitleX(0.1);
2108   gStyle->SetTitleY(1.0);
2109   gStyle->SetTitleW(0.85);
2110   gStyle->SetTitleH(0.05);
2111   gStyle->SetTitleBorderSize(0);
2112   gStyle->SetTitleTextColor(kWhite);
2113   gStyle->SetTitleFillColor(kBlack);
2114   gStyle->SetTitleFontSize(0.02);
2115   
2116   gStyle->SetOptTitle(0);
2117   gStyle->SetOptStat(0);
2118   
2119   TCanvas* c = new TCanvas("c", "dN/deta", 800, 600);
2120   c->SetFillColor(0);
2121   c->SetBorderSize(0);
2122   c->SetBorderMode(0);
2123   c->SetRightMargin(0.02);
2124   c->SetTopMargin(0.02);
2125   
2126
2127   mp->SetMinimum(0);
2128   mp->Draw("ap");
2129   if (mp->GetXaxis()) {
2130     mp->GetXaxis()->SetTitle("#eta");
2131     mp->GetXaxis()->SetTitleFont(12);
2132     mp->GetXaxis()->SetLabelFont(132);
2133   }
2134   if (mp->GetYaxis()) {
2135     mp->GetYaxis()->SetTitle("#frac{1}{N} #frac{dN_{#font[132]{ch}}}{d#eta}");
2136     mp->GetYaxis()->SetTitleFont(12);
2137     mp->GetYaxis()->SetLabelFont(132);
2138   }
2139   TLegend* l = c->BuildLegend(0.3, 0.15, 0.7, 0.5, 
2140                               mp->GetTitle());
2141   l->SetFillColor(0);
2142   l->SetTextFont(132);
2143   l->SetBorderSize(0);
2144   TLegendEntry* h = static_cast<TLegendEntry*>(l->GetListOfPrimitives()->At(0));
2145   if (h) { 
2146     h->SetTextFont(22);
2147   }
2148   c->cd();
2149 }
2150
2151 //____________________________________________________________________
2152 //
2153 // EOF
2154 //