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

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  Calibration base class for a single ROC                                  //
//  Contains one UShort_t value per pad                                      //
//  However, values are set and get as float, there are stored internally as //
//  (UShort_t) value * 10000                                                 //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

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

#include "AliMathBase.h"

#include "AliTRDCalROC.h"

ClassImp(AliTRDCalROC)

//_____________________________________________________________________________
AliTRDCalROC::AliTRDCalROC()
  :TObject()
  ,fPla(0)
  ,fCha(0)
  ,fNrows(0)
  ,fNcols(0)
  ,fNchannels(0)
  ,fData(0)
{
  //
  // Default constructor
  //

}

//_____________________________________________________________________________
AliTRDCalROC::AliTRDCalROC(Int_t p, Int_t c)
  :TObject()
  ,fPla(p)
  ,fCha(c)
  ,fNrows(0)
  ,fNcols(144)
  ,fNchannels(0)
  ,fData(0)
{
  //
  // Constructor that initializes a given pad plane type
  //

  //
  // The pad plane parameter
  //
  switch (p) {
  case 0:
    if (c == 2) {
      // L0C0 type
      fNrows        =  12;
    }
    else {
      // L0C1 type
      fNrows        =  16;
    }
    break;
  case 1:
    if (c == 2) {
      // L1C0 type
      fNrows        =  12;
    }
    else {
      // L1C1 type
      fNrows        =  16;
    }
    break;
  case 2:
    if (c == 2) {
      // L2C0 type
      fNrows        =  12;
    }
    else {
      // L2C1 type
      fNrows        =  16;
    }
    break;
  case 3:
    if (c == 2) {
      // L3C0 type
      fNrows        =  12;
    }
    else {
      // L3C1 type
      fNrows        =  16;
    }
    break;
  case 4:
    if (c == 2) {
      // L4C0 type
      fNrows        =  12;
    }
    else {
      // L4C1 type
      fNrows        =  16;
    }
    break;
  case 5:
    if (c == 2) {
      // L5C0 type
      fNrows        =  12;
    }
    else {
      // L5C1 type
      fNrows        =  16;
    }
    break;
  };

  fNchannels = fNrows * fNcols;
  if (fNchannels != 0) {
    fData = new UShort_t[fNchannels];
  }

  for (Int_t i=0; i<fNchannels; ++i) {
    fData[i] = 0;
  }

}

//_____________________________________________________________________________
AliTRDCalROC::AliTRDCalROC(const AliTRDCalROC &c)
  :TObject(c)
  ,fPla(c.fPla)
  ,fCha(c.fCha)
  ,fNrows(c.fNrows)
  ,fNcols(c.fNcols)
  ,fNchannels(c.fNchannels)
  ,fData(0)
{
  //
  // AliTRDCalROC copy constructor
  //

  Int_t iBin = 0;

  fData = new UShort_t[fNchannels];
  for (iBin = 0; iBin < fNchannels; iBin++) {
    fData[iBin] = ((AliTRDCalROC &) c).fData[iBin];
  }

}

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

  if (fData) {
    delete [] fData;
    fData = 0;
  }

}

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

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

  fPla       = c.fPla;
  fCha       = c.fCha;
  fNrows     = c.fNrows;
  fNcols     = c.fNcols;
  fNchannels = c.fNchannels;

  if (fData) {
    delete [] fData;
  }
  fData = new UShort_t[fNchannels];
  for (Int_t iBin = 0; iBin < fNchannels; iBin++) {
    fData[iBin] = ((AliTRDCalROC &) c).fData[iBin];
  }

  return *this;

}

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

  ((AliTRDCalROC &) c).fPla          = fPla;
  ((AliTRDCalROC &) c).fCha          = fCha;

  ((AliTRDCalROC &) c).fNrows        = fNrows;
  ((AliTRDCalROC &) c).fNcols        = fNcols;

  Int_t iBin = 0;

  ((AliTRDCalROC &) c).fNchannels = fNchannels;

  if (((AliTRDCalROC &) c).fData) delete [] ((AliTRDCalROC &) c).fData;
  ((AliTRDCalROC &) c).fData = new UShort_t[fNchannels];
  for (iBin = 0; iBin < fNchannels; iBin++) {
    ((AliTRDCalROC &) c).fData[iBin] = fData[iBin];
  }
  
  TObject::Copy(c);

}

//___________________________________________________________________________________
Double_t AliTRDCalROC::GetMean(AliTRDCalROC* const outlierROC) const
{
  //
  // Calculate the mean
  //

   Double_t *ddata = new Double_t[fNchannels];
   Int_t nPoints = 0;
   for (Int_t i=0;i<fNchannels;i++) {
      if ((!outlierROC) || (!(outlierROC->GetValue(i)))) {
	//if(fData[i] > 0.000000000000001){
         ddata[nPoints]= (Double_t) fData[i]/10000;
         nPoints++;
	 //}
      }
   }
   Double_t mean = TMath::Mean(nPoints,ddata);
   delete [] ddata;
   return mean;
}

//_______________________________________________________________________________________
Double_t AliTRDCalROC::GetMedian(AliTRDCalROC* const outlierROC) const
{
  //
  // Calculate the median
  //

  Double_t *ddata = new Double_t[fNchannels];
   Int_t nPoints = 0;
   for (Int_t i=0;i<fNchannels;i++) {
       if ((!outlierROC) || (!(outlierROC->GetValue(i)))) {
	 if(fData[i] > 0.000000000000001){         
	   ddata[nPoints]= (Double_t) fData[i]/10000;
	   nPoints++;
	 }
       }
   }
   Double_t mean = TMath::Median(nPoints,ddata);
   delete [] ddata;
   return mean;
}

//____________________________________________________________________________________________
Double_t AliTRDCalROC::GetRMS(AliTRDCalROC* const outlierROC) const
{
  //
  // Calculate the RMS
  //

  Double_t *ddata = new Double_t[fNchannels];
  Int_t nPoints = 0;
  for (Int_t i=0;i<fNchannels;i++) {
    if ((!outlierROC) || (!(outlierROC->GetValue(i)))) {
      //if(fData[i] > 0.000000000000001){
         ddata[nPoints]= (Double_t)fData[i]/10000;
         nPoints++;
	 //}
    }
  }
  Double_t mean = TMath::RMS(nPoints,ddata);
  delete [] ddata;
  return mean;
}

//______________________________________________________________________________________________
Double_t AliTRDCalROC::GetLTM(Double_t *sigma, Double_t fraction, AliTRDCalROC* const outlierROC)
{
  //
  //  Calculate LTM mean and sigma
  //

  Double_t *ddata = new Double_t[fNchannels];
  Double_t mean=0, lsigma=0;
  UInt_t nPoints = 0;
  for (Int_t i=0;i<fNchannels;i++) {
     if (!outlierROC || !(outlierROC->GetValue(i))) {
       if(fData[i] > 0.000000000000001){
	 ddata[nPoints]= (Double_t) fData[i]/10000;
	 nPoints++;
       }
     }
  }
  Int_t hh = TMath::Min(TMath::Nint(fraction *nPoints), Int_t(nPoints));
  AliMathBase::EvaluateUni(nPoints,ddata, mean, lsigma, hh);
  if (sigma) *sigma=lsigma;
  delete [] ddata;
  return mean;
}

//___________________________________________________________________________________
Bool_t AliTRDCalROC::Add(Float_t c1)
{
  //
  // add constant
  //

  Bool_t result = kTRUE;
  for (Int_t  idata = 0; idata< fNchannels; idata++) {
    if(((GetValue(idata)+c1) <= 6.5535) && ((GetValue(idata)+c1) >= 0.0)) SetValue(idata,GetValue(idata)+c1);
    else {
      SetValue(idata,0.0);
      result = kFALSE;
    }
  }
  return result;
}

//_______________________________________________________________________________________
Bool_t AliTRDCalROC::Multiply(Float_t c1)
{
  //
  // multiply constant
  //

  Bool_t result = kTRUE;
  if(c1 < 0) return kFALSE;
  for (Int_t  idata = 0; idata< fNchannels; idata++) {
    if((GetValue(idata)*c1) <= 6.5535) SetValue(idata,GetValue(idata)*c1);
    else {
      SetValue(idata,0.0);
      result = kFALSE;
    }
  }
  return result;
}

//____________________________________________________________________________________________
Bool_t AliTRDCalROC::Add(const AliTRDCalROC * roc, Double_t c1)
{
  //
  // add values 
  //

  Bool_t result = kTRUE;
  for (Int_t  idata = 0; idata< fNchannels; idata++){
    if(((GetValue(idata)+roc->GetValue(idata)*c1) <= 6.5535) && 
       ((GetValue(idata)+roc->GetValue(idata)*c1) >= 0.0)) 
          SetValue(idata,GetValue(idata)+roc->GetValue(idata)*c1);
    else {
      SetValue(idata,0.0);
      result = kFALSE;
    }
  }
  return result;
}

//____________________________________________________________________________________________
Bool_t AliTRDCalROC::Multiply(const AliTRDCalROC*  roc) 
{
  //
  // multiply values - per by pad
  //

  Bool_t result = kTRUE;
  for (Int_t  idata = 0; idata< fNchannels; idata++){
    if((GetValue(idata)*roc->GetValue(idata)) <= 6.5535) 
      SetValue(idata,GetValue(idata)*roc->GetValue(idata));
    else {
      SetValue(idata,0.0);
      result = kFALSE;
    }
  }
  return result;
}

//______________________________________________________________________________________________
Bool_t AliTRDCalROC::Divide(const AliTRDCalROC*  roc) 
{
  //
  // divide values 
  //

  Bool_t result = kTRUE;
  Float_t kEpsilon=0.00000000000000001;
  for (Int_t  idata = 0; idata< fNchannels; idata++){
    if (TMath::Abs(roc->GetValue(idata))>kEpsilon){
      if((GetValue(idata)/roc->GetValue(idata)) <= 6.5535) 
        SetValue(idata,GetValue(idata)/roc->GetValue(idata));
      else {
	SetValue(idata,0.0);
	result = kFALSE;
      }
    }
    else result = kFALSE;
  }
  return result;
}
//______________________________________________________________________________________________
Bool_t AliTRDCalROC::Unfold() 
{
  //
  // Compute the mean value per pad col
  // Divide with this value each pad col
  // This is for the noise study
  // Return kFALSE if one or more of the pad col was not normalised
  //

  Bool_t result = kTRUE;
  Float_t kEpsilon=0.00000000000000001;
  
  // calcul the mean value per col
  for(Int_t icol = 0; icol < fNcols; icol++){

    Float_t mean = 0.0;
    Float_t nb   = 0.0;

    for(Int_t irow = 0; irow < fNrows; irow++){
      if((GetValue(icol,irow) > 0.06) && (GetValue(icol,irow) < 0.15)){
	mean += GetValue(icol,irow);
	nb += 1.0;
      }
    }
    
    if(nb > kEpsilon) {
      
      mean = mean/nb;

      if(mean > kEpsilon){
	for(Int_t irow = 0; irow < fNrows; irow++){
	  Float_t value = GetValue(icol,irow);
	  SetValue(icol,irow,(Float_t)(value/mean));
	}    
      }
      else result = kFALSE;
      
    }

    else result = kFALSE;

    
  }
 

  return result;
}

//__________________________________________________________________________________
TH2F * AliTRDCalROC::MakeHisto2D(Float_t min, Float_t max,Int_t type,  Float_t mu)
{
  //
  // make 2D histo
  // type -1 = user defined range
  //       0 = nsigma cut nsigma=min
  //       1 = delta cut around median delta=min

  Float_t kEpsilonr = 0.005;
  gStyle->SetPalette(1);
  
  if (type>=0){
    if (type==0){
      // nsigma range
      Float_t mean  = GetMean();
      Float_t sigma = GetRMS();
      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();
      Float_t  delta = min;
      min = mean-delta;
      max = mean+delta;
    }
    if (type==2){
      Double_t sigma;
      Float_t mean  = GetLTM(&sigma,max);
      sigma*=min;
      if(sigma < kEpsilonr) sigma = kEpsilonr;
      min = mean-sigma;
      max = mean+sigma;

    }
  }
  
  char  name[1000];
  snprintf(name,1000,"%s 2D Plane %d Chamber %d",GetTitle(),fPla, fCha);
  TH2F * his = new TH2F(name,name,fNrows,0, fNrows, fNcols, 0, fNcols);
  for (Int_t irow=0; irow<fNrows; irow++){
    for (Int_t icol=0; icol<fNcols; icol++){
      his->Fill(irow+0.5,icol+0.5,GetValue(icol,irow)*mu);
    }
  }
  his->SetStats(0);
  his->SetMaximum(max);
  his->SetMinimum(min);
  return his;
}

//_______________________________________________________________________________________
TH1F * AliTRDCalROC::MakeHisto1D(Float_t min, Float_t max,Int_t type,  Float_t mu)
{
  //
  // make 1D histo
  // type -1 = user defined range
  //       0 = nsigma cut nsigma=min
  //       1 = delta cut around median delta=min

  Float_t kEpsilonr = 0.005;

  if (type>=0){
    if (type==0){
      // nsigma range
      Float_t mean  = GetMean();
      Float_t sigma = GetRMS();
      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();
      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);
      sigma*=min;
      if(sigma < kEpsilonr) sigma = kEpsilonr;
      min = mean-sigma;
      max = mean+sigma;
    }
  }
  char  name[1000];
  snprintf(name,1000,"%s 1D Plane %d Chamber %d",GetTitle(),fPla, fCha);
  TH1F * his = new TH1F(name,name,100, min,max);
  for (Int_t irow=0; irow<fNrows; irow++){
    for (Int_t icol=0; icol<fNcols; icol++){
      his->Fill(GetValue(icol,irow)*mu);
    }
  }
  return his;
}
 AliTRDCalROC.cxx:1
 AliTRDCalROC.cxx:2
 AliTRDCalROC.cxx:3
 AliTRDCalROC.cxx:4
 AliTRDCalROC.cxx:5
 AliTRDCalROC.cxx:6
 AliTRDCalROC.cxx:7
 AliTRDCalROC.cxx:8
 AliTRDCalROC.cxx:9
 AliTRDCalROC.cxx:10
 AliTRDCalROC.cxx:11
 AliTRDCalROC.cxx:12
 AliTRDCalROC.cxx:13
 AliTRDCalROC.cxx:14
 AliTRDCalROC.cxx:15
 AliTRDCalROC.cxx:16
 AliTRDCalROC.cxx:17
 AliTRDCalROC.cxx:18
 AliTRDCalROC.cxx:19
 AliTRDCalROC.cxx:20
 AliTRDCalROC.cxx:21
 AliTRDCalROC.cxx:22
 AliTRDCalROC.cxx:23
 AliTRDCalROC.cxx:24
 AliTRDCalROC.cxx:25
 AliTRDCalROC.cxx:26
 AliTRDCalROC.cxx:27
 AliTRDCalROC.cxx:28
 AliTRDCalROC.cxx:29
 AliTRDCalROC.cxx:30
 AliTRDCalROC.cxx:31
 AliTRDCalROC.cxx:32
 AliTRDCalROC.cxx:33
 AliTRDCalROC.cxx:34
 AliTRDCalROC.cxx:35
 AliTRDCalROC.cxx:36
 AliTRDCalROC.cxx:37
 AliTRDCalROC.cxx:38
 AliTRDCalROC.cxx:39
 AliTRDCalROC.cxx:40
 AliTRDCalROC.cxx:41
 AliTRDCalROC.cxx:42
 AliTRDCalROC.cxx:43
 AliTRDCalROC.cxx:44
 AliTRDCalROC.cxx:45
 AliTRDCalROC.cxx:46
 AliTRDCalROC.cxx:47
 AliTRDCalROC.cxx:48
 AliTRDCalROC.cxx:49
 AliTRDCalROC.cxx:50
 AliTRDCalROC.cxx:51
 AliTRDCalROC.cxx:52
 AliTRDCalROC.cxx:53
 AliTRDCalROC.cxx:54
 AliTRDCalROC.cxx:55
 AliTRDCalROC.cxx:56
 AliTRDCalROC.cxx:57
 AliTRDCalROC.cxx:58
 AliTRDCalROC.cxx:59
 AliTRDCalROC.cxx:60
 AliTRDCalROC.cxx:61
 AliTRDCalROC.cxx:62
 AliTRDCalROC.cxx:63
 AliTRDCalROC.cxx:64
 AliTRDCalROC.cxx:65
 AliTRDCalROC.cxx:66
 AliTRDCalROC.cxx:67
 AliTRDCalROC.cxx:68
 AliTRDCalROC.cxx:69
 AliTRDCalROC.cxx:70
 AliTRDCalROC.cxx:71
 AliTRDCalROC.cxx:72
 AliTRDCalROC.cxx:73
 AliTRDCalROC.cxx:74
 AliTRDCalROC.cxx:75
 AliTRDCalROC.cxx:76
 AliTRDCalROC.cxx:77
 AliTRDCalROC.cxx:78
 AliTRDCalROC.cxx:79
 AliTRDCalROC.cxx:80
 AliTRDCalROC.cxx:81
 AliTRDCalROC.cxx:82
 AliTRDCalROC.cxx:83
 AliTRDCalROC.cxx:84
 AliTRDCalROC.cxx:85
 AliTRDCalROC.cxx:86
 AliTRDCalROC.cxx:87
 AliTRDCalROC.cxx:88
 AliTRDCalROC.cxx:89
 AliTRDCalROC.cxx:90
 AliTRDCalROC.cxx:91
 AliTRDCalROC.cxx:92
 AliTRDCalROC.cxx:93
 AliTRDCalROC.cxx:94
 AliTRDCalROC.cxx:95
 AliTRDCalROC.cxx:96
 AliTRDCalROC.cxx:97
 AliTRDCalROC.cxx:98
 AliTRDCalROC.cxx:99
 AliTRDCalROC.cxx:100
 AliTRDCalROC.cxx:101
 AliTRDCalROC.cxx:102
 AliTRDCalROC.cxx:103
 AliTRDCalROC.cxx:104
 AliTRDCalROC.cxx:105
 AliTRDCalROC.cxx:106
 AliTRDCalROC.cxx:107
 AliTRDCalROC.cxx:108
 AliTRDCalROC.cxx:109
 AliTRDCalROC.cxx:110
 AliTRDCalROC.cxx:111
 AliTRDCalROC.cxx:112
 AliTRDCalROC.cxx:113
 AliTRDCalROC.cxx:114
 AliTRDCalROC.cxx:115
 AliTRDCalROC.cxx:116
 AliTRDCalROC.cxx:117
 AliTRDCalROC.cxx:118
 AliTRDCalROC.cxx:119
 AliTRDCalROC.cxx:120
 AliTRDCalROC.cxx:121
 AliTRDCalROC.cxx:122
 AliTRDCalROC.cxx:123
 AliTRDCalROC.cxx:124
 AliTRDCalROC.cxx:125
 AliTRDCalROC.cxx:126
 AliTRDCalROC.cxx:127
 AliTRDCalROC.cxx:128
 AliTRDCalROC.cxx:129
 AliTRDCalROC.cxx:130
 AliTRDCalROC.cxx:131
 AliTRDCalROC.cxx:132
 AliTRDCalROC.cxx:133
 AliTRDCalROC.cxx:134
 AliTRDCalROC.cxx:135
 AliTRDCalROC.cxx:136
 AliTRDCalROC.cxx:137
 AliTRDCalROC.cxx:138
 AliTRDCalROC.cxx:139
 AliTRDCalROC.cxx:140
 AliTRDCalROC.cxx:141
 AliTRDCalROC.cxx:142
 AliTRDCalROC.cxx:143
 AliTRDCalROC.cxx:144
 AliTRDCalROC.cxx:145
 AliTRDCalROC.cxx:146
 AliTRDCalROC.cxx:147
 AliTRDCalROC.cxx:148
 AliTRDCalROC.cxx:149
 AliTRDCalROC.cxx:150
 AliTRDCalROC.cxx:151
 AliTRDCalROC.cxx:152
 AliTRDCalROC.cxx:153
 AliTRDCalROC.cxx:154
 AliTRDCalROC.cxx:155
 AliTRDCalROC.cxx:156
 AliTRDCalROC.cxx:157
 AliTRDCalROC.cxx:158
 AliTRDCalROC.cxx:159
 AliTRDCalROC.cxx:160
 AliTRDCalROC.cxx:161
 AliTRDCalROC.cxx:162
 AliTRDCalROC.cxx:163
 AliTRDCalROC.cxx:164
 AliTRDCalROC.cxx:165
 AliTRDCalROC.cxx:166
 AliTRDCalROC.cxx:167
 AliTRDCalROC.cxx:168
 AliTRDCalROC.cxx:169
 AliTRDCalROC.cxx:170
 AliTRDCalROC.cxx:171
 AliTRDCalROC.cxx:172
 AliTRDCalROC.cxx:173
 AliTRDCalROC.cxx:174
 AliTRDCalROC.cxx:175
 AliTRDCalROC.cxx:176
 AliTRDCalROC.cxx:177
 AliTRDCalROC.cxx:178
 AliTRDCalROC.cxx:179
 AliTRDCalROC.cxx:180
 AliTRDCalROC.cxx:181
 AliTRDCalROC.cxx:182
 AliTRDCalROC.cxx:183
 AliTRDCalROC.cxx:184
 AliTRDCalROC.cxx:185
 AliTRDCalROC.cxx:186
 AliTRDCalROC.cxx:187
 AliTRDCalROC.cxx:188
 AliTRDCalROC.cxx:189
 AliTRDCalROC.cxx:190
 AliTRDCalROC.cxx:191
 AliTRDCalROC.cxx:192
 AliTRDCalROC.cxx:193
 AliTRDCalROC.cxx:194
 AliTRDCalROC.cxx:195
 AliTRDCalROC.cxx:196
 AliTRDCalROC.cxx:197
 AliTRDCalROC.cxx:198
 AliTRDCalROC.cxx:199
 AliTRDCalROC.cxx:200
 AliTRDCalROC.cxx:201
 AliTRDCalROC.cxx:202
 AliTRDCalROC.cxx:203
 AliTRDCalROC.cxx:204
 AliTRDCalROC.cxx:205
 AliTRDCalROC.cxx:206
 AliTRDCalROC.cxx:207
 AliTRDCalROC.cxx:208
 AliTRDCalROC.cxx:209
 AliTRDCalROC.cxx:210
 AliTRDCalROC.cxx:211
 AliTRDCalROC.cxx:212
 AliTRDCalROC.cxx:213
 AliTRDCalROC.cxx:214
 AliTRDCalROC.cxx:215
 AliTRDCalROC.cxx:216
 AliTRDCalROC.cxx:217
 AliTRDCalROC.cxx:218
 AliTRDCalROC.cxx:219
 AliTRDCalROC.cxx:220
 AliTRDCalROC.cxx:221
 AliTRDCalROC.cxx:222
 AliTRDCalROC.cxx:223
 AliTRDCalROC.cxx:224
 AliTRDCalROC.cxx:225
 AliTRDCalROC.cxx:226
 AliTRDCalROC.cxx:227
 AliTRDCalROC.cxx:228
 AliTRDCalROC.cxx:229
 AliTRDCalROC.cxx:230
 AliTRDCalROC.cxx:231
 AliTRDCalROC.cxx:232
 AliTRDCalROC.cxx:233
 AliTRDCalROC.cxx:234
 AliTRDCalROC.cxx:235
 AliTRDCalROC.cxx:236
 AliTRDCalROC.cxx:237
 AliTRDCalROC.cxx:238
 AliTRDCalROC.cxx:239
 AliTRDCalROC.cxx:240
 AliTRDCalROC.cxx:241
 AliTRDCalROC.cxx:242
 AliTRDCalROC.cxx:243
 AliTRDCalROC.cxx:244
 AliTRDCalROC.cxx:245
 AliTRDCalROC.cxx:246
 AliTRDCalROC.cxx:247
 AliTRDCalROC.cxx:248
 AliTRDCalROC.cxx:249
 AliTRDCalROC.cxx:250
 AliTRDCalROC.cxx:251
 AliTRDCalROC.cxx:252
 AliTRDCalROC.cxx:253
 AliTRDCalROC.cxx:254
 AliTRDCalROC.cxx:255
 AliTRDCalROC.cxx:256
 AliTRDCalROC.cxx:257
 AliTRDCalROC.cxx:258
 AliTRDCalROC.cxx:259
 AliTRDCalROC.cxx:260
 AliTRDCalROC.cxx:261
 AliTRDCalROC.cxx:262
 AliTRDCalROC.cxx:263
 AliTRDCalROC.cxx:264
 AliTRDCalROC.cxx:265
 AliTRDCalROC.cxx:266
 AliTRDCalROC.cxx:267
 AliTRDCalROC.cxx:268
 AliTRDCalROC.cxx:269
 AliTRDCalROC.cxx:270
 AliTRDCalROC.cxx:271
 AliTRDCalROC.cxx:272
 AliTRDCalROC.cxx:273
 AliTRDCalROC.cxx:274
 AliTRDCalROC.cxx:275
 AliTRDCalROC.cxx:276
 AliTRDCalROC.cxx:277
 AliTRDCalROC.cxx:278
 AliTRDCalROC.cxx:279
 AliTRDCalROC.cxx:280
 AliTRDCalROC.cxx:281
 AliTRDCalROC.cxx:282
 AliTRDCalROC.cxx:283
 AliTRDCalROC.cxx:284
 AliTRDCalROC.cxx:285
 AliTRDCalROC.cxx:286
 AliTRDCalROC.cxx:287
 AliTRDCalROC.cxx:288
 AliTRDCalROC.cxx:289
 AliTRDCalROC.cxx:290
 AliTRDCalROC.cxx:291
 AliTRDCalROC.cxx:292
 AliTRDCalROC.cxx:293
 AliTRDCalROC.cxx:294
 AliTRDCalROC.cxx:295
 AliTRDCalROC.cxx:296
 AliTRDCalROC.cxx:297
 AliTRDCalROC.cxx:298
 AliTRDCalROC.cxx:299
 AliTRDCalROC.cxx:300
 AliTRDCalROC.cxx:301
 AliTRDCalROC.cxx:302
 AliTRDCalROC.cxx:303
 AliTRDCalROC.cxx:304
 AliTRDCalROC.cxx:305
 AliTRDCalROC.cxx:306
 AliTRDCalROC.cxx:307
 AliTRDCalROC.cxx:308
 AliTRDCalROC.cxx:309
 AliTRDCalROC.cxx:310
 AliTRDCalROC.cxx:311
 AliTRDCalROC.cxx:312
 AliTRDCalROC.cxx:313
 AliTRDCalROC.cxx:314
 AliTRDCalROC.cxx:315
 AliTRDCalROC.cxx:316
 AliTRDCalROC.cxx:317
 AliTRDCalROC.cxx:318
 AliTRDCalROC.cxx:319
 AliTRDCalROC.cxx:320
 AliTRDCalROC.cxx:321
 AliTRDCalROC.cxx:322
 AliTRDCalROC.cxx:323
 AliTRDCalROC.cxx:324
 AliTRDCalROC.cxx:325
 AliTRDCalROC.cxx:326
 AliTRDCalROC.cxx:327
 AliTRDCalROC.cxx:328
 AliTRDCalROC.cxx:329
 AliTRDCalROC.cxx:330
 AliTRDCalROC.cxx:331
 AliTRDCalROC.cxx:332
 AliTRDCalROC.cxx:333
 AliTRDCalROC.cxx:334
 AliTRDCalROC.cxx:335
 AliTRDCalROC.cxx:336
 AliTRDCalROC.cxx:337
 AliTRDCalROC.cxx:338
 AliTRDCalROC.cxx:339
 AliTRDCalROC.cxx:340
 AliTRDCalROC.cxx:341
 AliTRDCalROC.cxx:342
 AliTRDCalROC.cxx:343
 AliTRDCalROC.cxx:344
 AliTRDCalROC.cxx:345
 AliTRDCalROC.cxx:346
 AliTRDCalROC.cxx:347
 AliTRDCalROC.cxx:348
 AliTRDCalROC.cxx:349
 AliTRDCalROC.cxx:350
 AliTRDCalROC.cxx:351
 AliTRDCalROC.cxx:352
 AliTRDCalROC.cxx:353
 AliTRDCalROC.cxx:354
 AliTRDCalROC.cxx:355
 AliTRDCalROC.cxx:356
 AliTRDCalROC.cxx:357
 AliTRDCalROC.cxx:358
 AliTRDCalROC.cxx:359
 AliTRDCalROC.cxx:360
 AliTRDCalROC.cxx:361
 AliTRDCalROC.cxx:362
 AliTRDCalROC.cxx:363
 AliTRDCalROC.cxx:364
 AliTRDCalROC.cxx:365
 AliTRDCalROC.cxx:366
 AliTRDCalROC.cxx:367
 AliTRDCalROC.cxx:368
 AliTRDCalROC.cxx:369
 AliTRDCalROC.cxx:370
 AliTRDCalROC.cxx:371
 AliTRDCalROC.cxx:372
 AliTRDCalROC.cxx:373
 AliTRDCalROC.cxx:374
 AliTRDCalROC.cxx:375
 AliTRDCalROC.cxx:376
 AliTRDCalROC.cxx:377
 AliTRDCalROC.cxx:378
 AliTRDCalROC.cxx:379
 AliTRDCalROC.cxx:380
 AliTRDCalROC.cxx:381
 AliTRDCalROC.cxx:382
 AliTRDCalROC.cxx:383
 AliTRDCalROC.cxx:384
 AliTRDCalROC.cxx:385
 AliTRDCalROC.cxx:386
 AliTRDCalROC.cxx:387
 AliTRDCalROC.cxx:388
 AliTRDCalROC.cxx:389
 AliTRDCalROC.cxx:390
 AliTRDCalROC.cxx:391
 AliTRDCalROC.cxx:392
 AliTRDCalROC.cxx:393
 AliTRDCalROC.cxx:394
 AliTRDCalROC.cxx:395
 AliTRDCalROC.cxx:396
 AliTRDCalROC.cxx:397
 AliTRDCalROC.cxx:398
 AliTRDCalROC.cxx:399
 AliTRDCalROC.cxx:400
 AliTRDCalROC.cxx:401
 AliTRDCalROC.cxx:402
 AliTRDCalROC.cxx:403
 AliTRDCalROC.cxx:404
 AliTRDCalROC.cxx:405
 AliTRDCalROC.cxx:406
 AliTRDCalROC.cxx:407
 AliTRDCalROC.cxx:408
 AliTRDCalROC.cxx:409
 AliTRDCalROC.cxx:410
 AliTRDCalROC.cxx:411
 AliTRDCalROC.cxx:412
 AliTRDCalROC.cxx:413
 AliTRDCalROC.cxx:414
 AliTRDCalROC.cxx:415
 AliTRDCalROC.cxx:416
 AliTRDCalROC.cxx:417
 AliTRDCalROC.cxx:418
 AliTRDCalROC.cxx:419
 AliTRDCalROC.cxx:420
 AliTRDCalROC.cxx:421
 AliTRDCalROC.cxx:422
 AliTRDCalROC.cxx:423
 AliTRDCalROC.cxx:424
 AliTRDCalROC.cxx:425
 AliTRDCalROC.cxx:426
 AliTRDCalROC.cxx:427
 AliTRDCalROC.cxx:428
 AliTRDCalROC.cxx:429
 AliTRDCalROC.cxx:430
 AliTRDCalROC.cxx:431
 AliTRDCalROC.cxx:432
 AliTRDCalROC.cxx:433
 AliTRDCalROC.cxx:434
 AliTRDCalROC.cxx:435
 AliTRDCalROC.cxx:436
 AliTRDCalROC.cxx:437
 AliTRDCalROC.cxx:438
 AliTRDCalROC.cxx:439
 AliTRDCalROC.cxx:440
 AliTRDCalROC.cxx:441
 AliTRDCalROC.cxx:442
 AliTRDCalROC.cxx:443
 AliTRDCalROC.cxx:444
 AliTRDCalROC.cxx:445
 AliTRDCalROC.cxx:446
 AliTRDCalROC.cxx:447
 AliTRDCalROC.cxx:448
 AliTRDCalROC.cxx:449
 AliTRDCalROC.cxx:450
 AliTRDCalROC.cxx:451
 AliTRDCalROC.cxx:452
 AliTRDCalROC.cxx:453
 AliTRDCalROC.cxx:454
 AliTRDCalROC.cxx:455
 AliTRDCalROC.cxx:456
 AliTRDCalROC.cxx:457
 AliTRDCalROC.cxx:458
 AliTRDCalROC.cxx:459
 AliTRDCalROC.cxx:460
 AliTRDCalROC.cxx:461
 AliTRDCalROC.cxx:462
 AliTRDCalROC.cxx:463
 AliTRDCalROC.cxx:464
 AliTRDCalROC.cxx:465
 AliTRDCalROC.cxx:466
 AliTRDCalROC.cxx:467
 AliTRDCalROC.cxx:468
 AliTRDCalROC.cxx:469
 AliTRDCalROC.cxx:470
 AliTRDCalROC.cxx:471
 AliTRDCalROC.cxx:472
 AliTRDCalROC.cxx:473
 AliTRDCalROC.cxx:474
 AliTRDCalROC.cxx:475
 AliTRDCalROC.cxx:476
 AliTRDCalROC.cxx:477
 AliTRDCalROC.cxx:478
 AliTRDCalROC.cxx:479
 AliTRDCalROC.cxx:480
 AliTRDCalROC.cxx:481
 AliTRDCalROC.cxx:482
 AliTRDCalROC.cxx:483
 AliTRDCalROC.cxx:484
 AliTRDCalROC.cxx:485
 AliTRDCalROC.cxx:486
 AliTRDCalROC.cxx:487
 AliTRDCalROC.cxx:488
 AliTRDCalROC.cxx:489
 AliTRDCalROC.cxx:490
 AliTRDCalROC.cxx:491
 AliTRDCalROC.cxx:492
 AliTRDCalROC.cxx:493
 AliTRDCalROC.cxx:494
 AliTRDCalROC.cxx:495
 AliTRDCalROC.cxx:496
 AliTRDCalROC.cxx:497
 AliTRDCalROC.cxx:498
 AliTRDCalROC.cxx:499
 AliTRDCalROC.cxx:500
 AliTRDCalROC.cxx:501
 AliTRDCalROC.cxx:502
 AliTRDCalROC.cxx:503
 AliTRDCalROC.cxx:504
 AliTRDCalROC.cxx:505
 AliTRDCalROC.cxx:506
 AliTRDCalROC.cxx:507
 AliTRDCalROC.cxx:508
 AliTRDCalROC.cxx:509
 AliTRDCalROC.cxx:510
 AliTRDCalROC.cxx:511
 AliTRDCalROC.cxx:512
 AliTRDCalROC.cxx:513
 AliTRDCalROC.cxx:514
 AliTRDCalROC.cxx:515
 AliTRDCalROC.cxx:516
 AliTRDCalROC.cxx:517
 AliTRDCalROC.cxx:518
 AliTRDCalROC.cxx:519
 AliTRDCalROC.cxx:520
 AliTRDCalROC.cxx:521
 AliTRDCalROC.cxx:522
 AliTRDCalROC.cxx:523
 AliTRDCalROC.cxx:524
 AliTRDCalROC.cxx:525
 AliTRDCalROC.cxx:526
 AliTRDCalROC.cxx:527
 AliTRDCalROC.cxx:528
 AliTRDCalROC.cxx:529
 AliTRDCalROC.cxx:530
 AliTRDCalROC.cxx:531
 AliTRDCalROC.cxx:532
 AliTRDCalROC.cxx:533
 AliTRDCalROC.cxx:534
 AliTRDCalROC.cxx:535
 AliTRDCalROC.cxx:536
 AliTRDCalROC.cxx:537
 AliTRDCalROC.cxx:538
 AliTRDCalROC.cxx:539
 AliTRDCalROC.cxx:540
 AliTRDCalROC.cxx:541
 AliTRDCalROC.cxx:542
 AliTRDCalROC.cxx:543
 AliTRDCalROC.cxx:544
 AliTRDCalROC.cxx:545
 AliTRDCalROC.cxx:546
 AliTRDCalROC.cxx:547
 AliTRDCalROC.cxx:548
 AliTRDCalROC.cxx:549
 AliTRDCalROC.cxx:550
 AliTRDCalROC.cxx:551
 AliTRDCalROC.cxx:552
 AliTRDCalROC.cxx:553
 AliTRDCalROC.cxx:554
 AliTRDCalROC.cxx:555
 AliTRDCalROC.cxx:556
 AliTRDCalROC.cxx:557
 AliTRDCalROC.cxx:558
 AliTRDCalROC.cxx:559
 AliTRDCalROC.cxx:560
 AliTRDCalROC.cxx:561
 AliTRDCalROC.cxx:562
 AliTRDCalROC.cxx:563
 AliTRDCalROC.cxx:564
 AliTRDCalROC.cxx:565
 AliTRDCalROC.cxx:566
 AliTRDCalROC.cxx:567
 AliTRDCalROC.cxx:568
 AliTRDCalROC.cxx:569
 AliTRDCalROC.cxx:570
 AliTRDCalROC.cxx:571
 AliTRDCalROC.cxx:572
 AliTRDCalROC.cxx:573
 AliTRDCalROC.cxx:574
 AliTRDCalROC.cxx:575
 AliTRDCalROC.cxx:576
 AliTRDCalROC.cxx:577
 AliTRDCalROC.cxx:578
 AliTRDCalROC.cxx:579
 AliTRDCalROC.cxx:580
 AliTRDCalROC.cxx:581