ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//
// Canvas for ALICE figures
//
// This class inherits from TCanvas and can be used instead of it. It
// places the ALICE logo, and other things according to the figure status.
//
// The logos are expected as:
// alice-logo-work_in_progress.eps
// alice-logo-performance.eps
// alice-logo-preliminary.eps
// alice-logo-final.eps
//
// Author: Jochen Klein <jochen.klein@cern.ch>
//

#include "TCanvas.h"
#include "TList.h"
#include "TDatime.h"

#include "TStyle.h"
#include "TColor.h"
#include "TText.h"
#include "TASImage.h"
#include "TLatex.h"
#include "TLegend.h"
#include "TGraphErrors.h"

#include "AliFigure.h"

TStyle *AliFigure::fgStyle;

AliFigure::AliFigure(const char* name, const char* title, Int_t ww, Int_t wh) :
  TCanvas(name, title, ww, wh),
  fDisabled(kFALSE),
  isMC(kFALSE),
  fStatus(kWorkInProgress),
  fDateFormat("%d/%m/%Y"),
  fTextSize(20),
  fTextColor(kBlack),
  fLogoFilename(),
  fLogoPosX(0.2),
  fLogoPosY(0.5),
  fLogoHeight(100),
  fLogoPad(0x0),
  fDate(0x0),
  fStatusPad(0x0),
  fCollSystem(0x0),
  fDataSample(0x0),
  fTag(0x0),
  fLogo(0x0)
{
  // default ctor

  fStatusString[kWorkInProgress] = "work in progress";
  fStatusString[kThisWork]       = "- this work -";
  fStatusString[kPerformance]    = "Performance";
  fStatusString[kPreliminary]    = "Preliminary";
  fStatusString[kFinal]          = "";

  fLogoFilename[kWorkInProgress] = "$ALICE_ROOT/PWG/Tools/fig/2011-Nov-24-ALICE_logo_WithoutStrapline.eps";
  fLogoFilename[kThisWork]       = "";
  fLogoFilename[kPerformance]    = "$ALICE_ROOT/PWG/Tools/fig/2011-Nov-24-ALICE_logo_WithoutStrapline.eps";
  // fLogoFilename[kPerformance]    = "$ALICE_ROOT/PWG/Tools/fig/2011-Nov-24-ALICE_PERFORMANCE_logo_BLACK_small_usage_design.eps";
  fLogoFilename[kPreliminary]    = "$ALICE_ROOT/PWG/Tools/fig/2011-Nov-24-ALICE_PRELIMINARY_logo_BLACK_small_usage_design.eps";
  fLogoFilename[kFinal]          = "";

  this->SetLeftMargin(0.15);
  this->SetRightMargin(0.04);
  this->SetRightMargin(0.04);
  this->SetBottomMargin(0.15);

  TDatime now;
  char date[30];
  time_t t = (time_t) now.Convert();
  struct tm* loctis = localtime(&t);
  strftime(date, 30, fDateFormat.Data(), loctis);

  fCollSystem = new TLatex(0.96, 0.95, "pp #sqrt{s} = 7 TeV");
  fCollSystem->SetNDC();
  fCollSystem->SetTextSize(fTextSize);
  fCollSystem->SetTextFont(43);
  fCollSystem->SetTextAlign(33);
  fCollSystem->SetTextColor(fTextColor);

  fDataSample = new TLatex(0.15, 0.05, "Run ######");
  fDataSample->SetNDC();
  fDataSample->SetTextSize(fTextSize);
  fDataSample->SetTextFont(43);
  fDataSample->SetTextAlign(11);
  fDataSample->SetTextColor(fTextColor);

  fDate    = new TText(0.5, 0., date);
  fDate->SetNDC();
  fDate->SetTextSize(fTextSize);
  fDate->SetTextFont(43);
  fDate->SetTextAlign(22);
  fDate->SetTextColor(fTextColor);

  fStatusPad  = new TText(0.5, 0.15, fStatusString[fStatus]);
  fStatusPad->SetNDC();
  fStatusPad->SetTextSize(fTextSize);
  fStatusPad->SetTextFont(43);
  fStatusPad->SetTextAlign(22);
  fStatusPad->SetTextColor(fTextColor);

  fTag = new TText(0.5, 0., "");
  fTag->SetNDC();
  fTag->SetTextSize(fTextSize);
  fTag->SetTextFont(43);
  fTag->SetTextAlign(22);
  fTag->SetTextColor(fTextColor);

//   fLogoPad->ResetBit(kCanDelete);
//   fCollSystem->ResetBit(kCanDelete);
//   fStatusPad->ResetBit(kCanDelete);
//   fDate->ResetBit(kCanDelete);

//   GetListOfPrimitives()->SetOwner(kFALSE);

  // now compose the logo with the additional text
  fLogoPad = new TPad("aliceLogo", "Pad for ALICE Logo", .2, .2, .4, .4);
  this->UpdateLogo();

  fLogoPad->GetListOfPrimitives()->Add(fLogo);

  UpdateLogoPos();
}

AliFigure::~AliFigure()
{
  // dtor

};

void AliFigure::Draw(Option_t *option)
{
  // so far just passing on to the TCanvas method

  TCanvas::Draw(option);
}

void AliFigure::Paint(Option_t *option)
{
  // anything to be done here?

  TCanvas::Paint(option);
}

void AliFigure::Clear(Option_t *option)
{
  // clean up

  // now walk through all the children
  TList *listOfPrimitives = this->GetListOfPrimitives();
  TIter iter(listOfPrimitives);

  TObject *obj = 0x0;
  while ((obj = iter())) {
    if ((obj == fCollSystem) || (obj == fStatusPad) || (obj == fLogoPad) || (obj == fDate) || (obj == fTag) || (obj == fDataSample)) {
      listOfPrimitives->Remove(obj);
    }
  }

  TCanvas::Clear(option);
}

void AliFigure::Update()
{
  // while updating make sure that the additional logo and text
  // get drawn last

  if (fDisabled)
    return;

  this->UpdateLogoPos();
  this->UpdatePad(this);

  if (fLogo && fLogo->IsValid()) {
    this->GetListOfPrimitives()->Add(fLogoPad);
  }
  this->GetListOfPrimitives()->Add(fCollSystem);
  if ((fStatus == kWorkInProgress) || (fStatus == kThisWork))
    this->GetListOfPrimitives()->Add(fStatusPad);
  this->GetListOfPrimitives()->Add(fDataSample);
  // this->GetListOfPrimitives()->Add(fDate);
  this->GetListOfPrimitives()->Add(fTag);

  this->Modified(kTRUE);
  TCanvas::Update();
}

void AliFigure::SetStatus(Status_t status)
{
  // set the figure status, i.e. "work in progress", "performance",
  // "preliminary", or "final"

  fStatus = status;
  fStatusPad->SetText(fStatusPad->GetX(), fStatusPad->GetY(), fStatusString[fStatus]);

  UpdateLogo();

  this->Modified(kTRUE);
}

void AliFigure::SetLogoFilename(Status_t status, TString filename)
{
  // set the filename for the logo for the given figure status

  fLogoFilename[status] = filename;
}

void AliFigure::UpdateLogo()
{
  // update the logo

  if (fLogo)
    fLogoPad->GetListOfPrimitives()->Remove(fLogo);
  delete fLogo;

  if (fLogoFilename[fStatus].Length() > 0) {
    fLogo    = new TASImage(fLogoFilename[fStatus]);
    if (fLogo->IsValid()) {
      fLogo->SetImageQuality(TASImage::kImgBest);
      // fLogo->Crop(70, 93, 634, 600);
    }
  }
  else
    fLogo = 0x0;

  this->UpdateLogoPos();
}

void AliFigure::SetLogoPos(Float_t x, Float_t y)
{
  // set the position of the logo

  fLogoPosX = x;
  fLogoPosY = y;

  this->UpdateLogoPos();
}

void AliFigure::SetLogoPos(Pos_t pos)
{
  // set the logo position
  // as north (kN), north-east (kNE), ...

  switch (pos) {
  case kN:
    SetLogoPos(0.5, 0.8);
    break;
  case kNE:
    SetLogoPos(0.8, 0.8);
    break;
  case kE:
    SetLogoPos(0.8, 0.5);
    break;
  case kSE:
    SetLogoPos(0.8, 0.2);
    break;
  case kS:
    SetLogoPos(0.5, 0.2);
    break;
  case kSW:
    SetLogoPos(0.25, 0.2);
    break;
  case kW:
    SetLogoPos(0.25, 0.5);
    break;
  case kNW:
    SetLogoPos(0.25, 0.8);
    break;
  case kCenter:
    SetLogoPos(0.5, 0.5);
    break;
  default:
    this->Error(__FUNCTION__, "Unknown position specifier");
  }
}

void AliFigure::SetLogoSize(Float_t size)
{
  // set the height of the logo as a fraction of the canvas height

  fLogoHeight = this->GetWh() * size;

  this->UpdateLogoPos();
}

void AliFigure::SetCollSystem(TString txt)
{
  // set the text for the collision system

  fCollSystem->SetText(fCollSystem->GetX(), fCollSystem->GetY(), txt);
}

void AliFigure::SetCollSystemPos(Float_t x, Float_t y)
{
  // set the position for the collision system

  fCollSystem->SetX(x);
  fCollSystem->SetY(y);
}

void AliFigure::SetDataSample(TString txt)
{
  // set the description of the data sample

  fDataSample->SetText(fDataSample->GetX(), fDataSample->GetY(), txt);
}

TStyle* AliFigure::Style()
{
  // return the figure style

  if (!fgStyle) {
    // we start from the current style
    // how can we start from a well-defined style, e.g. plain?
    fgStyle = new TStyle(*gStyle);
    fgStyle->SetName("alice");
    fgStyle->SetTitle("ALICE figure style");

    const int font = 43;
    fgStyle->SetFrameBorderMode(0);
    fgStyle->SetFrameFillColor(0);
    fgStyle->SetCanvasBorderMode(0);
    fgStyle->SetPadBorderMode(0);
    fgStyle->SetPadColor(10);
    fgStyle->SetCanvasColor(10);
    fgStyle->SetOptTitle(0);
    fgStyle->SetTitleFillColor(10);
    fgStyle->SetTitleBorderSize(0);
    if ((font % 10) == 3)
      fgStyle->SetTitleFontSize(30);
    else
      fgStyle->SetTitleFontSize(0.08);
    fgStyle->SetStatColor(10);
    fgStyle->SetStatBorderSize(1);
    // legend settings
    // fgStyle->SetLegendBorderSize(1);
    // fgStyle->SetLegendFont(43);
    // fgStyle->SetLegendFillColor(0);

    fgStyle->SetDrawBorder(0);
    fgStyle->SetTextFont(font);
    fgStyle->SetStatFont(font);
    fgStyle->SetStatFontSize(0.05);
    fgStyle->SetStatX(0.97);
    fgStyle->SetStatY(0.98);
    fgStyle->SetStatH(0.03);
    fgStyle->SetStatW(0.3);
    fgStyle->SetTickLength(0.02,"y");
    fgStyle->SetEndErrorSize(3);
    if ((font % 10) == 3)
      fgStyle->SetLabelSize(30, "xyz");
    else
      fgStyle->SetLabelSize(0.05,"xyz");
    fgStyle->SetLabelFont(font,"xyz");
    fgStyle->SetLabelOffset(0.01,"xyz");
    fgStyle->SetTitleFont(font,"xyz");
    fgStyle->SetTitleOffset(1.,"xyz");
    if ((font % 10) == 3)
      fgStyle->SetTitleSize(34, "xyz");
    else
      fgStyle->SetTitleSize(0.06,"xyz");
    fgStyle->SetMarkerSize(1);
    fgStyle->SetPalette(1,0);
    if (kFALSE) {
      fgStyle->SetOptStat(1111);
      fgStyle->SetOptFit(1111);
    }
    else {
      fgStyle->SetOptStat(0);
      fgStyle->SetOptFit(0);
    }
  }

  return fgStyle;
}

void AliFigure::SetTextSize(Float_t size)
{
  // specify the text size

  fTextSize = size;
  fStatusPad->SetTextSize(fTextSize);

  this->UpdateLogoPos();
  this->UpdatePad(this);
}

void AliFigure::UpdateLogoPos()
{
  // move the logo to the correct position

  Float_t ratio  = 1.;
  Float_t height = 0.;
  Float_t width  = 0.;

  if (fLogo && fLogo->IsValid()) {
    ratio = fLogo->GetWidth();
    ratio /= (Float_t) fLogo->GetHeight();
    ratio *= (Float_t) this->GetWh();
    ratio /= (Float_t) this->GetWw();
    height = fLogoHeight / this->GetWh();
    width  = height*ratio;
    fLogoPad->SetPad(fLogoPosX - width/2, fLogoPosY - height/2,
		     fLogoPosX + width/2, fLogoPosY + height/2);
  }

  Float_t offset = - (0.*fTextSize)/this->GetWh();

  if ((fStatus == kPerformance) ||
      (fStatus == kWorkInProgress)) {
    fStatusPad->SetX(fLogoPosX);
    fStatusPad->SetY(fLogoPosY - height/2 + offset);
    offset -= (1.2*fTextSize)/this->GetWh();
  }
  else if (fStatus == kThisWork) {
    fStatusPad->SetX(0.25);
    fStatusPad->SetY(0.95);
  }

  fDate->SetX(fLogoPosX);
  fDate->SetY(fLogoPosY - height/2 + offset);

  offset -= (1.2*fTextSize)/this->GetWh();

  fTag->SetX(fLogoPosX);
  fTag->SetY(fLogoPosY - height/2 + offset);

  this->Modified();
}

void AliFigure::UpdatePad(TPad *pad)
{
  // enforce settings of the given pad
  // and walk through all children

  // set the geometry for the pad
  pad->SetLeftMargin(0.15);
  pad->SetRightMargin(0.04);
  pad->SetBottomMargin(0.15);

  fCollSystem->SetX(.96);

  // now walk through all the children
  TList *listOfPrimitives = pad->GetListOfPrimitives();
  TIter iter(listOfPrimitives);

  TObject *obj = 0x0;
  while ((obj = iter())) {
    if ((obj == fCollSystem) || (obj == fStatusPad) || (obj == fLogoPad) || (obj == fDate) || (obj == fTag) || (obj == fDataSample)) {
      listOfPrimitives->Remove(obj);
    }
    else {
      // make sure that the current style is used
      // obj->UseCurrentStyle();
      // if (obj->InheritsFrom("TGraphErrors")) {
      //   TGraphErrors *graph = (TGraphErrors*) obj;
      //   graph->SetMarkerSize(5);
      //   // graph->SetMarkerStyle(currentMarkerStyle);
      //   // graph->SetMarkerColor(currentMarkerColor);
      //   // graph->SetLineStyle(currentLineStyle);
      //   // graph->SetLineColor(currentLineColor);
      // }
      if (obj->InheritsFrom("TPad")) {
	// this->UpdatePad((TPad*) obj);
      }
      else if (obj->InheritsFrom("TH2")) {
        pad->SetRightMargin(.18);
	fCollSystem->SetX(.82);
      }
      else if (obj->InheritsFrom("TLegend")) {
        TLegend *leg = (TLegend*) obj;
        // leg->SetTextFont(43);
        leg->SetBorderSize(1);
        leg->SetFillStyle(0);
        leg->SetFillColor(1);
	leg->SetShadowColor(0);
        leg->SetMargin(0.25);
        leg->SetTextSize(fTextSize);
        leg->SetEntrySeparation(0.25);
      }
    }
  }
}
 AliFigure.cxx:1
 AliFigure.cxx:2
 AliFigure.cxx:3
 AliFigure.cxx:4
 AliFigure.cxx:5
 AliFigure.cxx:6
 AliFigure.cxx:7
 AliFigure.cxx:8
 AliFigure.cxx:9
 AliFigure.cxx:10
 AliFigure.cxx:11
 AliFigure.cxx:12
 AliFigure.cxx:13
 AliFigure.cxx:14
 AliFigure.cxx:15
 AliFigure.cxx:16
 AliFigure.cxx:17
 AliFigure.cxx:18
 AliFigure.cxx:19
 AliFigure.cxx:20
 AliFigure.cxx:21
 AliFigure.cxx:22
 AliFigure.cxx:23
 AliFigure.cxx:24
 AliFigure.cxx:25
 AliFigure.cxx:26
 AliFigure.cxx:27
 AliFigure.cxx:28
 AliFigure.cxx:29
 AliFigure.cxx:30
 AliFigure.cxx:31
 AliFigure.cxx:32
 AliFigure.cxx:33
 AliFigure.cxx:34
 AliFigure.cxx:35
 AliFigure.cxx:36
 AliFigure.cxx:37
 AliFigure.cxx:38
 AliFigure.cxx:39
 AliFigure.cxx:40
 AliFigure.cxx:41
 AliFigure.cxx:42
 AliFigure.cxx:43
 AliFigure.cxx:44
 AliFigure.cxx:45
 AliFigure.cxx:46
 AliFigure.cxx:47
 AliFigure.cxx:48
 AliFigure.cxx:49
 AliFigure.cxx:50
 AliFigure.cxx:51
 AliFigure.cxx:52
 AliFigure.cxx:53
 AliFigure.cxx:54
 AliFigure.cxx:55
 AliFigure.cxx:56
 AliFigure.cxx:57
 AliFigure.cxx:58
 AliFigure.cxx:59
 AliFigure.cxx:60
 AliFigure.cxx:61
 AliFigure.cxx:62
 AliFigure.cxx:63
 AliFigure.cxx:64
 AliFigure.cxx:65
 AliFigure.cxx:66
 AliFigure.cxx:67
 AliFigure.cxx:68
 AliFigure.cxx:69
 AliFigure.cxx:70
 AliFigure.cxx:71
 AliFigure.cxx:72
 AliFigure.cxx:73
 AliFigure.cxx:74
 AliFigure.cxx:75
 AliFigure.cxx:76
 AliFigure.cxx:77
 AliFigure.cxx:78
 AliFigure.cxx:79
 AliFigure.cxx:80
 AliFigure.cxx:81
 AliFigure.cxx:82
 AliFigure.cxx:83
 AliFigure.cxx:84
 AliFigure.cxx:85
 AliFigure.cxx:86
 AliFigure.cxx:87
 AliFigure.cxx:88
 AliFigure.cxx:89
 AliFigure.cxx:90
 AliFigure.cxx:91
 AliFigure.cxx:92
 AliFigure.cxx:93
 AliFigure.cxx:94
 AliFigure.cxx:95
 AliFigure.cxx:96
 AliFigure.cxx:97
 AliFigure.cxx:98
 AliFigure.cxx:99
 AliFigure.cxx:100
 AliFigure.cxx:101
 AliFigure.cxx:102
 AliFigure.cxx:103
 AliFigure.cxx:104
 AliFigure.cxx:105
 AliFigure.cxx:106
 AliFigure.cxx:107
 AliFigure.cxx:108
 AliFigure.cxx:109
 AliFigure.cxx:110
 AliFigure.cxx:111
 AliFigure.cxx:112
 AliFigure.cxx:113
 AliFigure.cxx:114
 AliFigure.cxx:115
 AliFigure.cxx:116
 AliFigure.cxx:117
 AliFigure.cxx:118
 AliFigure.cxx:119
 AliFigure.cxx:120
 AliFigure.cxx:121
 AliFigure.cxx:122
 AliFigure.cxx:123
 AliFigure.cxx:124
 AliFigure.cxx:125
 AliFigure.cxx:126
 AliFigure.cxx:127
 AliFigure.cxx:128
 AliFigure.cxx:129
 AliFigure.cxx:130
 AliFigure.cxx:131
 AliFigure.cxx:132
 AliFigure.cxx:133
 AliFigure.cxx:134
 AliFigure.cxx:135
 AliFigure.cxx:136
 AliFigure.cxx:137
 AliFigure.cxx:138
 AliFigure.cxx:139
 AliFigure.cxx:140
 AliFigure.cxx:141
 AliFigure.cxx:142
 AliFigure.cxx:143
 AliFigure.cxx:144
 AliFigure.cxx:145
 AliFigure.cxx:146
 AliFigure.cxx:147
 AliFigure.cxx:148
 AliFigure.cxx:149
 AliFigure.cxx:150
 AliFigure.cxx:151
 AliFigure.cxx:152
 AliFigure.cxx:153
 AliFigure.cxx:154
 AliFigure.cxx:155
 AliFigure.cxx:156
 AliFigure.cxx:157
 AliFigure.cxx:158
 AliFigure.cxx:159
 AliFigure.cxx:160
 AliFigure.cxx:161
 AliFigure.cxx:162
 AliFigure.cxx:163
 AliFigure.cxx:164
 AliFigure.cxx:165
 AliFigure.cxx:166
 AliFigure.cxx:167
 AliFigure.cxx:168
 AliFigure.cxx:169
 AliFigure.cxx:170
 AliFigure.cxx:171
 AliFigure.cxx:172
 AliFigure.cxx:173
 AliFigure.cxx:174
 AliFigure.cxx:175
 AliFigure.cxx:176
 AliFigure.cxx:177
 AliFigure.cxx:178
 AliFigure.cxx:179
 AliFigure.cxx:180
 AliFigure.cxx:181
 AliFigure.cxx:182
 AliFigure.cxx:183
 AliFigure.cxx:184
 AliFigure.cxx:185
 AliFigure.cxx:186
 AliFigure.cxx:187
 AliFigure.cxx:188
 AliFigure.cxx:189
 AliFigure.cxx:190
 AliFigure.cxx:191
 AliFigure.cxx:192
 AliFigure.cxx:193
 AliFigure.cxx:194
 AliFigure.cxx:195
 AliFigure.cxx:196
 AliFigure.cxx:197
 AliFigure.cxx:198
 AliFigure.cxx:199
 AliFigure.cxx:200
 AliFigure.cxx:201
 AliFigure.cxx:202
 AliFigure.cxx:203
 AliFigure.cxx:204
 AliFigure.cxx:205
 AliFigure.cxx:206
 AliFigure.cxx:207
 AliFigure.cxx:208
 AliFigure.cxx:209
 AliFigure.cxx:210
 AliFigure.cxx:211
 AliFigure.cxx:212
 AliFigure.cxx:213
 AliFigure.cxx:214
 AliFigure.cxx:215
 AliFigure.cxx:216
 AliFigure.cxx:217
 AliFigure.cxx:218
 AliFigure.cxx:219
 AliFigure.cxx:220
 AliFigure.cxx:221
 AliFigure.cxx:222
 AliFigure.cxx:223
 AliFigure.cxx:224
 AliFigure.cxx:225
 AliFigure.cxx:226
 AliFigure.cxx:227
 AliFigure.cxx:228
 AliFigure.cxx:229
 AliFigure.cxx:230
 AliFigure.cxx:231
 AliFigure.cxx:232
 AliFigure.cxx:233
 AliFigure.cxx:234
 AliFigure.cxx:235
 AliFigure.cxx:236
 AliFigure.cxx:237
 AliFigure.cxx:238
 AliFigure.cxx:239
 AliFigure.cxx:240
 AliFigure.cxx:241
 AliFigure.cxx:242
 AliFigure.cxx:243
 AliFigure.cxx:244
 AliFigure.cxx:245
 AliFigure.cxx:246
 AliFigure.cxx:247
 AliFigure.cxx:248
 AliFigure.cxx:249
 AliFigure.cxx:250
 AliFigure.cxx:251
 AliFigure.cxx:252
 AliFigure.cxx:253
 AliFigure.cxx:254
 AliFigure.cxx:255
 AliFigure.cxx:256
 AliFigure.cxx:257
 AliFigure.cxx:258
 AliFigure.cxx:259
 AliFigure.cxx:260
 AliFigure.cxx:261
 AliFigure.cxx:262
 AliFigure.cxx:263
 AliFigure.cxx:264
 AliFigure.cxx:265
 AliFigure.cxx:266
 AliFigure.cxx:267
 AliFigure.cxx:268
 AliFigure.cxx:269
 AliFigure.cxx:270
 AliFigure.cxx:271
 AliFigure.cxx:272
 AliFigure.cxx:273
 AliFigure.cxx:274
 AliFigure.cxx:275
 AliFigure.cxx:276
 AliFigure.cxx:277
 AliFigure.cxx:278
 AliFigure.cxx:279
 AliFigure.cxx:280
 AliFigure.cxx:281
 AliFigure.cxx:282
 AliFigure.cxx:283
 AliFigure.cxx:284
 AliFigure.cxx:285
 AliFigure.cxx:286
 AliFigure.cxx:287
 AliFigure.cxx:288
 AliFigure.cxx:289
 AliFigure.cxx:290
 AliFigure.cxx:291
 AliFigure.cxx:292
 AliFigure.cxx:293
 AliFigure.cxx:294
 AliFigure.cxx:295
 AliFigure.cxx:296
 AliFigure.cxx:297
 AliFigure.cxx:298
 AliFigure.cxx:299
 AliFigure.cxx:300
 AliFigure.cxx:301
 AliFigure.cxx:302
 AliFigure.cxx:303
 AliFigure.cxx:304
 AliFigure.cxx:305
 AliFigure.cxx:306
 AliFigure.cxx:307
 AliFigure.cxx:308
 AliFigure.cxx:309
 AliFigure.cxx:310
 AliFigure.cxx:311
 AliFigure.cxx:312
 AliFigure.cxx:313
 AliFigure.cxx:314
 AliFigure.cxx:315
 AliFigure.cxx:316
 AliFigure.cxx:317
 AliFigure.cxx:318
 AliFigure.cxx:319
 AliFigure.cxx:320
 AliFigure.cxx:321
 AliFigure.cxx:322
 AliFigure.cxx:323
 AliFigure.cxx:324
 AliFigure.cxx:325
 AliFigure.cxx:326
 AliFigure.cxx:327
 AliFigure.cxx:328
 AliFigure.cxx:329
 AliFigure.cxx:330
 AliFigure.cxx:331
 AliFigure.cxx:332
 AliFigure.cxx:333
 AliFigure.cxx:334
 AliFigure.cxx:335
 AliFigure.cxx:336
 AliFigure.cxx:337
 AliFigure.cxx:338
 AliFigure.cxx:339
 AliFigure.cxx:340
 AliFigure.cxx:341
 AliFigure.cxx:342
 AliFigure.cxx:343
 AliFigure.cxx:344
 AliFigure.cxx:345
 AliFigure.cxx:346
 AliFigure.cxx:347
 AliFigure.cxx:348
 AliFigure.cxx:349
 AliFigure.cxx:350
 AliFigure.cxx:351
 AliFigure.cxx:352
 AliFigure.cxx:353
 AliFigure.cxx:354
 AliFigure.cxx:355
 AliFigure.cxx:356
 AliFigure.cxx:357
 AliFigure.cxx:358
 AliFigure.cxx:359
 AliFigure.cxx:360
 AliFigure.cxx:361
 AliFigure.cxx:362
 AliFigure.cxx:363
 AliFigure.cxx:364
 AliFigure.cxx:365
 AliFigure.cxx:366
 AliFigure.cxx:367
 AliFigure.cxx:368
 AliFigure.cxx:369
 AliFigure.cxx:370
 AliFigure.cxx:371
 AliFigure.cxx:372
 AliFigure.cxx:373
 AliFigure.cxx:374
 AliFigure.cxx:375
 AliFigure.cxx:376
 AliFigure.cxx:377
 AliFigure.cxx:378
 AliFigure.cxx:379
 AliFigure.cxx:380
 AliFigure.cxx:381
 AliFigure.cxx:382
 AliFigure.cxx:383
 AliFigure.cxx:384
 AliFigure.cxx:385
 AliFigure.cxx:386
 AliFigure.cxx:387
 AliFigure.cxx:388
 AliFigure.cxx:389
 AliFigure.cxx:390
 AliFigure.cxx:391
 AliFigure.cxx:392
 AliFigure.cxx:393
 AliFigure.cxx:394
 AliFigure.cxx:395
 AliFigure.cxx:396
 AliFigure.cxx:397
 AliFigure.cxx:398
 AliFigure.cxx:399
 AliFigure.cxx:400
 AliFigure.cxx:401
 AliFigure.cxx:402
 AliFigure.cxx:403
 AliFigure.cxx:404
 AliFigure.cxx:405
 AliFigure.cxx:406
 AliFigure.cxx:407
 AliFigure.cxx:408
 AliFigure.cxx:409
 AliFigure.cxx:410
 AliFigure.cxx:411
 AliFigure.cxx:412
 AliFigure.cxx:413
 AliFigure.cxx:414
 AliFigure.cxx:415
 AliFigure.cxx:416
 AliFigure.cxx:417
 AliFigure.cxx:418
 AliFigure.cxx:419
 AliFigure.cxx:420
 AliFigure.cxx:421
 AliFigure.cxx:422
 AliFigure.cxx:423
 AliFigure.cxx:424
 AliFigure.cxx:425
 AliFigure.cxx:426
 AliFigure.cxx:427
 AliFigure.cxx:428
 AliFigure.cxx:429
 AliFigure.cxx:430
 AliFigure.cxx:431
 AliFigure.cxx:432
 AliFigure.cxx:433
 AliFigure.cxx:434
 AliFigure.cxx:435
 AliFigure.cxx:436
 AliFigure.cxx:437
 AliFigure.cxx:438
 AliFigure.cxx:439
 AliFigure.cxx:440
 AliFigure.cxx:441
 AliFigure.cxx:442
 AliFigure.cxx:443
 AliFigure.cxx:444
 AliFigure.cxx:445
 AliFigure.cxx:446
 AliFigure.cxx:447
 AliFigure.cxx:448
 AliFigure.cxx:449
 AliFigure.cxx:450
 AliFigure.cxx:451
 AliFigure.cxx:452
 AliFigure.cxx:453
 AliFigure.cxx:454
 AliFigure.cxx:455
 AliFigure.cxx:456
 AliFigure.cxx:457
 AliFigure.cxx:458
 AliFigure.cxx:459
 AliFigure.cxx:460
 AliFigure.cxx:461
 AliFigure.cxx:462
 AliFigure.cxx:463
 AliFigure.cxx:464
 AliFigure.cxx:465
 AliFigure.cxx:466
 AliFigure.cxx:467
 AliFigure.cxx:468
 AliFigure.cxx:469
 AliFigure.cxx:470
 AliFigure.cxx:471
 AliFigure.cxx:472
 AliFigure.cxx:473
 AliFigure.cxx:474
 AliFigure.cxx:475
 AliFigure.cxx:476
 AliFigure.cxx:477
 AliFigure.cxx:478
 AliFigure.cxx:479
 AliFigure.cxx:480
 AliFigure.cxx:481
 AliFigure.cxx:482
 AliFigure.cxx:483
 AliFigure.cxx:484
 AliFigure.cxx:485
 AliFigure.cxx:486
 AliFigure.cxx:487
 AliFigure.cxx:488
 AliFigure.cxx:489
 AliFigure.cxx:490
 AliFigure.cxx:491
 AliFigure.cxx:492
 AliFigure.cxx:493
 AliFigure.cxx:494
 AliFigure.cxx:495
 AliFigure.cxx:496
 AliFigure.cxx:497
 AliFigure.cxx:498
 AliFigure.cxx:499
 AliFigure.cxx:500
 AliFigure.cxx:501
 AliFigure.cxx:502