Fixes for Coverity issues: 21876, 21795, 21786, 21782, 21781
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / scripts / UnfoldMultDists.C
1 #ifndef UNFOLDMULTDISTS_H
2 #define UNFOLDMULTDISTS_H
3 #include <TFile.h>
4 #include <TList.h>
5 #include <TH1.h>
6 #include <TH2.h>
7 #include <TString.h>
8 #include <TGraph.h>
9 #include <TGraphAsymmErrors.h>
10 #include <TLegend.h>
11 #include <TLegendEntry.h>
12 #include <TLatex.h>
13 #include <TParameter.h>
14 #include <TCanvas.h>
15 #include <THStack.h>
16 #include <TMultiGraph.h>
17 #include <TRegexp.h>
18 #include <TSystem.h>
19 #include "RooUnfold.h"
20 #include "RooUnfoldResponse.h"
21
22 /** 
23  * Structure to do unfolding of multiplcity distributions 
24  * 
25  * It takes as input 2 files: the output file (forward_multdists.root)
26  * of the analysis train MakeMultDistsTrain.C run on real and MC data.
27  *
28  * It generates the output file forward_unfolded.root with histograms
29  * and stacks of the input data and the unfolding results.
30  */
31 struct Unfolder 
32 {
33   enum { 
34     kMeasuredColor = kBlue+1,
35     kUnfoldedColor = kRed+1,
36     kTruthColor    = kGreen+2,
37     kCMSColor      = kYellow+1,
38     kALICEColor    = kMagenta+1,
39     kSysColor      = kBlue-10
40   };
41   /** 
42    * Constructor
43    */
44   Unfolder() {}
45   virtual ~Unfolder() {}
46   /** 
47    * Run this code 
48    * 
49    * @param realFile Output file of MakeMultDistsTrain on real data
50    * @param mcFile   Output file of MakeMultDistsTrain on MC data
51    */
52   void Run(const TString& method="Bayes", 
53            Double_t       regParam=-1e30, 
54            const TString& realFile="forward_multdists.root", 
55            const TString& mcFile="forward_mcmultdists.root")
56   {
57     if (!gROOT->GetClass("RooUnfold")) gSystem->Load("libRooUnfold.so");
58
59     // --- Open files ------------------------------------------------
60     TFile* realF = TFile::Open(realFile,"READ");
61     if (!realF) { 
62       Error("Run", "Couldn't open %s", realFile.Data());
63       return;
64     }
65     TFile* mcF = TFile::Open(mcFile,"READ");
66     if (!mcF) { 
67       Error("Run", "Couldn't open %s", mcFile.Data());
68       return;
69     }
70     TFile* outF = TFile::Open("forward_unfolded.root", "RECREATE");
71     
72     // --- Get top-level containers ----------------------------------
73     TCollection* realTop = GetCollection(realF, "ForwardMultResults");
74     if (!realTop) {
75       Error("Run", "Failed to get real collection");
76       return;
77     }
78     TCollection* mcTop   = GetCollection(mcF,   "ForwardMultResults");
79     if (!mcTop) { 
80       Error("Run", "Failed to get MC collection");
81       return;
82     }
83
84     // --- Decode the method -----------------------------------------
85     struct Method { 
86       UInt_t  id;
87       TString name;
88     };
89     const Method methods[] = { {RooUnfold::kNone,    "None"},
90                                {RooUnfold::kBayes,   "Bayes"},
91                                {RooUnfold::kSVD,     "SVD"},
92                                {RooUnfold::kBinByBin,"BinByBin"},
93                                {RooUnfold::kTUnfold, "TUnfold"},
94                                {RooUnfold::kInvert,  "Invert"},
95                                {RooUnfold::kDagostini,"Dagostini"}, 
96                                {0xDeadBeef,           "unknown"} };
97     const Method* pMethod = methods;
98     while (pMethod->id != 0xDeadBeef) {
99       if (method.BeginsWith(pMethod->name, TString::kIgnoreCase)) break;
100       pMethod++;
101     }
102     if (pMethod->id == 0xDeadBeef) {
103       Error("Run", "Unknown unfolding method: %s", method.Data());
104       return;
105     }
106     TNamed* methText = new TNamed("method", pMethod->name.Data());
107     methText->SetUniqueID(pMethod->id);
108     outF->cd();
109     methText->Write();
110     
111     // --- Loop over the kinds of bins we have -----------------------
112     const char*  types[] = { "symmetric", "negative", "positive", "other", 0 };
113     const char** ptype   = types;
114     Double_t     regParm = regParam;
115     while ((*ptype)) { 
116       TCollection* realType = GetCollection(realTop, *ptype);
117       TCollection* mcType   = GetCollection(mcTop, *ptype);
118       TDirectory*  outType  = outF->mkdir(*ptype);
119       if(realType && mcType) {
120         // Restore default 
121         regParm = regParam; 
122         // regParm is possibly modified here.
123         ScanType(pMethod->id, regParm, realType, mcType, outType);
124       }
125       // Info("run", "%s gave regularisation parameter %f", *ptype, regParm);
126       ptype++;
127       outF->cd();
128     }
129     // --- Write used regularisation parameter -----------------------
130     // We get the value that's possibly modified
131     // Info("Run", "Regularisation parameter was %f, now %f", regParam,regParm);
132     TParameter<double>* regP = new TParameter<double>("regParam", regParm);
133     regP->Write();
134
135     // --- Close all files -------------------------------------------
136     // outF->ls();
137     outF->Write();
138     outF->Close();
139     realF->Close();
140     mcF->Close();
141   }
142   /** 
143    * Get an object from a collection 
144    * 
145    * @param c    Collection
146    * @param name Name of object
147    * @param cl   Possible class to check against
148    * 
149    * @return Pointer to object or null
150    */
151   TObject* GetObject(TCollection* c, const TString& name, TClass* cl) const
152   {
153     TObject* o = c->FindObject(name);
154     if (!o) { 
155       Warning("GetObject", "%s not found in %s", name.Data(), c->GetName());
156       return 0;
157     }
158     if (cl && !o->IsA()->InheritsFrom(cl)) {
159       Warning("GetCollection", "%s is not a %s but a %s", 
160               name.Data(), cl->GetName(), o->ClassName());
161       return 0;
162     }
163     return o;
164   }
165   /** 
166    * Get a collection
167    * 
168    * @param d 
169    * @param name 
170    * 
171    * @return 
172    */   
173   TCollection* GetCollection(TDirectory* d, const TString& name) const
174   {
175     TObject* o = d->Get(name);
176     if (!o) { 
177       Warning("GetCollection", "%s not found in %s", name.Data(), d->GetName());
178       return 0;
179     }
180     if (!o->IsA()->InheritsFrom(TCollection::Class())) { 
181       Warning("GetCollection", "%s is not a collection", name.Data());
182       return 0;
183     }
184     return static_cast<TCollection*>(o);
185   }
186   /** 
187    * Get a collection 
188    * 
189    * @param c 
190    * @param name 
191    * 
192    * @return 
193    */
194   TCollection* GetCollection(TCollection* c, const TString& name) const
195   {
196     return static_cast<TCollection*>(GetObject(c, name, TCollection::Class()));
197   }
198   /** 
199    * Get a 1D histogram from a collection
200    * 
201    * @param c    Collection
202    * @param name Nanme of histogram
203    * 
204    * @return Pointer to object or null
205    */
206   TH1* GetH1(TCollection* c, const TString& name) 
207   {
208     return static_cast<TH1*>(GetObject(c, name, TH1::Class()));
209   }
210   /** 
211    * Get a 2D histogram from a collection
212    * 
213    * @param c    Collection
214    * @param name Nanme of histogram
215    * 
216    * @return Pointer to object or null
217    */
218   TH2* GetH2(TCollection* c, const TString& name) 
219   {
220     return static_cast<TH2*>(GetObject(c, name, TH2::Class()));
221   }
222   TH1* Ratio(const TH1* num, const TGraph* denom,
223              Double_t etaMin, Double_t etaMax) 
224   {
225     TH1* ret = static_cast<TH1*>(num->Clone(Form("%s_%s",
226                                                  num->GetName(), 
227                                                  denom->GetName())));
228     ret->SetTitle(Form("%+5.1f<#eta<%+5.1f to %s", etaMin, etaMax,  
229                        denom->GetTitle()));
230     ret->SetDirectory(0);
231     ret->SetMarkerColor(denom->GetMarkerColor());
232     for (Int_t i = 1; i <= ret->GetNbinsX(); i++) { 
233       Double_t x    = ret->GetXaxis()->GetBinCenter(i);
234       Double_t numY = ret->GetBinContent(i);
235       Double_t numE = ret->GetBinError(i);
236       Double_t denY = denom->Eval(x);
237       
238       if (denY <= 0) {
239         ret->SetBinContent(i,0);
240         ret->SetBinError(i,0);
241         continue;
242       }
243       
244       ret->SetBinContent(i,(numY-denY)/denY);
245       ret->SetBinError(i,numE/denY);
246     }
247     return ret;
248   }
249   /** 
250    * Scan type (symmetric, negative, ...) list for bins 
251    * 
252    * @param real Real list
253    * @param mc   MC list
254    * @param dir  Output directory 
255    */
256   void ScanType(UShort_t     method,
257                 Double_t&    regParam,
258                 TCollection* real, 
259                 TCollection* mc, 
260                 TDirectory*  dir) 
261   {
262     // --- Create container stack ------------------------------------
263     TString tit(real->GetName());
264     tit[0] = toupper(tit[0]);
265     tit.Append(" bins");
266     
267     THStack* stack = new THStack("all", tit);
268     dir->Add(stack);
269     
270     THStack* ratios = 0;
271
272     TMultiGraph* mg = 0;
273
274     // --- Create list of entries for legend -------------------------
275     TList* l = new TList;
276     l->SetName("legend");
277
278     // --- Get the bins container ------------------------------------
279     TList* le = static_cast<TList*>(real->FindObject("lowEdges"));
280     TList* he = static_cast<TList*>(real->FindObject("highEdges"));
281     if (!le || !he) 
282       Warning("ScanType", "didn't get the bin low/high edge containers");
283     else {
284       // Copy to output 
285       dir->cd();
286       le->Clone()->Write("lowEdges", TObject::kSingleKey);
287       he->Clone()->Write("highEdges", TObject::kSingleKey);
288     }
289
290     // --- Setup for markers -----------------------------------------
291     const Int_t   nMarkers   = 7;
292     const Int_t   cMarkers[] = { 20,  21,  22,  23,  29,  33,  34  };
293     const Int_t   oMarkers[] = { 24,  25,  26,  32,  30,  27,  28  };
294     const Float_t sMarkers[] = { 1.1, 1.0, 1.2, 1.2, 1.2, 1.2, 1.0 };
295     Int_t iMarker            = 0;
296
297     // --- Containers that allow us to stack the objects properly ----
298     TList* mcTruth      = new TList;
299     TList* mcMeasured   = new TList;
300     TList* realMeasured = new TList;
301     TList* mcUnfolded   = new TList;
302     TList* realUnfolded = new TList;
303     // --- Loop over the contained objects ---------------------------
304     static TRegexp regex("[pm][0-9]d[0-9]*_[pm][0-9]d[0-9]*");
305     TIter          next(real);
306     TObject*       o = 0;
307     Int_t          f = 1;
308     Double_t       r = regParam;
309     while ((o = next())) {
310       // if not a collection, don't bother 
311       if (!o->IsA()->InheritsFrom(TCollection::Class())) continue;
312     
313       // If it doesn't match our regular expression, don't bother 
314       TString n(o->GetName());
315       if (n.Index(regex) == kNPOS) { 
316         // Warning("ScanType", "%s in %s doesn't match eta range regexp", 
317         //         n.Data(), real->GetName());
318         continue;
319       }
320       // Cast object and find corresponding MC object 
321       TCollection* realBin = static_cast<TCollection*>(o);
322       TCollection* mcBin   = GetCollection(mc, n.Data());
323       if (!mcBin) { 
324         Warning("ScanType", "No corresponding MC bin for %s found in %s", 
325                 n.Data(), mc->GetName());
326         continue;
327       }
328       TDirectory* outBin = dir->mkdir(realBin->GetName());
329       
330       // Restore default
331       r = regParam;
332       // Now do the unfolding 
333       THStack* bin = UnfoldEtaBin(method, r, realBin, mcBin, outBin);
334       if (!bin) { dir->cd(); continue; }
335
336       // Loop over histograms and set properties 
337       TIter   nextH(bin->GetHists());
338       TH1*    hist    = 0;
339       Int_t   cMarker = cMarkers[iMarker % nMarkers];
340       Int_t   oMarker = oMarkers[iMarker % nMarkers];
341       Float_t sMarker = sMarkers[iMarker % nMarkers];
342       TH1*    realH   = 0;
343       while ((hist = static_cast<TH1*>(nextH()))) {
344         TH1* out = static_cast<TH1*>(hist->Clone());
345         if (out->GetMarkerColor() == kUnfoldedColor) {
346           if (out->GetMarkerStyle() != 24)  {
347             realUnfolded->Add(out);
348             realH = out;
349           }
350           else 
351             mcUnfolded->Add(out);
352         }
353         else if (out->GetMarkerColor() == kMeasuredColor) {
354           if (out->GetMarkerStyle() != 24)  
355             realMeasured->Add(out);
356           else 
357             mcMeasured->Add(out);
358         }
359         else if (out->GetMarkerColor() == kTruthColor) 
360           mcTruth->Add(out);
361         else 
362           Warning("", "Unknown color for %s", out->GetName());
363
364         out->SetDirectory(0);
365         out->Scale(f);
366         out->SetMarkerStyle(out->GetMarkerStyle() == 24 ? oMarker : cMarker);
367         out->SetMarkerSize(out->GetMarkerSize() * sMarker);
368         out->SetOption(nextH.GetOption());
369         // stack->Add(out, nextH.GetOption());
370       }
371       TString nn(bin->GetTitle());
372       nn.Append(Form(" (#times%d)", f));
373       TObjString* lee = new TObjString(nn);
374       lee->SetUniqueID(cMarker);
375       l->Add(lee);
376
377       // Now try to get external data and make a multigraph 
378       nn = o->GetName();
379       nn.ReplaceAll("p", "+");
380       nn.ReplaceAll("m", "-");
381       nn.ReplaceAll("d", ".");
382       nn.ReplaceAll("_", " ");
383       TObjArray*  tokens = nn.Tokenize(" ");
384       TObjString* sMin   = static_cast<TObjString*>(tokens->At(0));
385       TObjString* sMax   = static_cast<TObjString*>(tokens->At(1));
386       Double_t    etaMin = sMin->String().Atof();
387       Double_t    etaMax = sMax->String().Atof();
388       if (TMath::Abs(etaMax + etaMin) < 1e-6) { 
389         // Symmetric bin
390         Double_t aEta = TMath::Abs(etaMin);
391         TGraphAsymmErrors* g1 = GetOther(0, aEta, 900, f, cMarker); 
392         TGraphAsymmErrors* g2 = GetOther(1, aEta, 900, f, cMarker); 
393         if (g1 || g2) {
394           if (!mg) mg = new TMultiGraph("other", "Other results");
395           if (!ratios) ratios = new THStack("ratios",tit);
396         }
397         if (g1) {
398           g1->SetTitle("CMS");
399           mg->Add(g1);
400           if (realH) ratios->Add(Ratio(realH, g1, etaMin, etaMax));
401         }
402         if (g2) {
403           g2->SetTitle("ALICE");
404           mg->Add(g2);
405           if (realH) ratios->Add(Ratio(realH, g2, etaMin, etaMax));
406         }
407       }
408
409       // Increment scaling and marker 
410       f *= 10;
411       iMarker++;
412
413       dir->cd();
414     }
415     regParam = r;
416     // Info("ScanType", "Regularisation parameter was %f, now %f", regParam, r);
417     TH1*  tmp = 0;
418     TIter nextMCT(mcTruth);
419     while ((tmp = static_cast<TH1*>(nextMCT()))) 
420       stack->Add(tmp, tmp->GetOption());
421     TIter nextMCM(mcMeasured);
422     while ((tmp = static_cast<TH1*>(nextMCM()))) 
423       stack->Add(tmp, tmp->GetOption());
424     TIter nextRM(realMeasured);
425     while ((tmp = static_cast<TH1*>(nextRM()))) 
426       stack->Add(tmp, tmp->GetOption());
427     TIter nextMCU(mcUnfolded);
428     while ((tmp = static_cast<TH1*>(nextMCU()))) 
429       stack->Add(tmp, tmp->GetOption());
430     TIter nextRU(realUnfolded);
431     while ((tmp = static_cast<TH1*>(nextRU()))) 
432       stack->Add(tmp, tmp->GetOption());
433     
434     dir->cd();
435     if (mg) mg->Write();
436     if (ratios) dir->Add(ratios);
437     l->Write(l->GetName(), TObject::kSingleKey);
438   }
439   /** 
440    * Do unfolding in an @f$\eta@f$ bin 
441    * 
442    * @param real Real list
443    * @param mc   MC list
444    * @param dir  Output directory
445    * 
446    * @return Stack of histograms on success
447    */  
448   THStack* UnfoldEtaBin(UInt_t       method, 
449                         Double_t&    regParam,
450                         TCollection* real, 
451                         TCollection* mc, 
452                         TDirectory* dir)
453   {
454     TH1*  realRaw  = GetH1(real, "rawDist");
455     TH1*  mcRaw    = GetH1(mc,   "rawDist");
456     TH1*  mcTruth  = GetH1(mc,   "truth");
457     TH2*  response = GetH2(mc,   "response");
458     
459     if (!realRaw) { 
460       Warning("UnfoldEtaBin", "Real raw distribution not found in %s", 
461               real->GetName());
462       return 0;
463     }
464     if (!mcRaw) { 
465       Warning("UnfoldEtaBin", "MC raw distribution not found in %s", 
466               mc->GetName());
467       return 0;
468     }
469     if (!mcTruth) { 
470       Warning("UnfoldEtaBin", "MC true distribution not found in %s", 
471               mc->GetName());
472       return 0;
473     }
474     if (!response) { 
475       Warning("UnfoldEtaBin", "Response matrix not found in %s", 
476               mc->GetName());
477       return 0;
478     }
479     
480     Int_t    mN = realRaw->GetNbinsX();
481     Double_t mL = realRaw->GetXaxis()->GetXmin();
482     Double_t mH = realRaw->GetXaxis()->GetXmax();
483     Int_t    tN = mcRaw->GetNbinsX();
484     Double_t tL = mcRaw->GetXaxis()->GetXmin();
485     Double_t tH = mcRaw->GetXaxis()->GetXmax();
486     
487     RooUnfoldResponse matrix(mN, mL, mH, tN, tL, tH);
488     for (Int_t i = 1; i <= mN; i++) { 
489       Double_t mX = response->GetYaxis()->GetBinCenter(i);
490       for (Int_t j = 1; j <= tN; j++) { 
491         Double_t tX = response->GetXaxis()->GetBinCenter(j);
492         matrix.Fill(mX, tX, response->GetBinContent(j, i));
493       }
494     }
495
496     Double_t regParm = regParam;
497     RooUnfold::Algorithm alg = (RooUnfold::Algorithm)method;
498     RooUnfold* realUnfold = RooUnfold::New(alg, &matrix, realRaw, regParm);
499     realUnfold->SetVerbose(0);
500     TH1* resReal = realUnfold->Hreco();
501     TH1* outReal = static_cast<TH1*>(resReal->Clone("realUnfolded"));
502     resReal->SetDirectory(0);
503     regParam = realUnfold->GetRegParm();
504     // Info("UnfoldEtaBin", "Used regularization parameter: %f", regParam);
505     delete resReal;
506     delete realUnfold;
507
508     RooUnfold* mcUnfold = RooUnfold::New(alg, &matrix, mcRaw, regParm);
509     mcUnfold->SetVerbose(0);
510     TH1* resMC = mcUnfold->Hreco();
511     TH1* outMC = static_cast<TH1*>(resMC->Clone("mcUnfolded"));
512     resMC->SetDirectory(0);
513     delete resMC;
514     delete mcUnfold;
515
516     TH1* outRealRaw  = static_cast<TH1*>(realRaw->Clone("realRaw"));
517     TH1* outMcRaw    = static_cast<TH1*>(mcRaw->Clone("mcRaw"));
518     TH1* outMcTruth  = static_cast<TH1*>(mcTruth->Clone("mcTruth"));
519     TH2* outResponse = static_cast<TH2*>(matrix.Hresponse()->Clone("response"));
520
521     outRealRaw ->SetTitle("Measured");
522     outMcRaw   ->SetTitle("Measured (MC)");
523     outMcTruth ->SetTitle("Truth (MC)");
524     outResponse->SetTitle("Response matrix");
525     outReal    ->SetTitle("Unfolded");
526     outMC      ->SetTitle("Unfolded (MC)");
527
528     outRealRaw ->SetDirectory(dir);
529     outMcRaw   ->SetDirectory(dir);
530     outMcTruth ->SetDirectory(dir);
531     outResponse->SetDirectory(dir);
532     outReal    ->SetDirectory(dir);
533     outMC      ->SetDirectory(dir);
534     
535     outMcRaw  ->SetMarkerStyle(24); // Open circle
536     outRealRaw->SetMarkerStyle(20); // Circle
537     outMcTruth->SetMarkerStyle(24); // Open Circle
538     outMC     ->SetMarkerStyle(24); // Open Circle
539     outReal   ->SetMarkerStyle(20); // Circle
540     
541     outMcRaw  ->SetMarkerSize(1.2); // Open circle
542     outMC     ->SetMarkerSize(1.2); // Open circle
543     outMcTruth->SetMarkerSize(1.6); // Open square
544
545     outMcRaw  ->SetMarkerColor(kMeasuredColor);
546     outRealRaw->SetMarkerColor(kMeasuredColor);
547     outMcTruth->SetMarkerColor(kTruthColor);
548     outMC     ->SetMarkerColor(kUnfoldedColor);
549     outReal   ->SetMarkerColor(kUnfoldedColor);
550
551     outMcRaw  ->SetFillColor(kSysColor);
552     outRealRaw->SetFillColor(kSysColor);
553     outMcTruth->SetFillColor(kSysColor);
554     outMC     ->SetFillColor(kSysColor);
555     outReal   ->SetFillColor(kSysColor);
556
557     outMcRaw  ->SetFillStyle(1001);
558     outRealRaw->SetFillStyle(0);
559     outMcTruth->SetFillStyle(1001);
560     outMC     ->SetFillStyle(0);
561     outReal   ->SetFillStyle(0);
562
563     outMcRaw  ->SetLineColor(kBlack);
564     outRealRaw->SetLineColor(kBlack);
565     outMcTruth->SetLineColor(kBlack);
566     outMC     ->SetLineColor(kBlack);
567     outReal   ->SetLineColor(kBlack);
568
569     TString tit(real->GetName());
570     tit.ReplaceAll("m", "-");
571     tit.ReplaceAll("p", "+");
572     tit.ReplaceAll("d", ".");
573     tit.ReplaceAll("_", "<#it{#eta}<");
574     
575     THStack* stack = new THStack("all", tit);
576     stack->Add(outMcRaw,      "E2");
577     stack->Add(outRealRaw,    "E1");
578     stack->Add(outMcTruth,    "E2");
579     stack->Add(outMC,         "E1");
580     stack->Add(outReal,       "E1");
581
582     dir->Add(stack);
583
584     return stack;
585   }
586   /** 
587    * Drwa output 
588    * 
589    * @param which 
590    */
591   void DrawType(const char* which="symmetric") 
592   {
593     const char* fname = "forward_unfolded.root";
594     TFile*   outF = 0;
595     TObject* outO = gROOT->GetListOfFiles()->FindObject(fname);
596     if (outO) outF = static_cast<TFile*>(outO);
597     else      outF = TFile::Open(fname, "READ");
598     
599     if (!outF) { 
600       Warning("DrawType", "Failed to open file %s", fname);
601       return;
602     }
603     
604     TNamed* method = 0;
605     outF->GetObject("method", method);
606     TParameter<double>* regParam = 0;
607     outF->GetObject("regParam", regParam);
608     if (!method) Warning("DrawType", "Didn't find the method string");
609     if (!regParam) 
610       Warning("DrawType", "Didn't find the regularization parameter");
611     
612
613     THStack* stack = 0;
614     outF->GetObject(Form("/%s/all", which), stack);
615     if (!stack) { 
616       Warning("DrawType", "Failed to get /%s/all from file %s", which, fname);
617       return;
618     }
619     
620     TList* leg = 0;
621     outF->GetObject(Form("/%s/legend", which), leg);
622     if (!leg) { 
623       Warning("DrawType", "Failed to get /%s/legend from file %s", 
624               which, fname);
625       return;
626     }
627
628     TMultiGraph* other = 0;
629     outF->GetObject(Form("/%s/other", which), other);
630     // if (!other) Warning("DrawType", "No other data found for %s", which);
631
632     THStack* ratios = 0;
633     outF->GetObject(Form("/%s/ratios", which), ratios);
634     // if (!ratios) Warning("DrawType", "No ratios data found for %s", which);
635
636     TCanvas* c = new TCanvas(which, Form("%s P(#it{N}_{ch})", which));
637     c->SetLogy();
638     c->SetTopMargin(0.01);
639     c->SetRightMargin(0.02);
640     c->cd();
641     
642     THStack* drawn = static_cast<THStack*>(stack->Clone(which));
643     drawn->Draw("nostack");
644     drawn->GetXaxis()->SetTitle("#it{#eta}");
645     drawn->GetYaxis()->SetTitle("P(#it{N}_{ch})");
646     drawn->GetHistogram()->SetDirectory(0);
647     TIter nextH(drawn->GetHists());
648     TH1*  h = 0;
649     while ((h = static_cast<TH1*>(nextH()))) h->SetDirectory(0);
650
651     Bool_t        hasCMS   = false;
652     Bool_t        hasALICE = false;
653     if (other) {
654       TIter nextG(other->GetListOfGraphs());
655       TGraph* g = 0;
656       while ((g = static_cast<TGraph*>(nextG()))) {
657         g->Draw("p same");
658         if (g->GetMarkerColor() == kALICEColor) hasALICE = true;
659         if (g->GetMarkerColor() == kCMSColor)   hasCMS   = true;
660       }
661     }
662     TLegend* l = new TLegend(.65, .75, .975, .975);
663     l->SetBorderSize(0);
664     l->SetFillColor(0);
665     l->SetFillStyle(0);
666     
667     TIter         next(leg);
668     TObject*      o = 0;
669     TLegendEntry* e = 0;
670     Int_t         d = 0;
671     while ((o = next())) { 
672       e = l->AddEntry(Form("dummy%02d", d++), o->GetName(), "p");
673       e->SetMarkerStyle(o->GetUniqueID());
674       e->SetLineColor(kBlack);
675       e->SetMarkerSize(1.3);
676     }
677     l->Draw();
678
679     Double_t x1 = other ? .12 : .7;
680     Double_t y1 = .1;
681     Double_t w1 = other ? .20 : .15;
682     Double_t h1 = other ? .3 : .25;
683     TLegend* l2 = new TLegend(x1, y1, x1+w1, y1+h1);
684     l2->SetBorderSize(0);
685     l2->SetFillColor(0);
686     l2->SetFillStyle(0);
687
688     const char* oth[] = { "Measured", 
689                           "Truth", 
690                           "Unfolded", 
691                           "CMS", 
692                           "ALICE" };
693     Int_t       col[] = { kMeasuredColor, 
694                           kTruthColor, 
695                           kUnfoldedColor, 
696                           kCMSColor, 
697                           kALICEColor };
698     for (Int_t i = 0; i < 5; i++) {
699       if (i == 3 && !hasCMS)   continue;
700       if (i == 4 && !hasALICE) continue;
701       e = l2->AddEntry(Form("dummy%02d", d++), oth[i], "f");
702       e->SetFillColor(col[i]);
703       e->SetFillStyle(1001);
704     }
705     e = l2->AddEntry(Form("dummy%02d", d++), "Real", "p");
706     e->SetMarkerStyle(20);
707     e->SetMarkerSize(1.3);
708     e->SetMarkerColor(kBlack);
709     e = l2->AddEntry(Form("dummy%02d", d++), "MC", "p");
710     e->SetMarkerStyle(24);
711     e->SetMarkerSize(1.3);
712     e->SetMarkerColor(kBlack);
713     l2->Draw();
714
715
716     TString post;
717     if (method && regParam) {
718       TString mes = method->GetTitle();
719       if      (method->GetUniqueID() == RooUnfold::kBayes || 
720                method->GetUniqueID() == RooUnfold::kDagostini)
721         mes.Append(Form(" (N_{iter}=%d)", int(regParam->GetVal())));
722       else if (method->GetUniqueID() == RooUnfold::kSVD) 
723         mes.Append(Form(" (k=%d)", int(regParam->GetVal())));
724       else if (method->GetUniqueID() == RooUnfold::kTUnfold) 
725         mes.Append(Form(" (#tau=%f)", regParam->GetVal()));
726       
727       TLatex* meth = new TLatex(.97, .749, mes);
728       meth->SetNDC();
729       meth->SetTextAlign(33);
730       meth->SetTextFont(42);
731       meth->SetTextSize(.03);
732       meth->Draw();
733
734       post.Form("_%s", method->GetTitle());
735       post.ToLower();
736     }
737     c->Modified();
738     c->Update();
739     c->cd();
740     c->SaveAs(Form("pnch_%s%s.pdf", which, post.Data()));
741
742     if (ratios) {
743       c = new TCanvas(Form("r%s", which), 
744                       Form("%s P(#it{N}_{ch})", which));
745       c->SetTopMargin(0.01);
746       c->SetRightMargin(0.02);
747       c->cd();
748       ratios->Draw("nostack");
749       c->BuildLegend();
750     }
751
752     outF->cd();
753   }
754   void DrawAll()
755   {
756     DrawType("symmetric");
757     DrawType("negative");
758     DrawType("positive");
759     DrawType("other");
760   }
761   TGraphAsymmErrors* GetOther(UShort_t type, Double_t eta, UShort_t sNN,
762                               Int_t factor, Int_t marker)
763   {
764     TGraphAsymmErrors* g = 0;
765     Int_t color = kBlack;
766     switch (type) { 
767     case 0: g = GetCMS(eta, sNN);   color = kCMSColor; break;
768     case 1: g = GetALICE(eta, sNN); color = kALICEColor; break;
769     }
770     if (!g) {
771       // Warning("GetOther", "No other data found for type=%d, eta=%f, sNN=%d", 
772       //         type, eta, sNN);
773       return g;
774     }
775     
776     g->SetMarkerStyle(marker);
777     g->SetMarkerColor(color);
778     for (Int_t j = 0; j < g->GetN(); j++) { 
779       g->SetPoint(j, g->GetX()[j], g->GetY()[j]*factor);
780       g->SetPointError(j, g->GetEXlow()[j], g->GetEXhigh()[j], 
781                        g->GetEYlow()[j]*factor, g->GetEYhigh()[j]*factor);
782     }
783     return g;
784   }    
785
786   TGraphAsymmErrors* GetCMS(Double_t eta, UShort_t sNN)
787   {
788     Double_t aEta = TMath::Abs(eta);
789     TGraphAsymmErrors* g = 0;
790     switch (sNN) { 
791     case 900: 
792       if      (aEta <= 0.51)  g = CMSsqrts900eta05();
793       else if (aEta <= 1.01)  g = CMSsqrts900eta10();
794       else if (aEta <= 1.51)  g = CMSsqrts900eta15();
795       else if (aEta <= 2.01)  g = CMSsqrts900eta20();
796       else if (aEta <= 2.41)  g = CMSsqrts900eta24();
797       break;
798     default: 
799       return g;
800     }
801     if (g) {
802       g->SetMarkerColor(kCMSColor);
803       g->SetLineColor(kBlack);
804     }
805     return g;
806   }
807   /** 
808    * CMS pp, @f$\sqrt{s} = 900GeV@f$, NSD, @f$|\eta|\lt0.5@f$ 
809    * 
810    * @return 
811    */
812   TGraphAsymmErrors* CMSsqrts900eta05()
813   {
814     // Plot: p8068_d2x1y1
815     double x[] = { 0.0, 1.0,
816                    2.0, 3.0,
817                    4.0, 5.0,
818                    6.0, 7.0,
819                    8.0, 9.0,
820                    10.0,        11.0,
821                    12.0,        13.0,
822                    14.0,        15.0,
823                    16.0,        17.0,
824                    18.0,        19.0,
825                    20.0,        22.0,
826                    26.0 };
827     double xem[] = { 0.5,       0.5,
828                      0.5,       0.5,
829                      0.5,       0.5,
830                      0.5,       0.5,
831                      0.5,       0.5,
832                      0.5,       0.5,
833                      0.5,       0.5,
834                      0.5,       0.5,
835                      0.5,       0.5,
836                      0.5,       0.5,
837                      0.5,       1.5,
838                      2.5 };
839     double xep[] = { 0.5,       0.5,
840                      0.5,       0.5,
841                      0.5,       0.5,
842                      0.5,       0.5,
843                      0.5,       0.5,
844                      0.5,       0.5,
845                      0.5,       0.5,
846                      0.5,       0.5,
847                      0.5,       0.5,
848                      0.5,       0.5,
849                      0.5,       1.5,
850                      2.5 };
851     double y[] = { 0.193,       0.1504,
852                    0.13507,     0.11647,
853                    0.09566,     0.07567,
854                    0.05817,     0.04427,
855                    0.0337,      0.02572,
856                    0.01948,     0.01457,
857                    0.01069,     0.00769,
858                    0.0055,      0.00396,
859                    0.00289,     0.002112,
860                    0.001544,    0.001118,
861                    7.52E-4,     3.35E-4,
862                    9.8E-5 };
863     double yem[] = { 0.02189155088156159,       0.012180722474467595,
864                      0.007909551188278638,      0.006072832946821442,
865                      0.004838605170914444,      0.003828276374558138,
866                      0.003016836091006603,      0.002365797962633327,
867                      0.0018847015678881366,     0.0015610893632332517,
868                      0.001308166656049603,      0.0011140017953306899,
869                      9.219544457292888E-4,      7.203471385380802E-4,
870                      5.508175741568165E-4,      4.3011626335213136E-4,
871                      3.3837848631377264E-4,     2.746961958236772E-4,
872                      2.2377220560203628E-4,     1.9070920271449933E-4,
873                      1.6011246047700347E-4,     8.134494452638099E-5,
874                      2.5059928172283337E-5 };
875     double yep[] = { 0.031663227883461285,      0.015861904047118684,
876                      0.010948538715280683,      0.008490583018850945,
877                      0.007046453008429135,      0.005675746646917919,
878                      0.004395201929377079,      0.003365070578754627,
879                      0.0026049952015310893,     0.0020535335400231475,
880                      0.0016522106403240478,     0.0013497407158413798,
881                      0.001118033988749895,      9.060905032059435E-4,
882                      7.061161377563892E-4,      5.457105459856901E-4,
883                      4.148493702538308E-4,      3.257759966602819E-4,
884                      2.6689698387205504E-4,     2.292705825002414E-4,
885                      1.904205871222962E-4,      9.646242791885347E-5,
886                      3.417601498127012E-5 };
887     double ysm[] = { 0.002,     0.0014,
888                      7.9E-4,    7.2E-4,
889                      6.1E-4,    5.4E-4,
890                      4.7E-4,    4.1E-4,
891                      3.6E-4,    3.1E-4,
892                      2.7E-4,    2.3E-4,
893                      2.0E-4,    1.7E-4,
894                      1.5E-4,    1.3E-4,
895                      1.1E-4,    9.7E-5,
896                      8.5E-5,    7.1E-5,
897                      5.6E-5,    2.9E-5,
898                      1.2E-5 };
899     double ysp[] = { 0.002,     0.0014,
900                      7.9E-4,    7.2E-4,
901                      6.1E-4,    5.4E-4,
902                      4.7E-4,    4.1E-4,
903                      3.6E-4,    3.1E-4,
904                      2.7E-4,    2.3E-4,
905                      2.0E-4,    1.7E-4,
906                      1.5E-4,    1.3E-4,
907                      1.1E-4,    9.7E-5,
908                      8.5E-5,    7.1E-5,
909                      5.6E-5,    2.9E-5,
910                      1.2E-5 };
911     int np = 23;
912     TGraphAsymmErrors* g = new TGraphAsymmErrors(np, 
913                                                  x, y, 
914                                                  xem, 
915                                                  xep, 
916                                                  yem, 
917                                                  yep);
918     g->SetName("/HepData/8068/d2x1y1");
919     g->SetTitle("/HepData/8068/d2x1y1");
920
921     return g;
922   }
923   TGraphAsymmErrors* CMSsqrts900eta10()
924   {
925
926     // Plot: p8068_d3x1y1
927     double x[] = { 0.0, 1.0,
928                    2.0, 3.0,
929                    4.0, 5.0,
930                    6.0, 7.0,
931                    8.0, 9.0,
932                    10.0,        11.0,
933                    12.0,        13.0,
934                    14.0,        15.0,
935                    16.0,        17.0,
936                    18.0,        19.0,
937                    20.0,        21.0,
938                    22.0,        23.0,
939                    24.0,        25.0,
940                    26.0,        27.0,
941                    28.0,        29.0,
942                    30.0,        31.0,
943                    32.0,        33.0,
944                    34.0,        36.0,
945                    40.0,        45.0,
946                    50.0,        55.0 };
947     double xem[] = { 0.5,       0.5,
948                      0.5,       0.5,
949                      0.5,       0.5,
950                      0.5,       0.5,
951                      0.5,       0.5,
952                      0.5,       0.5,
953                      0.5,       0.5,
954                      0.5,       0.5,
955                      0.5,       0.5,
956                      0.5,       0.5,
957                      0.5,       0.5,
958                      0.5,       0.5,
959                      0.5,       0.5,
960                      0.5,       0.5,
961                      0.5,       0.5,
962                      0.5,       0.5,
963                      0.5,       0.5,
964                      0.5,       1.5,
965                      2.5,       2.5,
966                      2.5,       2.5 };
967     double xep[] = { 0.5,       0.5,
968                      0.5,       0.5,
969                      0.5,       0.5,
970                      0.5,       0.5,
971                      0.5,       0.5,
972                      0.5,       0.5,
973                      0.5,       0.5,
974                      0.5,       0.5,
975                      0.5,       0.5,
976                      0.5,       0.5,
977                      0.5,       0.5,
978                      0.5,       0.5,
979                      0.5,       0.5,
980                      0.5,       0.5,
981                      0.5,       0.5,
982                      0.5,       0.5,
983                      0.5,       0.5,
984                      0.5,       1.5,
985                      2.5,       2.5,
986                      2.5,       2.5 };
987     double y[] = { 0.1076,      0.0655,
988                    0.07574,     0.08168,
989                    0.0813,      0.07622,
990                    0.06843,     0.06034,
991                    0.05259,     0.0458,
992                    0.03987,     0.03472,
993                    0.03035,     0.02661,
994                    0.02328,     0.02018,
995                    0.01728,     0.0147,
996                    0.0125,      0.01067,
997                    0.00916,     0.00786,
998                    0.00671,     0.0057,
999                    0.00478,     0.00394,
1000                    0.00319,     0.00251,
1001                    0.00196,     0.00156,
1002                    0.001301,    0.001121,
1003                    9.84E-4,     8.25E-4,
1004                    6.39E-4,     3.78E-4,
1005                    1.96E-4,     6.0E-5,
1006                    1.25E-5,     1.6E-6 };
1007     double yem[] = { 0.015802847844613326,      0.009464142856064674,
1008                      0.008214195030555337,      0.00676426640516176,
1009                      0.0058916636020736966,     0.005200240379059414,
1010                      0.004441733895676326,      0.003671511950137164,
1011                      0.0029149442533262966,     0.0024150569351466646,
1012                      0.0020554318281081475,     0.001767059704707229,
1013                      0.0015500322577288513,     0.0013800362314084368,
1014                      0.0012684636376341263,     0.0011763077828527702,
1015                      0.001084158659975559,      9.82344135219425E-4,
1016                      8.805679985100526E-4,      7.692203845452875E-4,
1017                      6.705221845696084E-4,      5.913543776789007E-4,
1018                      5.375872022286245E-4,      5.154609587543949E-4,
1019                      5.124451190127582E-4,      4.904079934095691E-4,
1020                      4.4922154890432404E-4,     3.7E-4,
1021                      3.0083217912982643E-4,     2.4166091947189146E-4,
1022                      2.1108529081866412E-4,     1.8252944967867517E-4,
1023                      1.662077013859466E-4,      1.4663219291819924E-4,
1024                      1.2229881438509532E-4,     7.826237921249263E-5,
1025                      4.74236228055175E-5,       2.1095023109728988E-5,
1026                      6.161980201201558E-6,      1.3601470508735443E-6 };
1027     double yep[] = { 0.02725949375905576,       0.011154371340420759,
1028                      0.009740395269186974,      0.008248078564126314,
1029                      0.007285581651453781,      0.006454339625399333,
1030                      0.005595158621522718,      0.004804039966528172,
1031                      0.00405504623894722,       0.0034544174617437305,
1032                      0.0029644561052577585,     0.002545584412271571,
1033                      0.0021980445855350615,     0.0019087430418995638,
1034                      0.0016690416411821486,     0.001468911161370898,
1035                      0.0013179529581893276,     0.0011866338946785568,
1036                      0.001065129100156408,      9.339164844888434E-4,
1037                      8.052328855678958E-4,      6.868041933477111E-4,
1038                      5.94810894318522E-4,       5.440588203494177E-4,
1039                      5.220153254455275E-4,      5.192301994298867E-4,
1040                      4.972926703662542E-4,      4.368065933568311E-4,
1041                      3.5735136770411276E-4,     2.8792360097775935E-4,
1042                      2.4200206610688264E-4,     2.0310588371585893E-4,
1043                      1.670748335327616E-4,      1.364587849865299E-4,
1044                      1.1970797801316335E-4,     9.470480452437458E-5,
1045                      5.758472019555187E-5,      2.195449840010015E-5,
1046                      7.481310045707236E-6,      1.7029386365926402E-6 };
1047     double ysm[] = { 0.0018,    0.0011,
1048                      6.3E-4,    6.8E-4,
1049                      6.1E-4,    5.6E-4,
1050                      5.3E-4,    4.8E-4,
1051                      4.5E-4,    4.1E-4,
1052                      3.8E-4,    3.6E-4,
1053                      3.5E-4,    3.3E-4,
1054                      3.1E-4,    2.9E-4,
1055                      2.7E-4,    2.5E-4,
1056                      2.3E-4,    2.1E-4,
1057                      2.0E-4,    1.9E-4,
1058                      1.7E-4,    1.6E-4,
1059                      1.5E-4,    1.4E-4,
1060                      1.3E-4,    1.2E-4,
1061                      1.1E-4,    1.0E-4,
1062                      9.4E-5,    8.6E-5,
1063                      8.3E-5,    7.5E-5,
1064                      6.1E-5,    3.5E-5,
1065                      2.0E-5,    1.1E-5,
1066                      4.6E-6,    1.1E-6 };
1067     double ysp[] = { 0.0018,    0.0011,
1068                      6.3E-4,    6.8E-4,
1069                      6.1E-4,    5.6E-4,
1070                      5.3E-4,    4.8E-4,
1071                      4.5E-4,    4.1E-4,
1072                      3.8E-4,    3.6E-4,
1073                      3.5E-4,    3.3E-4,
1074                      3.1E-4,    2.9E-4,
1075                      2.7E-4,    2.5E-4,
1076                      2.3E-4,    2.1E-4,
1077                      2.0E-4,    1.9E-4,
1078                      1.7E-4,    1.6E-4,
1079                      1.5E-4,    1.4E-4,
1080                      1.3E-4,    1.2E-4,
1081                      1.1E-4,    1.0E-4,
1082                      9.4E-5,    8.6E-5,
1083                      8.3E-5,    7.5E-5,
1084                      6.1E-5,    3.5E-5,
1085                      2.0E-5,    1.1E-5,
1086                      4.6E-6,    1.1E-6 };
1087     int np = 40;
1088     TGraphAsymmErrors* g = new TGraphAsymmErrors(np,
1089                                                  x,
1090                                                  y,
1091                                                  xem,
1092                                                  xep,
1093                                                  yem,
1094                                                  yep);
1095     g->SetName("/HepData/8068/d3x1y1");
1096     g->SetTitle("/HepData/8068/d3x1y1");
1097     return g;
1098   }
1099   TGraphAsymmErrors* CMSsqrts900eta15()
1100   {
1101     // Plot: p8068_d4x1y1
1102     double x[] = { 0.0, 1.0,
1103                    2.0, 3.0,
1104                    4.0, 5.0,
1105                    6.0, 7.0,
1106                    8.0, 9.0,
1107                    10.0,        11.0,
1108                    12.0,        13.0,
1109                    14.0,        15.0,
1110                    16.0,        17.0,
1111                    18.0,        19.0,
1112                    20.0,        21.0,
1113                    22.0,        23.0,
1114                    24.0,        25.0,
1115                    26.0,        27.0,
1116                    28.0,        29.0,
1117                    30.0,        31.0,
1118                    32.0,        33.0,
1119                    34.0,        35.0,
1120                    36.0,        37.0,
1121                    38.0,        39.0,
1122                    40.0,        41.0,
1123                    42.0,        43.0,
1124                    44.0,        45.0,
1125                    46.5,        49.0,
1126                    53.0,        58.0,
1127                    63.0,        68.0 };
1128     double xem[] = { 0.5,       0.5,
1129                      0.5,       0.5,
1130                      0.5,       0.5,
1131                      0.5,       0.5,
1132                      0.5,       0.5,
1133                      0.5,       0.5,
1134                      0.5,       0.5,
1135                      0.5,       0.5,
1136                      0.5,       0.5,
1137                      0.5,       0.5,
1138                      0.5,       0.5,
1139                      0.5,       0.5,
1140                      0.5,       0.5,
1141                      0.5,       0.5,
1142                      0.5,       0.5,
1143                      0.5,       0.5,
1144                      0.5,       0.5,
1145                      0.5,       0.5,
1146                      0.5,       0.5,
1147                      0.5,       0.5,
1148                      0.5,       0.5,
1149                      0.5,       0.5,
1150                      0.5,       0.5,
1151                      1.0,       1.5,
1152                      2.5,       2.5,
1153                      2.5,       2.5 };
1154     double xep[] = { 0.5,       0.5,
1155                      0.5,       0.5,
1156                      0.5,       0.5,
1157                      0.5,       0.5,
1158                      0.5,       0.5,
1159                      0.5,       0.5,
1160                      0.5,       0.5,
1161                      0.5,       0.5,
1162                      0.5,       0.5,
1163                      0.5,       0.5,
1164                      0.5,       0.5,
1165                      0.5,       0.5,
1166                      0.5,       0.5,
1167                      0.5,       0.5,
1168                      0.5,       0.5,
1169                      0.5,       0.5,
1170                      0.5,       0.5,
1171                      0.5,       0.5,
1172                      0.5,       0.5,
1173                      0.5,       0.5,
1174                      0.5,       0.5,
1175                      0.5,       0.5,
1176                      0.5,       0.5,
1177                      1.0,       1.5,
1178                      2.5,       2.5,
1179                      2.5,       2.5 };
1180     double y[] = { 0.0753,      0.03557,
1181                    0.04347,     0.05068,
1182                    0.05566,     0.05786,
1183                    0.05835,     0.05688,
1184                    0.05348,     0.0489,
1185                    0.04422,     0.04002,
1186                    0.03647,     0.03337,
1187                    0.03055,     0.02797,
1188                    0.02556,     0.02329,
1189                    0.02122,     0.01936,
1190                    0.01765,     0.01604,
1191                    0.01451,     0.01304,
1192                    0.01168,     0.01045,
1193                    0.00937,     0.0084,
1194                    0.00751,     0.00667,
1195                    0.00592,     0.00526,
1196                    0.00466,     0.00413,
1197                    0.00362,     0.00316,
1198                    0.00272,     0.00233,
1199                    0.00203,     0.00178,
1200                    0.00156,     0.00136,
1201                    0.0012,      0.001053,
1202                    9.13E-4,     7.84E-4,
1203                    5.85E-4,     3.73E-4,
1204                    2.13E-4,     9.6E-5,
1205                    3.6E-5,      7.4E-6 };
1206     double yem[] = { 0.014524806367039803,      0.0061507154055443014,
1207                      0.006900384047283165,      0.0068944397886992964,
1208                      0.00601252858621063,       0.004686747272896204,
1209                      0.0042880881520789655,     0.0039679339712248235,
1210                      0.0035288099977187778,     0.0031197756329582422,
1211                      0.0027127108213003464,     0.0023229722340140013,
1212                      0.002033937068839643,      0.0017866449003649271,
1213                      0.001591257364476281,      0.0014504137340772805,
1214                      0.0013412307780542466,     0.0012490796611905903,
1215                      0.0011594826432508594,     0.0010893117092916976,
1216                      0.0010384603988597735,     9.972462083156796E-4,
1217                      9.588013350011566E-4,      8.984430978086481E-4,
1218                      8.160882305241266E-4,      7.178439941937245E-4,
1219                      6.390618123468182E-4,      5.88727441181401E-4,
1220                      5.571355310873647E-4,      5.255473337388365E-4,
1221                      4.846648326421054E-4,      4.6615448083226656E-4,
1222                      4.4384682042344296E-4,     4.3081318457076036E-4,
1223                      4.0853396431630995E-4,     3.992492955535426E-4,
1224                      3.676955262170047E-4,      3.2695565448543625E-4,
1225                      2.9068883707497264E-4,     2.505992817228334E-4,
1226                      2.1954498400100151E-4,     1.8601075237738274E-4,
1227                      1.8601075237738274E-4,     1.7042300314218148E-4,
1228                      1.7998055450520203E-4,     1.6058953888718904E-4,
1229                      1.4985659811966905E-4,     8.561541917201597E-5,
1230                      6.324555320336759E-5,      4.657252408878007E-5,
1231                      2.4166091947189146E-5,     5.590169943749474E-6 };
1232     double yep[] = { 0.03405304685340212,       0.00724989655098609,
1233                      0.007817985674072318,      0.007751728839426725,
1234                      0.006919566460407762,      0.00571192611997039,
1235                      0.005232991496266739,      0.004813003220443552,
1236                      0.00435332057170156,       0.0038838769290491172,
1237                      0.003445692963686695,      0.0030549959083442323,
1238                      0.0027252339349127445,     0.0024367396249907374,
1239                      0.002189794510907359,      0.001969568480657629,
1240                      0.0017906702655709678,     0.0016395731151735808,
1241                      0.0015002999700059986,     0.0013710215169719256,
1242                      0.0012712198865656563,     0.0011812705024675763,
1243                      0.0011035397591387453,     0.0010139033484509261,
1244                      9.121403400793104E-4,      8.132035415564789E-4,
1245                      7.242237223399962E-4,      6.545991139621257E-4,
1246                      6.135144660071188E-4,      5.724508712544685E-4,
1247                      5.692099788303082E-4,      5.126402247190518E-4,
1248                      4.531004303683677E-4,      4.4011362169330773E-4,
1249                      4.1785164831552356E-4,     4.0853396431630995E-4,
1250                      3.8626415831655934E-4,     3.54682957019364E-4,
1251                      3.1780497164141406E-4,     2.7730849247724094E-4,
1252                      2.459674775249769E-4,      2.3706539182259396E-4,
1253                      2.1954498400100151E-4,     2.0068881383873889E-4,
1254                      1.5864425612041553E-4,     1.6058953888718904E-4,
1255                      1.4338758663147937E-4,     1.0245974819410792E-4,
1256                      6.609841147864296E-5,      4.657252408878007E-5,
1257                      2.5079872407968906E-5,     5.941380311005179E-6 };
1258     double ysm[] = { 0.0019,    9.3E-4,
1259                      5.3E-4,    5.8E-4,
1260                      5.2E-4,    5.0E-4,
1261                      4.9E-4,    4.7E-4,
1262                      4.5E-4,    4.3E-4,
1263                      4.2E-4,    3.9E-4,
1264                      3.7E-4,    3.6E-4,
1265                      3.6E-4,    3.4E-4,
1266                      3.3E-4,    3.1E-4,
1267                      3.0E-4,    2.9E-4,
1268                      2.8E-4,    2.7E-4,
1269                      2.7E-4,    2.6E-4,
1270                      2.4E-4,    2.3E-4,
1271                      2.2E-4,    2.1E-4,
1272                      2.0E-4,    1.9E-4,
1273                      1.8E-4,    1.8E-4,
1274                      1.7E-4,    1.6E-4,
1275                      1.5E-4,    1.5E-4,
1276                      1.4E-4,    1.3E-4,
1277                      1.3E-4,    1.2E-4,
1278                      1.1E-4,    1.1E-4,
1279                      1.1E-4,    1.0E-4,
1280                      8.8E-5,    7.5E-5,
1281                      5.6E-5,    3.3E-5,
1282                      2.0E-5,    1.2E-5,
1283                      1.0E-5,    4.1E-6 };
1284     double ysp[] = { 0.0019,    9.3E-4,
1285                      5.3E-4,    5.8E-4,
1286                      5.2E-4,    5.0E-4,
1287                      4.9E-4,    4.7E-4,
1288                      4.5E-4,    4.3E-4,
1289                      4.2E-4,    3.9E-4,
1290                      3.7E-4,    3.6E-4,
1291                      3.6E-4,    3.4E-4,
1292                      3.3E-4,    3.1E-4,
1293                      3.0E-4,    2.9E-4,
1294                      2.8E-4,    2.7E-4,
1295                      2.7E-4,    2.6E-4,
1296                      2.4E-4,    2.3E-4,
1297                      2.2E-4,    2.1E-4,
1298                      2.0E-4,    1.9E-4,
1299                      1.8E-4,    1.8E-4,
1300                      1.7E-4,    1.6E-4,
1301                      1.5E-4,    1.5E-4,
1302                      1.4E-4,    1.3E-4,
1303                      1.3E-4,    1.2E-4,
1304                      1.1E-4,    1.1E-4,
1305                      1.1E-4,    1.0E-4,
1306                      8.8E-5,    7.5E-5,
1307                      5.6E-5,    3.3E-5,
1308                      2.0E-5,    1.2E-5,
1309                      1.0E-5,    4.1E-6 };
1310     int np = 52;
1311     TGraphAsymmErrors* g = new TGraphAsymmErrors(np,
1312                                                  x,
1313                                                  y,
1314                                                  xem,
1315                                                  xep,
1316                                                  yem,
1317                                                  yep);
1318     g->SetName("/HepData/8068/d4x1y1");
1319     g->SetTitle("/HepData/8068/d4x1y1");
1320     return g;
1321   }
1322   TGraphAsymmErrors* CMSsqrts900eta24()
1323   {
1324     // Plot: p8068_d5x1y1
1325     double x[] = { 0.0, 1.0,
1326                    2.0, 3.0,
1327                    4.0, 5.0,
1328                    6.0, 7.0,
1329                    8.0, 9.0,
1330                    10.0,        11.0,
1331                    12.0,        13.0,
1332                    14.0,        15.0,
1333                    16.0,        17.0,
1334                    18.0,        19.0,
1335                    20.0,        21.0,
1336                    22.0,        23.0,
1337                    24.0,        25.0,
1338                    26.0,        27.0,
1339                    28.0,        29.0,
1340                    30.0,        31.0,
1341                    32.0,        33.0,
1342                    34.0,        35.0,
1343                    36.0,        37.0,
1344                    38.0,        39.0,
1345                    40.0,        41.0,
1346                    42.0,        43.0,
1347                    44.0,        45.0,
1348                    46.0,        47.0,
1349                    48.0,        49.0,
1350                    50.0,        51.0,
1351                    52.0,        53.0,
1352                    54.0,        55.0,
1353                    56.0,        57.5,
1354                    60.0,        66.5,
1355                    76.5,        86.5 };
1356     double xem[] = { 0.5,       0.5,
1357                      0.5,       0.5,
1358                      0.5,       0.5,
1359                      0.5,       0.5,
1360                      0.5,       0.5,
1361                      0.5,       0.5,
1362                      0.5,       0.5,
1363                      0.5,       0.5,
1364                      0.5,       0.5,
1365                      0.5,       0.5,
1366                      0.5,       0.5,
1367                      0.5,       0.5,
1368                      0.5,       0.5,
1369                      0.5,       0.5,
1370                      0.5,       0.5,
1371                      0.5,       0.5,
1372                      0.5,       0.5,
1373                      0.5,       0.5,
1374                      0.5,       0.5,
1375                      0.5,       0.5,
1376                      0.5,       0.5,
1377                      0.5,       0.5,
1378                      0.5,       0.5,
1379                      0.5,       0.5,
1380                      0.5,       0.5,
1381                      0.5,       0.5,
1382                      0.5,       0.5,
1383                      0.5,       0.5,
1384                      0.5,       1.0,
1385                      1.5,       5.0,
1386                      5.0,       5.0 };
1387     double xep[] = { 0.5,       0.5,
1388                      0.5,       0.5,
1389                      0.5,       0.5,
1390                      0.5,       0.5,
1391                      0.5,       0.5,
1392                      0.5,       0.5,
1393                      0.5,       0.5,
1394                      0.5,       0.5,
1395                      0.5,       0.5,
1396                      0.5,       0.5,
1397                      0.5,       0.5,
1398                      0.5,       0.5,
1399                      0.5,       0.5,
1400                      0.5,       0.5,
1401                      0.5,       0.5,
1402                      0.5,       0.5,
1403                      0.5,       0.5,
1404                      0.5,       0.5,
1405                      0.5,       0.5,
1406                      0.5,       0.5,
1407                      0.5,       0.5,
1408                      0.5,       0.5,
1409                      0.5,       0.5,
1410                      0.5,       0.5,
1411                      0.5,       0.5,
1412                      0.5,       0.5,
1413                      0.5,       0.5,
1414                      0.5,       0.5,
1415                      0.5,       1.0,
1416                      1.5,       5.0,
1417                      5.0,       5.0 };
1418     double y[] = { 0.0561,      0.02321,
1419                    0.02645,     0.031,
1420                    0.0362,      0.04081,
1421                    0.04402,     0.04548,
1422                    0.04592,     0.04515,
1423                    0.04342,     0.04101,
1424                    0.03836,     0.03573,
1425                    0.03316,     0.03079,
1426                    0.02868,     0.02679,
1427                    0.02506,     0.02343,
1428                    0.02187,     0.02039,
1429                    0.01901,     0.0178,
1430                    0.01668,     0.01556,
1431                    0.01445,     0.01334,
1432                    0.01229,     0.01132,
1433                    0.01045,     0.00967,
1434                    0.00896,     0.00829,
1435                    0.00763,     0.00699,
1436                    0.00637,     0.00578,
1437                    0.00527,     0.00482,
1438                    0.00441,     0.00412,
1439                    0.00363,     0.00328,
1440                    0.00292,     0.00261,
1441                    0.00233,     0.00209,
1442                    0.00185,     0.00164,
1443                    0.00146,     0.00131,
1444                    0.00117,     0.00106,
1445                    9.7E-4,      8.9E-4,
1446                    8.2E-4,      6.63E-4,
1447                    4.53E-4,     2.12E-4,
1448                    7.7E-5,      1.12E-5 };
1449     double yem[] = { 0.01767766952966369,       0.003660737630587584,
1450                      0.005079094407470687,      0.006069810540700591,
1451                      0.006147235150862541,      0.005458580401532985,
1452                      0.004473712105176193,      0.0035970126494078384,
1453                      0.003456848275524976,      0.003228761372415125,
1454                      0.0029797483115189447,     0.002739361239413305,
1455                      0.0025401181074902798,     0.002313114783144148,
1456                      0.0020573040611440983,     0.001820109886792553,
1457                      0.0016324827717314506,     0.001484318025222358,
1458                      0.0013727709204379296,     0.001287866452703851,
1459                      0.001217538500417954,      0.0011279184367674819,
1460                      0.0010412012293500234,     9.741663102366044E-4,
1461                      9.360555539069249E-4,      9.139474820797965E-4,
1462                      9.013878188659973E-4,      8.697700845625814E-4,
1463                      8.190848551890091E-4,      7.433034373659253E-4,
1464                      6.741661516273269E-4,      6.239390995922599E-4,
1465                      5.961543424315552E-4,      5.8309518948453E-4,
1466                      5.738466694161429E-4,      5.515432893255072E-4,
1467                      5.292447448959697E-4,      4.976946855251721E-4,
1468                      4.609772228646444E-4,      4.295346318982906E-4,
1469                      4.0249223594996216E-4,     4.386342439892262E-4,
1470                      3.712142238654117E-4,      3.6674241641784496E-4,
1471                      3.6249137920783716E-4,     3.5341194094144583E-4,
1472                      3.3105890714493693E-4,     3.130495168499705E-4,
1473                      2.8178005607210744E-4,     2.5553864678361276E-4,
1474                      2.3323807579381201E-4,     2.1633307652783938E-4,
1475                      1.8601075237738274E-4,     1.6401219466856724E-4,
1476                      1.562049935181331E-4,      1.562049935181331E-4,
1477                      1.5480633061990717E-4,     1.395886814895821E-4,
1478                      1.0756393447619885E-4,     6.676076692189808E-5,
1479                      2.9966648127543395E-5,     6.551335741663679E-6 };
1480     double yep[] = { 0.09323352401362935,       0.004710169848317574,
1481                      0.005736898116578331,      0.006618164398078972,
1482                      0.006715772479767314,      0.006096630216767292,
1483                      0.00519042387479096,       0.004362247127341595,
1484                      0.004172217635742412,      0.003913693907295255,
1485                      0.003644283194264683,      0.0033638668225719043,
1486                      0.0031145144083789367,     0.0028765604460883488,
1487                      0.002629087294100369,      0.0023903974564912843,
1488                      0.002181604913819182,      0.0020026232796010335,
1489                      0.0018514858897652987,     0.0017280335644888382,
1490                      0.00160822883943797,       0.0014787156589419076,
1491                      0.0013612494260788505,     0.0012539936203984452,
1492                      0.0011763077828527702,     0.0011157060544785082,
1493                      0.001084158659975559,      0.001033247308247159,
1494                      9.630160954002794E-4,      9.244457799135652E-4,
1495                      8.35224520712844E-4,       6.989277502002622E-4,
1496                      6.519202405202648E-4,      6.203224967708329E-4,
1497                      6.10982814815605E-4,       5.88727441181401E-4,
1498                      5.664803615307418E-4,      5.348831648126533E-4,
1499                      4.976946855251721E-4,      4.477722635447622E-4,
1500                      4.204759208325728E-4,      3.9357337308308855E-4,
1501                      3.981205847478877E-4,      3.8483762809787716E-4,
1502                      3.807886552931954E-4,      3.716180835212409E-4,
1503                      3.584689665786984E-4,      3.4928498393145964E-4,
1504                      3.1780497164141406E-4,     2.9068883707497264E-4,
1505                      2.505992817228334E-4,      2.2472205054244234E-4,
1506                      2.0248456731316588E-4,     1.8027756377319944E-4,
1507                      1.6401219466856724E-4,     1.6401219466856724E-4,
1508                      1.5640012787718557E-4,     1.4223923509355636E-4,
1509                      1.0288342918079667E-4,     6.86804193347711E-5,
1510                      3.361547262794322E-5,      7.071067811865475E-6 };
1511     double ysm[] = { 0.0025,    8.1E-4,
1512                      4.4E-4,    4.9E-4,
1513                      4.6E-4,    4.5E-4,
1514                      4.6E-4,    4.4E-4,
1515                      4.3E-4,    4.3E-4,
1516                      4.2E-4,    4.0E-4,
1517                      3.9E-4,    3.9E-4,
1518                      3.9E-4,    3.8E-4,
1519                      3.7E-4,    3.6E-4,
1520                      3.4E-4,    3.1E-4,
1521                      3.0E-4,    2.9E-4,
1522                      2.9E-4,    2.9E-4,
1523                      2.9E-4,    2.8E-4,
1524                      2.7E-4,    2.6E-4,
1525                      2.5E-4,    2.5E-4,
1526                      2.4E-4,    2.3E-4,
1527                      2.3E-4,    2.2E-4,
1528                      2.2E-4,    2.1E-4,
1529                      2.0E-4,    1.9E-4,
1530                      1.9E-4,    1.8E-4,
1531                      1.8E-4,    1.8E-4,
1532                      1.7E-4,    1.6E-4,
1533                      1.5E-4,    1.5E-4,
1534                      1.4E-4,    1.4E-4,
1535                      1.3E-4,    1.3E-4,
1536                      1.2E-4,    1.2E-4,
1537                      1.1E-4,    1.0E-4,
1538                      1.0E-4,    1.0E-4,
1539                      9.4E-5,    6.6E-5,
1540                      3.7E-5,    1.9E-5,
1541                      1.3E-5,    3.4E-6 };
1542     double ysp[] = { 0.0025,    8.1E-4,
1543                      4.4E-4,    4.9E-4,
1544                      4.6E-4,    4.5E-4,
1545                      4.6E-4,    4.4E-4,
1546                      4.3E-4,    4.3E-4,
1547                      4.2E-4,    4.0E-4,
1548                      3.9E-4,    3.9E-4,
1549                      3.9E-4,    3.8E-4,
1550                      3.7E-4,    3.6E-4,
1551                      3.4E-4,    3.1E-4,
1552                      3.0E-4,    2.9E-4,
1553                      2.9E-4,    2.9E-4,
1554                      2.9E-4,    2.8E-4,
1555                      2.7E-4,    2.6E-4,
1556                      2.5E-4,    2.5E-4,
1557                      2.4E-4,    2.3E-4,
1558                      2.3E-4,    2.2E-4,
1559                      2.2E-4,    2.1E-4,
1560                      2.0E-4,    1.9E-4,
1561                      1.9E-4,    1.8E-4,
1562                      1.8E-4,    1.8E-4,
1563                      1.7E-4,    1.6E-4,
1564                      1.5E-4,    1.5E-4,
1565                      1.4E-4,    1.4E-4,
1566                      1.3E-4,    1.3E-4,
1567                      1.2E-4,    1.2E-4,
1568                      1.1E-4,    1.0E-4,
1569                      1.0E-4,    1.0E-4,
1570                      9.4E-5,    6.6E-5,
1571                      3.7E-5,    1.9E-5,
1572                      1.3E-5,    3.4E-6 };
1573     int np = 62;
1574     TGraphAsymmErrors* g = new TGraphAsymmErrors(np,
1575                                                  x,
1576                                                  y,
1577                                                  xem,
1578                                                  xep,
1579                                                  yem,
1580                                                  yep);
1581     g->SetName("/HepData/8068/d5x1y1");
1582     g->SetTitle("/HepData/8068/d5x1y1");
1583     return g;
1584   }
1585   TGraphAsymmErrors* CMSsqrts900eta20()
1586   {
1587     // Plot: p8068_d6x1y1
1588     double x[] = { 0.0, 1.0,
1589                    2.0, 3.0,
1590                    4.0, 5.0,
1591                    6.0, 7.0,
1592                    8.0, 9.0,
1593                    10.0,        11.0,
1594                    12.0,        13.0,
1595                    14.0,        15.0,
1596                    16.0,        17.0,
1597                    18.0,        19.0,
1598                    20.0,        21.0,
1599                    22.0,        23.0,
1600                    24.0,        25.0,
1601                    26.0,        27.0,
1602                    28.0,        29.0,
1603                    30.0,        31.0,
1604                    32.0,        33.0,
1605                    34.0,        35.0,
1606                    36.0,        37.0,
1607                    38.0,        39.0,
1608                    40.0,        41.0,
1609                    42.0,        43.0,
1610                    44.0,        45.0,
1611                    46.0,        47.0,
1612                    48.0,        49.0,
1613                    50.0,        51.0,
1614                    52.0,        53.0,
1615                    54.0,        55.0,
1616                    56.0,        57.0,
1617                    58.0,        59.0,
1618                    60.0,        61.0,
1619                    62.5,        64.5,
1620                    67.5,        74.5,
1621                    84.5,        94.5 };
1622     double xem[] = { 0.5,       0.5,
1623                      0.5,       0.5,
1624                      0.5,       0.5,
1625                      0.5,       0.5,
1626                      0.5,       0.5,
1627                      0.5,       0.5,
1628                      0.5,       0.5,
1629                      0.5,       0.5,
1630                      0.5,       0.5,
1631                      0.5,       0.5,
1632                      0.5,       0.5,
1633                      0.5,       0.5,
1634                      0.5,       0.5,
1635                      0.5,       0.5,
1636                      0.5,       0.5,
1637                      0.5,       0.5,
1638                      0.5,       0.5,
1639                      0.5,       0.5,
1640                      0.5,       0.5,
1641                      0.5,       0.5,
1642                      0.5,       0.5,
1643                      0.5,       0.5,
1644                      0.5,       0.5,
1645                      0.5,       0.5,
1646                      0.5,       0.5,
1647                      0.5,       0.5,
1648                      0.5,       0.5,
1649                      0.5,       0.5,
1650                      0.5,       0.5,
1651                      0.5,       0.5,
1652                      0.5,       0.5,
1653                      1.0,       1.0,
1654                      2.0,       5.0,
1655                      5.0,       5.0 };
1656     double xep[] = { 0.5,       0.5,
1657                      0.5,       0.5,
1658                      0.5,       0.5,
1659                      0.5,       0.5,
1660                      0.5,       0.5,
1661                      0.5,       0.5,
1662                      0.5,       0.5,
1663                      0.5,       0.5,
1664                      0.5,       0.5,
1665                      0.5,       0.5,
1666                      0.5,       0.5,
1667                      0.5,       0.5,
1668                      0.5,       0.5,
1669                      0.5,       0.5,
1670                      0.5,       0.5,
1671                      0.5,       0.5,
1672                      0.5,       0.5,
1673                      0.5,       0.5,
1674                      0.5,       0.5,
1675                      0.5,       0.5,
1676                      0.5,       0.5,
1677                      0.5,       0.5,
1678                      0.5,       0.5,
1679                      0.5,       0.5,
1680                      0.5,       0.5,
1681                      0.5,       0.5,
1682                      0.5,       0.5,
1683                      0.5,       0.5,
1684                      0.5,       0.5,
1685                      0.5,       0.5,
1686                      0.5,       0.5,
1687                      1.0,       1.0,
1688                      2.0,       5.0,
1689                      5.0,       5.0 };
1690     double y[] = { 0.0494,      0.01789,
1691                    0.01895,     0.02174,
1692                    0.0255,      0.02961,
1693                    0.0335,      0.03646,
1694                    0.03826,     0.03906,
1695                    0.0392,      0.03868,
1696                    0.03753,     0.03596,
1697                    0.0341,      0.03206,
1698                    0.03,        0.02802,
1699                    0.02616,     0.02448,
1700                    0.023,       0.0217,
1701                    0.02058,     0.01959,
1702                    0.01866,     0.01776,
1703                    0.01685,     0.01595,
1704                    0.01504,     0.01415,
1705                    0.01326,     0.01241,
1706                    0.01161,     0.01087,
1707                    0.01015,     0.00948,
1708                    0.00887,     0.00829,
1709                    0.00777,     0.00734,
1710                    0.00681,     0.00624,
1711                    0.00578,     0.00535,
1712                    0.00494,     0.00457,
1713                    0.00422,     0.00388,
1714                    0.00356,     0.00326,
1715                    0.00298,     0.00274,
1716                    0.00253,     0.00234,
1717                    0.00212,     0.00189,
1718                    0.00167,     0.0015,
1719                    0.00136,     0.00123,
1720                    0.00112,     0.001041,
1721                    9.17E-4,     7.64E-4,
1722                    4.92E-4,     2.45E-4,
1723                    9.9E-5,      1.64E-5 };
1724     double yem[] = { 0.031045933711196384,      0.0025678006153126453,
1725                      0.003808017857100988,      0.004928792955683978,
1726                      0.005475372133471842,      0.005444713031923721,
1727                      0.004928792955683978,      0.0041622710147226115,
1728                      0.003405994715204356,      0.0030985964564621835,
1729                      0.0029811742652854096,     0.002811547616527239,
1730                      0.0026404734423962684,     0.002492308167141455,
1731                      0.0023525518060183073,     0.0021654098919142305,
1732                      0.001967053634245899,      0.0017886866690396059,
1733                      0.0016107451691686056,     0.0014552319402761885,
1734                      0.001326989073052224,      0.001225275479229059,
1735                      0.001164817582284883,      0.0011168258592994702,
1736                      0.0010756393447619887,     0.001027861858422619,
1737                      9.7082439194738E-4,        9.202716990106781E-4,
1738                      8.825531145489205E-4,      8.509406559801923E-4,
1739                      8.228000972289684E-4,      8.099382692526635E-4,
1740                      7.912016177940992E-4,      7.725283166331187E-4,
1741                      7.316419889536139E-4,      6.815423684555495E-4,
1742                      6.407807737440318E-4,      5.950630218724736E-4,
1743                      5.636488268416782E-4,      5.636488268416782E-4,
1744                      5.322593352868506E-4,      4.919349550499538E-4,
1745                      4.7853944456021594E-4,     4.7423622805517506E-4,
1746                      4.651881339845203E-4,      4.428317965096906E-4,
1747                      4.248529157249601E-4,      3.9824615503479755E-4,
1748                      3.671511950137164E-4,      3.3615472627943223E-4,
1749                      3.138470965295043E-4,      3.138470965295043E-4,
1750                      3.176476034853718E-4,      3.3541019662496844E-4,
1751                      3.3105890714493693E-4,     2.996664812754339E-4,
1752                      2.641968962724581E-4,      2.3853720883753126E-4,
1753                      2.1633307652783938E-4,     1.9416487838947602E-4,
1754                      1.6401219466856724E-4,     1.5181897114655994E-4,
1755                      1.5966527487215246E-4,     1.3961733416735901E-4,
1756                      9.740636529508736E-5,      6.800735254367721E-5,
1757                      3.733630940518893E-5,      9.437160589923222E-6 };
1758     double yep[] = { 0.027627884464793896,      0.0038148263394288343,
1759                      0.004395600072800072,      0.005347317084295637,
1760                      0.005874325493194942,      0.0058935897380119695,
1761                      0.005446999173857106,      0.004729587719875803,
1762                      0.004031935019317648,      0.0037237615390892046,
1763                      0.0035759474269066098,     0.00339607125955861,
1764                      0.0032050585018061684,     0.003026549190084311,
1765                      0.0028468403537957655,     0.00266865134478073,
1766                      0.002469412885687608,      0.0022703523955544874,
1767                      0.0020813697413001857,     0.0019043371550227129,
1768                      0.00175524927004685,       0.001643471934655411,
1769                      0.0015533190271158081,     0.001475127113166862,
1770                      0.0014046351839534703,     0.0013267252918370102,
1771                      0.0012490796611905903,     0.0011691449867317568,
1772                      0.0011208925015361642,     0.0011472575996697516,
1773                      9.932774033471214E-4,      9.52102935611481E-4,
1774                      9.139474820797965E-4,      8.75956619930462E-4,
1775                      8.34865258589672E-4,       7.749193506423748E-4,
1776                      7.244998274671983E-4,      6.685057965343307E-4,
1777                      6.092618484691126E-4,      5.727128425310541E-4,
1778                      5.412947441089743E-4,      5.280151512977634E-4,
1779                      5.147815070493501E-4,      5.015974481593781E-4,
1780                      4.924428900898052E-4,      4.792702786528704E-4,
1781                      4.7010637094172637E-4,     4.428317965096906E-4,
1782                      4.204759208325728E-4,      3.8910152916687437E-4,
1783                      3.6674241641784496E-4,     3.488552708502481E-4,
1784                      3.2649655434629013E-4,     3.0886890422961E-4,
1785                      3.04138126514911E-4,       2.996664812754339E-4,
1786                      2.9068883707497264E-4,     2.641968962724581E-4,
1787                      2.418677324489565E-4,      2.1095023109728988E-4,
1788                      1.972308292331602E-4,      1.739482681718907E-4,
1789                      1.4475496537252186E-4,     1.2083045973594572E-4,
1790                      1.097679370308106E-4,      6.992138442565336E-5,
1791                      3.54682957019364E-5,       9.078546139112804E-6 };
1792     double ysm[] = { 0.0063,    8.0E-4,
1793                      3.7E-4,    4.3E-4,
1794                      4.1E-4,    4.0E-4,
1795                      4.3E-4,    4.3E-4,
1796                      4.2E-4,    4.2E-4,
1797                      4.3E-4,    4.2E-4,
1798                      4.0E-4,    4.0E-4,
1799                      3.9E-4,    3.9E-4,
1800                      3.8E-4,    3.7E-4,
1801                      3.6E-4,    3.6E-4,
1802                      3.5E-4,    3.3E-4,
1803                      3.2E-4,    3.2E-4,
1804                      3.1E-4,    3.1E-4,
1805                      3.1E-4,    3.0E-4,
1806                      3.0E-4,    2.9E-4,
1807                      2.9E-4,    2.8E-4,
1808                      2.8E-4,    2.8E-4,
1809                      2.7E-4,    2.6E-4,
1810                      2.5E-4,    2.5E-4,
1811                      2.4E-4,    2.4E-4,
1812                      2.3E-4,    2.2E-4,
1813                      2.1E-4,    2.0E-4,
1814                      2.0E-4,    1.9E-4,
1815                      1.9E-4,    1.9E-4,
1816                      1.8E-4,    1.7E-4,
1817                      1.6E-4,    1.6E-4,
1818                      1.5E-4,    1.5E-4,
1819                      1.4E-4,    1.3E-4,
1820                      1.3E-4,    1.3E-4,
1821                      1.2E-4,    1.1E-4,
1822                      1.0E-4,    9.3E-5,
1823                      7.3E-5,    5.8E-5,
1824                      3.2E-5,    2.0E-5,
1825                      1.3E-5,    4.1E-6 };
1826     double ysp[] = { 0.0063,    8.0E-4,
1827                      3.7E-4,    4.3E-4,
1828                      4.1E-4,    4.0E-4,
1829                      4.3E-4,    4.3E-4,
1830                      4.2E-4,    4.2E-4,
1831                      4.3E-4,    4.2E-4,
1832                      4.0E-4,    4.0E-4,
1833                      3.9E-4,    3.9E-4,
1834                      3.8E-4,    3.7E-4,
1835                      3.6E-4,    3.6E-4,
1836                      3.5E-4,    3.3E-4,
1837                      3.2E-4,    3.2E-4,
1838                      3.1E-4,    3.1E-4,
1839                      3.1E-4,    3.0E-4,
1840                      3.0E-4,    2.9E-4,
1841                      2.9E-4,    2.8E-4,
1842                      2.8E-4,    2.8E-4,
1843                      2.7E-4,    2.6E-4,
1844                      2.5E-4,    2.5E-4,
1845                      2.4E-4,    2.4E-4,
1846                      2.3E-4,    2.2E-4,
1847                      2.1E-4,    2.0E-4,
1848                      2.0E-4,    1.9E-4,
1849                      1.9E-4,    1.9E-4,
1850                      1.8E-4,    1.7E-4,
1851                      1.6E-4,    1.6E-4,
1852                      1.5E-4,    1.5E-4,
1853                      1.4E-4,    1.3E-4,
1854                      1.3E-4,    1.3E-4,
1855                      1.2E-4,    1.1E-4,
1856                      1.0E-4,    9.3E-5,
1857                      7.3E-5,    5.8E-5,
1858                      3.2E-5,    2.0E-5,
1859                      1.3E-5,    4.1E-6 };
1860     int np = 68;
1861     TGraphAsymmErrors* g = new TGraphAsymmErrors(np,
1862                                                  x,
1863                                                  y,
1864                                                  xem,
1865                                                  xep,
1866                                                  yem,
1867                                                  yep);
1868     g->SetName("/HepData/8068/d6x1y1");
1869     g->SetTitle("/HepData/8068/d6x1y1");
1870     return   g;
1871   }
1872   TGraphAsymmErrors* GetALICE(Double_t eta, UShort_t sNN)
1873   {
1874     Double_t aEta = TMath::Abs(eta);
1875     TGraphAsymmErrors* g = 0;
1876     switch (sNN) { 
1877     case 900:
1878       if      (aEta <= 0.51) g = ALICEsqrts900eta05();
1879       else if (aEta <= 1.01) g = ALICEsqrts900eta10();
1880       else if (aEta <= 1.31) g = ALICEsqrts900eta13();
1881       break;
1882     }
1883     if (g) { 
1884       g->SetMarkerColor(kALICEColor);
1885     }
1886     return g;
1887   }
1888   TGraphAsymmErrors* ALICEsqrts900eta05()
1889   {
1890     // Plot: p7742_d8x1y1
1891     double x[] = { 0.0, 1.0,
1892                    2.0, 3.0,
1893                    4.0, 5.0,
1894                    6.0, 7.0,
1895                    8.0, 9.0,
1896                    10.0,        11.0,
1897                    12.0,        13.0,
1898                    14.0,        15.0,
1899                    16.0,        17.0,
1900                    18.0,        19.0,
1901                    20.0,        21.5,
1902                    23.5,        25.5 };
1903     double xem[] = { 0.5,       0.5,
1904                      0.5,       0.5,
1905                      0.5,       0.5,
1906                      0.5,       0.5,
1907                      0.5,       0.5,
1908                      0.5,       0.5,
1909                      0.5,       0.5,
1910                      0.5,       0.5,
1911                      0.5,       0.5,
1912                      0.5,       0.5,
1913                      0.5,       1.0,
1914                      1.0,       1.0 };
1915     double xep[] = { 0.5,       0.5,
1916                      0.5,       0.5,
1917                      0.5,       0.5,
1918                      0.5,       0.5,
1919                      0.5,       0.5,
1920                      0.5,       0.5,
1921                      0.5,       0.5,
1922                      0.5,       0.5,
1923                      0.5,       0.5,
1924                      0.5,       0.5,
1925                      0.5,       1.0,
1926                      1.0,       1.0 };
1927     double y[] = { 0.179767,    0.155985,
1928                    0.140806,    0.120933,
1929                    0.097273,    0.075258,
1930                    0.057395,    0.043794,
1931                    0.033212,    0.024939,
1932                    0.018642,    0.013927,
1933                    0.010337,    0.007693,
1934                    0.005665,    0.004134,
1935                    0.002994,    0.002144,
1936                    0.001527,    0.001093,
1937                    8.03E-4,     4.82E-4,
1938                    2.56E-4,     1.02E-4 };
1939     double yem[] = { 0.028627623478032542,      0.006826681770816624,
1940                      0.004736912179891031,      0.005286866936097409,
1941                      0.004605827830043151,      0.003753897441326814,
1942                      0.003172958871463669,      0.0023132784095305087,
1943                      0.0017387768689512751,     0.0012885437516824954,
1944                      9.891637882575362E-4,      7.64476945368531E-4,
1945                      5.769662035162892E-4,      4.500277769204919E-4,
1946                      3.7107950630558943E-4,     3.1458703088334716E-4,
1947                      2.7004073766748605E-4,     2.210701246211256E-4,
1948                      1.7819090885900997E-4,     1.3576450198781714E-4,
1949                      1.2447088012864694E-4,     9.762171889492625E-5,
1950                      6.095900261651268E-5,      3.4828149534536E-5 };
1951     double yep[] = { 0.028627623478032542,      0.006826681770816624,
1952                      0.004736912179891031,      0.005286866936097409,
1953                      0.004605827830043151,      0.003753897441326814,
1954                      0.003172958871463669,      0.0023132784095305087,
1955                      0.0017387768689512751,     0.0012885437516824954,
1956                      9.891637882575362E-4,      7.64476945368531E-4,
1957                      5.769662035162892E-4,      4.500277769204919E-4,
1958                      3.7107950630558943E-4,     3.1458703088334716E-4,
1959                      2.7004073766748605E-4,     2.210701246211256E-4,
1960                      1.7819090885900997E-4,     1.3576450198781714E-4,
1961                      1.2447088012864694E-4,     9.762171889492625E-5,
1962                      6.095900261651268E-5,      3.4828149534536E-5 };
1963     double ysm[] = { 0.003595,  0.00312,
1964                      0.002816,  0.002419,
1965                      0.001945,  0.001505,
1966                      0.001148,  8.76E-4,
1967                      6.64E-4,   4.99E-4,
1968                      3.97E-4,   3.57E-4,
1969                      3.03E-4,   2.66E-4,
1970                      2.34E-4,   2.01E-4,
1971                      1.71E-4,   1.46E-4,
1972                      1.26E-4,   9.6E-5,
1973                      9.7E-5,    7.1E-5,
1974                      4.6E-5,    2.7E-5 };
1975     double ysp[] = { 0.003595,  0.00312,
1976                      0.002816,  0.002419,
1977                      0.001945,  0.001505,
1978                      0.001148,  8.76E-4,
1979                      6.64E-4,   4.99E-4,
1980                      3.97E-4,   3.57E-4,
1981                      3.03E-4,   2.66E-4,
1982                      2.34E-4,   2.01E-4,
1983                      1.71E-4,   1.46E-4,
1984                      1.26E-4,   9.6E-5,
1985                      9.7E-5,    7.1E-5,
1986                      4.6E-5,    2.7E-5 };
1987     int np = 24;
1988     TGraphAsymmErrors* g = new TGraphAsymmErrors(np,
1989                                                  x,
1990                                                  y,
1991                                                  xem,
1992                                                  xep,
1993                                                  yem,
1994                                                  yep);
1995     g->SetName("/HepData/7742/d8x1y1");
1996     g->SetTitle("/HepData/7742/d8x1y1");
1997     return g;
1998   }
1999   TGraphAsymmErrors* ALICEsqrts900eta10()
2000   {
2001     // Plot: p7742_d9x1y1
2002     double x[] = { 0.0, 1.0,
2003                    2.0, 3.0,
2004                    4.0, 5.0,
2005                    6.0, 7.0,
2006                    8.0, 9.0,
2007                    10.0,        11.0,
2008                    12.0,        13.0,
2009                    14.0,        15.0,
2010                    16.0,        17.0,
2011                    18.0,        19.0,
2012                    20.0,        21.0,
2013                    22.0,        23.0,
2014                    24.0,        25.0,
2015                    26.0,        27.0,
2016                    28.0,        29.0,
2017                    30.0,        31.0,
2018                    32.0,        33.0,
2019                    34.0,        35.0,
2020                    36.0,        37.0,
2021                    38.0,        39.0,
2022                    40.0,        41.5 };
2023     double xem[] = { 0.5,       0.5,
2024                      0.5,       0.5,
2025                      0.5,       0.5,
2026                      0.5,       0.5,
2027                      0.5,       0.5,
2028                      0.5,       0.5,
2029                      0.5,       0.5,
2030                      0.5,       0.5,
2031                      0.5,       0.5,
2032                      0.5,       0.5,
2033                      0.5,       0.5,
2034                      0.5,       0.5,
2035                      0.5,       0.5,
2036                      0.5,       0.5,
2037                      0.5,       0.5,
2038                      0.5,       0.5,
2039                      0.5,       0.5,
2040                      0.5,       0.5,
2041                      0.5,       0.5,
2042                      0.5,       0.5,
2043                      0.5,       1.0 };
2044     double xep[] = { 0.5,       0.5,
2045                      0.5,       0.5,
2046                      0.5,       0.5,
2047                      0.5,       0.5,
2048                      0.5,       0.5,
2049                      0.5,       0.5,
2050                      0.5,       0.5,
2051                      0.5,       0.5,
2052                      0.5,       0.5,
2053                      0.5,       0.5,
2054                      0.5,       0.5,
2055                      0.5,       0.5,
2056                      0.5,       0.5,
2057                      0.5,       0.5,
2058                      0.5,       0.5,
2059                      0.5,       0.5,
2060                      0.5,       0.5,
2061                      0.5,       0.5,
2062                      0.5,       0.5,
2063                      0.5,       0.5,
2064                      0.5,       1.0 };
2065     double y[] = { 0.092396,    0.076087,
2066                    0.073233,    0.078506,
2067                    0.080885,    0.077084,
2068                    0.070058,    0.062258,
2069                    0.054437,    0.047195,
2070                    0.040978,    0.035352,
2071                    0.03048,     0.026336,
2072                    0.022788,    0.019725,
2073                    0.017071,    0.014674,
2074                    0.012509,    0.010593,
2075                    0.008935,    0.007527,
2076                    0.006361,    0.005416,
2077                    0.004665,    0.004041,
2078                    0.003519,    0.00306,
2079                    0.002637,    0.002234,
2080                    0.001856,    0.001512,
2081                    0.001213,    9.62E-4,
2082                    7.61E-4,     6.02E-4,
2083                    4.84E-4,     3.93E-4,
2084                    3.27E-4,     2.76E-4,
2085                    2.37E-4,     1.7E-4 };
2086     double yem[] = { 0.021888152137629163,      0.0066076761421849355,
2087                      0.004451948000594796,      0.0034909631908686747,
2088                      0.002952765483407038,      0.0028889466938661224,
2089                      0.0029957812002881653,     0.0032637882897026274,
2090                      0.002922475833946279,      0.0026227742945209753,
2091                      0.0023487871338203465,     0.002091141554271255,
2092                      0.0017347841364273539,     0.0014762689456870655,
2093                      0.0012594490859101847,     0.0010506721658062519,
2094                      9.019456746389995E-4,      7.836938177630343E-4,
2095                      6.432239112470866E-4,      5.679656679765071E-4,
2096                      4.967293025381128E-4,      4.475187146924696E-4,
2097                      4.040519768544636E-4,      3.3646693745448454E-4,
2098                      2.9206163733020465E-4,     2.820017730440715E-4,
2099                      2.6982401672201087E-4,     2.5470178640912594E-4,
2100                      2.3519353732617736E-4,     2.1914607000811127E-4,
2101                      1.9727392123643713E-4,     1.7402586014727813E-4,
2102                      1.5060212481900778E-4,     1.3009611831257687E-4,
2103                      1.1269871339105873E-4,     9.693812459502196E-5,
2104                      8.48528137423857E-5,       7.427651041883969E-5,
2105                      6.726812023536856E-5,      6.030754513325841E-5,
2106                      5.544366510251645E-5,      4.601086828130936E-5 };
2107     double yep[] = { 0.021888152137629163,      0.0066076761421849355,
2108                      0.004451948000594796,      0.0034909631908686747,
2109                      0.002952765483407038,      0.0028889466938661224,
2110                      0.0029957812002881653,     0.0032637882897026274,
2111                      0.002922475833946279,      0.0026227742945209753,
2112                      0.0023487871338203465,     0.002091141554271255,
2113                      0.0017347841364273539,     0.0014762689456870655,
2114                      0.0012594490859101847,     0.0010506721658062519,
2115                      9.019456746389995E-4,      7.836938177630343E-4,
2116                      6.432239112470866E-4,      5.679656679765071E-4,
2117                      4.967293025381128E-4,      4.475187146924696E-4,
2118                      4.040519768544636E-4,      3.3646693745448454E-4,
2119                      2.9206163733020465E-4,     2.820017730440715E-4,
2120                      2.6982401672201087E-4,     2.5470178640912594E-4,
2121                      2.3519353732617736E-4,     2.1914607000811127E-4,
2122                      1.9727392123643713E-4,     1.7402586014727813E-4,
2123                      1.5060212481900778E-4,     1.3009611831257687E-4,
2124                      1.1269871339105873E-4,     9.693812459502196E-5,
2125                      8.48528137423857E-5,       7.427651041883969E-5,
2126                      6.726812023536856E-5,      6.030754513325841E-5,
2127                      5.544366510251645E-5,      4.601086828130936E-5 };
2128     double ysm[] = { 0.001848,  0.001522,
2129                      0.001465,  0.00157,
2130                      0.001618,  0.001542,
2131                      0.001401,  0.001245,
2132                      0.001089,  9.44E-4,
2133                      8.2E-4,    7.07E-4,
2134                      6.1E-4,    5.27E-4,
2135                      4.56E-4,   3.94E-4,
2136                      3.41E-4,   3.0E-4,
2137                      2.76E-4,   2.56E-4,
2138                      2.38E-4,   2.23E-4,
2139                      2.07E-4,   1.91E-4,
2140                      1.8E-4,    1.7E-4,
2141                      1.59E-4,   1.47E-4,
2142                      1.3E-4,    1.25E-4,
2143                      1.14E-4,   1.02E-4,
2144                      9.1E-5,    8.2E-5,
2145                      7.4E-5,    6.6E-5,
2146                      6.0E-5,    5.4E-5,
2147                      5.0E-5,    4.6E-5,
2148                      4.3E-5,    3.4E-5 };
2149     double ysp[] = { 0.001848,  0.001522,
2150                      0.001465,  0.00157,
2151                      0.001618,  0.001542,
2152                      0.001401,  0.001245,
2153                      0.001089,  9.44E-4,
2154                      8.2E-4,    7.07E-4,
2155                      6.1E-4,    5.27E-4,
2156                      4.56E-4,   3.94E-4,
2157                      3.41E-4,   3.0E-4,
2158                      2.76E-4,   2.56E-4,
2159                      2.38E-4,   2.23E-4,
2160                      2.07E-4,   1.91E-4,
2161                      1.8E-4,    1.7E-4,
2162                      1.59E-4,   1.47E-4,
2163                      1.3E-4,    1.25E-4,
2164                      1.14E-4,   1.02E-4,
2165                      9.1E-5,    8.2E-5,
2166                      7.4E-5,    6.6E-5,
2167                      6.0E-5,    5.4E-5,
2168                      5.0E-5,    4.6E-5,
2169                      4.3E-5,    3.4E-5 };
2170     int np = 42;
2171     TGraphAsymmErrors* g = new TGraphAsymmErrors(np,
2172                                                  x,
2173                                                  y,
2174                                                  xem,
2175                                                  xep,
2176                                                  yem,
2177                                                  yep);
2178     g->SetName("/HepData/7742/d9x1y1");
2179     g->SetTitle("/HepData/7742/d9x1y1");
2180     return g;
2181   }
2182   TGraphAsymmErrors* ALICEsqrts900eta13()
2183   {
2184     // Plot: p7742_d10x1y1
2185     double x[] = { 0.0, 1.0,
2186                    2.0, 3.0,
2187                    4.0, 5.0,
2188                    6.0, 7.0,
2189                    8.0, 9.0,
2190                    10.0,        11.0,
2191                    12.0,        13.0,
2192                    14.0,        15.0,
2193                    16.0,        17.0,
2194                    18.0,        19.0,
2195                    20.0,        21.0,
2196                    22.0,        23.0,
2197                    24.0,        25.0,
2198                    26.0,        27.0,
2199                    28.0,        29.0,
2200                    30.0,        31.0,
2201                    32.0,        33.0,
2202                    34.0,        35.0,
2203                    36.0,        37.0,
2204                    38.0,        39.0,
2205                    40.0,        41.5,
2206                    43.5,        45.5,
2207                    47.5,        49.5,
2208                    51.5,        53.5 };
2209     double xem[] = { 0.5,       0.5,
2210                      0.5,       0.5,
2211                      0.5,       0.5,
2212                      0.5,       0.5,
2213                      0.5,       0.5,
2214                      0.5,       0.5,
2215                      0.5,       0.5,
2216                      0.5,       0.5,
2217                      0.5,       0.5,
2218                      0.5,       0.5,
2219                      0.5,       0.5,
2220                      0.5,       0.5,
2221                      0.5,       0.5,
2222                      0.5,       0.5,
2223                      0.5,       0.5,
2224                      0.5,       0.5,
2225                      0.5,       0.5,
2226                      0.5,       0.5,
2227                      0.5,       0.5,
2228                      0.5,       0.5,
2229                      0.5,       1.0,
2230                      1.0,       1.0,
2231                      1.0,       1.0,
2232                      1.0,       1.0 };
2233     double xep[] = { 0.5,       0.5,
2234                      0.5,       0.5,
2235                      0.5,       0.5,
2236                      0.5,       0.5,
2237                      0.5,       0.5,
2238                      0.5,       0.5,
2239                      0.5,       0.5,
2240                      0.5,       0.5,
2241                      0.5,       0.5,
2242                      0.5,       0.5,
2243                      0.5,       0.5,
2244                      0.5,       0.5,
2245                      0.5,       0.5,
2246                      0.5,       0.5,
2247                      0.5,       0.5,
2248                      0.5,       0.5,
2249                      0.5,       0.5,
2250                      0.5,       0.5,
2251                      0.5,       0.5,
2252                      0.5,       0.5,
2253                      0.5,       1.0,
2254                      1.0,       1.0,
2255                      1.0,       1.0,
2256                      1.0,       1.0 };
2257     double y[] = { 0.068695,    0.056382,
2258                    0.049828,    0.056116,
2259                    0.063345,    0.066198,
2260                    0.065598,    0.061117,
2261                    0.055042,    0.04927,
2262                    0.044132,    0.039615,
2263                    0.035906,    0.03262,
2264                    0.029489,    0.026657,
2265                    0.023839,    0.021302,
2266                    0.018884,    0.016732,
2267                    0.014707,    0.012944,
2268                    0.01137,     0.009982,
2269                    0.008753,    0.007661,
2270                    0.006711,    0.005891,
2271                    0.005179,    0.004572,
2272                    0.004064,    0.003636,
2273                    0.003278,    0.002968,
2274                    0.002677,    0.002392,
2275                    0.002111,    0.001829,
2276                    0.001561,    0.001319,
2277                    0.001115,    7.93E-4,
2278                    5.24E-4,     3.51E-4,
2279                    2.2E-4,      1.56E-4,
2280                    1.27E-4,     8.5E-5 };
2281     double yem[] = { 0.021322725646595934,      0.007630831737104416,
2282                      0.004038016592338372,      0.0036354708085748677,
2283                      0.0035003511252444373,     0.0030936373413831173,
2284                      0.0026374775828431228,     0.002920906195001818,
2285                      0.00276560481631053,       0.002864668392676542,
2286                      0.0026843833556330957,     0.0022856071403458645,
2287                      0.002325611317481922,      0.002006865217198205,
2288                      0.0017203360136903488,     0.0014989629748596194,
2289                      0.0012394615766533467,     0.0011637718848640398,
2290                      9.151568171630477E-4,      9.078199160626517E-4,
2291                      7.98723982361867E-4,       6.967302203866285E-4,
2292                      6.308502199413107E-4,      5.846990678973245E-4,
2293                      5.4516236113657E-4,        5.460009157501477E-4,
2294                      4.930608481719068E-4,      4.3796118549478783E-4,
2295                      3.4394330928221294E-4,     3.2323366161339073E-4,
2296                      3.0869078379504626E-4,     2.9443165590676553E-4,
2297                      2.756320010448714E-4,      2.630304164920856E-4,
2298                      2.5628889948649746E-4,     2.4142286552851616E-4,
2299                      2.245551157288562E-4,      2.0678491240900531E-4,
2300                      1.8828170383762728E-4,     1.7255723688098393E-4,
2301                      1.5911316727411343E-4,     1.3023056476879765E-4,
2302                      1.0761505470890214E-4,     8.62670273047588E-5,
2303                      6.129437168288782E-5,      6.037383539249432E-5,
2304                      3.535533905932738E-5,      3.8078865529319545E-5 };
2305     double yep[] = { 0.021322725646595934,      0.007630831737104416,
2306                      0.004038016592338372,      0.0036354708085748677,
2307                      0.0035003511252444373,     0.0030936373413831173,
2308                      0.0026374775828431228,     0.002920906195001818,
2309                      0.00276560481631053,       0.002864668392676542,
2310                      0.0026843833556330957,     0.0022856071403458645,
2311                      0.002325611317481922,      0.002006865217198205,
2312                      0.0017203360136903488,     0.0014989629748596194,
2313                      0.0012394615766533467,     0.0011637718848640398,
2314                      9.151568171630477E-4,      9.078199160626517E-4,
2315                      7.98723982361867E-4,       6.967302203866285E-4,
2316                      6.308502199413107E-4,      5.846990678973245E-4,
2317                      5.4516236113657E-4,        5.460009157501477E-4,
2318                      4.930608481719068E-4,      4.3796118549478783E-4,
2319                      3.4394330928221294E-4,     3.2323366161339073E-4,
2320                      3.0869078379504626E-4,     2.9443165590676553E-4,
2321                      2.756320010448714E-4,      2.630304164920856E-4,
2322                      2.5628889948649746E-4,     2.4142286552851616E-4,
2323                      2.245551157288562E-4,      2.0678491240900531E-4,
2324                      1.8828170383762728E-4,     1.7255723688098393E-4,
2325                      1.5911316727411343E-4,     1.3023056476879765E-4,
2326                      1.0761505470890214E-4,     8.62670273047588E-5,
2327                      6.129437168288782E-5,      6.037383539249432E-5,
2328                      3.535533905932738E-5,      3.8078865529319545E-5 };
2329     double ysm[] = { 0.012402,  0.001128,
2330                      9.97E-4,   0.001122,
2331                      0.001267,  0.001324,
2332                      0.001312,  0.001222,
2333                      0.001101,  9.85E-4,
2334                      8.83E-4,   7.92E-4,
2335                      7.18E-4,   6.52E-4,
2336                      5.9E-4,    5.33E-4,
2337                      4.77E-4,   4.26E-4,
2338                      3.94E-4,   3.81E-4,
2339                      3.58E-4,   3.33E-4,
2340                      3.16E-4,   3.08E-4,
2341                      2.91E-4,   2.71E-4,
2342                      2.55E-4,   2.39E-4,
2343                      2.24E-4,   2.12E-4,
2344                      2.07E-4,   1.99E-4,
2345                      1.82E-4,   1.72E-4,
2346                      1.72E-4,   1.62E-4,
2347                      1.49E-4,   1.38E-4,
2348                      1.27E-4,   1.2E-4,
2349                      1.14E-4,   9.6E-5,
2350                      8.5E-5,    7.1E-5,
2351                      5.1E-5,    5.4E-5,
2352                      2.5E-5,    3.3E-5 };
2353     double ysp[] = { 0.012402,  0.001128,
2354                      9.97E-4,   0.001122,
2355                      0.001267,  0.001324,
2356                      0.001312,  0.001222,
2357                      0.001101,  9.85E-4,
2358                      8.83E-4,   7.92E-4,
2359                      7.18E-4,   6.52E-4,
2360                      5.9E-4,    5.33E-4,
2361                      4.77E-4,   4.26E-4,
2362                      3.94E-4,   3.81E-4,
2363                      3.58E-4,   3.33E-4,
2364                      3.16E-4,   3.08E-4,
2365                      2.91E-4,   2.71E-4,
2366                      2.55E-4,   2.39E-4,
2367                      2.24E-4,   2.12E-4,
2368                      2.07E-4,   1.99E-4,
2369                      1.82E-4,   1.72E-4,
2370                      1.72E-4,   1.62E-4,
2371                      1.49E-4,   1.38E-4,
2372                      1.27E-4,   1.2E-4,
2373                      1.14E-4,   9.6E-5,
2374                      8.5E-5,    7.1E-5,
2375                      5.1E-5,    5.4E-5,
2376                      2.5E-5,    3.3E-5 };
2377     int np = 48;
2378     TGraphAsymmErrors* g = new TGraphAsymmErrors(np,
2379                                                  x,
2380                                                  y,
2381                                                  xem,
2382                                                  xep,
2383                                                  yem,
2384                                                  yep);
2385     g->SetName("/HepData/7742/d10x1y1");
2386     g->SetTitle("/HepData/7742/d10x1y1");
2387     return g;
2388   }
2389   ClassDef(Unfolder,1);
2390 };
2391 void UnfoldMultDists(const char* method="Bayes", 
2392                      Double_t    regParam=4,
2393                      const char* realFile="forward_multdists.root",
2394                      const char* mcFile="forward_mcmultdists.root")
2395 {
2396   Unfolder* u = new Unfolder;
2397   u->Run(method, regParam, realFile, mcFile);
2398   
2399   u->DrawAll();
2400 }
2401 #endif