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.                  *
 **************************************************************************/


///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  Class for viewing/visualizing TPC calibration data                       //
//  base on  TTree functionality for visualization                           //
//                                                                           //
//  Create a list of AliTPCCalPads, arrange them in an TObjArray.            //
//  Pass this TObjArray to MakeTree and create the calibration Tree          //
//  While craating this tree some statistical information are calculated     //
//  Open the viewer with this Tree: AliTPCCalibViewer v("CalibTree.root")    //
//  Have fun!                                                                //
//  EasyDraw("CETmean~-CETmean_mean", "A", "(CETmean~-CETmean_mean)>0")      //
//                                                                           //
//  If you like to click, we recommand you the                               //
//    AliTPCCalibViewerGUI                                                   //
//                                                                           //
//    THE DOCUMENTATION IS STILL NOT COMPLETED !!!!                          //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

//
// ROOT includes 
//

#include <fstream>
#include <iostream>

#include <TFile.h>
#include <TFriendElement.h>
#include <TGraph.h>
#include <TKey.h>
#include <TPad.h>
//#include <TCanvas.h>
#include <TH1.h> 
#include <TH1F.h>
#include <TLegend.h>
#include <TLine.h>
#include <TMath.h>
#include <TObjString.h>
//#include <TROOT.h>
#include <TRandom.h>
#include <TString.h>
#include <TStyle.h>
#include <TTreeStream.h>

#include "AliTPCCalibCE.h"
#include "AliMathBase.h"
#include "AliTPCCalPad.h"
#include "AliTPCCalROC.h"
#include "AliTPCCalibPedestal.h"
#include "AliTPCCalibPulser.h"

//
// AliRoot includes
//
#include "AliTPCCalibViewer.h"

using std::ifstream;
ClassImp(AliTPCCalibViewer)


AliTPCCalibViewer::AliTPCCalibViewer()
                  :TObject(),
                   fTree(0),
                   fFile(0),
                   fListOfObjectsToBeDeleted(0),
                   fTreeMustBeDeleted(0), 
                   fAbbreviation(0), 
                   fAppendString(0)
{
  //
  // Default constructor
  //

}

//_____________________________________________________________________________
AliTPCCalibViewer::AliTPCCalibViewer(const AliTPCCalibViewer &c)
                  :TObject(c),
                   fTree(0),
                   fFile(0),
                   fListOfObjectsToBeDeleted(0),
                   fTreeMustBeDeleted(0),
                   fAbbreviation(0), 
                   fAppendString(0)
{
  //
  // dummy AliTPCCalibViewer copy constructor
  // not yet working!!!
  //
  fTree = c.fTree;
  fTreeMustBeDeleted = c.fTreeMustBeDeleted;
  //fFile = new TFile(*(c.fFile));
  fListOfObjectsToBeDeleted = c.fListOfObjectsToBeDeleted;
  fAbbreviation = c.fAbbreviation;
  fAppendString = c.fAppendString;
}

//_____________________________________________________________________________
AliTPCCalibViewer::AliTPCCalibViewer(TTree *const tree)
                  :TObject(),
                   fTree(0),
                   fFile(0),
                   fListOfObjectsToBeDeleted(0),
                   fTreeMustBeDeleted(0),
                   fAbbreviation(0), 
                   fAppendString(0)
{
  //
  // Constructor that initializes the calibration viewer
  //
  fTree = tree;
  fTreeMustBeDeleted = kFALSE;
  fListOfObjectsToBeDeleted = new TObjArray();
  fAbbreviation = "~";
  fAppendString = ".fElements";
}

//_____________________________________________________________________________
AliTPCCalibViewer::AliTPCCalibViewer(const char* fileName, const char* treeName)
                  :TObject(),
                   fTree(0),
                   fFile(0),
                   fListOfObjectsToBeDeleted(0),
                   fTreeMustBeDeleted(0),
                   fAbbreviation(0), 
                   fAppendString(0)
                   
{
   //
   // Constructor to initialize the calibration viewer
   // the file 'fileName' contains the tree 'treeName'
   //
   fFile = new TFile(fileName, "read");
   fTree = (TTree*) fFile->Get(treeName);
   fTreeMustBeDeleted = kTRUE;
   fListOfObjectsToBeDeleted = new TObjArray();
   fAbbreviation = "~";
   fAppendString = ".fElements";
}
                   
//____________________________________________________________________________
AliTPCCalibViewer & AliTPCCalibViewer::operator =(const AliTPCCalibViewer & param)
{
   //
   // assignment operator - dummy
   // not yet working!!!
   //
  if (this == &param) return (*this);

   fTree = param.fTree;
   fTreeMustBeDeleted = param.fTreeMustBeDeleted;
   //fFile = new TFile(*(param.fFile));
   fListOfObjectsToBeDeleted = param.fListOfObjectsToBeDeleted;
   fAbbreviation = param.fAbbreviation;
   fAppendString = param.fAppendString;
   return (*this);
}

//_____________________________________________________________________________
AliTPCCalibViewer::~AliTPCCalibViewer()
{
   //
   // AliTPCCalibViewer destructor
   // all objects will be deleted, the file will be closed, the pictures will disappear
   //
   if (fTree && fTreeMustBeDeleted) {
      fTree->SetCacheSize(0);
      fTree->Delete();
      //delete fTree;
   }
   if (fFile) {
      fFile->Close();
      fFile = 0;
   }

   for (Int_t i = fListOfObjectsToBeDeleted->GetEntriesFast()-1; i >= 0; i--) {
      //cout << "Index " << i << " trying to delete the following object: " << fListOfObjectsToBeDeleted->At(i)->GetName() << "..."<< endl;
      delete fListOfObjectsToBeDeleted->At(i);
   }
   delete fListOfObjectsToBeDeleted;
}

//_____________________________________________________________________________
void AliTPCCalibViewer::Delete(Option_t* /*option*/) {
   //
   // Should be called from AliTPCCalibViewerGUI class only.
   // If you use Delete() do not call the destructor.
   // All objects (except those contained in fListOfObjectsToBeDeleted) will be deleted, the file will be closed.
   //
   
   if (fTree && fTreeMustBeDeleted) {
      fTree->SetCacheSize(0);
      fTree->Delete();
   }
   delete fFile;
   delete fListOfObjectsToBeDeleted;
}


const char* AliTPCCalibViewer::AddAbbreviations(const Char_t *c, Bool_t printDrawCommand){ 
   // Replace all "<variable>" with "<variable><fAbbreviation>" (Adds forgotten "~")
   // but take care on the statistical information, like "CEQmean_Mean"
   // and also take care on correct given variables, like "CEQmean~"
   // 
   // For each variable out of "listOfVariables":
   // - 'Save' correct items:
   //   - form <replaceString>, take <variable>'s first char, add <removeString>, add rest of <variable>, e.g. "C!#EQmean" (<removeString> = "!#")
   //   - For each statistical information in "listOfNormalizationVariables":
   //     - ReplaceAll <variable><statistical_Information> with <replaceString><statistical_Information>
   //   - ReplaceAll <variable><abbreviation> with <replaceString><abbreviation>, e.g. "CEQmean~" -> "C!#EQmean~"
   //   - ReplaceAll <variable><appendStr> with <replaceString><appendStr>, e.g. "CEQmean.fElements" -> "C!#EQmean.fElements"
   //
   // - Do actual replacing:
   //   - ReplaceAll <variable> with <variable><fAbbreviation>, e.g. "CEQmean" -> "CEQmean~"
   //
   // - Undo saving:
   //   - For each statistical information in "listOfNormalizationVariables":
   //     - ReplaceAll <replaceString><statistical_Information> with <variable><statistical_Information> 
   //   - ReplaceAll <replaceString><abbreviation> with <variable><abbreviation>, e.g. "C!#EQmean~" -> "CEQmean~"
   //   - ReplaceAll <replaceString><appendStr> with <variable><appendStr>, e.g. "C!#EQmean.fElements" -> "CEQmean.fElements"
   // 
   // Now all the missing "~" should be added.
   
   TString str(c);
   TString removeString = "!#";  // very unpropable combination of chars
   TString replaceString = "";
   TString searchString = "";
   TString normString = "";
   TObjArray *listOfVariables = GetListOfVariables();
   listOfVariables->Add(new TObjString("channel"));
   listOfVariables->Add(new TObjString("gx"));
   listOfVariables->Add(new TObjString("gy"));
   listOfVariables->Add(new TObjString("lx"));
   listOfVariables->Add(new TObjString("ly"));
   listOfVariables->Add(new TObjString("pad"));
   listOfVariables->Add(new TObjString("row"));
   listOfVariables->Add(new TObjString("rpad"));
   listOfVariables->Add(new TObjString("sector"));
   TObjArray *listOfNormalizationVariables = GetListOfNormalizationVariables();
   Int_t nVariables = listOfVariables->GetEntriesFast();
   Int_t nNorm = listOfNormalizationVariables->GetEntriesFast();
   
   Int_t *varLengths = new Int_t[nVariables];
   for (Int_t i = 0; i < nVariables; i++) {
      varLengths[i] = ((TObjString*)listOfVariables->At(i))->String().Length();
   }
   Int_t *normLengths = new Int_t[nNorm];
   for (Int_t i = 0; i < nNorm; i++) {
      normLengths[i] = ((TObjString*)listOfNormalizationVariables->At(i))->String().Length();
      // printf("normLengths[%i] (%s) = %i \n", i,((TObjString*)listOfNormalizationVariables->At(i))->String().Data(), normLengths[i]);
   }
   Int_t *varSort = new Int_t[nVariables];
   TMath::Sort(nVariables, varLengths, varSort, kTRUE);
   Int_t *normSort = new Int_t[nNorm];
   TMath::Sort(nNorm, normLengths, normSort, kTRUE);
   // for (Int_t i = 0; i<nNorm; i++)  printf("normLengths: %i\n", normLengths[normSort[i]]);
   // for (Int_t i = 0; i<nVariables; i++) printf("varLengths: %i\n", varLengths[varSort[i]]);
   
   for (Int_t ivar = 0; ivar < nVariables; ivar++) {
      // ***** save correct tokens *****
      // first get the next variable:
      searchString = ((TObjString*)listOfVariables->At(varSort[ivar]))->String();
      // printf("searchString: %s ++++++++++++++\n", searchString.Data());
      // form replaceString:
      replaceString = "";
      for (Int_t i = 0; i < searchString.Length(); i++) {
         replaceString.Append(searchString[i]);
         if (i == 0) replaceString.Append(removeString);
      }
      // go through normalization:
      // printf("go through normalization\n");
      for (Int_t inorm = 0; inorm < nNorm; inorm++) {
         // printf(" inorm=%i, nNorm=%i, normSort[inorm]=%i \n", inorm, nNorm, normSort[inorm]);
         normString = ((TObjString*)listOfNormalizationVariables->At(normSort[inorm]))->String();
         // printf(" walking in normalization, i=%i, normString=%s \n", inorm, normString.Data());
         str.ReplaceAll(searchString + normString, replaceString + normString);
         // like: str.ReplaceAll("CEQmean_Mean", "C!EQmean_Mean");
      }
      str.ReplaceAll(searchString + fAbbreviation, replaceString + fAbbreviation);
      // like: str.ReplaceAll("CEQmean~", "C!EQmean~");
      str.ReplaceAll(searchString + fAppendString,    replaceString + fAppendString);
      // like: str.ReplaceAll("CEQmean.fElements", "C!EQmean.fElements");
      
      // ***** add missing extensions *****
      str.ReplaceAll(searchString, replaceString + fAbbreviation);
      // like: str.ReplaceAll("CEQmean", "C!EQmean~");
   }
   
   // ***** undo saving *****
   str.ReplaceAll(removeString, "");
  
   if (printDrawCommand) std::cout << "The string looks now like: " << str.Data() << std::endl;
   delete [] varLengths;
   delete [] normLengths;
   delete [] varSort;
   delete [] normSort;
   return str.Data();
}




//_____________________________________________________________________________
Int_t AliTPCCalibViewer::EasyDraw(const char* drawCommand, const char* sector, const char* cuts, const char* drawOptions, Bool_t writeDrawCommand) const {
  //
  // easy drawing of data, use '~' for abbreviation of '.fElements'
  // example: EasyDraw("CETmean~-CETmean_mean", "A", "(CETmean~-CETmean_mean)>0")
 // sector: sector-number - only the specified sector will be drwawn
  //         'A'/'C' or 'a'/'c' - side A/C will be drawn
  //         'ALL' - whole TPC will be drawn, projected on one side
  // cuts: specifies cuts
  // drawOptions: draw options like 'same'
  // writeDrawCommand: write the command, that is passed to TTree::Draw
  //

   TString drawStr(drawCommand);
   TString sectorStr(sector);
   sectorStr.ToUpper();
   TString cutStr("");
   //TString drawOptionsStr("profcolz ");
   Bool_t dangerousToDraw = drawStr.Contains(":") || drawStr.Contains(">>");
   if (dangerousToDraw) {
      Warning("EasyDraw", "The draw string must not contain ':' or '>>'. Using only first variable for drawing!");
//      return -1;
//      drawStr.Resize(drawStr.First(">"));
      drawStr.Resize(drawStr.First(":"));
   }

   TString drawOptionsStr("");
   TRandom rnd(0);
   Int_t rndNumber = rnd.Integer(10000);

   if (drawOptions && strcmp(drawOptions, "") != 0)
      drawOptionsStr += drawOptions;
   else
      drawOptionsStr += "profcolz";

   if (sectorStr == "A") {
      drawStr += Form(":gy%s:gx%s>>prof", fAppendString.Data(), fAppendString.Data());
      drawStr += rndNumber;
      drawStr += "(330,-250,250,330,-250,250)";
      cutStr += "(sector/18)%2==0 ";
   }
   else if  (sectorStr == "C") {
      drawStr += Form(":gy%s:gx%s>>prof", fAppendString.Data(), fAppendString.Data());
      drawStr += rndNumber;
      drawStr += "(330,-250,250,330,-250,250)";
      cutStr += "(sector/18)%2==1 ";
   }
   else if  (sectorStr == "ALL") {
      drawStr += Form(":gy%s:gx%s>>prof", fAppendString.Data(), fAppendString.Data());
      drawStr += rndNumber;
      drawStr += "(330,-250,250,330,-250,250)";
   }
   else if  (sectorStr.Contains("S")) {
      drawStr += Form(":rpad%s:row%s+(sector>35)*63>>prof", fAppendString.Data(), fAppendString.Data());
      drawStr += rndNumber;
      drawStr += "(159,0,159,140,-70,70)";
      TString sec=sectorStr;
      sec.Remove(0,1);
      cutStr += "sector%36=="+sec+" ";
   }
   else if (sectorStr.IsDigit()) {
      Int_t isec = sectorStr.Atoi();
      drawStr += Form(":rpad%s:row%s>>prof", fAppendString.Data(), fAppendString.Data());
      drawStr += rndNumber;
      if (isec < 36 && isec >= 0)
         drawStr += "(63,0,63,108,-54,54)";
      else if (isec < 72 && isec >= 36)
         drawStr += "(96,0,96,140,-70,70)";
      else {
         Error("EasyDraw","The TPC contains only sectors between 0 and 71.");
         return -1;
      }
      cutStr += "(sector==";
      cutStr += isec;
      cutStr += ") ";
   }

   if (cuts && cuts[0] != 0) {
      if (cutStr.Length() != 0) cutStr += "&& ";
      cutStr += "(";
      cutStr += cuts;
      cutStr += ")";
   }
   drawStr.ReplaceAll(fAbbreviation, fAppendString);
   cutStr.ReplaceAll(fAbbreviation, fAppendString);
   if (writeDrawCommand) std::cout << "fTree->Draw(\"" << drawStr << "\", \"" <<  cutStr << "\", \"" << drawOptionsStr << "\");" << std::endl;
   Int_t returnValue = fTree->Draw(drawStr.Data(), cutStr.Data(), drawOptionsStr.Data());
   TString profName("prof");
   profName += rndNumber;
   TObject *obj = gDirectory->Get(profName.Data());
   if (obj && obj->InheritsFrom("TH1")) FormatHistoLabels((TH1*)obj);
   return returnValue;
}


Int_t AliTPCCalibViewer::EasyDraw(const char* drawCommand, Int_t sector, const char* cuts, const char* drawOptions, Bool_t writeDrawCommand) const {
  //
  // easy drawing of data, use '~' for abbreviation of '.fElements'
  // example: EasyDraw("CETmean~-CETmean_mean", 34, "(CETmean~-CETmean_mean)>0")
  // sector: sector-number - only the specified sector will be drwawn
  // cuts: specifies cuts
  // drawOptions: draw options like 'same'
  // writeDrawCommand: write the command, that is passed to TTree::Draw
  //
   if (sector >= 0 && sector < 72) {
      return EasyDraw(drawCommand, Form("%i", sector), cuts, drawOptions, writeDrawCommand);
   }
   Error("EasyDraw","The TPC contains only sectors between 0 and 71.");
   return -1;
}


//_____________________________________________________________________________
Int_t AliTPCCalibViewer::EasyDraw1D(const char* drawCommand, const char* sector, const char* cuts, const char* drawOptions, Bool_t writeDrawCommand) const {
  //
  // easy drawing of data, use '~' for abbreviation of '.fElements'
  // example: EasyDraw("CETmean~-CETmean_mean", "A", "(CETmean~-CETmean_mean)>0")
  // sector: sector-number - the specified sector will be drwawn
  //         'A'/'C' or 'a'/'c' - side A/C will be drawn
  //         'ALL' - whole TPC will be drawn, projected on one side
  // cuts: specifies cuts
  // drawOptions: draw options like 'same'
  // writeDrawCommand: write the command, that is passed to TTree::Draw
  //

   TString drawStr(drawCommand);
   TString sectorStr(sector);
   TString drawOptionsStr(drawOptions);
   sectorStr.ToUpper();
   TString cutStr("");

   if (sectorStr == "A")
      cutStr += "(sector/18)%2==0 ";
   else if  (sectorStr == "C")
      cutStr += "(sector/18)%2==1 ";
   else if (sectorStr.IsDigit()) {
      Int_t isec = sectorStr.Atoi();
      if (isec < 0 || isec > 71) {
         Error("EasyDraw","The TPC contains only sectors between 0 and 71.");
         return -1;
      }
      cutStr += "(sector==";
      cutStr += isec;
      cutStr += ") ";
   }
   else if  (sectorStr.Contains("S")) {
      TString sec=sectorStr;
      sec.Remove(0,1);
      cutStr += "sector%36=="+sec+" ";
   }

   if (cuts && cuts[0] != 0) {
      if (cutStr.Length() != 0) cutStr += "&& ";
      cutStr += "(";
      cutStr += cuts;
      cutStr += ")";
   }

   drawStr.ReplaceAll(fAbbreviation, fAppendString);
   cutStr.ReplaceAll(fAbbreviation, fAppendString);
   if (writeDrawCommand) std::cout << "fTree->Draw(\"" << drawStr << "\", \"" <<  cutStr << "\", \"" << drawOptionsStr << "\");" << std::endl;
   Int_t returnValue = fTree->Draw(drawStr.Data(), cutStr.Data(), drawOptionsStr.Data());
   if (returnValue == -1) return -1;
   
   TObject *obj = (gPad) ? gPad->GetPrimitive("htemp") : 0; 
   if (!obj) obj = (TH1F*)gDirectory->Get("htemp");
   if (!obj) obj = gPad->GetPrimitive("tempHist");
   if (!obj) obj = (TH1F*)gDirectory->Get("tempHist");
   if (!obj) obj = gPad->GetPrimitive("Graph");
   if (!obj) obj = (TH1F*)gDirectory->Get("Graph");
   if (obj && obj->InheritsFrom("TH1")) FormatHistoLabels((TH1*)obj);
   return returnValue;
}


Int_t AliTPCCalibViewer::EasyDraw1D(const char* drawCommand, Int_t sector, const char* cuts, const char* drawOptions, Bool_t writeDrawCommand) const {
  //
  // easy drawing of data, use '~' for abbreviation of '.fElements'
  // example: EasyDraw("CETmean~-CETmean_mean", 34, "(CETmean~-CETmean_mean)>0")
  // sector: sector-number - the specified sector will be drwawn
  // cuts: specifies cuts
  // drawOptions: draw options like 'same'
  // writeDrawCommand: write the command, that is passed to TTree::Draw
  //

   if (sector >= 0 && sector < 72) {
      return EasyDraw1D(drawCommand, Form("%i",sector), cuts, drawOptions, writeDrawCommand);
   }
  Error("EasyDraw","The TPC contains only sectors between 0 and 71.");
  return -1;
}


void AliTPCCalibViewer::FormatHistoLabels(TH1 *histo) const {
   // 
   // formats title and axis labels of histo 
   // removes '.fElements'
   // 
   if (!histo) return;
   TString replaceString(fAppendString.Data());
   TString *str = new TString(histo->GetTitle());
   str->ReplaceAll(replaceString, "");
   histo->SetTitle(str->Data());
   delete str;
   if (histo->GetXaxis()) {
      str = new TString(histo->GetXaxis()->GetTitle());
      str->ReplaceAll(replaceString, "");
      histo->GetXaxis()->SetTitle(str->Data());
      delete str;
   }
   if (histo->GetYaxis()) {
      str = new TString(histo->GetYaxis()->GetTitle());
      str->ReplaceAll(replaceString, "");
      histo->GetYaxis()->SetTitle(str->Data());
      delete str;
   }
   if (histo->GetZaxis()) {
      str = new TString(histo->GetZaxis()->GetTitle());
      str->ReplaceAll(replaceString, "");
      histo->GetZaxis()->SetTitle(str->Data());
      delete str;
   }
}


Int_t  AliTPCCalibViewer::DrawHisto1D(const char* drawCommand, Int_t sector, const char* cuts, const char *sigmas, Bool_t plotMean, Bool_t plotMedian, Bool_t plotLTM) const {
   // 
   // Easy drawing of data, in principle the same as EasyDraw1D
   // Difference: A line for the mean / median / LTM is drawn 
   // in 'sigmas' you can specify in which distance to the mean/median/LTM you want to see a line in sigma-units, separated by ';'
   // example: sigmas = "2; 4; 6;"  at Begin_Latex 2 #sigma End_Latex, Begin_Latex 4 #sigma End_Latex and Begin_Latex 6 #sigma End_Latex  a line is drawn.
   // "plotMean", "plotMedian" and "plotLTM": what kind of lines do you want to see?
   // 
   if (sector >= 0 && sector < 72) {
      return DrawHisto1D(drawCommand, Form("%i", sector), cuts, sigmas, plotMean, plotMedian, plotLTM);
   }
   Error("DrawHisto1D","The TPC contains only sectors between 0 and 71.");
   return -1;
}   


Int_t  AliTPCCalibViewer::DrawHisto1D(const char* drawCommand, const char* sector, const char* cuts, const char *sigmas, Bool_t plotMean, Bool_t plotMedian, Bool_t plotLTM) const {
   // 
   // Easy drawing of data, in principle the same as EasyDraw1D
   // Difference: A line for the mean / median / LTM is drawn 
   // in 'sigmas' you can specify in which distance to the mean/median/LTM you want to see a line in sigma-units, separated by ';'
   // example: sigmas = "2; 4; 6;"  at Begin_Latex 2 #sigma End_Latex, Begin_Latex 4 #sigma End_Latex and Begin_Latex 6 #sigma End_Latex  a line is drawn.
   // "plotMean", "plotMedian" and "plotLTM": what kind of lines do you want to see?
   // 
   Int_t oldOptStat = gStyle->GetOptStat();
   gStyle->SetOptStat(0000000);
   Double_t ltmFraction = 0.8;
   
   TObjArray *sigmasTokens = TString(sigmas).Tokenize(";");  
   TVectorF nsigma(sigmasTokens->GetEntriesFast());
   for (Int_t i = 0; i < sigmasTokens->GetEntriesFast(); i++) {
      TString str(((TObjString*)sigmasTokens->At(i))->GetString());
      Double_t sig = (str.IsFloat()) ? str.Atof() : 0;
      nsigma[i] = sig;
   }
   delete sigmasTokens;

   TString drawStr(drawCommand);
   Bool_t dangerousToDraw = drawStr.Contains(":") || drawStr.Contains(">>");
   if (dangerousToDraw) {
      Warning("DrawHisto1D", "The draw string must not contain ':' or '>>'.");
      return -1;
   }
   drawStr += " >> tempHist";
   Int_t entries = EasyDraw1D(drawStr.Data(), sector, cuts);
   TH1F *htemp = (TH1F*)gDirectory->Get("tempHist");
   // FIXME is this histogram deleted automatically?
   Double_t *values = fTree->GetV1();  // value is the array containing 'entries' numbers
   
   Double_t mean = TMath::Mean(entries, values);
   Double_t median = TMath::Median(entries, values);
   Double_t sigma = TMath::RMS(entries, values);
   Double_t maxY = htemp->GetMaximum();
   
   TLegend * legend = new TLegend(.7,.7, .99, .99, "Statistical information");
   //fListOfObjectsToBeDeleted->Add(legend);

   if (plotMean) {
      // draw Mean
      TLine* line = new TLine(mean, 0, mean, maxY);
      //fListOfObjectsToBeDeleted->Add(line);
      line->SetLineColor(kRed);
      line->SetLineWidth(2);
      line->SetLineStyle(1);
      line->Draw();
      legend->AddEntry(line, Form("Mean: %f", mean), "l");
      // draw sigma lines
      for (Int_t i = 0; i < nsigma.GetNoElements(); i++) {
         TLine* linePlusSigma = new TLine(mean + nsigma[i] * sigma, 0, mean + nsigma[i] * sigma, maxY);
         //fListOfObjectsToBeDeleted->Add(linePlusSigma);
         linePlusSigma->SetLineColor(kRed);
         linePlusSigma->SetLineStyle(2 + i);
         linePlusSigma->Draw();
         TLine* lineMinusSigma = new TLine(mean - nsigma[i] * sigma, 0, mean - nsigma[i] * sigma, maxY);
         //fListOfObjectsToBeDeleted->Add(lineMinusSigma);
         lineMinusSigma->SetLineColor(kRed);
         lineMinusSigma->SetLineStyle(2 + i);
         lineMinusSigma->Draw();
         legend->AddEntry(lineMinusSigma, Form("%i #sigma = %f",(Int_t)(nsigma[i]), (Float_t)(nsigma[i] * sigma)), "l");
      }
   }
   if (plotMedian) {
      // draw median
      TLine* line = new TLine(median, 0, median, maxY);
      //fListOfObjectsToBeDeleted->Add(line);
      line->SetLineColor(kBlue);
      line->SetLineWidth(2);
      line->SetLineStyle(1);
      line->Draw();
      legend->AddEntry(line, Form("Median: %f", median), "l");
      // draw sigma lines
      for (Int_t i = 0; i < nsigma.GetNoElements(); i++) {
         TLine* linePlusSigma = new TLine(median + nsigma[i] * sigma, 0, median + nsigma[i]*sigma, maxY);
         //fListOfObjectsToBeDeleted->Add(linePlusSigma);
         linePlusSigma->SetLineColor(kBlue);
         linePlusSigma->SetLineStyle(2 + i);
         linePlusSigma->Draw();
         TLine* lineMinusSigma = new TLine(median - nsigma[i] * sigma, 0, median - nsigma[i]*sigma, maxY);
         //fListOfObjectsToBeDeleted->Add(lineMinusSigma);
         lineMinusSigma->SetLineColor(kBlue);
         lineMinusSigma->SetLineStyle(2 + i);
         lineMinusSigma->Draw();
         legend->AddEntry(lineMinusSigma, Form("%i #sigma = %f",(Int_t)(nsigma[i]), (Float_t)(nsigma[i] * sigma)), "l");
      }
   }
   if (plotLTM) {
      // draw LTM
      Double_t ltmRms = 0;
      Double_t ltm = GetLTM(entries, values, &ltmRms, ltmFraction);
      TLine* line = new TLine(ltm, 0, ltm, maxY);
      //fListOfObjectsToBeDeleted->Add(line);
      line->SetLineColor(kGreen+2);
      line->SetLineWidth(2);
      line->SetLineStyle(1);
      line->Draw();
      legend->AddEntry(line, Form("LTM: %f", ltm), "l");
      // draw sigma lines
      for (Int_t i = 0; i < nsigma.GetNoElements(); i++) {
         TLine* linePlusSigma = new TLine(ltm + nsigma[i] * ltmRms, 0, ltm + nsigma[i] * ltmRms, maxY);
         //fListOfObjectsToBeDeleted->Add(linePlusSigma);
         linePlusSigma->SetLineColor(kGreen+2);
         linePlusSigma->SetLineStyle(2+i);
         linePlusSigma->Draw();
   
         TLine* lineMinusSigma = new TLine(ltm - nsigma[i] * ltmRms, 0, ltm - nsigma[i] * ltmRms, maxY);
         //fListOfObjectsToBeDeleted->Add(lineMinusSigma);
         lineMinusSigma->SetLineColor(kGreen+2);
         lineMinusSigma->SetLineStyle(2+i);
         lineMinusSigma->Draw();
         legend->AddEntry(lineMinusSigma, Form("%i #sigma = %f", (Int_t)(nsigma[i]), (Float_t)(nsigma[i] * ltmRms)), "l");
      }
   }
   if (!plotMean && !plotMedian && !plotLTM) return -1;
   legend->Draw();
   gStyle->SetOptStat(oldOptStat);
   return 1;
}


Int_t AliTPCCalibViewer::SigmaCut(const char* drawCommand, Int_t sector, const char* cuts, Float_t sigmaMax, Bool_t plotMean, Bool_t plotMedian, Bool_t plotLTM, Bool_t pm, const char *sigmas, Float_t sigmaStep) const {
   //
   // Creates a histogram Begin_Latex S(t, #mu, #sigma) End_Latex, where you can see, how much of the data are inside sigma-intervals around the mean value
   // The data of the distribution Begin_Latex f(x, #mu, #sigma) End_Latex are given in 'array', 'n' specifies the length of the array
   // 'mean' and 'sigma' are Begin_Latex #mu End_Latex and  Begin_Latex #sigma End_Latex of the distribution in 'array', to be specified by the user
   // 'nbins': number of bins, 'binLow': first bin, 'binUp': last bin
   // sigmaMax: up to which sigma around the mean/median/LTM the histogram is generated (in units of sigma, Begin_Latex t #sigma End_Latex)
   // sigmaStep: the binsize of the generated histogram
   // Begin_Latex 
   // f(x, #mu, #sigma)     #Rightarrow       S(t, #mu, #sigma) = (#int_{#mu}^{#mu + t #sigma} f(x, #mu, #sigma) dx + #int_{#mu}^{#mu - t #sigma} f(x, #mu, #sigma) dx) / (#int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx)
   // End_Latex
   // 
   //
   // Creates a histogram, where you can see, how much of the data are inside sigma-intervals 
   // around the mean/median/LTM
   // with drawCommand, sector and cuts you specify your input data, see EasyDraw
   // sigmaMax: up to which sigma around the mean/median/LTM the histogram is generated (in units of sigma)
   // sigmaStep: the binsize of the generated histogram
   // plotMean/plotMedian/plotLTM: specifies where to put the center
   //
   if (sector >= 0 && sector < 72) {
      return SigmaCut(drawCommand, Form("%i", sector), cuts, sigmaMax, plotMean, plotMedian, plotLTM, pm, sigmas, sigmaStep);
   }
   Error("SigmaCut","The TPC contains only sectors between 0 and 71.");
   return -1;
}


Int_t AliTPCCalibViewer::SigmaCut(const char* drawCommand, const char* sector, const char* cuts, Float_t sigmaMax, Bool_t plotMean, Bool_t plotMedian, Bool_t plotLTM, Bool_t pm, const char *sigmas, Float_t sigmaStep) const {
   //
   // Creates a histogram, where you can see, how much of the data are inside sigma-intervals 
   // around the mean/median/LTM
   // with drawCommand, sector and cuts you specify your input data, see EasyDraw
   // sigmaMax: up to which sigma around the mean/median/LTM the histogram is generated (in units of sigma)
   // sigmaStep: the binsize of the generated histogram
   // plotMean/plotMedian/plotLTM: specifies where to put the center
   //
  
   Double_t ltmFraction = 0.8;
   
   TString drawStr(drawCommand);
   Bool_t dangerousToDraw = drawStr.Contains(":") || drawStr.Contains(">>");
   if (dangerousToDraw) {
      Warning("SigmaCut", "The draw string must not contain ':' or '>>'.");
      return -1;
   }
   drawStr += " >> tempHist";
   
   Int_t entries = EasyDraw1D(drawStr.Data(), sector, cuts, "goff");
   TH1F *htemp = (TH1F*)gDirectory->Get("tempHist");
   // FIXME is this histogram deleted automatically?
   Double_t *values = fTree->GetV1();  // value is the array containing 'entries' numbers
   
   Double_t mean = TMath::Mean(entries, values);
   Double_t median = TMath::Median(entries, values);
   Double_t sigma = TMath::RMS(entries, values);
   
   TLegend * legend = new TLegend(.7,.7, .99, .99, "Cumulative");
   //fListOfObjectsToBeDeleted->Add(legend);
   TH1F *cutHistoMean = 0;
   TH1F *cutHistoMedian = 0;
   TH1F *cutHistoLTM = 0;
   
   TObjArray *sigmasTokens = TString(sigmas).Tokenize(";");  
   TVectorF nsigma(sigmasTokens->GetEntriesFast());
   for (Int_t i = 0; i < sigmasTokens->GetEntriesFast(); i++) {
      TString str(((TObjString*)sigmasTokens->At(i))->GetString());
      Double_t sig = (str.IsFloat()) ? str.Atof() : 0;
      nsigma[i] = sig;
   }
   delete sigmasTokens;

   if (plotMean) {
      cutHistoMean = AliTPCCalibViewer::SigmaCut(htemp, mean, sigma, sigmaMax, sigmaStep, pm);
      if (cutHistoMean) {
         //fListOfObjectsToBeDeleted->Add(cutHistoMean);
         cutHistoMean->SetLineColor(kRed);
         legend->AddEntry(cutHistoMean, "Mean", "l");
         cutHistoMean->SetTitle(Form("%s, cumulative; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         cutHistoMean->Draw();
         DrawLines(cutHistoMean, nsigma, legend, kRed, pm);
      } // if (cutHistoMean)
       
   }
   if (plotMedian) {
      cutHistoMedian = AliTPCCalibViewer::SigmaCut(htemp, median, sigma, sigmaMax, sigmaStep, pm);
      if (cutHistoMedian) {
         //fListOfObjectsToBeDeleted->Add(cutHistoMedian);
         cutHistoMedian->SetLineColor(kBlue);
         legend->AddEntry(cutHistoMedian, "Median", "l");
         cutHistoMedian->SetTitle(Form("%s, cumulative; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         if (plotMean && cutHistoMean) cutHistoMedian->Draw("same");
            else cutHistoMedian->Draw();
         DrawLines(cutHistoMedian, nsigma, legend, kBlue, pm);
      }  // if (cutHistoMedian)
   }
   if (plotLTM) {
      Double_t ltmRms = 0;
      Double_t ltm = GetLTM(entries, values, &ltmRms, ltmFraction);
      cutHistoLTM = AliTPCCalibViewer::SigmaCut(htemp, ltm, ltmRms, sigmaMax, sigmaStep, pm);
      if (cutHistoLTM) {
         //fListOfObjectsToBeDeleted->Add(cutHistoLTM);
         cutHistoLTM->SetLineColor(kGreen+2);
         legend->AddEntry(cutHistoLTM, "LTM", "l");
         cutHistoLTM->SetTitle(Form("%s, cumulative; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         if ((plotMean && cutHistoMean) || (plotMedian && cutHistoMedian)) cutHistoLTM->Draw("same");
            else cutHistoLTM->Draw();
         DrawLines(cutHistoLTM, nsigma, legend, kGreen+2, pm);
      }
   }
   if (!plotMean && !plotMedian && !plotLTM) return -1;
   legend->Draw();
   return 1;
}


Int_t AliTPCCalibViewer::SigmaCutNew(const char* drawCommand, const char* sector, const char* cuts, Float_t /*sigmaMax*/, Bool_t plotMean, Bool_t plotMedian, Bool_t plotLTM, Bool_t /*pm*/, const char *sigmas, Float_t /*sigmaStep*/) const {
   //
   // Creates a histogram, where you can see, how much of the data are inside sigma-intervals 
   // around the mean/median/LTM
   // with drawCommand, sector and cuts you specify your input data, see EasyDraw
   // sigmaMax: up to which sigma around the mean/median/LTM the histogram is generated (in units of sigma)
   // sigmaStep: the binsize of the generated histogram
   // plotMean/plotMedian/plotLTM: specifies where to put the center
   //
  
   // Double_t ltmFraction = 0.8;  //unused
   
   TString drawStr(drawCommand);
   drawStr += " >> tempHist";
   
   Int_t entries = EasyDraw1D(drawStr.Data(), sector, cuts, "goff");
   TH1F *htemp = (TH1F*)gDirectory->Get("tempHist");
   TGraph *cutGraphMean   = 0;
   // TGraph *cutGraphMedian = 0;
   // TGraph *cutGraphLTM    = 0;
   Double_t *values = fTree->GetV1();  // value is the array containing 'entries' numbers
   Int_t    *index  = new Int_t[entries];
   Float_t  *xarray = new Float_t[entries];
   Float_t  *yarray = new Float_t[entries];
   TMath::Sort(entries, values, index, kFALSE);
   
   Double_t mean = TMath::Mean(entries, values);
   // Double_t median = TMath::Median(entries, values);
   Double_t sigma = TMath::RMS(entries, values);
   
   TLegend * legend = new TLegend(.7,.7, .99, .99, "Cumulative");
   //fListOfObjectsToBeDeleted->Add(legend);
   
   // parse sigmas string
   TObjArray *sigmasTokens = TString(sigmas).Tokenize(";");  
   TVectorF nsigma(sigmasTokens->GetEntriesFast());
   for (Int_t i = 0; i < sigmasTokens->GetEntriesFast(); i++) {
      TString str(((TObjString*)sigmasTokens->At(i))->GetString());
      Double_t sig = (str.IsFloat()) ? str.Atof() : 0;
      nsigma[i] = sig;
   }
   delete sigmasTokens;
   
   if (plotMean) {
      for (Int_t i = 0; i < entries; i++) {
         xarray[i] = TMath::Abs(values[index[i]] - mean) / sigma; 
         yarray[i] = float(i) / float(entries);
      }
      cutGraphMean = new TGraph(entries, xarray, yarray);
      if (cutGraphMean) {
         //fListOfObjectsToBeDeleted->Add(cutGraphMean);
         cutGraphMean->SetLineColor(kRed);
         legend->AddEntry(cutGraphMean, "Mean", "l");
         cutGraphMean->SetTitle(Form("%s, Cumulative; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         cutGraphMean->Draw("alu");
         DrawLines(cutGraphMean, nsigma, legend, kRed, kTRUE);
      }
   }
  delete [] index;
  delete [] xarray;
  delete [] yarray;
   /*
   if (plotMedian) {
      cutHistoMedian = AliTPCCalibViewer::SigmaCut(htemp, median, sigma, sigmaMax, sigmaStep, pm);
      if (cutHistoMedian) {
         fListOfObjectsToBeDeleted->Add(cutHistoMedian);
         cutHistoMedian->SetLineColor(kBlue);
         legend->AddEntry(cutHistoMedian, "Median", "l");
         cutHistoMedian->SetTitle(Form("%s, cumulative; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         if (plotMean && cutHistoMean) cutHistoMedian->Draw("same");
            else cutHistoMedian->Draw();
         DrawLines(cutHistoMedian, nsigma, legend, kBlue, pm);
      }  // if (cutHistoMedian)
   }
   if (plotLTM) {
      Double_t ltmRms = 0;
      Double_t ltm = GetLTM(entries, values, &ltmRms, ltmFraction);
      cutHistoLTM = AliTPCCalibViewer::SigmaCut(htemp, ltm, ltmRms, sigmaMax, sigmaStep, pm);
      if (cutHistoLTM) {
         fListOfObjectsToBeDeleted->Add(cutHistoLTM);
         cutHistoLTM->SetLineColor(kGreen+2);
         legend->AddEntry(cutHistoLTM, "LTM", "l");
         cutHistoLTM->SetTitle(Form("%s, cumulative; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         if (plotMean && cutHistoMean || plotMedian && cutHistoMedian) cutHistoLTM->Draw("same");
            else cutHistoLTM->Draw();
         DrawLines(cutHistoLTM, nsigma, legend, kGreen+2, pm);
      }
   }*/
   if (!plotMean && !plotMedian && !plotLTM) return -1;
   legend->Draw();
   return 1;
}


Int_t AliTPCCalibViewer::Integrate(const char* drawCommand,       Int_t sector, const char* cuts, Float_t sigmaMax, Bool_t plotMean, Bool_t plotMedian, Bool_t plotLTM, const char *sigmas, Float_t sigmaStep) const {
   //
   // Creates an integrated histogram Begin_Latex S(t, #mu, #sigma) End_Latex, out of the input distribution distribution Begin_Latex f(x, #mu, #sigma) End_Latex, given in "histogram"   
   // "mean" and "sigma" are Begin_Latex #mu End_Latex and  Begin_Latex #sigma End_Latex of the distribution in "histogram", to be specified by the user
   // sigmaMax: up to which sigma around the mean/median/LTM you want to integrate 
   // if "igma == 0" and "sigmaMax == 0" the whole histogram is integrated
   // "sigmaStep": the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used
   // The actual work is done on the array.
   /* Begin_Latex 
         f(x, #mu, #sigma)     #Rightarrow       S(t, #mu, #sigma) = #int_{-#infty}^{#mu + t #sigma} f(x, #mu, #sigma) dx / #int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx
      End_Latex  
   */
   if (sector >= 0 && sector < 72) {
      return Integrate(drawCommand, Form("%i", sector), cuts, sigmaMax, plotMean, plotMedian, plotLTM, sigmas, sigmaStep);
   }
   Error("Integrate","The TPC contains only sectors between 0 and 71.");
   return -1;
   
}


Int_t AliTPCCalibViewer::IntegrateOld(const char* drawCommand, const char* sector, const char* cuts, Float_t sigmaMax, Bool_t plotMean, Bool_t plotMedian, Bool_t plotLTM, const char *sigmas, Float_t sigmaStep) const {
   //
   // Creates an integrated histogram Begin_Latex S(t, #mu, #sigma) End_Latex, out of the input distribution distribution Begin_Latex f(x, #mu, #sigma) End_Latex, given in "histogram"   
   // "mean" and "sigma" are Begin_Latex #mu End_Latex and  Begin_Latex #sigma End_Latex of the distribution in "histogram", to be specified by the user
   // sigmaMax: up to which sigma around the mean/median/LTM you want to integrate 
   // if "igma == 0" and "sigmaMax == 0" the whole histogram is integrated
   // "sigmaStep": the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used
   // The actual work is done on the array.
   /* Begin_Latex 
         f(x, #mu, #sigma)     #Rightarrow       S(t, #mu, #sigma) = #int_{-#infty}^{#mu + t #sigma} f(x, #mu, #sigma) dx / #int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx
      End_Latex  
   */
   
   Double_t ltmFraction = 0.8;
   
   TString drawStr(drawCommand);
   drawStr += " >> tempHist";
   
   Int_t entries = EasyDraw1D(drawStr.Data(), sector, cuts, "goff");
   TH1F *htemp = (TH1F*)gDirectory->Get("tempHist");
   // FIXME is this histogram deleted automatically?
   Double_t *values = fTree->GetV1();  // value is the array containing 'entries' numbers
   
   Double_t mean = TMath::Mean(entries, values);
   Double_t median = TMath::Median(entries, values);
   Double_t sigma = TMath::RMS(entries, values);
    
   TObjArray *sigmasTokens = TString(sigmas).Tokenize(";");  
   TVectorF nsigma(sigmasTokens->GetEntriesFast());
   for (Int_t i = 0; i < sigmasTokens->GetEntriesFast(); i++) {
      TString str(((TObjString*)sigmasTokens->At(i))->GetString());
      Double_t sig = (str.IsFloat()) ? str.Atof() : 0;
      nsigma[i] = sig;
   }
   delete sigmasTokens;

   TLegend * legend = new TLegend(.7,.7, .99, .99, "Integrated histogram");
   //fListOfObjectsToBeDeleted->Add(legend);
   TH1F *integralHistoMean = 0;
   TH1F *integralHistoMedian = 0;
   TH1F *integralHistoLTM = 0;
  
   if (plotMean) {
      integralHistoMean = AliTPCCalibViewer::Integrate(htemp, mean, sigma, sigmaMax, sigmaStep);
      if (integralHistoMean) {
         //fListOfObjectsToBeDeleted->Add(integralHistoMean);
         integralHistoMean->SetLineColor(kRed);
         legend->AddEntry(integralHistoMean, "Mean", "l");
         integralHistoMean->SetTitle(Form("%s, integrated; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         integralHistoMean->Draw();
         DrawLines(integralHistoMean, nsigma, legend, kRed, kTRUE);
      }
   }
   if (plotMedian) {
      integralHistoMedian = AliTPCCalibViewer::Integrate(htemp, median, sigma, sigmaMax, sigmaStep);
      if (integralHistoMedian) {
         //fListOfObjectsToBeDeleted->Add(integralHistoMedian);
         integralHistoMedian->SetLineColor(kBlue);
         legend->AddEntry(integralHistoMedian, "Median", "l");
         integralHistoMedian->SetTitle(Form("%s, integrated; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         if (plotMean && integralHistoMean) integralHistoMedian->Draw("same");
            else integralHistoMedian->Draw();
         DrawLines(integralHistoMedian, nsigma, legend, kBlue, kTRUE);
      }
   }
   if (plotLTM) {
      Double_t ltmRms = 0;
      Double_t ltm = GetLTM(entries, values, &ltmRms, ltmFraction);
      integralHistoLTM = AliTPCCalibViewer::Integrate(htemp, ltm, ltmRms, sigmaMax, sigmaStep);
      if (integralHistoLTM) {
         //fListOfObjectsToBeDeleted->Add(integralHistoLTM);
         integralHistoLTM->SetLineColor(kGreen+2);
         legend->AddEntry(integralHistoLTM, "LTM", "l");
         integralHistoLTM->SetTitle(Form("%s, integrated; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         if ((plotMean && integralHistoMean) || (plotMedian && integralHistoMedian)) integralHistoLTM->Draw("same");
            else integralHistoLTM->Draw();
         DrawLines(integralHistoLTM, nsigma, legend, kGreen+2, kTRUE);
      }
   }
   if (!plotMean && !plotMedian && !plotLTM) return -1;
   legend->Draw();
   return 1;
}


Int_t AliTPCCalibViewer::Integrate(const char* drawCommand, const char* sector, const char* cuts, Float_t /*sigmaMax*/, Bool_t plotMean, Bool_t plotMedian, Bool_t plotLTM, const char *sigmas, Float_t /*sigmaStep*/) const {
   //
   // Creates an integrated histogram Begin_Latex S(t, #mu, #sigma) End_Latex, out of the input distribution distribution Begin_Latex f(x, #mu, #sigma) End_Latex, given in "histogram"   
   // "mean" and "sigma" are Begin_Latex #mu End_Latex and  Begin_Latex #sigma End_Latex of the distribution in "histogram", to be specified by the user
   // sigmaMax: up to which sigma around the mean/median/LTM you want to integrate 
   // if "igma == 0" and "sigmaMax == 0" the whole histogram is integrated
   // "sigmaStep": the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used
   // The actual work is done on the array.
   /* Begin_Latex 
         f(x, #mu, #sigma)     #Rightarrow       S(t, #mu, #sigma) = #int_{-#infty}^{#mu + t #sigma} f(x, #mu, #sigma) dx / #int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx
      End_Latex  
   */
   
   Double_t ltmFraction = 0.8;
   
   TString drawStr(drawCommand);
   Bool_t dangerousToDraw = drawStr.Contains(":") || drawStr.Contains(">>");
   if (dangerousToDraw) {
      Warning("Integrate", "The draw string must not contain ':' or '>>'.");
      return -1;
   }
   drawStr += " >> tempHist";
   
   Int_t entries = EasyDraw1D(drawStr.Data(), sector, cuts, "goff");
   TH1F *htemp = (TH1F*)gDirectory->Get("tempHist");
   TGraph *integralGraphMean   = 0;
   TGraph *integralGraphMedian = 0;
   TGraph *integralGraphLTM    = 0;
   Double_t *values = fTree->GetV1();  // value is the array containing 'entries' numbers
   Int_t    *index  = new Int_t[entries];
   Float_t  *xarray = new Float_t[entries];
   Float_t  *yarray = new Float_t[entries];
   TMath::Sort(entries, values, index, kFALSE);
   
   Double_t mean = TMath::Mean(entries, values);
   Double_t median = TMath::Median(entries, values);
   Double_t sigma = TMath::RMS(entries, values);
   
   // parse sigmas string
   TObjArray *sigmasTokens = TString(sigmas).Tokenize(";");  
   TVectorF nsigma(sigmasTokens->GetEntriesFast());
   for (Int_t i = 0; i < sigmasTokens->GetEntriesFast(); i++) {
      TString str(((TObjString*)sigmasTokens->At(i))->GetString());
      Double_t sig = (str.IsFloat()) ? str.Atof() : 0;
      nsigma[i] = sig;
   }
   delete sigmasTokens;

   TLegend * legend = new TLegend(.7,.7, .99, .99, "Integrated histogram");
   //fListOfObjectsToBeDeleted->Add(legend);
  
   if (plotMean) {
      for (Int_t i = 0; i < entries; i++) {
         xarray[i] = (values[index[i]] - mean) / sigma; 
         yarray[i] = float(i) / float(entries);
      }
      integralGraphMean = new TGraph(entries, xarray, yarray);
      if (integralGraphMean) {
         //fListOfObjectsToBeDeleted->Add(integralGraphMean);
         integralGraphMean->SetLineColor(kRed);
         legend->AddEntry(integralGraphMean, "Mean", "l");
         integralGraphMean->SetTitle(Form("%s, integrated; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         integralGraphMean->Draw("alu");
         DrawLines(integralGraphMean, nsigma, legend, kRed, kTRUE);
      }
   }
   if (plotMedian) {
      for (Int_t i = 0; i < entries; i++) {
         xarray[i] = (values[index[i]] - median) / sigma; 
         yarray[i] = float(i) / float(entries);
      }
      integralGraphMedian = new TGraph(entries, xarray, yarray);
      if (integralGraphMedian) {
         //fListOfObjectsToBeDeleted->Add(integralGraphMedian);
         integralGraphMedian->SetLineColor(kBlue);
         legend->AddEntry(integralGraphMedian, "Median", "l");
         integralGraphMedian->SetTitle(Form("%s, integrated; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         if (plotMean && integralGraphMean) integralGraphMedian->Draw("samelu");
            else integralGraphMedian->Draw("alu");
         DrawLines(integralGraphMedian, nsigma, legend, kBlue, kTRUE);
      }
   }
   if (plotLTM) {
      Double_t ltmRms = 0;
      Double_t ltm = GetLTM(entries, values, &ltmRms, ltmFraction);
      for (Int_t i = 0; i < entries; i++) {
         xarray[i] = (values[index[i]] - ltm) / ltmRms; 
         yarray[i] = float(i) / float(entries);
      }
      integralGraphLTM = new TGraph(entries, xarray, yarray);
      if (integralGraphLTM) {
         //fListOfObjectsToBeDeleted->Add(integralGraphLTM);
         integralGraphLTM->SetLineColor(kGreen+2);
         legend->AddEntry(integralGraphLTM, "LTM", "l");
         integralGraphLTM->SetTitle(Form("%s, integrated; Multiples of #sigma; Fraction of included data", htemp->GetTitle()));
         if ((plotMean && integralGraphMean) || (plotMedian && integralGraphMedian)) integralGraphLTM->Draw("samelu");
            else integralGraphLTM->Draw("alu");
         DrawLines(integralGraphLTM, nsigma, legend, kGreen+2, kTRUE);
      }
   }
   delete [] index;
   delete [] xarray;
   delete [] yarray;
  
   if (!plotMean && !plotMedian && !plotLTM) return -1;
   legend->Draw();
   return entries;
}


void AliTPCCalibViewer::DrawLines(TH1F *histogram, TVectorF nsigma, TLegend *legend, Int_t color, Bool_t pm) const {
   // 
   // Private function for SigmaCut(...) and Integrate(...)
   // Draws lines into the given histogram, specified by "nsigma", the lines are addeed to the legend
   // 
   
   // start to draw the lines, loop over requested sigmas
   for (Int_t i = 0; i < nsigma.GetNoElements(); i++) {
      if (!pm) { 
         Int_t bin = histogram->GetXaxis()->FindBin(nsigma[i]);
         TLine* lineUp = new TLine(nsigma[i], 0, nsigma[i], histogram->GetBinContent(bin));
         //fListOfObjectsToBeDeleted->Add(lineUp);
         lineUp->SetLineColor(color);
         lineUp->SetLineStyle(2 + i);
         lineUp->Draw();
         TLine* lineLeft = new TLine(nsigma[i], histogram->GetBinContent(bin), 0, histogram->GetBinContent(bin));
         //fListOfObjectsToBeDeleted->Add(lineLeft);
         lineLeft->SetLineColor(color);
         lineLeft->SetLineStyle(2 + i);
         lineLeft->Draw();
         legend->AddEntry(lineLeft, Form("Fraction(%f #sigma) = %f",nsigma[i], histogram->GetBinContent(bin)), "l");
      }
      else { // if (pm)
         Int_t bin = histogram->GetXaxis()->FindBin(nsigma[i]);
         TLine* lineUp1 = new TLine(nsigma[i], 0, nsigma[i], histogram->GetBinContent(bin));
         //fListOfObjectsToBeDeleted->Add(lineUp1);
         lineUp1->SetLineColor(color);
         lineUp1->SetLineStyle(2 + i);
         lineUp1->Draw();
         TLine* lineLeft1 = new TLine(nsigma[i], histogram->GetBinContent(bin), histogram->GetBinLowEdge(0)+histogram->GetBinWidth(0), histogram->GetBinContent(bin));
         //fListOfObjectsToBeDeleted->Add(lineLeft1);
         lineLeft1->SetLineColor(color);
         lineLeft1->SetLineStyle(2 + i);
         lineLeft1->Draw();
         legend->AddEntry(lineLeft1, Form("Fraction(+%f #sigma) = %f",nsigma[i], histogram->GetBinContent(bin)), "l");
         bin = histogram->GetXaxis()->FindBin(-nsigma[i]);
         TLine* lineUp2 = new TLine(-nsigma[i], 0, -nsigma[i], histogram->GetBinContent(bin));
         //fListOfObjectsToBeDeleted->Add(lineUp2);
         lineUp2->SetLineColor(color);
         lineUp2->SetLineStyle(2 + i);
         lineUp2->Draw();
         TLine* lineLeft2 = new TLine(-nsigma[i], histogram->GetBinContent(bin), histogram->GetBinLowEdge(0)+histogram->GetBinWidth(0), histogram->GetBinContent(bin));
         //fListOfObjectsToBeDeleted->Add(lineLeft2);
         lineLeft2->SetLineColor(color);
         lineLeft2->SetLineStyle(2 + i);
         lineLeft2->Draw();
         legend->AddEntry(lineLeft2, Form("Fraction(-%f #sigma) = %f",nsigma[i], histogram->GetBinContent(bin)), "l");
      }
   }  // for (Int_t i = 0; i < nsigma.GetNoElements(); i++)   
}


void AliTPCCalibViewer::DrawLines(TGraph *graph, TVectorF nsigma, TLegend *legend, Int_t color, Bool_t pm) const {
   // 
   // Private function for SigmaCut(...) and Integrate(...)
   // Draws lines into the given histogram, specified by "nsigma", the lines are addeed to the legend
   // 
   
   // start to draw the lines, loop over requested sigmas
   for (Int_t i = 0; i < nsigma.GetNoElements(); i++) {
      if (!pm) { 
         TLine* lineUp = new TLine(nsigma[i], 0, nsigma[i], graph->Eval(nsigma[i]));
         //fListOfObjectsToBeDeleted->Add(lineUp);
         lineUp->SetLineColor(color);
         lineUp->SetLineStyle(2 + i);
         lineUp->Draw();
         TLine* lineLeft = new TLine(nsigma[i], graph->Eval(nsigma[i]), 0, graph->Eval(nsigma[i]));
         //fListOfObjectsToBeDeleted->Add(lineLeft);
         lineLeft->SetLineColor(color);
         lineLeft->SetLineStyle(2 + i);
         lineLeft->Draw();
         legend->AddEntry(lineLeft, Form("Fraction(%f #sigma) = %f",nsigma[i], graph->Eval(nsigma[i])), "l");
      }
      else { // if (pm)
         TLine* lineUp1 = new TLine(nsigma[i], 0, nsigma[i], graph->Eval(nsigma[i]));
         //fListOfObjectsToBeDeleted->Add(lineUp1);
         lineUp1->SetLineColor(color);
         lineUp1->SetLineStyle(2 + i);
         lineUp1->Draw();
         TLine* lineLeft1 = new TLine(nsigma[i], graph->Eval(nsigma[i]), graph->GetHistogram()->GetXaxis()->GetBinLowEdge(0), graph->Eval(nsigma[i]));
         //fListOfObjectsToBeDeleted->Add(lineLeft1);
         lineLeft1->SetLineColor(color);
         lineLeft1->SetLineStyle(2 + i);
         lineLeft1->Draw();
         legend->AddEntry(lineLeft1, Form("Fraction(+%f #sigma) = %f",nsigma[i], graph->Eval(nsigma[i])), "l");
         TLine* lineUp2 = new TLine(-nsigma[i], 0, -nsigma[i], graph->Eval(-nsigma[i]));
         //fListOfObjectsToBeDeleted->Add(lineUp2);
         lineUp2->SetLineColor(color);
         lineUp2->SetLineStyle(2 + i);
         lineUp2->Draw();
         TLine* lineLeft2 = new TLine(-nsigma[i], graph->Eval(-nsigma[i]), graph->GetHistogram()->GetXaxis()->GetBinLowEdge(0), graph->Eval(-nsigma[i]));
         //fListOfObjectsToBeDeleted->Add(lineLeft2);
         lineLeft2->SetLineColor(color);
         lineLeft2->SetLineStyle(2 + i);
         lineLeft2->Draw();
         legend->AddEntry(lineLeft2, Form("Fraction(-%f #sigma) = %f",nsigma[i], graph->Eval(-nsigma[i])), "l");
      }
   }  // for (Int_t i = 0; i < nsigma.GetNoElements(); i++)   
}





/////////////////
// Array tools //
/////////////////


Int_t AliTPCCalibViewer::GetBin(Float_t value, Int_t nbins, Double_t binLow, Double_t binUp){
   // Returns the 'bin' for 'value'
   // The interval between 'binLow' and 'binUp' is divided into 'nbins' equidistant bins
   // avoid index out of bounds error: 'if (bin < binLow) bin = binLow' and vice versa
   /* Begin_Latex
         GetBin(value) = #frac{nbins - 1}{binUp - binLow} #upoint (value - binLow) +1
      End_Latex
   */
   
   Int_t bin =  TMath::Nint( (Float_t)(value - binLow) / (Float_t)(binUp - binLow) * (nbins-1) ) + 1;
   // avoid index out of bounds:   
   if (value < binLow) bin = 0;
   if (value > binUp)  bin = nbins + 1;
   return bin;
   
}   


Double_t AliTPCCalibViewer::GetLTM(Int_t n, const Double_t *const array, Double_t *const sigma, Double_t fraction){
   //
   //  returns the LTM and sigma
   //
   Double_t *ddata = new Double_t[n];
   Double_t mean = 0, lsigma = 0;
   UInt_t nPoints = 0;
   for (UInt_t i = 0; i < (UInt_t)n; i++) {
         ddata[nPoints]= array[nPoints];
         nPoints++;
   }
   Int_t hh = TMath::Min(TMath::Nint(fraction * nPoints), Int_t(n));
   AliMathBase::EvaluateUni(nPoints, ddata, mean, lsigma, hh);
   if (sigma) *sigma = lsigma;
   delete [] ddata;
   return mean;
}


TH1F* AliTPCCalibViewer::SigmaCut(TH1F *const histogram, Float_t mean, Float_t sigma, Float_t sigmaMax, Float_t sigmaStep, Bool_t pm) {
   //
   // Creates a cumulative histogram Begin_Latex S(t, #mu, #sigma) End_Latex, where you can see, how much of the data are inside sigma-intervals around the mean value
   // The data of the distribution Begin_Latex f(x, #mu, #sigma) End_Latex are given in 'histogram'
   // 'mean' and 'sigma' are Begin_Latex #mu End_Latex and  Begin_Latex #sigma End_Latex of the distribution in 'histogram', to be specified by the user
   // sigmaMax: up to which sigma around the mean/median/LTM the histogram is generated (in units of sigma, Begin_Latex t #sigma End_Latex)
   // sigmaStep: the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used
   // pm: Decide weather Begin_Latex t > 0 End_Latex (first case) or Begin_Latex t End_Latex arbitrary (secound case)
   // The actual work is done on the array.
   /* Begin_Latex 
         f(x, #mu, #sigma)     #Rightarrow       S(t, #mu, #sigma) = (#int_{#mu}^{#mu + t #sigma} f(x, #mu, #sigma) dx + #int_{#mu}^{#mu - t #sigma} f(x, #mu, #sigma) dx) / (#int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx),    for  t > 0    
         or      
         f(x, #mu, #sigma)     #Rightarrow       S(t, #mu, #sigma) = #int_{#mu}^{#mu + t #sigma} f(x, #mu, #sigma) dx / #int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx
      End_Latex  
      Begin_Macro(source)
      {
         Float_t mean = 0;
         Float_t sigma = 1.5;
         Float_t sigmaMax = 4;
         gROOT->SetStyle("Plain");
         TH1F *distribution = new TH1F("Distrib1", "Distribution f(x, #mu, #sigma)", 1000,-5,5);
         TRandom rand(23);
         for (Int_t i = 0; i <50000;i++) distribution->Fill(rand.Gaus(mean, sigma));
         Float_t *ar = distribution->GetArray();
         
         TCanvas* macro_example_canvas = new TCanvas("cAliTPCCalibViewer1", "", 350, 350);
         macro_example_canvas->Divide(0,3);
         TVirtualPad *pad1 = macro_example_canvas->cd(1);
         pad1->SetGridy();
         pad1->SetGridx();
         distribution->Draw();
         TVirtualPad *pad2 = macro_example_canvas->cd(2);
         pad2->SetGridy();
         pad2->SetGridx();
         
         TH1F *shist = AliTPCCalibViewer::SigmaCut(distribution, mean, sigma, sigmaMax);
         shist->SetNameTitle("Cumulative","Cumulative S(t, #mu, #sigma)");
         shist->Draw();  
         TVirtualPad *pad3 = macro_example_canvas->cd(3);
         pad3->SetGridy();
         pad3->SetGridx();
         TH1F *shistPM = AliTPCCalibViewer::SigmaCut(distribution, mean, sigma, sigmaMax, -1, kTRUE);
         shistPM->Draw();   
         return macro_example_canvas;
      }  
      End_Macro
   */ 
   
   Float_t *array = histogram->GetArray();
   Int_t    nbins = histogram->GetXaxis()->GetNbins();
   Float_t binLow = histogram->GetXaxis()->GetXmin();
   Float_t binUp  = histogram->GetXaxis()->GetXmax();
   return AliTPCCalibViewer::SigmaCut(nbins, array, mean, sigma, nbins, binLow, binUp, sigmaMax, sigmaStep, pm);
}   
   

TH1F* AliTPCCalibViewer::SigmaCut(Int_t n, const Float_t *array, Float_t mean, Float_t sigma, Int_t nbins, Float_t binLow, Float_t binUp, Float_t sigmaMax, Float_t sigmaStep, Bool_t pm){
   //
   // Creates a histogram Begin_Latex S(t, #mu, #sigma) End_Latex, where you can see, how much of the data are inside sigma-intervals around the mean value
   // The data of the distribution Begin_Latex f(x, #mu, #sigma) End_Latex are given in 'array', 'n' specifies the length of the array
   // 'mean' and 'sigma' are Begin_Latex #mu End_Latex and  Begin_Latex #sigma End_Latex of the distribution in 'array', to be specified by the user
   // 'nbins': number of bins, 'binLow': first bin, 'binUp': last bin
   // sigmaMax: up to which sigma around the mean/median/LTM the histogram is generated (in units of sigma, Begin_Latex t #sigma End_Latex)
   // sigmaStep: the binsize of the generated histogram
   // Here the actual work is done.
   
   if (sigma == 0) return 0;
   Float_t binWidth = (binUp-binLow)/(nbins - 1);
   if (sigmaStep <= 0) sigmaStep = binWidth;
   Int_t kbins = (Int_t)(sigmaMax * sigma / sigmaStep) + 1; // + 1  due to overflow bin in histograms
   if (pm) kbins = 2 * (Int_t)(sigmaMax * sigma / sigmaStep) + 1;
   Float_t kbinLow = !pm ? 0 : -sigmaMax;
   Float_t kbinUp  = sigmaMax;
   TH1F *hist = new TH1F("sigmaCutHisto","Cumulative; Multiples of #sigma; Fraction of included data", kbins, kbinLow, kbinUp); 
   hist->SetDirectory(0);
   hist->Reset();
   
   // calculate normalization
   Double_t normalization = 0;
   for (Int_t i = 0; i <= n; i++) {
        normalization += array[i];
   }
   
   // given units: units from given histogram
   // sigma units: in units of sigma
   // iDelta: integrate in interval (mean +- iDelta), given units
   // x:      ofset from mean for integration, given units
   // hist:   needs 
   
//    printf("nbins: %i, binLow: %f, binUp: %f \n", nbins, binLow, binUp);
   // fill histogram
   for (Float_t iDelta = 0; iDelta <= sigmaMax * sigma; iDelta += sigmaStep) {
      // integrate array
      Double_t valueP = array[GetBin(mean, nbins, binLow, binUp)];
      Double_t valueM = array[GetBin(mean-binWidth, nbins, binLow, binUp)];
      // add bin of mean value only once to the histogram
//       printf("++ adding bins: ");
      for (Float_t x = binWidth; x <= iDelta; x += binWidth) {
         valueP += (mean + x <= binUp)  ? array[GetBin(mean + x, nbins, binLow, binUp)] : 0;
         valueM += (mean-binWidth - x >= binLow) ? array[GetBin(mean-binWidth - x, nbins, binLow, binUp)] : 0; 
//          printf("%i, ", GetBin(mean + x, nbins, binLow, binUp));        
      }
//       printf("\n");
      if (valueP / normalization > 100) printf("+++ Error, value to big: %f, normalization with %f will fail  +++ \n", valueP, normalization);
      if (valueP / normalization > 100) return hist;
      if (valueM / normalization > 100) printf("+++ Error, value to big: %f, normalization with %f will fail  +++ \n", valueM, normalization);
      if (valueM / normalization > 100) return hist;
      valueP = (valueP / normalization);
      valueM = (valueM / normalization);
      if (pm) {
         Int_t bin = GetBin(iDelta/sigma, kbins, kbinLow, kbinUp);
         hist->SetBinContent(bin, valueP);
         bin = GetBin(-iDelta/sigma, kbins, kbinLow, kbinUp);
         hist->SetBinContent(bin, valueM);
      }
      else { // if (!pm)
         Int_t bin = GetBin(iDelta/sigma, kbins, kbinLow, kbinUp);
         hist->SetBinContent(bin, valueP + valueM);
//          printf("  first integration bin: %i, last integration bin in + direction: %i \n", GetBin(mean+binWidth, nbins, binLow, binUp), GetBin(iDelta, nbins, binLow, binUp));
//          printf("  first integration bin: %i, last integration bin in - direction: %i \n", GetBin(mean+binWidth, nbins, binLow, binUp), GetBin(-iDelta, nbins, binLow, binUp));
//          printf("  value: %f, normalization: %f, iDelta: %f, Bin: %i \n", valueP+valueM, normalization, iDelta, bin);
      }
   }
   //hist->SetMaximum(0.7);
   if (!pm) hist->SetMaximum(1.2);
   return hist;
}


TH1F* AliTPCCalibViewer::SigmaCut(Int_t /*n*/, const Double_t */*array*/, Double_t /*mean*/, Double_t /*sigma*/, Int_t /*nbins*/, const Double_t */*xbins*/, Double_t /*sigmaMax*/){
   // 
   // SigmaCut for variable binsize
   // NOT YET IMPLEMENTED !!!
   // 
   printf("SigmaCut with variable binsize, Not yet implemented\n");
   
   return 0;
}   


TH1F* AliTPCCalibViewer::Integrate(TH1F *const histogram, Float_t mean, Float_t sigma, Float_t sigmaMax, Float_t sigmaStep){
   //
   // Creates an integrated histogram Begin_Latex S(t, #mu, #sigma) End_Latex, out of the input distribution distribution Begin_Latex f(x, #mu, #sigma) End_Latex, given in "histogram"   
   // "mean" and "sigma" are Begin_Latex #mu End_Latex and  Begin_Latex #sigma End_Latex of the distribution in "histogram", to be specified by the user
   // sigmaMax: up to which sigma around the mean/median/LTM you want to integrate 
   // if "igma == 0" and "sigmaMax == 0" the whole histogram is integrated
   // "sigmaStep": the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used
   // The actual work is done on the array.
   /* Begin_Latex 
         f(x, #mu, #sigma)     #Rightarrow       S(t, #mu, #sigma) = #int_{-#infty}^{#mu + t #sigma} f(x, #mu, #sigma) dx / #int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx
      End_Latex  
      Begin_Macro(source)
      {
         Float_t mean = 0;
         Float_t sigma = 1.5;
         Float_t sigmaMax = 4;
         gROOT->SetStyle("Plain");
         TH1F *distribution = new TH1F("Distrib2", "Distribution f(x, #mu, #sigma)", 1000,-5,5);
         TRandom rand(23);
         for (Int_t i = 0; i <50000;i++) distribution->Fill(rand.Gaus(mean, sigma));
         Float_t *ar = distribution->GetArray();
         
         TCanvas* macro_example_canvas = new TCanvas("cAliTPCCalibViewer2", "", 350, 350);
         macro_example_canvas->Divide(0,2);
         TVirtualPad *pad1 = macro_example_canvas->cd(1);
         pad1->SetGridy();
         pad1->SetGridx();
         distribution->Draw();
         TVirtualPad *pad2 = macro_example_canvas->cd(2);
         pad2->SetGridy();
         pad2->SetGridx();
         TH1F *shist = AliTPCCalibViewer::Integrate(distribution, mean, sigma, sigmaMax);
         shist->SetNameTitle("Cumulative","Cumulative S(t, #mu, #sigma)");
         shist->Draw();  
         
      }  
      End_Macro
   */ 

   
   Float_t *array = histogram->GetArray();
   Int_t    nbins = histogram->GetXaxis()->GetNbins();
   Float_t binLow = histogram->GetXaxis()->GetXmin();
   Float_t binUp  = histogram->GetXaxis()->GetXmax();
   return AliTPCCalibViewer::Integrate(nbins, array, nbins, binLow, binUp, mean, sigma, sigmaMax, sigmaStep);
}   


TH1F* AliTPCCalibViewer::Integrate(Int_t n, const Float_t *const array, Int_t nbins, Float_t binLow, Float_t binUp, Float_t mean, Float_t sigma, Float_t sigmaMax, Float_t sigmaStep){
   // Creates an integrated histogram Begin_Latex S(t, #mu, #sigma) End_Latex, out of the input distribution distribution Begin_Latex f(x, #mu, #sigma) End_Latex, given in "histogram"   
   // "mean" and "sigma" are Begin_Latex #mu End_Latex and  Begin_Latex #sigma End_Latex of the distribution in "histogram", to be specified by the user
   // sigmaMax: up to which sigma around the mean/median/LTM you want to integrate 
   // if "igma == 0" and "sigmaMax == 0" the whole histogram is integrated
   // "sigmaStep": the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used
   // Here the actual work is done.
      
   Bool_t givenUnits = kTRUE;
   if (sigma != 0 && sigmaMax != 0) givenUnits = kFALSE;
   if (givenUnits) {
      sigma = 1;
      sigmaMax = (binUp - binLow) / 2.;
   }
   
   Float_t binWidth = (binUp-binLow)/(nbins - 1);
   if (sigmaStep <= 0) sigmaStep = binWidth;
   Int_t kbins =  (Int_t)(sigmaMax * sigma / sigmaStep) + 1;  // + 1  due to overflow bin in histograms
   Float_t kbinLow = givenUnits ? binLow : -sigmaMax;
   Float_t kbinUp  = givenUnits ? binUp  : sigmaMax;
   TH1F *hist = 0; 
   if (givenUnits)  hist = new TH1F("integratedHisto","Integrated Histogram; Given x; Fraction of included data", kbins, kbinLow, kbinUp); 
   if (!givenUnits) hist = new TH1F("integratedHisto","Integrated Histogram; Multiples of #sigma; Fraction of included data", kbins, kbinLow, kbinUp); 
   hist->SetDirectory(0);
   hist->Reset();
   
   // calculate normalization
 //  printf("calculating normalization, integrating from bin 1 to %i \n", n);
   Double_t normalization = 0;
   for (Int_t i = 1; i <= n; i++) {
        normalization += array[i];
   }
 //  printf("normalization: %f \n", normalization);
   
   // given units: units from given histogram
   // sigma units: in units of sigma
   // iDelta: integrate in interval (mean +- iDelta), given units
   // x:      ofset from mean for integration, given units
   // hist:   needs 
   
   // fill histogram
   for (Float_t iDelta = mean - sigmaMax * sigma; iDelta <= mean + sigmaMax * sigma; iDelta += sigmaStep) {
      // integrate array
      Double_t value = 0;
      for (Float_t x = mean - sigmaMax * sigma; x <= iDelta; x += binWidth) {
         value += (x <= binUp && x >= binLow)  ? array[GetBin(x, nbins, binLow, binUp)] : 0;
      }
      if (value / normalization > 100) printf("+++ Error, value to big: %f, normalization with %f will fail  +++ \n", value, normalization);
      if (value / normalization > 100) return hist;
      Int_t bin = GetBin(iDelta/sigma, kbins, kbinLow, kbinUp);
    //  printf("first integration bin: %i, last integration bin: %i \n", GetBin(mean - sigmaMax * sigma, nbins, binLow, binUp), GetBin(iDelta, nbins, binLow, binUp));
    //  printf("value: %f, normalization: %f, normalized value: %f, iDelta: %f, Bin: %i \n", value, normalization, value/normalization, iDelta, bin);
      value = (value / normalization);
      hist->SetBinContent(bin, value);
   }
   return hist;
}





////////////////////////
// end of Array tools //
////////////////////////



//_____________________________________________________________________________
AliTPCCalPad* AliTPCCalibViewer::GetCalPadOld(const char* desiredData, const char* cuts, const char* calPadName) const {
  //
  // creates a AliTPCCalPad out of the 'desiredData'
  // the functionality of EasyDraw1D is used
  // calPadName specifies the name of the created AliTPCCalPad
  //  - this takes a while -
  //
   TString drawStr(desiredData);
   drawStr.Append(":channel");
   drawStr.Append(fAbbreviation);
   AliTPCCalPad * createdCalPad = new AliTPCCalPad(calPadName, calPadName);
   Int_t entries = 0;
   for (Int_t sec = 0; sec < 72; sec++) {
     AliTPCCalROC * roc = createdCalPad->GetCalROC(sec);
      entries = EasyDraw1D(drawStr.Data(), (Int_t)sec, cuts, "goff");
      if (entries == -1) return 0;
      const Double_t *pchannel = fTree->GetV2();
      const Double_t *pvalue   = fTree->GetV1();
      for (Int_t i = 0; i < entries; i++) 
         roc->SetValue((UInt_t)(pchannel[i]), (Float_t)(pvalue[i]));
   }
   return createdCalPad;   
}


//_____________________________________________________________________________
AliTPCCalPad* AliTPCCalibViewer::GetCalPad(const char* desiredData, const char* cuts, const char* calPadName) const {
  //
  // creates a AliTPCCalPad out of the 'desiredData'
  // the functionality of EasyDraw1D is used
  // calPadName specifies the name of the created AliTPCCalPad
  //  - this takes a while -
  //
   TString drawStr(desiredData);
   drawStr.Append(":channel.fElements:sector");
   AliTPCCalPad * createdCalPad = new AliTPCCalPad(calPadName, calPadName);
   //
   Int_t entries = fTree->Draw(drawStr, cuts,"goff");
   const Double_t *pvalue   = fTree->GetV1();
   const Double_t *pchannel = fTree->GetV2();
   const Double_t *psector  = fTree->GetV3();

   for (Int_t ientry=0; ientry<entries; ientry++){
     Int_t sector= TMath::Nint(psector[ientry]);
     AliTPCCalROC * roc = createdCalPad->GetCalROC(sector);
     if (roc) roc->SetValue((UInt_t)(pchannel[ientry]), (Float_t)(pvalue[ientry]));
   }

  //  for (Int_t sec = 0; sec < 72; sec++) {
//      AliTPCCalROC * roc = createdCalPad->GetCalROC(sec);
//       entries = EasyDraw1D(drawStr.Data(), (Int_t)sec, cuts, "goff");
//       if (entries == -1) return 0;
//       for (Int_t i = 0; i < entries; i++) 
//          roc->SetValue((UInt_t)(pchannel[i]), (Float_t)(pvalue[i]));
//    }
   return createdCalPad;   
}

//_____________________________________________________________________________
AliTPCCalROC* AliTPCCalibViewer::GetCalROC(const char* desiredData, UInt_t sector, const char* cuts) const {
  //
  // creates a AliTPCCalROC out of the desiredData
  // the functionality of EasyDraw1D is used
  // sector specifies the sector of the created AliTPCCalROC
  //
   TString drawStr(desiredData);
   drawStr.Append(":channel");
   drawStr.Append(fAbbreviation);
   Int_t entries = EasyDraw1D(drawStr.Data(), (Int_t)sector, cuts, "goff");
   if (entries == -1) return 0;
   AliTPCCalROC * createdROC = new AliTPCCalROC(sector);
   for (Int_t i = 0; i < entries; i++) 
      createdROC->SetValue((UInt_t)(fTree->GetV2()[i]), fTree->GetV1()[i]);
   return createdROC;
}


TObjArray* AliTPCCalibViewer::GetListOfVariables(Bool_t printList) {
  //
  // scan the tree  - produces a list of available variables in the tree
  // printList: print the list to the screen, after the scan is done
  //
   TObjArray* arr = new TObjArray();
   TObjString* str = 0;
   if (!fTree) return 0;
   Int_t nentries = fTree->GetListOfBranches()->GetEntries();
   for (Int_t i = 0; i < nentries; i++) {
      str = new TObjString(fTree->GetListOfBranches()->At(i)->GetName());
      str->String().ReplaceAll("_Median", "");
      str->String().ReplaceAll("_Mean", "");
      str->String().ReplaceAll("_RMS", "");
      str->String().ReplaceAll("_LTM", "");
      str->String().ReplaceAll("_OutlierCutted", "");
      str->String().ReplaceAll(".", "");
      if (!arr->FindObject(str) && 
          !(str->String() == "channel" || str->String() == "gx" || str->String() == "gy" || 
            str->String() == "lx" || str->String() == "ly" || str->String() == "pad" || 
            str->String() == "row" || str->String() == "rpad" || str->String() == "sector"  ))
         arr->Add(str);
   }
   
   // loop over all friends (if there are some) and add them to the list
   if (fTree->GetListOfFriends()) {
      for (Int_t ifriend = 0; ifriend < fTree->GetListOfFriends()->GetEntries(); ifriend++){
         // printf("iterating through friendlist, currently at %i\n", ifriend);
         // printf("working with %s\n", fTree->GetListOfFriends()->At(ifriend)->ClassName());
         if (TString(fTree->GetListOfFriends()->At(ifriend)->ClassName()) != "TFriendElement") continue; // no friendElement found
         TFriendElement *friendElement = (TFriendElement*)fTree->GetListOfFriends()->At(ifriend);
         if (friendElement->GetTree() == 0) continue; // no tree found in friendElement
         // printf("friend found \n");
         for (Int_t i = 0; i < friendElement->GetTree()->GetListOfBranches()->GetEntries(); i++) {
            // printf("iterating through friendelement entries, currently at %i\n", i);
            str = new TObjString(friendElement->GetTree()->GetListOfBranches()->At(i)->GetName());
            str->String().ReplaceAll("_Median", "");
            str->String().ReplaceAll("_Mean", "");
            str->String().ReplaceAll("_RMS", "");
            str->String().ReplaceAll("_LTM", "");
            str->String().ReplaceAll("_OutlierCutted", "");
            str->String().ReplaceAll(".", "");
            if (!(str->String() == "channel" || str->String() == "gx" || str->String() == "gy" || 
                  str->String() == "lx" || str->String() == "ly" || str->String() == "pad" || 
                  str->String() == "row" || str->String() == "rpad" || str->String() == "sector"  )){
               // insert "<friendName>." at the beginning: (<friendName> is per default "R")
               str->String().Insert(0, ".");
               str->String().Insert(0, friendElement->GetName());
               if (!arr->FindObject(str)) arr->Add(str);
               // printf("added string %s \n", str->String().Data());
            }
         }
      }
   } // if (fTree->GetListOfFriends())
   
   arr->Sort();
//   ((TFriendElement*)gui->GetViewer()->GetTree()->GetListOfFriends()->At(0))->GetTree()->GetListOfBranches()->At(0)->GetName()
// ((TFriendElement*)gui->GetViewer()->GetTree()->GetListOfFriends()->At(0))->GetTree()->GetListOfBranches()


   if (printList) {
      TIterator* iter = arr->MakeIterator();
      iter->Reset();
      TObjString* currentStr = 0;
      while ( (currentStr = (TObjString*)(iter->Next())) ) {
         std::cout << currentStr->GetString().Data() << std::endl;
      }
      delete iter;
   }
   return arr;
}


TObjArray* AliTPCCalibViewer::GetListOfNormalizationVariables(Bool_t printList) const{
  //
  // produces a list of available variables for normalization in the tree
  // printList: print the list to the screen, after the scan is done
  //
   TObjArray* arr = new TObjArray();
   arr->Add(new TObjString("_Mean"));
   arr->Add(new TObjString("_Mean_OutlierCutted"));
   arr->Add(new TObjString("_Median"));
   arr->Add(new TObjString("_Median_OutlierCutted"));
   arr->Add(new TObjString("_LTM"));
   arr->Add(new TObjString("_LTM_OutlierCutted"));
   arr->Add(new TObjString(Form("LFitIntern_4_8%s", fAppendString.Data())));
   arr->Add(new TObjString(Form("GFitIntern_Lin%s", fAppendString.Data())));
   arr->Add(new TObjString(Form("GFitIntern_Par%s", fAppendString.Data())));
   arr->Add(new TObjString("FitLinLocal"));
   arr->Add(new TObjString("FitLinGlobal"));
   arr->Add(new TObjString("FitParLocal"));
   arr->Add(new TObjString("FitParGlobal"));

   if (printList) {
      TIterator* iter = arr->MakeIterator();
      iter->Reset();
      TObjString* currentStr = 0;
      while ((currentStr = (TObjString*)(iter->Next()))) {
         std::cout << currentStr->GetString().Data() << std::endl;
      }
      delete iter;
   }
   return arr;
}


TFriendElement* AliTPCCalibViewer::AddReferenceTree(const char* filename, const char* treename, const char* refname){
  //
  // add a reference tree to the current tree
  // by default the treename is 'calPads' and the reference treename is 'R'
  //
   TFile *file = new TFile(filename);
   fListOfObjectsToBeDeleted->Add(file);
   TTree * tree = (TTree*)file->Get(treename);
   return AddFriend(tree, refname);
}


TObjArray* AliTPCCalibViewer::GetArrayOfCalPads(){
  //
  // Returns a TObjArray with all AliTPCCalPads that are stored in the tree
  //  - this takes a while - 
  //
   TObjArray *listOfCalPads = GetListOfVariables();
   TObjArray *calPadsArray = new TObjArray();
   Int_t numberOfCalPads = listOfCalPads->GetEntries();
   for (Int_t i = 0; i < numberOfCalPads; i++) {
      std::cout << "Creating calPad " << (i+1) << " of " << numberOfCalPads << "\r" << std::flush;
      char* calPadName = (char*)((TObjString*)(listOfCalPads->At(i)))->GetString().Data();
      TString drawCommand = ((TObjString*)(listOfCalPads->At(i)))->GetString();
      drawCommand.Append(fAbbreviation.Data());
      AliTPCCalPad* calPad = GetCalPad(drawCommand.Data(), "", calPadName); 
      calPadsArray->Add(calPad); 
   }
   std::cout << std::endl;
   listOfCalPads->Delete();
   delete listOfCalPads;
   return calPadsArray;
}


TString* AliTPCCalibViewer::Fit(const char* drawCommand, const char* formula, const char* cuts, Double_t & chi2, TVectorD &fitParam, TMatrixD &covMatrix){
   //
   // fit an arbitrary function, specified by formula into the data, specified by drawCommand and cuts
   // returns chi2, fitParam and covMatrix
   // returns TString with fitted formula
   //
   
   TString formulaStr(formula); 
   TString drawStr(drawCommand);
   TString cutStr(cuts);
   
   // abbreviations:
   drawStr.ReplaceAll(fAbbreviation, fAppendString);
   cutStr.ReplaceAll(fAbbreviation, fAppendString);
   formulaStr.ReplaceAll(fAbbreviation, fAppendString);
   
   formulaStr.ReplaceAll("++", fAbbreviation);
   TObjArray* formulaTokens = formulaStr.Tokenize(fAbbreviation.Data()); 
   Int_t dim = formulaTokens->GetEntriesFast();
   
   fitParam.ResizeTo(dim);
   covMatrix.ResizeTo(dim,dim);
   
   TLinearFitter* fitter = new TLinearFitter(dim+1, Form("hyp%d",dim));
   fitter->StoreData(kTRUE);   
   fitter->ClearPoints();
   
   Int_t entries = Draw(drawStr.Data(), cutStr.Data(), "goff");
   if (entries == -1) {
     delete formulaTokens;
     return new TString("An ERROR has occured during fitting!");
   }
   Double_t **values = new Double_t*[dim+1] ; 
   
   for (Int_t i = 0; i < dim + 1; i++){
      Int_t centries = 0;
      if (i < dim) centries = fTree->Draw(((TObjString*)formulaTokens->At(i))->GetName(), cutStr.Data(), "goff");
      else  centries = fTree->Draw(drawStr.Data(), cutStr.Data(), "goff");
      
      if (entries != centries) {
        delete [] values;
	delete formulaTokens;
        return new TString("An ERROR has occured during fitting!");
      }
      values[i] = new Double_t[entries];
      memcpy(values[i],  fTree->GetV1(), entries*sizeof(Double_t)); 
   }
   
   // add points to the fitter
   for (Int_t i = 0; i < entries; i++){
      Double_t x[1000];
      for (Int_t j=0; j<dim;j++) x[j]=values[j][i];
      fitter->AddPoint(x, values[dim][i], 1);
   }

   fitter->Eval();
   fitter->GetParameters(fitParam);
   fitter->GetCovarianceMatrix(covMatrix);
   chi2 = fitter->GetChisquare();
//    chi2 = chi2;
   
   TString *preturnFormula = new TString(Form("( %e+",fitParam[0])), &returnFormula = *preturnFormula;
   
   for (Int_t iparam = 0; iparam < dim; iparam++) {
     returnFormula.Append(Form("%s*(%e)",((TObjString*)formulaTokens->At(iparam))->GetName(),fitParam[iparam+1]));
     if (iparam < dim-1) returnFormula.Append("+");
   }
   returnFormula.Append(" )");
   delete formulaTokens;
   delete fitter;
   for (Int_t i = 0; i < dim + 1; i++){
     delete [] values[i];
   }
   delete [] values;
   return preturnFormula;
}


void AliTPCCalibViewer::MakeTreeWithObjects(const char *fileName, const TObjArray *const array, const char * mapFileName) {
  //
  // Write tree with all available information
  // im mapFileName is speciefied, the Map information are also written to the tree
  // AliTPCCalPad-Objects are written directly to the tree, so that they can be accessd later on
  // (does not work!!!)
  //
   AliTPCROC* tpcROCinstance = AliTPCROC::Instance();

   TObjArray* mapIROCs = 0;
   TObjArray* mapOROCs = 0;
   TVectorF *mapIROCArray = 0;
   TVectorF *mapOROCArray = 0;
   Int_t mapEntries = 0;
   TString* mapNames = 0;
   
   if (mapFileName) {
      TFile mapFile(mapFileName, "read");
      
      TList* listOfROCs = mapFile.GetListOfKeys();
      mapEntries = listOfROCs->GetEntries()/2;
      mapIROCs = new TObjArray(mapEntries*2);
      mapOROCs = new TObjArray(mapEntries*2);
      mapIROCArray = new TVectorF[mapEntries];
      mapOROCArray = new TVectorF[mapEntries];
      
      mapNames = new TString[mapEntries];
      for (Int_t ivalue = 0; ivalue < mapEntries; ivalue++) {
         TString rocName(((TKey*)(listOfROCs->At(ivalue*2)))->GetName());
         rocName.Remove(rocName.Length()-4, 4);
         mapIROCs->AddAt((AliTPCCalROC*)mapFile.Get((rocName + "IROC").Data()), ivalue);
         mapOROCs->AddAt((AliTPCCalROC*)mapFile.Get((rocName + "OROC").Data()), ivalue);
         mapNames[ivalue].Append(rocName);
      }
      
      for (Int_t ivalue = 0; ivalue < mapEntries; ivalue++) {
         mapIROCArray[ivalue].ResizeTo(tpcROCinstance->GetNChannels(0));
         mapOROCArray[ivalue].ResizeTo(tpcROCinstance->GetNChannels(36));
      
         for (UInt_t ichannel = 0; ichannel < tpcROCinstance->GetNChannels(0); ichannel++)
            (mapIROCArray[ivalue])[ichannel] = ((AliTPCCalROC*)(mapIROCs->At(ivalue)))->GetValue(ichannel);
         for (UInt_t ichannel = 0; ichannel < tpcROCinstance->GetNChannels(36); ichannel++)
            (mapOROCArray[ivalue])[ichannel] = ((AliTPCCalROC*)(mapOROCs->At(ivalue)))->GetValue(ichannel);
      }

   } //  if (mapFileName)
  
   TTreeSRedirector cstream(fileName);
   Int_t arrayEntries = array->GetEntries();
   
   // Read names of AliTPCCalPads and save them in names[]
   TString* names = new TString[arrayEntries];
   for (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++)
      names[ivalue].Append(((AliTPCCalPad*)array->At(ivalue))->GetName());

   for (UInt_t isector = 0; isector < tpcROCinstance->GetNSectors(); isector++) {
      
      TVectorF *vectorArray = new TVectorF[arrayEntries];
      for (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++)
         vectorArray[ivalue].ResizeTo(tpcROCinstance->GetNChannels(isector));
            
      
      //
      // fill vectors of variable per pad
      //
      TVectorF *posArray = new TVectorF[8];
      for (Int_t ivalue = 0; ivalue < 8; ivalue++)
         posArray[ivalue].ResizeTo(tpcROCinstance->GetNChannels(isector));

      Float_t posG[3] = {0};
      Float_t posL[3] = {0};
      Int_t ichannel = 0;
      for (UInt_t irow = 0; irow < tpcROCinstance->GetNRows(isector); irow++) {
         for (UInt_t ipad = 0; ipad < tpcROCinstance->GetNPads(isector, irow); ipad++) {
            tpcROCinstance->GetPositionLocal(isector, irow, ipad, posL);
            tpcROCinstance->GetPositionGlobal(isector, irow, ipad, posG);
            posArray[0][ichannel] = irow;
            posArray[1][ichannel] = ipad;
            posArray[2][ichannel] = posL[0];
            posArray[3][ichannel] = posL[1];
            posArray[4][ichannel] = posG[0];
            posArray[5][ichannel] = posG[1];
            posArray[6][ichannel] = (Int_t)(ipad - (Double_t)(tpcROCinstance->GetNPads(isector, irow))/2);
            posArray[7][ichannel] = ichannel;
            
            // loop over array containing AliTPCCalPads
            for (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++) {
               AliTPCCalPad* calPad = (AliTPCCalPad*) array->At(ivalue);
               AliTPCCalROC* calROC = calPad->GetCalROC(isector);
               if (calROC)
                  (vectorArray[ivalue])[ichannel] = calROC->GetValue(irow, ipad);
               else
                  (vectorArray[ivalue])[ichannel] = 0;
            }
            ichannel++;
         }
      }
      AliTPCCalROC dummyROC(0);
      for  (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++) {
         AliTPCCalROC *roc = ((AliTPCCalPad*)array->At(ivalue))->GetCalROC(isector);
         if (!roc) roc = &dummyROC;
         cstream << "calPads" <<
            (Char_t*)((names[ivalue] + ".=").Data()) << &vectorArray[ivalue];
         cstream << "calPads" << 
            (Char_t*)((names[ivalue] + "Pad.=").Data()) << roc;
      }

      if (mapFileName) {
         for  (Int_t ivalue = 0; ivalue < mapEntries; ivalue++) {
            if (isector < 36)
               cstream << "calPads" <<
                  (Char_t*)((mapNames[ivalue] + ".=").Data()) << &mapIROCArray[ivalue];
            else
               cstream << "calPads" <<
                  (Char_t*)((mapNames[ivalue] + ".=").Data()) << &mapOROCArray[ivalue];
         }
      }
      
      cstream << "calPads" <<
         "sector=" << isector;

      cstream << "calPads" <<
         "row.=" << &posArray[0] <<
         "pad.=" << &posArray[1] <<
         "lx.=" << &posArray[2] <<
         "ly.=" << &posArray[3] <<
         "gx.=" << &posArray[4] <<
         "gy.=" << &posArray[5] <<
         "rpad.=" << &posArray[6] <<
         "channel.=" << &posArray[7];

      cstream << "calPads" <<
         "\n";

      delete[] posArray;
      delete[] vectorArray;
   } //for (UInt_t isector = 0; isector < tpcROCinstance->GetNSectors(); isector++)

   delete[] names;
   if (mapFileName) {
      delete mapIROCs;
      delete mapOROCs;
      delete[] mapIROCArray;
      delete[] mapOROCArray;
      delete[] mapNames;
   }
}


void AliTPCCalibViewer::MakeTree(const char * fileName, TObjArray * array, const char * mapFileName, AliTPCCalPad *const outlierPad, Float_t ltmFraction) {
  //
  // Write a tree with all available information
  // if mapFileName is speciefied, the Map information are also written to the tree
  // pads specified in outlierPad are not used for calculating statistics
  // The following statistical information on the basis of a ROC are calculated: 
  // "_Median", "_Mean", "_LTM", "_RMS_LTM"
  // "_Median_OutlierCutted", "_Mean_OutlierCutted", "_RMS_OutlierCutted", "_LTM_OutlierCutted", "_RMS_LTM_OutlierCutted"
  // The following position variables are available:
  // "row", "pad", "lx", "ly", "gx", "gy", "rpad", "channel"
  // 
  // The tree out of this function is the basis for the AliTPCCalibViewer and the AliTPCCalibViewerGUI.
   
  AliTPCROC* tpcROCinstance = AliTPCROC::Instance();

  TObjArray* mapIROCs = 0;
  TObjArray* mapOROCs = 0;
  TVectorF *mapIROCArray = 0;
  TVectorF *mapOROCArray = 0;
  Int_t mapEntries = 0;
  TString* mapNames = 0;
  
  if (mapFileName) {
    TFile mapFile(mapFileName, "read");
    
    TList* listOfROCs = mapFile.GetListOfKeys();
    mapEntries = listOfROCs->GetEntries()/2;
    mapIROCs = new TObjArray(mapEntries*2);
    mapOROCs = new TObjArray(mapEntries*2);
    mapIROCArray = new TVectorF[mapEntries];
    mapOROCArray = new TVectorF[mapEntries];
    
    mapNames = new TString[mapEntries];
    for (Int_t ivalue = 0; ivalue < mapEntries; ivalue++) {
      TString rocName(((TKey*)(listOfROCs->At(ivalue*2)))->GetName());
      rocName.Remove(rocName.Length()-4, 4);
      mapIROCs->AddAt((AliTPCCalROC*)mapFile.Get((rocName + "IROC").Data()), ivalue);
      mapOROCs->AddAt((AliTPCCalROC*)mapFile.Get((rocName + "OROC").Data()), ivalue);
      mapNames[ivalue].Append(rocName);
    }
    
    for (Int_t ivalue = 0; ivalue < mapEntries; ivalue++) {
      mapIROCArray[ivalue].ResizeTo(tpcROCinstance->GetNChannels(0));
      mapOROCArray[ivalue].ResizeTo(tpcROCinstance->GetNChannels(36));
      
      for (UInt_t ichannel = 0; ichannel < tpcROCinstance->GetNChannels(0); ichannel++)
        (mapIROCArray[ivalue])[ichannel] = ((AliTPCCalROC*)(mapIROCs->At(ivalue)))->GetValue(ichannel);
      for (UInt_t ichannel = 0; ichannel < tpcROCinstance->GetNChannels(36); ichannel++)
        (mapOROCArray[ivalue])[ichannel] = ((AliTPCCalROC*)(mapOROCs->At(ivalue)))->GetValue(ichannel);
    }
    
  } //  if (mapFileName)
  
  TTreeSRedirector cstream(fileName,"recreate");
  Int_t arrayEntries = 0;
  if (array) arrayEntries = array->GetEntries();
  
  TString* names = new TString[arrayEntries];
  for (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++)
    names[ivalue].Append(((AliTPCCalPad*)array->At(ivalue))->GetName());
  
  for (UInt_t isector = 0; isector < tpcROCinstance->GetNSectors(); isector++) {
      //
      // get statistic for given sector
      //
    TVectorF median(arrayEntries);
    TVectorF mean(arrayEntries);
    TVectorF rms(arrayEntries);
    TVectorF ltm(arrayEntries);
    TVectorF ltmrms(arrayEntries);
    TVectorF medianWithOut(arrayEntries);
    TVectorF meanWithOut(arrayEntries);
    TVectorF rmsWithOut(arrayEntries);
    TVectorF ltmWithOut(arrayEntries);
    TVectorF ltmrmsWithOut(arrayEntries);
    
    TVectorF *vectorArray = new TVectorF[arrayEntries];
    for (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++){
      vectorArray[ivalue].ResizeTo(tpcROCinstance->GetNChannels(isector));
      vectorArray[ivalue].SetUniqueID(array->UncheckedAt(ivalue)->GetUniqueID());
//       printf("UniqueID: %d\n",vectorArray[ivalue].GetUniqueID());
    }
    
    for (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++) {
      AliTPCCalPad* calPad = (AliTPCCalPad*) array->At(ivalue);
      AliTPCCalROC* calROC = calPad->GetCalROC(isector);
      AliTPCCalROC* outlierROC = 0;
      if (outlierPad) outlierROC = outlierPad->GetCalROC(isector);
      if (calROC) {
        median[ivalue] = calROC->GetMedian();
        mean[ivalue] = calROC->GetMean();
        rms[ivalue] = calROC->GetRMS();
        Double_t ltmrmsValue = 0;
        ltm[ivalue] = calROC->GetLTM(&ltmrmsValue, ltmFraction);
        ltmrms[ivalue] = ltmrmsValue;
        if (outlierROC) {
          medianWithOut[ivalue] = calROC->GetMedian(outlierROC);
          meanWithOut[ivalue] = calROC->GetMean(outlierROC);
          rmsWithOut[ivalue] = calROC->GetRMS(outlierROC);
          ltmrmsValue = 0;
          ltmWithOut[ivalue] = calROC->GetLTM(&ltmrmsValue, ltmFraction, outlierROC);
          ltmrmsWithOut[ivalue] = ltmrmsValue;
        }
      }
      else {
        median[ivalue] = 0.;
        mean[ivalue] = 0.;
        rms[ivalue] = 0.;
        ltm[ivalue] = 0.;
        ltmrms[ivalue] = 0.;
        medianWithOut[ivalue] = 0.;
        meanWithOut[ivalue] = 0.;
        rmsWithOut[ivalue] = 0.;
        ltmWithOut[ivalue] = 0.;
        ltmrmsWithOut[ivalue] = 0.;
      }
    }
    
      //
      // fill vectors of variable per pad
      //
    TVectorF *posArray = new TVectorF[8];
    for (Int_t ivalue = 0; ivalue < 8; ivalue++)
      posArray[ivalue].ResizeTo(tpcROCinstance->GetNChannels(isector));
    
    Float_t posG[3] = {0};
    Float_t posL[3] = {0};
    Int_t ichannel = 0;
    for (UInt_t irow = 0; irow < tpcROCinstance->GetNRows(isector); irow++) {
      for (UInt_t ipad = 0; ipad < tpcROCinstance->GetNPads(isector, irow); ipad++) {
        tpcROCinstance->GetPositionLocal(isector, irow, ipad, posL);
        tpcROCinstance->GetPositionGlobal(isector, irow, ipad, posG);
        posArray[0][ichannel] = irow;
        posArray[1][ichannel] = ipad;
        posArray[2][ichannel] = posL[0];
        posArray[3][ichannel] = posL[1];
        posArray[4][ichannel] = posG[0];
        posArray[5][ichannel] = posG[1];
        posArray[6][ichannel] = (Int_t)(ipad - (Double_t)(tpcROCinstance->GetNPads(isector, irow))/2);
        posArray[7][ichannel] = ichannel;
        
            // loop over array containing AliTPCCalPads
        for (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++) {
          AliTPCCalPad* calPad = (AliTPCCalPad*) array->At(ivalue);
          AliTPCCalROC* calROC = calPad->GetCalROC(isector);
                if (calROC)
                  (vectorArray[ivalue])[ichannel] = calROC->GetValue(irow, ipad);
          else
            (vectorArray[ivalue])[ichannel] = 0;
        }
        ichannel++;
      }
    }
    
    cstream << "calPads" <<
      "sector=" << isector;
    
    for  (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++) {
      if (outlierPad==0) {
	cstream << "calPads" <<
	  (Char_t*)((names[ivalue] + "_Median=").Data()) << median[ivalue] <<
	  (Char_t*)((names[ivalue] + "_Mean=").Data()) << mean[ivalue] <<
	  (Char_t*)((names[ivalue] + "_RMS=").Data()) << rms[ivalue] <<
	  (Char_t*)((names[ivalue] + "_LTM=").Data()) << ltm[ivalue] <<
	  (Char_t*)((names[ivalue] + "_RMS_LTM=").Data()) << ltmrms[ivalue];
      }
      if (outlierPad) {
        cstream << "calPads" <<
          (Char_t*)((names[ivalue] + "_Median=").Data()) << medianWithOut[ivalue] <<
          (Char_t*)((names[ivalue] + "_Mean").Data()) << meanWithOut[ivalue] <<
          (Char_t*)((names[ivalue] + "_RMS=").Data()) << rmsWithOut[ivalue] <<
          (Char_t*)((names[ivalue] + "_LTM=").Data()) << ltmWithOut[ivalue] <<
          (Char_t*)((names[ivalue] + "_RMS_LTM=").Data()) << ltmrmsWithOut[ivalue];
      }
      //timestamp and run, if given in title
      /*      TString title(((AliTPCCalPad*) array->At(ivalue))->GetTitle());
	      TObjArray *arrtitle=title.Tokenize(",");
	      Int_t run=-1;
	      UInt_t time=0;
	      TIter next(arrtitle);
	      TObject *o=0;
	      while ( (o=next()) ){
	      TString &entry=((TObjString*)o)->GetString();
	      entry.Remove(TString::kBoth,' ');
	      entry.Remove(TString::kBoth,'\t');
	      if (entry.BeginsWith("Run:")) {
	      run=entry(4,entry.Length()).Atoi();
	      } else if (entry.BeginsWith("Time:")) {
	      time=entry(6,entry.Length()).Atoi();
	      }
	      }
	      delete arrtitle;*/
      
    }
    
    for  (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++) {
      cstream << "calPads" <<
        (Char_t*)((names[ivalue] + ".=").Data()) << &vectorArray[ivalue];
    }
    
    if (mapFileName) {
          for  (Int_t ivalue = 0; ivalue < mapEntries; ivalue++) {
            if (isector < 36)
              cstream << "calPads" <<
              (Char_t*)((mapNames[ivalue] + ".=").Data()) << &mapIROCArray[ivalue];
            else
                cstream << "calPads" <<
              (Char_t*)((mapNames[ivalue] + ".=").Data()) << &mapOROCArray[ivalue];
         }
    }

    cstream << "calPads" <<
      "row.=" << &posArray[0] <<
      "pad.=" << &posArray[1] <<
      "lx.=" << &posArray[2] <<
      "ly.=" << &posArray[3] <<
      "gx.=" << &posArray[4] <<
      "gy.=" << &posArray[5] <<
      "rpad.=" << &posArray[6] <<
      "channel.=" << &posArray[7];
    
    cstream << "calPads" <<
      "\n";
    
    delete[] posArray;
    delete[] vectorArray;
  }
  TTree * tree = (cstream << "calPads").GetTree();
  MakeCalPadAliases(tree);
  for  (Int_t ivalue = 0; ivalue < arrayEntries; ivalue++) {
    //(Char_t*)((names[ivalue] + "_Median=").Data()) << median[ivalue] <<
    tree->SetAlias(TString::Format("%s_LTMRatio",names[ivalue].Data()).Data(), TString::Format("%s.fElements/%s_LTM",names[ivalue].Data(),names[ivalue].Data()).Data());
    tree->SetAlias(TString::Format("%s_MeanRatio",names[ivalue].Data()).Data(), TString::Format("%s.fElements/%s_Mean",names[ivalue].Data(),names[ivalue].Data()).Data());
    tree->SetAlias(TString::Format("%s_MedianRatio",names[ivalue].Data()).Data(), TString::Format("%s.fElements/%s_Median",names[ivalue].Data(),names[ivalue].Data()).Data());
    tree->SetAlias(names[ivalue].Data(), TString::Format("%s.fElements",names[ivalue].Data()).Data());
  }
  delete[] names;
  if (mapFileName) {
    delete mapIROCs;
    delete mapOROCs;
    delete[] mapIROCArray;
    delete[] mapOROCArray;
    delete[] mapNames;
  }
}
void AliTPCCalibViewer::MakeCalPadAliases(TTree * tree){
  //
  // make standard aliases for standard calibration trees
  //
  tree->SetAlias("Pad0","MapPadLength.fElements==7.5");   // pad types
  tree->SetAlias("Pad1","MapPadLength.fElements==10.0");
  tree->SetAlias("Pad2","MapPadLength.fElements==15.0");
  tree->SetAlias("ly","(ly.fElements+((sector<36)*(2*((sector%36)<18)-1)*0.2)+((sector>=36)*(2*((sector%36)<18)-1)*0.3))"); // correction for bug in tpcROCinstance->GetPositionLocal(isector, irow, ipad, posL);
  tree->SetAlias("dRowNorm0","(row.fElements/32-1)");      // normalized distance to the center of the chamber in lx (-1,1)
  tree->SetAlias("dRowNorm1","(row.fElements/32-1)");      // 
  tree->SetAlias("dRowNorm2","((row.fElements-63)/16-1)"); //
  tree->SetAlias("dRowNorm","(row.fElements<63)*(row.fElements/32-1)+(row.fElements>63)*((row.fElements-63)/16-1)");
  tree->SetAlias("dPhiNorm","(ly/lx.fElements)/(pi/18)"); // normalized distance to the center of the chamber in phi (-1,1)
  //
  tree->SetAlias("fsector","(sector%36)+(0.5+9*atan2(ly,lx.fElements)/pi)"); // float sector number
  tree->SetAlias("posEdge","((pi/18.)-abs(atan(ly/lx.fElements)))*lx.fElements"); //distance to the edge
  tree->SetAlias("lphi","atan(ly/lx.fElements)"); //local phi angle
}

void AliTPCCalibViewer::MakeTree(const char *outPutFileName, const Char_t *inputFileName, AliTPCCalPad *outlierPad, Float_t ltmFraction, const char *mapFileName ){
   // 
   // Function to create a calibration Tree with all available information.
   // See also documentation to MakeTree   
   // the file "inputFileName" must be in the following format (see also CreateObjectList):
   // (each colum separated by tabs, "dependingOnType" can have 2 or 3 colums)
   // 
   // type	path	dependingOnType
   // 
   // type == "CE":
   // dependingOnType = CETmean	CEQmean	CETrms
   // 
   // type == "Pulser":
   // dependingOnType = PulserTmean	PulsterQmean	PulserTrms
   // 
   // type == "Pedestals":
   // dependingOnType = Pedestals	Noise
   // 
   // type == "CalPad":
   // dependingOnType = NameInFile	NameToWriteToFile
   // 
   // 
   TObjArray objArray;
   CreateObjectList(inputFileName, &objArray);
   MakeTree(outPutFileName, &objArray, mapFileName, outlierPad, ltmFraction);   
}


void AliTPCCalibViewer::CreateObjectList(const Char_t *filename, TObjArray *calibObjects){
   // 
   // Function to create a TObjArray out of a given file
   // the file must be in the following format:
   // (each colum separated by tabs, "dependingOnType" can have 2 or 3 colums)
   // 
   // 
   // type	path	dependingOnType
   // 
   // type == "CE":
   // dependingOnType = CETmean	CEQmean	CETrms
   // 
   // type == "Pulser":
   // dependingOnType = PulserTmean	PulsterQmean	PulserTrms
   // 
   // type == "Pedestals":
   // dependingOnType = Pedestals	Noise
   // 
   // type == "CalPad":
   // dependingOnType = NameInFile	NameToWriteToFile
   // 
   // 
   // 
   if ( calibObjects == 0x0 ) return;
   ifstream in;
   in.open(filename);
   if ( !in.is_open() ){
      fprintf(stderr,"Error: cannot open list file '%s'", filename);
      return;
   }
   
   AliTPCCalPad *calPad=0x0;
   
   TString sFile;
   sFile.ReadFile(in);
   in.close();
   
   TObjArray *arrFileLine = sFile.Tokenize("\n");
   TIter nextLine(arrFileLine);
   
   TObjString *sObjLine = 0x0;
   while ( (sObjLine = (TObjString*)nextLine()) ){
      TString sLine(sObjLine->GetString());
      
      TObjArray *arrCol = sLine.Tokenize("\t");
      Int_t nCols = arrCol->GetEntriesFast();
      
      TObjString *sObjType     = (TObjString*)(arrCol->At(0));
      TObjString *sObjFileName = (TObjString*)(arrCol->At(1));
      TObjString *sObjName = 0x0;
      
      if ( !sObjType || !sObjFileName ) continue;
      TString sType(sObjType->GetString());
      TString sFileName(sObjFileName->GetString());
      printf("Type %s, opening %s \n", sType.Data(), sFileName.Data());
      TFile *fIn = TFile::Open(sFileName);
      if ( !fIn ){
         fprintf(stderr,"File not found: '%s'", sFileName.Data());
         continue;
      }
      
      if ( sType == "CE" ){  // next three colums are the names for CETmean, CEQmean and CETrms
         AliTPCCalibCE *ce = (AliTPCCalibCE*)fIn->Get("AliTPCCalibCE");
         calPad = new AliTPCCalPad((TObjArray*)ce->GetCalPadT0());         
         if (nCols > 2) {  // check, if the name is provided
            sObjName = (TObjString*)(arrCol->At(2));
            calPad->SetNameTitle(sObjName->GetString().Data(), sObjName->GetString().Data());
         }
         else calPad->SetNameTitle("CETmean","CETmean");
         calibObjects->Add(calPad);
         
         calPad = new AliTPCCalPad((TObjArray*)ce->GetCalPadQ());         
         if (nCols > 3) {  // check, if the name is provided
            sObjName = (TObjString*)(arrCol->At(3));
            calPad->SetNameTitle(sObjName->GetString().Data(), sObjName->GetString().Data());
         }
         else calPad->SetNameTitle("CEQmean","CEQmean");
         calibObjects->Add(calPad);        
         
         calPad = new AliTPCCalPad((TObjArray*)ce->GetCalPadRMS());
         if (nCols > 4) {  // check, if the name is provided
            sObjName = (TObjString*)(arrCol->At(4));
            calPad->SetNameTitle(sObjName->GetString().Data(), sObjName->GetString().Data());
         }
         else calPad->SetNameTitle("CETrms","CETrms");
         calibObjects->Add(calPad);         
                  
      } else if ( sType == "Pulser") {
         AliTPCCalibPulser *sig = (AliTPCCalibPulser*)fIn->Get("AliTPCCalibPulser");
         
         calPad = new AliTPCCalPad((TObjArray*)sig->GetCalPadT0());         
         if (nCols > 2) {
            sObjName = (TObjString*)(arrCol->At(2));
            calPad->SetNameTitle(sObjName->GetString().Data(), sObjName->GetString().Data());
         }
         else calPad->SetNameTitle("PulserTmean","PulserTmean");
         calibObjects->Add(calPad);
         
         calPad = new AliTPCCalPad((TObjArray*)sig->GetCalPadQ());         
         if (nCols > 3) {
            sObjName = (TObjString*)(arrCol->At(3));
            calPad->SetNameTitle(sObjName->GetString().Data(), sObjName->GetString().Data());
         }
         else calPad->SetNameTitle("PulserQmean","PulserQmean");
         calibObjects->Add(calPad);        
         
         calPad = new AliTPCCalPad((TObjArray*)sig->GetCalPadRMS());
         if (nCols > 4) {
            sObjName = (TObjString*)(arrCol->At(4));
            calPad->SetNameTitle(sObjName->GetString().Data(), sObjName->GetString().Data());
         }
         else calPad->SetNameTitle("PulserTrms","PulserTrms");
         calibObjects->Add(calPad);         
      
      } else if ( sType == "Pedestals") {
         AliTPCCalibPedestal *ped = (AliTPCCalibPedestal*)fIn->Get("AliTPCCalibPedestal");
         
         calPad = new AliTPCCalPad((TObjArray*)ped->GetCalPadPedestal());         
         if (nCols > 2) {
            sObjName = (TObjString*)(arrCol->At(2));
            calPad->SetNameTitle(sObjName->GetString().Data(), sObjName->GetString().Data());
         }
         else calPad->SetNameTitle("Pedestals","Pedestals");
         calibObjects->Add(calPad);
         
         calPad = new AliTPCCalPad((TObjArray*)ped->GetCalPadRMS());         
         if (nCols > 3) {
            sObjName = (TObjString*)(arrCol->At(3));
            calPad->SetNameTitle(sObjName->GetString().Data(), sObjName->GetString().Data());
         }
         else calPad->SetNameTitle("Noise","Noise");
         calibObjects->Add(calPad);        
     
      } else if ( sType == "CalPad") {
         if (nCols > 2) sObjName = (TObjString*)(arrCol->At(2));
         else continue;
         calPad = new AliTPCCalPad(*(AliTPCCalPad*)fIn->Get(sObjName->GetString().Data()));
         if (nCols > 3) {
            sObjName = (TObjString*)(arrCol->At(3));
            calPad->SetNameTitle(sObjName->GetString().Data(), sObjName->GetString().Data());
         }
         calibObjects->Add(calPad);
      } else {
         fprintf(stderr,"Undefined Type: '%s'",sType.Data());
      }
      delete fIn;
   }
   delete arrFileLine;
}



 AliTPCCalibViewer.cxx:1
 AliTPCCalibViewer.cxx:2
 AliTPCCalibViewer.cxx:3
 AliTPCCalibViewer.cxx:4
 AliTPCCalibViewer.cxx:5
 AliTPCCalibViewer.cxx:6
 AliTPCCalibViewer.cxx:7
 AliTPCCalibViewer.cxx:8
 AliTPCCalibViewer.cxx:9
 AliTPCCalibViewer.cxx:10
 AliTPCCalibViewer.cxx:11
 AliTPCCalibViewer.cxx:12
 AliTPCCalibViewer.cxx:13
 AliTPCCalibViewer.cxx:14
 AliTPCCalibViewer.cxx:15
 AliTPCCalibViewer.cxx:16
 AliTPCCalibViewer.cxx:17
 AliTPCCalibViewer.cxx:18
 AliTPCCalibViewer.cxx:19
 AliTPCCalibViewer.cxx:20
 AliTPCCalibViewer.cxx:21
 AliTPCCalibViewer.cxx:22
 AliTPCCalibViewer.cxx:23
 AliTPCCalibViewer.cxx:24
 AliTPCCalibViewer.cxx:25
 AliTPCCalibViewer.cxx:26
 AliTPCCalibViewer.cxx:27
 AliTPCCalibViewer.cxx:28
 AliTPCCalibViewer.cxx:29
 AliTPCCalibViewer.cxx:30
 AliTPCCalibViewer.cxx:31
 AliTPCCalibViewer.cxx:32
 AliTPCCalibViewer.cxx:33
 AliTPCCalibViewer.cxx:34
 AliTPCCalibViewer.cxx:35
 AliTPCCalibViewer.cxx:36
 AliTPCCalibViewer.cxx:37
 AliTPCCalibViewer.cxx:38
 AliTPCCalibViewer.cxx:39
 AliTPCCalibViewer.cxx:40
 AliTPCCalibViewer.cxx:41
 AliTPCCalibViewer.cxx:42
 AliTPCCalibViewer.cxx:43
 AliTPCCalibViewer.cxx:44
 AliTPCCalibViewer.cxx:45
 AliTPCCalibViewer.cxx:46
 AliTPCCalibViewer.cxx:47
 AliTPCCalibViewer.cxx:48
 AliTPCCalibViewer.cxx:49
 AliTPCCalibViewer.cxx:50
 AliTPCCalibViewer.cxx:51
 AliTPCCalibViewer.cxx:52
 AliTPCCalibViewer.cxx:53
 AliTPCCalibViewer.cxx:54
 AliTPCCalibViewer.cxx:55
 AliTPCCalibViewer.cxx:56
 AliTPCCalibViewer.cxx:57
 AliTPCCalibViewer.cxx:58
 AliTPCCalibViewer.cxx:59
 AliTPCCalibViewer.cxx:60
 AliTPCCalibViewer.cxx:61
 AliTPCCalibViewer.cxx:62
 AliTPCCalibViewer.cxx:63
 AliTPCCalibViewer.cxx:64
 AliTPCCalibViewer.cxx:65
 AliTPCCalibViewer.cxx:66
 AliTPCCalibViewer.cxx:67
 AliTPCCalibViewer.cxx:68
 AliTPCCalibViewer.cxx:69
 AliTPCCalibViewer.cxx:70
 AliTPCCalibViewer.cxx:71
 AliTPCCalibViewer.cxx:72
 AliTPCCalibViewer.cxx:73
 AliTPCCalibViewer.cxx:74
 AliTPCCalibViewer.cxx:75
 AliTPCCalibViewer.cxx:76
 AliTPCCalibViewer.cxx:77
 AliTPCCalibViewer.cxx:78
 AliTPCCalibViewer.cxx:79
 AliTPCCalibViewer.cxx:80
 AliTPCCalibViewer.cxx:81
 AliTPCCalibViewer.cxx:82
 AliTPCCalibViewer.cxx:83
 AliTPCCalibViewer.cxx:84
 AliTPCCalibViewer.cxx:85
 AliTPCCalibViewer.cxx:86
 AliTPCCalibViewer.cxx:87
 AliTPCCalibViewer.cxx:88
 AliTPCCalibViewer.cxx:89
 AliTPCCalibViewer.cxx:90
 AliTPCCalibViewer.cxx:91
 AliTPCCalibViewer.cxx:92
 AliTPCCalibViewer.cxx:93
 AliTPCCalibViewer.cxx:94
 AliTPCCalibViewer.cxx:95
 AliTPCCalibViewer.cxx:96
 AliTPCCalibViewer.cxx:97
 AliTPCCalibViewer.cxx:98
 AliTPCCalibViewer.cxx:99
 AliTPCCalibViewer.cxx:100
 AliTPCCalibViewer.cxx:101
 AliTPCCalibViewer.cxx:102
 AliTPCCalibViewer.cxx:103
 AliTPCCalibViewer.cxx:104
 AliTPCCalibViewer.cxx:105
 AliTPCCalibViewer.cxx:106
 AliTPCCalibViewer.cxx:107
 AliTPCCalibViewer.cxx:108
 AliTPCCalibViewer.cxx:109
 AliTPCCalibViewer.cxx:110
 AliTPCCalibViewer.cxx:111
 AliTPCCalibViewer.cxx:112
 AliTPCCalibViewer.cxx:113
 AliTPCCalibViewer.cxx:114
 AliTPCCalibViewer.cxx:115
 AliTPCCalibViewer.cxx:116
 AliTPCCalibViewer.cxx:117
 AliTPCCalibViewer.cxx:118
 AliTPCCalibViewer.cxx:119
 AliTPCCalibViewer.cxx:120
 AliTPCCalibViewer.cxx:121
 AliTPCCalibViewer.cxx:122
 AliTPCCalibViewer.cxx:123
 AliTPCCalibViewer.cxx:124
 AliTPCCalibViewer.cxx:125
 AliTPCCalibViewer.cxx:126
 AliTPCCalibViewer.cxx:127
 AliTPCCalibViewer.cxx:128
 AliTPCCalibViewer.cxx:129
 AliTPCCalibViewer.cxx:130
 AliTPCCalibViewer.cxx:131
 AliTPCCalibViewer.cxx:132
 AliTPCCalibViewer.cxx:133
 AliTPCCalibViewer.cxx:134
 AliTPCCalibViewer.cxx:135
 AliTPCCalibViewer.cxx:136
 AliTPCCalibViewer.cxx:137
 AliTPCCalibViewer.cxx:138
 AliTPCCalibViewer.cxx:139
 AliTPCCalibViewer.cxx:140
 AliTPCCalibViewer.cxx:141
 AliTPCCalibViewer.cxx:142
 AliTPCCalibViewer.cxx:143
 AliTPCCalibViewer.cxx:144
 AliTPCCalibViewer.cxx:145
 AliTPCCalibViewer.cxx:146
 AliTPCCalibViewer.cxx:147
 AliTPCCalibViewer.cxx:148
 AliTPCCalibViewer.cxx:149
 AliTPCCalibViewer.cxx:150
 AliTPCCalibViewer.cxx:151
 AliTPCCalibViewer.cxx:152
 AliTPCCalibViewer.cxx:153
 AliTPCCalibViewer.cxx:154
 AliTPCCalibViewer.cxx:155
 AliTPCCalibViewer.cxx:156
 AliTPCCalibViewer.cxx:157
 AliTPCCalibViewer.cxx:158
 AliTPCCalibViewer.cxx:159
 AliTPCCalibViewer.cxx:160
 AliTPCCalibViewer.cxx:161
 AliTPCCalibViewer.cxx:162
 AliTPCCalibViewer.cxx:163
 AliTPCCalibViewer.cxx:164
 AliTPCCalibViewer.cxx:165
 AliTPCCalibViewer.cxx:166
 AliTPCCalibViewer.cxx:167
 AliTPCCalibViewer.cxx:168
 AliTPCCalibViewer.cxx:169
 AliTPCCalibViewer.cxx:170
 AliTPCCalibViewer.cxx:171
 AliTPCCalibViewer.cxx:172
 AliTPCCalibViewer.cxx:173
 AliTPCCalibViewer.cxx:174
 AliTPCCalibViewer.cxx:175
 AliTPCCalibViewer.cxx:176
 AliTPCCalibViewer.cxx:177
 AliTPCCalibViewer.cxx:178
 AliTPCCalibViewer.cxx:179
 AliTPCCalibViewer.cxx:180
 AliTPCCalibViewer.cxx:181
 AliTPCCalibViewer.cxx:182
 AliTPCCalibViewer.cxx:183
 AliTPCCalibViewer.cxx:184
 AliTPCCalibViewer.cxx:185
 AliTPCCalibViewer.cxx:186
 AliTPCCalibViewer.cxx:187
 AliTPCCalibViewer.cxx:188
 AliTPCCalibViewer.cxx:189
 AliTPCCalibViewer.cxx:190
 AliTPCCalibViewer.cxx:191
 AliTPCCalibViewer.cxx:192
 AliTPCCalibViewer.cxx:193
 AliTPCCalibViewer.cxx:194
 AliTPCCalibViewer.cxx:195
 AliTPCCalibViewer.cxx:196
 AliTPCCalibViewer.cxx:197
 AliTPCCalibViewer.cxx:198
 AliTPCCalibViewer.cxx:199
 AliTPCCalibViewer.cxx:200
 AliTPCCalibViewer.cxx:201
 AliTPCCalibViewer.cxx:202
 AliTPCCalibViewer.cxx:203
 AliTPCCalibViewer.cxx:204
 AliTPCCalibViewer.cxx:205
 AliTPCCalibViewer.cxx:206
 AliTPCCalibViewer.cxx:207
 AliTPCCalibViewer.cxx:208
 AliTPCCalibViewer.cxx:209
 AliTPCCalibViewer.cxx:210
 AliTPCCalibViewer.cxx:211
 AliTPCCalibViewer.cxx:212
 AliTPCCalibViewer.cxx:213
 AliTPCCalibViewer.cxx:214
 AliTPCCalibViewer.cxx:215
 AliTPCCalibViewer.cxx:216
 AliTPCCalibViewer.cxx:217
 AliTPCCalibViewer.cxx:218
 AliTPCCalibViewer.cxx:219
 AliTPCCalibViewer.cxx:220
 AliTPCCalibViewer.cxx:221
 AliTPCCalibViewer.cxx:222
 AliTPCCalibViewer.cxx:223
 AliTPCCalibViewer.cxx:224
 AliTPCCalibViewer.cxx:225
 AliTPCCalibViewer.cxx:226
 AliTPCCalibViewer.cxx:227
 AliTPCCalibViewer.cxx:228
 AliTPCCalibViewer.cxx:229
 AliTPCCalibViewer.cxx:230
 AliTPCCalibViewer.cxx:231
 AliTPCCalibViewer.cxx:232
 AliTPCCalibViewer.cxx:233
 AliTPCCalibViewer.cxx:234
 AliTPCCalibViewer.cxx:235
 AliTPCCalibViewer.cxx:236
 AliTPCCalibViewer.cxx:237
 AliTPCCalibViewer.cxx:238
 AliTPCCalibViewer.cxx:239
 AliTPCCalibViewer.cxx:240
 AliTPCCalibViewer.cxx:241
 AliTPCCalibViewer.cxx:242
 AliTPCCalibViewer.cxx:243
 AliTPCCalibViewer.cxx:244
 AliTPCCalibViewer.cxx:245
 AliTPCCalibViewer.cxx:246
 AliTPCCalibViewer.cxx:247
 AliTPCCalibViewer.cxx:248
 AliTPCCalibViewer.cxx:249
 AliTPCCalibViewer.cxx:250
 AliTPCCalibViewer.cxx:251
 AliTPCCalibViewer.cxx:252
 AliTPCCalibViewer.cxx:253
 AliTPCCalibViewer.cxx:254
 AliTPCCalibViewer.cxx:255
 AliTPCCalibViewer.cxx:256
 AliTPCCalibViewer.cxx:257
 AliTPCCalibViewer.cxx:258
 AliTPCCalibViewer.cxx:259
 AliTPCCalibViewer.cxx:260
 AliTPCCalibViewer.cxx:261
 AliTPCCalibViewer.cxx:262
 AliTPCCalibViewer.cxx:263
 AliTPCCalibViewer.cxx:264
 AliTPCCalibViewer.cxx:265
 AliTPCCalibViewer.cxx:266
 AliTPCCalibViewer.cxx:267
 AliTPCCalibViewer.cxx:268
 AliTPCCalibViewer.cxx:269
 AliTPCCalibViewer.cxx:270
 AliTPCCalibViewer.cxx:271
 AliTPCCalibViewer.cxx:272
 AliTPCCalibViewer.cxx:273
 AliTPCCalibViewer.cxx:274
 AliTPCCalibViewer.cxx:275
 AliTPCCalibViewer.cxx:276
 AliTPCCalibViewer.cxx:277
 AliTPCCalibViewer.cxx:278
 AliTPCCalibViewer.cxx:279
 AliTPCCalibViewer.cxx:280
 AliTPCCalibViewer.cxx:281
 AliTPCCalibViewer.cxx:282
 AliTPCCalibViewer.cxx:283
 AliTPCCalibViewer.cxx:284
 AliTPCCalibViewer.cxx:285
 AliTPCCalibViewer.cxx:286
 AliTPCCalibViewer.cxx:287
 AliTPCCalibViewer.cxx:288
 AliTPCCalibViewer.cxx:289
 AliTPCCalibViewer.cxx:290
 AliTPCCalibViewer.cxx:291
 AliTPCCalibViewer.cxx:292
 AliTPCCalibViewer.cxx:293
 AliTPCCalibViewer.cxx:294
 AliTPCCalibViewer.cxx:295
 AliTPCCalibViewer.cxx:296
 AliTPCCalibViewer.cxx:297
 AliTPCCalibViewer.cxx:298
 AliTPCCalibViewer.cxx:299
 AliTPCCalibViewer.cxx:300
 AliTPCCalibViewer.cxx:301
 AliTPCCalibViewer.cxx:302
 AliTPCCalibViewer.cxx:303
 AliTPCCalibViewer.cxx:304
 AliTPCCalibViewer.cxx:305
 AliTPCCalibViewer.cxx:306
 AliTPCCalibViewer.cxx:307
 AliTPCCalibViewer.cxx:308
 AliTPCCalibViewer.cxx:309
 AliTPCCalibViewer.cxx:310
 AliTPCCalibViewer.cxx:311
 AliTPCCalibViewer.cxx:312
 AliTPCCalibViewer.cxx:313
 AliTPCCalibViewer.cxx:314
 AliTPCCalibViewer.cxx:315
 AliTPCCalibViewer.cxx:316
 AliTPCCalibViewer.cxx:317
 AliTPCCalibViewer.cxx:318
 AliTPCCalibViewer.cxx:319
 AliTPCCalibViewer.cxx:320
 AliTPCCalibViewer.cxx:321
 AliTPCCalibViewer.cxx:322
 AliTPCCalibViewer.cxx:323
 AliTPCCalibViewer.cxx:324
 AliTPCCalibViewer.cxx:325
 AliTPCCalibViewer.cxx:326
 AliTPCCalibViewer.cxx:327
 AliTPCCalibViewer.cxx:328
 AliTPCCalibViewer.cxx:329
 AliTPCCalibViewer.cxx:330
 AliTPCCalibViewer.cxx:331
 AliTPCCalibViewer.cxx:332
 AliTPCCalibViewer.cxx:333
 AliTPCCalibViewer.cxx:334
 AliTPCCalibViewer.cxx:335
 AliTPCCalibViewer.cxx:336
 AliTPCCalibViewer.cxx:337
 AliTPCCalibViewer.cxx:338
 AliTPCCalibViewer.cxx:339
 AliTPCCalibViewer.cxx:340
 AliTPCCalibViewer.cxx:341
 AliTPCCalibViewer.cxx:342
 AliTPCCalibViewer.cxx:343
 AliTPCCalibViewer.cxx:344
 AliTPCCalibViewer.cxx:345
 AliTPCCalibViewer.cxx:346
 AliTPCCalibViewer.cxx:347
 AliTPCCalibViewer.cxx:348
 AliTPCCalibViewer.cxx:349
 AliTPCCalibViewer.cxx:350
 AliTPCCalibViewer.cxx:351
 AliTPCCalibViewer.cxx:352
 AliTPCCalibViewer.cxx:353
 AliTPCCalibViewer.cxx:354
 AliTPCCalibViewer.cxx:355
 AliTPCCalibViewer.cxx:356
 AliTPCCalibViewer.cxx:357
 AliTPCCalibViewer.cxx:358
 AliTPCCalibViewer.cxx:359
 AliTPCCalibViewer.cxx:360
 AliTPCCalibViewer.cxx:361
 AliTPCCalibViewer.cxx:362
 AliTPCCalibViewer.cxx:363
 AliTPCCalibViewer.cxx:364
 AliTPCCalibViewer.cxx:365
 AliTPCCalibViewer.cxx:366
 AliTPCCalibViewer.cxx:367
 AliTPCCalibViewer.cxx:368
 AliTPCCalibViewer.cxx:369
 AliTPCCalibViewer.cxx:370
 AliTPCCalibViewer.cxx:371
 AliTPCCalibViewer.cxx:372
 AliTPCCalibViewer.cxx:373
 AliTPCCalibViewer.cxx:374
 AliTPCCalibViewer.cxx:375
 AliTPCCalibViewer.cxx:376
 AliTPCCalibViewer.cxx:377
 AliTPCCalibViewer.cxx:378
 AliTPCCalibViewer.cxx:379
 AliTPCCalibViewer.cxx:380
 AliTPCCalibViewer.cxx:381
 AliTPCCalibViewer.cxx:382
 AliTPCCalibViewer.cxx:383
 AliTPCCalibViewer.cxx:384
 AliTPCCalibViewer.cxx:385
 AliTPCCalibViewer.cxx:386
 AliTPCCalibViewer.cxx:387
 AliTPCCalibViewer.cxx:388
 AliTPCCalibViewer.cxx:389
 AliTPCCalibViewer.cxx:390
 AliTPCCalibViewer.cxx:391
 AliTPCCalibViewer.cxx:392
 AliTPCCalibViewer.cxx:393
 AliTPCCalibViewer.cxx:394
 AliTPCCalibViewer.cxx:395
 AliTPCCalibViewer.cxx:396
 AliTPCCalibViewer.cxx:397
 AliTPCCalibViewer.cxx:398
 AliTPCCalibViewer.cxx:399
 AliTPCCalibViewer.cxx:400
 AliTPCCalibViewer.cxx:401
 AliTPCCalibViewer.cxx:402
 AliTPCCalibViewer.cxx:403
 AliTPCCalibViewer.cxx:404
 AliTPCCalibViewer.cxx:405
 AliTPCCalibViewer.cxx:406
 AliTPCCalibViewer.cxx:407
 AliTPCCalibViewer.cxx:408
 AliTPCCalibViewer.cxx:409
 AliTPCCalibViewer.cxx:410
 AliTPCCalibViewer.cxx:411
 AliTPCCalibViewer.cxx:412
 AliTPCCalibViewer.cxx:413
 AliTPCCalibViewer.cxx:414
 AliTPCCalibViewer.cxx:415
 AliTPCCalibViewer.cxx:416
 AliTPCCalibViewer.cxx:417
 AliTPCCalibViewer.cxx:418
 AliTPCCalibViewer.cxx:419
 AliTPCCalibViewer.cxx:420
 AliTPCCalibViewer.cxx:421
 AliTPCCalibViewer.cxx:422
 AliTPCCalibViewer.cxx:423
 AliTPCCalibViewer.cxx:424
 AliTPCCalibViewer.cxx:425
 AliTPCCalibViewer.cxx:426
 AliTPCCalibViewer.cxx:427
 AliTPCCalibViewer.cxx:428
 AliTPCCalibViewer.cxx:429
 AliTPCCalibViewer.cxx:430
 AliTPCCalibViewer.cxx:431
 AliTPCCalibViewer.cxx:432
 AliTPCCalibViewer.cxx:433
 AliTPCCalibViewer.cxx:434
 AliTPCCalibViewer.cxx:435
 AliTPCCalibViewer.cxx:436
 AliTPCCalibViewer.cxx:437
 AliTPCCalibViewer.cxx:438
 AliTPCCalibViewer.cxx:439
 AliTPCCalibViewer.cxx:440
 AliTPCCalibViewer.cxx:441
 AliTPCCalibViewer.cxx:442
 AliTPCCalibViewer.cxx:443
 AliTPCCalibViewer.cxx:444
 AliTPCCalibViewer.cxx:445
 AliTPCCalibViewer.cxx:446
 AliTPCCalibViewer.cxx:447
 AliTPCCalibViewer.cxx:448
 AliTPCCalibViewer.cxx:449
 AliTPCCalibViewer.cxx:450
 AliTPCCalibViewer.cxx:451
 AliTPCCalibViewer.cxx:452
 AliTPCCalibViewer.cxx:453
 AliTPCCalibViewer.cxx:454
 AliTPCCalibViewer.cxx:455
 AliTPCCalibViewer.cxx:456
 AliTPCCalibViewer.cxx:457
 AliTPCCalibViewer.cxx:458
 AliTPCCalibViewer.cxx:459
 AliTPCCalibViewer.cxx:460
 AliTPCCalibViewer.cxx:461
 AliTPCCalibViewer.cxx:462
 AliTPCCalibViewer.cxx:463
 AliTPCCalibViewer.cxx:464
 AliTPCCalibViewer.cxx:465
 AliTPCCalibViewer.cxx:466
 AliTPCCalibViewer.cxx:467
 AliTPCCalibViewer.cxx:468
 AliTPCCalibViewer.cxx:469
 AliTPCCalibViewer.cxx:470
 AliTPCCalibViewer.cxx:471
 AliTPCCalibViewer.cxx:472
 AliTPCCalibViewer.cxx:473
 AliTPCCalibViewer.cxx:474
 AliTPCCalibViewer.cxx:475
 AliTPCCalibViewer.cxx:476
 AliTPCCalibViewer.cxx:477
 AliTPCCalibViewer.cxx:478
 AliTPCCalibViewer.cxx:479
 AliTPCCalibViewer.cxx:480
 AliTPCCalibViewer.cxx:481
 AliTPCCalibViewer.cxx:482
 AliTPCCalibViewer.cxx:483
 AliTPCCalibViewer.cxx:484
 AliTPCCalibViewer.cxx:485
 AliTPCCalibViewer.cxx:486
 AliTPCCalibViewer.cxx:487
 AliTPCCalibViewer.cxx:488
 AliTPCCalibViewer.cxx:489
 AliTPCCalibViewer.cxx:490
 AliTPCCalibViewer.cxx:491
 AliTPCCalibViewer.cxx:492
 AliTPCCalibViewer.cxx:493
 AliTPCCalibViewer.cxx:494
 AliTPCCalibViewer.cxx:495
 AliTPCCalibViewer.cxx:496
 AliTPCCalibViewer.cxx:497
 AliTPCCalibViewer.cxx:498
 AliTPCCalibViewer.cxx:499
 AliTPCCalibViewer.cxx:500
 AliTPCCalibViewer.cxx:501
 AliTPCCalibViewer.cxx:502
 AliTPCCalibViewer.cxx:503
 AliTPCCalibViewer.cxx:504
 AliTPCCalibViewer.cxx:505
 AliTPCCalibViewer.cxx:506
 AliTPCCalibViewer.cxx:507
 AliTPCCalibViewer.cxx:508
 AliTPCCalibViewer.cxx:509
 AliTPCCalibViewer.cxx:510
 AliTPCCalibViewer.cxx:511
 AliTPCCalibViewer.cxx:512
 AliTPCCalibViewer.cxx:513
 AliTPCCalibViewer.cxx:514
 AliTPCCalibViewer.cxx:515
 AliTPCCalibViewer.cxx:516
 AliTPCCalibViewer.cxx:517
 AliTPCCalibViewer.cxx:518
 AliTPCCalibViewer.cxx:519
 AliTPCCalibViewer.cxx:520
 AliTPCCalibViewer.cxx:521
 AliTPCCalibViewer.cxx:522
 AliTPCCalibViewer.cxx:523
 AliTPCCalibViewer.cxx:524
 AliTPCCalibViewer.cxx:525
 AliTPCCalibViewer.cxx:526
 AliTPCCalibViewer.cxx:527
 AliTPCCalibViewer.cxx:528
 AliTPCCalibViewer.cxx:529
 AliTPCCalibViewer.cxx:530
 AliTPCCalibViewer.cxx:531
 AliTPCCalibViewer.cxx:532
 AliTPCCalibViewer.cxx:533
 AliTPCCalibViewer.cxx:534
 AliTPCCalibViewer.cxx:535
 AliTPCCalibViewer.cxx:536
 AliTPCCalibViewer.cxx:537
 AliTPCCalibViewer.cxx:538
 AliTPCCalibViewer.cxx:539
 AliTPCCalibViewer.cxx:540
 AliTPCCalibViewer.cxx:541
 AliTPCCalibViewer.cxx:542
 AliTPCCalibViewer.cxx:543
 AliTPCCalibViewer.cxx:544
 AliTPCCalibViewer.cxx:545
 AliTPCCalibViewer.cxx:546
 AliTPCCalibViewer.cxx:547
 AliTPCCalibViewer.cxx:548
 AliTPCCalibViewer.cxx:549
 AliTPCCalibViewer.cxx:550
 AliTPCCalibViewer.cxx:551
 AliTPCCalibViewer.cxx:552
 AliTPCCalibViewer.cxx:553
 AliTPCCalibViewer.cxx:554
 AliTPCCalibViewer.cxx:555
 AliTPCCalibViewer.cxx:556
 AliTPCCalibViewer.cxx:557
 AliTPCCalibViewer.cxx:558
 AliTPCCalibViewer.cxx:559
 AliTPCCalibViewer.cxx:560
 AliTPCCalibViewer.cxx:561
 AliTPCCalibViewer.cxx:562
 AliTPCCalibViewer.cxx:563
 AliTPCCalibViewer.cxx:564
 AliTPCCalibViewer.cxx:565
 AliTPCCalibViewer.cxx:566
 AliTPCCalibViewer.cxx:567
 AliTPCCalibViewer.cxx:568
 AliTPCCalibViewer.cxx:569
 AliTPCCalibViewer.cxx:570
 AliTPCCalibViewer.cxx:571
 AliTPCCalibViewer.cxx:572
 AliTPCCalibViewer.cxx:573
 AliTPCCalibViewer.cxx:574
 AliTPCCalibViewer.cxx:575
 AliTPCCalibViewer.cxx:576
 AliTPCCalibViewer.cxx:577
 AliTPCCalibViewer.cxx:578
 AliTPCCalibViewer.cxx:579
 AliTPCCalibViewer.cxx:580
 AliTPCCalibViewer.cxx:581
 AliTPCCalibViewer.cxx:582
 AliTPCCalibViewer.cxx:583
 AliTPCCalibViewer.cxx:584
 AliTPCCalibViewer.cxx:585
 AliTPCCalibViewer.cxx:586
 AliTPCCalibViewer.cxx:587
 AliTPCCalibViewer.cxx:588
 AliTPCCalibViewer.cxx:589
 AliTPCCalibViewer.cxx:590
 AliTPCCalibViewer.cxx:591
 AliTPCCalibViewer.cxx:592
 AliTPCCalibViewer.cxx:593
 AliTPCCalibViewer.cxx:594
 AliTPCCalibViewer.cxx:595
 AliTPCCalibViewer.cxx:596
 AliTPCCalibViewer.cxx:597
 AliTPCCalibViewer.cxx:598
 AliTPCCalibViewer.cxx:599
 AliTPCCalibViewer.cxx:600
 AliTPCCalibViewer.cxx:601
 AliTPCCalibViewer.cxx:602
 AliTPCCalibViewer.cxx:603
 AliTPCCalibViewer.cxx:604
 AliTPCCalibViewer.cxx:605
 AliTPCCalibViewer.cxx:606
 AliTPCCalibViewer.cxx:607
 AliTPCCalibViewer.cxx:608
 AliTPCCalibViewer.cxx:609
 AliTPCCalibViewer.cxx:610
 AliTPCCalibViewer.cxx:611
 AliTPCCalibViewer.cxx:612
 AliTPCCalibViewer.cxx:613
 AliTPCCalibViewer.cxx:614
 AliTPCCalibViewer.cxx:615
 AliTPCCalibViewer.cxx:616
 AliTPCCalibViewer.cxx:617
 AliTPCCalibViewer.cxx:618
 AliTPCCalibViewer.cxx:619
 AliTPCCalibViewer.cxx:620
 AliTPCCalibViewer.cxx:621
 AliTPCCalibViewer.cxx:622
 AliTPCCalibViewer.cxx:623
 AliTPCCalibViewer.cxx:624
 AliTPCCalibViewer.cxx:625
 AliTPCCalibViewer.cxx:626
 AliTPCCalibViewer.cxx:627
 AliTPCCalibViewer.cxx:628
 AliTPCCalibViewer.cxx:629
 AliTPCCalibViewer.cxx:630
 AliTPCCalibViewer.cxx:631
 AliTPCCalibViewer.cxx:632
 AliTPCCalibViewer.cxx:633
 AliTPCCalibViewer.cxx:634
 AliTPCCalibViewer.cxx:635
 AliTPCCalibViewer.cxx:636
 AliTPCCalibViewer.cxx:637
 AliTPCCalibViewer.cxx:638
 AliTPCCalibViewer.cxx:639
 AliTPCCalibViewer.cxx:640
 AliTPCCalibViewer.cxx:641
 AliTPCCalibViewer.cxx:642
 AliTPCCalibViewer.cxx:643
 AliTPCCalibViewer.cxx:644
 AliTPCCalibViewer.cxx:645
 AliTPCCalibViewer.cxx:646
 AliTPCCalibViewer.cxx:647
 AliTPCCalibViewer.cxx:648
 AliTPCCalibViewer.cxx:649
 AliTPCCalibViewer.cxx:650
 AliTPCCalibViewer.cxx:651
 AliTPCCalibViewer.cxx:652
 AliTPCCalibViewer.cxx:653
 AliTPCCalibViewer.cxx:654
 AliTPCCalibViewer.cxx:655
 AliTPCCalibViewer.cxx:656
 AliTPCCalibViewer.cxx:657
 AliTPCCalibViewer.cxx:658
 AliTPCCalibViewer.cxx:659
 AliTPCCalibViewer.cxx:660
 AliTPCCalibViewer.cxx:661
 AliTPCCalibViewer.cxx:662
 AliTPCCalibViewer.cxx:663
 AliTPCCalibViewer.cxx:664
 AliTPCCalibViewer.cxx:665
 AliTPCCalibViewer.cxx:666
 AliTPCCalibViewer.cxx:667
 AliTPCCalibViewer.cxx:668
 AliTPCCalibViewer.cxx:669
 AliTPCCalibViewer.cxx:670
 AliTPCCalibViewer.cxx:671
 AliTPCCalibViewer.cxx:672
 AliTPCCalibViewer.cxx:673
 AliTPCCalibViewer.cxx:674
 AliTPCCalibViewer.cxx:675
 AliTPCCalibViewer.cxx:676
 AliTPCCalibViewer.cxx:677
 AliTPCCalibViewer.cxx:678
 AliTPCCalibViewer.cxx:679
 AliTPCCalibViewer.cxx:680
 AliTPCCalibViewer.cxx:681
 AliTPCCalibViewer.cxx:682
 AliTPCCalibViewer.cxx:683
 AliTPCCalibViewer.cxx:684
 AliTPCCalibViewer.cxx:685
 AliTPCCalibViewer.cxx:686
 AliTPCCalibViewer.cxx:687
 AliTPCCalibViewer.cxx:688
 AliTPCCalibViewer.cxx:689
 AliTPCCalibViewer.cxx:690
 AliTPCCalibViewer.cxx:691
 AliTPCCalibViewer.cxx:692
 AliTPCCalibViewer.cxx:693
 AliTPCCalibViewer.cxx:694
 AliTPCCalibViewer.cxx:695
 AliTPCCalibViewer.cxx:696
 AliTPCCalibViewer.cxx:697
 AliTPCCalibViewer.cxx:698
 AliTPCCalibViewer.cxx:699
 AliTPCCalibViewer.cxx:700
 AliTPCCalibViewer.cxx:701
 AliTPCCalibViewer.cxx:702
 AliTPCCalibViewer.cxx:703
 AliTPCCalibViewer.cxx:704
 AliTPCCalibViewer.cxx:705
 AliTPCCalibViewer.cxx:706
 AliTPCCalibViewer.cxx:707
 AliTPCCalibViewer.cxx:708
 AliTPCCalibViewer.cxx:709
 AliTPCCalibViewer.cxx:710
 AliTPCCalibViewer.cxx:711
 AliTPCCalibViewer.cxx:712
 AliTPCCalibViewer.cxx:713
 AliTPCCalibViewer.cxx:714
 AliTPCCalibViewer.cxx:715
 AliTPCCalibViewer.cxx:716
 AliTPCCalibViewer.cxx:717
 AliTPCCalibViewer.cxx:718
 AliTPCCalibViewer.cxx:719
 AliTPCCalibViewer.cxx:720
 AliTPCCalibViewer.cxx:721
 AliTPCCalibViewer.cxx:722
 AliTPCCalibViewer.cxx:723
 AliTPCCalibViewer.cxx:724
 AliTPCCalibViewer.cxx:725
 AliTPCCalibViewer.cxx:726
 AliTPCCalibViewer.cxx:727
 AliTPCCalibViewer.cxx:728
 AliTPCCalibViewer.cxx:729
 AliTPCCalibViewer.cxx:730
 AliTPCCalibViewer.cxx:731
 AliTPCCalibViewer.cxx:732
 AliTPCCalibViewer.cxx:733
 AliTPCCalibViewer.cxx:734
 AliTPCCalibViewer.cxx:735
 AliTPCCalibViewer.cxx:736
 AliTPCCalibViewer.cxx:737
 AliTPCCalibViewer.cxx:738
 AliTPCCalibViewer.cxx:739
 AliTPCCalibViewer.cxx:740
 AliTPCCalibViewer.cxx:741
 AliTPCCalibViewer.cxx:742
 AliTPCCalibViewer.cxx:743
 AliTPCCalibViewer.cxx:744
 AliTPCCalibViewer.cxx:745
 AliTPCCalibViewer.cxx:746
 AliTPCCalibViewer.cxx:747
 AliTPCCalibViewer.cxx:748
 AliTPCCalibViewer.cxx:749
 AliTPCCalibViewer.cxx:750
 AliTPCCalibViewer.cxx:751
 AliTPCCalibViewer.cxx:752
 AliTPCCalibViewer.cxx:753
 AliTPCCalibViewer.cxx:754
 AliTPCCalibViewer.cxx:755
 AliTPCCalibViewer.cxx:756
 AliTPCCalibViewer.cxx:757
 AliTPCCalibViewer.cxx:758
 AliTPCCalibViewer.cxx:759
 AliTPCCalibViewer.cxx:760
 AliTPCCalibViewer.cxx:761
 AliTPCCalibViewer.cxx:762
 AliTPCCalibViewer.cxx:763
 AliTPCCalibViewer.cxx:764
 AliTPCCalibViewer.cxx:765
 AliTPCCalibViewer.cxx:766
 AliTPCCalibViewer.cxx:767
 AliTPCCalibViewer.cxx:768
 AliTPCCalibViewer.cxx:769
 AliTPCCalibViewer.cxx:770
 AliTPCCalibViewer.cxx:771
 AliTPCCalibViewer.cxx:772
 AliTPCCalibViewer.cxx:773
 AliTPCCalibViewer.cxx:774
 AliTPCCalibViewer.cxx:775
 AliTPCCalibViewer.cxx:776
 AliTPCCalibViewer.cxx:777
 AliTPCCalibViewer.cxx:778
 AliTPCCalibViewer.cxx:779
 AliTPCCalibViewer.cxx:780
 AliTPCCalibViewer.cxx:781
 AliTPCCalibViewer.cxx:782
 AliTPCCalibViewer.cxx:783
 AliTPCCalibViewer.cxx:784
 AliTPCCalibViewer.cxx:785
 AliTPCCalibViewer.cxx:786
 AliTPCCalibViewer.cxx:787
 AliTPCCalibViewer.cxx:788
 AliTPCCalibViewer.cxx:789
 AliTPCCalibViewer.cxx:790
 AliTPCCalibViewer.cxx:791
 AliTPCCalibViewer.cxx:792
 AliTPCCalibViewer.cxx:793
 AliTPCCalibViewer.cxx:794
 AliTPCCalibViewer.cxx:795
 AliTPCCalibViewer.cxx:796
 AliTPCCalibViewer.cxx:797
 AliTPCCalibViewer.cxx:798
 AliTPCCalibViewer.cxx:799
 AliTPCCalibViewer.cxx:800
 AliTPCCalibViewer.cxx:801
 AliTPCCalibViewer.cxx:802
 AliTPCCalibViewer.cxx:803
 AliTPCCalibViewer.cxx:804
 AliTPCCalibViewer.cxx:805
 AliTPCCalibViewer.cxx:806
 AliTPCCalibViewer.cxx:807
 AliTPCCalibViewer.cxx:808
 AliTPCCalibViewer.cxx:809
 AliTPCCalibViewer.cxx:810
 AliTPCCalibViewer.cxx:811
 AliTPCCalibViewer.cxx:812
 AliTPCCalibViewer.cxx:813
 AliTPCCalibViewer.cxx:814
 AliTPCCalibViewer.cxx:815
 AliTPCCalibViewer.cxx:816
 AliTPCCalibViewer.cxx:817
 AliTPCCalibViewer.cxx:818
 AliTPCCalibViewer.cxx:819
 AliTPCCalibViewer.cxx:820
 AliTPCCalibViewer.cxx:821
 AliTPCCalibViewer.cxx:822
 AliTPCCalibViewer.cxx:823
 AliTPCCalibViewer.cxx:824
 AliTPCCalibViewer.cxx:825
 AliTPCCalibViewer.cxx:826
 AliTPCCalibViewer.cxx:827
 AliTPCCalibViewer.cxx:828
 AliTPCCalibViewer.cxx:829
 AliTPCCalibViewer.cxx:830
 AliTPCCalibViewer.cxx:831
 AliTPCCalibViewer.cxx:832
 AliTPCCalibViewer.cxx:833
 AliTPCCalibViewer.cxx:834
 AliTPCCalibViewer.cxx:835
 AliTPCCalibViewer.cxx:836
 AliTPCCalibViewer.cxx:837
 AliTPCCalibViewer.cxx:838
 AliTPCCalibViewer.cxx:839
 AliTPCCalibViewer.cxx:840
 AliTPCCalibViewer.cxx:841
 AliTPCCalibViewer.cxx:842
 AliTPCCalibViewer.cxx:843
 AliTPCCalibViewer.cxx:844
 AliTPCCalibViewer.cxx:845
 AliTPCCalibViewer.cxx:846
 AliTPCCalibViewer.cxx:847
 AliTPCCalibViewer.cxx:848
 AliTPCCalibViewer.cxx:849
 AliTPCCalibViewer.cxx:850
 AliTPCCalibViewer.cxx:851
 AliTPCCalibViewer.cxx:852
 AliTPCCalibViewer.cxx:853
 AliTPCCalibViewer.cxx:854
 AliTPCCalibViewer.cxx:855
 AliTPCCalibViewer.cxx:856
 AliTPCCalibViewer.cxx:857
 AliTPCCalibViewer.cxx:858
 AliTPCCalibViewer.cxx:859
 AliTPCCalibViewer.cxx:860
 AliTPCCalibViewer.cxx:861
 AliTPCCalibViewer.cxx:862
 AliTPCCalibViewer.cxx:863
 AliTPCCalibViewer.cxx:864
 AliTPCCalibViewer.cxx:865
 AliTPCCalibViewer.cxx:866
 AliTPCCalibViewer.cxx:867
 AliTPCCalibViewer.cxx:868
 AliTPCCalibViewer.cxx:869
 AliTPCCalibViewer.cxx:870
 AliTPCCalibViewer.cxx:871
 AliTPCCalibViewer.cxx:872
 AliTPCCalibViewer.cxx:873
 AliTPCCalibViewer.cxx:874
 AliTPCCalibViewer.cxx:875
 AliTPCCalibViewer.cxx:876
 AliTPCCalibViewer.cxx:877
 AliTPCCalibViewer.cxx:878
 AliTPCCalibViewer.cxx:879
 AliTPCCalibViewer.cxx:880
 AliTPCCalibViewer.cxx:881
 AliTPCCalibViewer.cxx:882
 AliTPCCalibViewer.cxx:883
 AliTPCCalibViewer.cxx:884
 AliTPCCalibViewer.cxx:885
 AliTPCCalibViewer.cxx:886
 AliTPCCalibViewer.cxx:887
 AliTPCCalibViewer.cxx:888
 AliTPCCalibViewer.cxx:889
 AliTPCCalibViewer.cxx:890
 AliTPCCalibViewer.cxx:891
 AliTPCCalibViewer.cxx:892
 AliTPCCalibViewer.cxx:893
 AliTPCCalibViewer.cxx:894
 AliTPCCalibViewer.cxx:895
 AliTPCCalibViewer.cxx:896
 AliTPCCalibViewer.cxx:897
 AliTPCCalibViewer.cxx:898
 AliTPCCalibViewer.cxx:899
 AliTPCCalibViewer.cxx:900
 AliTPCCalibViewer.cxx:901
 AliTPCCalibViewer.cxx:902
 AliTPCCalibViewer.cxx:903
 AliTPCCalibViewer.cxx:904
 AliTPCCalibViewer.cxx:905
 AliTPCCalibViewer.cxx:906
 AliTPCCalibViewer.cxx:907
 AliTPCCalibViewer.cxx:908
 AliTPCCalibViewer.cxx:909
 AliTPCCalibViewer.cxx:910
 AliTPCCalibViewer.cxx:911
 AliTPCCalibViewer.cxx:912
 AliTPCCalibViewer.cxx:913
 AliTPCCalibViewer.cxx:914
 AliTPCCalibViewer.cxx:915
 AliTPCCalibViewer.cxx:916
 AliTPCCalibViewer.cxx:917
 AliTPCCalibViewer.cxx:918
 AliTPCCalibViewer.cxx:919
 AliTPCCalibViewer.cxx:920
 AliTPCCalibViewer.cxx:921
 AliTPCCalibViewer.cxx:922
 AliTPCCalibViewer.cxx:923
 AliTPCCalibViewer.cxx:924
 AliTPCCalibViewer.cxx:925
 AliTPCCalibViewer.cxx:926
 AliTPCCalibViewer.cxx:927
 AliTPCCalibViewer.cxx:928
 AliTPCCalibViewer.cxx:929
 AliTPCCalibViewer.cxx:930
 AliTPCCalibViewer.cxx:931
 AliTPCCalibViewer.cxx:932
 AliTPCCalibViewer.cxx:933
 AliTPCCalibViewer.cxx:934
 AliTPCCalibViewer.cxx:935
 AliTPCCalibViewer.cxx:936
 AliTPCCalibViewer.cxx:937
 AliTPCCalibViewer.cxx:938
 AliTPCCalibViewer.cxx:939
 AliTPCCalibViewer.cxx:940
 AliTPCCalibViewer.cxx:941
 AliTPCCalibViewer.cxx:942
 AliTPCCalibViewer.cxx:943
 AliTPCCalibViewer.cxx:944
 AliTPCCalibViewer.cxx:945
 AliTPCCalibViewer.cxx:946
 AliTPCCalibViewer.cxx:947
 AliTPCCalibViewer.cxx:948
 AliTPCCalibViewer.cxx:949
 AliTPCCalibViewer.cxx:950
 AliTPCCalibViewer.cxx:951
 AliTPCCalibViewer.cxx:952
 AliTPCCalibViewer.cxx:953
 AliTPCCalibViewer.cxx:954
 AliTPCCalibViewer.cxx:955
 AliTPCCalibViewer.cxx:956
 AliTPCCalibViewer.cxx:957
 AliTPCCalibViewer.cxx:958
 AliTPCCalibViewer.cxx:959
 AliTPCCalibViewer.cxx:960
 AliTPCCalibViewer.cxx:961
 AliTPCCalibViewer.cxx:962
 AliTPCCalibViewer.cxx:963
 AliTPCCalibViewer.cxx:964
 AliTPCCalibViewer.cxx:965
 AliTPCCalibViewer.cxx:966
 AliTPCCalibViewer.cxx:967
 AliTPCCalibViewer.cxx:968
 AliTPCCalibViewer.cxx:969
 AliTPCCalibViewer.cxx:970
 AliTPCCalibViewer.cxx:971
 AliTPCCalibViewer.cxx:972
 AliTPCCalibViewer.cxx:973
 AliTPCCalibViewer.cxx:974
 AliTPCCalibViewer.cxx:975
 AliTPCCalibViewer.cxx:976
 AliTPCCalibViewer.cxx:977
 AliTPCCalibViewer.cxx:978
 AliTPCCalibViewer.cxx:979
 AliTPCCalibViewer.cxx:980
 AliTPCCalibViewer.cxx:981
 AliTPCCalibViewer.cxx:982
 AliTPCCalibViewer.cxx:983
 AliTPCCalibViewer.cxx:984
 AliTPCCalibViewer.cxx:985
 AliTPCCalibViewer.cxx:986
 AliTPCCalibViewer.cxx:987
 AliTPCCalibViewer.cxx:988
 AliTPCCalibViewer.cxx:989
 AliTPCCalibViewer.cxx:990
 AliTPCCalibViewer.cxx:991
 AliTPCCalibViewer.cxx:992
 AliTPCCalibViewer.cxx:993
 AliTPCCalibViewer.cxx:994
 AliTPCCalibViewer.cxx:995
 AliTPCCalibViewer.cxx:996
 AliTPCCalibViewer.cxx:997
 AliTPCCalibViewer.cxx:998
 AliTPCCalibViewer.cxx:999
 AliTPCCalibViewer.cxx:1000
 AliTPCCalibViewer.cxx:1001
 AliTPCCalibViewer.cxx:1002
 AliTPCCalibViewer.cxx:1003
 AliTPCCalibViewer.cxx:1004
 AliTPCCalibViewer.cxx:1005
 AliTPCCalibViewer.cxx:1006
 AliTPCCalibViewer.cxx:1007
 AliTPCCalibViewer.cxx:1008
 AliTPCCalibViewer.cxx:1009
 AliTPCCalibViewer.cxx:1010
 AliTPCCalibViewer.cxx:1011
 AliTPCCalibViewer.cxx:1012
 AliTPCCalibViewer.cxx:1013
 AliTPCCalibViewer.cxx:1014
 AliTPCCalibViewer.cxx:1015
 AliTPCCalibViewer.cxx:1016
 AliTPCCalibViewer.cxx:1017
 AliTPCCalibViewer.cxx:1018
 AliTPCCalibViewer.cxx:1019
 AliTPCCalibViewer.cxx:1020
 AliTPCCalibViewer.cxx:1021
 AliTPCCalibViewer.cxx:1022
 AliTPCCalibViewer.cxx:1023
 AliTPCCalibViewer.cxx:1024
 AliTPCCalibViewer.cxx:1025
 AliTPCCalibViewer.cxx:1026
 AliTPCCalibViewer.cxx:1027
 AliTPCCalibViewer.cxx:1028
 AliTPCCalibViewer.cxx:1029
 AliTPCCalibViewer.cxx:1030
 AliTPCCalibViewer.cxx:1031
 AliTPCCalibViewer.cxx:1032
 AliTPCCalibViewer.cxx:1033
 AliTPCCalibViewer.cxx:1034
 AliTPCCalibViewer.cxx:1035
 AliTPCCalibViewer.cxx:1036
 AliTPCCalibViewer.cxx:1037
 AliTPCCalibViewer.cxx:1038
 AliTPCCalibViewer.cxx:1039
 AliTPCCalibViewer.cxx:1040
 AliTPCCalibViewer.cxx:1041
 AliTPCCalibViewer.cxx:1042
 AliTPCCalibViewer.cxx:1043
 AliTPCCalibViewer.cxx:1044
 AliTPCCalibViewer.cxx:1045
 AliTPCCalibViewer.cxx:1046
 AliTPCCalibViewer.cxx:1047
 AliTPCCalibViewer.cxx:1048
 AliTPCCalibViewer.cxx:1049
 AliTPCCalibViewer.cxx:1050
 AliTPCCalibViewer.cxx:1051
 AliTPCCalibViewer.cxx:1052
 AliTPCCalibViewer.cxx:1053
 AliTPCCalibViewer.cxx:1054
 AliTPCCalibViewer.cxx:1055
 AliTPCCalibViewer.cxx:1056
 AliTPCCalibViewer.cxx:1057
 AliTPCCalibViewer.cxx:1058
 AliTPCCalibViewer.cxx:1059
 AliTPCCalibViewer.cxx:1060
 AliTPCCalibViewer.cxx:1061
 AliTPCCalibViewer.cxx:1062
 AliTPCCalibViewer.cxx:1063
 AliTPCCalibViewer.cxx:1064
 AliTPCCalibViewer.cxx:1065
 AliTPCCalibViewer.cxx:1066
 AliTPCCalibViewer.cxx:1067
 AliTPCCalibViewer.cxx:1068
 AliTPCCalibViewer.cxx:1069
 AliTPCCalibViewer.cxx:1070
 AliTPCCalibViewer.cxx:1071
 AliTPCCalibViewer.cxx:1072
 AliTPCCalibViewer.cxx:1073
 AliTPCCalibViewer.cxx:1074
 AliTPCCalibViewer.cxx:1075
 AliTPCCalibViewer.cxx:1076
 AliTPCCalibViewer.cxx:1077
 AliTPCCalibViewer.cxx:1078
 AliTPCCalibViewer.cxx:1079
 AliTPCCalibViewer.cxx:1080
 AliTPCCalibViewer.cxx:1081
 AliTPCCalibViewer.cxx:1082
 AliTPCCalibViewer.cxx:1083
 AliTPCCalibViewer.cxx:1084
 AliTPCCalibViewer.cxx:1085
 AliTPCCalibViewer.cxx:1086
 AliTPCCalibViewer.cxx:1087
 AliTPCCalibViewer.cxx:1088
 AliTPCCalibViewer.cxx:1089
 AliTPCCalibViewer.cxx:1090
 AliTPCCalibViewer.cxx:1091
 AliTPCCalibViewer.cxx:1092
 AliTPCCalibViewer.cxx:1093
 AliTPCCalibViewer.cxx:1094
 AliTPCCalibViewer.cxx:1095
 AliTPCCalibViewer.cxx:1096
 AliTPCCalibViewer.cxx:1097
 AliTPCCalibViewer.cxx:1098
 AliTPCCalibViewer.cxx:1099
 AliTPCCalibViewer.cxx:1100
 AliTPCCalibViewer.cxx:1101
 AliTPCCalibViewer.cxx:1102
 AliTPCCalibViewer.cxx:1103
 AliTPCCalibViewer.cxx:1104
 AliTPCCalibViewer.cxx:1105
 AliTPCCalibViewer.cxx:1106
 AliTPCCalibViewer.cxx:1107
 AliTPCCalibViewer.cxx:1108
 AliTPCCalibViewer.cxx:1109
 AliTPCCalibViewer.cxx:1110
 AliTPCCalibViewer.cxx:1111
 AliTPCCalibViewer.cxx:1112
 AliTPCCalibViewer.cxx:1113
 AliTPCCalibViewer.cxx:1114
 AliTPCCalibViewer.cxx:1115
 AliTPCCalibViewer.cxx:1116
 AliTPCCalibViewer.cxx:1117
 AliTPCCalibViewer.cxx:1118
 AliTPCCalibViewer.cxx:1119
 AliTPCCalibViewer.cxx:1120
 AliTPCCalibViewer.cxx:1121
 AliTPCCalibViewer.cxx:1122
 AliTPCCalibViewer.cxx:1123
 AliTPCCalibViewer.cxx:1124
 AliTPCCalibViewer.cxx:1125
 AliTPCCalibViewer.cxx:1126
 AliTPCCalibViewer.cxx:1127
 AliTPCCalibViewer.cxx:1128
 AliTPCCalibViewer.cxx:1129
 AliTPCCalibViewer.cxx:1130
 AliTPCCalibViewer.cxx:1131
 AliTPCCalibViewer.cxx:1132
 AliTPCCalibViewer.cxx:1133
 AliTPCCalibViewer.cxx:1134
 AliTPCCalibViewer.cxx:1135
 AliTPCCalibViewer.cxx:1136
 AliTPCCalibViewer.cxx:1137
 AliTPCCalibViewer.cxx:1138
 AliTPCCalibViewer.cxx:1139
 AliTPCCalibViewer.cxx:1140
 AliTPCCalibViewer.cxx:1141
 AliTPCCalibViewer.cxx:1142
 AliTPCCalibViewer.cxx:1143
 AliTPCCalibViewer.cxx:1144
 AliTPCCalibViewer.cxx:1145
 AliTPCCalibViewer.cxx:1146
 AliTPCCalibViewer.cxx:1147
 AliTPCCalibViewer.cxx:1148
 AliTPCCalibViewer.cxx:1149
 AliTPCCalibViewer.cxx:1150
 AliTPCCalibViewer.cxx:1151
 AliTPCCalibViewer.cxx:1152
 AliTPCCalibViewer.cxx:1153
 AliTPCCalibViewer.cxx:1154
 AliTPCCalibViewer.cxx:1155
 AliTPCCalibViewer.cxx:1156
 AliTPCCalibViewer.cxx:1157
 AliTPCCalibViewer.cxx:1158
 AliTPCCalibViewer.cxx:1159
 AliTPCCalibViewer.cxx:1160
 AliTPCCalibViewer.cxx:1161
 AliTPCCalibViewer.cxx:1162
 AliTPCCalibViewer.cxx:1163
 AliTPCCalibViewer.cxx:1164
 AliTPCCalibViewer.cxx:1165
 AliTPCCalibViewer.cxx:1166
 AliTPCCalibViewer.cxx:1167
 AliTPCCalibViewer.cxx:1168
 AliTPCCalibViewer.cxx:1169
 AliTPCCalibViewer.cxx:1170
 AliTPCCalibViewer.cxx:1171
 AliTPCCalibViewer.cxx:1172
 AliTPCCalibViewer.cxx:1173
 AliTPCCalibViewer.cxx:1174
 AliTPCCalibViewer.cxx:1175
 AliTPCCalibViewer.cxx:1176
 AliTPCCalibViewer.cxx:1177
 AliTPCCalibViewer.cxx:1178
 AliTPCCalibViewer.cxx:1179
 AliTPCCalibViewer.cxx:1180
 AliTPCCalibViewer.cxx:1181
 AliTPCCalibViewer.cxx:1182
 AliTPCCalibViewer.cxx:1183
 AliTPCCalibViewer.cxx:1184
 AliTPCCalibViewer.cxx:1185
 AliTPCCalibViewer.cxx:1186
 AliTPCCalibViewer.cxx:1187
 AliTPCCalibViewer.cxx:1188
 AliTPCCalibViewer.cxx:1189
 AliTPCCalibViewer.cxx:1190
 AliTPCCalibViewer.cxx:1191
 AliTPCCalibViewer.cxx:1192
 AliTPCCalibViewer.cxx:1193
 AliTPCCalibViewer.cxx:1194
 AliTPCCalibViewer.cxx:1195
 AliTPCCalibViewer.cxx:1196
 AliTPCCalibViewer.cxx:1197
 AliTPCCalibViewer.cxx:1198
 AliTPCCalibViewer.cxx:1199
 AliTPCCalibViewer.cxx:1200
 AliTPCCalibViewer.cxx:1201
 AliTPCCalibViewer.cxx:1202
 AliTPCCalibViewer.cxx:1203
 AliTPCCalibViewer.cxx:1204
 AliTPCCalibViewer.cxx:1205
 AliTPCCalibViewer.cxx:1206
 AliTPCCalibViewer.cxx:1207
 AliTPCCalibViewer.cxx:1208
 AliTPCCalibViewer.cxx:1209
 AliTPCCalibViewer.cxx:1210
 AliTPCCalibViewer.cxx:1211
 AliTPCCalibViewer.cxx:1212
 AliTPCCalibViewer.cxx:1213
 AliTPCCalibViewer.cxx:1214
 AliTPCCalibViewer.cxx:1215
 AliTPCCalibViewer.cxx:1216
 AliTPCCalibViewer.cxx:1217
 AliTPCCalibViewer.cxx:1218
 AliTPCCalibViewer.cxx:1219
 AliTPCCalibViewer.cxx:1220
 AliTPCCalibViewer.cxx:1221
 AliTPCCalibViewer.cxx:1222
 AliTPCCalibViewer.cxx:1223
 AliTPCCalibViewer.cxx:1224
 AliTPCCalibViewer.cxx:1225
 AliTPCCalibViewer.cxx:1226
 AliTPCCalibViewer.cxx:1227
 AliTPCCalibViewer.cxx:1228
 AliTPCCalibViewer.cxx:1229
 AliTPCCalibViewer.cxx:1230
 AliTPCCalibViewer.cxx:1231
 AliTPCCalibViewer.cxx:1232
 AliTPCCalibViewer.cxx:1233
 AliTPCCalibViewer.cxx:1234
 AliTPCCalibViewer.cxx:1235
 AliTPCCalibViewer.cxx:1236
 AliTPCCalibViewer.cxx:1237
 AliTPCCalibViewer.cxx:1238
 AliTPCCalibViewer.cxx:1239
 AliTPCCalibViewer.cxx:1240
 AliTPCCalibViewer.cxx:1241
 AliTPCCalibViewer.cxx:1242
 AliTPCCalibViewer.cxx:1243
 AliTPCCalibViewer.cxx:1244
 AliTPCCalibViewer.cxx:1245
 AliTPCCalibViewer.cxx:1246
 AliTPCCalibViewer.cxx:1247
 AliTPCCalibViewer.cxx:1248
 AliTPCCalibViewer.cxx:1249
 AliTPCCalibViewer.cxx:1250
 AliTPCCalibViewer.cxx:1251
 AliTPCCalibViewer.cxx:1252
 AliTPCCalibViewer.cxx:1253
 AliTPCCalibViewer.cxx:1254
 AliTPCCalibViewer.cxx:1255
 AliTPCCalibViewer.cxx:1256
 AliTPCCalibViewer.cxx:1257
 AliTPCCalibViewer.cxx:1258
 AliTPCCalibViewer.cxx:1259
 AliTPCCalibViewer.cxx:1260
 AliTPCCalibViewer.cxx:1261
 AliTPCCalibViewer.cxx:1262
 AliTPCCalibViewer.cxx:1263
 AliTPCCalibViewer.cxx:1264
 AliTPCCalibViewer.cxx:1265
 AliTPCCalibViewer.cxx:1266
 AliTPCCalibViewer.cxx:1267
 AliTPCCalibViewer.cxx:1268
 AliTPCCalibViewer.cxx:1269
 AliTPCCalibViewer.cxx:1270
 AliTPCCalibViewer.cxx:1271
 AliTPCCalibViewer.cxx:1272
 AliTPCCalibViewer.cxx:1273
 AliTPCCalibViewer.cxx:1274
 AliTPCCalibViewer.cxx:1275
 AliTPCCalibViewer.cxx:1276
 AliTPCCalibViewer.cxx:1277
 AliTPCCalibViewer.cxx:1278
 AliTPCCalibViewer.cxx:1279
 AliTPCCalibViewer.cxx:1280
 AliTPCCalibViewer.cxx:1281
 AliTPCCalibViewer.cxx:1282
 AliTPCCalibViewer.cxx:1283
 AliTPCCalibViewer.cxx:1284
 AliTPCCalibViewer.cxx:1285
 AliTPCCalibViewer.cxx:1286
 AliTPCCalibViewer.cxx:1287
 AliTPCCalibViewer.cxx:1288
 AliTPCCalibViewer.cxx:1289
 AliTPCCalibViewer.cxx:1290
 AliTPCCalibViewer.cxx:1291
 AliTPCCalibViewer.cxx:1292
 AliTPCCalibViewer.cxx:1293
 AliTPCCalibViewer.cxx:1294
 AliTPCCalibViewer.cxx:1295
 AliTPCCalibViewer.cxx:1296
 AliTPCCalibViewer.cxx:1297
 AliTPCCalibViewer.cxx:1298
 AliTPCCalibViewer.cxx:1299
 AliTPCCalibViewer.cxx:1300
 AliTPCCalibViewer.cxx:1301
 AliTPCCalibViewer.cxx:1302
 AliTPCCalibViewer.cxx:1303
 AliTPCCalibViewer.cxx:1304
 AliTPCCalibViewer.cxx:1305
 AliTPCCalibViewer.cxx:1306
 AliTPCCalibViewer.cxx:1307
 AliTPCCalibViewer.cxx:1308
 AliTPCCalibViewer.cxx:1309
 AliTPCCalibViewer.cxx:1310
 AliTPCCalibViewer.cxx:1311
 AliTPCCalibViewer.cxx:1312
 AliTPCCalibViewer.cxx:1313
 AliTPCCalibViewer.cxx:1314
 AliTPCCalibViewer.cxx:1315
 AliTPCCalibViewer.cxx:1316
 AliTPCCalibViewer.cxx:1317
 AliTPCCalibViewer.cxx:1318
 AliTPCCalibViewer.cxx:1319
 AliTPCCalibViewer.cxx:1320
 AliTPCCalibViewer.cxx:1321
 AliTPCCalibViewer.cxx:1322
 AliTPCCalibViewer.cxx:1323
 AliTPCCalibViewer.cxx:1324
 AliTPCCalibViewer.cxx:1325
 AliTPCCalibViewer.cxx:1326
 AliTPCCalibViewer.cxx:1327
 AliTPCCalibViewer.cxx:1328
 AliTPCCalibViewer.cxx:1329
 AliTPCCalibViewer.cxx:1330
 AliTPCCalibViewer.cxx:1331
 AliTPCCalibViewer.cxx:1332
 AliTPCCalibViewer.cxx:1333
 AliTPCCalibViewer.cxx:1334
 AliTPCCalibViewer.cxx:1335
 AliTPCCalibViewer.cxx:1336
 AliTPCCalibViewer.cxx:1337
 AliTPCCalibViewer.cxx:1338
 AliTPCCalibViewer.cxx:1339
 AliTPCCalibViewer.cxx:1340
 AliTPCCalibViewer.cxx:1341
 AliTPCCalibViewer.cxx:1342
 AliTPCCalibViewer.cxx:1343
 AliTPCCalibViewer.cxx:1344
 AliTPCCalibViewer.cxx:1345
 AliTPCCalibViewer.cxx:1346
 AliTPCCalibViewer.cxx:1347
 AliTPCCalibViewer.cxx:1348
 AliTPCCalibViewer.cxx:1349
 AliTPCCalibViewer.cxx:1350
 AliTPCCalibViewer.cxx:1351
 AliTPCCalibViewer.cxx:1352
 AliTPCCalibViewer.cxx:1353
 AliTPCCalibViewer.cxx:1354
 AliTPCCalibViewer.cxx:1355
 AliTPCCalibViewer.cxx:1356
 AliTPCCalibViewer.cxx:1357
 AliTPCCalibViewer.cxx:1358
 AliTPCCalibViewer.cxx:1359
 AliTPCCalibViewer.cxx:1360
 AliTPCCalibViewer.cxx:1361
 AliTPCCalibViewer.cxx:1362
 AliTPCCalibViewer.cxx:1363
 AliTPCCalibViewer.cxx:1364
 AliTPCCalibViewer.cxx:1365
 AliTPCCalibViewer.cxx:1366
 AliTPCCalibViewer.cxx:1367
 AliTPCCalibViewer.cxx:1368
 AliTPCCalibViewer.cxx:1369
 AliTPCCalibViewer.cxx:1370
 AliTPCCalibViewer.cxx:1371
 AliTPCCalibViewer.cxx:1372
 AliTPCCalibViewer.cxx:1373
 AliTPCCalibViewer.cxx:1374
 AliTPCCalibViewer.cxx:1375
 AliTPCCalibViewer.cxx:1376
 AliTPCCalibViewer.cxx:1377
 AliTPCCalibViewer.cxx:1378
 AliTPCCalibViewer.cxx:1379
 AliTPCCalibViewer.cxx:1380
 AliTPCCalibViewer.cxx:1381
 AliTPCCalibViewer.cxx:1382
 AliTPCCalibViewer.cxx:1383
 AliTPCCalibViewer.cxx:1384
 AliTPCCalibViewer.cxx:1385
 AliTPCCalibViewer.cxx:1386
 AliTPCCalibViewer.cxx:1387
 AliTPCCalibViewer.cxx:1388
 AliTPCCalibViewer.cxx:1389
 AliTPCCalibViewer.cxx:1390
 AliTPCCalibViewer.cxx:1391
 AliTPCCalibViewer.cxx:1392
 AliTPCCalibViewer.cxx:1393
 AliTPCCalibViewer.cxx:1394
 AliTPCCalibViewer.cxx:1395
 AliTPCCalibViewer.cxx:1396
 AliTPCCalibViewer.cxx:1397
 AliTPCCalibViewer.cxx:1398
 AliTPCCalibViewer.cxx:1399
 AliTPCCalibViewer.cxx:1400
 AliTPCCalibViewer.cxx:1401
 AliTPCCalibViewer.cxx:1402
 AliTPCCalibViewer.cxx:1403
 AliTPCCalibViewer.cxx:1404
 AliTPCCalibViewer.cxx:1405
 AliTPCCalibViewer.cxx:1406
 AliTPCCalibViewer.cxx:1407
 AliTPCCalibViewer.cxx:1408
 AliTPCCalibViewer.cxx:1409
 AliTPCCalibViewer.cxx:1410
 AliTPCCalibViewer.cxx:1411
 AliTPCCalibViewer.cxx:1412
 AliTPCCalibViewer.cxx:1413
 AliTPCCalibViewer.cxx:1414
 AliTPCCalibViewer.cxx:1415
 AliTPCCalibViewer.cxx:1416
 AliTPCCalibViewer.cxx:1417
 AliTPCCalibViewer.cxx:1418
 AliTPCCalibViewer.cxx:1419
 AliTPCCalibViewer.cxx:1420
 AliTPCCalibViewer.cxx:1421
 AliTPCCalibViewer.cxx:1422
 AliTPCCalibViewer.cxx:1423
 AliTPCCalibViewer.cxx:1424
 AliTPCCalibViewer.cxx:1425
 AliTPCCalibViewer.cxx:1426
 AliTPCCalibViewer.cxx:1427
 AliTPCCalibViewer.cxx:1428
 AliTPCCalibViewer.cxx:1429
 AliTPCCalibViewer.cxx:1430
 AliTPCCalibViewer.cxx:1431
 AliTPCCalibViewer.cxx:1432
 AliTPCCalibViewer.cxx:1433
 AliTPCCalibViewer.cxx:1434
 AliTPCCalibViewer.cxx:1435
 AliTPCCalibViewer.cxx:1436
 AliTPCCalibViewer.cxx:1437
 AliTPCCalibViewer.cxx:1438
 AliTPCCalibViewer.cxx:1439
 AliTPCCalibViewer.cxx:1440
 AliTPCCalibViewer.cxx:1441
 AliTPCCalibViewer.cxx:1442
 AliTPCCalibViewer.cxx:1443
 AliTPCCalibViewer.cxx:1444
 AliTPCCalibViewer.cxx:1445
 AliTPCCalibViewer.cxx:1446
 AliTPCCalibViewer.cxx:1447
 AliTPCCalibViewer.cxx:1448
 AliTPCCalibViewer.cxx:1449
 AliTPCCalibViewer.cxx:1450
 AliTPCCalibViewer.cxx:1451
 AliTPCCalibViewer.cxx:1452
 AliTPCCalibViewer.cxx:1453
 AliTPCCalibViewer.cxx:1454
 AliTPCCalibViewer.cxx:1455
 AliTPCCalibViewer.cxx:1456
 AliTPCCalibViewer.cxx:1457
 AliTPCCalibViewer.cxx:1458
 AliTPCCalibViewer.cxx:1459
 AliTPCCalibViewer.cxx:1460
 AliTPCCalibViewer.cxx:1461
 AliTPCCalibViewer.cxx:1462
 AliTPCCalibViewer.cxx:1463
 AliTPCCalibViewer.cxx:1464
 AliTPCCalibViewer.cxx:1465
 AliTPCCalibViewer.cxx:1466
 AliTPCCalibViewer.cxx:1467
 AliTPCCalibViewer.cxx:1468
 AliTPCCalibViewer.cxx:1469
 AliTPCCalibViewer.cxx:1470
 AliTPCCalibViewer.cxx:1471
 AliTPCCalibViewer.cxx:1472
 AliTPCCalibViewer.cxx:1473
 AliTPCCalibViewer.cxx:1474
 AliTPCCalibViewer.cxx:1475
 AliTPCCalibViewer.cxx:1476
 AliTPCCalibViewer.cxx:1477
 AliTPCCalibViewer.cxx:1478
 AliTPCCalibViewer.cxx:1479
 AliTPCCalibViewer.cxx:1480
 AliTPCCalibViewer.cxx:1481
 AliTPCCalibViewer.cxx:1482
 AliTPCCalibViewer.cxx:1483
 AliTPCCalibViewer.cxx:1484
 AliTPCCalibViewer.cxx:1485
 AliTPCCalibViewer.cxx:1486
 AliTPCCalibViewer.cxx:1487
 AliTPCCalibViewer.cxx:1488
 AliTPCCalibViewer.cxx:1489
 AliTPCCalibViewer.cxx:1490
 AliTPCCalibViewer.cxx:1491
 AliTPCCalibViewer.cxx:1492
 AliTPCCalibViewer.cxx:1493
 AliTPCCalibViewer.cxx:1494
 AliTPCCalibViewer.cxx:1495
 AliTPCCalibViewer.cxx:1496
 AliTPCCalibViewer.cxx:1497
 AliTPCCalibViewer.cxx:1498
 AliTPCCalibViewer.cxx:1499
 AliTPCCalibViewer.cxx:1500
 AliTPCCalibViewer.cxx:1501
 AliTPCCalibViewer.cxx:1502
 AliTPCCalibViewer.cxx:1503
 AliTPCCalibViewer.cxx:1504
 AliTPCCalibViewer.cxx:1505
 AliTPCCalibViewer.cxx:1506
 AliTPCCalibViewer.cxx:1507
 AliTPCCalibViewer.cxx:1508
 AliTPCCalibViewer.cxx:1509
 AliTPCCalibViewer.cxx:1510
 AliTPCCalibViewer.cxx:1511
 AliTPCCalibViewer.cxx:1512
 AliTPCCalibViewer.cxx:1513
 AliTPCCalibViewer.cxx:1514
 AliTPCCalibViewer.cxx:1515
 AliTPCCalibViewer.cxx:1516
 AliTPCCalibViewer.cxx:1517
 AliTPCCalibViewer.cxx:1518
 AliTPCCalibViewer.cxx:1519
 AliTPCCalibViewer.cxx:1520
 AliTPCCalibViewer.cxx:1521
 AliTPCCalibViewer.cxx:1522
 AliTPCCalibViewer.cxx:1523
 AliTPCCalibViewer.cxx:1524
 AliTPCCalibViewer.cxx:1525
 AliTPCCalibViewer.cxx:1526
 AliTPCCalibViewer.cxx:1527
 AliTPCCalibViewer.cxx:1528
 AliTPCCalibViewer.cxx:1529
 AliTPCCalibViewer.cxx:1530
 AliTPCCalibViewer.cxx:1531
 AliTPCCalibViewer.cxx:1532
 AliTPCCalibViewer.cxx:1533
 AliTPCCalibViewer.cxx:1534
 AliTPCCalibViewer.cxx:1535
 AliTPCCalibViewer.cxx:1536
 AliTPCCalibViewer.cxx:1537
 AliTPCCalibViewer.cxx:1538
 AliTPCCalibViewer.cxx:1539
 AliTPCCalibViewer.cxx:1540
 AliTPCCalibViewer.cxx:1541
 AliTPCCalibViewer.cxx:1542
 AliTPCCalibViewer.cxx:1543
 AliTPCCalibViewer.cxx:1544
 AliTPCCalibViewer.cxx:1545
 AliTPCCalibViewer.cxx:1546
 AliTPCCalibViewer.cxx:1547
 AliTPCCalibViewer.cxx:1548
 AliTPCCalibViewer.cxx:1549
 AliTPCCalibViewer.cxx:1550
 AliTPCCalibViewer.cxx:1551
 AliTPCCalibViewer.cxx:1552
 AliTPCCalibViewer.cxx:1553
 AliTPCCalibViewer.cxx:1554
 AliTPCCalibViewer.cxx:1555
 AliTPCCalibViewer.cxx:1556
 AliTPCCalibViewer.cxx:1557
 AliTPCCalibViewer.cxx:1558
 AliTPCCalibViewer.cxx:1559
 AliTPCCalibViewer.cxx:1560
 AliTPCCalibViewer.cxx:1561
 AliTPCCalibViewer.cxx:1562
 AliTPCCalibViewer.cxx:1563
 AliTPCCalibViewer.cxx:1564
 AliTPCCalibViewer.cxx:1565
 AliTPCCalibViewer.cxx:1566
 AliTPCCalibViewer.cxx:1567
 AliTPCCalibViewer.cxx:1568
 AliTPCCalibViewer.cxx:1569
 AliTPCCalibViewer.cxx:1570
 AliTPCCalibViewer.cxx:1571
 AliTPCCalibViewer.cxx:1572
 AliTPCCalibViewer.cxx:1573
 AliTPCCalibViewer.cxx:1574
 AliTPCCalibViewer.cxx:1575
 AliTPCCalibViewer.cxx:1576
 AliTPCCalibViewer.cxx:1577
 AliTPCCalibViewer.cxx:1578
 AliTPCCalibViewer.cxx:1579
 AliTPCCalibViewer.cxx:1580
 AliTPCCalibViewer.cxx:1581
 AliTPCCalibViewer.cxx:1582
 AliTPCCalibViewer.cxx:1583
 AliTPCCalibViewer.cxx:1584
 AliTPCCalibViewer.cxx:1585
 AliTPCCalibViewer.cxx:1586
 AliTPCCalibViewer.cxx:1587
 AliTPCCalibViewer.cxx:1588
 AliTPCCalibViewer.cxx:1589
 AliTPCCalibViewer.cxx:1590
 AliTPCCalibViewer.cxx:1591
 AliTPCCalibViewer.cxx:1592
 AliTPCCalibViewer.cxx:1593
 AliTPCCalibViewer.cxx:1594
 AliTPCCalibViewer.cxx:1595
 AliTPCCalibViewer.cxx:1596
 AliTPCCalibViewer.cxx:1597
 AliTPCCalibViewer.cxx:1598
 AliTPCCalibViewer.cxx:1599
 AliTPCCalibViewer.cxx:1600
 AliTPCCalibViewer.cxx:1601
 AliTPCCalibViewer.cxx:1602
 AliTPCCalibViewer.cxx:1603
 AliTPCCalibViewer.cxx:1604
 AliTPCCalibViewer.cxx:1605
 AliTPCCalibViewer.cxx:1606
 AliTPCCalibViewer.cxx:1607
 AliTPCCalibViewer.cxx:1608
 AliTPCCalibViewer.cxx:1609
 AliTPCCalibViewer.cxx:1610
 AliTPCCalibViewer.cxx:1611
 AliTPCCalibViewer.cxx:1612
 AliTPCCalibViewer.cxx:1613
 AliTPCCalibViewer.cxx:1614
 AliTPCCalibViewer.cxx:1615
 AliTPCCalibViewer.cxx:1616
 AliTPCCalibViewer.cxx:1617
 AliTPCCalibViewer.cxx:1618
 AliTPCCalibViewer.cxx:1619
 AliTPCCalibViewer.cxx:1620
 AliTPCCalibViewer.cxx:1621
 AliTPCCalibViewer.cxx:1622
 AliTPCCalibViewer.cxx:1623
 AliTPCCalibViewer.cxx:1624
 AliTPCCalibViewer.cxx:1625
 AliTPCCalibViewer.cxx:1626
 AliTPCCalibViewer.cxx:1627
 AliTPCCalibViewer.cxx:1628
 AliTPCCalibViewer.cxx:1629
 AliTPCCalibViewer.cxx:1630
 AliTPCCalibViewer.cxx:1631
 AliTPCCalibViewer.cxx:1632
 AliTPCCalibViewer.cxx:1633
 AliTPCCalibViewer.cxx:1634
 AliTPCCalibViewer.cxx:1635
 AliTPCCalibViewer.cxx:1636
 AliTPCCalibViewer.cxx:1637
 AliTPCCalibViewer.cxx:1638
 AliTPCCalibViewer.cxx:1639
 AliTPCCalibViewer.cxx:1640
 AliTPCCalibViewer.cxx:1641
 AliTPCCalibViewer.cxx:1642
 AliTPCCalibViewer.cxx:1643
 AliTPCCalibViewer.cxx:1644
 AliTPCCalibViewer.cxx:1645
 AliTPCCalibViewer.cxx:1646
 AliTPCCalibViewer.cxx:1647
 AliTPCCalibViewer.cxx:1648
 AliTPCCalibViewer.cxx:1649
 AliTPCCalibViewer.cxx:1650
 AliTPCCalibViewer.cxx:1651
 AliTPCCalibViewer.cxx:1652
 AliTPCCalibViewer.cxx:1653
 AliTPCCalibViewer.cxx:1654
 AliTPCCalibViewer.cxx:1655
 AliTPCCalibViewer.cxx:1656
 AliTPCCalibViewer.cxx:1657
 AliTPCCalibViewer.cxx:1658
 AliTPCCalibViewer.cxx:1659
 AliTPCCalibViewer.cxx:1660
 AliTPCCalibViewer.cxx:1661
 AliTPCCalibViewer.cxx:1662
 AliTPCCalibViewer.cxx:1663
 AliTPCCalibViewer.cxx:1664
 AliTPCCalibViewer.cxx:1665
 AliTPCCalibViewer.cxx:1666
 AliTPCCalibViewer.cxx:1667
 AliTPCCalibViewer.cxx:1668
 AliTPCCalibViewer.cxx:1669
 AliTPCCalibViewer.cxx:1670
 AliTPCCalibViewer.cxx:1671
 AliTPCCalibViewer.cxx:1672
 AliTPCCalibViewer.cxx:1673
 AliTPCCalibViewer.cxx:1674
 AliTPCCalibViewer.cxx:1675
 AliTPCCalibViewer.cxx:1676
 AliTPCCalibViewer.cxx:1677
 AliTPCCalibViewer.cxx:1678
 AliTPCCalibViewer.cxx:1679
 AliTPCCalibViewer.cxx:1680
 AliTPCCalibViewer.cxx:1681
 AliTPCCalibViewer.cxx:1682
 AliTPCCalibViewer.cxx:1683
 AliTPCCalibViewer.cxx:1684
 AliTPCCalibViewer.cxx:1685
 AliTPCCalibViewer.cxx:1686
 AliTPCCalibViewer.cxx:1687
 AliTPCCalibViewer.cxx:1688
 AliTPCCalibViewer.cxx:1689
 AliTPCCalibViewer.cxx:1690
 AliTPCCalibViewer.cxx:1691
 AliTPCCalibViewer.cxx:1692
 AliTPCCalibViewer.cxx:1693
 AliTPCCalibViewer.cxx:1694
 AliTPCCalibViewer.cxx:1695
 AliTPCCalibViewer.cxx:1696
 AliTPCCalibViewer.cxx:1697
 AliTPCCalibViewer.cxx:1698
 AliTPCCalibViewer.cxx:1699
 AliTPCCalibViewer.cxx:1700
 AliTPCCalibViewer.cxx:1701
 AliTPCCalibViewer.cxx:1702
 AliTPCCalibViewer.cxx:1703
 AliTPCCalibViewer.cxx:1704
 AliTPCCalibViewer.cxx:1705
 AliTPCCalibViewer.cxx:1706
 AliTPCCalibViewer.cxx:1707
 AliTPCCalibViewer.cxx:1708
 AliTPCCalibViewer.cxx:1709
 AliTPCCalibViewer.cxx:1710
 AliTPCCalibViewer.cxx:1711
 AliTPCCalibViewer.cxx:1712
 AliTPCCalibViewer.cxx:1713
 AliTPCCalibViewer.cxx:1714
 AliTPCCalibViewer.cxx:1715
 AliTPCCalibViewer.cxx:1716
 AliTPCCalibViewer.cxx:1717
 AliTPCCalibViewer.cxx:1718
 AliTPCCalibViewer.cxx:1719
 AliTPCCalibViewer.cxx:1720
 AliTPCCalibViewer.cxx:1721
 AliTPCCalibViewer.cxx:1722
 AliTPCCalibViewer.cxx:1723
 AliTPCCalibViewer.cxx:1724
 AliTPCCalibViewer.cxx:1725
 AliTPCCalibViewer.cxx:1726
 AliTPCCalibViewer.cxx:1727
 AliTPCCalibViewer.cxx:1728
 AliTPCCalibViewer.cxx:1729
 AliTPCCalibViewer.cxx:1730
 AliTPCCalibViewer.cxx:1731
 AliTPCCalibViewer.cxx:1732
 AliTPCCalibViewer.cxx:1733
 AliTPCCalibViewer.cxx:1734
 AliTPCCalibViewer.cxx:1735
 AliTPCCalibViewer.cxx:1736
 AliTPCCalibViewer.cxx:1737
 AliTPCCalibViewer.cxx:1738
 AliTPCCalibViewer.cxx:1739
 AliTPCCalibViewer.cxx:1740
 AliTPCCalibViewer.cxx:1741
 AliTPCCalibViewer.cxx:1742
 AliTPCCalibViewer.cxx:1743
 AliTPCCalibViewer.cxx:1744
 AliTPCCalibViewer.cxx:1745
 AliTPCCalibViewer.cxx:1746
 AliTPCCalibViewer.cxx:1747
 AliTPCCalibViewer.cxx:1748
 AliTPCCalibViewer.cxx:1749
 AliTPCCalibViewer.cxx:1750
 AliTPCCalibViewer.cxx:1751
 AliTPCCalibViewer.cxx:1752
 AliTPCCalibViewer.cxx:1753
 AliTPCCalibViewer.cxx:1754
 AliTPCCalibViewer.cxx:1755
 AliTPCCalibViewer.cxx:1756
 AliTPCCalibViewer.cxx:1757
 AliTPCCalibViewer.cxx:1758
 AliTPCCalibViewer.cxx:1759
 AliTPCCalibViewer.cxx:1760
 AliTPCCalibViewer.cxx:1761
 AliTPCCalibViewer.cxx:1762
 AliTPCCalibViewer.cxx:1763
 AliTPCCalibViewer.cxx:1764
 AliTPCCalibViewer.cxx:1765
 AliTPCCalibViewer.cxx:1766
 AliTPCCalibViewer.cxx:1767
 AliTPCCalibViewer.cxx:1768
 AliTPCCalibViewer.cxx:1769
 AliTPCCalibViewer.cxx:1770
 AliTPCCalibViewer.cxx:1771
 AliTPCCalibViewer.cxx:1772
 AliTPCCalibViewer.cxx:1773
 AliTPCCalibViewer.cxx:1774
 AliTPCCalibViewer.cxx:1775
 AliTPCCalibViewer.cxx:1776
 AliTPCCalibViewer.cxx:1777
 AliTPCCalibViewer.cxx:1778
 AliTPCCalibViewer.cxx:1779
 AliTPCCalibViewer.cxx:1780
 AliTPCCalibViewer.cxx:1781
 AliTPCCalibViewer.cxx:1782
 AliTPCCalibViewer.cxx:1783
 AliTPCCalibViewer.cxx:1784
 AliTPCCalibViewer.cxx:1785
 AliTPCCalibViewer.cxx:1786
 AliTPCCalibViewer.cxx:1787
 AliTPCCalibViewer.cxx:1788
 AliTPCCalibViewer.cxx:1789
 AliTPCCalibViewer.cxx:1790
 AliTPCCalibViewer.cxx:1791
 AliTPCCalibViewer.cxx:1792
 AliTPCCalibViewer.cxx:1793
 AliTPCCalibViewer.cxx:1794
 AliTPCCalibViewer.cxx:1795
 AliTPCCalibViewer.cxx:1796
 AliTPCCalibViewer.cxx:1797
 AliTPCCalibViewer.cxx:1798
 AliTPCCalibViewer.cxx:1799
 AliTPCCalibViewer.cxx:1800
 AliTPCCalibViewer.cxx:1801
 AliTPCCalibViewer.cxx:1802
 AliTPCCalibViewer.cxx:1803
 AliTPCCalibViewer.cxx:1804
 AliTPCCalibViewer.cxx:1805
 AliTPCCalibViewer.cxx:1806
 AliTPCCalibViewer.cxx:1807
 AliTPCCalibViewer.cxx:1808
 AliTPCCalibViewer.cxx:1809
 AliTPCCalibViewer.cxx:1810
 AliTPCCalibViewer.cxx:1811
 AliTPCCalibViewer.cxx:1812
 AliTPCCalibViewer.cxx:1813
 AliTPCCalibViewer.cxx:1814
 AliTPCCalibViewer.cxx:1815
 AliTPCCalibViewer.cxx:1816
 AliTPCCalibViewer.cxx:1817
 AliTPCCalibViewer.cxx:1818
 AliTPCCalibViewer.cxx:1819
 AliTPCCalibViewer.cxx:1820
 AliTPCCalibViewer.cxx:1821
 AliTPCCalibViewer.cxx:1822
 AliTPCCalibViewer.cxx:1823
 AliTPCCalibViewer.cxx:1824
 AliTPCCalibViewer.cxx:1825
 AliTPCCalibViewer.cxx:1826
 AliTPCCalibViewer.cxx:1827
 AliTPCCalibViewer.cxx:1828
 AliTPCCalibViewer.cxx:1829
 AliTPCCalibViewer.cxx:1830
 AliTPCCalibViewer.cxx:1831
 AliTPCCalibViewer.cxx:1832
 AliTPCCalibViewer.cxx:1833
 AliTPCCalibViewer.cxx:1834
 AliTPCCalibViewer.cxx:1835
 AliTPCCalibViewer.cxx:1836
 AliTPCCalibViewer.cxx:1837
 AliTPCCalibViewer.cxx:1838
 AliTPCCalibViewer.cxx:1839
 AliTPCCalibViewer.cxx:1840
 AliTPCCalibViewer.cxx:1841
 AliTPCCalibViewer.cxx:1842
 AliTPCCalibViewer.cxx:1843
 AliTPCCalibViewer.cxx:1844
 AliTPCCalibViewer.cxx:1845
 AliTPCCalibViewer.cxx:1846
 AliTPCCalibViewer.cxx:1847
 AliTPCCalibViewer.cxx:1848
 AliTPCCalibViewer.cxx:1849
 AliTPCCalibViewer.cxx:1850
 AliTPCCalibViewer.cxx:1851
 AliTPCCalibViewer.cxx:1852
 AliTPCCalibViewer.cxx:1853
 AliTPCCalibViewer.cxx:1854
 AliTPCCalibViewer.cxx:1855
 AliTPCCalibViewer.cxx:1856
 AliTPCCalibViewer.cxx:1857
 AliTPCCalibViewer.cxx:1858
 AliTPCCalibViewer.cxx:1859
 AliTPCCalibViewer.cxx:1860
 AliTPCCalibViewer.cxx:1861
 AliTPCCalibViewer.cxx:1862
 AliTPCCalibViewer.cxx:1863
 AliTPCCalibViewer.cxx:1864
 AliTPCCalibViewer.cxx:1865
 AliTPCCalibViewer.cxx:1866
 AliTPCCalibViewer.cxx:1867
 AliTPCCalibViewer.cxx:1868
 AliTPCCalibViewer.cxx:1869
 AliTPCCalibViewer.cxx:1870
 AliTPCCalibViewer.cxx:1871
 AliTPCCalibViewer.cxx:1872
 AliTPCCalibViewer.cxx:1873
 AliTPCCalibViewer.cxx:1874
 AliTPCCalibViewer.cxx:1875
 AliTPCCalibViewer.cxx:1876
 AliTPCCalibViewer.cxx:1877
 AliTPCCalibViewer.cxx:1878
 AliTPCCalibViewer.cxx:1879
 AliTPCCalibViewer.cxx:1880
 AliTPCCalibViewer.cxx:1881
 AliTPCCalibViewer.cxx:1882
 AliTPCCalibViewer.cxx:1883
 AliTPCCalibViewer.cxx:1884
 AliTPCCalibViewer.cxx:1885
 AliTPCCalibViewer.cxx:1886
 AliTPCCalibViewer.cxx:1887
 AliTPCCalibViewer.cxx:1888
 AliTPCCalibViewer.cxx:1889
 AliTPCCalibViewer.cxx:1890
 AliTPCCalibViewer.cxx:1891
 AliTPCCalibViewer.cxx:1892
 AliTPCCalibViewer.cxx:1893
 AliTPCCalibViewer.cxx:1894
 AliTPCCalibViewer.cxx:1895
 AliTPCCalibViewer.cxx:1896
 AliTPCCalibViewer.cxx:1897
 AliTPCCalibViewer.cxx:1898
 AliTPCCalibViewer.cxx:1899
 AliTPCCalibViewer.cxx:1900
 AliTPCCalibViewer.cxx:1901
 AliTPCCalibViewer.cxx:1902
 AliTPCCalibViewer.cxx:1903
 AliTPCCalibViewer.cxx:1904
 AliTPCCalibViewer.cxx:1905
 AliTPCCalibViewer.cxx:1906
 AliTPCCalibViewer.cxx:1907
 AliTPCCalibViewer.cxx:1908
 AliTPCCalibViewer.cxx:1909
 AliTPCCalibViewer.cxx:1910
 AliTPCCalibViewer.cxx:1911
 AliTPCCalibViewer.cxx:1912
 AliTPCCalibViewer.cxx:1913
 AliTPCCalibViewer.cxx:1914
 AliTPCCalibViewer.cxx:1915
 AliTPCCalibViewer.cxx:1916
 AliTPCCalibViewer.cxx:1917
 AliTPCCalibViewer.cxx:1918
 AliTPCCalibViewer.cxx:1919
 AliTPCCalibViewer.cxx:1920
 AliTPCCalibViewer.cxx:1921
 AliTPCCalibViewer.cxx:1922
 AliTPCCalibViewer.cxx:1923
 AliTPCCalibViewer.cxx:1924
 AliTPCCalibViewer.cxx:1925
 AliTPCCalibViewer.cxx:1926
 AliTPCCalibViewer.cxx:1927
 AliTPCCalibViewer.cxx:1928
 AliTPCCalibViewer.cxx:1929
 AliTPCCalibViewer.cxx:1930
 AliTPCCalibViewer.cxx:1931
 AliTPCCalibViewer.cxx:1932
 AliTPCCalibViewer.cxx:1933
 AliTPCCalibViewer.cxx:1934
 AliTPCCalibViewer.cxx:1935
 AliTPCCalibViewer.cxx:1936
 AliTPCCalibViewer.cxx:1937
 AliTPCCalibViewer.cxx:1938
 AliTPCCalibViewer.cxx:1939
 AliTPCCalibViewer.cxx:1940
 AliTPCCalibViewer.cxx:1941
 AliTPCCalibViewer.cxx:1942
 AliTPCCalibViewer.cxx:1943
 AliTPCCalibViewer.cxx:1944
 AliTPCCalibViewer.cxx:1945
 AliTPCCalibViewer.cxx:1946
 AliTPCCalibViewer.cxx:1947
 AliTPCCalibViewer.cxx:1948
 AliTPCCalibViewer.cxx:1949
 AliTPCCalibViewer.cxx:1950
 AliTPCCalibViewer.cxx:1951
 AliTPCCalibViewer.cxx:1952
 AliTPCCalibViewer.cxx:1953
 AliTPCCalibViewer.cxx:1954
 AliTPCCalibViewer.cxx:1955
 AliTPCCalibViewer.cxx:1956
 AliTPCCalibViewer.cxx:1957
 AliTPCCalibViewer.cxx:1958
 AliTPCCalibViewer.cxx:1959
 AliTPCCalibViewer.cxx:1960
 AliTPCCalibViewer.cxx:1961
 AliTPCCalibViewer.cxx:1962
 AliTPCCalibViewer.cxx:1963
 AliTPCCalibViewer.cxx:1964
 AliTPCCalibViewer.cxx:1965
 AliTPCCalibViewer.cxx:1966
 AliTPCCalibViewer.cxx:1967
 AliTPCCalibViewer.cxx:1968
 AliTPCCalibViewer.cxx:1969
 AliTPCCalibViewer.cxx:1970
 AliTPCCalibViewer.cxx:1971
 AliTPCCalibViewer.cxx:1972
 AliTPCCalibViewer.cxx:1973
 AliTPCCalibViewer.cxx:1974
 AliTPCCalibViewer.cxx:1975
 AliTPCCalibViewer.cxx:1976
 AliTPCCalibViewer.cxx:1977
 AliTPCCalibViewer.cxx:1978
 AliTPCCalibViewer.cxx:1979
 AliTPCCalibViewer.cxx:1980
 AliTPCCalibViewer.cxx:1981
 AliTPCCalibViewer.cxx:1982
 AliTPCCalibViewer.cxx:1983
 AliTPCCalibViewer.cxx:1984
 AliTPCCalibViewer.cxx:1985
 AliTPCCalibViewer.cxx:1986
 AliTPCCalibViewer.cxx:1987
 AliTPCCalibViewer.cxx:1988
 AliTPCCalibViewer.cxx:1989
 AliTPCCalibViewer.cxx:1990
 AliTPCCalibViewer.cxx:1991
 AliTPCCalibViewer.cxx:1992
 AliTPCCalibViewer.cxx:1993
 AliTPCCalibViewer.cxx:1994
 AliTPCCalibViewer.cxx:1995
 AliTPCCalibViewer.cxx:1996
 AliTPCCalibViewer.cxx:1997
 AliTPCCalibViewer.cxx:1998
 AliTPCCalibViewer.cxx:1999
 AliTPCCalibViewer.cxx:2000
 AliTPCCalibViewer.cxx:2001
 AliTPCCalibViewer.cxx:2002
 AliTPCCalibViewer.cxx:2003
 AliTPCCalibViewer.cxx:2004
 AliTPCCalibViewer.cxx:2005
 AliTPCCalibViewer.cxx:2006
 AliTPCCalibViewer.cxx:2007
 AliTPCCalibViewer.cxx:2008
 AliTPCCalibViewer.cxx:2009
 AliTPCCalibViewer.cxx:2010
 AliTPCCalibViewer.cxx:2011
 AliTPCCalibViewer.cxx:2012
 AliTPCCalibViewer.cxx:2013
 AliTPCCalibViewer.cxx:2014
 AliTPCCalibViewer.cxx:2015
 AliTPCCalibViewer.cxx:2016
 AliTPCCalibViewer.cxx:2017
 AliTPCCalibViewer.cxx:2018
 AliTPCCalibViewer.cxx:2019
 AliTPCCalibViewer.cxx:2020
 AliTPCCalibViewer.cxx:2021
 AliTPCCalibViewer.cxx:2022
 AliTPCCalibViewer.cxx:2023
 AliTPCCalibViewer.cxx:2024
 AliTPCCalibViewer.cxx:2025
 AliTPCCalibViewer.cxx:2026
 AliTPCCalibViewer.cxx:2027
 AliTPCCalibViewer.cxx:2028
 AliTPCCalibViewer.cxx:2029
 AliTPCCalibViewer.cxx:2030
 AliTPCCalibViewer.cxx:2031
 AliTPCCalibViewer.cxx:2032
 AliTPCCalibViewer.cxx:2033
 AliTPCCalibViewer.cxx:2034
 AliTPCCalibViewer.cxx:2035
 AliTPCCalibViewer.cxx:2036
 AliTPCCalibViewer.cxx:2037
 AliTPCCalibViewer.cxx:2038
 AliTPCCalibViewer.cxx:2039
 AliTPCCalibViewer.cxx:2040
 AliTPCCalibViewer.cxx:2041
 AliTPCCalibViewer.cxx:2042
 AliTPCCalibViewer.cxx:2043
 AliTPCCalibViewer.cxx:2044
 AliTPCCalibViewer.cxx:2045
 AliTPCCalibViewer.cxx:2046
 AliTPCCalibViewer.cxx:2047
 AliTPCCalibViewer.cxx:2048
 AliTPCCalibViewer.cxx:2049
 AliTPCCalibViewer.cxx:2050
 AliTPCCalibViewer.cxx:2051
 AliTPCCalibViewer.cxx:2052
 AliTPCCalibViewer.cxx:2053
 AliTPCCalibViewer.cxx:2054
 AliTPCCalibViewer.cxx:2055
 AliTPCCalibViewer.cxx:2056
 AliTPCCalibViewer.cxx:2057
 AliTPCCalibViewer.cxx:2058
 AliTPCCalibViewer.cxx:2059
 AliTPCCalibViewer.cxx:2060
 AliTPCCalibViewer.cxx:2061
 AliTPCCalibViewer.cxx:2062
 AliTPCCalibViewer.cxx:2063
 AliTPCCalibViewer.cxx:2064
 AliTPCCalibViewer.cxx:2065
 AliTPCCalibViewer.cxx:2066
 AliTPCCalibViewer.cxx:2067
 AliTPCCalibViewer.cxx:2068
 AliTPCCalibViewer.cxx:2069
 AliTPCCalibViewer.cxx:2070
 AliTPCCalibViewer.cxx:2071
 AliTPCCalibViewer.cxx:2072
 AliTPCCalibViewer.cxx:2073
 AliTPCCalibViewer.cxx:2074
 AliTPCCalibViewer.cxx:2075
 AliTPCCalibViewer.cxx:2076
 AliTPCCalibViewer.cxx:2077
 AliTPCCalibViewer.cxx:2078
 AliTPCCalibViewer.cxx:2079
 AliTPCCalibViewer.cxx:2080
 AliTPCCalibViewer.cxx:2081
 AliTPCCalibViewer.cxx:2082
 AliTPCCalibViewer.cxx:2083
 AliTPCCalibViewer.cxx:2084
 AliTPCCalibViewer.cxx:2085
 AliTPCCalibViewer.cxx:2086
 AliTPCCalibViewer.cxx:2087
 AliTPCCalibViewer.cxx:2088
 AliTPCCalibViewer.cxx:2089
 AliTPCCalibViewer.cxx:2090
 AliTPCCalibViewer.cxx:2091
 AliTPCCalibViewer.cxx:2092
 AliTPCCalibViewer.cxx:2093
 AliTPCCalibViewer.cxx:2094
 AliTPCCalibViewer.cxx:2095
 AliTPCCalibViewer.cxx:2096
 AliTPCCalibViewer.cxx:2097
 AliTPCCalibViewer.cxx:2098
 AliTPCCalibViewer.cxx:2099
 AliTPCCalibViewer.cxx:2100
 AliTPCCalibViewer.cxx:2101
 AliTPCCalibViewer.cxx:2102
 AliTPCCalibViewer.cxx:2103
 AliTPCCalibViewer.cxx:2104
 AliTPCCalibViewer.cxx:2105
 AliTPCCalibViewer.cxx:2106
 AliTPCCalibViewer.cxx:2107
 AliTPCCalibViewer.cxx:2108
 AliTPCCalibViewer.cxx:2109
 AliTPCCalibViewer.cxx:2110
 AliTPCCalibViewer.cxx:2111
 AliTPCCalibViewer.cxx:2112
 AliTPCCalibViewer.cxx:2113
 AliTPCCalibViewer.cxx:2114
 AliTPCCalibViewer.cxx:2115
 AliTPCCalibViewer.cxx:2116
 AliTPCCalibViewer.cxx:2117
 AliTPCCalibViewer.cxx:2118
 AliTPCCalibViewer.cxx:2119
 AliTPCCalibViewer.cxx:2120
 AliTPCCalibViewer.cxx:2121
 AliTPCCalibViewer.cxx:2122
 AliTPCCalibViewer.cxx:2123
 AliTPCCalibViewer.cxx:2124
 AliTPCCalibViewer.cxx:2125
 AliTPCCalibViewer.cxx:2126
 AliTPCCalibViewer.cxx:2127
 AliTPCCalibViewer.cxx:2128
 AliTPCCalibViewer.cxx:2129
 AliTPCCalibViewer.cxx:2130
 AliTPCCalibViewer.cxx:2131
 AliTPCCalibViewer.cxx:2132
 AliTPCCalibViewer.cxx:2133
 AliTPCCalibViewer.cxx:2134
 AliTPCCalibViewer.cxx:2135
 AliTPCCalibViewer.cxx:2136
 AliTPCCalibViewer.cxx:2137
 AliTPCCalibViewer.cxx:2138
 AliTPCCalibViewer.cxx:2139
 AliTPCCalibViewer.cxx:2140
 AliTPCCalibViewer.cxx:2141
 AliTPCCalibViewer.cxx:2142
 AliTPCCalibViewer.cxx:2143
 AliTPCCalibViewer.cxx:2144
 AliTPCCalibViewer.cxx:2145
 AliTPCCalibViewer.cxx:2146
 AliTPCCalibViewer.cxx:2147
 AliTPCCalibViewer.cxx:2148
 AliTPCCalibViewer.cxx:2149
 AliTPCCalibViewer.cxx:2150
 AliTPCCalibViewer.cxx:2151
 AliTPCCalibViewer.cxx:2152
 AliTPCCalibViewer.cxx:2153
 AliTPCCalibViewer.cxx:2154
 AliTPCCalibViewer.cxx:2155
 AliTPCCalibViewer.cxx:2156
 AliTPCCalibViewer.cxx:2157
 AliTPCCalibViewer.cxx:2158
 AliTPCCalibViewer.cxx:2159
 AliTPCCalibViewer.cxx:2160
 AliTPCCalibViewer.cxx:2161
 AliTPCCalibViewer.cxx:2162
 AliTPCCalibViewer.cxx:2163
 AliTPCCalibViewer.cxx:2164
 AliTPCCalibViewer.cxx:2165
 AliTPCCalibViewer.cxx:2166
 AliTPCCalibViewer.cxx:2167
 AliTPCCalibViewer.cxx:2168
 AliTPCCalibViewer.cxx:2169
 AliTPCCalibViewer.cxx:2170
 AliTPCCalibViewer.cxx:2171
 AliTPCCalibViewer.cxx:2172
 AliTPCCalibViewer.cxx:2173
 AliTPCCalibViewer.cxx:2174
 AliTPCCalibViewer.cxx:2175
 AliTPCCalibViewer.cxx:2176
 AliTPCCalibViewer.cxx:2177
 AliTPCCalibViewer.cxx:2178
 AliTPCCalibViewer.cxx:2179
 AliTPCCalibViewer.cxx:2180
 AliTPCCalibViewer.cxx:2181
 AliTPCCalibViewer.cxx:2182
 AliTPCCalibViewer.cxx:2183
 AliTPCCalibViewer.cxx:2184
 AliTPCCalibViewer.cxx:2185
 AliTPCCalibViewer.cxx:2186
 AliTPCCalibViewer.cxx:2187
 AliTPCCalibViewer.cxx:2188
 AliTPCCalibViewer.cxx:2189
 AliTPCCalibViewer.cxx:2190
 AliTPCCalibViewer.cxx:2191
 AliTPCCalibViewer.cxx:2192
 AliTPCCalibViewer.cxx:2193
 AliTPCCalibViewer.cxx:2194
 AliTPCCalibViewer.cxx:2195
 AliTPCCalibViewer.cxx:2196
 AliTPCCalibViewer.cxx:2197
 AliTPCCalibViewer.cxx:2198
 AliTPCCalibViewer.cxx:2199
 AliTPCCalibViewer.cxx:2200
 AliTPCCalibViewer.cxx:2201
 AliTPCCalibViewer.cxx:2202
 AliTPCCalibViewer.cxx:2203
 AliTPCCalibViewer.cxx:2204
 AliTPCCalibViewer.cxx:2205
 AliTPCCalibViewer.cxx:2206
 AliTPCCalibViewer.cxx:2207
 AliTPCCalibViewer.cxx:2208
 AliTPCCalibViewer.cxx:2209
 AliTPCCalibViewer.cxx:2210
 AliTPCCalibViewer.cxx:2211
 AliTPCCalibViewer.cxx:2212
 AliTPCCalibViewer.cxx:2213
 AliTPCCalibViewer.cxx:2214
 AliTPCCalibViewer.cxx:2215
 AliTPCCalibViewer.cxx:2216
 AliTPCCalibViewer.cxx:2217
 AliTPCCalibViewer.cxx:2218
 AliTPCCalibViewer.cxx:2219
 AliTPCCalibViewer.cxx:2220
 AliTPCCalibViewer.cxx:2221
 AliTPCCalibViewer.cxx:2222
 AliTPCCalibViewer.cxx:2223
 AliTPCCalibViewer.cxx:2224
 AliTPCCalibViewer.cxx:2225
 AliTPCCalibViewer.cxx:2226
 AliTPCCalibViewer.cxx:2227
 AliTPCCalibViewer.cxx:2228
 AliTPCCalibViewer.cxx:2229
 AliTPCCalibViewer.cxx:2230
 AliTPCCalibViewer.cxx:2231
 AliTPCCalibViewer.cxx:2232
 AliTPCCalibViewer.cxx:2233
 AliTPCCalibViewer.cxx:2234
 AliTPCCalibViewer.cxx:2235
 AliTPCCalibViewer.cxx:2236
 AliTPCCalibViewer.cxx:2237
 AliTPCCalibViewer.cxx:2238
 AliTPCCalibViewer.cxx:2239
 AliTPCCalibViewer.cxx:2240
 AliTPCCalibViewer.cxx:2241
 AliTPCCalibViewer.cxx:2242
 AliTPCCalibViewer.cxx:2243
 AliTPCCalibViewer.cxx:2244
 AliTPCCalibViewer.cxx:2245
 AliTPCCalibViewer.cxx:2246
 AliTPCCalibViewer.cxx:2247
 AliTPCCalibViewer.cxx:2248
 AliTPCCalibViewer.cxx:2249
 AliTPCCalibViewer.cxx:2250
 AliTPCCalibViewer.cxx:2251
 AliTPCCalibViewer.cxx:2252
 AliTPCCalibViewer.cxx:2253
 AliTPCCalibViewer.cxx:2254
 AliTPCCalibViewer.cxx:2255
 AliTPCCalibViewer.cxx:2256
 AliTPCCalibViewer.cxx:2257
 AliTPCCalibViewer.cxx:2258
 AliTPCCalibViewer.cxx:2259
 AliTPCCalibViewer.cxx:2260
 AliTPCCalibViewer.cxx:2261
 AliTPCCalibViewer.cxx:2262
 AliTPCCalibViewer.cxx:2263
 AliTPCCalibViewer.cxx:2264
 AliTPCCalibViewer.cxx:2265
 AliTPCCalibViewer.cxx:2266
 AliTPCCalibViewer.cxx:2267
 AliTPCCalibViewer.cxx:2268
 AliTPCCalibViewer.cxx:2269
 AliTPCCalibViewer.cxx:2270
 AliTPCCalibViewer.cxx:2271
 AliTPCCalibViewer.cxx:2272
 AliTPCCalibViewer.cxx:2273
 AliTPCCalibViewer.cxx:2274
 AliTPCCalibViewer.cxx:2275
 AliTPCCalibViewer.cxx:2276
 AliTPCCalibViewer.cxx:2277
 AliTPCCalibViewer.cxx:2278
 AliTPCCalibViewer.cxx:2279
 AliTPCCalibViewer.cxx:2280
 AliTPCCalibViewer.cxx:2281
 AliTPCCalibViewer.cxx:2282
 AliTPCCalibViewer.cxx:2283
 AliTPCCalibViewer.cxx:2284
 AliTPCCalibViewer.cxx:2285
 AliTPCCalibViewer.cxx:2286
 AliTPCCalibViewer.cxx:2287
 AliTPCCalibViewer.cxx:2288
 AliTPCCalibViewer.cxx:2289
 AliTPCCalibViewer.cxx:2290
 AliTPCCalibViewer.cxx:2291
 AliTPCCalibViewer.cxx:2292
 AliTPCCalibViewer.cxx:2293
 AliTPCCalibViewer.cxx:2294
 AliTPCCalibViewer.cxx:2295
 AliTPCCalibViewer.cxx:2296
 AliTPCCalibViewer.cxx:2297
 AliTPCCalibViewer.cxx:2298
 AliTPCCalibViewer.cxx:2299
 AliTPCCalibViewer.cxx:2300
 AliTPCCalibViewer.cxx:2301
 AliTPCCalibViewer.cxx:2302
 AliTPCCalibViewer.cxx:2303
 AliTPCCalibViewer.cxx:2304
 AliTPCCalibViewer.cxx:2305
 AliTPCCalibViewer.cxx:2306
 AliTPCCalibViewer.cxx:2307
 AliTPCCalibViewer.cxx:2308
 AliTPCCalibViewer.cxx:2309
 AliTPCCalibViewer.cxx:2310
 AliTPCCalibViewer.cxx:2311
 AliTPCCalibViewer.cxx:2312
 AliTPCCalibViewer.cxx:2313
 AliTPCCalibViewer.cxx:2314
 AliTPCCalibViewer.cxx:2315
 AliTPCCalibViewer.cxx:2316
 AliTPCCalibViewer.cxx:2317
 AliTPCCalibViewer.cxx:2318
 AliTPCCalibViewer.cxx:2319
 AliTPCCalibViewer.cxx:2320
 AliTPCCalibViewer.cxx:2321
 AliTPCCalibViewer.cxx:2322
 AliTPCCalibViewer.cxx:2323
 AliTPCCalibViewer.cxx:2324
 AliTPCCalibViewer.cxx:2325
 AliTPCCalibViewer.cxx:2326
 AliTPCCalibViewer.cxx:2327
 AliTPCCalibViewer.cxx:2328
 AliTPCCalibViewer.cxx:2329
 AliTPCCalibViewer.cxx:2330
 AliTPCCalibViewer.cxx:2331
 AliTPCCalibViewer.cxx:2332
 AliTPCCalibViewer.cxx:2333
 AliTPCCalibViewer.cxx:2334
 AliTPCCalibViewer.cxx:2335
 AliTPCCalibViewer.cxx:2336
 AliTPCCalibViewer.cxx:2337
 AliTPCCalibViewer.cxx:2338
 AliTPCCalibViewer.cxx:2339
 AliTPCCalibViewer.cxx:2340
 AliTPCCalibViewer.cxx:2341
 AliTPCCalibViewer.cxx:2342
 AliTPCCalibViewer.cxx:2343
 AliTPCCalibViewer.cxx:2344
 AliTPCCalibViewer.cxx:2345
 AliTPCCalibViewer.cxx:2346
 AliTPCCalibViewer.cxx:2347
 AliTPCCalibViewer.cxx:2348
 AliTPCCalibViewer.cxx:2349
 AliTPCCalibViewer.cxx:2350
 AliTPCCalibViewer.cxx:2351
 AliTPCCalibViewer.cxx:2352
 AliTPCCalibViewer.cxx:2353
 AliTPCCalibViewer.cxx:2354
 AliTPCCalibViewer.cxx:2355
 AliTPCCalibViewer.cxx:2356
 AliTPCCalibViewer.cxx:2357
 AliTPCCalibViewer.cxx:2358
 AliTPCCalibViewer.cxx:2359
 AliTPCCalibViewer.cxx:2360
 AliTPCCalibViewer.cxx:2361
 AliTPCCalibViewer.cxx:2362
 AliTPCCalibViewer.cxx:2363
 AliTPCCalibViewer.cxx:2364
 AliTPCCalibViewer.cxx:2365
 AliTPCCalibViewer.cxx:2366
 AliTPCCalibViewer.cxx:2367
 AliTPCCalibViewer.cxx:2368
 AliTPCCalibViewer.cxx:2369
 AliTPCCalibViewer.cxx:2370
 AliTPCCalibViewer.cxx:2371
 AliTPCCalibViewer.cxx:2372
 AliTPCCalibViewer.cxx:2373
 AliTPCCalibViewer.cxx:2374
 AliTPCCalibViewer.cxx:2375
 AliTPCCalibViewer.cxx:2376
 AliTPCCalibViewer.cxx:2377
 AliTPCCalibViewer.cxx:2378
 AliTPCCalibViewer.cxx:2379
 AliTPCCalibViewer.cxx:2380
 AliTPCCalibViewer.cxx:2381
 AliTPCCalibViewer.cxx:2382
 AliTPCCalibViewer.cxx:2383
 AliTPCCalibViewer.cxx:2384
 AliTPCCalibViewer.cxx:2385
 AliTPCCalibViewer.cxx:2386
 AliTPCCalibViewer.cxx:2387
 AliTPCCalibViewer.cxx:2388
 AliTPCCalibViewer.cxx:2389
 AliTPCCalibViewer.cxx:2390
 AliTPCCalibViewer.cxx:2391
 AliTPCCalibViewer.cxx:2392
 AliTPCCalibViewer.cxx:2393
 AliTPCCalibViewer.cxx:2394
 AliTPCCalibViewer.cxx:2395
 AliTPCCalibViewer.cxx:2396
 AliTPCCalibViewer.cxx:2397
 AliTPCCalibViewer.cxx:2398
 AliTPCCalibViewer.cxx:2399
 AliTPCCalibViewer.cxx:2400