ROOT logo
//____________________________________________________________________
/** 
 * Get an object with specified name from TCollection @a l 
 * 
 * @param l    Collection
 * @param name Name of object to retrieve 
 * 
 * @return Object, or null 
 *
 * @ingroup pwglf_forward_scripts
 */
TObject*
GetObject(const TObject* l, const char* name)
{
  if (!l->IsA()->InheritsFrom(TCollection::Class())) { 
    Error("GetObject", "passed parent %s not a TCollection, but %s",
	  l->GetName(), l->IsA()->GetName());
    return 0;
  }
  TObject* o = static_cast<const TCollection*>(l)->FindObject(name);
  if (!o) { 
    Error("GetObject", "No object '%s' found in '%s'", name, l->GetName());
    return 0;
  }
  return o;
}

//____________________________________________________________________
/** 
 * Get histogram from @a directory/which/sub/hname 
 * 
 * @param dir    Directory 
 * @param which  Name of parent list
 * @param sub    Name of sub-list
 * @param hname  Name of histogram 
 * 
 * @return Pointer to histogram or null
 *
 * @ingroup pwglf_forward_scripts
 */
TH1D*
GetHist(TDirectory* dir, 
	const char* which, 
	const char* sub, 
	const char* hname)
{
  if (!dir) return 0;
  TList* parent = static_cast<TList*>(dir->Get(which));
  if (!parent) { 
    Error("GetHist", "List '%s' not found in '%s'", which, dir->GetName());
    return 0;
  }
  TList* child = static_cast<TList*>(parent->FindObject(sub));
  if (!child) { 
    Error("GetHist", "List '%s' not found in '%s'", sub, parent->GetName());
    return 0;
  }
  TObject* o = GetObject(child,hname);
  if (!o) return 0;
  return static_cast<TH1D*>(o);
}


//____________________________________________________________________
/** 
 * Get histogram from 
 * <i>dir/which</i>Results<i>/sub/</i>dndeta<i>which</i>[_rebin<i>rebin</i>]
 * 
 * @param dir    Directory 
 * @param which  Name
 * @param rebin  Optional rebinning 
 * @param sub    Sub-list name
 * 
 * @return Histogram pointer or null
 *
 * @ingroup pwglf_forward_scripts
 */
TH1D* 
GetHist(TDirectory* dir, 
	const char* which, 
	UShort_t    rebin,
	const char* sub="all")
{
  TString name(Form("dndeta%s", which));
  if (rebin > 1) name.Append(Form("_rebin%02d", rebin));
  return GetHist(dir, Form("%sResults", which), sub, name);
}

//____________________________________________________________________
/** 
 * Merge two histograms into one 
 * 
 * @param cen    Central part
 * @param fwd    Forward part
 * @param xlow   On return, lower eta bound
 * @param xhigh  On return, upper eta bound
 * 
 * @return Newly allocated histogram or null
 *
 * @ingroup pwglf_forward_scripts
 */
TH1* 
Merge(const TH1* cen, const TH1* fwd, Double_t& xlow, Double_t& xhigh)
{
  TH1* tmp = static_cast<TH1*>(fwd->Clone("dndetaMerged"));
  // tmp->SetMarkerStyle(28);
  // tmp->SetMarkerColor(kBlack);
  tmp->SetDirectory(0);
  xlow  = 100;
  xhigh = -100;
  for (Int_t i = 1; i <= tmp->GetNbinsX(); i++) {
    Double_t cc = cen->GetBinContent(i);
    Double_t cf = fwd->GetBinContent(i);
    Double_t ec = cen->GetBinError(i);
    Double_t ef = fwd->GetBinError(i);
    Double_t nc = cf;
    Double_t ne = ef;
    if (cc < 0.001 && cf < 0.01) continue;
    xlow  = TMath::Min(tmp->GetXaxis()->GetBinLowEdge(i),xlow);
    xhigh = TMath::Max(tmp->GetXaxis()->GetBinUpEdge(i),xhigh);
    if (cc > 0.001) {
      nc = cc;
      ne = ec;
      if (cf > 0.001) {
	nc  = (cf + cc) / 2;
	ne  = TMath::Sqrt(ec*ec + ef*ef);
      }
    }
    tmp->SetBinContent(i, nc);
    tmp->SetBinError(i, ne);
  }
  return tmp;
}

//____________________________________________________________________
/** 
 * Function to calculate 
 * @f[
 *  g(x;A_1,A_2,\sigma_1,\sigma_2) = 
 *       A_1\left(\frac{1}{2\pi\sigma_1}e^{(x/\sigma_1)^2} - 
 *           A_2\frac{1}{2\pi\sigma_2}e^{(x/\sigma_2)^2}\right)
 * @f]
 * 
 * @param xp Pointer to x array
 * @param pp Pointer to parameter array 
 * 
 * @return @f$g(x;A_1,A_2,\sigma_1,\sigma_2)@f$
 *
 * @ingroup pwglf_forward_scripts
 */
Double_t myFunc(Double_t* xp, Double_t* pp)
{
  Double_t x  = xp[0];
  Double_t a1 = pp[0];
  Double_t a2 = pp[1];
  Double_t s1 = pp[2];
  Double_t s2 = pp[3];
  return a1*(TMath::Gaus(x, 0, s1) - a2 * TMath::Gaus(x, 0, s2));
}
//____________________________________________________________________
/** 
 * Calculate 
 * @f[ 
 *    r(x) = \frac{g(x;A_1,A_2,\sigma_1,\sigma_2)}{
 *                 g(x;A_1',A_2',\sigma'_1,\sigma'_2)}
 * @f] 
 * 
 * @param xp Pointer to X array
 * @param pp Pointer to parameter array (8 entries)
 * 
 * @return @f$r(x)@f$ 
 *
 * @ingroup pwglf_forward_scripts
 */
Double_t myRatio(Double_t* xp, Double_t* pp) 
{
  Double_t denom = myFunc(xp, &(pp[4]));
  if (TMath::Abs(denom) < 1.e-6) return 0;
  return myFunc(xp, pp) / denom;
}

//____________________________________________________________________
/** 
 * Fit  @f$g(x;A_1,A_2,\sigma_1,\sigma_2)@f$ to histogram data 
 * 
 * @param tmp    Histogram
 * @param xlow   Lower x bound
 * @param xhigh  Upper x bound 
 *
 * @return Fitted function 
 *
 * @ingroup pwglf_forward_scripts
 */
TF1* 
FitMerged(TH1* tmp, Double_t xlow, Double_t xhigh)
{
  TF1* tmpf  = new TF1("tmpf", "gaus", xlow, xhigh);
  tmp->Fit(tmpf, "N", "");
  tmp->SetDirectory(0);

  TF1* fit = new TF1("f", myFunc, xlow, xhigh, 4);
  fit->SetParNames("a_{1}", "a_{2}", "#sigma_{1}", "#sigma_{2}");
  fit->SetParameters(tmpf->GetParameter(0), 
		     .2, 
		     tmpf->GetParameter(2), 
		     tmpf->GetParameter(2)/4);
  fit->SetParLimits(3, 0, 100);
  fit->SetParLimits(4, 0, 100);
  tmp->Fit(fit,"0W","");
  return fit;
}

//____________________________________________________________________
/** 
 * Make band of systematic errors 
 * 
 * @param tmp Histogram
 * @param fit Fit 
 *
 * @ingroup pwglf_forward_scripts
 */
void
MakeSysError(TH1* tmp, TF1* fit)
{
  for (Int_t i = 1; i <= tmp->GetNbinsX(); i++) {
    Double_t tc = tmp->GetBinContent(i);
    if (tc < 0.01) continue;
    Double_t x = tmp->GetXaxis()->GetBinCenter(i);
    Double_t y = fit->Eval(x);
    tmp->SetBinContent(i, y);
    tmp->SetBinError(i,sysErr*y);
  }
  return tmp;
}

//____________________________________________________________________
/** 
 * Transform a graph into a histogram 
 * 
 * @param g 
 * 
 * @return 
 *
 * @ingroup pwglf_forward_scripts
 */
TH1* 
Graph2Hist(const TGraphAsymmErrors* g)
{
  Int_t    nBins = g->GetN();
  TArrayF  bins(nBins+1);
  TArrayF  y(nBins);
  TArrayF  ey(nBins);
  Double_t dx = 0;
  Double_t xmin = 10000;
  Double_t xmax = -10000;
  for (Int_t i = 0; i < nBins; i++) { 
    Double_t x   = g->GetX()[i];
    Double_t exl = g->GetEXlow()[i];
    Double_t exh = g->GetEXhigh()[i];
    xmin             = TMath::Min(x-exl, xmin);
    xmax             = TMath::Max(x+exh, xmax);
    bins.fArray[i]   = x-exl;
    bins.fArray[i+1] = x+exh;
    Double_t dxi = exh+exl;
    if (dxi == 0 && i != 0) dxi = bins.fArray[i]-bins.fArray[i-1];
    if (dx == 0) dx  = dxi;
    else if (dxi != dx) dx = 0;
    
    y.fArray[i]  = g->GetY()[i];
    ey.fArray[i] = TMath::Max(g->GetEYlow()[i],g->GetEYhigh()[i]);

  }
  TString name(g->GetName());
  TString title(g->GetTitle());
  TH1D* h = 0;
  if (dx != 0) {
    h = new TH1D(name.Data(), title.Data(), nBins, 
		 bins[0]-dx/2, bins[nBins]+dx/2);
  }
  else {
    h = new TH1D(name.Data(), title.Data(), nBins, bins.fArray);
  }
  for (Int_t i = 1; i <= nBins; i++) { 
    h->SetBinContent(i, y.fArray[i-1]);
    h->SetBinError(i, ey.fArray[i-1]);
  }
  h->SetMarkerStyle(g->GetMarkerStyle());
  h->SetMarkerColor(g->GetMarkerColor());
  h->SetMarkerSize(g->GetMarkerSize());
  h->SetDirectory(0);
    
  return h;
}

//____________________________________________________________________
/** 
 * Calculate ratio of histogram to function 
 * 
 * @param h     Histogram
 * @param f     Function
 * @param title (Optional) title 
 * 
 * @return Ratio in a histogram 
 *
 * @ingroup pwglf_forward_scripts
 */
TH1*
Ratio(TH1* h, TF1* f, const char* title)
{
  TH1* ret = static_cast<TH1*>(h->Clone(Form("%s_%s", 
					       h->GetName(), 
					       f->GetName())));
  ret->SetDirectory(0);
  if (title) ret->SetTitle(title);
  else       ret->SetTitle(Form("%s (data) / %s",
				h->GetTitle(),f->GetTitle()));
  ret->Reset();
  for (Int_t i = 1; i <= ret->GetNbinsX(); i++) { 
    Double_t cc = h->GetBinContent(i);
    if (cc < 0.01) {
      ret->SetBinContent(i,0);
      ret->SetBinError(i,0);
      continue;
    }
    Double_t xx = h->GetBinCenter(i);
    Double_t ee = h->GetBinError(i);
    Double_t ff = f->Eval(xx);
    Double_t yy = cc / ff;
    Double_t ey = ee / ff;
    ret->SetBinContent(i, yy);
    ret->SetBinError(i, ey);
  }
  return ret;
}

//____________________________________________________________________
/** 
 * Get the UA5 data 
 * 
 * @param type   Trigger type (1: INEL, 4: NSD)
 * @param p      On return, positive part or null
 * @param n      On return, negative part or null
 * @param xlow   On return, lower X bound
 * @param xhigh  On return, upper X bound
 * 
 * @return Merged histogram or null 
 *
 * @ingroup pwglf_forward_scripts
 */
TH1D* 
GetUA5Data(UShort_t type, TH1*& p, TH1*& n,
	   Double_t& xlow, Double_t& xhigh)
{
  gROOT->SetMacroPath(Form(".:$ALICE_ROOT.trunk/PWGLF/FORWARD/analysis2/:%s",
			   gROOT->GetMacroPath()));
  gROOT->LoadMacro("OtherData.C");

  p                     = 0;
  n                     = 0;
  TGraphAsymmErrors* gp = GetSingle(UA5,    1, 900, type, 0, 0);
  TGraphAsymmErrors* gn = GetSingle(UA5+10, 1, 900, type, 0, 0);
  if (!gp || !gn) return 0;

  p = Graph2Hist(gp);
  n = Graph2Hist(gn);
  
  Int_t    nn    = p->GetNbinsX();
  xlow           = n->GetXaxis()->GetXmin();
  xhigh          = p->GetXaxis()->GetXmax();
  TH1D*    ret   = new TH1D("ua5", "UA5", 2*nn, xlow, xhigh);
  ret->SetDirectory(0);
  ret->SetMarkerColor(p->GetMarkerColor());
  ret->SetMarkerStyle(p->GetMarkerStyle());

  for (Int_t i = 1; i <= nn; i++) { 
    ret->SetBinContent(nn+i, p->GetBinContent(i));
    ret->SetBinContent(   i, n->GetBinContent(i));
    ret->SetBinError(nn+i, p->GetBinError(i));
    ret->SetBinError(   i, n->GetBinError(i));
  }
  return ret;
}


//____________________________________________________________________
/** 
 * Draw ratios to UA5 data 
 * 
 * @param fname Input file name 
 * @param rebin Re-binning factor 
 *
 * @ingroup pwglf_forward_scripts
 */
void
DrawUA5Ratios(const char* fname="forward_dndeta.root", UShort_t rebin=5)
{
  TFile* forward_dndeta = TFile::Open(fname, "READ");
  if (!forward_dndeta) { 
    Error("DrawUA5Ratios", "%s not found", fname);
    return;
  }

  UShort_t type = 1;
  TH1D* forward = GetHist(forward_dndeta, "Forward", rebin);
  TH1D* central = GetHist(forward_dndeta, "Central", rebin);

  TObject* sys = GetObject(forward_dndeta->Get("ForwardResults"), "sys");
  TObject* sNN = GetObject(forward_dndeta->Get("ForwardResults"), "sNN");
  TObject* trg = GetObject(forward_dndeta->Get("ForwardResults"), "trigger");
  if (!sys || !sNN || !trg) return;
  if (sys->GetUniqueID() != 1) { 
    Error("DrawUA5Ratios", "Comparison only valid for pp, not %s", 
	  sys->GetTitle());
    return;
  }
  if (sNN->GetUniqueID() != 900) { 
    Error("DrawUA5Ratios", "Comparison only valid for 900GeV, not %dGeV", 
	  sNN->GetUniqueID());
    return;
  }
  if (trg->GetUniqueID() != 1 &&
      trg->GetUniqueID() != 4) { 
    Error("DrawUA5Ratios", 
	  "Comparison only valid for INEL or NSD, not %s (%d)", 
	  trg->GetTitle(), trg->GetUniqueID());
    return;
  }
    

  Double_t alilow, alihigh;
  TH1D* ali     = Merge(central, forward, alilow, alihigh);
  TF1*  alifit  = FitMerged(ali, alilow, alihigh);
  ali->SetTitle("Forward+Central");
  alifit->SetLineColor(kRed+1);
  alifit->SetLineStyle(2);
  alifit->SetName("alifit");
  alifit->SetTitle("Fit to Forward+Central");

  Double_t ua5low, ua5high;
  TH1*  ua5p, *ua5n;
  TH1D* ua5    = GetUA5Data(trg->GetUniqueID(), ua5p, ua5n, ua5low, ua5high);
  TF1*  ua5fit = FitMerged(ua5, ua5low, ua5high);
  ua5fit->SetLineColor(kBlue+1);
  ua5fit->SetLineStyle(3);
  ua5fit->SetName("ua5fit");
  ua5fit->SetTitle("Fit to UA5");

  gStyle->SetOptTitle(0);
  TCanvas* c = new TCanvas("c", "C", 900, 900);
  c->SetFillColor(0);
  c->SetFillStyle(0);
  c->SetBorderMode(0);
  c->SetBorderSize(0);

  Double_t yd = .3;
  
  TPad* p1 = new TPad("p1", "p1", 0, yd, 1, 1, 0, 0, 0);
  p1->SetBorderSize(0);
  p1->SetBorderMode(0);
  p1->SetFillColor(0);
  p1->SetFillStyle(0);
  p1->SetRightMargin(0.02);
  p1->SetTopMargin(0.02);
  p1->SetBottomMargin(0.00);
  p1->SetGridx();
  p1->Draw();
  p1->cd();
  
  THStack* all = new THStack("all", "All");
  all->Add(ua5p);
  all->Add(ua5n);
  // all->Add(ua5);
  all->Add(forward);
  all->Add(central);
  // all->Add(merged);
  all->Draw("nostack");
  all->SetMinimum(-.07);
  all->GetXaxis()->SetTitleFont(132);
  all->GetYaxis()->SetTitleFont(132);
  all->GetXaxis()->SetLabelFont(132);
  all->GetYaxis()->SetLabelFont(132);
  all->GetYaxis()->SetDecimals();
  p1->Clear();
  all->Draw("nostack");
  // ua5p->Draw("same p");
  // ua5m->Draw("same p");
  alifit->Draw("same");
  ua5fit->Draw("same");
  
  TLegend* l = new TLegend(.2, .1, .8, .5,
			   Form("pp @ #sqrt{s}=900GeV, %s",trg->GetTitle()));
  l->AddEntry(ua5,     Form("U: %s", ua5->GetTitle()),    "lp");
  l->AddEntry(forward, "F: Forward",                      "lp");
  l->AddEntry(central, "C: Central",                      "lp");
  l->AddEntry(alifit,  
	      Form("f: %s: %4.2f#left[e^{(x/%4.2f)^{2}}-"
		   "%4.2fe^{(x/%4.2f)^{2}}#right]", 
		   alifit->GetTitle(),
		   alifit->GetParameter(0), 
		   alifit->GetParameter(2), 
		   alifit->GetParameter(1), 
		   alifit->GetParameter(3)), "l");
  l->AddEntry(ua5fit,  
	      Form("u: %s: %4.2f#left[e^{(x/%4.2f)^{2}}-"
		   "%4.2fe^{(x/%4.2f)^{2}}#right]", 
		   ua5fit->GetTitle(),
		   ua5fit->GetParameter(0), 
		   ua5fit->GetParameter(2), 
		   ua5fit->GetParameter(1), 
		   ua5fit->GetParameter(3)), "l");
  l->SetTextFont(132);
  l->SetBorderSize(0);
  l->SetFillColor(0);
  l->SetFillStyle(0);
  l->Draw();

  c->cd();
  TPad* p2 = new TPad("p2", "p2", 0, 0, 1, yd, 0, 0, 0);
  p2->SetBorderSize(0);
  p2->SetBorderMode(0);
  p2->SetFillColor(0);
  p2->SetFillStyle(0);
  p2->SetRightMargin(0.02);
  p2->SetTopMargin(0.00);
  p2->SetBottomMargin(0.15);
  p2->SetGridx();
  p2->Draw();
  p2->cd();

  THStack* ratios = new THStack("Ratios", "Ratios");
  TH1* ua5ali = Ratio(ua5, alifit, 0);
  TH1* aliua5 = Ratio(ali, ua5fit, 0);
  ratios->Add(ua5ali);
  ratios->Add(aliua5);
  ratios->Draw("nostack");
  ratios->SetMinimum(0.4);
  ratios->GetYaxis()->SetTitleSize(2*ratios->GetYaxis()->GetTitleSize());
  ratios->GetYaxis()->SetLabelSize(2*ratios->GetYaxis()->GetLabelSize());
  ratios->GetYaxis()->SetNdivisions(508);
  ratios->GetXaxis()->SetTitleSize(2*ratios->GetXaxis()->GetTitleSize());
  ratios->GetXaxis()->SetLabelSize(2*ratios->GetXaxis()->GetLabelSize());
  ratios->GetXaxis()->SetNdivisions(510);
  ratios->GetXaxis()->SetTitle("#eta");
  ratios->GetXaxis()->SetTitleFont(132);
  ratios->GetYaxis()->SetTitleFont(132);
  ratios->GetXaxis()->SetLabelFont(132);
  ratios->GetYaxis()->SetLabelFont(132);
  ratios->GetYaxis()->SetDecimals();
  p2->Clear();

  TGraphErrors* sysErr = new TGraphErrors(2);
  sysErr->SetPoint(0, all->GetHistogram()->GetXaxis()->GetXmin(),1);
  sysErr->SetPoint(1, all->GetHistogram()->GetXaxis()->GetXmax(),1);
  sysErr->SetPointError(0,0,.07);
  sysErr->SetPointError(1,0,.07);
  sysErr->SetTitle("Systematic error on Forward+Central");
  sysErr->SetFillColor(kYellow+1);
  sysErr->SetFillStyle(3001);  
  sysErr->SetHistogram(ratios->GetHistogram());
  sysErr->DrawClone("ael3");
  ratios->DrawClone("nostack same");

  TF1* fitfit = new TF1("fitfit", myRatio, alilow, alihigh, 8);
  fitfit->SetParameters(ua5fit->GetParameter(0), 
			ua5fit->GetParameter(1), 
			ua5fit->GetParameter(2), 
			ua5fit->GetParameter(3), 
			alifit->GetParameter(0),
			alifit->GetParameter(1),
			alifit->GetParameter(2),
			alifit->GetParameter(3));
  fitfit->Draw("same");
  
  TLegend* ll = new TLegend(.3,.15, .7, .6);
  ll->AddEntry(sysErr, sysErr->GetTitle(), "f");
  ll->AddEntry(ua5ali, ua5ali->GetTitle(), "lp");
  ll->AddEntry(aliua5, aliua5->GetTitle(), "lp");
  ll->AddEntry(fitfit, "UA5 (fit) / Forward+Central (fit)", "lp");
  ll->SetTextFont(132);
  ll->SetBorderSize(0);
  ll->SetFillColor(0);
  ll->SetFillStyle(0);
  ll->Draw();


  c->SaveAs(Form("ua5_ratios_%s_r%02d.png", trg->GetTitle(), rebin));
  gROOT->GetInterpreter()->UnloadFile("OtherData.C");

}

//____________________________________________________________________
//
// EOF
//
 DrawUA5Ratios.C:1
 DrawUA5Ratios.C:2
 DrawUA5Ratios.C:3
 DrawUA5Ratios.C:4
 DrawUA5Ratios.C:5
 DrawUA5Ratios.C:6
 DrawUA5Ratios.C:7
 DrawUA5Ratios.C:8
 DrawUA5Ratios.C:9
 DrawUA5Ratios.C:10
 DrawUA5Ratios.C:11
 DrawUA5Ratios.C:12
 DrawUA5Ratios.C:13
 DrawUA5Ratios.C:14
 DrawUA5Ratios.C:15
 DrawUA5Ratios.C:16
 DrawUA5Ratios.C:17
 DrawUA5Ratios.C:18
 DrawUA5Ratios.C:19
 DrawUA5Ratios.C:20
 DrawUA5Ratios.C:21
 DrawUA5Ratios.C:22
 DrawUA5Ratios.C:23
 DrawUA5Ratios.C:24
 DrawUA5Ratios.C:25
 DrawUA5Ratios.C:26
 DrawUA5Ratios.C:27
 DrawUA5Ratios.C:28
 DrawUA5Ratios.C:29
 DrawUA5Ratios.C:30
 DrawUA5Ratios.C:31
 DrawUA5Ratios.C:32
 DrawUA5Ratios.C:33
 DrawUA5Ratios.C:34
 DrawUA5Ratios.C:35
 DrawUA5Ratios.C:36
 DrawUA5Ratios.C:37
 DrawUA5Ratios.C:38
 DrawUA5Ratios.C:39
 DrawUA5Ratios.C:40
 DrawUA5Ratios.C:41
 DrawUA5Ratios.C:42
 DrawUA5Ratios.C:43
 DrawUA5Ratios.C:44
 DrawUA5Ratios.C:45
 DrawUA5Ratios.C:46
 DrawUA5Ratios.C:47
 DrawUA5Ratios.C:48
 DrawUA5Ratios.C:49
 DrawUA5Ratios.C:50
 DrawUA5Ratios.C:51
 DrawUA5Ratios.C:52
 DrawUA5Ratios.C:53
 DrawUA5Ratios.C:54
 DrawUA5Ratios.C:55
 DrawUA5Ratios.C:56
 DrawUA5Ratios.C:57
 DrawUA5Ratios.C:58
 DrawUA5Ratios.C:59
 DrawUA5Ratios.C:60
 DrawUA5Ratios.C:61
 DrawUA5Ratios.C:62
 DrawUA5Ratios.C:63
 DrawUA5Ratios.C:64
 DrawUA5Ratios.C:65
 DrawUA5Ratios.C:66
 DrawUA5Ratios.C:67
 DrawUA5Ratios.C:68
 DrawUA5Ratios.C:69
 DrawUA5Ratios.C:70
 DrawUA5Ratios.C:71
 DrawUA5Ratios.C:72
 DrawUA5Ratios.C:73
 DrawUA5Ratios.C:74
 DrawUA5Ratios.C:75
 DrawUA5Ratios.C:76
 DrawUA5Ratios.C:77
 DrawUA5Ratios.C:78
 DrawUA5Ratios.C:79
 DrawUA5Ratios.C:80
 DrawUA5Ratios.C:81
 DrawUA5Ratios.C:82
 DrawUA5Ratios.C:83
 DrawUA5Ratios.C:84
 DrawUA5Ratios.C:85
 DrawUA5Ratios.C:86
 DrawUA5Ratios.C:87
 DrawUA5Ratios.C:88
 DrawUA5Ratios.C:89
 DrawUA5Ratios.C:90
 DrawUA5Ratios.C:91
 DrawUA5Ratios.C:92
 DrawUA5Ratios.C:93
 DrawUA5Ratios.C:94
 DrawUA5Ratios.C:95
 DrawUA5Ratios.C:96
 DrawUA5Ratios.C:97
 DrawUA5Ratios.C:98
 DrawUA5Ratios.C:99
 DrawUA5Ratios.C:100
 DrawUA5Ratios.C:101
 DrawUA5Ratios.C:102
 DrawUA5Ratios.C:103
 DrawUA5Ratios.C:104
 DrawUA5Ratios.C:105
 DrawUA5Ratios.C:106
 DrawUA5Ratios.C:107
 DrawUA5Ratios.C:108
 DrawUA5Ratios.C:109
 DrawUA5Ratios.C:110
 DrawUA5Ratios.C:111
 DrawUA5Ratios.C:112
 DrawUA5Ratios.C:113
 DrawUA5Ratios.C:114
 DrawUA5Ratios.C:115
 DrawUA5Ratios.C:116
 DrawUA5Ratios.C:117
 DrawUA5Ratios.C:118
 DrawUA5Ratios.C:119
 DrawUA5Ratios.C:120
 DrawUA5Ratios.C:121
 DrawUA5Ratios.C:122
 DrawUA5Ratios.C:123
 DrawUA5Ratios.C:124
 DrawUA5Ratios.C:125
 DrawUA5Ratios.C:126
 DrawUA5Ratios.C:127
 DrawUA5Ratios.C:128
 DrawUA5Ratios.C:129
 DrawUA5Ratios.C:130
 DrawUA5Ratios.C:131
 DrawUA5Ratios.C:132
 DrawUA5Ratios.C:133
 DrawUA5Ratios.C:134
 DrawUA5Ratios.C:135
 DrawUA5Ratios.C:136
 DrawUA5Ratios.C:137
 DrawUA5Ratios.C:138
 DrawUA5Ratios.C:139
 DrawUA5Ratios.C:140
 DrawUA5Ratios.C:141
 DrawUA5Ratios.C:142
 DrawUA5Ratios.C:143
 DrawUA5Ratios.C:144
 DrawUA5Ratios.C:145
 DrawUA5Ratios.C:146
 DrawUA5Ratios.C:147
 DrawUA5Ratios.C:148
 DrawUA5Ratios.C:149
 DrawUA5Ratios.C:150
 DrawUA5Ratios.C:151
 DrawUA5Ratios.C:152
 DrawUA5Ratios.C:153
 DrawUA5Ratios.C:154
 DrawUA5Ratios.C:155
 DrawUA5Ratios.C:156
 DrawUA5Ratios.C:157
 DrawUA5Ratios.C:158
 DrawUA5Ratios.C:159
 DrawUA5Ratios.C:160
 DrawUA5Ratios.C:161
 DrawUA5Ratios.C:162
 DrawUA5Ratios.C:163
 DrawUA5Ratios.C:164
 DrawUA5Ratios.C:165
 DrawUA5Ratios.C:166
 DrawUA5Ratios.C:167
 DrawUA5Ratios.C:168
 DrawUA5Ratios.C:169
 DrawUA5Ratios.C:170
 DrawUA5Ratios.C:171
 DrawUA5Ratios.C:172
 DrawUA5Ratios.C:173
 DrawUA5Ratios.C:174
 DrawUA5Ratios.C:175
 DrawUA5Ratios.C:176
 DrawUA5Ratios.C:177
 DrawUA5Ratios.C:178
 DrawUA5Ratios.C:179
 DrawUA5Ratios.C:180
 DrawUA5Ratios.C:181
 DrawUA5Ratios.C:182
 DrawUA5Ratios.C:183
 DrawUA5Ratios.C:184
 DrawUA5Ratios.C:185
 DrawUA5Ratios.C:186
 DrawUA5Ratios.C:187
 DrawUA5Ratios.C:188
 DrawUA5Ratios.C:189
 DrawUA5Ratios.C:190
 DrawUA5Ratios.C:191
 DrawUA5Ratios.C:192
 DrawUA5Ratios.C:193
 DrawUA5Ratios.C:194
 DrawUA5Ratios.C:195
 DrawUA5Ratios.C:196
 DrawUA5Ratios.C:197
 DrawUA5Ratios.C:198
 DrawUA5Ratios.C:199
 DrawUA5Ratios.C:200
 DrawUA5Ratios.C:201
 DrawUA5Ratios.C:202
 DrawUA5Ratios.C:203
 DrawUA5Ratios.C:204
 DrawUA5Ratios.C:205
 DrawUA5Ratios.C:206
 DrawUA5Ratios.C:207
 DrawUA5Ratios.C:208
 DrawUA5Ratios.C:209
 DrawUA5Ratios.C:210
 DrawUA5Ratios.C:211
 DrawUA5Ratios.C:212
 DrawUA5Ratios.C:213
 DrawUA5Ratios.C:214
 DrawUA5Ratios.C:215
 DrawUA5Ratios.C:216
 DrawUA5Ratios.C:217
 DrawUA5Ratios.C:218
 DrawUA5Ratios.C:219
 DrawUA5Ratios.C:220
 DrawUA5Ratios.C:221
 DrawUA5Ratios.C:222
 DrawUA5Ratios.C:223
 DrawUA5Ratios.C:224
 DrawUA5Ratios.C:225
 DrawUA5Ratios.C:226
 DrawUA5Ratios.C:227
 DrawUA5Ratios.C:228
 DrawUA5Ratios.C:229
 DrawUA5Ratios.C:230
 DrawUA5Ratios.C:231
 DrawUA5Ratios.C:232
 DrawUA5Ratios.C:233
 DrawUA5Ratios.C:234
 DrawUA5Ratios.C:235
 DrawUA5Ratios.C:236
 DrawUA5Ratios.C:237
 DrawUA5Ratios.C:238
 DrawUA5Ratios.C:239
 DrawUA5Ratios.C:240
 DrawUA5Ratios.C:241
 DrawUA5Ratios.C:242
 DrawUA5Ratios.C:243
 DrawUA5Ratios.C:244
 DrawUA5Ratios.C:245
 DrawUA5Ratios.C:246
 DrawUA5Ratios.C:247
 DrawUA5Ratios.C:248
 DrawUA5Ratios.C:249
 DrawUA5Ratios.C:250
 DrawUA5Ratios.C:251
 DrawUA5Ratios.C:252
 DrawUA5Ratios.C:253
 DrawUA5Ratios.C:254
 DrawUA5Ratios.C:255
 DrawUA5Ratios.C:256
 DrawUA5Ratios.C:257
 DrawUA5Ratios.C:258
 DrawUA5Ratios.C:259
 DrawUA5Ratios.C:260
 DrawUA5Ratios.C:261
 DrawUA5Ratios.C:262
 DrawUA5Ratios.C:263
 DrawUA5Ratios.C:264
 DrawUA5Ratios.C:265
 DrawUA5Ratios.C:266
 DrawUA5Ratios.C:267
 DrawUA5Ratios.C:268
 DrawUA5Ratios.C:269
 DrawUA5Ratios.C:270
 DrawUA5Ratios.C:271
 DrawUA5Ratios.C:272
 DrawUA5Ratios.C:273
 DrawUA5Ratios.C:274
 DrawUA5Ratios.C:275
 DrawUA5Ratios.C:276
 DrawUA5Ratios.C:277
 DrawUA5Ratios.C:278
 DrawUA5Ratios.C:279
 DrawUA5Ratios.C:280
 DrawUA5Ratios.C:281
 DrawUA5Ratios.C:282
 DrawUA5Ratios.C:283
 DrawUA5Ratios.C:284
 DrawUA5Ratios.C:285
 DrawUA5Ratios.C:286
 DrawUA5Ratios.C:287
 DrawUA5Ratios.C:288
 DrawUA5Ratios.C:289
 DrawUA5Ratios.C:290
 DrawUA5Ratios.C:291
 DrawUA5Ratios.C:292
 DrawUA5Ratios.C:293
 DrawUA5Ratios.C:294
 DrawUA5Ratios.C:295
 DrawUA5Ratios.C:296
 DrawUA5Ratios.C:297
 DrawUA5Ratios.C:298
 DrawUA5Ratios.C:299
 DrawUA5Ratios.C:300
 DrawUA5Ratios.C:301
 DrawUA5Ratios.C:302
 DrawUA5Ratios.C:303
 DrawUA5Ratios.C:304
 DrawUA5Ratios.C:305
 DrawUA5Ratios.C:306
 DrawUA5Ratios.C:307
 DrawUA5Ratios.C:308
 DrawUA5Ratios.C:309
 DrawUA5Ratios.C:310
 DrawUA5Ratios.C:311
 DrawUA5Ratios.C:312
 DrawUA5Ratios.C:313
 DrawUA5Ratios.C:314
 DrawUA5Ratios.C:315
 DrawUA5Ratios.C:316
 DrawUA5Ratios.C:317
 DrawUA5Ratios.C:318
 DrawUA5Ratios.C:319
 DrawUA5Ratios.C:320
 DrawUA5Ratios.C:321
 DrawUA5Ratios.C:322
 DrawUA5Ratios.C:323
 DrawUA5Ratios.C:324
 DrawUA5Ratios.C:325
 DrawUA5Ratios.C:326
 DrawUA5Ratios.C:327
 DrawUA5Ratios.C:328
 DrawUA5Ratios.C:329
 DrawUA5Ratios.C:330
 DrawUA5Ratios.C:331
 DrawUA5Ratios.C:332
 DrawUA5Ratios.C:333
 DrawUA5Ratios.C:334
 DrawUA5Ratios.C:335
 DrawUA5Ratios.C:336
 DrawUA5Ratios.C:337
 DrawUA5Ratios.C:338
 DrawUA5Ratios.C:339
 DrawUA5Ratios.C:340
 DrawUA5Ratios.C:341
 DrawUA5Ratios.C:342
 DrawUA5Ratios.C:343
 DrawUA5Ratios.C:344
 DrawUA5Ratios.C:345
 DrawUA5Ratios.C:346
 DrawUA5Ratios.C:347
 DrawUA5Ratios.C:348
 DrawUA5Ratios.C:349
 DrawUA5Ratios.C:350
 DrawUA5Ratios.C:351
 DrawUA5Ratios.C:352
 DrawUA5Ratios.C:353
 DrawUA5Ratios.C:354
 DrawUA5Ratios.C:355
 DrawUA5Ratios.C:356
 DrawUA5Ratios.C:357
 DrawUA5Ratios.C:358
 DrawUA5Ratios.C:359
 DrawUA5Ratios.C:360
 DrawUA5Ratios.C:361
 DrawUA5Ratios.C:362
 DrawUA5Ratios.C:363
 DrawUA5Ratios.C:364
 DrawUA5Ratios.C:365
 DrawUA5Ratios.C:366
 DrawUA5Ratios.C:367
 DrawUA5Ratios.C:368
 DrawUA5Ratios.C:369
 DrawUA5Ratios.C:370
 DrawUA5Ratios.C:371
 DrawUA5Ratios.C:372
 DrawUA5Ratios.C:373
 DrawUA5Ratios.C:374
 DrawUA5Ratios.C:375
 DrawUA5Ratios.C:376
 DrawUA5Ratios.C:377
 DrawUA5Ratios.C:378
 DrawUA5Ratios.C:379
 DrawUA5Ratios.C:380
 DrawUA5Ratios.C:381
 DrawUA5Ratios.C:382
 DrawUA5Ratios.C:383
 DrawUA5Ratios.C:384
 DrawUA5Ratios.C:385
 DrawUA5Ratios.C:386
 DrawUA5Ratios.C:387
 DrawUA5Ratios.C:388
 DrawUA5Ratios.C:389
 DrawUA5Ratios.C:390
 DrawUA5Ratios.C:391
 DrawUA5Ratios.C:392
 DrawUA5Ratios.C:393
 DrawUA5Ratios.C:394
 DrawUA5Ratios.C:395
 DrawUA5Ratios.C:396
 DrawUA5Ratios.C:397
 DrawUA5Ratios.C:398
 DrawUA5Ratios.C:399
 DrawUA5Ratios.C:400
 DrawUA5Ratios.C:401
 DrawUA5Ratios.C:402
 DrawUA5Ratios.C:403
 DrawUA5Ratios.C:404
 DrawUA5Ratios.C:405
 DrawUA5Ratios.C:406
 DrawUA5Ratios.C:407
 DrawUA5Ratios.C:408
 DrawUA5Ratios.C:409
 DrawUA5Ratios.C:410
 DrawUA5Ratios.C:411
 DrawUA5Ratios.C:412
 DrawUA5Ratios.C:413
 DrawUA5Ratios.C:414
 DrawUA5Ratios.C:415
 DrawUA5Ratios.C:416
 DrawUA5Ratios.C:417
 DrawUA5Ratios.C:418
 DrawUA5Ratios.C:419
 DrawUA5Ratios.C:420
 DrawUA5Ratios.C:421
 DrawUA5Ratios.C:422
 DrawUA5Ratios.C:423
 DrawUA5Ratios.C:424
 DrawUA5Ratios.C:425
 DrawUA5Ratios.C:426
 DrawUA5Ratios.C:427
 DrawUA5Ratios.C:428
 DrawUA5Ratios.C:429
 DrawUA5Ratios.C:430
 DrawUA5Ratios.C:431
 DrawUA5Ratios.C:432
 DrawUA5Ratios.C:433
 DrawUA5Ratios.C:434
 DrawUA5Ratios.C:435
 DrawUA5Ratios.C:436
 DrawUA5Ratios.C:437
 DrawUA5Ratios.C:438
 DrawUA5Ratios.C:439
 DrawUA5Ratios.C:440
 DrawUA5Ratios.C:441
 DrawUA5Ratios.C:442
 DrawUA5Ratios.C:443
 DrawUA5Ratios.C:444
 DrawUA5Ratios.C:445
 DrawUA5Ratios.C:446
 DrawUA5Ratios.C:447
 DrawUA5Ratios.C:448
 DrawUA5Ratios.C:449
 DrawUA5Ratios.C:450
 DrawUA5Ratios.C:451
 DrawUA5Ratios.C:452
 DrawUA5Ratios.C:453
 DrawUA5Ratios.C:454
 DrawUA5Ratios.C:455
 DrawUA5Ratios.C:456
 DrawUA5Ratios.C:457
 DrawUA5Ratios.C:458
 DrawUA5Ratios.C:459
 DrawUA5Ratios.C:460
 DrawUA5Ratios.C:461
 DrawUA5Ratios.C:462
 DrawUA5Ratios.C:463
 DrawUA5Ratios.C:464
 DrawUA5Ratios.C:465
 DrawUA5Ratios.C:466
 DrawUA5Ratios.C:467
 DrawUA5Ratios.C:468
 DrawUA5Ratios.C:469
 DrawUA5Ratios.C:470
 DrawUA5Ratios.C:471
 DrawUA5Ratios.C:472
 DrawUA5Ratios.C:473
 DrawUA5Ratios.C:474
 DrawUA5Ratios.C:475
 DrawUA5Ratios.C:476
 DrawUA5Ratios.C:477
 DrawUA5Ratios.C:478
 DrawUA5Ratios.C:479
 DrawUA5Ratios.C:480
 DrawUA5Ratios.C:481
 DrawUA5Ratios.C:482
 DrawUA5Ratios.C:483
 DrawUA5Ratios.C:484
 DrawUA5Ratios.C:485
 DrawUA5Ratios.C:486
 DrawUA5Ratios.C:487
 DrawUA5Ratios.C:488
 DrawUA5Ratios.C:489
 DrawUA5Ratios.C:490
 DrawUA5Ratios.C:491
 DrawUA5Ratios.C:492
 DrawUA5Ratios.C:493
 DrawUA5Ratios.C:494
 DrawUA5Ratios.C:495
 DrawUA5Ratios.C:496
 DrawUA5Ratios.C:497
 DrawUA5Ratios.C:498
 DrawUA5Ratios.C:499
 DrawUA5Ratios.C:500
 DrawUA5Ratios.C:501
 DrawUA5Ratios.C:502
 DrawUA5Ratios.C:503
 DrawUA5Ratios.C:504
 DrawUA5Ratios.C:505
 DrawUA5Ratios.C:506
 DrawUA5Ratios.C:507
 DrawUA5Ratios.C:508
 DrawUA5Ratios.C:509
 DrawUA5Ratios.C:510
 DrawUA5Ratios.C:511
 DrawUA5Ratios.C:512
 DrawUA5Ratios.C:513
 DrawUA5Ratios.C:514
 DrawUA5Ratios.C:515
 DrawUA5Ratios.C:516
 DrawUA5Ratios.C:517
 DrawUA5Ratios.C:518
 DrawUA5Ratios.C:519
 DrawUA5Ratios.C:520
 DrawUA5Ratios.C:521
 DrawUA5Ratios.C:522
 DrawUA5Ratios.C:523
 DrawUA5Ratios.C:524
 DrawUA5Ratios.C:525
 DrawUA5Ratios.C:526
 DrawUA5Ratios.C:527
 DrawUA5Ratios.C:528
 DrawUA5Ratios.C:529
 DrawUA5Ratios.C:530
 DrawUA5Ratios.C:531
 DrawUA5Ratios.C:532
 DrawUA5Ratios.C:533
 DrawUA5Ratios.C:534
 DrawUA5Ratios.C:535
 DrawUA5Ratios.C:536
 DrawUA5Ratios.C:537
 DrawUA5Ratios.C:538
 DrawUA5Ratios.C:539
 DrawUA5Ratios.C:540
 DrawUA5Ratios.C:541
 DrawUA5Ratios.C:542
 DrawUA5Ratios.C:543
 DrawUA5Ratios.C:544
 DrawUA5Ratios.C:545
 DrawUA5Ratios.C:546
 DrawUA5Ratios.C:547
 DrawUA5Ratios.C:548
 DrawUA5Ratios.C:549
 DrawUA5Ratios.C:550
 DrawUA5Ratios.C:551
 DrawUA5Ratios.C:552
 DrawUA5Ratios.C:553
 DrawUA5Ratios.C:554
 DrawUA5Ratios.C:555
 DrawUA5Ratios.C:556
 DrawUA5Ratios.C:557
 DrawUA5Ratios.C:558
 DrawUA5Ratios.C:559
 DrawUA5Ratios.C:560
 DrawUA5Ratios.C:561
 DrawUA5Ratios.C:562
 DrawUA5Ratios.C:563
 DrawUA5Ratios.C:564
 DrawUA5Ratios.C:565
 DrawUA5Ratios.C:566
 DrawUA5Ratios.C:567
 DrawUA5Ratios.C:568
 DrawUA5Ratios.C:569
 DrawUA5Ratios.C:570
 DrawUA5Ratios.C:571
 DrawUA5Ratios.C:572
 DrawUA5Ratios.C:573
 DrawUA5Ratios.C:574
 DrawUA5Ratios.C:575
 DrawUA5Ratios.C:576
 DrawUA5Ratios.C:577
 DrawUA5Ratios.C:578
 DrawUA5Ratios.C:579
 DrawUA5Ratios.C:580
 DrawUA5Ratios.C:581
 DrawUA5Ratios.C:582
 DrawUA5Ratios.C:583
 DrawUA5Ratios.C:584
 DrawUA5Ratios.C:585
 DrawUA5Ratios.C:586
 DrawUA5Ratios.C:587
 DrawUA5Ratios.C:588
 DrawUA5Ratios.C:589
 DrawUA5Ratios.C:590
 DrawUA5Ratios.C:591
 DrawUA5Ratios.C:592
 DrawUA5Ratios.C:593
 DrawUA5Ratios.C:594
 DrawUA5Ratios.C:595