]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/FORWARD/analysis2/DrawdNdetaSummary.C
This commit has two major parts:
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / DrawdNdetaSummary.C
index 2b63ad4a68b898f42ab4db96e8b78bfbe4bc9c6c..cce49df8acaeb1d407ba21b990d974d1c6eddb75 100644 (file)
@@ -7,12 +7,11 @@
  * 
  * 
  */
-#if 1
 //____________________________________________________________________
 void DrawdNdetaSummary(const char* fname="forward_dndeta.root",
-                      UShort_t what=0x0)
+                      UShort_t what=0xf)
 {
-  gROOT->SetMacroPath(Form("%s:$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts",
+  gROOT->SetMacroPath(Form("%s:$ALICE_ROOT/../trunk/PWGLF/FORWARD/analysis2/scripts",
                           gROOT->GetMacroPath()));
   gROOT->LoadMacro("SummarydNdetaDrawer.C++g");
   
@@ -20,790 +19,6 @@ void DrawdNdetaSummary(const char* fname="forward_dndeta.root",
   d.Run(fname, what);
 }
 
-#else
-#ifndef __CINT__
-# include <TCollection.h>
-# include <TH1.h>
-# include <TH2.h>
-# include <THStack.h>
-# include <TParameter.h>
-# include <TFile.h>
-# include <TCanvas.h>
-# include <TStyle.h>
-# include <TError.h>
-# include <TLegend.h>
-# include <TLatex.h>
-# include <TLegendEntry.h>
-# include <TPaveText.h>
-# include <TMath.h>
-# include <TSystem.h>
-#else
-class TCollection;
-class TDirectory;
-class TH1;
-class TH2;
-class THStack;
-class TCanvas;
-class TLatex;
-class TVirtualPad;
-class TLegend;
-class TAxis;
-#endif
-
-//____________________________________________________________________
-/** 
- * Find an object in a collection
- * 
- * @param parent Parent list
- * @param name   Name of object
- * 
- * @return Pointer to object or null 
- */
-TObject* GetObject(const TCollection* parent, const TString& name)
-{
-  // Info("GetObject", "Getting object %s from %p", name.Data(), parent);
-  // --- Check parent ------------------------------------------------
-  if (!parent) {
-    Warning("GetObject", "No parent list");
-    return 0;
-  }
-  // --- Check name --------------------------------------------------
-  if (name.IsNull()) { 
-    Warning("GetObject", "No name specified");
-    return 0;
-  }
-  // --- Find the object ---------------------------------------------
-  TObject* o = parent->FindObject(name);
-  if (!o) {
-    Warning("GetObject", "Object \"%s\" not found in parent \"%s\"",
-           name.Data(), parent->GetName());
-    return 0;
-  }
-  return o;
-}
-//____________________________________________________________________
-/** 
- * Find an object in a directory
- * 
- * @param parent Parent directory
- * @param name   Name of object
- * 
- * @return Pointer to object or null 
- */
-TObject* GetObject(TDirectory* parent, const TString& name)
-{
-  // Info("GetObject", "Getting object %s from %p", name.Data(), parent);
-  // --- Check parent ------------------------------------------------
-  if (!parent) {
-    Warning("GetObject", "No parent directory");
-    return 0;
-  }
-  // --- Check name --------------------------------------------------
-  if (name.IsNull()) { 
-    Warning("GetObject", "No name specified");
-    return 0;
-  }
-  // --- Find the object ---------------------------------------------
-  TObject* o = parent->Get(name);
-  if (!o) {
-    Warning("GetObject", "Object \"%s\" not found in parent \"%s\"",
-           name.Data(), parent->GetName());
-    return 0;
-  }
-  return o;
-}
-
-//____________________________________________________________________
-/** 
- * Check the type of a found object 
- * 
- * @param o   Object 
- * @param cl  Class 
- * @param src Source of object
- * 
- * @return true on success, false otherwise 
- */
-Bool_t CheckType(const TObject* o, const TClass* cl, const TString& src)
-{
-  // Info("CheckType", "Checking type of %s vs %s", o->GetName(), cl->GetName());
-  if (!o->IsA()->InheritsFrom(cl)) { 
-    Warning("CheckType", "Object \"%s\" retrieved from \"%s\" is not a "
-           "%s but a %s", o->GetName(), src.Data(), cl->GetName(), 
-           o->ClassName());
-    return false;
-  }
-  return true;
-}
-
-//_____________________________________________________________________
-void GetParameter(const TCollection* c, const TString& name, UShort_t& value)
-{
-  // Info("GetParameter", "Getting parameter of %s from %p", name.Data(), c);
-  TObject* o = GetObject(c, name);
-  if (!o) return;
-  value = o->GetUniqueID();
-}
-//_____________________________________________________________________
-void GetParameter(const TCollection* c, const TString& name, Int_t& value)
-{
-  // Info("GetParameter", "Getting parameter of %s from %p", name.Data(), c);
-  TObject* o = GetObject(c, name);
-  if (!o) return;
-  value = o->GetUniqueID();
-}
-//_____________________________________________________________________
-void GetParameter(const TCollection* c, const TString& name, Double_t& value)
-{
-  // Info("GetParameter", "Getting parameter of %s from %p", name.Data(), c);
-  TObject* o = GetObject(c, name);
-  if (!o) return;
-  UInt_t  i = o->GetUniqueID();
-  Float_t v = *reinterpret_cast<Float_t*>(&i);
-  value = v;
-}
-//_____________________________________________________________________
-void GetParameter(const TCollection* c, const TString& name, Bool_t& value)
-{
-  // Info("GetParameter", "Getting parameter of %s from %p", name.Data(), c);
-  TObject* o = GetObject(c, name);
-  if (!o) return;
-  value = o->GetUniqueID();
-}
-
-//____________________________________________________________________
-/** 
- * Find a collection in another collection 
- * 
- * @param parent Parent collection 
- * @param name   Name of the collection 
- * 
- * @return pointer to collection on success, otherwise null 
- */
-TCollection* GetCollection(const TCollection* parent, const TString& name)
-{
-  // Info("GetCollection", "Getting collection of %s from %p", name.Data(), c);
-  // --- Find the object ---------------------------------------------
-  TObject* o = GetObject(parent, name);
-  if (!o) return 0;
-  
-  // --- Check type of found object ----------------------------------
-  if (!CheckType(o, TCollection::Class(), parent->GetName())) return 0;
-  
-  // --- Return the collection ---------------------------------------
-  return static_cast<TCollection*>(o);
-}
-
-//____________________________________________________________________
-/** 
- * Find a collection in a directory
- * 
- * @param parent Parent directory
- * @param name   Name of the collection 
- * 
- * @return pointer to collection on success, otherwise null 
- */
-TCollection* GetCollection(TDirectory* parent, const TString& name)
-{
-  // Info("GetCollection", "Getting collection of %s from %p", 
-  //       name.Data(), parent);
-  // --- Find the object ---------------------------------------------
-  TObject* o = GetObject(parent, name);
-  if (!o) return 0;
-
-  // --- Check the type of object ------------------------------------
-  if (!CheckType(o, TCollection::Class(), parent->GetName())) return 0;
-  
-  // --- Return the collection ---------------------------------------
-  return static_cast<TCollection*>(o);
-}
-
-//____________________________________________________________________
-/** 
- * Get a 1D histogram from a collection
- * 
- * @param parent Parent collection 
- * @param name   Name of histogram 
- * 
- * @return pointer or null
- */
-TH1* GetH1(const TCollection* parent, const TString& name)
-{
-  // Info("GetH1", "Getting 1D histogram of %s from %p", name.Data(), c);
-  // --- Find the object ---------------------------------------------
-  TObject* o = GetObject(parent, name);
-  if (!o) return 0;
-
-  // --- Check the type of object ------------------------------------
-  if (!CheckType(o, TH1::Class(), parent->GetName())) return 0;
-  
-  // --- Return the collection ---------------------------------------
-  return static_cast<TH1*>(o);
-}
-//____________________________________________________________________
-/** 
- * Get a 2D histogram from a collection
- * 
- * @param parent Parent collection 
- * @param name   Name of histogram 
- * 
- * @return pointer or null
- */
-TH2* GetH2(const TCollection* parent, const TString& name)
-{
-  // Info("GetH2", "Getting 2D histogram of %s from %p", name.Data(), c);
-  // --- Find the object ---------------------------------------------
-  TObject* o = GetObject(parent, name);
-  if (!o) return 0;
-
-  // --- Check the type of object ------------------------------------
-  if (!CheckType(o, TH2::Class(), parent->GetName())) return 0;
-  
-  // --- Return the collection ---------------------------------------
-  return static_cast<TH2*>(o);
-}
-//____________________________________________________________________
-/** 
- * Get a histogram stack from a collection
- * 
- * @param parent Parent collection 
- * @param name   Name of histogram 
- * 
- * @return pointer or null
- */
-THStack* GetStack(const TCollection* parent, const TString& name,
-                 const char* sub=0)
-{
-  // Info("GetStack", "Getting histogram stack %s from %p", name.Data(), parent);
-  // --- Find the object ---------------------------------------------
-  TObject* o = GetObject(parent, name);
-  if (!o) return 0;
-
-  // --- Check the type of object ------------------------------------
-  if (!CheckType(o, THStack::Class(), parent->GetName())) return 0;
-  
-  THStack* stack = static_cast<THStack*>(o);
-  if (sub == 0) return stack;
-  
-  if (stack->GetHists()->GetEntries() <= 0 ||stack->GetMaximum() < 1) { 
-    stack->GetHists()->Delete();
-    const char* subs[] = { "FMD1I", "FMD2I", "FMD2O", "FMD3O", "FMD3I", 0 };
-    const char** ptr   = subs;
-    while (*ptr) { 
-      TCollection* sc = GetCollection(parent, *ptr);
-      if (!sc) { ptr++; continue; }
-
-      TH2* h = GetH2(sc, sub);
-      if (!h) continue;
-      TH1* p = h->ProjectionX(*ptr, 1, h->GetNbinsY(), "e");
-      p->Scale(1., "width");
-      p->SetTitle(*ptr);
-      p->SetDirectory(0);
-      stack->Add(p);
-      ptr++;
-    }
-  }
-  // --- Return the collection ---------------------------------------
-  return stack;
-}
-
-//____________________________________________________________________
-void Pause()
-{
-  printf("Press enter to continue");
-  std::cin.get();
-}
-  
-//____________________________________________________________________
-/** 
- * Clear canvas 
- * 
- * @param c Canvas to clear 
- *
- * @ingroup pwglf_forward_scripts_corr
- */
-void
-ClearCanvas(TCanvas* c)
-{
-  // Info("ClearCanvas", "Clearing canvas");
-  c->SetLeftMargin(.1);
-  c->SetRightMargin(.05);
-  c->SetBottomMargin(.1);
-  c->SetTopMargin(.05);
-  c->Clear();
-
-  Float_t dy = .05;
-  TPad* p1 = new TPad("top", "Top", 0, 1-dy, 1, 1, 0, 0);
-  p1->SetNumber(1);
-  p1->SetFillColor(kBlue-5);
-  p1->SetBorderSize(0);
-  p1->SetBorderMode(0);
-  c->cd();
-  p1->Draw();
-
-  TPad* p2 = new TPad("body", "Body", 0, 0, 1, 1-dy, 0, 0);
-  p2->SetNumber(2);
-  p2->SetFillColor(0);
-  p2->SetFillStyle(0);
-  p2->SetBorderSize(0);
-  p2->SetBorderMode(0);
-  p2->SetRightMargin(0.02);
-  p2->SetTopMargin(0.02);
-  c->cd();
-  p2->Draw();
-  p2->cd();
-
-}
-//____________________________________________________________________
-/** 
- * Create a canvas 
- * 
- * @param pname Name of PDF file to make 
- * 
- * @return Created canvas 
- */
-TCanvas* CreateCanvas(const TString& pname)
-{
-  // Info("CreateCanvas", "Creating canvas");
-  Int_t size = 1000;
-  TCanvas* c = new TCanvas("c", pname.Data(), size / TMath::Sqrt(2), size);
-  c->SetFillColor(0);
-  c->SetBorderSize(0);
-  c->SetBorderMode(0);
-  c->Print(Form("%s[", pname.Data()));
-  
-  gStyle->SetOptStat(0);
-  gStyle->SetTitleColor(0);
-  gStyle->SetTitleStyle(0);
-  gStyle->SetTitleBorderSize(0);
-  gStyle->SetTitleX(.5);
-  gStyle->SetTitleY(1);
-  gStyle->SetTitleW(.8);
-  gStyle->SetTitleH(.09);
-  gStyle->SetFrameFillColor(kWhite);
-  gStyle->SetFrameBorderSize(1);
-  gStyle->SetFrameBorderMode(1);
-  gStyle->SetPalette(1);
-
-  ClearCanvas(c);
-
-  return c;
-}
-
-//____________________________________________________________________
-/** 
- * Close the PDF
- * 
- * @param c Canvas 
- */
-void CloseCanvas(TCanvas* c)
-{
-  // Info("CloseCanvas", "Closing canvas");
-  ClearCanvas(c);
-  c->Print(Form("%s]", c->GetTitle()));
-}
-
-//____________________________________________________________________
-/** 
- * Print the canvas 
- * 
- * @param c      Canvas 
- * @param title  Title 
- */
-void PrintCanvas(TCanvas* c, const TString& title, 
-                Float_t size=.7, Bool_t pause=false)
-{
-  // Info("PrintCanvas", "Printing page %s", title.Data());
-  TString tit;
-  tit.Form("Title:%s", title.Data());
-
-  c->cd(1);
-  TLatex* ltx = new TLatex(.5, .5, title);
-  ltx->SetNDC();
-  ltx->SetTextAlign(22);
-  ltx->SetTextSize(size);
-  ltx->SetTextColor(kWhite);
-  ltx->SetTextFont(62);
-  ltx->Draw();
-  
-  c->Modified();
-  c->Update();
-  c->cd();
-  gSystem->RedirectOutput("/dev/null");
-  c->Print(c->GetTitle(), tit);
-  gSystem->RedirectOutput(0);
-  
-  // std::cin.peek();
-  if (pause) Pause();
-
-  ClearCanvas(c);
-}
-//____________________________________________________________________
-/** 
- * Make a chapter page 
- * 
- * @param c     Canvas 
- * @param title Title 
- */
-void MakeChapter(TCanvas* c, const TString& title)
-{
-  c->cd(2);
-  
-  // Info("MakeChapter", "Making chapter %s", title.Data());
-  TLatex* ltx = new TLatex(.5, .5, title);
-  ltx->SetNDC();
-  ltx->SetTextAlign(22);
-  ltx->Draw();
-
-  PrintCanvas(c, title);
-}
-//____________________________________________________________________
-void DrawInPad(TVirtualPad* c, Int_t padNo, TObject* h, Option_t* opts="",
-              UShort_t flags=0x0)
-{
-  // Info("DrawInPad", "Drawing %p in pad # %d of %p w/options %s, flags 0x%x", 
-  //      h, padNo, c, opts, flags);
-  TVirtualPad* p = c->cd(padNo);
-  if (!p) { 
-    Warning("DrawInPad", "Pad # %d not found in %s", padNo, c->GetName());
-    return;
-  }
-  if (flags & 0x1) p->SetLogx();
-  if (flags & 0x2) p->SetLogy();
-  if (flags & 0x4) p->SetLogz();
-  p->SetFillColor(0);
-  TString o(opts);
-  if (o.Contains("colz", TString::kIgnoreCase)) 
-    p->SetRightMargin(0.15);
-  if (o.Contains("text", TString::kIgnoreCase)) { 
-    TH1* hh = static_cast<TH1*>(h);
-    hh->SetMaximum(1.1*hh->GetMaximum());
-    hh->SetMarkerSize(2);
-    o.Append("30");
-  }
-  
-  if (!h) {
-    Warning("DrawInPad", "Nothing to draw in pad # %d", padNo);
-    return;
-  }
-  h->Draw(o);
-
-  if (flags& 0x10) { 
-    TLegend* l = p->BuildLegend();
-    l->SetFillColor(0);
-    l->SetFillStyle(0);
-    l->SetBorderSize(0);
-  }
-  p->Modified();
-  p->Update();
-  p->cd();
-}
-//____________________________________________________________________
-void CreateTemplates(TLatex*& name, TLatex*& value, Float_t size=.03)
-{
-  Double_t x1 = .1;
-  Double_t x2 = .6;
-  Double_t y  = .8;
-  name = new TLatex(x1, y, "");
-  name->SetTextAlign(13);
-  name->SetNDC();
-  name->SetTextSize(size);
-
-  value = new TLatex(x2, y, "");
-  value->SetTextAlign(13);
-  value->SetNDC();
-  value->SetTextSize(size);
-}
-  
-//____________________________________________________________________
-void DrawParameter(TLatex* name, TLatex* value, Double_t& y, 
-                  const TString& sName, const TString& sValue)
-{
-  if (sName.IsNull() && sValue.IsNull()) return;
-  if (!sName.IsNull())
-    name->DrawLatex(name->GetX(), y, Form("%s:", sName.Data()));
-  if (!sValue.IsNull())
-    value->DrawLatex(value->GetX(), y, sValue.Data());
-  y -= name->GetTextSize() + .02;
-}  
-
-
-//____________________________________________________________________
-void DrawCentSum(const TCollection* sums, TCanvas* can, const TString& base, 
-                Int_t cLow, Int_t cHigh)
-{
-  TString folder; 
-  if (cLow < 0 || cHigh < 0 || cLow >= cHigh) {
-    folder = "all";
-    cHigh  *= -1;
-  }
-  else folder.Form("cent%03d_%03d", cLow, cHigh);
-  
-  TCollection* c = GetCollection(sums, folder);
-  if (!c) return;
-
-  TVirtualPad* body = can->cd(2);
-  body->Divide(2, 2);
-
-  DrawInPad(body, 1, GetH1(c, "triggers"),                   "HIST TEXT");
-  DrawInPad(body, 2, GetH1(c, Form("%sEvents",base.Data())), "HIST TEXT");
-  DrawInPad(body, 3, GetH2(c, base.Data()),                  "colz");
-  DrawInPad(body, 4, GetH2(c, Form("%s0", base.Data())),     "colz");
-  
-  PrintCanvas(can, Form("%s sums: %3d%% - %3d%%", base.Data(), cLow, cHigh));
-}
-
-//____________________________________________________________________
-void DrawSums(TDirectory* top, const TString& base, TCanvas* can, bool onlyMB)
-{
-  TCollection* c = GetCollection(top, Form("%sSums", base.Data()));
-  if (!c) return;
-
-  TAxis* centAxis = static_cast<TAxis*>(GetObject(c, "centAxis"));
-
-  TVirtualPad* body = can->cd(2);
-  body->Divide(1, 2);
-  
-  body->cd(1);
-  TLatex*  name;
-  TLatex*  value;
-  Double_t y = .8;
-  CreateTemplates(name, value);
-  for (Int_t i = 1; i <= centAxis->GetNbins(); i++) { 
-    DrawParameter(name, value, y, (i == 1 ? "Centrality classes" : ""),
-                 Form("%3d%% - %3d%%", 
-                      Int_t(centAxis->GetBinLowEdge(i)), 
-                      Int_t(centAxis->GetBinUpEdge(i))));
-  }
-  Int_t sys, sNN, scheme, trigger;
-  GetParameter(c, "sNN",     sNN); 
-  GetParameter(c, "sys",     sys); 
-  GetParameter(c, "scheme",  scheme); 
-  GetParameter(c, "trigger", trigger); 
-  DrawParameter(name, value, y, "Collision system", 
-               (sys == 1 ? "pp" : (sys == 2 ? "PbPb" : (sys == 3 ? "pPb" : 
-                                                        "unknown"))));
-  DrawParameter(name, value, y, "#sqrt{s_{NN}}", Form("%4dGeV", sNN));
-  DrawParameter(name, value, y, "Normalization scheme", Form("0x%x", scheme));
-  DrawParameter(name, value, y, "Triggers",      Form("0x%x", trigger));
-  
-  DrawInPad(body, 2, GetH1(c, "cent"));
-
-  PrintCanvas(can, Form("%s sums", base.Data()));
-
-  DrawCentSum(c, can, base, centAxis->GetXmin(), -centAxis->GetXmax());
-  if (onlyMB) return;
-
-  for (Int_t i = 1; i <= centAxis->GetNbins(); i++) 
-    DrawCentSum(c, can, base, centAxis->GetBinLowEdge(i), 
-               centAxis->GetBinUpEdge(i));
-}
-
-//____________________________________________________________________
-THStack* CleanStack(const THStack* stack, TLegend* l, const TAxis* axis)
-{
-  THStack* ret   = new THStack(stack->GetName(), stack->GetTitle());
-  TList*   hists = stack->GetHists();
-  TIter    next(hists);
-  TH1*     h     = 0;
-  Int_t    j     = 0;
-  while ((h = static_cast<TH1*>(next()))) {
-    TString name(h->GetName());
-    if (name.Contains("_mirror")) continue;
-    if (l) { 
-      j++;
-      name.Form("%3d%% - %3d%%", 
-               Int_t(axis->GetBinLowEdge(j)), 
-               Int_t(axis->GetBinUpEdge(j)));
-      TLegendEntry* e = l->AddEntry("dummy", name, "f");
-      e->SetFillStyle(1001);
-      e->SetFillColor(h->GetMarkerColor());
-    }
-    ret->Add(h);
-  }
-  return ret;
-#if 0
-  // There's no dictinary for TObjLink
-  TObjLink* lnk = hists->FirstLink();
-  Int_t j = 0;
-  while (lnk) {
-    TH1* h = static_cast<TH1*>(lnk->GetObject());
-    bool remove = false;
-    TString name(h->GetName());
-    if (name.Contains("_mirror")) {
-      // AliWarning(Form("No entries in %s - removing", h->GetName()));
-      remove = true;
-    }
-    else if (l) { 
-      j++;
-      name.Form("%3d%% - %3d%%", 
-               Int_t(axis->GetBinLowEdge(j)), 
-               Int_t(axis->GetBinUpEdge(j)));
-      TLegendEntry* e = l->AddEntry("dummy", name, "f");
-      e->SetFillStyle(1001);
-      e->SetFillColor(h->GetMarkerColor());
-    }
-    if (remove) {
-      TObjLink* keep = lnk->Next();
-      hists->Remove(lnk);
-      lnk = keep;
-      continue;
-    }
-    lnk = lnk->Next();
-  }
-#endif
-}
-
-//____________________________________________________________________
-void DrawCentRes(const TCollection* sums, TCanvas* can, const TString& base, 
-                Int_t cLow, Int_t cHigh)
-{
-  TString folder; 
-  if (cLow < 0 || cHigh < 0 || cLow >= cHigh) {
-    folder =  "all";
-    cHigh  *= -1;
-  }
-  else folder.Form("cent%03d_%03d", cLow, cHigh);
-  
-  TCollection* c = GetCollection(sums, folder);
-  if (!c) return;
-
-  TVirtualPad* body = can->cd(2);
-  body->Divide(2, 3, 0.05, 0);
-
-  Int_t        trP = 1;
-  TVirtualPad* p   = body->GetPad(trP);
-  p->SetBottomMargin(0.15);
-  p->SetLeftMargin(0.15);
-  if (trP > 2) p->SetTopMargin(0.05);
-  
-  DrawInPad(body, trP, GetH1(c, "triggers"), "HIST TEXT");
-  DrawInPad(body, 2,   GetH1(c, Form("norm%s",base.Data())));
-  DrawInPad(body, 4, GetH1(c, Form("dndeta%s",base.Data())));
-  DrawInPad(body, 6, GetH1(c, Form("dndeta%s_rebin05",base.Data())));
-  DrawInPad(body, 5, GetH2(c, Form("d2Ndetadphi%s", base.Data())),"colz");
-  
-  body->GetPad(2)->SetGridx(); body->GetPad(2)->SetLeftMargin(0.15);
-  body->GetPad(4)->SetGridx(); body->GetPad(4)->SetLeftMargin(0.15);
-  body->GetPad(6)->SetGridx(); body->GetPad(6)->SetLeftMargin(0.15);
-
-  TObject*   normCalc = GetObject(c, "normCalc");
-  TString    calc     = normCalc->GetTitle();
-  TObjArray* lines    = calc.Tokenize("\n");
-  TPaveText* disp     = new TPaveText(.1,.1,.9,.9, "NDC");
-  TIter      next(lines);
-  TObject*   line     = 0;
-  while ((line = next())) 
-    disp->AddText(line->GetName());
-  disp->SetBorderSize(0);
-  disp->SetBorderSize(0);
-  disp->SetFillStyle(0);
-  DrawInPad(body, 3, disp);
-
-  PrintCanvas(can, Form("%s result: %3d%% - %3d%%", base.Data(), cLow, cHigh));
-}  
-
-//____________________________________________________________________
-THStack* 
-DrawRes(TDirectory* top, const TString& base, TCanvas* can, Bool_t onlyMB)
-{
-  TCollection* c = GetCollection(top, Form("%sResults", base.Data()));
-  if (!c) return 0;
-
-  TAxis* centAxis = static_cast<TAxis*>(GetObject(c, "centAxis"));
-
-  can->cd(2);
-
-  TLatex*  name;
-  TLatex*  value;
-  Double_t y = .9;
-  CreateTemplates(name, value, .02);
-  for (Int_t i = 1; i <= centAxis->GetNbins(); i++) { 
-    DrawParameter(name, value, y, (i == 1 ? "Centrality classes" : ""),
-                 Form("%3d%% - %3d%%", 
-                      Int_t(centAxis->GetBinLowEdge(i)), 
-                      Int_t(centAxis->GetBinUpEdge(i))));
-  }
-
-  DrawParameter(name, value, y, "Collision system", 
-               GetObject(c, "sys")->GetTitle());
-  DrawParameter(name, value, y, "#sqrt{s_{NN}}",GetObject(c,"sNN")->GetTitle());
-  DrawParameter(name, value, y, "trigger",GetObject(c,"trigger")->GetTitle());
-  DrawParameter(name, value, y, "scheme", GetObject(c,"scheme")->GetTitle());
-
-  Double_t epsT, epsT0;
-  GetParameter(c, "triggerEff",  epsT);
-  GetParameter(c, "triggerEff0", epsT0);
-  DrawParameter(name, value, y, "#epsilon_{T}", Form("%f", epsT));
-  DrawParameter(name, value, y, "#epsilon_{T,zero bin}", Form("%f", epsT0));
-
-  PrintCanvas(can, Form("%s results", base.Data()));
-  
-  TVirtualPad* body = can->cd(2);
-  body->Divide(1, 3, 0, 0);
-
-  TLegend* l = new TLegend(0.1, 0.1, 0.9, 0.9, "Centralities");
-  l->SetNColumns(2);
-  l->SetFillStyle(0);
-  l->SetBorderSize(0);
-  THStack* dndeta_  = GetStack(c, "dndeta");
-  THStack* dndeta   = CleanStack(dndeta_, l, centAxis);
-  THStack* dndeta5_ = GetStack(c, "dndeta_rebin05");
-  THStack* dndeta5  = CleanStack(dndeta5_, 0, 0);
-
-  DrawInPad(body, 1, l, "");
-  DrawInPad(body, 2, dndeta,  "nostack");
-  DrawInPad(body, 3, dndeta5, "nostack");
-  body->GetPad(2)->SetGridx();
-  body->GetPad(3)->SetGridx();
-
-  PrintCanvas(can, Form("%s results - stacks", base.Data()));
-  
-  DrawCentRes(c, can, base, centAxis->GetXmin(), -centAxis->GetXmax());
-  if (onlyMB) return dndeta;
-
-  for (Int_t i = 1; i <= centAxis->GetNbins(); i++) 
-    DrawCentRes(c, can, base, centAxis->GetBinLowEdge(i), 
-               centAxis->GetBinUpEdge(i));
-
-  return dndeta;
-}
-
-  
-//____________________________________________________________________
-void DrawdNdetaSummary(const char* fname="forward_dndeta.root",
-                      bool onlyMB=true)
-{
-  // --- Open the file -----------------------------------------------
-  TString filename(fname);
-  TFile* file = TFile::Open(filename.Data(), "READ");
-  if (!file) { 
-    Error("DrawAODSummary", "Failed to open \"%s\"", filename.Data());
-    return;
-  }
-
-  // --- Make our canvas ---------------------------------------------
-  TString pdfName(filename);
-  pdfName.ReplaceAll(".root", ".pdf");
-
-  TCanvas* c = CreateCanvas(pdfName);
-
-  // --- Do each sub-algorithm ---------------------------------------
-  DrawSums(file, "Forward", c, onlyMB);
-  THStack* rF = DrawRes(file, "Forward", c, onlyMB);
-
-  DrawSums(file, "Central", c, onlyMB);
-  THStack* rC = DrawRes(file, "Central", c, onlyMB);
-
-  TIter next(rF->GetHists());
-  TH1*  h  = 0;
-  while ((h = static_cast<TH1*>(next()))) rC->Add(h);
-  
-  rC->Draw("nostack");
-  PrintCanvas(c, "Both");
-    
-  CloseCanvas(c);
-}
-#endif
 //
 // EOF
 //