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

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  TRD calibration class for parameters which saved per pad                 //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include <TMath.h>
#include <TH2F.h>
#include <TH1F.h>
#include <TStyle.h>

//#include "AliMathBase.h"

#include "AliTRDCalPad.h"
#include "AliTRDCalROC.h"
#include "AliTRDCalDet.h"
#include "AliTRDpadPlane.h"
#include "AliTRDgeometry.h"

ClassImp(AliTRDCalPad)

//_____________________________________________________________________________
AliTRDCalPad::AliTRDCalPad():TNamed()
{
  //
  // AliTRDCalPad default constructor
  //

  for (Int_t idet = 0; idet < kNdet; idet++) {
    fROC[idet] = 0;
  }

}

//_____________________________________________________________________________
AliTRDCalPad::AliTRDCalPad(const Text_t *name, const Text_t *title)
                :TNamed(name,title)
{
  //
  // AliTRDCalPad constructor
  //

  for (Int_t isec = 0; isec < kNsect; isec++) {
    for (Int_t ipla = 0; ipla < kNplan; ipla++) {
      for (Int_t icha = 0; icha < kNcham; icha++) {
        Int_t idet = GetDet(ipla,icha,isec);
        fROC[idet] = new AliTRDCalROC(ipla,icha);
      }
    }
  }

}

//_____________________________________________________________________________
AliTRDCalPad::AliTRDCalPad(const AliTRDCalPad &c)
  :TNamed(c)
{
  //
  // AliTRDCalPad copy constructor
  //

  for (Int_t idet = 0; idet < kNdet; idet++) {
    fROC[idet] = new AliTRDCalROC(*((AliTRDCalPad &) c).fROC[idet]);
  }

}

//_____________________________________________________________________________
AliTRDCalPad::~AliTRDCalPad()
{
  //
  // AliTRDCalPad destructor
  //

  for (Int_t idet = 0; idet < kNdet; idet++) {
    if (fROC[idet]) {
      delete fROC[idet];
      fROC[idet] = 0;
    }
  }

}

//_____________________________________________________________________________
AliTRDCalPad &AliTRDCalPad::operator=(const AliTRDCalPad &c)
{
  //
  // Assignment operator
  //

  if (this != &c) ((AliTRDCalPad &) c).Copy(*this);
  return *this;

}

//_____________________________________________________________________________
void AliTRDCalPad::Copy(TObject &c) const
{
  //
  // Copy function
  //

  for (Int_t idet = 0; idet < kNdet; idet++) {
    if (((AliTRDCalPad &) c).fROC[idet]) {
      delete ((AliTRDCalPad &) c).fROC[idet];
    }
    ((AliTRDCalPad &) c).fROC[idet] = new AliTRDCalROC();
    if (fROC[idet]) {
      fROC[idet]->Copy(*((AliTRDCalPad &) c).fROC[idet]);
    }
  }

  TObject::Copy(c);

}

//_____________________________________________________________________________
Bool_t AliTRDCalPad::ScaleROCs(const AliTRDCalDet* values)
{
  // 
  // Scales ROCs of this class with the values from the class <values>
  // Is used if an AliTRDCalPad object defines local variations of a parameter
  // defined per detector using a AliTRDCalDet class
  //
  
  if (!values)
    return kFALSE;
  Bool_t result = kTRUE;
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if (fROC[idet]) { 
      if(!fROC[idet]->Multiply(values->GetValue(idet))) result = kFALSE;
    }
  }
  return result;
}

//_____________________________________________________________________________
void AliTRDCalPad::SetCalROC(Int_t det, AliTRDCalROC* calroc)
{
  // 
  // Set the AliTRDCalROC to this one
  //
  
  if (!calroc) return;
  if (fROC[det]) { 
    for(Int_t icol = 0; icol < calroc->GetNcols(); icol++){
      for(Int_t irow = 0; irow < calroc->GetNrows(); irow++){
	fROC[det]->SetValue(icol,irow,calroc->GetValue(icol,irow));
      }
    }
  }

}
//_____________________________________________________________________________
Double_t AliTRDCalPad::GetMeanRMS(Double_t &rms, const AliTRDCalDet *calDet, Int_t type)
{
    //
    // Calculate mean an RMS of all rocs
    // If calDet correct the CalROC from the detector coefficient
    // type == 0 for gain and vdrift
    // type == 1 for t0 
    //
  Double_t factor = 0.0;
  if(type == 0) factor = 1.0;
  Double_t sum = 0, sum2 = 0, n=0, val=0;
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if(calDet) factor = calDet->GetValue(idet);
    AliTRDCalROC *calRoc = fROC[idet];
    if ( calRoc ){
      for (Int_t irow=0; irow<calRoc->GetNrows(); irow++){
	for (Int_t icol=0; icol<calRoc->GetNcols(); icol++){
	  if(type == 0) val = calRoc->GetValue(icol,irow)*factor;
	  else  val = calRoc->GetValue(icol,irow)+factor;
	  sum+=val;
	  sum2+=val*val;
	  n++;
	}
      }
    }
  }
  Double_t n1 = 1./n;
  Double_t mean = sum*n1;
  rms  = TMath::Sqrt(TMath::Abs(sum2*n1-mean*mean));
  return mean;
}

//_____________________________________________________________________________
Double_t AliTRDCalPad::GetMean(const AliTRDCalDet *calDet, Int_t type
                             , AliTRDCalPad* const outlierPad)
{
    //
    // return mean of the mean of all ROCs
    // If calDet correct the CalROC from the detector coefficient
    // type == 0 for gain and vdrift
    // type == 1 for t0 
    //
  Double_t factor = 0.0;
  if(type == 0) factor = 1.0;
  Double_t arr[kNdet];
  Int_t n=0;
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if(calDet) factor = calDet->GetValue(idet);
    AliTRDCalROC *calRoc = fROC[idet];
    if ( calRoc ){
      AliTRDCalROC* outlierROC = 0;
      if (outlierPad) outlierROC = outlierPad->GetCalROC(idet);
      if(type == 0)  arr[n] = calRoc->GetMean(outlierROC)*factor;
      else arr[n] = calRoc->GetMean(outlierROC)+factor;
      n++;
    }
  }
  return TMath::Mean(n,arr);
}

//_____________________________________________________________________________
Double_t AliTRDCalPad::GetRMS(const AliTRDCalDet *calDet, Int_t type
                            , AliTRDCalPad* const outlierPad)
{
    //
    // return mean of the RMS of all ROCs
    // If calDet correct the CalROC from the detector coefficient
    // type == 0 for gain and vdrift
    // type == 1 for t0 
    //
  Double_t factor = 0.0;
  if(type == 0) factor = 1.0;
  Double_t arr[kNdet];
  Int_t n=0;
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if(calDet) factor = calDet->GetValue(idet);
    AliTRDCalROC *calRoc = fROC[idet];
    if ( calRoc ){
      AliTRDCalROC* outlierROC = 0;
      if (outlierPad) outlierROC = outlierPad->GetCalROC(idet);
      if(type == 0)  arr[n] = calRoc->GetRMS(outlierROC)*factor;
      else  arr[n] = calRoc->GetRMS(outlierROC);
      n++;
    }
  }
    return TMath::Mean(n,arr);
}

//_____________________________________________________________________________
Double_t AliTRDCalPad::GetMedian(const AliTRDCalDet *calDet, Int_t type
                               , AliTRDCalPad* const outlierPad)
{
    //
    // return mean of the median of all ROCs
    // If AliTRDCalDet, the correct the CalROC from the detector coefficient
    // type == 0 for gain and vdrift
    // type == 1 for t0 
    //
  Double_t factor = 0.0;
  if(type == 0) factor = 1.0;
  Double_t arr[kNdet];
  Int_t n=0;
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if(calDet) factor = calDet->GetValue(idet);
    AliTRDCalROC *calRoc = fROC[idet];
    if ( calRoc ){
      AliTRDCalROC* outlierROC = 0;
      if (outlierPad) outlierROC = outlierPad->GetCalROC(idet);
      if(type == 0)  arr[n] = calRoc->GetMedian(outlierROC)*factor;
      else  arr[n] = calRoc->GetMedian(outlierROC)+factor;
      n++;
    }
  }
  return TMath::Mean(n,arr);
}

//_____________________________________________________________________________
Double_t AliTRDCalPad::GetLTM(Double_t *sigma, Double_t fraction
                            , const AliTRDCalDet *calDet, Int_t type
                            , AliTRDCalPad* const outlierPad)
{
    //
    // return mean of the LTM and sigma of all ROCs
    // If calDet correct the CalROC from the detector coefficient
    // type == 0 for gain and vdrift
    // type == 1 for t0 
    //
  Double_t factor = 0.0;
  if(type == 0) factor = 1.0;
  Double_t arrm[kNdet];
  Double_t arrs[kNdet];
  Double_t *sTemp=0x0;
  Int_t n=0;
  
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if(calDet) factor = calDet->GetValue(idet);
    AliTRDCalROC *calRoc = fROC[idet];
    if ( calRoc ){
      if ( sigma ) sTemp=arrs+n;
      AliTRDCalROC* outlierROC = 0;
      if (outlierPad) outlierROC = outlierPad->GetCalROC(idet);
      if(type == 0)  arrm[n] = calRoc->GetLTM(sTemp,fraction, outlierROC)*factor;
      else arrm[n] = calRoc->GetLTM(sTemp,fraction, outlierROC)+factor;
      n++;
    }
  }
  if ( sigma ) *sigma = TMath::Mean(n,arrs);
  return TMath::Mean(n,arrm);
}

//_____________________________________________________________________________
TH1F * AliTRDCalPad::MakeHisto1D(const AliTRDCalDet *calDet, Int_t typedet
                               , Float_t min, Float_t max,Int_t type)
{
  //
  // make 1D histo
  // type -1 = user defined range
  //       0 = nsigma cut nsigma=min
  // If calDet correct the CalROC from the detector coefficient
  // typedet == 0 for gain and vdrift
  // typedet == 1 for t0
  //
  Float_t kEpsilonr = 0.005;

  Double_t factor = 0.0;
  if(typedet == 0) factor = 1.0;
 
  if (type>=0){
    if (type==0){
      // nsigma range 
      Float_t mean  = GetMean(calDet,typedet);
      Float_t sigma = 0.0;
      if(GetRMS(calDet,typedet) > kEpsilonr) sigma = GetRMS(calDet,typedet);
      else {
	Double_t rms = 0.0;
	sigma = GetMeanRMS(rms,calDet,typedet);
      }
      Float_t nsigma = TMath::Abs(min);
      sigma *= nsigma;
      if(sigma < kEpsilonr) sigma = kEpsilonr;
      min = mean-sigma;
      max = mean+sigma;
    }
    if (type==1){
      // fixed range
      Float_t mean   = GetMedian(calDet,typedet);
      Float_t  delta = min;
      min = mean-delta;
      max = mean+delta;
    }
    if (type==2){
      //
      // LTM mean +- nsigma
      //
      Double_t sigma;
      Float_t mean  = GetLTM(&sigma,max,calDet,typedet);
      sigma*=min;
      if(sigma < kEpsilonr) sigma = kEpsilonr;
      min = mean-sigma;
      max = mean+sigma;
    }
  }
  char  name[1000];
  snprintf(name,1000,"%s Pad 1D",GetTitle());
  TH1F * his = new TH1F(name,name,100, min,max);
    for (Int_t idet = 0; idet < kNdet; idet++) {
      if(calDet) factor = calDet->GetValue(idet);
      if (fROC[idet]){
	for (Int_t irow=0; irow<fROC[idet]->GetNrows(); irow++){
	  for (Int_t icol=0; icol<fROC[idet]->GetNcols(); icol++){
	    if(typedet == 0) his->Fill(fROC[idet]->GetValue(irow,icol)*factor);
	    else his->Fill(fROC[idet]->GetValue(irow,icol)+factor);
	  }
	}
      }
    }
    return his;
}

//_____________________________________________________________________________
TH2F *AliTRDCalPad::MakeHisto2DSmPl(Int_t sm, Int_t pl, const AliTRDCalDet *calDet
                                  , Int_t typedet, Float_t min, Float_t max,Int_t type)
{
  //
  // Make 2D graph
  // sm    - supermodule number
  // pl    - plane number
  // If calDet correct the CalROC from the detector coefficient
  // typedet == 0 for gain and vdrift
  // typedet == 1 for t0
  //
  gStyle->SetPalette(1);
  Double_t factor = 0.0;
  if(typedet == 0) factor = 1.0;

  Float_t kEpsilon = 0.000000000001;
  Float_t kEpsilonr = 0.005;

  AliTRDgeometry *trdGeo = new AliTRDgeometry();

  if (type>=0){
    if (type==0){
      // nsigma range
      Float_t mean  = GetMean(calDet,typedet);
      Float_t sigma = 0.0;
      if(GetRMS(calDet,typedet) > kEpsilonr) sigma = GetRMS(calDet,typedet);
      else {
	Double_t rms = 0.0;
	sigma = GetMeanRMS(rms,calDet,typedet);
      }
      Float_t nsigma = TMath::Abs(min);
      sigma *= nsigma;
      if(sigma < kEpsilonr) sigma = kEpsilonr;
      min = mean-sigma;
      max = mean+sigma;
    }
    if (type==1){
      // fixed range
      Float_t mean   = GetMedian(calDet,typedet);
      Float_t  delta = min;
      min = mean-delta;
      max = mean+delta;
    }
    if (type==2){
      //
      // LTM mean +- nsigma
      //
      Double_t sigma;
      Float_t mean  = GetLTM(&sigma,max,calDet,typedet);
      sigma*=min;
      if(sigma < kEpsilonr) sigma = kEpsilonr;
      min = mean-sigma;
      max = mean+sigma;
    }
  }
  
  AliTRDpadPlane *padPlane0 = trdGeo->GetPadPlane(pl,0);
  Double_t row0    = padPlane0->GetRow0();
  Double_t col0    = padPlane0->GetCol0();

  char  name[1000];
  snprintf(name,1000,"%s Pad 2D sm %d pl %d",GetTitle(),sm,pl);
  TH2F * his = new TH2F( name, name, 76,-TMath::Abs(row0),TMath::Abs(row0),144,-TMath::Abs(col0),TMath::Abs(col0));

  // Where we begin
  Int_t offsetsmpl = 30*sm+pl;
  

  for (Int_t k = 0; k < kNcham; k++){
    Int_t det = offsetsmpl+k*6;
    if(calDet) factor = calDet->GetValue(det);
    if (fROC[det]){
      AliTRDCalROC * calRoc = fROC[det];
      for (Int_t irow=0; irow<calRoc->GetNrows(); irow++){
	for (Int_t icol=0; icol<calRoc->GetNcols(); icol++){
	  if (TMath::Abs(calRoc->GetValue(icol,irow))>kEpsilon){
	    Int_t binz     = 0;
	    Int_t kb       = kNcham-1-k;
	    Int_t krow     = calRoc->GetNrows()-1-irow;
	    Int_t kcol     = calRoc->GetNcols()-1-icol;
	    if(kb > 2) binz = 16*(kb-1)+12+krow+1;
	    else binz = 16*kb+krow+1; 
	    Int_t biny = kcol+1;
	    Float_t value = calRoc->GetValue(icol,irow);
	    if(typedet == 0) his->SetBinContent(binz,biny,value*factor);
	    else his->SetBinContent(binz,biny,value+factor);
	  }
	}
      }
    }
  }
  his->SetXTitle("z (cm)");
  his->SetYTitle("y (cm)");
  his->SetStats(0);
  his->SetMaximum(max);
  his->SetMinimum(min);
  delete trdGeo;
  return his;
}

//_____________________________________________________________________________
TH2F *AliTRDCalPad::MakeHisto2DCh(Int_t ch, const AliTRDCalDet *calDet, Int_t typedet
                                , Float_t min, Float_t max,Int_t type)
{
  //
  // Make 2D graph mean value in z direction
  // ch    - chamber
  // If calDet correct the CalROC from the detector coefficient
  // typedet == 0 for gain and vdrift
  // typedet == 1 for t0
  //
  gStyle->SetPalette(1);
  Double_t factor = 0.0;
  if(typedet == 0) factor = 1.0;

  Float_t kEpsilonr = 0.005;
  
  if (type>=0){
    if (type==0){
      // nsigma range
      Float_t mean  = GetMean(calDet,typedet);
      Float_t sigma = 0.0;
      if(GetRMS(calDet,typedet) > kEpsilonr) sigma = GetRMS(calDet,typedet);
      else {
	Double_t rms = 0.0;
	sigma = GetMeanRMS(rms,calDet,typedet);
      }
      Float_t nsigma = TMath::Abs(min);
      sigma *= nsigma;
      if(sigma < kEpsilonr) sigma = kEpsilonr;
      min = mean-sigma;
      max = mean+sigma;
    }
    if (type==1){
      // fixed range
      Float_t mean   = GetMedian(calDet,typedet);
      Float_t  delta = min;
      min = mean-delta;
      max = mean+delta;
    }
    if (type==2){
      //
      // LTM mean +- nsigma
      //
      Double_t sigma;
      Float_t mean  = GetLTM(&sigma,max,calDet,typedet);
      sigma*=min;
      if(sigma < kEpsilonr) sigma = kEpsilonr;
      min = mean-sigma;
      max = mean+sigma;
    }
  }

  AliTRDgeometry *trdGeo = new AliTRDgeometry();
      
  Float_t kEpsilon = 0.000000000001;

  Double_t poslocal[3]  = {0.0,0.0,0.0};
  Double_t posglobal[3] = {0.0,0.0,0.0};
  
  char  name[1000];
  snprintf(name,1000,"%s Pad 2D ch %d",GetTitle(),ch);
  TH2F * his = new TH2F( name, name, 400,-400.0,400.0,400,-400.0,400.0);

  // Where we begin
  Int_t offsetch = 6*ch;
  

  for (Int_t isec = 0; isec < kNsect; isec++){
    for(Int_t ipl = 0; ipl < kNplan; ipl++){
      Int_t det = offsetch+isec*30+ipl;
      if(calDet) factor = calDet->GetValue(det);
      if (fROC[det]){
	AliTRDCalROC * calRoc = fROC[det];
	AliTRDpadPlane *padPlane = trdGeo->GetPadPlane(ipl,ch);
	for (Int_t icol=0; icol<calRoc->GetNcols(); icol++){
	  poslocal[0] = trdGeo->GetTime0(ipl);
	  poslocal[2] = padPlane->GetRowPos(0);
	  poslocal[1] = padPlane->GetColPos(icol);
	  trdGeo->RotateBack(det,poslocal,posglobal);
	  Int_t binx = 1+TMath::Nint((posglobal[0]+400.0)*0.5);
	  Int_t biny = 1+TMath::Nint((posglobal[1]+400.0)*0.5);
	  Float_t value = 0.0;
	  Int_t nb = 0;
	  for (Int_t irow=0; irow<calRoc->GetNrows(); irow++){
	    if (TMath::Abs(calRoc->GetValue(icol,irow))>kEpsilon){
	      value += calRoc->GetValue(icol,irow);
	      nb++;	    
	    }
	  }
          if (nb > 0) {
	    value = value/nb;
	  }
	  if(typedet == 0) his->SetBinContent(binx,biny,value*factor);
	  else his->SetBinContent(binx,biny,value+factor);
	}
      }
    }    
  }
  his->SetXTitle("x (cm)");
  his->SetYTitle("y (cm)");
  his->SetStats(0);
  his->SetMaximum(max);
  his->SetMinimum(min);
  delete trdGeo;
  return his;
}

//_____________________________________________________________________________
Bool_t AliTRDCalPad::Add(Float_t c1)
{
    //
    // add constant for all channels of all ROCs
    //

  Bool_t result = kTRUE;
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if (fROC[idet]){
      if(!fROC[idet]->Add(c1)) result = kFALSE;
    }
  }
  return result;
}

//_____________________________________________________________________________
Bool_t AliTRDCalPad::Multiply(Float_t c1)
{
    //
    // multiply constant for all channels of all ROCs
    //
  Bool_t result = kTRUE;
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if (fROC[idet]){
      if(!fROC[idet]->Multiply(c1)) result = kFALSE;
    }
  }
  return result;
}

//_____________________________________________________________________________
Bool_t AliTRDCalPad::Add(const AliTRDCalPad * pad, Double_t c1
                       , const AliTRDCalDet * calDet1, const AliTRDCalDet *calDet2
                       , Int_t type)
{
    //
    // add calpad channel by channel multiplied by c1 - all ROCs
    // If calDet1 and calDet2, the correct the CalROC from the detector coefficient
    // then you have calDet1 and the calPad together
    // calDet2 and pad together
    // typedet == 0 for gain and vdrift
    // typedet == 1 for t0
    //
  Float_t kEpsilon = 0.000000000001;
 
  Double_t factor1 = 0.0;
  Double_t factor2 = 0.0;
  if(type == 0) {
    factor1 = 1.0;
    factor2 = 1.0;
  }
  Bool_t result = kTRUE;
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if(calDet1) factor1 = calDet1->GetValue(idet);
    if(calDet2) factor2 = calDet2->GetValue(idet);
    if (fROC[idet]){
      if(type == 0){
	if(TMath::Abs(factor1) > kEpsilon){
	  if(!fROC[idet]->Add(pad->GetCalROC(idet),c1*factor2/factor1)) result = kFALSE;
	}
	else result = kFALSE;
      }
      else{
	AliTRDCalROC *croc = new AliTRDCalROC((const AliTRDCalROC) *pad->GetCalROC(idet));
	if(!croc->Add(factor2)) result = kFALSE;
	if(!fROC[idet]->Add(croc,c1)) result = kFALSE;
      }
    }	 
  }
  return result;
}

//_____________________________________________________________________________
Bool_t AliTRDCalPad::Multiply(const AliTRDCalPad * pad, const AliTRDCalDet * calDet1
                            , const AliTRDCalDet *calDet2, Int_t type)
{
    //
    // multiply calpad channel by channel - all ROCs
    // If calDet1 and calDet2, the correct the CalROC from the detector coefficient
    // then you have calDet1 and the calPad together
    // calDet2 and pad together
    // typedet == 0 for gain and vdrift
    // typedet == 1 for t0
    //
  Float_t kEpsilon = 0.000000000001;
  Bool_t result = kTRUE;
  Double_t factor1 = 0.0;
  Double_t factor2 = 0.0;
  if(type == 0){
    factor1 = 1.0;
    factor2 = 1.0;
  }
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if(calDet1) factor1 = calDet1->GetValue(idet);
    if(calDet2) factor2 = calDet2->GetValue(idet);
    if (fROC[idet]){
      if(type == 0){
	if(TMath::Abs(factor1) > kEpsilon){
	  AliTRDCalROC *croc = new AliTRDCalROC((const AliTRDCalROC) *pad->GetCalROC(idet));
	  if(!croc->Multiply(factor2)) result = kFALSE;
	  if(!fROC[idet]->Multiply(croc)) result = kFALSE;
	}
	else result = kFALSE;
      }
      else{
	AliTRDCalROC *croc2 = new AliTRDCalROC((const AliTRDCalROC) *pad->GetCalROC(idet));
	if(!croc2->Add(factor2)) result = kFALSE;
	if(!fROC[idet]->Add(factor1)) result = kFALSE;
	if(!fROC[idet]->Multiply(croc2)) result = kFALSE;
	if(!fROC[idet]->Add(-factor1)) result = kFALSE;
      }
    }
  }
  return result;
}

//_____________________________________________________________________________
Bool_t AliTRDCalPad::Divide(const AliTRDCalPad * pad, const AliTRDCalDet * calDet1
                          , const AliTRDCalDet *calDet2, Int_t type)
{
    //
    // divide calpad channel by channel - all ROCs
    // If calDet1 and calDet2, the correct the CalROC from the detector coefficient
    // then you have calDet1 and the calPad together
    // calDet2 and pad together
    // typedet == 0 for gain and vdrift
    // typedet == 1 for t0
    //
  Float_t kEpsilon = 0.000000000001;
  Bool_t result = kTRUE;
  Double_t factor1 = 0.0;
  Double_t factor2 = 0.0;
  if(type == 0){
    factor1 = 1.0;
    factor2 = 1.0;
  }
  for (Int_t idet = 0; idet < kNdet; idet++) {
    if(calDet1) factor1 = calDet1->GetValue(idet);
    if(calDet2) factor2 = calDet2->GetValue(idet);
    if (fROC[idet]){
      if(type == 0){
	if(TMath::Abs(factor1) > kEpsilon){
	  AliTRDCalROC *croc = new AliTRDCalROC((const AliTRDCalROC) *pad->GetCalROC(idet));
	  if(!croc->Multiply(factor2)) result = kFALSE;
	  if(!fROC[idet]->Divide(croc)) result = kFALSE;
	}
	else result = kFALSE;
      }
      else{
	AliTRDCalROC *croc2 = new AliTRDCalROC((const AliTRDCalROC) *pad->GetCalROC(idet));
	if(!croc2->Add(factor2)) result = kFALSE;
	if(!fROC[idet]->Add(factor1)) result = kFALSE;
	if(!fROC[idet]->Divide(croc2)) result = kFALSE;
	if(!fROC[idet]->Add(-factor1)) result = kFALSE;
      }
    }
  }
  return result;
}
 AliTRDCalPad.cxx:1
 AliTRDCalPad.cxx:2
 AliTRDCalPad.cxx:3
 AliTRDCalPad.cxx:4
 AliTRDCalPad.cxx:5
 AliTRDCalPad.cxx:6
 AliTRDCalPad.cxx:7
 AliTRDCalPad.cxx:8
 AliTRDCalPad.cxx:9
 AliTRDCalPad.cxx:10
 AliTRDCalPad.cxx:11
 AliTRDCalPad.cxx:12
 AliTRDCalPad.cxx:13
 AliTRDCalPad.cxx:14
 AliTRDCalPad.cxx:15
 AliTRDCalPad.cxx:16
 AliTRDCalPad.cxx:17
 AliTRDCalPad.cxx:18
 AliTRDCalPad.cxx:19
 AliTRDCalPad.cxx:20
 AliTRDCalPad.cxx:21
 AliTRDCalPad.cxx:22
 AliTRDCalPad.cxx:23
 AliTRDCalPad.cxx:24
 AliTRDCalPad.cxx:25
 AliTRDCalPad.cxx:26
 AliTRDCalPad.cxx:27
 AliTRDCalPad.cxx:28
 AliTRDCalPad.cxx:29
 AliTRDCalPad.cxx:30
 AliTRDCalPad.cxx:31
 AliTRDCalPad.cxx:32
 AliTRDCalPad.cxx:33
 AliTRDCalPad.cxx:34
 AliTRDCalPad.cxx:35
 AliTRDCalPad.cxx:36
 AliTRDCalPad.cxx:37
 AliTRDCalPad.cxx:38
 AliTRDCalPad.cxx:39
 AliTRDCalPad.cxx:40
 AliTRDCalPad.cxx:41
 AliTRDCalPad.cxx:42
 AliTRDCalPad.cxx:43
 AliTRDCalPad.cxx:44
 AliTRDCalPad.cxx:45
 AliTRDCalPad.cxx:46
 AliTRDCalPad.cxx:47
 AliTRDCalPad.cxx:48
 AliTRDCalPad.cxx:49
 AliTRDCalPad.cxx:50
 AliTRDCalPad.cxx:51
 AliTRDCalPad.cxx:52
 AliTRDCalPad.cxx:53
 AliTRDCalPad.cxx:54
 AliTRDCalPad.cxx:55
 AliTRDCalPad.cxx:56
 AliTRDCalPad.cxx:57
 AliTRDCalPad.cxx:58
 AliTRDCalPad.cxx:59
 AliTRDCalPad.cxx:60
 AliTRDCalPad.cxx:61
 AliTRDCalPad.cxx:62
 AliTRDCalPad.cxx:63
 AliTRDCalPad.cxx:64
 AliTRDCalPad.cxx:65
 AliTRDCalPad.cxx:66
 AliTRDCalPad.cxx:67
 AliTRDCalPad.cxx:68
 AliTRDCalPad.cxx:69
 AliTRDCalPad.cxx:70
 AliTRDCalPad.cxx:71
 AliTRDCalPad.cxx:72
 AliTRDCalPad.cxx:73
 AliTRDCalPad.cxx:74
 AliTRDCalPad.cxx:75
 AliTRDCalPad.cxx:76
 AliTRDCalPad.cxx:77
 AliTRDCalPad.cxx:78
 AliTRDCalPad.cxx:79
 AliTRDCalPad.cxx:80
 AliTRDCalPad.cxx:81
 AliTRDCalPad.cxx:82
 AliTRDCalPad.cxx:83
 AliTRDCalPad.cxx:84
 AliTRDCalPad.cxx:85
 AliTRDCalPad.cxx:86
 AliTRDCalPad.cxx:87
 AliTRDCalPad.cxx:88
 AliTRDCalPad.cxx:89
 AliTRDCalPad.cxx:90
 AliTRDCalPad.cxx:91
 AliTRDCalPad.cxx:92
 AliTRDCalPad.cxx:93
 AliTRDCalPad.cxx:94
 AliTRDCalPad.cxx:95
 AliTRDCalPad.cxx:96
 AliTRDCalPad.cxx:97
 AliTRDCalPad.cxx:98
 AliTRDCalPad.cxx:99
 AliTRDCalPad.cxx:100
 AliTRDCalPad.cxx:101
 AliTRDCalPad.cxx:102
 AliTRDCalPad.cxx:103
 AliTRDCalPad.cxx:104
 AliTRDCalPad.cxx:105
 AliTRDCalPad.cxx:106
 AliTRDCalPad.cxx:107
 AliTRDCalPad.cxx:108
 AliTRDCalPad.cxx:109
 AliTRDCalPad.cxx:110
 AliTRDCalPad.cxx:111
 AliTRDCalPad.cxx:112
 AliTRDCalPad.cxx:113
 AliTRDCalPad.cxx:114
 AliTRDCalPad.cxx:115
 AliTRDCalPad.cxx:116
 AliTRDCalPad.cxx:117
 AliTRDCalPad.cxx:118
 AliTRDCalPad.cxx:119
 AliTRDCalPad.cxx:120
 AliTRDCalPad.cxx:121
 AliTRDCalPad.cxx:122
 AliTRDCalPad.cxx:123
 AliTRDCalPad.cxx:124
 AliTRDCalPad.cxx:125
 AliTRDCalPad.cxx:126
 AliTRDCalPad.cxx:127
 AliTRDCalPad.cxx:128
 AliTRDCalPad.cxx:129
 AliTRDCalPad.cxx:130
 AliTRDCalPad.cxx:131
 AliTRDCalPad.cxx:132
 AliTRDCalPad.cxx:133
 AliTRDCalPad.cxx:134
 AliTRDCalPad.cxx:135
 AliTRDCalPad.cxx:136
 AliTRDCalPad.cxx:137
 AliTRDCalPad.cxx:138
 AliTRDCalPad.cxx:139
 AliTRDCalPad.cxx:140
 AliTRDCalPad.cxx:141
 AliTRDCalPad.cxx:142
 AliTRDCalPad.cxx:143
 AliTRDCalPad.cxx:144
 AliTRDCalPad.cxx:145
 AliTRDCalPad.cxx:146
 AliTRDCalPad.cxx:147
 AliTRDCalPad.cxx:148
 AliTRDCalPad.cxx:149
 AliTRDCalPad.cxx:150
 AliTRDCalPad.cxx:151
 AliTRDCalPad.cxx:152
 AliTRDCalPad.cxx:153
 AliTRDCalPad.cxx:154
 AliTRDCalPad.cxx:155
 AliTRDCalPad.cxx:156
 AliTRDCalPad.cxx:157
 AliTRDCalPad.cxx:158
 AliTRDCalPad.cxx:159
 AliTRDCalPad.cxx:160
 AliTRDCalPad.cxx:161
 AliTRDCalPad.cxx:162
 AliTRDCalPad.cxx:163
 AliTRDCalPad.cxx:164
 AliTRDCalPad.cxx:165
 AliTRDCalPad.cxx:166
 AliTRDCalPad.cxx:167
 AliTRDCalPad.cxx:168
 AliTRDCalPad.cxx:169
 AliTRDCalPad.cxx:170
 AliTRDCalPad.cxx:171
 AliTRDCalPad.cxx:172
 AliTRDCalPad.cxx:173
 AliTRDCalPad.cxx:174
 AliTRDCalPad.cxx:175
 AliTRDCalPad.cxx:176
 AliTRDCalPad.cxx:177
 AliTRDCalPad.cxx:178
 AliTRDCalPad.cxx:179
 AliTRDCalPad.cxx:180
 AliTRDCalPad.cxx:181
 AliTRDCalPad.cxx:182
 AliTRDCalPad.cxx:183
 AliTRDCalPad.cxx:184
 AliTRDCalPad.cxx:185
 AliTRDCalPad.cxx:186
 AliTRDCalPad.cxx:187
 AliTRDCalPad.cxx:188
 AliTRDCalPad.cxx:189
 AliTRDCalPad.cxx:190
 AliTRDCalPad.cxx:191
 AliTRDCalPad.cxx:192
 AliTRDCalPad.cxx:193
 AliTRDCalPad.cxx:194
 AliTRDCalPad.cxx:195
 AliTRDCalPad.cxx:196
 AliTRDCalPad.cxx:197
 AliTRDCalPad.cxx:198
 AliTRDCalPad.cxx:199
 AliTRDCalPad.cxx:200
 AliTRDCalPad.cxx:201
 AliTRDCalPad.cxx:202
 AliTRDCalPad.cxx:203
 AliTRDCalPad.cxx:204
 AliTRDCalPad.cxx:205
 AliTRDCalPad.cxx:206
 AliTRDCalPad.cxx:207
 AliTRDCalPad.cxx:208
 AliTRDCalPad.cxx:209
 AliTRDCalPad.cxx:210
 AliTRDCalPad.cxx:211
 AliTRDCalPad.cxx:212
 AliTRDCalPad.cxx:213
 AliTRDCalPad.cxx:214
 AliTRDCalPad.cxx:215
 AliTRDCalPad.cxx:216
 AliTRDCalPad.cxx:217
 AliTRDCalPad.cxx:218
 AliTRDCalPad.cxx:219
 AliTRDCalPad.cxx:220
 AliTRDCalPad.cxx:221
 AliTRDCalPad.cxx:222
 AliTRDCalPad.cxx:223
 AliTRDCalPad.cxx:224
 AliTRDCalPad.cxx:225
 AliTRDCalPad.cxx:226
 AliTRDCalPad.cxx:227
 AliTRDCalPad.cxx:228
 AliTRDCalPad.cxx:229
 AliTRDCalPad.cxx:230
 AliTRDCalPad.cxx:231
 AliTRDCalPad.cxx:232
 AliTRDCalPad.cxx:233
 AliTRDCalPad.cxx:234
 AliTRDCalPad.cxx:235
 AliTRDCalPad.cxx:236
 AliTRDCalPad.cxx:237
 AliTRDCalPad.cxx:238
 AliTRDCalPad.cxx:239
 AliTRDCalPad.cxx:240
 AliTRDCalPad.cxx:241
 AliTRDCalPad.cxx:242
 AliTRDCalPad.cxx:243
 AliTRDCalPad.cxx:244
 AliTRDCalPad.cxx:245
 AliTRDCalPad.cxx:246
 AliTRDCalPad.cxx:247
 AliTRDCalPad.cxx:248
 AliTRDCalPad.cxx:249
 AliTRDCalPad.cxx:250
 AliTRDCalPad.cxx:251
 AliTRDCalPad.cxx:252
 AliTRDCalPad.cxx:253
 AliTRDCalPad.cxx:254
 AliTRDCalPad.cxx:255
 AliTRDCalPad.cxx:256
 AliTRDCalPad.cxx:257
 AliTRDCalPad.cxx:258
 AliTRDCalPad.cxx:259
 AliTRDCalPad.cxx:260
 AliTRDCalPad.cxx:261
 AliTRDCalPad.cxx:262
 AliTRDCalPad.cxx:263
 AliTRDCalPad.cxx:264
 AliTRDCalPad.cxx:265
 AliTRDCalPad.cxx:266
 AliTRDCalPad.cxx:267
 AliTRDCalPad.cxx:268
 AliTRDCalPad.cxx:269
 AliTRDCalPad.cxx:270
 AliTRDCalPad.cxx:271
 AliTRDCalPad.cxx:272
 AliTRDCalPad.cxx:273
 AliTRDCalPad.cxx:274
 AliTRDCalPad.cxx:275
 AliTRDCalPad.cxx:276
 AliTRDCalPad.cxx:277
 AliTRDCalPad.cxx:278
 AliTRDCalPad.cxx:279
 AliTRDCalPad.cxx:280
 AliTRDCalPad.cxx:281
 AliTRDCalPad.cxx:282
 AliTRDCalPad.cxx:283
 AliTRDCalPad.cxx:284
 AliTRDCalPad.cxx:285
 AliTRDCalPad.cxx:286
 AliTRDCalPad.cxx:287
 AliTRDCalPad.cxx:288
 AliTRDCalPad.cxx:289
 AliTRDCalPad.cxx:290
 AliTRDCalPad.cxx:291
 AliTRDCalPad.cxx:292
 AliTRDCalPad.cxx:293
 AliTRDCalPad.cxx:294
 AliTRDCalPad.cxx:295
 AliTRDCalPad.cxx:296
 AliTRDCalPad.cxx:297
 AliTRDCalPad.cxx:298
 AliTRDCalPad.cxx:299
 AliTRDCalPad.cxx:300
 AliTRDCalPad.cxx:301
 AliTRDCalPad.cxx:302
 AliTRDCalPad.cxx:303
 AliTRDCalPad.cxx:304
 AliTRDCalPad.cxx:305
 AliTRDCalPad.cxx:306
 AliTRDCalPad.cxx:307
 AliTRDCalPad.cxx:308
 AliTRDCalPad.cxx:309
 AliTRDCalPad.cxx:310
 AliTRDCalPad.cxx:311
 AliTRDCalPad.cxx:312
 AliTRDCalPad.cxx:313
 AliTRDCalPad.cxx:314
 AliTRDCalPad.cxx:315
 AliTRDCalPad.cxx:316
 AliTRDCalPad.cxx:317
 AliTRDCalPad.cxx:318
 AliTRDCalPad.cxx:319
 AliTRDCalPad.cxx:320
 AliTRDCalPad.cxx:321
 AliTRDCalPad.cxx:322
 AliTRDCalPad.cxx:323
 AliTRDCalPad.cxx:324
 AliTRDCalPad.cxx:325
 AliTRDCalPad.cxx:326
 AliTRDCalPad.cxx:327
 AliTRDCalPad.cxx:328
 AliTRDCalPad.cxx:329
 AliTRDCalPad.cxx:330
 AliTRDCalPad.cxx:331
 AliTRDCalPad.cxx:332
 AliTRDCalPad.cxx:333
 AliTRDCalPad.cxx:334
 AliTRDCalPad.cxx:335
 AliTRDCalPad.cxx:336
 AliTRDCalPad.cxx:337
 AliTRDCalPad.cxx:338
 AliTRDCalPad.cxx:339
 AliTRDCalPad.cxx:340
 AliTRDCalPad.cxx:341
 AliTRDCalPad.cxx:342
 AliTRDCalPad.cxx:343
 AliTRDCalPad.cxx:344
 AliTRDCalPad.cxx:345
 AliTRDCalPad.cxx:346
 AliTRDCalPad.cxx:347
 AliTRDCalPad.cxx:348
 AliTRDCalPad.cxx:349
 AliTRDCalPad.cxx:350
 AliTRDCalPad.cxx:351
 AliTRDCalPad.cxx:352
 AliTRDCalPad.cxx:353
 AliTRDCalPad.cxx:354
 AliTRDCalPad.cxx:355
 AliTRDCalPad.cxx:356
 AliTRDCalPad.cxx:357
 AliTRDCalPad.cxx:358
 AliTRDCalPad.cxx:359
 AliTRDCalPad.cxx:360
 AliTRDCalPad.cxx:361
 AliTRDCalPad.cxx:362
 AliTRDCalPad.cxx:363
 AliTRDCalPad.cxx:364
 AliTRDCalPad.cxx:365
 AliTRDCalPad.cxx:366
 AliTRDCalPad.cxx:367
 AliTRDCalPad.cxx:368
 AliTRDCalPad.cxx:369
 AliTRDCalPad.cxx:370
 AliTRDCalPad.cxx:371
 AliTRDCalPad.cxx:372
 AliTRDCalPad.cxx:373
 AliTRDCalPad.cxx:374
 AliTRDCalPad.cxx:375
 AliTRDCalPad.cxx:376
 AliTRDCalPad.cxx:377
 AliTRDCalPad.cxx:378
 AliTRDCalPad.cxx:379
 AliTRDCalPad.cxx:380
 AliTRDCalPad.cxx:381
 AliTRDCalPad.cxx:382
 AliTRDCalPad.cxx:383
 AliTRDCalPad.cxx:384
 AliTRDCalPad.cxx:385
 AliTRDCalPad.cxx:386
 AliTRDCalPad.cxx:387
 AliTRDCalPad.cxx:388
 AliTRDCalPad.cxx:389
 AliTRDCalPad.cxx:390
 AliTRDCalPad.cxx:391
 AliTRDCalPad.cxx:392
 AliTRDCalPad.cxx:393
 AliTRDCalPad.cxx:394
 AliTRDCalPad.cxx:395
 AliTRDCalPad.cxx:396
 AliTRDCalPad.cxx:397
 AliTRDCalPad.cxx:398
 AliTRDCalPad.cxx:399
 AliTRDCalPad.cxx:400
 AliTRDCalPad.cxx:401
 AliTRDCalPad.cxx:402
 AliTRDCalPad.cxx:403
 AliTRDCalPad.cxx:404
 AliTRDCalPad.cxx:405
 AliTRDCalPad.cxx:406
 AliTRDCalPad.cxx:407
 AliTRDCalPad.cxx:408
 AliTRDCalPad.cxx:409
 AliTRDCalPad.cxx:410
 AliTRDCalPad.cxx:411
 AliTRDCalPad.cxx:412
 AliTRDCalPad.cxx:413
 AliTRDCalPad.cxx:414
 AliTRDCalPad.cxx:415
 AliTRDCalPad.cxx:416
 AliTRDCalPad.cxx:417
 AliTRDCalPad.cxx:418
 AliTRDCalPad.cxx:419
 AliTRDCalPad.cxx:420
 AliTRDCalPad.cxx:421
 AliTRDCalPad.cxx:422
 AliTRDCalPad.cxx:423
 AliTRDCalPad.cxx:424
 AliTRDCalPad.cxx:425
 AliTRDCalPad.cxx:426
 AliTRDCalPad.cxx:427
 AliTRDCalPad.cxx:428
 AliTRDCalPad.cxx:429
 AliTRDCalPad.cxx:430
 AliTRDCalPad.cxx:431
 AliTRDCalPad.cxx:432
 AliTRDCalPad.cxx:433
 AliTRDCalPad.cxx:434
 AliTRDCalPad.cxx:435
 AliTRDCalPad.cxx:436
 AliTRDCalPad.cxx:437
 AliTRDCalPad.cxx:438
 AliTRDCalPad.cxx:439
 AliTRDCalPad.cxx:440
 AliTRDCalPad.cxx:441
 AliTRDCalPad.cxx:442
 AliTRDCalPad.cxx:443
 AliTRDCalPad.cxx:444
 AliTRDCalPad.cxx:445
 AliTRDCalPad.cxx:446
 AliTRDCalPad.cxx:447
 AliTRDCalPad.cxx:448
 AliTRDCalPad.cxx:449
 AliTRDCalPad.cxx:450
 AliTRDCalPad.cxx:451
 AliTRDCalPad.cxx:452
 AliTRDCalPad.cxx:453
 AliTRDCalPad.cxx:454
 AliTRDCalPad.cxx:455
 AliTRDCalPad.cxx:456
 AliTRDCalPad.cxx:457
 AliTRDCalPad.cxx:458
 AliTRDCalPad.cxx:459
 AliTRDCalPad.cxx:460
 AliTRDCalPad.cxx:461
 AliTRDCalPad.cxx:462
 AliTRDCalPad.cxx:463
 AliTRDCalPad.cxx:464
 AliTRDCalPad.cxx:465
 AliTRDCalPad.cxx:466
 AliTRDCalPad.cxx:467
 AliTRDCalPad.cxx:468
 AliTRDCalPad.cxx:469
 AliTRDCalPad.cxx:470
 AliTRDCalPad.cxx:471
 AliTRDCalPad.cxx:472
 AliTRDCalPad.cxx:473
 AliTRDCalPad.cxx:474
 AliTRDCalPad.cxx:475
 AliTRDCalPad.cxx:476
 AliTRDCalPad.cxx:477
 AliTRDCalPad.cxx:478
 AliTRDCalPad.cxx:479
 AliTRDCalPad.cxx:480
 AliTRDCalPad.cxx:481
 AliTRDCalPad.cxx:482
 AliTRDCalPad.cxx:483
 AliTRDCalPad.cxx:484
 AliTRDCalPad.cxx:485
 AliTRDCalPad.cxx:486
 AliTRDCalPad.cxx:487
 AliTRDCalPad.cxx:488
 AliTRDCalPad.cxx:489
 AliTRDCalPad.cxx:490
 AliTRDCalPad.cxx:491
 AliTRDCalPad.cxx:492
 AliTRDCalPad.cxx:493
 AliTRDCalPad.cxx:494
 AliTRDCalPad.cxx:495
 AliTRDCalPad.cxx:496
 AliTRDCalPad.cxx:497
 AliTRDCalPad.cxx:498
 AliTRDCalPad.cxx:499
 AliTRDCalPad.cxx:500
 AliTRDCalPad.cxx:501
 AliTRDCalPad.cxx:502
 AliTRDCalPad.cxx:503
 AliTRDCalPad.cxx:504
 AliTRDCalPad.cxx:505
 AliTRDCalPad.cxx:506
 AliTRDCalPad.cxx:507
 AliTRDCalPad.cxx:508
 AliTRDCalPad.cxx:509
 AliTRDCalPad.cxx:510
 AliTRDCalPad.cxx:511
 AliTRDCalPad.cxx:512
 AliTRDCalPad.cxx:513
 AliTRDCalPad.cxx:514
 AliTRDCalPad.cxx:515
 AliTRDCalPad.cxx:516
 AliTRDCalPad.cxx:517
 AliTRDCalPad.cxx:518
 AliTRDCalPad.cxx:519
 AliTRDCalPad.cxx:520
 AliTRDCalPad.cxx:521
 AliTRDCalPad.cxx:522
 AliTRDCalPad.cxx:523
 AliTRDCalPad.cxx:524
 AliTRDCalPad.cxx:525
 AliTRDCalPad.cxx:526
 AliTRDCalPad.cxx:527
 AliTRDCalPad.cxx:528
 AliTRDCalPad.cxx:529
 AliTRDCalPad.cxx:530
 AliTRDCalPad.cxx:531
 AliTRDCalPad.cxx:532
 AliTRDCalPad.cxx:533
 AliTRDCalPad.cxx:534
 AliTRDCalPad.cxx:535
 AliTRDCalPad.cxx:536
 AliTRDCalPad.cxx:537
 AliTRDCalPad.cxx:538
 AliTRDCalPad.cxx:539
 AliTRDCalPad.cxx:540
 AliTRDCalPad.cxx:541
 AliTRDCalPad.cxx:542
 AliTRDCalPad.cxx:543
 AliTRDCalPad.cxx:544
 AliTRDCalPad.cxx:545
 AliTRDCalPad.cxx:546
 AliTRDCalPad.cxx:547
 AliTRDCalPad.cxx:548
 AliTRDCalPad.cxx:549
 AliTRDCalPad.cxx:550
 AliTRDCalPad.cxx:551
 AliTRDCalPad.cxx:552
 AliTRDCalPad.cxx:553
 AliTRDCalPad.cxx:554
 AliTRDCalPad.cxx:555
 AliTRDCalPad.cxx:556
 AliTRDCalPad.cxx:557
 AliTRDCalPad.cxx:558
 AliTRDCalPad.cxx:559
 AliTRDCalPad.cxx:560
 AliTRDCalPad.cxx:561
 AliTRDCalPad.cxx:562
 AliTRDCalPad.cxx:563
 AliTRDCalPad.cxx:564
 AliTRDCalPad.cxx:565
 AliTRDCalPad.cxx:566
 AliTRDCalPad.cxx:567
 AliTRDCalPad.cxx:568
 AliTRDCalPad.cxx:569
 AliTRDCalPad.cxx:570
 AliTRDCalPad.cxx:571
 AliTRDCalPad.cxx:572
 AliTRDCalPad.cxx:573
 AliTRDCalPad.cxx:574
 AliTRDCalPad.cxx:575
 AliTRDCalPad.cxx:576
 AliTRDCalPad.cxx:577
 AliTRDCalPad.cxx:578
 AliTRDCalPad.cxx:579
 AliTRDCalPad.cxx:580
 AliTRDCalPad.cxx:581
 AliTRDCalPad.cxx:582
 AliTRDCalPad.cxx:583
 AliTRDCalPad.cxx:584
 AliTRDCalPad.cxx:585
 AliTRDCalPad.cxx:586
 AliTRDCalPad.cxx:587
 AliTRDCalPad.cxx:588
 AliTRDCalPad.cxx:589
 AliTRDCalPad.cxx:590
 AliTRDCalPad.cxx:591
 AliTRDCalPad.cxx:592
 AliTRDCalPad.cxx:593
 AliTRDCalPad.cxx:594
 AliTRDCalPad.cxx:595
 AliTRDCalPad.cxx:596
 AliTRDCalPad.cxx:597
 AliTRDCalPad.cxx:598
 AliTRDCalPad.cxx:599
 AliTRDCalPad.cxx:600
 AliTRDCalPad.cxx:601
 AliTRDCalPad.cxx:602
 AliTRDCalPad.cxx:603
 AliTRDCalPad.cxx:604
 AliTRDCalPad.cxx:605
 AliTRDCalPad.cxx:606
 AliTRDCalPad.cxx:607
 AliTRDCalPad.cxx:608
 AliTRDCalPad.cxx:609
 AliTRDCalPad.cxx:610
 AliTRDCalPad.cxx:611
 AliTRDCalPad.cxx:612
 AliTRDCalPad.cxx:613
 AliTRDCalPad.cxx:614
 AliTRDCalPad.cxx:615
 AliTRDCalPad.cxx:616
 AliTRDCalPad.cxx:617
 AliTRDCalPad.cxx:618
 AliTRDCalPad.cxx:619
 AliTRDCalPad.cxx:620
 AliTRDCalPad.cxx:621
 AliTRDCalPad.cxx:622
 AliTRDCalPad.cxx:623
 AliTRDCalPad.cxx:624
 AliTRDCalPad.cxx:625
 AliTRDCalPad.cxx:626
 AliTRDCalPad.cxx:627
 AliTRDCalPad.cxx:628
 AliTRDCalPad.cxx:629
 AliTRDCalPad.cxx:630
 AliTRDCalPad.cxx:631
 AliTRDCalPad.cxx:632
 AliTRDCalPad.cxx:633
 AliTRDCalPad.cxx:634
 AliTRDCalPad.cxx:635
 AliTRDCalPad.cxx:636
 AliTRDCalPad.cxx:637
 AliTRDCalPad.cxx:638
 AliTRDCalPad.cxx:639
 AliTRDCalPad.cxx:640
 AliTRDCalPad.cxx:641
 AliTRDCalPad.cxx:642
 AliTRDCalPad.cxx:643
 AliTRDCalPad.cxx:644
 AliTRDCalPad.cxx:645
 AliTRDCalPad.cxx:646
 AliTRDCalPad.cxx:647
 AliTRDCalPad.cxx:648
 AliTRDCalPad.cxx:649
 AliTRDCalPad.cxx:650
 AliTRDCalPad.cxx:651
 AliTRDCalPad.cxx:652
 AliTRDCalPad.cxx:653
 AliTRDCalPad.cxx:654
 AliTRDCalPad.cxx:655
 AliTRDCalPad.cxx:656
 AliTRDCalPad.cxx:657
 AliTRDCalPad.cxx:658
 AliTRDCalPad.cxx:659
 AliTRDCalPad.cxx:660
 AliTRDCalPad.cxx:661
 AliTRDCalPad.cxx:662
 AliTRDCalPad.cxx:663
 AliTRDCalPad.cxx:664
 AliTRDCalPad.cxx:665
 AliTRDCalPad.cxx:666
 AliTRDCalPad.cxx:667
 AliTRDCalPad.cxx:668
 AliTRDCalPad.cxx:669
 AliTRDCalPad.cxx:670
 AliTRDCalPad.cxx:671
 AliTRDCalPad.cxx:672
 AliTRDCalPad.cxx:673
 AliTRDCalPad.cxx:674
 AliTRDCalPad.cxx:675
 AliTRDCalPad.cxx:676
 AliTRDCalPad.cxx:677
 AliTRDCalPad.cxx:678
 AliTRDCalPad.cxx:679
 AliTRDCalPad.cxx:680
 AliTRDCalPad.cxx:681
 AliTRDCalPad.cxx:682
 AliTRDCalPad.cxx:683
 AliTRDCalPad.cxx:684
 AliTRDCalPad.cxx:685
 AliTRDCalPad.cxx:686
 AliTRDCalPad.cxx:687
 AliTRDCalPad.cxx:688
 AliTRDCalPad.cxx:689
 AliTRDCalPad.cxx:690
 AliTRDCalPad.cxx:691
 AliTRDCalPad.cxx:692
 AliTRDCalPad.cxx:693
 AliTRDCalPad.cxx:694
 AliTRDCalPad.cxx:695
 AliTRDCalPad.cxx:696
 AliTRDCalPad.cxx:697
 AliTRDCalPad.cxx:698
 AliTRDCalPad.cxx:699
 AliTRDCalPad.cxx:700
 AliTRDCalPad.cxx:701
 AliTRDCalPad.cxx:702
 AliTRDCalPad.cxx:703
 AliTRDCalPad.cxx:704
 AliTRDCalPad.cxx:705
 AliTRDCalPad.cxx:706
 AliTRDCalPad.cxx:707
 AliTRDCalPad.cxx:708
 AliTRDCalPad.cxx:709
 AliTRDCalPad.cxx:710
 AliTRDCalPad.cxx:711
 AliTRDCalPad.cxx:712
 AliTRDCalPad.cxx:713
 AliTRDCalPad.cxx:714
 AliTRDCalPad.cxx:715
 AliTRDCalPad.cxx:716
 AliTRDCalPad.cxx:717
 AliTRDCalPad.cxx:718
 AliTRDCalPad.cxx:719
 AliTRDCalPad.cxx:720
 AliTRDCalPad.cxx:721
 AliTRDCalPad.cxx:722
 AliTRDCalPad.cxx:723
 AliTRDCalPad.cxx:724
 AliTRDCalPad.cxx:725
 AliTRDCalPad.cxx:726
 AliTRDCalPad.cxx:727
 AliTRDCalPad.cxx:728
 AliTRDCalPad.cxx:729
 AliTRDCalPad.cxx:730
 AliTRDCalPad.cxx:731
 AliTRDCalPad.cxx:732
 AliTRDCalPad.cxx:733
 AliTRDCalPad.cxx:734
 AliTRDCalPad.cxx:735
 AliTRDCalPad.cxx:736
 AliTRDCalPad.cxx:737
 AliTRDCalPad.cxx:738
 AliTRDCalPad.cxx:739
 AliTRDCalPad.cxx:740
 AliTRDCalPad.cxx:741
 AliTRDCalPad.cxx:742
 AliTRDCalPad.cxx:743
 AliTRDCalPad.cxx:744
 AliTRDCalPad.cxx:745
 AliTRDCalPad.cxx:746
 AliTRDCalPad.cxx:747
 AliTRDCalPad.cxx:748
 AliTRDCalPad.cxx:749
 AliTRDCalPad.cxx:750
 AliTRDCalPad.cxx:751
 AliTRDCalPad.cxx:752
 AliTRDCalPad.cxx:753
 AliTRDCalPad.cxx:754
 AliTRDCalPad.cxx:755
 AliTRDCalPad.cxx:756
 AliTRDCalPad.cxx:757
 AliTRDCalPad.cxx:758
 AliTRDCalPad.cxx:759