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

/* $Id: AliTRDCalibViewer.cxx 40390 2010-04-14 09:43:23Z cblume $ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  Class which implements AliBaseCalibViewer for the TRD                    //
//  used for the calibration monitor                                         //
//                                                                           //
//  Authors:     Marian Ivanov (Marian.Ivanov@cern.ch)                       //
//               Jens Wiechula (Jens.Wiechula@cern.ch)                       //
//               Ionut Arsene  (iarsene@cern.ch)                             //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include <iostream>
#include <fstream>
#include <TString.h>
#include <TRandom.h>
#include <TLegend.h>
#include <TLine.h>
#include <TCanvas.h>
#include <TROOT.h>
#include <TStyle.h>
#include <TH1.h> 
#include <TH1F.h>
#include <TMath.h>
#include <TVectorD.h>
#include <THashTable.h>
#include <TObjString.h>
#include <TTimeStamp.h>
#include <TObjString.h>
#include <TTreeStream.h>
#include <TFile.h>
#include <TKey.h>
#include <TGraph.h>
#include <TDirectory.h>
#include <TFriendElement.h>
#include <TGrid.h>
#include <TGeoManager.h>
#include "AliTRDCalDet.h"
#include "AliTRDCalPad.h"
#include "AliTRDCalROC.h"
#include "AliTRDCalChamberStatus.h"
#include "AliTRDCalSingleChamberStatus.h"
#include "AliTRDCalPadStatus.h"
#include "AliTRDCalDCSv2.h"
#include "AliTRDCalDCSFEEv2.h"
#include "AliTRDcalibDB.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCDBEntry.h"
#include "AliGRPObject.h"
#include "AliTRDalignment.h"
#include "AliTRDgeometry.h"
#include "AliTRDpadPlane.h"

#include "AliTRDCalibViewer.h"


using namespace std;

ClassImp(AliTRDCalibViewer)

//_____________________________________________________________________________
AliTRDCalibViewer::AliTRDCalibViewer()
                  :AliBaseCalibViewer()
{
  //
  // Default constructor (just call base class constructor)
  //
}

//_____________________________________________________________________________
AliTRDCalibViewer::AliTRDCalibViewer(const AliTRDCalibViewer &c)
                  :AliBaseCalibViewer(c)
{
  //
  // copy constructor (just call base class copy constructor)
  // 
}

//_____________________________________________________________________________
AliTRDCalibViewer::AliTRDCalibViewer(TTree* tree)
                  :AliBaseCalibViewer(tree)
{
  //
  // Constructor (just call the corresponding base constructor)
  //
}

//_____________________________________________________________________________
AliTRDCalibViewer::AliTRDCalibViewer(const char* fileName, const char* treeName)
                  :AliBaseCalibViewer(fileName, treeName)                   
{
   //
   // Constructor (just call the corresponding base constructor)
   //
}

//_____________________________________________________________________________
AliTRDCalibViewer& AliTRDCalibViewer::operator=(const AliTRDCalibViewer& param) 
{
  //
  // assignment operator
  //

  if (this == &param) {
    return *this;
  }

  fTree = param.fTree;
  fTreeMustBeDeleted = param.fTreeMustBeDeleted;
  fListOfObjectsToBeDeleted = param.fListOfObjectsToBeDeleted;
  fAbbreviation = param.fAbbreviation;
  fAppendString = param.fAppendString;

  return(*this);

}

//_____________________________________________________________________________
AliTRDCalibViewer::~AliTRDCalibViewer()
{
   //
   // AliTRDCalibViewer destructor
   // do nothing, the base class destructor will do the job
}

/*
//_____________________________________________________________________________
void AliTRDCalibViewer::GetTimeInfoOCDB(const Char_t* runList, const Char_t* outFile,
                        	        Int_t firstRun, Int_t lastRun, UInt_t infoFlags,
                                        const Char_t* ocdbStorage) {
//
//  Get time information from OCDB by calling the DumpOCDBtoTree.C macro
//
  DumpOCDBtoTree(runList, outFile, firstRun, lastRun,
                 TESTBIT(infoFlags,1), TESTBIT(infoFlags,2), 
                 TESTBIT(infoFlags,3), TESTBIT(infoFlags,4),
		 ocdbStorage);
}
*/

//_____________________________________________________________________________
const char* AliTRDCalibViewer::AddAbbreviations(char* 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 unprobable combination of chars
   TString replaceString = "";
   TString searchString = "";
   TString normString = "";
   TObjArray *listOfVariables = GetListOfVariables();
   // variables used for mapping the pads, mcms, ...
   listOfVariables->Add(new TObjString("SuperModule"));
   listOfVariables->Add(new TObjString("Layer"));
   listOfVariables->Add(new TObjString("Stack"));
   listOfVariables->Add(new TObjString("Channel"));
   listOfVariables->Add(new TObjString("Row"));
   listOfVariables->Add(new TObjString("Column"));
   listOfVariables->Add(new TObjString("Chamber"));
   listOfVariables->Add(new TObjString("PadSuperRow"));
   listOfVariables->Add(new TObjString("PadSuperColumn"));
   listOfVariables->Add(new TObjString("MCMSuperRow"));
   listOfVariables->Add(new TObjString("MCMSuperColumn"));
   listOfVariables->Add(new TObjString("ROB"));
   listOfVariables->Add(new TObjString("MCM"));
   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();
   }
   Int_t *varSort = new Int_t[nVariables+1];
   TMath::Sort(nVariables, varLengths, varSort, kTRUE);
   Int_t *normSort = new Int_t[nNorm+1];
   TMath::Sort(nNorm, normLengths, normSort, kTRUE);
      
   for (Int_t ivar = 0; ivar < nVariables; ivar++) {
      // ***** save correct tokens *****
      // first get the next variable:
      searchString = ((TObjString*)listOfVariables->At(varSort[ivar]))->String();
      // 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:
      for (Int_t inorm = 0; inorm < nNorm; inorm++) {
	normString = ((TObjString*)listOfNormalizationVariables->At(normSort[inorm]))->String();
	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 [] varSort;
   delete [] normSort;
   return str.Data();
}

//_____________________________________________________________________________
TObjArray* AliTRDCalibViewer::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("_Mean", "");
    str->String().ReplaceAll("_RMS", "");
    str->String().ReplaceAll("_Median", "");
    str->String().ReplaceAll(".", "");
    str->String().ReplaceAll("_Run", "");
    str->String().ReplaceAll("_SuperModule", "");
    str->String().ReplaceAll("_Chamber", "");
    // add all the variables in the tree to a list
    // exception make variables which are used for mapping, specified in AddAbbreviations()
    // These two functions should be kept synchronized with respect to the mapping variables 
    if (!arr->FindObject(str) && 
	!(str->String() == "run" || 
	  str->String() == "SuperModule" || str->String() == "Layer" || str->String() == "Stack" || 
	  str->String() == "Chamber" ||
	  str->String() == "Channel" || str->String() == "Row" || str->String() == "Column" || 
	  str->String() == "PadSuperRow" || str->String() == "PadSuperColumn" || str->String() == "MCMSuperRow"
	  || str->String() == "MCMSuperColumn" || str->String() == "MCM" || str->String() == "ROB")) {
      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("_Mean", "");
	str->String().ReplaceAll("_RMS", "");
	str->String().ReplaceAll("_Median", "");
	str->String().ReplaceAll(".", "");
	str->String().ReplaceAll("_Run", "");
	str->String().ReplaceAll("_SuperModule", "");
	str->String().ReplaceAll("_Chamber", "");
	if (!(str->String() == "run" || 
	      str->String() == "SuperModule" || str->String() == "Layer" || str->String() == "Stack" || 
	      str->String() == "Chamber" ||
	      str->String() == "Channel" || str->String() == "Row" || str->String() == "Column" || 
	      str->String() == "PadSuperRow" || str->String() == "PadSuperColumn" || str->String() == "MCMSuperRow"
	      || str->String() == "MCMSuperColumn" || str->String() == "MCM" || str->String() == "ROB")){
	  // 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();
    
  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* AliTRDCalibViewer::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_Run"));
   arr->Add(new TObjString("_Mean_SuperModule"));
   arr->Add(new TObjString("_Mean_Chamber"));
   arr->Add(new TObjString("_Median_Run"));
   arr->Add(new TObjString("_Median_SuperModule"));
   arr->Add(new TObjString("_Median_Chamber"));
   
   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;
}

void AliTRDCalibViewer::GetLayerSectorStack(TString trdString, Int_t& layerNo, Int_t& sectorNo, Int_t& stackNo) const {
  // Get the layer, sector and stack numbers out of a string
  // encoded with the following format:
  // Layer%dSector%dStack%d

  //sscanf(trdString.Data(), "Layer%1dSector%02dStack%1d", &layerNo, &sectorNo, &stackNo);

  // Coverity compliant solution (bit more cumbersome, but works) CBL
  TString cName = trdString.Data();
  Char_t  cLayer[2];
  Char_t  cSector[3];
  Char_t  cStack[2];

  cLayer[0]  = cName[5];
  cLayer[1]  = 0;
  cSector[0] = cName[12];
  cSector[1] = cName[13];
  cSector[2] = 0;
  cStack[0]  = cName[19];
  cStack[1]  = 0;

  layerNo    = atoi(cLayer);
  sectorNo   = atoi(cSector);
  stackNo    = atoi(cStack);

  return;
}

//_____________________________________________________________________________
Int_t AliTRDCalibViewer::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);
  Int_t layerNo = -1; 
  Int_t sectorNo = -1; 
  Int_t stackNo = -1;
  GetLayerSectorStack(sectorStr, layerNo, sectorNo, stackNo);
  if(layerNo==-1) {
     Warning("EasyDraw", "The sector string must always contain the Layer number!");
     return -1;
   }
   if(layerNo<0 || layerNo>5) {
     Warning("EasyDraw", "The Layer number must be in the range [0,5] !");
     return -1;
   }
   if(sectorNo!=-1 && (sectorNo<0 || sectorNo>17)) {
     Warning("EasyDraw", "The SuperModule number must be in the range [0,17] !");
     return -1;
   }
   if(stackNo!=-1 && (stackNo<0 || stackNo>4)) {
     Warning("EasyDraw", "The Stack number must be in the range [0,4] !");
     return -1;
   }

   TString cutStr("");

   Bool_t dangerousToDraw = drawStr.Contains(":") || drawStr.Contains(">>");
   if (dangerousToDraw) {
      Warning("EasyDraw", "The draw string must not contain ':' or '>>'. Using only first variable for drawing!");
      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";

   const Int_t gkNRows[ 5] = {16, 16, 12, 16, 16};  // number of pad rows in the chambers from each of the 5 stacks

   // draw calibration stuff
   if(drawStr.Contains("Status") || drawStr.Contains("Gain") || drawStr.Contains("Noise") ||
      drawStr.Contains("Vdrift") || drawStr.Contains("T0") || 
      drawStr.Contains("gain") || drawStr.Contains("chiSquare")) {
     if(sectorNo==-1 && stackNo==-1) {    // plot the entire layer
       drawStr += Form(":PadSuperColumn%s:PadSuperRow%s>>prof", fAppendString.Data(), fAppendString.Data());
       drawStr += rndNumber;
       drawStr += "(76,-0.5,75.5,2592,-0.5,2591.5)";
       cutStr += Form("Layer==%d", layerNo);
     }
     else if(sectorNo!=-1 && stackNo==-1) {     // plot a sector from a layer
       drawStr += Form(":Column%s:PadSuperRow%s>>prof", fAppendString.Data(), fAppendString.Data());
       drawStr += rndNumber;
       drawStr += "(76,-0.5,75.5,144,-0.5,143.5)";
       cutStr += Form("Layer==%d && SuperModule==%d", layerNo, sectorNo);
     }
     else if(sectorNo==-1 && stackNo!=-1) {       // plot a stack from a layer
       drawStr += Form(":PadSuperColumn%s:Row%s>>prof", fAppendString.Data(), fAppendString.Data());
       drawStr += rndNumber;
       drawStr += Form("(%d,-0.5,%d-0.5,2592,-0.5,2591.5)", gkNRows[stackNo], gkNRows[stackNo]);
       cutStr += Form("Layer==%d && Stack==%d", layerNo, stackNo);
     }
     else {                // the layer, sector and stack are determined -> so plot a chamber
       drawStr += Form(":Column%s:Row%s>>prof", fAppendString.Data(), fAppendString.Data());
       drawStr += rndNumber;
       drawStr += Form("(%d,-0.5,%d-0.5,144,-0.5,143.5)", gkNRows[stackNo], gkNRows[stackNo]);
       cutStr += Form("Layer==%d && SuperModule==%d && Stack==%d", layerNo, sectorNo, stackNo);
     }
   }
   // draw FEE stuff
   else if(drawStr.Contains("SORandEOR") || 
	   drawStr.Contains("gsmSOR") || drawStr.Contains("gsmDelta") ||
	   drawStr.Contains("nimSOR") || drawStr.Contains("nimDelta") ||
	   drawStr.Contains("nevSOR") || drawStr.Contains("nevDelta") ||
	   drawStr.Contains("nptSOR") || drawStr.Contains("nptDelta")) {
     if(sectorNo==-1 && stackNo==-1) {    // plot the entire layer
       drawStr += Form(":MCMSuperColumn%s:MCMSuperRow%s>>prof", fAppendString.Data(), fAppendString.Data());
       drawStr += rndNumber;
       drawStr += "(76,-0.5,75.5,144,-0.5,143.5)";
       cutStr += Form("Layer==%d", layerNo);
     }
     else if(sectorNo!=-1 && stackNo==-1) {     // plot a sector from a layer
       drawStr += Form(":MCMSuperColumn%s:MCMSuperRow%s>>prof", fAppendString.Data(), fAppendString.Data());
       drawStr += rndNumber;
       drawStr += "(76,-0.5,75.5,144,-0.5,143.5)";
       cutStr += Form("Layer==%d && SuperModule==%d", layerNo, sectorNo);
     }
     else if(sectorNo==-1 && stackNo!=-1) {       // plot a stack from a layer
       drawStr += Form(":MCMSuperColumn%s:MCMSuperRow%s>>prof", fAppendString.Data(), fAppendString.Data());
       drawStr += rndNumber;
       //       drawStr += Form("(%d,-0.5,%d-0.5,2592,-0.5,2591.5)", gkNRows[stackNo], gkNRows[stackNo]);
       drawStr += "(76,-0.5,75.5,144,-0.5,143.5)";
       cutStr += Form("Layer==%d && Stack==%d", layerNo, stackNo);
     }
     else {                // the layer, sector and stack are determined -> so plot a chamber
       drawStr += Form(":ROB%s:MCM%s>>prof", fAppendString.Data(), fAppendString.Data());
       drawStr += rndNumber;
       drawStr += Form("(16,-0.5,15.5,%d,-0.5,%d-0.5)", gkNRows[stackNo]/2, gkNRows[stackNo]/2);
       cutStr += Form("Layer==%d && SuperModule==%d && Stack==%d", layerNo, sectorNo, stackNo);
     }
   }
   // draw alignment stuff
   else if(drawStr.Contains("Align")) {
     if(sectorNo==-1 && stackNo==-1) {  // plot the entire layer
       drawStr += ":SuperModule:Stack>>prof";
       drawStr += rndNumber;
       drawStr += "(5,-0.5,4.5,18,-0.5,17.5)";
       cutStr += Form("Layer==%d", layerNo);
     }
     else if(sectorNo!=-1 && stackNo==-1) {     // plot a sector from a layer
       drawStr += ":SuperModule:Stack>>prof";
       drawStr += rndNumber;
       drawStr += Form("(5,-0.5,4.5,1,%f,%f)", sectorNo-0.5, sectorNo+0.5);
       cutStr += Form("Layer==%d && SuperModule==%d", layerNo, sectorNo);
     }
     else if(sectorNo==-1 && stackNo!=-1) {       // plot a stack from a layer
       drawStr += ":SuperModule:Stack>>prof";
       drawStr += rndNumber;
       drawStr += Form("(1,%f,%f,18,-0.5,17.5)", stackNo-0.5, stackNo+0.5);
       cutStr += Form("Layer==%d && Stack==%d", layerNo, stackNo);
     }
     else {                // the layer, sector and stack are determined -> so plot a chamber
       drawStr += ":SuperModule:Stack>>prof";
       drawStr += rndNumber;
       drawStr += Form("(1,%f,%f,1,%f,%f)", stackNo-0.5, stackNo+0.5, sectorNo-0.5, sectorNo+0.5);
       cutStr += Form("Layer==%d && SuperModule==%d && Stack==%d", layerNo, sectorNo, stackNo);
     }
   }


   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());
   // set the names of the axes 
   TH1 *histObj = (TH1*)obj;
   if(drawStr.Contains("Status") || drawStr.Contains("Gain") || drawStr.Contains("Noise") ||
      drawStr.Contains("Vdrift") || drawStr.Contains("T0") ||
      drawStr.Contains("gain") || drawStr.Contains("chiSquare")) {
     histObj->GetXaxis()->SetTitle("Row");
     histObj->GetYaxis()->SetTitle("Column");
   }
   else if(drawStr.Contains("SORandEOR") || 
	   drawStr.Contains("gsmSOR") || drawStr.Contains("gsmDelta") ||
	   drawStr.Contains("nimSOR") || drawStr.Contains("nimDelta") ||
	   drawStr.Contains("nevSOR") || drawStr.Contains("nevDelta") ||
	   drawStr.Contains("nptSOR") || drawStr.Contains("nptDelta")) {
     histObj->GetXaxis()->SetTitle("MCM Row");
     histObj->GetYaxis()->SetTitle("MCM Column");
   }
   else if(drawStr.Contains("Align")) {
     histObj->GetXaxis()->SetTitle("Stack");
     histObj->GetYaxis()->SetTitle("Sector");
   }

   if (obj && obj->InheritsFrom("TH1")) FormatHistoLabels((TH1*)obj);
   return returnValue;
}

//_____________________________________________________________________________
Int_t AliTRDCalibViewer::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);
   Int_t layerNo = -1; 
   Int_t sectorNo = -1; 
   Int_t stackNo = -1;
   GetLayerSectorStack(sectorStr, layerNo, sectorNo, stackNo);
   if(layerNo==-1) {
     Warning("EasyDraw", "The sector string must always contain the Layer number!");
     return -1;
   }
   if(layerNo<0 || layerNo>5) {
     Warning("EasyDraw", "The Layer number must be in the range [0,5] !");
     return -1;
   }
   if(sectorNo!=-1 && (sectorNo<0 || sectorNo>17)) {
     Warning("EasyDraw", "The Sector number must be in the range [0,17] !");
     return -1;
   }
   if(stackNo!=-1 && (stackNo<0 || stackNo>4)) {
     Warning("EasyDraw", "The Stack number must be in the range [0,4] !");
     return -1;
   }

   TString drawOptionsStr(drawOptions);
   TString cutStr("");

   if(sectorNo==-1 && stackNo==-1)     // plot the entire layer
     cutStr += Form("Layer==%d", layerNo);
   else if(sectorNo!=-1 && stackNo==-1)      // plot a sector from a layer
     cutStr += Form("Layer==%d && SuperModule==%d", layerNo, sectorNo);
   else if(sectorNo==-1 && stackNo!=-1)        // plot a stack from a layer
     cutStr += Form("Layer==%d && Stack==%d", layerNo, stackNo);
   else                 // the layer, sector and stack are determined -> so plot a chamber
     cutStr += Form("Layer==%d && SuperModule==%d && Stack==%d", layerNo, sectorNo, stackNo);
   
   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 AliTRDCalibViewer::EasyDraw(const char* drawCommand, Int_t chamber, 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(chamber >= 0 && chamber < 540) {
    Int_t superModuleNo = chamber/30;
    Int_t stackNo = (chamber%30)/6;
    Int_t layerNo = (chamber%30)%6;
    char sectorChr[22];
    snprintf(sectorChr,22, "Layer%iSector%iStack%i", layerNo, superModuleNo, stackNo);
    return EasyDraw(drawCommand, sectorChr, cuts, drawOptions, writeDrawCommand);
  }
  Error("EasyDraw","The TRD contains only chamber from 0 to 539");
  return -1;
}

//_____________________________________________________________________________
Int_t AliTRDCalibViewer::EasyDraw1D(const char* drawCommand, Int_t chamber, 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 (chamber >= 0 && chamber < 539) {
    Int_t superModuleNo = chamber/30;
    Int_t stackNo = (chamber%30)/6;
    Int_t layerNo = (chamber%30)%6;
    char sectorChr[22];
    snprintf(sectorChr,22, "Layer%iSector%iStack%i", layerNo, superModuleNo, stackNo);
    return EasyDraw1D(drawCommand, sectorChr, cuts, drawOptions, writeDrawCommand);
  }
  Error("EasyDraw1D","The TRD contains only chambers from 0 to 539");
  return -1;
}

//_____________________________________________________________________________
Bool_t AliTRDCalibViewer::DumpOCDBtoTreeDetails(const Char_t* runListFilename,
						const Char_t* outFilename,
						Int_t firstRun, Int_t lastRun,
						const Char_t* storage,
                                                Int_t version,
                                                Int_t subVersion,
                                                Bool_t getCalibs,
                                                Bool_t getDCS,
                                                Bool_t getAlign) {
  //
  // Retrieve TRD OCDB information for a given run list/range
  //

  if(runListFilename[0]!='\0' && firstRun==-1 && lastRun==-1) {
    cout << "AliTRDCalibViewer::DumpOCDBtoTreeDetails(): You must provide at least a run range or an ascii filename with run numbers" 
	 << endl;
    return kFALSE;
  }
  // initialize the OCDB manager
  TString storageString = storage;
  if(storageString.Contains("alien://")) {
    TGrid::Connect("alien://");
  }
  AliCDBManager *manager = AliCDBManager::Instance();
  if(storage[0]!='\0') {
    manager->SetDefaultStorage(storage);
  }
  else {
    if(!manager->IsDefaultStorageSet()) {
      cout << "AliTRDCalibViewer::DumpOCDBtoTreeDetails(): Default OCDB storage not set!!" << endl;
      return kFALSE;
    }
  }
  manager->SetRun(1);

  // open the ascii file
  ifstream in;
  if(runListFilename[0]!='\0')
    in.open(runListFilename);

  // initialize the tree streamer
  if(outFilename[0]=='\0') outFilename = "trdDetails.root";
  TString calibFilename = outFilename;
  
  TTreeSRedirector *treeStreamer = new TTreeSRedirector(calibFilename.Data());

  Int_t currRun;
  if(runListFilename[0]=='\0' && firstRun!=-1 && lastRun!=-1)
    currRun = firstRun;

  TVectorD runs;

  // loop over runs
  while(1) {
    if(runListFilename[0]!='\0') {
      if(!(in>>currRun)) continue;
      if(currRun < (firstRun==-1 ? 0 : firstRun) ||
	 currRun > (lastRun==-1 ? 999999999 : lastRun))
	continue;
    }
    else {
      if(currRun>lastRun) break;
    }
    cout << "run = " << currRun << endl;
    manager->SetRun(currRun);

    // Get GRP data. If there is no proper GRP object for this run than
    // this run is aborted
    AliCDBEntry *entry = manager->Get("GRP/GRP/Data");
    AliGRPObject* grpObject = 0;
    if(entry) {
      entry->SetOwner(kFALSE);
      grpObject = dynamic_cast<AliGRPObject*>(entry->GetObject());
    }
    else {
      currRun++;
      //      continue;
      //      return kFALSE;
    }
    if(!grpObject)
      cout << "No GRP info available for this run " << endl;

    // Coverity
    //time_t startTimeGRP = 0;
    TObjString runType("");
    if(grpObject) {
      // Coverity
      //startTimeGRP = grpObject->GetTimeStart();
      TTimeStamp start(grpObject->GetTimeStart());
      TTimeStamp end(grpObject->GetTimeEnd());
      cout << "Start time: " << start.GetDate()/10000 << "/" 
	   << (start.GetDate()/100)-(start.GetDate()/10000)*100 << "/" 
	   << start.GetDate()%100 << "   "
	   << start.GetTime()/10000 << ":"
	   << (start.GetTime()/100)-(start.GetTime()/10000)*100 << ":" 
	   << start.GetTime()%100 << endl;
      cout << "End time: " << end.GetDate()/10000 << "/" 
	   << (end.GetDate()/100)-(end.GetDate()/10000)*100 << "/" 
	   << end.GetDate()%100 << "   "
	   << end.GetTime()/10000 << ":"
	   << (end.GetTime()/100)-(end.GetTime()/10000)*100 << ":"
	   << end.GetTime()%100 << endl;
      cout << "Run type = " << grpObject->GetRunType().Data() << endl;
      runType = grpObject->GetRunType().Data();
    }

    // gain
    AliTRDCalDet *chamberGainFactor = 0;
    if(getCalibs) {
      entry = manager->Get("TRD/Calib/ChamberGainFactor", currRun, version, subVersion);
      if(entry) {
        entry->SetOwner(kFALSE);
        chamberGainFactor = (AliTRDCalDet*)entry->GetObject();
      }
    }
    AliTRDCalPad *padGainFactor = 0;
    if(getCalibs) {
      entry = manager->Get("TRD/Calib/LocalGainFactor", currRun, version, subVersion);
      if(entry) {
        entry->SetOwner(kFALSE);
        padGainFactor = (AliTRDCalPad*)entry->GetObject();
      }
    }
    Double_t runMeanGain, runRMSGain;
    TVectorD chamberMeanGain(AliTRDcalibDB::kNdet);
    TVectorD chamberRMSGain(AliTRDcalibDB::kNdet);
    TVectorD smMeanGain(AliTRDcalibDB::kNsector);
    TVectorD smRMSGain(AliTRDcalibDB::kNsector);
    for(Int_t iNdet=0; iNdet<AliTRDcalibDB::kNdet; iNdet++) {chamberMeanGain[iNdet] = 0.0; chamberRMSGain[iNdet] = 0.0;}
    for(Int_t iSm=0; iSm<AliTRDcalibDB::kNsector; iSm++) {smMeanGain[iSm] = 0.0; smRMSGain[iSm] = 0.0;}
    TString parName("Gain");
    if(getCalibs)
      ProcessTRDCalibArray(chamberGainFactor, padGainFactor, 
			   parName,
			   runMeanGain, runRMSGain,
			   chamberMeanGain, chamberRMSGain,
			   smMeanGain, smRMSGain);

    // noise/pedestals
    AliTRDCalDet *chamberNoise = 0;
    if(getCalibs) {
      entry = manager->Get("TRD/Calib/DetNoise", currRun, version, subVersion);
      if(entry) {
        entry->SetOwner(kFALSE);
        chamberNoise = (AliTRDCalDet*)entry->GetObject();
      }
    }
    AliTRDCalPad *padNoise = 0;
    if(getCalibs) {
      entry = manager->Get("TRD/Calib/PadNoise", currRun, version, subVersion);
      if(entry) {
        entry->SetOwner(kFALSE);
        padNoise = (AliTRDCalPad*)entry->GetObject();
      }
    }
    Double_t runMeanNoise, runRMSNoise;
    TVectorD chamberMeanNoise(AliTRDcalibDB::kNdet);
    TVectorD chamberRMSNoise(AliTRDcalibDB::kNdet);
    TVectorD smMeanNoise(AliTRDcalibDB::kNsector);
    TVectorD smRMSNoise(AliTRDcalibDB::kNsector);
    for(Int_t iNdet=0; iNdet<AliTRDcalibDB::kNdet; iNdet++) {chamberMeanNoise[iNdet] = 0.0; chamberRMSNoise[iNdet] = 0.0;}
    for(Int_t iSm=0; iSm<AliTRDcalibDB::kNsector; iSm++) {smMeanNoise[iSm] = 0.0; smRMSNoise[iSm] = 0.0;}
    parName = "Noise";
    if(getCalibs)
      ProcessTRDCalibArray(chamberNoise, padNoise, 
			   parName,
			   runMeanNoise, runRMSNoise,
			   chamberMeanNoise, chamberRMSNoise,
			   smMeanNoise, smRMSNoise);

    // vdrift
    AliTRDCalDet *chamberVdrift = 0;
    if(getCalibs) {
      entry = manager->Get("TRD/Calib/ChamberVdrift", currRun, version, subVersion);
      if(entry) {
        entry->SetOwner(kFALSE);
        chamberVdrift = (AliTRDCalDet*)entry->GetObject();
      }
    }
    AliTRDCalPad *padVdrift = 0;
    if(getCalibs) {
      entry = manager->Get("TRD/Calib/LocalVdrift", currRun, version, subVersion);
      if(entry) {
        entry->SetOwner(kFALSE);
        padVdrift = (AliTRDCalPad*)entry->GetObject();
      }
    }
    Double_t runMeanVdrift, runRMSVdrift;
    TVectorD chamberMeanVdrift(AliTRDcalibDB::kNdet);
    TVectorD chamberRMSVdrift(AliTRDcalibDB::kNdet);
    TVectorD smMeanVdrift(AliTRDcalibDB::kNsector);
    TVectorD smRMSVdrift(AliTRDcalibDB::kNsector);
    for(Int_t iNdet=0; iNdet<AliTRDcalibDB::kNdet; iNdet++) {chamberMeanVdrift[iNdet] = 0.0; chamberRMSVdrift[iNdet] = 0.0;}
    for(Int_t iSm=0; iSm<AliTRDcalibDB::kNsector; iSm++) {smMeanVdrift[iSm] = 0.0; smRMSVdrift[iSm] = 0.0;}
    parName = "Vdrift";
    if(getCalibs)
      ProcessTRDCalibArray(chamberVdrift, padVdrift, 
			   parName,
			   runMeanVdrift, runRMSVdrift,
			   chamberMeanVdrift, chamberRMSVdrift,
			   smMeanVdrift, smRMSVdrift);

    // T0
    AliTRDCalDet *chamberT0 = 0;
    if(getCalibs) {
      entry = manager->Get("TRD/Calib/ChamberT0", currRun, version, subVersion);
      if(entry) {
        entry->SetOwner(kFALSE);
        chamberT0 = (AliTRDCalDet*)entry->GetObject();
      }
    }
    AliTRDCalPad *padT0 = 0;
    if(getCalibs) {
      entry = manager->Get("TRD/Calib/LocalT0", currRun, version, subVersion);
      if(entry) {
        entry->SetOwner(kFALSE);
        padT0 = (AliTRDCalPad*)entry->GetObject();
      }
    }
    Double_t runMeanT0, runRMST0;
    TVectorD chamberMeanT0(AliTRDcalibDB::kNdet);
    TVectorD chamberRMST0(AliTRDcalibDB::kNdet);
    TVectorD smMeanT0(AliTRDcalibDB::kNsector);
    TVectorD smRMST0(AliTRDcalibDB::kNsector);
    for(Int_t iNdet=0; iNdet<AliTRDcalibDB::kNdet; iNdet++) {chamberMeanT0[iNdet] = 0.0; chamberRMST0[iNdet] = 0.0;}
    for(Int_t iSm=0; iSm<AliTRDcalibDB::kNsector; iSm++) {smMeanT0[iSm] = 0.0; smRMST0[iSm] = 0.0;}
    parName = "T0";
    if(getCalibs)
      ProcessTRDCalibArray(chamberT0, padT0, 
			   parName,
			   runMeanT0, runRMST0,
			   chamberMeanT0, chamberRMST0,
			   smMeanT0, smRMST0);

    // status
    AliTRDCalChamberStatus* chamberStatus = 0;
    if(getCalibs) {
      entry = manager->Get("TRD/Calib/ChamberStatus", currRun, version, subVersion);
      if(entry) {
        entry->SetOwner(kFALSE);
        chamberStatus = (AliTRDCalChamberStatus*)entry->GetObject();
      }
    }
    AliTRDCalPadStatus *padStatus = 0;
    if(getCalibs) {
      entry = manager->Get("TRD/Calib/PadStatus", currRun, version, subVersion);
      if(entry) {
        entry->SetOwner(kFALSE);
        padStatus = (AliTRDCalPadStatus*)entry->GetObject();
      }
    }

    // DCS FEE information
    TObjArray *dcsArray = 0;
    if(getDCS) {
      entry = manager->Get("TRD/Calib/DCS");
      if(entry) {
        entry->SetOwner(kTRUE);
        dcsArray = (TObjArray*)entry->GetObject();
      }
    }
    AliTRDCalDCSv2 *dcsSOR = 0;
    AliTRDCalDCSv2 *dcsEOR = 0;
    if(getDCS && dcsArray) {
      dcsSOR = (AliTRDCalDCSv2*)dcsArray->At(0);
      dcsEOR = (AliTRDCalDCSv2*)dcsArray->At(1);
    }

    // Alignment information
    // get the geometry from OCDB
    TGeoManager *geoMan = 0x0;
    if(getAlign) {
      entry=manager->Get("GRP/Geometry/Data");
      if(entry)
        geoMan=(TGeoManager*)entry->GetObject();
      else
        cout << "Cannot get an entry for the geometry storage" << endl;
    }
    // get the alignment from OCDB
    AliTRDalignment *alignMan=0;
    if(getAlign && geoMan) {
      entry=manager->Get("TRD/Align/Data", currRun, version, subVersion);
      if(entry) {
        alignMan = new AliTRDalignment();
        cout << "storage for alignment = " << manager->GetDefaultStorage()->GetURI().Data() << endl;
        alignMan->ReadDB(manager->GetDefaultStorage()->GetURI().Data(), "TRD/Align/Data", currRun, version, subVersion);
      }
      else {
        cout << "Cannot get an entry for the alignment info" << endl;
      }
    }

    Int_t kSuperModuleStatus[18] = {1, 1, 0, 0, 0, 0,     // super module status (1- installed, 0- not installed)
				    0, 1, 1, 1, 1, 0, 
				    0, 0, 0, 0, 0, 1};
    Int_t kNRows[ 5] = {16, 16, 12, 16, 16};  // number of pad rows in the chambers from each of the 5 stacks
    Int_t kNCols = 144;          // number of pad columns in the chambers from each of the 18 supermodules
    Int_t kROB[5] = {8, 8, 6, 8, 8};   // number of read out boards(ROB) per chamber (6 in stack 2 and 8 in the rest)
    Int_t kMCM = 16;                   // number of MCMs per ROB
    for(Short_t iLayer=0; iLayer<AliTRDgeometry::kNlayer; iLayer++) {   // loop over layers
      for(Short_t iSector=0; iSector<AliTRDgeometry::kNsector; iSector++) {  // loop over supermodules
	if(kSuperModuleStatus[iSector]==0) 
	  continue;
	Double_t alignSMPars[6];
        for(Int_t ipar=0; ipar<6; ipar++) alignSMPars[ipar]=0.0;
        if(getAlign && alignMan)
	  alignMan->GetSm(iSector, alignSMPars);
	for(Short_t iStack=0; iStack<AliTRDgeometry::kNstack; iStack++) {    // loop over stacks
	  Short_t chamberNo = AliTRDgeometry::GetDetector(iLayer, iStack, iSector);
	  AliTRDCalROC *gainROC = 0;
	  if(padGainFactor) gainROC = padGainFactor->GetCalROC(chamberNo);
	  AliTRDCalROC *noiseROC = 0;
	  if(padNoise) noiseROC = padNoise->GetCalROC(chamberNo);
	  AliTRDCalROC *vdriftROC = 0;
	  if(padVdrift) vdriftROC = padVdrift->GetCalROC(chamberNo);
	  AliTRDCalROC *t0ROC = 0;
	  if(t0ROC) t0ROC = padT0->GetCalROC(chamberNo);
	  AliTRDCalSingleChamberStatus *statusROC = 0;
	  if(padStatus) statusROC = padStatus->GetCalROC(chamberNo);
	  TVectorD channelVector(kNRows[iStack]*kNCols);
	  TVectorD rowVector(kNRows[iStack]*kNCols);
	  TVectorD colVector(kNRows[iStack]*kNCols);
	  TVectorD statusVector(kNRows[iStack]*kNCols);
	  TVectorD gainVector(kNRows[iStack]*kNCols);
	  TVectorD noiseVector(kNRows[iStack]*kNCols);
	  TVectorD vdriftVector(kNRows[iStack]*kNCols);
	  TVectorD t0Vector(kNRows[iStack]*kNCols);
	  TVectorD padSuperRowVector(kNRows[iStack]*kNCols);
	  TVectorD padSuperColumnVector(kNRows[iStack]*kNCols);
          for(Int_t ipar=0; ipar<kNRows[iStack]*kNCols; ipar++) {
            channelVector[ipar] = 0; rowVector[ipar] = 0; colVector[ipar] = 0; 
            statusVector[ipar] = 0; gainVector[ipar] = 0; noiseVector[ipar] = 0; 
            vdriftVector[ipar] = 0; t0Vector[ipar] = 0; padSuperRowVector[ipar] = 0; 
            padSuperColumnVector[ipar] = 0;
          }
	  Int_t index = 0;
	  if(getCalibs) {
            for(Short_t iRow=0; iRow<kNRows[iStack]; iRow++) {   // loop over pad rows
	      for(Short_t iCol=0; iCol<kNCols; iCol++) {    // loop over pad columns
	        Short_t padSuperRow = iRow;
	        for(Int_t i=0; i<iStack; i++) padSuperRow = padSuperRow + kNRows[i]; 
	        padSuperRowVector[index] = padSuperRow;
	        Short_t padSuperColumn = iCol;
	        for(Int_t i=0; i<iSector; i++) padSuperColumn = padSuperColumn + kNCols;
	        padSuperColumnVector[index] = padSuperColumn;
	        Short_t channelNo = -1;
	        Float_t gain = -99.;
	        if(gainROC && chamberGainFactor) {
		  channelNo = gainROC->GetChannel(iCol, iRow);
		  gain = chamberGainFactor->GetValue(chamberNo) * gainROC->GetValue(iCol, iRow);
	        }
	        Float_t noise = -99.;
	        if(noiseROC && chamberNoise)
		  noise = chamberNoise->GetValue(chamberNo) * noiseROC->GetValue(iCol, iRow);
	        Float_t vdrift = -99.;
	        if(vdriftROC && chamberVdrift)
		  vdrift = chamberVdrift->GetValue(chamberNo) * vdriftROC->GetValue(iCol, iRow);
	        Float_t t0 = -99.;
	        if(t0ROC && chamberT0)
		  t0 = chamberT0->GetValue(chamberNo) + t0ROC->GetValue(iCol, iRow);
	        Int_t status = -99;
	        if(statusROC)
		  status = statusROC->GetStatus(iCol, iRow);
	        channelVector[index] = channelNo;
	        rowVector[index] = iRow;
	        colVector[index] = iCol;
	        statusVector[index] = status;
	        gainVector[index] = gain;
	        noiseVector[index] = noise;
	        vdriftVector[index] = vdrift;
	        t0Vector[index] = t0;
	        index++;
	      }  // end loop over pad columns
	    }  // end loop over pad rows
          }   // end if(getCalibs)

	  // get the dcs information
	  AliTRDCalDCSFEEv2 *dcsfeeSOR = 0;
	  AliTRDCalDCSFEEv2 *dcsfeeEOR = 0;
          if(getDCS) {
	    if(dcsSOR) dcsfeeSOR = dcsSOR->GetCalDCSFEEObj(chamberNo);
	    if(dcsEOR) dcsfeeEOR = dcsEOR->GetCalDCSFEEObj(chamberNo);
          }
          
	  Bool_t sorAndEor = kFALSE;
	  if(getDCS && dcsfeeSOR && dcsfeeEOR) sorAndEor = kTRUE;
	  if(getDCS && !dcsfeeSOR && dcsfeeEOR) dcsfeeSOR = dcsfeeEOR;
	  TVectorD robVector(kROB[iStack]*kMCM);
	  TVectorD mcmVector(kROB[iStack]*kMCM);
	  TVectorD sorandeorVector(kROB[iStack]*kMCM);
	  TVectorD gsmSorVector(kROB[iStack]*kMCM);
	  TVectorD gsmDeltaVector(kROB[iStack]*kMCM);
	  TVectorD nimSorVector(kROB[iStack]*kMCM);
	  TVectorD nimDeltaVector(kROB[iStack]*kMCM);
	  TVectorD nevSorVector(kROB[iStack]*kMCM);
	  TVectorD nevDeltaVector(kROB[iStack]*kMCM);
	  TVectorD nptSorVector(kROB[iStack]*kMCM);
	  TVectorD nptDeltaVector(kROB[iStack]*kMCM);
	  TVectorD mcmSuperRowVector(kROB[iStack]*kMCM);
	  TVectorD mcmSuperColumnVector(kROB[iStack]*kMCM);
          for(Int_t ipar=0; ipar<kROB[iStack]*kMCM; ipar++) {
            robVector[ipar] = 0; mcmVector[ipar] = 0; sorandeorVector[ipar] = 0; 
            gsmSorVector[ipar] = 0; gsmDeltaVector[ipar] = 0; nimSorVector[ipar] = 0; 
            nimDeltaVector[ipar] = 0; nevSorVector[ipar] = 0; nevDeltaVector[ipar] = 0; 
            nptSorVector[ipar] = 0; nptDeltaVector[ipar] = 0; mcmSuperRowVector[ipar] = 0; 
            mcmSuperColumnVector[ipar] = 0;
          }

	  Int_t robsRowDirection = kNRows[iStack]/4;    // 4 or 3 ROBs per chamber in row direction
	  Int_t index1 = 0; 
          if(getDCS && (dcsfeeSOR || dcsfeeEOR) && dcsfeeSOR->GetStatusBit()==0) {
	    for(Int_t iROB=0; iROB<kROB[iStack]; iROB++) { // loop over ROBs
	      for(Int_t iMCM=0; iMCM<kMCM; iMCM++) {  // loop over MCMs
	        Short_t superRowMCM = iMCM%4;            // 4 MCMs per ROB in row direction
	        superRowMCM += 4*(iROB%robsRowDirection);   // now we have the row of this MCM inside one chamber
	        for(Int_t kk=0; kk<iStack; kk++) superRowMCM += kNRows[kk];   // add number of rows in previous stacks
	        Short_t superColumnMCM = iMCM/4;        // 4 MCMs per ROB in column direction
	        superColumnMCM += 4*(iROB/robsRowDirection);    // should yield 0 or 1 (2 ROBs per chamber in col direction)
	        superColumnMCM += iSector*8;
	        mcmSuperRowVector[index1] = superRowMCM;
	        mcmSuperColumnVector[index1] = superColumnMCM;
	        Int_t gsm = dcsfeeSOR->GetMCMGlobalState(iROB, iMCM);
	        Int_t nim = dcsfeeSOR->GetMCMStateNI(iROB, iMCM);
	        Int_t nev = dcsfeeSOR->GetMCMEventCnt(iROB, iMCM);
	        Int_t npt = dcsfeeSOR->GetMCMPtCnt(iROB, iMCM);
	        Int_t dgsm = -100000;
	        Int_t dnim = -100000;
	        Int_t dnev = -100000;
	        Int_t dnpt = -100000;
	        if(sorAndEor) {
		  dgsm = gsm - dcsfeeEOR->GetMCMGlobalState(iROB, iMCM);
		  dnim = nim - dcsfeeEOR->GetMCMStateNI(iROB, iMCM);
		  dnev = nev - dcsfeeEOR->GetMCMEventCnt(iROB, iMCM);
		  dnpt = npt - dcsfeeEOR->GetMCMPtCnt(iROB, iMCM);
		  if(gsm==-1 && dgsm==0) dgsm = -100000;
		  if(nim==-1 && dnim==0) dnim = -100000;
		  if(nev==-1 && dnev==0) dnev = -100000;
		  if(npt==-1 && dnpt==0) dnpt = -100000;
	        }
	        robVector[index1] = iROB;
	        mcmVector[index1] = iMCM;
	        sorandeorVector[index1] = sorAndEor;
	        gsmSorVector[index1] = gsm;
	        gsmDeltaVector[index1] = dgsm;
	        nimSorVector[index1] = nim;
	        nimDeltaVector[index1] = dnim;
	        nevSorVector[index1] = nev;
	        nevDeltaVector[index1] = dnev;
	        nptSorVector[index1] = npt;
	        nptDeltaVector[index1] = dnpt;
	        index1++;
	      }  // end loop over MCMs
	    }  // end loop over ROBs
          }  // end if(getDCS ...)

	  Double_t alignChamberPars[6];
          for(Int_t ipar=0; ipar<6; ipar++) alignChamberPars[ipar]=0;
          if(getAlign && alignMan)
	    alignMan->GetCh(chamberNo, alignChamberPars);

	  (*treeStreamer)<< "TRDcalibDetails"
			 << "run=" << currRun
			 << "SuperModule=" << iSector
			 << "Stack=" << iStack
                         << "Layer=" << iLayer
			 << "Chamber=" << chamberNo;
          if(getAlign)
            (*treeStreamer)<< "TRDcalibDetails"
			   << "Align_SM_ShiftRphi=" << alignSMPars[0]
			   << "Align_SM_ShiftZ=" << alignSMPars[1]
			   << "Align_SM_ShiftR=" << alignSMPars[2]
			   << "Align_SM_RotRphi=" << alignSMPars[3]
			   << "Align_SM_RotZ=" << alignSMPars[4]
			   << "Align_SM_RotR=" << alignSMPars[5]
			   << "Align_Ch_ShiftRphi=" << alignChamberPars[0]
			   << "Align_Ch_ShiftZ=" << alignChamberPars[1]
			   << "Align_Ch_ShiftR=" << alignChamberPars[2]
			   << "Align_Ch_RotRphi=" << alignChamberPars[3]
			   << "Align_Ch_RotZ=" << alignChamberPars[4]
			   << "Align_Ch_RotR=" << alignChamberPars[5];
          if(getCalibs)
            (*treeStreamer)<< "TRDcalibDetails"
			   << "Gain_Mean_Run=" << runMeanGain
			   << "Gain_RMS_Run=" << runRMSGain
			   << "Gain_Mean_SuperModule=" << smMeanGain[iSector]
			   << "Gain_RMS_SuperModule=" << smRMSGain[iSector]
			   << "Gain_Mean_Chamber=" << chamberMeanGain[chamberNo]
			   << "Gain_RMS_Chamber=" << chamberRMSGain[chamberNo]
			   << "Noise_Mean_Run=" << runMeanNoise
			   << "Noise_RMS_Run=" << runRMSNoise
			   << "Noise_Mean_SuperModule=" << smMeanNoise[iSector]
			   << "Noise_RMS_SuperModule=" << smRMSNoise[iSector]
			   << "Noise_Mean_Chamber=" << chamberMeanNoise[chamberNo]
			   << "Noise_RMS_Chamber=" << chamberRMSNoise[chamberNo]
			   << "Vdrift_Mean_Run=" << runMeanVdrift
			   << "Vdrift_RMS_Run=" << runRMSVdrift
			   << "Vdrift_Mean_SuperModule=" << smMeanVdrift[iSector]
			   << "Vdrift_RMS_SuperModule=" << smRMSVdrift[iSector]
			   << "Vdrift_Mean_Chamber=" << chamberMeanVdrift[chamberNo]
			   << "Vdrift_RMS_Chamber=" << chamberRMSVdrift[chamberNo]
			   << "T0_Mean_Run=" << runMeanT0
			   << "T0_RMS_Run=" << runRMST0
			   << "T0_Mean_SuperModule=" << smMeanT0[iSector]
			   << "T0_RMS_SuperModule=" << smRMST0[iSector]
			   << "T0_Mean_Chamber=" << chamberMeanT0[chamberNo]
			   << "T0_RMS_Chamber=" << chamberRMST0[chamberNo]
                           << "Channel.=" << &channelVector
			   << "Row.=" << &rowVector
			   << "Column.=" << &colVector
			   << "PadSuperRow.=" << &padSuperRowVector
			   << "PadSuperColumn.=" << &padSuperColumnVector
			   << "Status.=" << &statusVector
			   << "Gain.=" << &gainVector
			   << "Noise.=" << &noiseVector
			   << "Vdrift.=" << &vdriftVector
			   << "T0.=" << &t0Vector;
          if(getDCS)
	    (*treeStreamer)<< "TRDcalibDetails"
			   << "ROB.=" << &robVector
			   << "MCM.=" << &mcmVector
			   << "MCMSuperRow.=" << &mcmSuperRowVector
			   << "MCMSuperColumn.=" << &mcmSuperColumnVector
			   << "SORandEOR.=" << &sorandeorVector
			   << "gsmSOR.=" << &gsmSorVector
			   << "gsmDelta.=" << &gsmDeltaVector
			   << "nimSOR.=" << &nimSorVector
			   << "nimDelta.=" << &nimDeltaVector
			   << "nevSOR.=" << &nevSorVector
			   << "nevDelta.=" << &nevDeltaVector
			   << "nptSOR.=" << &nptSorVector
			   << "nptDelta.=" << &nptDeltaVector;
          (*treeStreamer)<< "TRDcalibDetails"
			 << "\n";
	}  // end loop over stacks
      }  // end loop over supermodules
    }  // end loop over layers
    
    // add the run number to the list of runs
    runs.ResizeTo(runs.GetNoElements()+1);
    runs[runs.GetNoElements()-1] = currRun;
    
    // do cleaning
    if(chamberGainFactor) delete chamberGainFactor;
    if(padGainFactor) delete padGainFactor;
    if(chamberNoise) delete chamberNoise;
    if(padNoise) delete padNoise;
    if(chamberVdrift) delete chamberVdrift;
    if(padVdrift) delete padVdrift;
    if(chamberT0) delete chamberT0;
    if(padT0) delete padT0;
    if(chamberStatus) delete chamberStatus;
    if(padStatus) delete padStatus;

    // check if we still have run numbers in the file or provided range
    if(runListFilename[0]=='\0' && firstRun!=-1 && lastRun!=-1) {
      currRun++;
      if(currRun>lastRun) break;
    }
    if(runListFilename[0]!='\0' && in.eof())
      break;
  }   // end loop over runs

  treeStreamer->GetFile()->cd();
  runs.Write("runs");
  delete treeStreamer;
  return kTRUE;
  //  delete treeStreamerDCS;
}

//_________________________________________________________________________
void AliTRDCalibViewer::DumpCalibToTree(const Char_t* inFilename, const Char_t* outFilename)
{
  //
  //  extract info from CalPad objects and dump them into a tree to be viewed
  //
  TTreeSRedirector *treeStreamer = new TTreeSRedirector(outFilename);
  //open file and retrieve list of calPad objects
  TFile f(inFilename);
  TList *l=(TList*)f.GetListOfKeys();

  TObjArray arrCalPads;
  TObjArray arrSMmean;
  TObjArray arrSMrms;
  arrCalPads.SetOwner();
  arrSMmean.SetOwner();
  arrSMrms.SetOwner();

  TIter next(l);
  TKey *k=0x0;
  while ( (k=(TKey*)next()) ){
    AliTRDCalPad *pad=dynamic_cast<AliTRDCalPad*>(k->ReadObj());
    if (!pad) continue;
    arrCalPads.Add(pad);

    TVectorD *smMean=new TVectorD(AliTRDcalibDB::kNsector);
    TVectorD *smRMS=new TVectorD(AliTRDcalibDB::kNsector);

    arrSMmean.Add(smMean);
    arrSMrms.Add(smRMS);

    ProcessTRDCalibArray(pad, *smMean, *smRMS);
  }

  Int_t kSuperModuleStatus[18] = {1, 1, 0, 0, 0, 0,     // super module status (1- installed, 0- not installed)
      0, 1, 1, 1, 1, 0,
      0, 0, 0, 0, 0, 1};

  AliTRDgeometry trdGeom;
  Int_t kNRows[5] = {16, 16, 12, 16, 16};  // number of pad rows in the chambers from each of the 5 stacks
  
  for(Short_t iLayer=0; iLayer<AliTRDgeometry::kNlayer; iLayer++) {   // loop over layers
    for(Short_t iSM=0; iSM<AliTRDgeometry::kNsector; iSM++) {  // loop over supermodules
      if(kSuperModuleStatus[iSM]==0)
        continue;
      
      for(Short_t iStack=0; iStack<AliTRDgeometry::kNstack; iStack++) {    // loop over stacks
        AliTRDpadPlane &plane=*trdGeom.GetPadPlane(iLayer, iStack);

        Short_t chamberNo = AliTRDgeometry::GetDetector(iLayer, iStack, iSM);
        const Int_t nrows=plane.GetNrows();
        const Int_t ncols=plane.GetNcols();
        const Int_t nchannels=nrows*ncols;
//         printf("chamberNo: %d (%03d-%03d-%03d)\n", chamberNo,nrows,ncols,nchannels);
        
        TVectorD channelVector(nchannels);
        TVectorD rowVector(nchannels);
        TVectorD colVector(nchannels);
        
        TVectorD gxVector(nchannels);
        TVectorD gyVector(nchannels);
        TVectorD gzVector(nchannels);
        
        TVectorD padSuperRowVector(nchannels);
        TVectorD padSuperColumnVector(nchannels);
        
        Int_t index = 0;
        for(Short_t iRow=0; iRow<nrows; iRow++) {   // loop over pad rows
          for(Short_t iCol=0; iCol<ncols; iCol++) {    // loop over pad columns
            Short_t padSuperRow = iRow;
            for(Int_t i=0; i<iStack; i++) padSuperRow = padSuperRow + kNRows[i];
            padSuperRowVector.GetMatrixArray()[index] = padSuperRow;
            
            Short_t padSuperColumn = iCol;
            for(Int_t i=0; i<iSM; i++) padSuperColumn = padSuperColumn + ncols;
            padSuperColumnVector.GetMatrixArray()[index] = padSuperColumn;
            
            rowVector.GetMatrixArray()[index] = iRow;
            colVector.GetMatrixArray()[index] = iCol;
            
            index++;
          }  // end loop over pad columns
        }  // end loop over pad rows
        
        (*treeStreamer)<< "TRDcalibDetails"
          << "SuperModule=" << iSM
          << "Stack=" << iStack
          << "Layer=" << iLayer
          << "Chamber=" << chamberNo
            //geographical information
          << "Channel.=" << &channelVector
          << "Row.=" << &rowVector
          << "Column.=" << &colVector
          << "PadSuperRow.=" << &padSuperRowVector
          << "PadSuperColumn.=" << &padSuperColumnVector;
//          << "gx.=" << &gxVector
//          << "gy.=" << &gyVector
//          << "gz.=" << &gzVector;
          
        //
        // pad calibrations
        //
        TObjArray arrTrash;
        arrTrash.SetOwner();
        Int_t ncalib=arrCalPads.GetEntriesFast();
        for (Int_t iCalib=0; iCalib<ncalib; ++iCalib){
          AliTRDCalPad *pad=(AliTRDCalPad*)arrCalPads.UncheckedAt(iCalib);
          AliTRDCalROC *calROC=pad->GetCalROC(chamberNo);
          
          TVectorD &smMean=*((TVectorD*)arrSMmean.UncheckedAt(iCalib));
          TVectorD &smRMS=*((TVectorD*)arrSMrms.UncheckedAt(iCalib));
          
          TString calibName=pad->GetName();
          
          TVectorD *valueVector=new TVectorD(nchannels);
          arrTrash.Add(valueVector);
          
          Double_t rocMean=0;
          Double_t rocRMS=0;
          Double_t rocMedian=0;
          
          if (calROC){
            Int_t index2 = 0;
            for(Short_t iRow=0; iRow<nrows; iRow++) {
              for(Short_t iCol=0; iCol<ncols; iCol++) {
                valueVector->GetMatrixArray()[index2] = calROC->GetValue(iCol,iRow);
                index2++;
              }
            }
            rocMean   = calROC->GetMean();
            rocRMS    = calROC->GetRMS();
            rocMedian = calROC->GetMedian();
            //check for NaN
            if ( !(rocMean<1e30) ) rocMean=0;
            if ( !(rocRMS<1e30) ) rocRMS=0;
            
//             printf("mean:   %f\n",rocMean);
//             printf("rms:    %f\n",rocRMS);
//             printf("median: %f\n",rocMedian);
          }
          
          (*treeStreamer)<< "TRDcalibDetails"
            // statistical information
            << (Char_t*)((calibName+"_Mean_SuperModule=").Data()) << smMean[iSM]
            << (Char_t*)((calibName+"_RMS_SuperModule=").Data())  << smRMS[iSM]
            << (Char_t*)((calibName+"_Mean_Chamber=").Data())     << rocMean
            << (Char_t*)((calibName+"_RMS_Chamber=").Data())      << rocRMS
            << (Char_t*)((calibName+"_Median_Chamber=").Data())   << rocMedian
            //pad by pad information
            << (Char_t*)((calibName+".=").Data()) << valueVector;
          
        }   // end loop over calib objects
        
        (*treeStreamer)<< "TRDcalibDetails"
          << "\n";
        arrTrash.Delete();
      }  // end loop over stacks
    }  // end loop over supermodules
  }  // end loop over layers
  delete treeStreamer;
}

//_____________________________________________________________________________
void AliTRDCalibViewer::ProcessTRDCalibArray(AliTRDCalDet* chamberCalib, AliTRDCalPad *padCalib,
					     TString parName,
					     Double_t &runValue, Double_t &runRMS,
					     TVectorD &chamberValues, TVectorD &chamberValuesRMS,
					     TVectorD &superModuleValues, TVectorD &superModuleValuesRMS) {
  // Process the calibrations for a given run.
  // Calculates the run and chamber wise averages
  //
  if(!chamberCalib) return;
  if(!padCalib) return;
  Int_t kSuperModuleStatus[18] = {1, 1, 0, 0, 0, 0,     // super module status (1- installed, 0- not installed)
				  0, 1, 1, 1, 1, 0, 
				  0, 0, 0, 0, 0, 1};

  // initialize the histograms used for extracting the mean and RMS
  TH1F *runWiseHisto = new TH1F("runHisto", "runHisto", 200, -10.0, 10.0);
  TH1F *superModuleWiseHisto = new TH1F("smHisto", "smHisto", 200, -10.0, 10.0);
  TH1F *chamberWiseHisto = new TH1F("chamberHisto", "chamberHisto", 200, -10.0, 10.0);

  // check if the calibration parameter is multiplicative or additive
  Bool_t multiplicative = kTRUE;
  if(!parName.CompareTo("T0")) multiplicative = kFALSE;

  // first iteration (calculate all averages and RMS without discrimination on the SM average)
  runWiseHisto->Reset();
  for(Int_t iSM = 0; iSM<AliTRDcalibDB::kNsector; iSM++) {   // loop over supermodules
    // reset the super module histogram
    superModuleWiseHisto->Reset();
    // check if SM is installed
    if(!kSuperModuleStatus[iSM]) continue;
    for(Int_t iChamber=iSM*AliTRDcalibDB::kNstack*AliTRDcalibDB::kNlayer; 
	iChamber < (iSM+1)*AliTRDcalibDB::kNstack*AliTRDcalibDB::kNlayer; 
	iChamber++) {  // loop over chambers in this supermodule
      // get the chamber value
      Float_t chamberValue = chamberCalib->GetValue(iChamber);
      // get the ROC object
      AliTRDCalROC *chamberROC = padCalib->GetCalROC(iChamber);
      if(!chamberROC) 
	continue;
      chamberWiseHisto->Reset();
      for(Int_t iChannel = 0; iChannel < chamberROC->GetNchannels(); iChannel++){ // loop over channels
	// calculate the calibration parameter for this pad
	Float_t padValue;
	if(multiplicative)
	  padValue = chamberValue * chamberROC->GetValue(iChannel);
	else
	  padValue = chamberValue + chamberROC->GetValue(iChannel);
	// fill the run, SM and chamber wise histograms
	chamberWiseHisto->Fill(padValue);
	// if the parameter is Noise then check if the pad value is not a default one
	// Default value is now 1.2!!!! Check with Raphaelle for more informations
	if(parName.Contains("Noise") &&
	   TMath::Abs(padValue-1.2)<0.00001) continue;
	superModuleWiseHisto->Fill(padValue);
	runWiseHisto->Fill(padValue);
      }  // end loop over channels
      // get the chamber wise mean and RMS
      chamberValues[iChamber] = chamberWiseHisto->GetMean();
      chamberValuesRMS[iChamber] = chamberWiseHisto->GetRMS();
    }  // end loop over chambers
    // SM wise mean and RMS
    superModuleValues[iSM] = superModuleWiseHisto->GetMean();
    superModuleValuesRMS[iSM] = superModuleWiseHisto->GetRMS();
  }  // end loop over supermodules
  // run wise mean and RMS
  runValue = runWiseHisto->GetMean();
  runRMS = runWiseHisto->GetRMS();

  // Noise and Gain are finished processing
  if(parName.Contains("Noise") || parName.Contains("Gain"))
    return;
  // second iteration (calculate SM and run wise averages and RMS for Vdrift and T0)
  // The pads with calib parameter equal to the SM average are discarded (default value)
  runWiseHisto->Reset();
  for(Int_t iSM = 0; iSM<AliTRDcalibDB::kNsector; iSM++) {   // loop over supermodules
    superModuleWiseHisto->Reset();
    // eliminate the uninstalled super modules
    if(!kSuperModuleStatus[iSM]) continue;
    for(Int_t iChamber=iSM*AliTRDcalibDB::kNstack*AliTRDcalibDB::kNlayer; 
	iChamber < (iSM+1)*AliTRDcalibDB::kNstack*AliTRDcalibDB::kNlayer; 
	iChamber++) {  // loop over chambers
      // the chamber value
      Float_t chamberValue = chamberCalib->GetValue(iChamber);
      AliTRDCalROC *chamberROC = padCalib->GetCalROC(iChamber);
      if(!chamberROC) 
	continue;
      
      for(Int_t iChannel = 0; iChannel < chamberROC->GetNchannels(); iChannel++){ // loop over channels in a chamber
	// get the pad value
	Float_t padValue;
	if(multiplicative)
	  padValue = chamberValue * chamberROC->GetValue(iChannel);
	else
	  padValue = chamberValue + chamberROC->GetValue(iChannel);
	// eliminate from the average and RMS calculation all pads which
	// have the calib parameter equal with the SM average
	if((parName.Contains("Vdrift") || parName.Contains("T0")) && 
	   TMath::Abs(padValue-superModuleValues[iSM])<0.00001) continue;
	superModuleWiseHisto->Fill(padValue);
	runWiseHisto->Fill(padValue);
      }   // end loop over channels
    }   // end loop over chambers 
    
    superModuleValues[iSM] = superModuleWiseHisto->GetMean();
    superModuleValuesRMS[iSM] = superModuleWiseHisto->GetRMS();
  }   // end loop over super modules
  runValue = runWiseHisto->GetMean();
  runRMS = runWiseHisto->GetRMS();

  delete chamberWiseHisto;
  delete superModuleWiseHisto;
  delete runWiseHisto;

  return;
}


//_____________________________________________________________________________
void AliTRDCalibViewer::ProcessTRDCalibArray(AliTRDCalPad *padCalib,
                        	             TVectorD &superModuleValues, TVectorD &superModuleValuesRMS)
{
// Process the calibrations for a given run.
// Calculates the run and chamber wise averages
  
  if(!padCalib) return;
  Int_t kSuperModuleStatus[18] = {1, 1, 0, 0, 0, 0,     // super module status (1- installed, 0- not installed)
      0, 1, 1, 1, 1, 0,
      0, 0, 0, 0, 0, 1};

  for(Int_t iSM = 0; iSM<AliTRDcalibDB::kNsector; iSM++) {   // loop over supermodules
    Double_t mean=0;
    Double_t rms=0;
    Double_t count=0;
    if(!kSuperModuleStatus[iSM]) continue;

    // loop over chambers in this supermodule
    const Int_t nchambers=AliTRDcalibDB::kNstack*AliTRDcalibDB::kNlayer;
    for(Int_t iChamber=iSM*nchambers; iChamber < (iSM+1)*nchambers; iChamber++) {
      AliTRDCalROC *chamberROC = padCalib->GetCalROC(iChamber);
      if(!chamberROC)
        continue;

      // loop over channels
      for(Int_t iChannel = 0; iChannel < chamberROC->GetNchannels(); iChannel++){ 
        mean+=chamberROC->GetValue(iChannel);
        rms+=chamberROC->GetValue(iChannel)*chamberROC->GetValue(iChannel);
        ++count;
      }  // end loop over channels
    }  // end loop over chambers

    //calculate mean and rms
    if (count>0){
      mean/=count;
      rms/=count;
      rms=TMath::Sqrt(TMath::Abs(mean*mean-rms));
    }
    // SM wise mean and RMS
    superModuleValues[iSM]    = mean;
    superModuleValuesRMS[iSM] = rms;
  }  // end loop over supermodules
}
 AliTRDCalibViewer.cxx:1
 AliTRDCalibViewer.cxx:2
 AliTRDCalibViewer.cxx:3
 AliTRDCalibViewer.cxx:4
 AliTRDCalibViewer.cxx:5
 AliTRDCalibViewer.cxx:6
 AliTRDCalibViewer.cxx:7
 AliTRDCalibViewer.cxx:8
 AliTRDCalibViewer.cxx:9
 AliTRDCalibViewer.cxx:10
 AliTRDCalibViewer.cxx:11
 AliTRDCalibViewer.cxx:12
 AliTRDCalibViewer.cxx:13
 AliTRDCalibViewer.cxx:14
 AliTRDCalibViewer.cxx:15
 AliTRDCalibViewer.cxx:16
 AliTRDCalibViewer.cxx:17
 AliTRDCalibViewer.cxx:18
 AliTRDCalibViewer.cxx:19
 AliTRDCalibViewer.cxx:20
 AliTRDCalibViewer.cxx:21
 AliTRDCalibViewer.cxx:22
 AliTRDCalibViewer.cxx:23
 AliTRDCalibViewer.cxx:24
 AliTRDCalibViewer.cxx:25
 AliTRDCalibViewer.cxx:26
 AliTRDCalibViewer.cxx:27
 AliTRDCalibViewer.cxx:28
 AliTRDCalibViewer.cxx:29
 AliTRDCalibViewer.cxx:30
 AliTRDCalibViewer.cxx:31
 AliTRDCalibViewer.cxx:32
 AliTRDCalibViewer.cxx:33
 AliTRDCalibViewer.cxx:34
 AliTRDCalibViewer.cxx:35
 AliTRDCalibViewer.cxx:36
 AliTRDCalibViewer.cxx:37
 AliTRDCalibViewer.cxx:38
 AliTRDCalibViewer.cxx:39
 AliTRDCalibViewer.cxx:40
 AliTRDCalibViewer.cxx:41
 AliTRDCalibViewer.cxx:42
 AliTRDCalibViewer.cxx:43
 AliTRDCalibViewer.cxx:44
 AliTRDCalibViewer.cxx:45
 AliTRDCalibViewer.cxx:46
 AliTRDCalibViewer.cxx:47
 AliTRDCalibViewer.cxx:48
 AliTRDCalibViewer.cxx:49
 AliTRDCalibViewer.cxx:50
 AliTRDCalibViewer.cxx:51
 AliTRDCalibViewer.cxx:52
 AliTRDCalibViewer.cxx:53
 AliTRDCalibViewer.cxx:54
 AliTRDCalibViewer.cxx:55
 AliTRDCalibViewer.cxx:56
 AliTRDCalibViewer.cxx:57
 AliTRDCalibViewer.cxx:58
 AliTRDCalibViewer.cxx:59
 AliTRDCalibViewer.cxx:60
 AliTRDCalibViewer.cxx:61
 AliTRDCalibViewer.cxx:62
 AliTRDCalibViewer.cxx:63
 AliTRDCalibViewer.cxx:64
 AliTRDCalibViewer.cxx:65
 AliTRDCalibViewer.cxx:66
 AliTRDCalibViewer.cxx:67
 AliTRDCalibViewer.cxx:68
 AliTRDCalibViewer.cxx:69
 AliTRDCalibViewer.cxx:70
 AliTRDCalibViewer.cxx:71
 AliTRDCalibViewer.cxx:72
 AliTRDCalibViewer.cxx:73
 AliTRDCalibViewer.cxx:74
 AliTRDCalibViewer.cxx:75
 AliTRDCalibViewer.cxx:76
 AliTRDCalibViewer.cxx:77
 AliTRDCalibViewer.cxx:78
 AliTRDCalibViewer.cxx:79
 AliTRDCalibViewer.cxx:80
 AliTRDCalibViewer.cxx:81
 AliTRDCalibViewer.cxx:82
 AliTRDCalibViewer.cxx:83
 AliTRDCalibViewer.cxx:84
 AliTRDCalibViewer.cxx:85
 AliTRDCalibViewer.cxx:86
 AliTRDCalibViewer.cxx:87
 AliTRDCalibViewer.cxx:88
 AliTRDCalibViewer.cxx:89
 AliTRDCalibViewer.cxx:90
 AliTRDCalibViewer.cxx:91
 AliTRDCalibViewer.cxx:92
 AliTRDCalibViewer.cxx:93
 AliTRDCalibViewer.cxx:94
 AliTRDCalibViewer.cxx:95
 AliTRDCalibViewer.cxx:96
 AliTRDCalibViewer.cxx:97
 AliTRDCalibViewer.cxx:98
 AliTRDCalibViewer.cxx:99
 AliTRDCalibViewer.cxx:100
 AliTRDCalibViewer.cxx:101
 AliTRDCalibViewer.cxx:102
 AliTRDCalibViewer.cxx:103
 AliTRDCalibViewer.cxx:104
 AliTRDCalibViewer.cxx:105
 AliTRDCalibViewer.cxx:106
 AliTRDCalibViewer.cxx:107
 AliTRDCalibViewer.cxx:108
 AliTRDCalibViewer.cxx:109
 AliTRDCalibViewer.cxx:110
 AliTRDCalibViewer.cxx:111
 AliTRDCalibViewer.cxx:112
 AliTRDCalibViewer.cxx:113
 AliTRDCalibViewer.cxx:114
 AliTRDCalibViewer.cxx:115
 AliTRDCalibViewer.cxx:116
 AliTRDCalibViewer.cxx:117
 AliTRDCalibViewer.cxx:118
 AliTRDCalibViewer.cxx:119
 AliTRDCalibViewer.cxx:120
 AliTRDCalibViewer.cxx:121
 AliTRDCalibViewer.cxx:122
 AliTRDCalibViewer.cxx:123
 AliTRDCalibViewer.cxx:124
 AliTRDCalibViewer.cxx:125
 AliTRDCalibViewer.cxx:126
 AliTRDCalibViewer.cxx:127
 AliTRDCalibViewer.cxx:128
 AliTRDCalibViewer.cxx:129
 AliTRDCalibViewer.cxx:130
 AliTRDCalibViewer.cxx:131
 AliTRDCalibViewer.cxx:132
 AliTRDCalibViewer.cxx:133
 AliTRDCalibViewer.cxx:134
 AliTRDCalibViewer.cxx:135
 AliTRDCalibViewer.cxx:136
 AliTRDCalibViewer.cxx:137
 AliTRDCalibViewer.cxx:138
 AliTRDCalibViewer.cxx:139
 AliTRDCalibViewer.cxx:140
 AliTRDCalibViewer.cxx:141
 AliTRDCalibViewer.cxx:142
 AliTRDCalibViewer.cxx:143
 AliTRDCalibViewer.cxx:144
 AliTRDCalibViewer.cxx:145
 AliTRDCalibViewer.cxx:146
 AliTRDCalibViewer.cxx:147
 AliTRDCalibViewer.cxx:148
 AliTRDCalibViewer.cxx:149
 AliTRDCalibViewer.cxx:150
 AliTRDCalibViewer.cxx:151
 AliTRDCalibViewer.cxx:152
 AliTRDCalibViewer.cxx:153
 AliTRDCalibViewer.cxx:154
 AliTRDCalibViewer.cxx:155
 AliTRDCalibViewer.cxx:156
 AliTRDCalibViewer.cxx:157
 AliTRDCalibViewer.cxx:158
 AliTRDCalibViewer.cxx:159
 AliTRDCalibViewer.cxx:160
 AliTRDCalibViewer.cxx:161
 AliTRDCalibViewer.cxx:162
 AliTRDCalibViewer.cxx:163
 AliTRDCalibViewer.cxx:164
 AliTRDCalibViewer.cxx:165
 AliTRDCalibViewer.cxx:166
 AliTRDCalibViewer.cxx:167
 AliTRDCalibViewer.cxx:168
 AliTRDCalibViewer.cxx:169
 AliTRDCalibViewer.cxx:170
 AliTRDCalibViewer.cxx:171
 AliTRDCalibViewer.cxx:172
 AliTRDCalibViewer.cxx:173
 AliTRDCalibViewer.cxx:174
 AliTRDCalibViewer.cxx:175
 AliTRDCalibViewer.cxx:176
 AliTRDCalibViewer.cxx:177
 AliTRDCalibViewer.cxx:178
 AliTRDCalibViewer.cxx:179
 AliTRDCalibViewer.cxx:180
 AliTRDCalibViewer.cxx:181
 AliTRDCalibViewer.cxx:182
 AliTRDCalibViewer.cxx:183
 AliTRDCalibViewer.cxx:184
 AliTRDCalibViewer.cxx:185
 AliTRDCalibViewer.cxx:186
 AliTRDCalibViewer.cxx:187
 AliTRDCalibViewer.cxx:188
 AliTRDCalibViewer.cxx:189
 AliTRDCalibViewer.cxx:190
 AliTRDCalibViewer.cxx:191
 AliTRDCalibViewer.cxx:192
 AliTRDCalibViewer.cxx:193
 AliTRDCalibViewer.cxx:194
 AliTRDCalibViewer.cxx:195
 AliTRDCalibViewer.cxx:196
 AliTRDCalibViewer.cxx:197
 AliTRDCalibViewer.cxx:198
 AliTRDCalibViewer.cxx:199
 AliTRDCalibViewer.cxx:200
 AliTRDCalibViewer.cxx:201
 AliTRDCalibViewer.cxx:202
 AliTRDCalibViewer.cxx:203
 AliTRDCalibViewer.cxx:204
 AliTRDCalibViewer.cxx:205
 AliTRDCalibViewer.cxx:206
 AliTRDCalibViewer.cxx:207
 AliTRDCalibViewer.cxx:208
 AliTRDCalibViewer.cxx:209
 AliTRDCalibViewer.cxx:210
 AliTRDCalibViewer.cxx:211
 AliTRDCalibViewer.cxx:212
 AliTRDCalibViewer.cxx:213
 AliTRDCalibViewer.cxx:214
 AliTRDCalibViewer.cxx:215
 AliTRDCalibViewer.cxx:216
 AliTRDCalibViewer.cxx:217
 AliTRDCalibViewer.cxx:218
 AliTRDCalibViewer.cxx:219
 AliTRDCalibViewer.cxx:220
 AliTRDCalibViewer.cxx:221
 AliTRDCalibViewer.cxx:222
 AliTRDCalibViewer.cxx:223
 AliTRDCalibViewer.cxx:224
 AliTRDCalibViewer.cxx:225
 AliTRDCalibViewer.cxx:226
 AliTRDCalibViewer.cxx:227
 AliTRDCalibViewer.cxx:228
 AliTRDCalibViewer.cxx:229
 AliTRDCalibViewer.cxx:230
 AliTRDCalibViewer.cxx:231
 AliTRDCalibViewer.cxx:232
 AliTRDCalibViewer.cxx:233
 AliTRDCalibViewer.cxx:234
 AliTRDCalibViewer.cxx:235
 AliTRDCalibViewer.cxx:236
 AliTRDCalibViewer.cxx:237
 AliTRDCalibViewer.cxx:238
 AliTRDCalibViewer.cxx:239
 AliTRDCalibViewer.cxx:240
 AliTRDCalibViewer.cxx:241
 AliTRDCalibViewer.cxx:242
 AliTRDCalibViewer.cxx:243
 AliTRDCalibViewer.cxx:244
 AliTRDCalibViewer.cxx:245
 AliTRDCalibViewer.cxx:246
 AliTRDCalibViewer.cxx:247
 AliTRDCalibViewer.cxx:248
 AliTRDCalibViewer.cxx:249
 AliTRDCalibViewer.cxx:250
 AliTRDCalibViewer.cxx:251
 AliTRDCalibViewer.cxx:252
 AliTRDCalibViewer.cxx:253
 AliTRDCalibViewer.cxx:254
 AliTRDCalibViewer.cxx:255
 AliTRDCalibViewer.cxx:256
 AliTRDCalibViewer.cxx:257
 AliTRDCalibViewer.cxx:258
 AliTRDCalibViewer.cxx:259
 AliTRDCalibViewer.cxx:260
 AliTRDCalibViewer.cxx:261
 AliTRDCalibViewer.cxx:262
 AliTRDCalibViewer.cxx:263
 AliTRDCalibViewer.cxx:264
 AliTRDCalibViewer.cxx:265
 AliTRDCalibViewer.cxx:266
 AliTRDCalibViewer.cxx:267
 AliTRDCalibViewer.cxx:268
 AliTRDCalibViewer.cxx:269
 AliTRDCalibViewer.cxx:270
 AliTRDCalibViewer.cxx:271
 AliTRDCalibViewer.cxx:272
 AliTRDCalibViewer.cxx:273
 AliTRDCalibViewer.cxx:274
 AliTRDCalibViewer.cxx:275
 AliTRDCalibViewer.cxx:276
 AliTRDCalibViewer.cxx:277
 AliTRDCalibViewer.cxx:278
 AliTRDCalibViewer.cxx:279
 AliTRDCalibViewer.cxx:280
 AliTRDCalibViewer.cxx:281
 AliTRDCalibViewer.cxx:282
 AliTRDCalibViewer.cxx:283
 AliTRDCalibViewer.cxx:284
 AliTRDCalibViewer.cxx:285
 AliTRDCalibViewer.cxx:286
 AliTRDCalibViewer.cxx:287
 AliTRDCalibViewer.cxx:288
 AliTRDCalibViewer.cxx:289
 AliTRDCalibViewer.cxx:290
 AliTRDCalibViewer.cxx:291
 AliTRDCalibViewer.cxx:292
 AliTRDCalibViewer.cxx:293
 AliTRDCalibViewer.cxx:294
 AliTRDCalibViewer.cxx:295
 AliTRDCalibViewer.cxx:296
 AliTRDCalibViewer.cxx:297
 AliTRDCalibViewer.cxx:298
 AliTRDCalibViewer.cxx:299
 AliTRDCalibViewer.cxx:300
 AliTRDCalibViewer.cxx:301
 AliTRDCalibViewer.cxx:302
 AliTRDCalibViewer.cxx:303
 AliTRDCalibViewer.cxx:304
 AliTRDCalibViewer.cxx:305
 AliTRDCalibViewer.cxx:306
 AliTRDCalibViewer.cxx:307
 AliTRDCalibViewer.cxx:308
 AliTRDCalibViewer.cxx:309
 AliTRDCalibViewer.cxx:310
 AliTRDCalibViewer.cxx:311
 AliTRDCalibViewer.cxx:312
 AliTRDCalibViewer.cxx:313
 AliTRDCalibViewer.cxx:314
 AliTRDCalibViewer.cxx:315
 AliTRDCalibViewer.cxx:316
 AliTRDCalibViewer.cxx:317
 AliTRDCalibViewer.cxx:318
 AliTRDCalibViewer.cxx:319
 AliTRDCalibViewer.cxx:320
 AliTRDCalibViewer.cxx:321
 AliTRDCalibViewer.cxx:322
 AliTRDCalibViewer.cxx:323
 AliTRDCalibViewer.cxx:324
 AliTRDCalibViewer.cxx:325
 AliTRDCalibViewer.cxx:326
 AliTRDCalibViewer.cxx:327
 AliTRDCalibViewer.cxx:328
 AliTRDCalibViewer.cxx:329
 AliTRDCalibViewer.cxx:330
 AliTRDCalibViewer.cxx:331
 AliTRDCalibViewer.cxx:332
 AliTRDCalibViewer.cxx:333
 AliTRDCalibViewer.cxx:334
 AliTRDCalibViewer.cxx:335
 AliTRDCalibViewer.cxx:336
 AliTRDCalibViewer.cxx:337
 AliTRDCalibViewer.cxx:338
 AliTRDCalibViewer.cxx:339
 AliTRDCalibViewer.cxx:340
 AliTRDCalibViewer.cxx:341
 AliTRDCalibViewer.cxx:342
 AliTRDCalibViewer.cxx:343
 AliTRDCalibViewer.cxx:344
 AliTRDCalibViewer.cxx:345
 AliTRDCalibViewer.cxx:346
 AliTRDCalibViewer.cxx:347
 AliTRDCalibViewer.cxx:348
 AliTRDCalibViewer.cxx:349
 AliTRDCalibViewer.cxx:350
 AliTRDCalibViewer.cxx:351
 AliTRDCalibViewer.cxx:352
 AliTRDCalibViewer.cxx:353
 AliTRDCalibViewer.cxx:354
 AliTRDCalibViewer.cxx:355
 AliTRDCalibViewer.cxx:356
 AliTRDCalibViewer.cxx:357
 AliTRDCalibViewer.cxx:358
 AliTRDCalibViewer.cxx:359
 AliTRDCalibViewer.cxx:360
 AliTRDCalibViewer.cxx:361
 AliTRDCalibViewer.cxx:362
 AliTRDCalibViewer.cxx:363
 AliTRDCalibViewer.cxx:364
 AliTRDCalibViewer.cxx:365
 AliTRDCalibViewer.cxx:366
 AliTRDCalibViewer.cxx:367
 AliTRDCalibViewer.cxx:368
 AliTRDCalibViewer.cxx:369
 AliTRDCalibViewer.cxx:370
 AliTRDCalibViewer.cxx:371
 AliTRDCalibViewer.cxx:372
 AliTRDCalibViewer.cxx:373
 AliTRDCalibViewer.cxx:374
 AliTRDCalibViewer.cxx:375
 AliTRDCalibViewer.cxx:376
 AliTRDCalibViewer.cxx:377
 AliTRDCalibViewer.cxx:378
 AliTRDCalibViewer.cxx:379
 AliTRDCalibViewer.cxx:380
 AliTRDCalibViewer.cxx:381
 AliTRDCalibViewer.cxx:382
 AliTRDCalibViewer.cxx:383
 AliTRDCalibViewer.cxx:384
 AliTRDCalibViewer.cxx:385
 AliTRDCalibViewer.cxx:386
 AliTRDCalibViewer.cxx:387
 AliTRDCalibViewer.cxx:388
 AliTRDCalibViewer.cxx:389
 AliTRDCalibViewer.cxx:390
 AliTRDCalibViewer.cxx:391
 AliTRDCalibViewer.cxx:392
 AliTRDCalibViewer.cxx:393
 AliTRDCalibViewer.cxx:394
 AliTRDCalibViewer.cxx:395
 AliTRDCalibViewer.cxx:396
 AliTRDCalibViewer.cxx:397
 AliTRDCalibViewer.cxx:398
 AliTRDCalibViewer.cxx:399
 AliTRDCalibViewer.cxx:400
 AliTRDCalibViewer.cxx:401
 AliTRDCalibViewer.cxx:402
 AliTRDCalibViewer.cxx:403
 AliTRDCalibViewer.cxx:404
 AliTRDCalibViewer.cxx:405
 AliTRDCalibViewer.cxx:406
 AliTRDCalibViewer.cxx:407
 AliTRDCalibViewer.cxx:408
 AliTRDCalibViewer.cxx:409
 AliTRDCalibViewer.cxx:410
 AliTRDCalibViewer.cxx:411
 AliTRDCalibViewer.cxx:412
 AliTRDCalibViewer.cxx:413
 AliTRDCalibViewer.cxx:414
 AliTRDCalibViewer.cxx:415
 AliTRDCalibViewer.cxx:416
 AliTRDCalibViewer.cxx:417
 AliTRDCalibViewer.cxx:418
 AliTRDCalibViewer.cxx:419
 AliTRDCalibViewer.cxx:420
 AliTRDCalibViewer.cxx:421
 AliTRDCalibViewer.cxx:422
 AliTRDCalibViewer.cxx:423
 AliTRDCalibViewer.cxx:424
 AliTRDCalibViewer.cxx:425
 AliTRDCalibViewer.cxx:426
 AliTRDCalibViewer.cxx:427
 AliTRDCalibViewer.cxx:428
 AliTRDCalibViewer.cxx:429
 AliTRDCalibViewer.cxx:430
 AliTRDCalibViewer.cxx:431
 AliTRDCalibViewer.cxx:432
 AliTRDCalibViewer.cxx:433
 AliTRDCalibViewer.cxx:434
 AliTRDCalibViewer.cxx:435
 AliTRDCalibViewer.cxx:436
 AliTRDCalibViewer.cxx:437
 AliTRDCalibViewer.cxx:438
 AliTRDCalibViewer.cxx:439
 AliTRDCalibViewer.cxx:440
 AliTRDCalibViewer.cxx:441
 AliTRDCalibViewer.cxx:442
 AliTRDCalibViewer.cxx:443
 AliTRDCalibViewer.cxx:444
 AliTRDCalibViewer.cxx:445
 AliTRDCalibViewer.cxx:446
 AliTRDCalibViewer.cxx:447
 AliTRDCalibViewer.cxx:448
 AliTRDCalibViewer.cxx:449
 AliTRDCalibViewer.cxx:450
 AliTRDCalibViewer.cxx:451
 AliTRDCalibViewer.cxx:452
 AliTRDCalibViewer.cxx:453
 AliTRDCalibViewer.cxx:454
 AliTRDCalibViewer.cxx:455
 AliTRDCalibViewer.cxx:456
 AliTRDCalibViewer.cxx:457
 AliTRDCalibViewer.cxx:458
 AliTRDCalibViewer.cxx:459
 AliTRDCalibViewer.cxx:460
 AliTRDCalibViewer.cxx:461
 AliTRDCalibViewer.cxx:462
 AliTRDCalibViewer.cxx:463
 AliTRDCalibViewer.cxx:464
 AliTRDCalibViewer.cxx:465
 AliTRDCalibViewer.cxx:466
 AliTRDCalibViewer.cxx:467
 AliTRDCalibViewer.cxx:468
 AliTRDCalibViewer.cxx:469
 AliTRDCalibViewer.cxx:470
 AliTRDCalibViewer.cxx:471
 AliTRDCalibViewer.cxx:472
 AliTRDCalibViewer.cxx:473
 AliTRDCalibViewer.cxx:474
 AliTRDCalibViewer.cxx:475
 AliTRDCalibViewer.cxx:476
 AliTRDCalibViewer.cxx:477
 AliTRDCalibViewer.cxx:478
 AliTRDCalibViewer.cxx:479
 AliTRDCalibViewer.cxx:480
 AliTRDCalibViewer.cxx:481
 AliTRDCalibViewer.cxx:482
 AliTRDCalibViewer.cxx:483
 AliTRDCalibViewer.cxx:484
 AliTRDCalibViewer.cxx:485
 AliTRDCalibViewer.cxx:486
 AliTRDCalibViewer.cxx:487
 AliTRDCalibViewer.cxx:488
 AliTRDCalibViewer.cxx:489
 AliTRDCalibViewer.cxx:490
 AliTRDCalibViewer.cxx:491
 AliTRDCalibViewer.cxx:492
 AliTRDCalibViewer.cxx:493
 AliTRDCalibViewer.cxx:494
 AliTRDCalibViewer.cxx:495
 AliTRDCalibViewer.cxx:496
 AliTRDCalibViewer.cxx:497
 AliTRDCalibViewer.cxx:498
 AliTRDCalibViewer.cxx:499
 AliTRDCalibViewer.cxx:500
 AliTRDCalibViewer.cxx:501
 AliTRDCalibViewer.cxx:502
 AliTRDCalibViewer.cxx:503
 AliTRDCalibViewer.cxx:504
 AliTRDCalibViewer.cxx:505
 AliTRDCalibViewer.cxx:506
 AliTRDCalibViewer.cxx:507
 AliTRDCalibViewer.cxx:508
 AliTRDCalibViewer.cxx:509
 AliTRDCalibViewer.cxx:510
 AliTRDCalibViewer.cxx:511
 AliTRDCalibViewer.cxx:512
 AliTRDCalibViewer.cxx:513
 AliTRDCalibViewer.cxx:514
 AliTRDCalibViewer.cxx:515
 AliTRDCalibViewer.cxx:516
 AliTRDCalibViewer.cxx:517
 AliTRDCalibViewer.cxx:518
 AliTRDCalibViewer.cxx:519
 AliTRDCalibViewer.cxx:520
 AliTRDCalibViewer.cxx:521
 AliTRDCalibViewer.cxx:522
 AliTRDCalibViewer.cxx:523
 AliTRDCalibViewer.cxx:524
 AliTRDCalibViewer.cxx:525
 AliTRDCalibViewer.cxx:526
 AliTRDCalibViewer.cxx:527
 AliTRDCalibViewer.cxx:528
 AliTRDCalibViewer.cxx:529
 AliTRDCalibViewer.cxx:530
 AliTRDCalibViewer.cxx:531
 AliTRDCalibViewer.cxx:532
 AliTRDCalibViewer.cxx:533
 AliTRDCalibViewer.cxx:534
 AliTRDCalibViewer.cxx:535
 AliTRDCalibViewer.cxx:536
 AliTRDCalibViewer.cxx:537
 AliTRDCalibViewer.cxx:538
 AliTRDCalibViewer.cxx:539
 AliTRDCalibViewer.cxx:540
 AliTRDCalibViewer.cxx:541
 AliTRDCalibViewer.cxx:542
 AliTRDCalibViewer.cxx:543
 AliTRDCalibViewer.cxx:544
 AliTRDCalibViewer.cxx:545
 AliTRDCalibViewer.cxx:546
 AliTRDCalibViewer.cxx:547
 AliTRDCalibViewer.cxx:548
 AliTRDCalibViewer.cxx:549
 AliTRDCalibViewer.cxx:550
 AliTRDCalibViewer.cxx:551
 AliTRDCalibViewer.cxx:552
 AliTRDCalibViewer.cxx:553
 AliTRDCalibViewer.cxx:554
 AliTRDCalibViewer.cxx:555
 AliTRDCalibViewer.cxx:556
 AliTRDCalibViewer.cxx:557
 AliTRDCalibViewer.cxx:558
 AliTRDCalibViewer.cxx:559
 AliTRDCalibViewer.cxx:560
 AliTRDCalibViewer.cxx:561
 AliTRDCalibViewer.cxx:562
 AliTRDCalibViewer.cxx:563
 AliTRDCalibViewer.cxx:564
 AliTRDCalibViewer.cxx:565
 AliTRDCalibViewer.cxx:566
 AliTRDCalibViewer.cxx:567
 AliTRDCalibViewer.cxx:568
 AliTRDCalibViewer.cxx:569
 AliTRDCalibViewer.cxx:570
 AliTRDCalibViewer.cxx:571
 AliTRDCalibViewer.cxx:572
 AliTRDCalibViewer.cxx:573
 AliTRDCalibViewer.cxx:574
 AliTRDCalibViewer.cxx:575
 AliTRDCalibViewer.cxx:576
 AliTRDCalibViewer.cxx:577
 AliTRDCalibViewer.cxx:578
 AliTRDCalibViewer.cxx:579
 AliTRDCalibViewer.cxx:580
 AliTRDCalibViewer.cxx:581
 AliTRDCalibViewer.cxx:582
 AliTRDCalibViewer.cxx:583
 AliTRDCalibViewer.cxx:584
 AliTRDCalibViewer.cxx:585
 AliTRDCalibViewer.cxx:586
 AliTRDCalibViewer.cxx:587
 AliTRDCalibViewer.cxx:588
 AliTRDCalibViewer.cxx:589
 AliTRDCalibViewer.cxx:590
 AliTRDCalibViewer.cxx:591
 AliTRDCalibViewer.cxx:592
 AliTRDCalibViewer.cxx:593
 AliTRDCalibViewer.cxx:594
 AliTRDCalibViewer.cxx:595
 AliTRDCalibViewer.cxx:596
 AliTRDCalibViewer.cxx:597
 AliTRDCalibViewer.cxx:598
 AliTRDCalibViewer.cxx:599
 AliTRDCalibViewer.cxx:600
 AliTRDCalibViewer.cxx:601
 AliTRDCalibViewer.cxx:602
 AliTRDCalibViewer.cxx:603
 AliTRDCalibViewer.cxx:604
 AliTRDCalibViewer.cxx:605
 AliTRDCalibViewer.cxx:606
 AliTRDCalibViewer.cxx:607
 AliTRDCalibViewer.cxx:608
 AliTRDCalibViewer.cxx:609
 AliTRDCalibViewer.cxx:610
 AliTRDCalibViewer.cxx:611
 AliTRDCalibViewer.cxx:612
 AliTRDCalibViewer.cxx:613
 AliTRDCalibViewer.cxx:614
 AliTRDCalibViewer.cxx:615
 AliTRDCalibViewer.cxx:616
 AliTRDCalibViewer.cxx:617
 AliTRDCalibViewer.cxx:618
 AliTRDCalibViewer.cxx:619
 AliTRDCalibViewer.cxx:620
 AliTRDCalibViewer.cxx:621
 AliTRDCalibViewer.cxx:622
 AliTRDCalibViewer.cxx:623
 AliTRDCalibViewer.cxx:624
 AliTRDCalibViewer.cxx:625
 AliTRDCalibViewer.cxx:626
 AliTRDCalibViewer.cxx:627
 AliTRDCalibViewer.cxx:628
 AliTRDCalibViewer.cxx:629
 AliTRDCalibViewer.cxx:630
 AliTRDCalibViewer.cxx:631
 AliTRDCalibViewer.cxx:632
 AliTRDCalibViewer.cxx:633
 AliTRDCalibViewer.cxx:634
 AliTRDCalibViewer.cxx:635
 AliTRDCalibViewer.cxx:636
 AliTRDCalibViewer.cxx:637
 AliTRDCalibViewer.cxx:638
 AliTRDCalibViewer.cxx:639
 AliTRDCalibViewer.cxx:640
 AliTRDCalibViewer.cxx:641
 AliTRDCalibViewer.cxx:642
 AliTRDCalibViewer.cxx:643
 AliTRDCalibViewer.cxx:644
 AliTRDCalibViewer.cxx:645
 AliTRDCalibViewer.cxx:646
 AliTRDCalibViewer.cxx:647
 AliTRDCalibViewer.cxx:648
 AliTRDCalibViewer.cxx:649
 AliTRDCalibViewer.cxx:650
 AliTRDCalibViewer.cxx:651
 AliTRDCalibViewer.cxx:652
 AliTRDCalibViewer.cxx:653
 AliTRDCalibViewer.cxx:654
 AliTRDCalibViewer.cxx:655
 AliTRDCalibViewer.cxx:656
 AliTRDCalibViewer.cxx:657
 AliTRDCalibViewer.cxx:658
 AliTRDCalibViewer.cxx:659
 AliTRDCalibViewer.cxx:660
 AliTRDCalibViewer.cxx:661
 AliTRDCalibViewer.cxx:662
 AliTRDCalibViewer.cxx:663
 AliTRDCalibViewer.cxx:664
 AliTRDCalibViewer.cxx:665
 AliTRDCalibViewer.cxx:666
 AliTRDCalibViewer.cxx:667
 AliTRDCalibViewer.cxx:668
 AliTRDCalibViewer.cxx:669
 AliTRDCalibViewer.cxx:670
 AliTRDCalibViewer.cxx:671
 AliTRDCalibViewer.cxx:672
 AliTRDCalibViewer.cxx:673
 AliTRDCalibViewer.cxx:674
 AliTRDCalibViewer.cxx:675
 AliTRDCalibViewer.cxx:676
 AliTRDCalibViewer.cxx:677
 AliTRDCalibViewer.cxx:678
 AliTRDCalibViewer.cxx:679
 AliTRDCalibViewer.cxx:680
 AliTRDCalibViewer.cxx:681
 AliTRDCalibViewer.cxx:682
 AliTRDCalibViewer.cxx:683
 AliTRDCalibViewer.cxx:684
 AliTRDCalibViewer.cxx:685
 AliTRDCalibViewer.cxx:686
 AliTRDCalibViewer.cxx:687
 AliTRDCalibViewer.cxx:688
 AliTRDCalibViewer.cxx:689
 AliTRDCalibViewer.cxx:690
 AliTRDCalibViewer.cxx:691
 AliTRDCalibViewer.cxx:692
 AliTRDCalibViewer.cxx:693
 AliTRDCalibViewer.cxx:694
 AliTRDCalibViewer.cxx:695
 AliTRDCalibViewer.cxx:696
 AliTRDCalibViewer.cxx:697
 AliTRDCalibViewer.cxx:698
 AliTRDCalibViewer.cxx:699
 AliTRDCalibViewer.cxx:700
 AliTRDCalibViewer.cxx:701
 AliTRDCalibViewer.cxx:702
 AliTRDCalibViewer.cxx:703
 AliTRDCalibViewer.cxx:704
 AliTRDCalibViewer.cxx:705
 AliTRDCalibViewer.cxx:706
 AliTRDCalibViewer.cxx:707
 AliTRDCalibViewer.cxx:708
 AliTRDCalibViewer.cxx:709
 AliTRDCalibViewer.cxx:710
 AliTRDCalibViewer.cxx:711
 AliTRDCalibViewer.cxx:712
 AliTRDCalibViewer.cxx:713
 AliTRDCalibViewer.cxx:714
 AliTRDCalibViewer.cxx:715
 AliTRDCalibViewer.cxx:716
 AliTRDCalibViewer.cxx:717
 AliTRDCalibViewer.cxx:718
 AliTRDCalibViewer.cxx:719
 AliTRDCalibViewer.cxx:720
 AliTRDCalibViewer.cxx:721
 AliTRDCalibViewer.cxx:722
 AliTRDCalibViewer.cxx:723
 AliTRDCalibViewer.cxx:724
 AliTRDCalibViewer.cxx:725
 AliTRDCalibViewer.cxx:726
 AliTRDCalibViewer.cxx:727
 AliTRDCalibViewer.cxx:728
 AliTRDCalibViewer.cxx:729
 AliTRDCalibViewer.cxx:730
 AliTRDCalibViewer.cxx:731
 AliTRDCalibViewer.cxx:732
 AliTRDCalibViewer.cxx:733
 AliTRDCalibViewer.cxx:734
 AliTRDCalibViewer.cxx:735
 AliTRDCalibViewer.cxx:736
 AliTRDCalibViewer.cxx:737
 AliTRDCalibViewer.cxx:738
 AliTRDCalibViewer.cxx:739
 AliTRDCalibViewer.cxx:740
 AliTRDCalibViewer.cxx:741
 AliTRDCalibViewer.cxx:742
 AliTRDCalibViewer.cxx:743
 AliTRDCalibViewer.cxx:744
 AliTRDCalibViewer.cxx:745
 AliTRDCalibViewer.cxx:746
 AliTRDCalibViewer.cxx:747
 AliTRDCalibViewer.cxx:748
 AliTRDCalibViewer.cxx:749
 AliTRDCalibViewer.cxx:750
 AliTRDCalibViewer.cxx:751
 AliTRDCalibViewer.cxx:752
 AliTRDCalibViewer.cxx:753
 AliTRDCalibViewer.cxx:754
 AliTRDCalibViewer.cxx:755
 AliTRDCalibViewer.cxx:756
 AliTRDCalibViewer.cxx:757
 AliTRDCalibViewer.cxx:758
 AliTRDCalibViewer.cxx:759
 AliTRDCalibViewer.cxx:760
 AliTRDCalibViewer.cxx:761
 AliTRDCalibViewer.cxx:762
 AliTRDCalibViewer.cxx:763
 AliTRDCalibViewer.cxx:764
 AliTRDCalibViewer.cxx:765
 AliTRDCalibViewer.cxx:766
 AliTRDCalibViewer.cxx:767
 AliTRDCalibViewer.cxx:768
 AliTRDCalibViewer.cxx:769
 AliTRDCalibViewer.cxx:770
 AliTRDCalibViewer.cxx:771
 AliTRDCalibViewer.cxx:772
 AliTRDCalibViewer.cxx:773
 AliTRDCalibViewer.cxx:774
 AliTRDCalibViewer.cxx:775
 AliTRDCalibViewer.cxx:776
 AliTRDCalibViewer.cxx:777
 AliTRDCalibViewer.cxx:778
 AliTRDCalibViewer.cxx:779
 AliTRDCalibViewer.cxx:780
 AliTRDCalibViewer.cxx:781
 AliTRDCalibViewer.cxx:782
 AliTRDCalibViewer.cxx:783
 AliTRDCalibViewer.cxx:784
 AliTRDCalibViewer.cxx:785
 AliTRDCalibViewer.cxx:786
 AliTRDCalibViewer.cxx:787
 AliTRDCalibViewer.cxx:788
 AliTRDCalibViewer.cxx:789
 AliTRDCalibViewer.cxx:790
 AliTRDCalibViewer.cxx:791
 AliTRDCalibViewer.cxx:792
 AliTRDCalibViewer.cxx:793
 AliTRDCalibViewer.cxx:794
 AliTRDCalibViewer.cxx:795
 AliTRDCalibViewer.cxx:796
 AliTRDCalibViewer.cxx:797
 AliTRDCalibViewer.cxx:798
 AliTRDCalibViewer.cxx:799
 AliTRDCalibViewer.cxx:800
 AliTRDCalibViewer.cxx:801
 AliTRDCalibViewer.cxx:802
 AliTRDCalibViewer.cxx:803
 AliTRDCalibViewer.cxx:804
 AliTRDCalibViewer.cxx:805
 AliTRDCalibViewer.cxx:806
 AliTRDCalibViewer.cxx:807
 AliTRDCalibViewer.cxx:808
 AliTRDCalibViewer.cxx:809
 AliTRDCalibViewer.cxx:810
 AliTRDCalibViewer.cxx:811
 AliTRDCalibViewer.cxx:812
 AliTRDCalibViewer.cxx:813
 AliTRDCalibViewer.cxx:814
 AliTRDCalibViewer.cxx:815
 AliTRDCalibViewer.cxx:816
 AliTRDCalibViewer.cxx:817
 AliTRDCalibViewer.cxx:818
 AliTRDCalibViewer.cxx:819
 AliTRDCalibViewer.cxx:820
 AliTRDCalibViewer.cxx:821
 AliTRDCalibViewer.cxx:822
 AliTRDCalibViewer.cxx:823
 AliTRDCalibViewer.cxx:824
 AliTRDCalibViewer.cxx:825
 AliTRDCalibViewer.cxx:826
 AliTRDCalibViewer.cxx:827
 AliTRDCalibViewer.cxx:828
 AliTRDCalibViewer.cxx:829
 AliTRDCalibViewer.cxx:830
 AliTRDCalibViewer.cxx:831
 AliTRDCalibViewer.cxx:832
 AliTRDCalibViewer.cxx:833
 AliTRDCalibViewer.cxx:834
 AliTRDCalibViewer.cxx:835
 AliTRDCalibViewer.cxx:836
 AliTRDCalibViewer.cxx:837
 AliTRDCalibViewer.cxx:838
 AliTRDCalibViewer.cxx:839
 AliTRDCalibViewer.cxx:840
 AliTRDCalibViewer.cxx:841
 AliTRDCalibViewer.cxx:842
 AliTRDCalibViewer.cxx:843
 AliTRDCalibViewer.cxx:844
 AliTRDCalibViewer.cxx:845
 AliTRDCalibViewer.cxx:846
 AliTRDCalibViewer.cxx:847
 AliTRDCalibViewer.cxx:848
 AliTRDCalibViewer.cxx:849
 AliTRDCalibViewer.cxx:850
 AliTRDCalibViewer.cxx:851
 AliTRDCalibViewer.cxx:852
 AliTRDCalibViewer.cxx:853
 AliTRDCalibViewer.cxx:854
 AliTRDCalibViewer.cxx:855
 AliTRDCalibViewer.cxx:856
 AliTRDCalibViewer.cxx:857
 AliTRDCalibViewer.cxx:858
 AliTRDCalibViewer.cxx:859
 AliTRDCalibViewer.cxx:860
 AliTRDCalibViewer.cxx:861
 AliTRDCalibViewer.cxx:862
 AliTRDCalibViewer.cxx:863
 AliTRDCalibViewer.cxx:864
 AliTRDCalibViewer.cxx:865
 AliTRDCalibViewer.cxx:866
 AliTRDCalibViewer.cxx:867
 AliTRDCalibViewer.cxx:868
 AliTRDCalibViewer.cxx:869
 AliTRDCalibViewer.cxx:870
 AliTRDCalibViewer.cxx:871
 AliTRDCalibViewer.cxx:872
 AliTRDCalibViewer.cxx:873
 AliTRDCalibViewer.cxx:874
 AliTRDCalibViewer.cxx:875
 AliTRDCalibViewer.cxx:876
 AliTRDCalibViewer.cxx:877
 AliTRDCalibViewer.cxx:878
 AliTRDCalibViewer.cxx:879
 AliTRDCalibViewer.cxx:880
 AliTRDCalibViewer.cxx:881
 AliTRDCalibViewer.cxx:882
 AliTRDCalibViewer.cxx:883
 AliTRDCalibViewer.cxx:884
 AliTRDCalibViewer.cxx:885
 AliTRDCalibViewer.cxx:886
 AliTRDCalibViewer.cxx:887
 AliTRDCalibViewer.cxx:888
 AliTRDCalibViewer.cxx:889
 AliTRDCalibViewer.cxx:890
 AliTRDCalibViewer.cxx:891
 AliTRDCalibViewer.cxx:892
 AliTRDCalibViewer.cxx:893
 AliTRDCalibViewer.cxx:894
 AliTRDCalibViewer.cxx:895
 AliTRDCalibViewer.cxx:896
 AliTRDCalibViewer.cxx:897
 AliTRDCalibViewer.cxx:898
 AliTRDCalibViewer.cxx:899
 AliTRDCalibViewer.cxx:900
 AliTRDCalibViewer.cxx:901
 AliTRDCalibViewer.cxx:902
 AliTRDCalibViewer.cxx:903
 AliTRDCalibViewer.cxx:904
 AliTRDCalibViewer.cxx:905
 AliTRDCalibViewer.cxx:906
 AliTRDCalibViewer.cxx:907
 AliTRDCalibViewer.cxx:908
 AliTRDCalibViewer.cxx:909
 AliTRDCalibViewer.cxx:910
 AliTRDCalibViewer.cxx:911
 AliTRDCalibViewer.cxx:912
 AliTRDCalibViewer.cxx:913
 AliTRDCalibViewer.cxx:914
 AliTRDCalibViewer.cxx:915
 AliTRDCalibViewer.cxx:916
 AliTRDCalibViewer.cxx:917
 AliTRDCalibViewer.cxx:918
 AliTRDCalibViewer.cxx:919
 AliTRDCalibViewer.cxx:920
 AliTRDCalibViewer.cxx:921
 AliTRDCalibViewer.cxx:922
 AliTRDCalibViewer.cxx:923
 AliTRDCalibViewer.cxx:924
 AliTRDCalibViewer.cxx:925
 AliTRDCalibViewer.cxx:926
 AliTRDCalibViewer.cxx:927
 AliTRDCalibViewer.cxx:928
 AliTRDCalibViewer.cxx:929
 AliTRDCalibViewer.cxx:930
 AliTRDCalibViewer.cxx:931
 AliTRDCalibViewer.cxx:932
 AliTRDCalibViewer.cxx:933
 AliTRDCalibViewer.cxx:934
 AliTRDCalibViewer.cxx:935
 AliTRDCalibViewer.cxx:936
 AliTRDCalibViewer.cxx:937
 AliTRDCalibViewer.cxx:938
 AliTRDCalibViewer.cxx:939
 AliTRDCalibViewer.cxx:940
 AliTRDCalibViewer.cxx:941
 AliTRDCalibViewer.cxx:942
 AliTRDCalibViewer.cxx:943
 AliTRDCalibViewer.cxx:944
 AliTRDCalibViewer.cxx:945
 AliTRDCalibViewer.cxx:946
 AliTRDCalibViewer.cxx:947
 AliTRDCalibViewer.cxx:948
 AliTRDCalibViewer.cxx:949
 AliTRDCalibViewer.cxx:950
 AliTRDCalibViewer.cxx:951
 AliTRDCalibViewer.cxx:952
 AliTRDCalibViewer.cxx:953
 AliTRDCalibViewer.cxx:954
 AliTRDCalibViewer.cxx:955
 AliTRDCalibViewer.cxx:956
 AliTRDCalibViewer.cxx:957
 AliTRDCalibViewer.cxx:958
 AliTRDCalibViewer.cxx:959
 AliTRDCalibViewer.cxx:960
 AliTRDCalibViewer.cxx:961
 AliTRDCalibViewer.cxx:962
 AliTRDCalibViewer.cxx:963
 AliTRDCalibViewer.cxx:964
 AliTRDCalibViewer.cxx:965
 AliTRDCalibViewer.cxx:966
 AliTRDCalibViewer.cxx:967
 AliTRDCalibViewer.cxx:968
 AliTRDCalibViewer.cxx:969
 AliTRDCalibViewer.cxx:970
 AliTRDCalibViewer.cxx:971
 AliTRDCalibViewer.cxx:972
 AliTRDCalibViewer.cxx:973
 AliTRDCalibViewer.cxx:974
 AliTRDCalibViewer.cxx:975
 AliTRDCalibViewer.cxx:976
 AliTRDCalibViewer.cxx:977
 AliTRDCalibViewer.cxx:978
 AliTRDCalibViewer.cxx:979
 AliTRDCalibViewer.cxx:980
 AliTRDCalibViewer.cxx:981
 AliTRDCalibViewer.cxx:982
 AliTRDCalibViewer.cxx:983
 AliTRDCalibViewer.cxx:984
 AliTRDCalibViewer.cxx:985
 AliTRDCalibViewer.cxx:986
 AliTRDCalibViewer.cxx:987
 AliTRDCalibViewer.cxx:988
 AliTRDCalibViewer.cxx:989
 AliTRDCalibViewer.cxx:990
 AliTRDCalibViewer.cxx:991
 AliTRDCalibViewer.cxx:992
 AliTRDCalibViewer.cxx:993
 AliTRDCalibViewer.cxx:994
 AliTRDCalibViewer.cxx:995
 AliTRDCalibViewer.cxx:996
 AliTRDCalibViewer.cxx:997
 AliTRDCalibViewer.cxx:998
 AliTRDCalibViewer.cxx:999
 AliTRDCalibViewer.cxx:1000
 AliTRDCalibViewer.cxx:1001
 AliTRDCalibViewer.cxx:1002
 AliTRDCalibViewer.cxx:1003
 AliTRDCalibViewer.cxx:1004
 AliTRDCalibViewer.cxx:1005
 AliTRDCalibViewer.cxx:1006
 AliTRDCalibViewer.cxx:1007
 AliTRDCalibViewer.cxx:1008
 AliTRDCalibViewer.cxx:1009
 AliTRDCalibViewer.cxx:1010
 AliTRDCalibViewer.cxx:1011
 AliTRDCalibViewer.cxx:1012
 AliTRDCalibViewer.cxx:1013
 AliTRDCalibViewer.cxx:1014
 AliTRDCalibViewer.cxx:1015
 AliTRDCalibViewer.cxx:1016
 AliTRDCalibViewer.cxx:1017
 AliTRDCalibViewer.cxx:1018
 AliTRDCalibViewer.cxx:1019
 AliTRDCalibViewer.cxx:1020
 AliTRDCalibViewer.cxx:1021
 AliTRDCalibViewer.cxx:1022
 AliTRDCalibViewer.cxx:1023
 AliTRDCalibViewer.cxx:1024
 AliTRDCalibViewer.cxx:1025
 AliTRDCalibViewer.cxx:1026
 AliTRDCalibViewer.cxx:1027
 AliTRDCalibViewer.cxx:1028
 AliTRDCalibViewer.cxx:1029
 AliTRDCalibViewer.cxx:1030
 AliTRDCalibViewer.cxx:1031
 AliTRDCalibViewer.cxx:1032
 AliTRDCalibViewer.cxx:1033
 AliTRDCalibViewer.cxx:1034
 AliTRDCalibViewer.cxx:1035
 AliTRDCalibViewer.cxx:1036
 AliTRDCalibViewer.cxx:1037
 AliTRDCalibViewer.cxx:1038
 AliTRDCalibViewer.cxx:1039
 AliTRDCalibViewer.cxx:1040
 AliTRDCalibViewer.cxx:1041
 AliTRDCalibViewer.cxx:1042
 AliTRDCalibViewer.cxx:1043
 AliTRDCalibViewer.cxx:1044
 AliTRDCalibViewer.cxx:1045
 AliTRDCalibViewer.cxx:1046
 AliTRDCalibViewer.cxx:1047
 AliTRDCalibViewer.cxx:1048
 AliTRDCalibViewer.cxx:1049
 AliTRDCalibViewer.cxx:1050
 AliTRDCalibViewer.cxx:1051
 AliTRDCalibViewer.cxx:1052
 AliTRDCalibViewer.cxx:1053
 AliTRDCalibViewer.cxx:1054
 AliTRDCalibViewer.cxx:1055
 AliTRDCalibViewer.cxx:1056
 AliTRDCalibViewer.cxx:1057
 AliTRDCalibViewer.cxx:1058
 AliTRDCalibViewer.cxx:1059
 AliTRDCalibViewer.cxx:1060
 AliTRDCalibViewer.cxx:1061
 AliTRDCalibViewer.cxx:1062
 AliTRDCalibViewer.cxx:1063
 AliTRDCalibViewer.cxx:1064
 AliTRDCalibViewer.cxx:1065
 AliTRDCalibViewer.cxx:1066
 AliTRDCalibViewer.cxx:1067
 AliTRDCalibViewer.cxx:1068
 AliTRDCalibViewer.cxx:1069
 AliTRDCalibViewer.cxx:1070
 AliTRDCalibViewer.cxx:1071
 AliTRDCalibViewer.cxx:1072
 AliTRDCalibViewer.cxx:1073
 AliTRDCalibViewer.cxx:1074
 AliTRDCalibViewer.cxx:1075
 AliTRDCalibViewer.cxx:1076
 AliTRDCalibViewer.cxx:1077
 AliTRDCalibViewer.cxx:1078
 AliTRDCalibViewer.cxx:1079
 AliTRDCalibViewer.cxx:1080
 AliTRDCalibViewer.cxx:1081
 AliTRDCalibViewer.cxx:1082
 AliTRDCalibViewer.cxx:1083
 AliTRDCalibViewer.cxx:1084
 AliTRDCalibViewer.cxx:1085
 AliTRDCalibViewer.cxx:1086
 AliTRDCalibViewer.cxx:1087
 AliTRDCalibViewer.cxx:1088
 AliTRDCalibViewer.cxx:1089
 AliTRDCalibViewer.cxx:1090
 AliTRDCalibViewer.cxx:1091
 AliTRDCalibViewer.cxx:1092
 AliTRDCalibViewer.cxx:1093
 AliTRDCalibViewer.cxx:1094
 AliTRDCalibViewer.cxx:1095
 AliTRDCalibViewer.cxx:1096
 AliTRDCalibViewer.cxx:1097
 AliTRDCalibViewer.cxx:1098
 AliTRDCalibViewer.cxx:1099
 AliTRDCalibViewer.cxx:1100
 AliTRDCalibViewer.cxx:1101
 AliTRDCalibViewer.cxx:1102
 AliTRDCalibViewer.cxx:1103
 AliTRDCalibViewer.cxx:1104
 AliTRDCalibViewer.cxx:1105
 AliTRDCalibViewer.cxx:1106
 AliTRDCalibViewer.cxx:1107
 AliTRDCalibViewer.cxx:1108
 AliTRDCalibViewer.cxx:1109
 AliTRDCalibViewer.cxx:1110
 AliTRDCalibViewer.cxx:1111
 AliTRDCalibViewer.cxx:1112
 AliTRDCalibViewer.cxx:1113
 AliTRDCalibViewer.cxx:1114
 AliTRDCalibViewer.cxx:1115
 AliTRDCalibViewer.cxx:1116
 AliTRDCalibViewer.cxx:1117
 AliTRDCalibViewer.cxx:1118
 AliTRDCalibViewer.cxx:1119
 AliTRDCalibViewer.cxx:1120
 AliTRDCalibViewer.cxx:1121
 AliTRDCalibViewer.cxx:1122
 AliTRDCalibViewer.cxx:1123
 AliTRDCalibViewer.cxx:1124
 AliTRDCalibViewer.cxx:1125
 AliTRDCalibViewer.cxx:1126
 AliTRDCalibViewer.cxx:1127
 AliTRDCalibViewer.cxx:1128
 AliTRDCalibViewer.cxx:1129
 AliTRDCalibViewer.cxx:1130
 AliTRDCalibViewer.cxx:1131
 AliTRDCalibViewer.cxx:1132
 AliTRDCalibViewer.cxx:1133
 AliTRDCalibViewer.cxx:1134
 AliTRDCalibViewer.cxx:1135
 AliTRDCalibViewer.cxx:1136
 AliTRDCalibViewer.cxx:1137
 AliTRDCalibViewer.cxx:1138
 AliTRDCalibViewer.cxx:1139
 AliTRDCalibViewer.cxx:1140
 AliTRDCalibViewer.cxx:1141
 AliTRDCalibViewer.cxx:1142
 AliTRDCalibViewer.cxx:1143
 AliTRDCalibViewer.cxx:1144
 AliTRDCalibViewer.cxx:1145
 AliTRDCalibViewer.cxx:1146
 AliTRDCalibViewer.cxx:1147
 AliTRDCalibViewer.cxx:1148
 AliTRDCalibViewer.cxx:1149
 AliTRDCalibViewer.cxx:1150
 AliTRDCalibViewer.cxx:1151
 AliTRDCalibViewer.cxx:1152
 AliTRDCalibViewer.cxx:1153
 AliTRDCalibViewer.cxx:1154
 AliTRDCalibViewer.cxx:1155
 AliTRDCalibViewer.cxx:1156
 AliTRDCalibViewer.cxx:1157
 AliTRDCalibViewer.cxx:1158
 AliTRDCalibViewer.cxx:1159
 AliTRDCalibViewer.cxx:1160
 AliTRDCalibViewer.cxx:1161
 AliTRDCalibViewer.cxx:1162
 AliTRDCalibViewer.cxx:1163
 AliTRDCalibViewer.cxx:1164
 AliTRDCalibViewer.cxx:1165
 AliTRDCalibViewer.cxx:1166
 AliTRDCalibViewer.cxx:1167
 AliTRDCalibViewer.cxx:1168
 AliTRDCalibViewer.cxx:1169
 AliTRDCalibViewer.cxx:1170
 AliTRDCalibViewer.cxx:1171
 AliTRDCalibViewer.cxx:1172
 AliTRDCalibViewer.cxx:1173
 AliTRDCalibViewer.cxx:1174
 AliTRDCalibViewer.cxx:1175
 AliTRDCalibViewer.cxx:1176
 AliTRDCalibViewer.cxx:1177
 AliTRDCalibViewer.cxx:1178
 AliTRDCalibViewer.cxx:1179
 AliTRDCalibViewer.cxx:1180
 AliTRDCalibViewer.cxx:1181
 AliTRDCalibViewer.cxx:1182
 AliTRDCalibViewer.cxx:1183
 AliTRDCalibViewer.cxx:1184
 AliTRDCalibViewer.cxx:1185
 AliTRDCalibViewer.cxx:1186
 AliTRDCalibViewer.cxx:1187
 AliTRDCalibViewer.cxx:1188
 AliTRDCalibViewer.cxx:1189
 AliTRDCalibViewer.cxx:1190
 AliTRDCalibViewer.cxx:1191
 AliTRDCalibViewer.cxx:1192
 AliTRDCalibViewer.cxx:1193
 AliTRDCalibViewer.cxx:1194
 AliTRDCalibViewer.cxx:1195
 AliTRDCalibViewer.cxx:1196
 AliTRDCalibViewer.cxx:1197
 AliTRDCalibViewer.cxx:1198
 AliTRDCalibViewer.cxx:1199
 AliTRDCalibViewer.cxx:1200
 AliTRDCalibViewer.cxx:1201
 AliTRDCalibViewer.cxx:1202
 AliTRDCalibViewer.cxx:1203
 AliTRDCalibViewer.cxx:1204
 AliTRDCalibViewer.cxx:1205
 AliTRDCalibViewer.cxx:1206
 AliTRDCalibViewer.cxx:1207
 AliTRDCalibViewer.cxx:1208
 AliTRDCalibViewer.cxx:1209
 AliTRDCalibViewer.cxx:1210
 AliTRDCalibViewer.cxx:1211
 AliTRDCalibViewer.cxx:1212
 AliTRDCalibViewer.cxx:1213
 AliTRDCalibViewer.cxx:1214
 AliTRDCalibViewer.cxx:1215
 AliTRDCalibViewer.cxx:1216
 AliTRDCalibViewer.cxx:1217
 AliTRDCalibViewer.cxx:1218
 AliTRDCalibViewer.cxx:1219
 AliTRDCalibViewer.cxx:1220
 AliTRDCalibViewer.cxx:1221
 AliTRDCalibViewer.cxx:1222
 AliTRDCalibViewer.cxx:1223
 AliTRDCalibViewer.cxx:1224
 AliTRDCalibViewer.cxx:1225
 AliTRDCalibViewer.cxx:1226
 AliTRDCalibViewer.cxx:1227
 AliTRDCalibViewer.cxx:1228
 AliTRDCalibViewer.cxx:1229
 AliTRDCalibViewer.cxx:1230
 AliTRDCalibViewer.cxx:1231
 AliTRDCalibViewer.cxx:1232
 AliTRDCalibViewer.cxx:1233
 AliTRDCalibViewer.cxx:1234
 AliTRDCalibViewer.cxx:1235
 AliTRDCalibViewer.cxx:1236
 AliTRDCalibViewer.cxx:1237
 AliTRDCalibViewer.cxx:1238
 AliTRDCalibViewer.cxx:1239
 AliTRDCalibViewer.cxx:1240
 AliTRDCalibViewer.cxx:1241
 AliTRDCalibViewer.cxx:1242
 AliTRDCalibViewer.cxx:1243
 AliTRDCalibViewer.cxx:1244
 AliTRDCalibViewer.cxx:1245
 AliTRDCalibViewer.cxx:1246
 AliTRDCalibViewer.cxx:1247
 AliTRDCalibViewer.cxx:1248
 AliTRDCalibViewer.cxx:1249
 AliTRDCalibViewer.cxx:1250
 AliTRDCalibViewer.cxx:1251
 AliTRDCalibViewer.cxx:1252
 AliTRDCalibViewer.cxx:1253
 AliTRDCalibViewer.cxx:1254
 AliTRDCalibViewer.cxx:1255
 AliTRDCalibViewer.cxx:1256
 AliTRDCalibViewer.cxx:1257
 AliTRDCalibViewer.cxx:1258
 AliTRDCalibViewer.cxx:1259
 AliTRDCalibViewer.cxx:1260
 AliTRDCalibViewer.cxx:1261
 AliTRDCalibViewer.cxx:1262
 AliTRDCalibViewer.cxx:1263
 AliTRDCalibViewer.cxx:1264
 AliTRDCalibViewer.cxx:1265
 AliTRDCalibViewer.cxx:1266
 AliTRDCalibViewer.cxx:1267
 AliTRDCalibViewer.cxx:1268
 AliTRDCalibViewer.cxx:1269
 AliTRDCalibViewer.cxx:1270
 AliTRDCalibViewer.cxx:1271
 AliTRDCalibViewer.cxx:1272
 AliTRDCalibViewer.cxx:1273
 AliTRDCalibViewer.cxx:1274
 AliTRDCalibViewer.cxx:1275
 AliTRDCalibViewer.cxx:1276
 AliTRDCalibViewer.cxx:1277
 AliTRDCalibViewer.cxx:1278
 AliTRDCalibViewer.cxx:1279
 AliTRDCalibViewer.cxx:1280
 AliTRDCalibViewer.cxx:1281
 AliTRDCalibViewer.cxx:1282
 AliTRDCalibViewer.cxx:1283
 AliTRDCalibViewer.cxx:1284
 AliTRDCalibViewer.cxx:1285
 AliTRDCalibViewer.cxx:1286
 AliTRDCalibViewer.cxx:1287
 AliTRDCalibViewer.cxx:1288
 AliTRDCalibViewer.cxx:1289
 AliTRDCalibViewer.cxx:1290
 AliTRDCalibViewer.cxx:1291
 AliTRDCalibViewer.cxx:1292
 AliTRDCalibViewer.cxx:1293
 AliTRDCalibViewer.cxx:1294
 AliTRDCalibViewer.cxx:1295
 AliTRDCalibViewer.cxx:1296
 AliTRDCalibViewer.cxx:1297
 AliTRDCalibViewer.cxx:1298
 AliTRDCalibViewer.cxx:1299
 AliTRDCalibViewer.cxx:1300
 AliTRDCalibViewer.cxx:1301
 AliTRDCalibViewer.cxx:1302
 AliTRDCalibViewer.cxx:1303
 AliTRDCalibViewer.cxx:1304
 AliTRDCalibViewer.cxx:1305
 AliTRDCalibViewer.cxx:1306
 AliTRDCalibViewer.cxx:1307
 AliTRDCalibViewer.cxx:1308
 AliTRDCalibViewer.cxx:1309
 AliTRDCalibViewer.cxx:1310
 AliTRDCalibViewer.cxx:1311
 AliTRDCalibViewer.cxx:1312
 AliTRDCalibViewer.cxx:1313
 AliTRDCalibViewer.cxx:1314
 AliTRDCalibViewer.cxx:1315
 AliTRDCalibViewer.cxx:1316
 AliTRDCalibViewer.cxx:1317
 AliTRDCalibViewer.cxx:1318
 AliTRDCalibViewer.cxx:1319
 AliTRDCalibViewer.cxx:1320
 AliTRDCalibViewer.cxx:1321
 AliTRDCalibViewer.cxx:1322
 AliTRDCalibViewer.cxx:1323
 AliTRDCalibViewer.cxx:1324
 AliTRDCalibViewer.cxx:1325
 AliTRDCalibViewer.cxx:1326
 AliTRDCalibViewer.cxx:1327
 AliTRDCalibViewer.cxx:1328
 AliTRDCalibViewer.cxx:1329
 AliTRDCalibViewer.cxx:1330
 AliTRDCalibViewer.cxx:1331
 AliTRDCalibViewer.cxx:1332
 AliTRDCalibViewer.cxx:1333
 AliTRDCalibViewer.cxx:1334
 AliTRDCalibViewer.cxx:1335
 AliTRDCalibViewer.cxx:1336
 AliTRDCalibViewer.cxx:1337
 AliTRDCalibViewer.cxx:1338
 AliTRDCalibViewer.cxx:1339
 AliTRDCalibViewer.cxx:1340
 AliTRDCalibViewer.cxx:1341
 AliTRDCalibViewer.cxx:1342
 AliTRDCalibViewer.cxx:1343
 AliTRDCalibViewer.cxx:1344
 AliTRDCalibViewer.cxx:1345
 AliTRDCalibViewer.cxx:1346
 AliTRDCalibViewer.cxx:1347
 AliTRDCalibViewer.cxx:1348
 AliTRDCalibViewer.cxx:1349
 AliTRDCalibViewer.cxx:1350
 AliTRDCalibViewer.cxx:1351
 AliTRDCalibViewer.cxx:1352
 AliTRDCalibViewer.cxx:1353
 AliTRDCalibViewer.cxx:1354
 AliTRDCalibViewer.cxx:1355
 AliTRDCalibViewer.cxx:1356
 AliTRDCalibViewer.cxx:1357
 AliTRDCalibViewer.cxx:1358
 AliTRDCalibViewer.cxx:1359
 AliTRDCalibViewer.cxx:1360
 AliTRDCalibViewer.cxx:1361
 AliTRDCalibViewer.cxx:1362
 AliTRDCalibViewer.cxx:1363
 AliTRDCalibViewer.cxx:1364
 AliTRDCalibViewer.cxx:1365
 AliTRDCalibViewer.cxx:1366
 AliTRDCalibViewer.cxx:1367
 AliTRDCalibViewer.cxx:1368
 AliTRDCalibViewer.cxx:1369
 AliTRDCalibViewer.cxx:1370
 AliTRDCalibViewer.cxx:1371
 AliTRDCalibViewer.cxx:1372
 AliTRDCalibViewer.cxx:1373
 AliTRDCalibViewer.cxx:1374
 AliTRDCalibViewer.cxx:1375
 AliTRDCalibViewer.cxx:1376
 AliTRDCalibViewer.cxx:1377
 AliTRDCalibViewer.cxx:1378
 AliTRDCalibViewer.cxx:1379
 AliTRDCalibViewer.cxx:1380
 AliTRDCalibViewer.cxx:1381
 AliTRDCalibViewer.cxx:1382
 AliTRDCalibViewer.cxx:1383
 AliTRDCalibViewer.cxx:1384
 AliTRDCalibViewer.cxx:1385
 AliTRDCalibViewer.cxx:1386
 AliTRDCalibViewer.cxx:1387
 AliTRDCalibViewer.cxx:1388
 AliTRDCalibViewer.cxx:1389
 AliTRDCalibViewer.cxx:1390
 AliTRDCalibViewer.cxx:1391
 AliTRDCalibViewer.cxx:1392
 AliTRDCalibViewer.cxx:1393
 AliTRDCalibViewer.cxx:1394
 AliTRDCalibViewer.cxx:1395
 AliTRDCalibViewer.cxx:1396
 AliTRDCalibViewer.cxx:1397
 AliTRDCalibViewer.cxx:1398
 AliTRDCalibViewer.cxx:1399
 AliTRDCalibViewer.cxx:1400
 AliTRDCalibViewer.cxx:1401
 AliTRDCalibViewer.cxx:1402
 AliTRDCalibViewer.cxx:1403
 AliTRDCalibViewer.cxx:1404
 AliTRDCalibViewer.cxx:1405
 AliTRDCalibViewer.cxx:1406
 AliTRDCalibViewer.cxx:1407
 AliTRDCalibViewer.cxx:1408
 AliTRDCalibViewer.cxx:1409
 AliTRDCalibViewer.cxx:1410
 AliTRDCalibViewer.cxx:1411
 AliTRDCalibViewer.cxx:1412
 AliTRDCalibViewer.cxx:1413
 AliTRDCalibViewer.cxx:1414
 AliTRDCalibViewer.cxx:1415
 AliTRDCalibViewer.cxx:1416
 AliTRDCalibViewer.cxx:1417
 AliTRDCalibViewer.cxx:1418
 AliTRDCalibViewer.cxx:1419
 AliTRDCalibViewer.cxx:1420
 AliTRDCalibViewer.cxx:1421
 AliTRDCalibViewer.cxx:1422
 AliTRDCalibViewer.cxx:1423
 AliTRDCalibViewer.cxx:1424
 AliTRDCalibViewer.cxx:1425
 AliTRDCalibViewer.cxx:1426
 AliTRDCalibViewer.cxx:1427
 AliTRDCalibViewer.cxx:1428
 AliTRDCalibViewer.cxx:1429
 AliTRDCalibViewer.cxx:1430
 AliTRDCalibViewer.cxx:1431
 AliTRDCalibViewer.cxx:1432
 AliTRDCalibViewer.cxx:1433
 AliTRDCalibViewer.cxx:1434
 AliTRDCalibViewer.cxx:1435
 AliTRDCalibViewer.cxx:1436
 AliTRDCalibViewer.cxx:1437
 AliTRDCalibViewer.cxx:1438
 AliTRDCalibViewer.cxx:1439
 AliTRDCalibViewer.cxx:1440
 AliTRDCalibViewer.cxx:1441
 AliTRDCalibViewer.cxx:1442
 AliTRDCalibViewer.cxx:1443
 AliTRDCalibViewer.cxx:1444
 AliTRDCalibViewer.cxx:1445
 AliTRDCalibViewer.cxx:1446
 AliTRDCalibViewer.cxx:1447
 AliTRDCalibViewer.cxx:1448
 AliTRDCalibViewer.cxx:1449
 AliTRDCalibViewer.cxx:1450
 AliTRDCalibViewer.cxx:1451
 AliTRDCalibViewer.cxx:1452
 AliTRDCalibViewer.cxx:1453
 AliTRDCalibViewer.cxx:1454
 AliTRDCalibViewer.cxx:1455
 AliTRDCalibViewer.cxx:1456
 AliTRDCalibViewer.cxx:1457
 AliTRDCalibViewer.cxx:1458
 AliTRDCalibViewer.cxx:1459
 AliTRDCalibViewer.cxx:1460
 AliTRDCalibViewer.cxx:1461
 AliTRDCalibViewer.cxx:1462
 AliTRDCalibViewer.cxx:1463
 AliTRDCalibViewer.cxx:1464
 AliTRDCalibViewer.cxx:1465
 AliTRDCalibViewer.cxx:1466
 AliTRDCalibViewer.cxx:1467
 AliTRDCalibViewer.cxx:1468
 AliTRDCalibViewer.cxx:1469
 AliTRDCalibViewer.cxx:1470
 AliTRDCalibViewer.cxx:1471
 AliTRDCalibViewer.cxx:1472
 AliTRDCalibViewer.cxx:1473
 AliTRDCalibViewer.cxx:1474
 AliTRDCalibViewer.cxx:1475
 AliTRDCalibViewer.cxx:1476
 AliTRDCalibViewer.cxx:1477
 AliTRDCalibViewer.cxx:1478
 AliTRDCalibViewer.cxx:1479
 AliTRDCalibViewer.cxx:1480
 AliTRDCalibViewer.cxx:1481
 AliTRDCalibViewer.cxx:1482
 AliTRDCalibViewer.cxx:1483
 AliTRDCalibViewer.cxx:1484
 AliTRDCalibViewer.cxx:1485
 AliTRDCalibViewer.cxx:1486
 AliTRDCalibViewer.cxx:1487
 AliTRDCalibViewer.cxx:1488
 AliTRDCalibViewer.cxx:1489
 AliTRDCalibViewer.cxx:1490
 AliTRDCalibViewer.cxx:1491
 AliTRDCalibViewer.cxx:1492
 AliTRDCalibViewer.cxx:1493
 AliTRDCalibViewer.cxx:1494
 AliTRDCalibViewer.cxx:1495
 AliTRDCalibViewer.cxx:1496
 AliTRDCalibViewer.cxx:1497
 AliTRDCalibViewer.cxx:1498
 AliTRDCalibViewer.cxx:1499
 AliTRDCalibViewer.cxx:1500
 AliTRDCalibViewer.cxx:1501
 AliTRDCalibViewer.cxx:1502
 AliTRDCalibViewer.cxx:1503
 AliTRDCalibViewer.cxx:1504
 AliTRDCalibViewer.cxx:1505
 AliTRDCalibViewer.cxx:1506
 AliTRDCalibViewer.cxx:1507
 AliTRDCalibViewer.cxx:1508
 AliTRDCalibViewer.cxx:1509
 AliTRDCalibViewer.cxx:1510
 AliTRDCalibViewer.cxx:1511
 AliTRDCalibViewer.cxx:1512
 AliTRDCalibViewer.cxx:1513
 AliTRDCalibViewer.cxx:1514
 AliTRDCalibViewer.cxx:1515
 AliTRDCalibViewer.cxx:1516
 AliTRDCalibViewer.cxx:1517
 AliTRDCalibViewer.cxx:1518
 AliTRDCalibViewer.cxx:1519
 AliTRDCalibViewer.cxx:1520
 AliTRDCalibViewer.cxx:1521
 AliTRDCalibViewer.cxx:1522
 AliTRDCalibViewer.cxx:1523
 AliTRDCalibViewer.cxx:1524
 AliTRDCalibViewer.cxx:1525
 AliTRDCalibViewer.cxx:1526
 AliTRDCalibViewer.cxx:1527
 AliTRDCalibViewer.cxx:1528
 AliTRDCalibViewer.cxx:1529
 AliTRDCalibViewer.cxx:1530
 AliTRDCalibViewer.cxx:1531
 AliTRDCalibViewer.cxx:1532
 AliTRDCalibViewer.cxx:1533
 AliTRDCalibViewer.cxx:1534
 AliTRDCalibViewer.cxx:1535
 AliTRDCalibViewer.cxx:1536
 AliTRDCalibViewer.cxx:1537
 AliTRDCalibViewer.cxx:1538
 AliTRDCalibViewer.cxx:1539
 AliTRDCalibViewer.cxx:1540
 AliTRDCalibViewer.cxx:1541
 AliTRDCalibViewer.cxx:1542
 AliTRDCalibViewer.cxx:1543
 AliTRDCalibViewer.cxx:1544
 AliTRDCalibViewer.cxx:1545
 AliTRDCalibViewer.cxx:1546
 AliTRDCalibViewer.cxx:1547
 AliTRDCalibViewer.cxx:1548
 AliTRDCalibViewer.cxx:1549
 AliTRDCalibViewer.cxx:1550
 AliTRDCalibViewer.cxx:1551
 AliTRDCalibViewer.cxx:1552
 AliTRDCalibViewer.cxx:1553
 AliTRDCalibViewer.cxx:1554
 AliTRDCalibViewer.cxx:1555
 AliTRDCalibViewer.cxx:1556
 AliTRDCalibViewer.cxx:1557
 AliTRDCalibViewer.cxx:1558
 AliTRDCalibViewer.cxx:1559
 AliTRDCalibViewer.cxx:1560
 AliTRDCalibViewer.cxx:1561
 AliTRDCalibViewer.cxx:1562
 AliTRDCalibViewer.cxx:1563
 AliTRDCalibViewer.cxx:1564
 AliTRDCalibViewer.cxx:1565
 AliTRDCalibViewer.cxx:1566
 AliTRDCalibViewer.cxx:1567
 AliTRDCalibViewer.cxx:1568
 AliTRDCalibViewer.cxx:1569
 AliTRDCalibViewer.cxx:1570
 AliTRDCalibViewer.cxx:1571
 AliTRDCalibViewer.cxx:1572
 AliTRDCalibViewer.cxx:1573
 AliTRDCalibViewer.cxx:1574
 AliTRDCalibViewer.cxx:1575
 AliTRDCalibViewer.cxx:1576
 AliTRDCalibViewer.cxx:1577
 AliTRDCalibViewer.cxx:1578
 AliTRDCalibViewer.cxx:1579
 AliTRDCalibViewer.cxx:1580
 AliTRDCalibViewer.cxx:1581
 AliTRDCalibViewer.cxx:1582
 AliTRDCalibViewer.cxx:1583
 AliTRDCalibViewer.cxx:1584
 AliTRDCalibViewer.cxx:1585
 AliTRDCalibViewer.cxx:1586
 AliTRDCalibViewer.cxx:1587
 AliTRDCalibViewer.cxx:1588