ROOT logo
/**
 * @file   DrawAnaELoss.C
 * @author Christian Holm Christensen <cholm@nbi.dk>
 * @date   Thu Nov 17 11:16:45 2011
 * 
 * @brief  Script to draw the energy loss fits from the output file of 
 * AliFMDELossFitter(Task). 
 * 
 * @ingroup pwglf_forward_scripts_corr
 * 
 */
#include <TFile.h>
#include <THStack.h>
#include <TList.h>
#include <TError.h>
#include <TCanvas.h>
#include <TPad.h>
#include <TStyle.h>
#include <TF1.h>
#include <TLegend.h>
#include <TMath.h>

//____________________________________________________________________
// Global 
/** List of fitters */
TList* fitter = 0;
/** Canvas */
TCanvas* canvas = 0;
/** Name of output file */
const char* pdfName = "FitResults.pdf";
/** Produce plots in landscape mode */
bool landscape = true;

//____________________________________________________________________
/** 
 * Open a file.  The file is expected to contain the directory 
 * structure 
 *
 * @verbatim 
 *  file
 *   +- ForwardResults
 *       +- fmdEnergyFitter 
 *           +- chi2   (THStack)
 *           +- c      (THStack)
 *           +- delta  (THStack)
 *           +- xi     (THStack)
 *           +- sigma  (THStack)
 *           +- sigman (THStack)
 *           +- n      (THStack)
 *           +- a2     (THStack)
 *           +- ...    (THStack)
 *           +- an     (THStack)
 *           +- FMD1I (TList)
 *           |   +- FMD1I_edist (TH1)
 *           |   +- EDists      (TList)
 *           ...
 * @endverbatim
 * 
 * @param fname File to open  
 * 
 * @return Pointer to the list of objects 
 * 
 * @ingroup pwglf_forward_scripts_corr
 */
TList* OpenFile(const char* fname)
{
  TFile* file = TFile::Open(fname, "READ");
  if (!file) {
    Error("DrawFits", "Couldn't open %s", fname);
    return 0;
  }
    
  TList* forward = static_cast<TList*>(file->Get("ForwardResults"));
  // static_cast<TList*>(file->Get("PWGLFforwardDnDeta/Forward"));
  if (!forward) { 
    Error("DrawFits", "Couldn't get forward list from %s", fname);
    return 0;
  }

  fitter = static_cast<TList*>(forward->FindObject("fmdEnergyFitter"));
  if (!fitter) { 
    Error("DrawFits", "Couldn't get fitter folder");
    return 0;
  }
  return fitter;
}
//____________________________________________________________________
/** 
 * Open file if not done already 
 * 
 * @param fname File to open
 * 
 * @return List of fits 
 * 
 * @ingroup pwglf_forward_scripts_corr
 */
TList* CheckFitter(const char* fname="AnalysisResults.root")
{
  if (!fitter) return OpenFile(fname);
  return fitter;
}

//____________________________________________________________________
/** 
 * Make canvas if not done already 
 * 
 * 
 * @return Canvas 
 * 
 * @ingroup pwglf_forward_scripts_corr
 */
TCanvas* CheckCanvas()
{
  if (canvas) return canvas;

  gStyle->SetOptFit(111111);
  gStyle->SetTitleFillColor(0);
  gStyle->SetTitleBorderSize(0);
  gStyle->SetTitleX(0);
  gStyle->SetTitleY(.9);
  gStyle->SetTitleW(.4);
  gStyle->SetTitleH(.1);
  gStyle->SetStatW(0.2);
  gStyle->SetStatH(0.2);
  gStyle->SetStatColor(0);
  gStyle->SetStatBorderSize(1);
  gStyle->SetOptTitle(0);
  gStyle->SetOptFit(1111);
  gStyle->SetStatW(0.3);
  gStyle->SetStatH(0.15);
  gStyle->SetStatColor(0);
  gStyle->SetStatBorderSize(1);

  Int_t w = Int_t(800 / TMath::Sqrt(2));
  Int_t h = 800;
  if (landscape) { 
    Int_t tmp = h;
    h         = w;
    w         = tmp;
  }
  canvas = new TCanvas("c", "C", w, h);
  canvas->SetFillColor(0);
  canvas->SetBorderMode(0);
  canvas->SetBorderSize(0);
  canvas->SetBottomMargin(0.15);
  return canvas;
}

//____________________________________________________________________
/** 
 * Clean stack for full ring histograms
 *  
 * @param stack Input stack
 *
 * @ingroup pwglf_forward_scripts_corr
 */
void CleanStack(THStack* stack)
{
  TIter next(stack->GetHists());
  TObject* o = 0;
  while ((o = next())) { 
    TString name(o->GetName());
    if (name.Contains("_t_")) 
      stack->RecursiveRemove(o);
  }}
  

//____________________________________________________________________
/** 
 * Add a stack to list 
 * 
 * @param stacks List to add to 
 * @param list   Input list 
 * @param name   Name of stack to add 
 * 
 * @return The found stack
 *
 * @ingroup pwglf_forward_scripts_corr
 */
THStack*
AddToStack(TList* stacks, TList* list, const char* name)
{
  TObject* o = list->FindObject(name);
  if (!o) { 
    Warning("AddToStack", "Object %s not found in %s", name, 
	    list->GetName());
    // list->ls();
    return 0;
  }
  THStack* toAdd = static_cast<THStack*>(o);
  CleanStack(toAdd);
  Info("AddToStack", "Adding %s to stacks", name);
  stacks->Add(toAdd);
  return toAdd;
}

  
//____________________________________________________________________
/** 
 * Draw summary 
 * 
 * @param fname       File name to read 
 * @param onlySummary Only plot summary pae 
 * 
 * @ingroup pwglf_forward_scripts_corr
 */
void DrawSummary(const char* fname="forward_eloss.root", 
		 bool onlySummary=true)
{
  if (!CheckFitter(fname)) {
    Error("DrawFits", "File not opened");
    return;
  }
  if (!CheckCanvas()) {
    Error("DrawFits", "No canvas");
    return;
  }
  canvas->Clear();

  TList    stacks;
  /* THStack* chi2nu  = */ AddToStack(&stacks, fitter, "chi2");
  /* THStack* c       = */ AddToStack(&stacks, fitter, "c");
  /* THStack* delta   = */ AddToStack(&stacks, fitter, "delta");
  /* THStack* xi      = */ AddToStack(&stacks, fitter, "xi");
  /* THStack* sigma   = */ AddToStack(&stacks, fitter, "sigma");
  /* THStack* sigman  = */ AddToStack(&stacks, fitter, "sigman");
  /* THStack* n       = */ AddToStack(&stacks, fitter, "n");
  Int_t    baseA   = stacks.GetEntries()+1;
  Int_t    i       = 2;
  while (true) { 
    if (!AddToStack(&stacks, fitter, Form("a%d",i++)))
      break;
  }
  // stacks.ls();
  Int_t nMax = stacks.GetEntries();
  for (i = nMax-1; i >= baseA; i--) { 
    THStack* stack   = static_cast<THStack*>(stacks.At(i));
    TIter    nextH(stack->GetHists());
    TH1*     hist    = 0;
    Bool_t   hasData = kFALSE;
    while ((hist = static_cast<TH1*>(nextH()))) 
      if (hist->Integral() > 0) hasData = kTRUE;
    if (!hasData) nMax--;
  }

  canvas->SetRightMargin(0.01);
  canvas->SetTopMargin(0.01);
  Int_t nL = (nMax+1) / 2;
  Int_t nX = 2;
  Int_t nY = nL;
  if (landscape) { 
    Int_t tmp = nY;
    nY        = nX;
    nX        = tmp;
  }

  canvas->Divide(nX, nY, 0.1, 0, 0);

  TIter next(&stacks);
  THStack* stack = 0;
  i = 0;
  // Int_t b = 1;
  while ((stack = static_cast<THStack*>(next()))) {
    if (i > nMax) break;
    Int_t ipad = 1+i/nL + 2 * (i % nL);
    Info("DrawSummary", "cd'ing to canvas %d for %s", ipad, 
	 stack->GetName());
    TVirtualPad* p = canvas->cd(ipad);
    p->SetLeftMargin(.6/nL);
    p->SetTopMargin(.01);
    p->SetRightMargin(.01);
    p->SetFillColor(0);
    p->SetFillStyle(0);
    p->SetGridx();
    stack->Draw("nostack");
    stack->GetHistogram()->SetYTitle(stack->GetTitle());
    stack->GetHistogram()->SetXTitle("#eta");

    TAxis* yaxis = stack->GetHistogram()->GetYaxis();
    if (i == 0)                     yaxis->SetRangeUser(0,20); // Chi2
    if (i == 1)                     stack->SetMaximum(1);      // c
    if (i == 2)                     stack->SetMaximum(1);      // delta
    if (i == 3)                     stack->SetMaximum(0.1);   // xi
    if (i == 4 || i == 5)           stack->SetMaximum(0.5);    // sigma{,n}
    if (i == 7)                     stack->SetMaximum(0.5);    // a
    if (i == 0) p->SetLogy();
    yaxis->SetTitleSize(0.3/nL);
    yaxis->SetLabelSize(0.08);
    yaxis->SetTitleOffset(2.5/nL);
    yaxis->SetNdivisions(5);
    yaxis->SetTitleFont(42);
    yaxis->SetLabelFont(42);
    yaxis->SetDecimals();
    
    TAxis* xaxis = stack->GetHistogram()->GetXaxis();
    xaxis->SetTitleSize(0.3/nL);
    xaxis->SetLabelSize(0.08);
    xaxis->SetTitleOffset(2./nL);
    xaxis->SetNdivisions(10);
    xaxis->SetTitleFont(42);
    xaxis->SetLabelFont(42);
    xaxis->SetDecimals();

    // Redraw 
    stack->Draw("nostack");
    i++;
    // if (i >= 5) b = 2;
    p->cd();
  }
  canvas->SaveAs("fit_results.png");
  if (!onlySummary) 
    canvas->Print(pdfName, "Title:Fit summary");
}

//____________________________________________________________________
/** 
 * Draw ring fits 
 * 
 * @param fname 
 * 
 * @ingroup pwglf_forward_scripts_corr
 *
 * @ingroup pwglf_forward_scripts_corr
 */
void DrawRings(const char* fname="AnalysisResults.root")
{
  if (!CheckFitter(fname)) {
    Error("DrawFits", "File not opened");
    return;
  }
  if (!CheckCanvas()) {
    Error("DrawFits", "No canvas");
    return;
  }
  canvas->Clear();
  
  canvas->Clear();
  canvas->Divide(1, 5,0,0);

  const char* dets[] = { "FMD1I", "FMD2I", "FMD2O", "FMD3I", "FMD3O", 0 };
  for (Int_t i = 0; i < 5; i++) { 
    TVirtualPad* p = canvas->cd(i+1);
    p->SetGridx();
    p->SetFillColor(0);
    p->SetFillStyle(0);
    p->SetLogy();
    TList* d = static_cast<TList*>(fitter->FindObject(dets[i]));
    if (!d) { 
      Warning("DrawFits", "List %s not found", dets[i]);
      continue;
    }
    TH1* edist = static_cast<TH1*>(d->FindObject(Form("%s_edist", dets[i])));
    if (!edist) {
      Warning("DrawFits", "Histogram %s_edist not found", dets[i]);
      continue;
    }
    edist->Draw();
    TF1*   f = 0;
    TIter  nextF(edist->GetListOfFunctions());
    while ((f = static_cast<TF1*>(nextF()))) {
      Double_t chi2 = f->GetChisquare();
      Int_t    ndf  = f->GetNDF();
      Printf("%s %s:\n  Range: %f-%f\n" 
             "chi^2/ndf= %f / %d = %f", 
	     edist->GetName(), f->GetName(), 
             f->GetXmin(), f->GetXmax(), chi2, ndf, 
	     (ndf > 0) ? chi2/ndf : 0);
      for (Int_t j = 0; j < f->GetNpar(); j++) { 
	Printf("  %-20s : %9.4f +/- %9.4f", 
	       f->GetParName(j), f->GetParameter(j), f->GetParError(j));
      }
    }
    p->cd();
  }
  canvas->cd();
  canvas->Print(pdfName, "Title:Fit to rings");
}

//____________________________________________________________________
/** 
 * Draw fits in eta bins 
 * 
 * @param fname 
 * 
 * @ingroup pwglf_forward_scripts_corr
 *
 * @ingroup pwglf_forward_scripts_corr
 */
void DrawEtaBins(const char* fname="AnalysisResults.root")
{
  if (!CheckFitter(fname)) {
    Error("DrawFits", "File not opened");
    return;
  }
  if (!CheckCanvas()) {
    Error("DrawFits", "No canvas");
    return;
  }
  canvas->Clear();
  canvas->Divide(2,2,0,0);

  for (UShort_t d=1; d<=3; d++) { 
    UShort_t nQ = (d == 1 ? 1 : 2);
    for (UShort_t q = 0; q < nQ; q++) { 
      Char_t r = (q == 0 ? 'I' : 'O');
      
      TList* ring = 
	static_cast<TList*>(fitter->FindObject(Form("FMD%d%c",d,r)));
      if (!ring) { 
	Error("PrintFits", "Couldn't get ring FMD%d%c", d,r);
	continue; 
      }
      TList* edists = static_cast<TList*>(ring->FindObject("EDists"));
      if (!edists) { 
	Error("PrintFits", "Couldn't get EDists list for FMD%d%c", d,r);
	continue; 
      }
      
      Info("DrawEtaBins", "Drawing for FMD%d%c", d, r);
      TIter next(edists);
      TH1*  dist = 0;
      Int_t i    = 0;
      Int_t j    = 1;
      while ((dist = static_cast<TH1*>(next()))) { 
	Info("DrawEtaBins", "FMD%d%c: %s", d, r, dist->GetName());
	if (i == 4) { 
	  i = 0;
	  j++;
	  canvas->Print(pdfName, Form("Title:FMD%d%c page %2d", d,r,j));
	}
	TVirtualPad* p = canvas->cd(++i);
	p->SetFillColor(kWhite);
	p->SetFillStyle(0);
	p->SetBorderSize(0);
	p->SetLogy();
	dist->SetMaximum(15);
	dist->Draw();
	
      }
      if (i != 0) {
	i++;
	for (; i <= 4; i++) {
	  TVirtualPad* p = canvas->cd(i);
	  p->Clear();
	  p->SetFillColor(kMagenta-3);
	  p->SetFillStyle(0);
	  p->SetBorderSize(0);
	}
	canvas->Print(pdfName, Form("FMD%d%c page %2d", d,r,j++));
      }
    }
  }
}   

//____________________________________________________________________
/** 
 * Draw energy loss fits to a multi-page PDF
 *
 * The input file is the result of running AliFMDELossFitter - 
 * either directly via AliFMDELossFitterTask or as part of a larger 
 * train (AliForwardMultiplicityTask or AliForwardMCMultiplicityTask). 
 * 
 * @verbatim 
 *  file
 *   +- ForwardResults 
 *       +- fmdEnergyFitter 
 *           +- chi2   (THStack)
 *           +- c      (THStack)
 *           +- delta  (THStack)
 *           +- xi     (THStack)
 *           +- sigma  (THStack)
 *           +- sigman (THStack)
 *           +- n      (THStack)
 *           +- a2     (THStack)
 *           +- ...    (THStack)
 *           +- an     (THStack)
 *           +- FMD1I (TList)
 *           |   +- FMD1I_edist (TH1)
 *           |   +- EDists      (TList)
 *           ...
 * @endverbatim
 *
 * @param fname       File name to read 
 * @param onlySummary Only plot summary pae 
 * 
 * @ingroup pwglf_forward_scripts_corr
 */
void
DrawAnaELoss(const char* fname="forward_eloss.root", bool onlySummary=true)
{
  if (!CheckCanvas()) {
    Error("DrawFits", "No canvas");
    return;
  }
  if (!onlySummary) canvas->Print(Form("%s[", pdfName));
  DrawSummary(fname, onlySummary);
  if (onlySummary) return;
  DrawRings(fname);
  DrawEtaBins(fname);
  canvas->Print(Form("%s]", pdfName));
}
//
// EOF
//
 DrawAnaELoss.C:1
 DrawAnaELoss.C:2
 DrawAnaELoss.C:3
 DrawAnaELoss.C:4
 DrawAnaELoss.C:5
 DrawAnaELoss.C:6
 DrawAnaELoss.C:7
 DrawAnaELoss.C:8
 DrawAnaELoss.C:9
 DrawAnaELoss.C:10
 DrawAnaELoss.C:11
 DrawAnaELoss.C:12
 DrawAnaELoss.C:13
 DrawAnaELoss.C:14
 DrawAnaELoss.C:15
 DrawAnaELoss.C:16
 DrawAnaELoss.C:17
 DrawAnaELoss.C:18
 DrawAnaELoss.C:19
 DrawAnaELoss.C:20
 DrawAnaELoss.C:21
 DrawAnaELoss.C:22
 DrawAnaELoss.C:23
 DrawAnaELoss.C:24
 DrawAnaELoss.C:25
 DrawAnaELoss.C:26
 DrawAnaELoss.C:27
 DrawAnaELoss.C:28
 DrawAnaELoss.C:29
 DrawAnaELoss.C:30
 DrawAnaELoss.C:31
 DrawAnaELoss.C:32
 DrawAnaELoss.C:33
 DrawAnaELoss.C:34
 DrawAnaELoss.C:35
 DrawAnaELoss.C:36
 DrawAnaELoss.C:37
 DrawAnaELoss.C:38
 DrawAnaELoss.C:39
 DrawAnaELoss.C:40
 DrawAnaELoss.C:41
 DrawAnaELoss.C:42
 DrawAnaELoss.C:43
 DrawAnaELoss.C:44
 DrawAnaELoss.C:45
 DrawAnaELoss.C:46
 DrawAnaELoss.C:47
 DrawAnaELoss.C:48
 DrawAnaELoss.C:49
 DrawAnaELoss.C:50
 DrawAnaELoss.C:51
 DrawAnaELoss.C:52
 DrawAnaELoss.C:53
 DrawAnaELoss.C:54
 DrawAnaELoss.C:55
 DrawAnaELoss.C:56
 DrawAnaELoss.C:57
 DrawAnaELoss.C:58
 DrawAnaELoss.C:59
 DrawAnaELoss.C:60
 DrawAnaELoss.C:61
 DrawAnaELoss.C:62
 DrawAnaELoss.C:63
 DrawAnaELoss.C:64
 DrawAnaELoss.C:65
 DrawAnaELoss.C:66
 DrawAnaELoss.C:67
 DrawAnaELoss.C:68
 DrawAnaELoss.C:69
 DrawAnaELoss.C:70
 DrawAnaELoss.C:71
 DrawAnaELoss.C:72
 DrawAnaELoss.C:73
 DrawAnaELoss.C:74
 DrawAnaELoss.C:75
 DrawAnaELoss.C:76
 DrawAnaELoss.C:77
 DrawAnaELoss.C:78
 DrawAnaELoss.C:79
 DrawAnaELoss.C:80
 DrawAnaELoss.C:81
 DrawAnaELoss.C:82
 DrawAnaELoss.C:83
 DrawAnaELoss.C:84
 DrawAnaELoss.C:85
 DrawAnaELoss.C:86
 DrawAnaELoss.C:87
 DrawAnaELoss.C:88
 DrawAnaELoss.C:89
 DrawAnaELoss.C:90
 DrawAnaELoss.C:91
 DrawAnaELoss.C:92
 DrawAnaELoss.C:93
 DrawAnaELoss.C:94
 DrawAnaELoss.C:95
 DrawAnaELoss.C:96
 DrawAnaELoss.C:97
 DrawAnaELoss.C:98
 DrawAnaELoss.C:99
 DrawAnaELoss.C:100
 DrawAnaELoss.C:101
 DrawAnaELoss.C:102
 DrawAnaELoss.C:103
 DrawAnaELoss.C:104
 DrawAnaELoss.C:105
 DrawAnaELoss.C:106
 DrawAnaELoss.C:107
 DrawAnaELoss.C:108
 DrawAnaELoss.C:109
 DrawAnaELoss.C:110
 DrawAnaELoss.C:111
 DrawAnaELoss.C:112
 DrawAnaELoss.C:113
 DrawAnaELoss.C:114
 DrawAnaELoss.C:115
 DrawAnaELoss.C:116
 DrawAnaELoss.C:117
 DrawAnaELoss.C:118
 DrawAnaELoss.C:119
 DrawAnaELoss.C:120
 DrawAnaELoss.C:121
 DrawAnaELoss.C:122
 DrawAnaELoss.C:123
 DrawAnaELoss.C:124
 DrawAnaELoss.C:125
 DrawAnaELoss.C:126
 DrawAnaELoss.C:127
 DrawAnaELoss.C:128
 DrawAnaELoss.C:129
 DrawAnaELoss.C:130
 DrawAnaELoss.C:131
 DrawAnaELoss.C:132
 DrawAnaELoss.C:133
 DrawAnaELoss.C:134
 DrawAnaELoss.C:135
 DrawAnaELoss.C:136
 DrawAnaELoss.C:137
 DrawAnaELoss.C:138
 DrawAnaELoss.C:139
 DrawAnaELoss.C:140
 DrawAnaELoss.C:141
 DrawAnaELoss.C:142
 DrawAnaELoss.C:143
 DrawAnaELoss.C:144
 DrawAnaELoss.C:145
 DrawAnaELoss.C:146
 DrawAnaELoss.C:147
 DrawAnaELoss.C:148
 DrawAnaELoss.C:149
 DrawAnaELoss.C:150
 DrawAnaELoss.C:151
 DrawAnaELoss.C:152
 DrawAnaELoss.C:153
 DrawAnaELoss.C:154
 DrawAnaELoss.C:155
 DrawAnaELoss.C:156
 DrawAnaELoss.C:157
 DrawAnaELoss.C:158
 DrawAnaELoss.C:159
 DrawAnaELoss.C:160
 DrawAnaELoss.C:161
 DrawAnaELoss.C:162
 DrawAnaELoss.C:163
 DrawAnaELoss.C:164
 DrawAnaELoss.C:165
 DrawAnaELoss.C:166
 DrawAnaELoss.C:167
 DrawAnaELoss.C:168
 DrawAnaELoss.C:169
 DrawAnaELoss.C:170
 DrawAnaELoss.C:171
 DrawAnaELoss.C:172
 DrawAnaELoss.C:173
 DrawAnaELoss.C:174
 DrawAnaELoss.C:175
 DrawAnaELoss.C:176
 DrawAnaELoss.C:177
 DrawAnaELoss.C:178
 DrawAnaELoss.C:179
 DrawAnaELoss.C:180
 DrawAnaELoss.C:181
 DrawAnaELoss.C:182
 DrawAnaELoss.C:183
 DrawAnaELoss.C:184
 DrawAnaELoss.C:185
 DrawAnaELoss.C:186
 DrawAnaELoss.C:187
 DrawAnaELoss.C:188
 DrawAnaELoss.C:189
 DrawAnaELoss.C:190
 DrawAnaELoss.C:191
 DrawAnaELoss.C:192
 DrawAnaELoss.C:193
 DrawAnaELoss.C:194
 DrawAnaELoss.C:195
 DrawAnaELoss.C:196
 DrawAnaELoss.C:197
 DrawAnaELoss.C:198
 DrawAnaELoss.C:199
 DrawAnaELoss.C:200
 DrawAnaELoss.C:201
 DrawAnaELoss.C:202
 DrawAnaELoss.C:203
 DrawAnaELoss.C:204
 DrawAnaELoss.C:205
 DrawAnaELoss.C:206
 DrawAnaELoss.C:207
 DrawAnaELoss.C:208
 DrawAnaELoss.C:209
 DrawAnaELoss.C:210
 DrawAnaELoss.C:211
 DrawAnaELoss.C:212
 DrawAnaELoss.C:213
 DrawAnaELoss.C:214
 DrawAnaELoss.C:215
 DrawAnaELoss.C:216
 DrawAnaELoss.C:217
 DrawAnaELoss.C:218
 DrawAnaELoss.C:219
 DrawAnaELoss.C:220
 DrawAnaELoss.C:221
 DrawAnaELoss.C:222
 DrawAnaELoss.C:223
 DrawAnaELoss.C:224
 DrawAnaELoss.C:225
 DrawAnaELoss.C:226
 DrawAnaELoss.C:227
 DrawAnaELoss.C:228
 DrawAnaELoss.C:229
 DrawAnaELoss.C:230
 DrawAnaELoss.C:231
 DrawAnaELoss.C:232
 DrawAnaELoss.C:233
 DrawAnaELoss.C:234
 DrawAnaELoss.C:235
 DrawAnaELoss.C:236
 DrawAnaELoss.C:237
 DrawAnaELoss.C:238
 DrawAnaELoss.C:239
 DrawAnaELoss.C:240
 DrawAnaELoss.C:241
 DrawAnaELoss.C:242
 DrawAnaELoss.C:243
 DrawAnaELoss.C:244
 DrawAnaELoss.C:245
 DrawAnaELoss.C:246
 DrawAnaELoss.C:247
 DrawAnaELoss.C:248
 DrawAnaELoss.C:249
 DrawAnaELoss.C:250
 DrawAnaELoss.C:251
 DrawAnaELoss.C:252
 DrawAnaELoss.C:253
 DrawAnaELoss.C:254
 DrawAnaELoss.C:255
 DrawAnaELoss.C:256
 DrawAnaELoss.C:257
 DrawAnaELoss.C:258
 DrawAnaELoss.C:259
 DrawAnaELoss.C:260
 DrawAnaELoss.C:261
 DrawAnaELoss.C:262
 DrawAnaELoss.C:263
 DrawAnaELoss.C:264
 DrawAnaELoss.C:265
 DrawAnaELoss.C:266
 DrawAnaELoss.C:267
 DrawAnaELoss.C:268
 DrawAnaELoss.C:269
 DrawAnaELoss.C:270
 DrawAnaELoss.C:271
 DrawAnaELoss.C:272
 DrawAnaELoss.C:273
 DrawAnaELoss.C:274
 DrawAnaELoss.C:275
 DrawAnaELoss.C:276
 DrawAnaELoss.C:277
 DrawAnaELoss.C:278
 DrawAnaELoss.C:279
 DrawAnaELoss.C:280
 DrawAnaELoss.C:281
 DrawAnaELoss.C:282
 DrawAnaELoss.C:283
 DrawAnaELoss.C:284
 DrawAnaELoss.C:285
 DrawAnaELoss.C:286
 DrawAnaELoss.C:287
 DrawAnaELoss.C:288
 DrawAnaELoss.C:289
 DrawAnaELoss.C:290
 DrawAnaELoss.C:291
 DrawAnaELoss.C:292
 DrawAnaELoss.C:293
 DrawAnaELoss.C:294
 DrawAnaELoss.C:295
 DrawAnaELoss.C:296
 DrawAnaELoss.C:297
 DrawAnaELoss.C:298
 DrawAnaELoss.C:299
 DrawAnaELoss.C:300
 DrawAnaELoss.C:301
 DrawAnaELoss.C:302
 DrawAnaELoss.C:303
 DrawAnaELoss.C:304
 DrawAnaELoss.C:305
 DrawAnaELoss.C:306
 DrawAnaELoss.C:307
 DrawAnaELoss.C:308
 DrawAnaELoss.C:309
 DrawAnaELoss.C:310
 DrawAnaELoss.C:311
 DrawAnaELoss.C:312
 DrawAnaELoss.C:313
 DrawAnaELoss.C:314
 DrawAnaELoss.C:315
 DrawAnaELoss.C:316
 DrawAnaELoss.C:317
 DrawAnaELoss.C:318
 DrawAnaELoss.C:319
 DrawAnaELoss.C:320
 DrawAnaELoss.C:321
 DrawAnaELoss.C:322
 DrawAnaELoss.C:323
 DrawAnaELoss.C:324
 DrawAnaELoss.C:325
 DrawAnaELoss.C:326
 DrawAnaELoss.C:327
 DrawAnaELoss.C:328
 DrawAnaELoss.C:329
 DrawAnaELoss.C:330
 DrawAnaELoss.C:331
 DrawAnaELoss.C:332
 DrawAnaELoss.C:333
 DrawAnaELoss.C:334
 DrawAnaELoss.C:335
 DrawAnaELoss.C:336
 DrawAnaELoss.C:337
 DrawAnaELoss.C:338
 DrawAnaELoss.C:339
 DrawAnaELoss.C:340
 DrawAnaELoss.C:341
 DrawAnaELoss.C:342
 DrawAnaELoss.C:343
 DrawAnaELoss.C:344
 DrawAnaELoss.C:345
 DrawAnaELoss.C:346
 DrawAnaELoss.C:347
 DrawAnaELoss.C:348
 DrawAnaELoss.C:349
 DrawAnaELoss.C:350
 DrawAnaELoss.C:351
 DrawAnaELoss.C:352
 DrawAnaELoss.C:353
 DrawAnaELoss.C:354
 DrawAnaELoss.C:355
 DrawAnaELoss.C:356
 DrawAnaELoss.C:357
 DrawAnaELoss.C:358
 DrawAnaELoss.C:359
 DrawAnaELoss.C:360
 DrawAnaELoss.C:361
 DrawAnaELoss.C:362
 DrawAnaELoss.C:363
 DrawAnaELoss.C:364
 DrawAnaELoss.C:365
 DrawAnaELoss.C:366
 DrawAnaELoss.C:367
 DrawAnaELoss.C:368
 DrawAnaELoss.C:369
 DrawAnaELoss.C:370
 DrawAnaELoss.C:371
 DrawAnaELoss.C:372
 DrawAnaELoss.C:373
 DrawAnaELoss.C:374
 DrawAnaELoss.C:375
 DrawAnaELoss.C:376
 DrawAnaELoss.C:377
 DrawAnaELoss.C:378
 DrawAnaELoss.C:379
 DrawAnaELoss.C:380
 DrawAnaELoss.C:381
 DrawAnaELoss.C:382
 DrawAnaELoss.C:383
 DrawAnaELoss.C:384
 DrawAnaELoss.C:385
 DrawAnaELoss.C:386
 DrawAnaELoss.C:387
 DrawAnaELoss.C:388
 DrawAnaELoss.C:389
 DrawAnaELoss.C:390
 DrawAnaELoss.C:391
 DrawAnaELoss.C:392
 DrawAnaELoss.C:393
 DrawAnaELoss.C:394
 DrawAnaELoss.C:395
 DrawAnaELoss.C:396
 DrawAnaELoss.C:397
 DrawAnaELoss.C:398
 DrawAnaELoss.C:399
 DrawAnaELoss.C:400
 DrawAnaELoss.C:401
 DrawAnaELoss.C:402
 DrawAnaELoss.C:403
 DrawAnaELoss.C:404
 DrawAnaELoss.C:405
 DrawAnaELoss.C:406
 DrawAnaELoss.C:407
 DrawAnaELoss.C:408
 DrawAnaELoss.C:409
 DrawAnaELoss.C:410
 DrawAnaELoss.C:411
 DrawAnaELoss.C:412
 DrawAnaELoss.C:413
 DrawAnaELoss.C:414
 DrawAnaELoss.C:415
 DrawAnaELoss.C:416
 DrawAnaELoss.C:417
 DrawAnaELoss.C:418
 DrawAnaELoss.C:419
 DrawAnaELoss.C:420
 DrawAnaELoss.C:421
 DrawAnaELoss.C:422
 DrawAnaELoss.C:423
 DrawAnaELoss.C:424
 DrawAnaELoss.C:425
 DrawAnaELoss.C:426
 DrawAnaELoss.C:427
 DrawAnaELoss.C:428
 DrawAnaELoss.C:429
 DrawAnaELoss.C:430
 DrawAnaELoss.C:431
 DrawAnaELoss.C:432
 DrawAnaELoss.C:433
 DrawAnaELoss.C:434
 DrawAnaELoss.C:435
 DrawAnaELoss.C:436
 DrawAnaELoss.C:437
 DrawAnaELoss.C:438
 DrawAnaELoss.C:439
 DrawAnaELoss.C:440
 DrawAnaELoss.C:441
 DrawAnaELoss.C:442
 DrawAnaELoss.C:443
 DrawAnaELoss.C:444
 DrawAnaELoss.C:445
 DrawAnaELoss.C:446
 DrawAnaELoss.C:447
 DrawAnaELoss.C:448
 DrawAnaELoss.C:449
 DrawAnaELoss.C:450
 DrawAnaELoss.C:451
 DrawAnaELoss.C:452
 DrawAnaELoss.C:453
 DrawAnaELoss.C:454
 DrawAnaELoss.C:455
 DrawAnaELoss.C:456
 DrawAnaELoss.C:457
 DrawAnaELoss.C:458
 DrawAnaELoss.C:459
 DrawAnaELoss.C:460
 DrawAnaELoss.C:461
 DrawAnaELoss.C:462
 DrawAnaELoss.C:463
 DrawAnaELoss.C:464
 DrawAnaELoss.C:465
 DrawAnaELoss.C:466
 DrawAnaELoss.C:467
 DrawAnaELoss.C:468
 DrawAnaELoss.C:469
 DrawAnaELoss.C:470
 DrawAnaELoss.C:471
 DrawAnaELoss.C:472
 DrawAnaELoss.C:473
 DrawAnaELoss.C:474
 DrawAnaELoss.C:475
 DrawAnaELoss.C:476
 DrawAnaELoss.C:477
 DrawAnaELoss.C:478
 DrawAnaELoss.C:479
 DrawAnaELoss.C:480
 DrawAnaELoss.C:481
 DrawAnaELoss.C:482
 DrawAnaELoss.C:483
 DrawAnaELoss.C:484
 DrawAnaELoss.C:485
 DrawAnaELoss.C:486
 DrawAnaELoss.C:487
 DrawAnaELoss.C:488
 DrawAnaELoss.C:489
 DrawAnaELoss.C:490
 DrawAnaELoss.C:491
 DrawAnaELoss.C:492
 DrawAnaELoss.C:493
 DrawAnaELoss.C:494
 DrawAnaELoss.C:495
 DrawAnaELoss.C:496
 DrawAnaELoss.C:497
 DrawAnaELoss.C:498
 DrawAnaELoss.C:499
 DrawAnaELoss.C:500
 DrawAnaELoss.C:501
 DrawAnaELoss.C:502
 DrawAnaELoss.C:503
 DrawAnaELoss.C:504
 DrawAnaELoss.C:505