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.                  *
 **************************************************************************/
#include "TArrayI.h"
#include "AliITSUCalibrationPix.h"

///////////////////////////////////////////////////////////////////////////
//
//  Calibration class for set:ITS                   
//  Specific subdetector implementation for         
//  Silicon pixels                                  
//
//  Modified by D. Elia, G.E. Bruno, H. Tydesjo
//  Adapted for upgrade ruben.shahoyan@cern.ch
//
///////////////////////////////////////////////////////////////////////////

ClassImp(AliITSUCalibrationPix)

//______________________________________________________________________
AliITSUCalibrationPix::AliITSUCalibrationPix() 
: fNChips(0)
  ,fNColPerChip(0)
  ,fNCol(0)
  ,fNRow(0)
  ,fNrBadSingle(0)
  ,fBadChips(0)
  ,fBadChannels(0)
{
  // constructor
   SetDataType("simulated");
   ClearBad();
}

//______________________________________________________________________
AliITSUCalibrationPix::AliITSUCalibrationPix(Short_t nChips,Short_t nColPerChip,Short_t nRow) 
: fNChips(0)
  ,fNColPerChip(0)
  ,fNCol(0)
  ,fNRow(0)
  ,fNrBadSingle(0)
  ,fBadChips(0)
  ,fBadChannels(0)
{
  // constructor
   SetDataType("simulated");
   SetColRowData(nChips,nColPerChip,nRow);
   ClearBad();
}

//______________________________________________________________________
AliITSUCalibrationPix::AliITSUCalibrationPix(const AliITSUCalibrationPix &src) : 
  AliITSCalibration(src)
  ,fNChips(src.fNChips)
  ,fNColPerChip(src.fNColPerChip)
  ,fNCol(src.fNCol)
  ,fNRow(src.fNRow)
  ,fNrBadSingle(src.fNrBadSingle)
  ,fBadChips(src.fBadChips)
  ,fBadChannels(src.fBadChannels)
{
}

//____________________________________________________________________________
void AliITSUCalibrationPix::ClearBad() 
{
  // clear all bad pixels (single+chips)
  fBadChannels.Reset();
  fNrBadSingle=0;
  fBadChips = 0;
  //
}

//____________________________________________________________________________
void AliITSUCalibrationPix::AddBad(Int_t col, Int_t row) 
{
  // add single bad pixel 
  fBadChannels.Set(fNrBadSingle*2+2);
  fBadChannels.AddAt(col,fNrBadSingle*2);
  fBadChannels.AddAt(row,fNrBadSingle*2+1);
  fNrBadSingle++;
}

//____________________________________________________________________________
void AliITSUCalibrationPix::SetChipBad(Int_t chip) 
{
  // set full chip bad
  if ((int)chip>=fNChips) {AliError(Form("chip number %d exceeds allowed limit %d",chip,fNChips)); return;}
  fBadChips |= 0x1<<chip;
  //
}

//____________________________________________________________________________
void AliITSUCalibrationPix::UnSetChipBad(Int_t chip) 
{
  // unset full chip bad
  if (chip>=fNChips) {AliError(Form("chip number %d exceeds allowed limit %d",chip,fNChips)); return;}
  fBadChips &= ~(0x1<<chip);
  //
}

//____________________________________________________________________________
Int_t AliITSUCalibrationPix::GetBadColAt(Int_t index) const 
{
  // Get column of index-th bad pixel
  int nrc = fNColPerChip*fNRow;
  if (nrc<1) AliFatal("Number of colums and rows is not set");
  //
  if ((Int_t)index<GetNrBadSingle()) return fBadChannels.At(index*2);
  else {
    Int_t badChipIndex=(index-GetNrBadSingle())/nrc;
    Int_t badChipsFound =0;
    for (int chip=fNChips; chip--;) {
      if (IsChipMarkedBad(chip)) badChipsFound++;
      if (badChipIndex==badChipsFound-1) {
	Int_t badPixelIndex=(index-GetNrBadSingle())%(nrc);
	return chip*fNColPerChip + badPixelIndex/fNRow;
      }
    }
  }
  AliError(Form("Index %d is out of bounds - returning -1",index));
  return -1;
}

//____________________________________________________________________________
Int_t AliITSUCalibrationPix::GetBadRowAt(Int_t index) const 
{
  // Get row of index-th bad pixel
  int nrc = fNColPerChip*fNRow;
  if (nrc<1) AliFatal("Number of colums and rows is not set");
  //
  if ((Int_t)index<GetNrBadSingle()) return fBadChannels.At(index*2+1);
  else {
    Int_t badChipIndex=(index-GetNrBadSingle())/nrc;
    Int_t badChipsFound =0;
    for (int chip=fNChips; chip--;) {
      if (IsChipMarkedBad(chip)) badChipsFound++;
      if (badChipIndex==badChipsFound-1) {
	Int_t badPixelIndex=(index-GetNrBadSingle())%nrc;
	return badPixelIndex%fNRow;
      }
    }
  }
  AliError(Form("Index %d is out of bounds - returning -1",index));
  return -1;
}

//____________________________________________________________________________
void AliITSUCalibrationPix::GetBadPixel(Int_t index, Int_t &row, Int_t &col) const 
{
  // i: is the i-th bad pixel in single bad pixel list
  // row: is the corresponding row (-1 if i is out of range)
  // col: is the corresponding column (-1 if i is out of range)
  row = -1;
  col = -1;
  if(index>=0 && index<GetNrBadSingle()){
    col = GetBadColAt(index);
    row = GetBadRowAt(index);
    return;
  }
  else {
    if (index>=0) {
      int nrc = fNColPerChip*fNRow;
      if (nrc<1) AliFatal("Number of colums and rows is not set");
      Int_t badChipIndex=(index-GetNrBadSingle())/nrc;
      Int_t badChipsFound =0;
      for (int chip=fNChips; chip--;) {
	if (IsChipMarkedBad(chip)) badChipsFound++;
	if (badChipIndex==badChipsFound-1) {
	  Int_t badPixelIndex=(index-GetNrBadSingle())%nrc;
	  col = chip*fNColPerChip + badPixelIndex/fNRow;
	  row = badPixelIndex%fNRow;
	  return;
	}
      }
    }
  }
  AliError(Form("Index %d is out of bounds - nothing done",index));
}

//____________________________________________________________________________
void AliITSUCalibrationPix::GetBadPixelSingle(Int_t index, UInt_t &row, UInt_t &col) const 
{
  // i: is the i-th bad pixel in single bad pixel list
  // row: is the corresponding row (-1 if i is out of range)
  // col: is the corresponding column (-1 if i is out of range)
  if(index<0 && index>=GetNrBadSingle())  AliFatal(Form("Index %d >= NrBadSingle=%d",index,fNrBadSingle));
  col = fBadChannels.At(index*2);
  row = fBadChannels.At(index*2+1);
}

//___________________________________________________________________________
Int_t  AliITSUCalibrationPix::GetNrBad() const 
{
  // Total number of bad pixels (including bad chips) in a given chip
  Int_t bad=0;
  // single pixels:
  bad += fNrBadSingle;
  // whole chips:
  for (int chip=fNChips; chip--;) if (IsChipMarkedBad(chip)) bad += fNColPerChip*fNRow;
  return bad;
}

//___________________________________________________________________________
Int_t  AliITSUCalibrationPix::GetNrBadInChip(Int_t chip) const 
{
  // Total number of bad pixels (including bad chips) in a given chip
  if(chip<0 || chip>=fNChips) {AliError("Wrong chip number"); return -1;}
  if (IsChipMarkedBad(chip)) return fNColPerChip*fNRow;
  else {
    Int_t bad=0;
    for (int i=fNrBadSingle; i--;) {
      Int_t col = GetBadColAt(i);
      if (col!=-1) if (GetChipIndexFromCol(col)==chip) bad++;
    }
    return bad;
  }
}

//___________________________________________________________________________
Int_t  AliITSUCalibrationPix::GetNrBadInColumn(Int_t col) const 
{
  // Total number of bad pixels (including bad chips) in a given column: col. range
  if(col<0 || col>=fNCol) {AliError("Wrong column number"); return -1;}
  if (IsChipMarkedBad(GetChipIndexFromCol(col))) return fNRow;
  else {
    Int_t bad=0;
    for (int i=fNrBadSingle; i--;) if (GetBadColAt(i)==col) bad++;
    return bad;
  }
}

//______________________________________________________________________
Bool_t AliITSUCalibrationPix::IsBad() const 
{
  // Are all chips of this chip bad?
  for (Int_t chip=fNChips; chip--;) if (!IsChipMarkedBad(chip)) return kFALSE;
  return kTRUE;
}

//______________________________________________________________________
Bool_t AliITSUCalibrationPix::IsChipBad(Int_t chip) const 
{
  // Is the full chip bad?
  return (GetNrBadInChip(chip)==fNColPerChip*fNRow);
}

//______________________________________________________________________
Bool_t AliITSUCalibrationPix::IsColumnBad(Int_t col) const 
{
  // Is the full column bad?
  return (GetNrBadInColumn(col)==fNRow);
}

//____________________________________________________________________________
Bool_t AliITSUCalibrationPix::IsPixelBad(Int_t col, Int_t row) const 
{
  // Is this pixel bad?
  if(col<0 || col>=fNCol) {AliError("Wrong column number"); return kFALSE;}
  Int_t chip = GetChipIndexFromCol(col);
  if (IsChipMarkedBad(chip)) return kTRUE;
  for (Int_t i=fNrBadSingle; i--;) if (GetBadColAt(i)==col && GetBadRowAt(i)==row) return kTRUE;
  return kFALSE;
}

//______________________________________________________________________
Int_t AliITSUCalibrationPix::GetChipIndexFromCol(Int_t col) const 
{
  // returns chip index for specific column
  if(col>=fNCol) {AliWarning("Wrong column number"); return -1;}
  return col/fNColPerChip;
}

//______________________________________________________________________
void AliITSUCalibrationPix::SetNrBad(Int_t /*nr*/) 
{
  // should not be used anymore !!!
  AliError("This method should not be used anymore. Use SetNrBadSingle instead!!!");
}

//____________________________________________________________________________
void  AliITSUCalibrationPix::SetColRowData(Short_t nchip, Short_t ncolperchip, Short_t nrow) 
{
  // set segmentation data
  fNChips = nchip; 
  fNCol   = nchip*ncolperchip; 
  fNRow   = nrow; 
  fNColPerChip = ncolperchip;
}
 AliITSUCalibrationPix.cxx:1
 AliITSUCalibrationPix.cxx:2
 AliITSUCalibrationPix.cxx:3
 AliITSUCalibrationPix.cxx:4
 AliITSUCalibrationPix.cxx:5
 AliITSUCalibrationPix.cxx:6
 AliITSUCalibrationPix.cxx:7
 AliITSUCalibrationPix.cxx:8
 AliITSUCalibrationPix.cxx:9
 AliITSUCalibrationPix.cxx:10
 AliITSUCalibrationPix.cxx:11
 AliITSUCalibrationPix.cxx:12
 AliITSUCalibrationPix.cxx:13
 AliITSUCalibrationPix.cxx:14
 AliITSUCalibrationPix.cxx:15
 AliITSUCalibrationPix.cxx:16
 AliITSUCalibrationPix.cxx:17
 AliITSUCalibrationPix.cxx:18
 AliITSUCalibrationPix.cxx:19
 AliITSUCalibrationPix.cxx:20
 AliITSUCalibrationPix.cxx:21
 AliITSUCalibrationPix.cxx:22
 AliITSUCalibrationPix.cxx:23
 AliITSUCalibrationPix.cxx:24
 AliITSUCalibrationPix.cxx:25
 AliITSUCalibrationPix.cxx:26
 AliITSUCalibrationPix.cxx:27
 AliITSUCalibrationPix.cxx:28
 AliITSUCalibrationPix.cxx:29
 AliITSUCalibrationPix.cxx:30
 AliITSUCalibrationPix.cxx:31
 AliITSUCalibrationPix.cxx:32
 AliITSUCalibrationPix.cxx:33
 AliITSUCalibrationPix.cxx:34
 AliITSUCalibrationPix.cxx:35
 AliITSUCalibrationPix.cxx:36
 AliITSUCalibrationPix.cxx:37
 AliITSUCalibrationPix.cxx:38
 AliITSUCalibrationPix.cxx:39
 AliITSUCalibrationPix.cxx:40
 AliITSUCalibrationPix.cxx:41
 AliITSUCalibrationPix.cxx:42
 AliITSUCalibrationPix.cxx:43
 AliITSUCalibrationPix.cxx:44
 AliITSUCalibrationPix.cxx:45
 AliITSUCalibrationPix.cxx:46
 AliITSUCalibrationPix.cxx:47
 AliITSUCalibrationPix.cxx:48
 AliITSUCalibrationPix.cxx:49
 AliITSUCalibrationPix.cxx:50
 AliITSUCalibrationPix.cxx:51
 AliITSUCalibrationPix.cxx:52
 AliITSUCalibrationPix.cxx:53
 AliITSUCalibrationPix.cxx:54
 AliITSUCalibrationPix.cxx:55
 AliITSUCalibrationPix.cxx:56
 AliITSUCalibrationPix.cxx:57
 AliITSUCalibrationPix.cxx:58
 AliITSUCalibrationPix.cxx:59
 AliITSUCalibrationPix.cxx:60
 AliITSUCalibrationPix.cxx:61
 AliITSUCalibrationPix.cxx:62
 AliITSUCalibrationPix.cxx:63
 AliITSUCalibrationPix.cxx:64
 AliITSUCalibrationPix.cxx:65
 AliITSUCalibrationPix.cxx:66
 AliITSUCalibrationPix.cxx:67
 AliITSUCalibrationPix.cxx:68
 AliITSUCalibrationPix.cxx:69
 AliITSUCalibrationPix.cxx:70
 AliITSUCalibrationPix.cxx:71
 AliITSUCalibrationPix.cxx:72
 AliITSUCalibrationPix.cxx:73
 AliITSUCalibrationPix.cxx:74
 AliITSUCalibrationPix.cxx:75
 AliITSUCalibrationPix.cxx:76
 AliITSUCalibrationPix.cxx:77
 AliITSUCalibrationPix.cxx:78
 AliITSUCalibrationPix.cxx:79
 AliITSUCalibrationPix.cxx:80
 AliITSUCalibrationPix.cxx:81
 AliITSUCalibrationPix.cxx:82
 AliITSUCalibrationPix.cxx:83
 AliITSUCalibrationPix.cxx:84
 AliITSUCalibrationPix.cxx:85
 AliITSUCalibrationPix.cxx:86
 AliITSUCalibrationPix.cxx:87
 AliITSUCalibrationPix.cxx:88
 AliITSUCalibrationPix.cxx:89
 AliITSUCalibrationPix.cxx:90
 AliITSUCalibrationPix.cxx:91
 AliITSUCalibrationPix.cxx:92
 AliITSUCalibrationPix.cxx:93
 AliITSUCalibrationPix.cxx:94
 AliITSUCalibrationPix.cxx:95
 AliITSUCalibrationPix.cxx:96
 AliITSUCalibrationPix.cxx:97
 AliITSUCalibrationPix.cxx:98
 AliITSUCalibrationPix.cxx:99
 AliITSUCalibrationPix.cxx:100
 AliITSUCalibrationPix.cxx:101
 AliITSUCalibrationPix.cxx:102
 AliITSUCalibrationPix.cxx:103
 AliITSUCalibrationPix.cxx:104
 AliITSUCalibrationPix.cxx:105
 AliITSUCalibrationPix.cxx:106
 AliITSUCalibrationPix.cxx:107
 AliITSUCalibrationPix.cxx:108
 AliITSUCalibrationPix.cxx:109
 AliITSUCalibrationPix.cxx:110
 AliITSUCalibrationPix.cxx:111
 AliITSUCalibrationPix.cxx:112
 AliITSUCalibrationPix.cxx:113
 AliITSUCalibrationPix.cxx:114
 AliITSUCalibrationPix.cxx:115
 AliITSUCalibrationPix.cxx:116
 AliITSUCalibrationPix.cxx:117
 AliITSUCalibrationPix.cxx:118
 AliITSUCalibrationPix.cxx:119
 AliITSUCalibrationPix.cxx:120
 AliITSUCalibrationPix.cxx:121
 AliITSUCalibrationPix.cxx:122
 AliITSUCalibrationPix.cxx:123
 AliITSUCalibrationPix.cxx:124
 AliITSUCalibrationPix.cxx:125
 AliITSUCalibrationPix.cxx:126
 AliITSUCalibrationPix.cxx:127
 AliITSUCalibrationPix.cxx:128
 AliITSUCalibrationPix.cxx:129
 AliITSUCalibrationPix.cxx:130
 AliITSUCalibrationPix.cxx:131
 AliITSUCalibrationPix.cxx:132
 AliITSUCalibrationPix.cxx:133
 AliITSUCalibrationPix.cxx:134
 AliITSUCalibrationPix.cxx:135
 AliITSUCalibrationPix.cxx:136
 AliITSUCalibrationPix.cxx:137
 AliITSUCalibrationPix.cxx:138
 AliITSUCalibrationPix.cxx:139
 AliITSUCalibrationPix.cxx:140
 AliITSUCalibrationPix.cxx:141
 AliITSUCalibrationPix.cxx:142
 AliITSUCalibrationPix.cxx:143
 AliITSUCalibrationPix.cxx:144
 AliITSUCalibrationPix.cxx:145
 AliITSUCalibrationPix.cxx:146
 AliITSUCalibrationPix.cxx:147
 AliITSUCalibrationPix.cxx:148
 AliITSUCalibrationPix.cxx:149
 AliITSUCalibrationPix.cxx:150
 AliITSUCalibrationPix.cxx:151
 AliITSUCalibrationPix.cxx:152
 AliITSUCalibrationPix.cxx:153
 AliITSUCalibrationPix.cxx:154
 AliITSUCalibrationPix.cxx:155
 AliITSUCalibrationPix.cxx:156
 AliITSUCalibrationPix.cxx:157
 AliITSUCalibrationPix.cxx:158
 AliITSUCalibrationPix.cxx:159
 AliITSUCalibrationPix.cxx:160
 AliITSUCalibrationPix.cxx:161
 AliITSUCalibrationPix.cxx:162
 AliITSUCalibrationPix.cxx:163
 AliITSUCalibrationPix.cxx:164
 AliITSUCalibrationPix.cxx:165
 AliITSUCalibrationPix.cxx:166
 AliITSUCalibrationPix.cxx:167
 AliITSUCalibrationPix.cxx:168
 AliITSUCalibrationPix.cxx:169
 AliITSUCalibrationPix.cxx:170
 AliITSUCalibrationPix.cxx:171
 AliITSUCalibrationPix.cxx:172
 AliITSUCalibrationPix.cxx:173
 AliITSUCalibrationPix.cxx:174
 AliITSUCalibrationPix.cxx:175
 AliITSUCalibrationPix.cxx:176
 AliITSUCalibrationPix.cxx:177
 AliITSUCalibrationPix.cxx:178
 AliITSUCalibrationPix.cxx:179
 AliITSUCalibrationPix.cxx:180
 AliITSUCalibrationPix.cxx:181
 AliITSUCalibrationPix.cxx:182
 AliITSUCalibrationPix.cxx:183
 AliITSUCalibrationPix.cxx:184
 AliITSUCalibrationPix.cxx:185
 AliITSUCalibrationPix.cxx:186
 AliITSUCalibrationPix.cxx:187
 AliITSUCalibrationPix.cxx:188
 AliITSUCalibrationPix.cxx:189
 AliITSUCalibrationPix.cxx:190
 AliITSUCalibrationPix.cxx:191
 AliITSUCalibrationPix.cxx:192
 AliITSUCalibrationPix.cxx:193
 AliITSUCalibrationPix.cxx:194
 AliITSUCalibrationPix.cxx:195
 AliITSUCalibrationPix.cxx:196
 AliITSUCalibrationPix.cxx:197
 AliITSUCalibrationPix.cxx:198
 AliITSUCalibrationPix.cxx:199
 AliITSUCalibrationPix.cxx:200
 AliITSUCalibrationPix.cxx:201
 AliITSUCalibrationPix.cxx:202
 AliITSUCalibrationPix.cxx:203
 AliITSUCalibrationPix.cxx:204
 AliITSUCalibrationPix.cxx:205
 AliITSUCalibrationPix.cxx:206
 AliITSUCalibrationPix.cxx:207
 AliITSUCalibrationPix.cxx:208
 AliITSUCalibrationPix.cxx:209
 AliITSUCalibrationPix.cxx:210
 AliITSUCalibrationPix.cxx:211
 AliITSUCalibrationPix.cxx:212
 AliITSUCalibrationPix.cxx:213
 AliITSUCalibrationPix.cxx:214
 AliITSUCalibrationPix.cxx:215
 AliITSUCalibrationPix.cxx:216
 AliITSUCalibrationPix.cxx:217
 AliITSUCalibrationPix.cxx:218
 AliITSUCalibrationPix.cxx:219
 AliITSUCalibrationPix.cxx:220
 AliITSUCalibrationPix.cxx:221
 AliITSUCalibrationPix.cxx:222
 AliITSUCalibrationPix.cxx:223
 AliITSUCalibrationPix.cxx:224
 AliITSUCalibrationPix.cxx:225
 AliITSUCalibrationPix.cxx:226
 AliITSUCalibrationPix.cxx:227
 AliITSUCalibrationPix.cxx:228
 AliITSUCalibrationPix.cxx:229
 AliITSUCalibrationPix.cxx:230
 AliITSUCalibrationPix.cxx:231
 AliITSUCalibrationPix.cxx:232
 AliITSUCalibrationPix.cxx:233
 AliITSUCalibrationPix.cxx:234
 AliITSUCalibrationPix.cxx:235
 AliITSUCalibrationPix.cxx:236
 AliITSUCalibrationPix.cxx:237
 AliITSUCalibrationPix.cxx:238
 AliITSUCalibrationPix.cxx:239
 AliITSUCalibrationPix.cxx:240
 AliITSUCalibrationPix.cxx:241
 AliITSUCalibrationPix.cxx:242
 AliITSUCalibrationPix.cxx:243
 AliITSUCalibrationPix.cxx:244
 AliITSUCalibrationPix.cxx:245
 AliITSUCalibrationPix.cxx:246
 AliITSUCalibrationPix.cxx:247
 AliITSUCalibrationPix.cxx:248
 AliITSUCalibrationPix.cxx:249
 AliITSUCalibrationPix.cxx:250
 AliITSUCalibrationPix.cxx:251
 AliITSUCalibrationPix.cxx:252
 AliITSUCalibrationPix.cxx:253
 AliITSUCalibrationPix.cxx:254
 AliITSUCalibrationPix.cxx:255
 AliITSUCalibrationPix.cxx:256
 AliITSUCalibrationPix.cxx:257
 AliITSUCalibrationPix.cxx:258
 AliITSUCalibrationPix.cxx:259
 AliITSUCalibrationPix.cxx:260
 AliITSUCalibrationPix.cxx:261
 AliITSUCalibrationPix.cxx:262
 AliITSUCalibrationPix.cxx:263
 AliITSUCalibrationPix.cxx:264
 AliITSUCalibrationPix.cxx:265
 AliITSUCalibrationPix.cxx:266
 AliITSUCalibrationPix.cxx:267
 AliITSUCalibrationPix.cxx:268
 AliITSUCalibrationPix.cxx:269
 AliITSUCalibrationPix.cxx:270
 AliITSUCalibrationPix.cxx:271
 AliITSUCalibrationPix.cxx:272
 AliITSUCalibrationPix.cxx:273
 AliITSUCalibrationPix.cxx:274
 AliITSUCalibrationPix.cxx:275
 AliITSUCalibrationPix.cxx:276
 AliITSUCalibrationPix.cxx:277
 AliITSUCalibrationPix.cxx:278
 AliITSUCalibrationPix.cxx:279
 AliITSUCalibrationPix.cxx:280
 AliITSUCalibrationPix.cxx:281
 AliITSUCalibrationPix.cxx:282
 AliITSUCalibrationPix.cxx:283
 AliITSUCalibrationPix.cxx:284
 AliITSUCalibrationPix.cxx:285
 AliITSUCalibrationPix.cxx:286
 AliITSUCalibrationPix.cxx:287
 AliITSUCalibrationPix.cxx:288
 AliITSUCalibrationPix.cxx:289
 AliITSUCalibrationPix.cxx:290
 AliITSUCalibrationPix.cxx:291
 AliITSUCalibrationPix.cxx:292
 AliITSUCalibrationPix.cxx:293
 AliITSUCalibrationPix.cxx:294
 AliITSUCalibrationPix.cxx:295
 AliITSUCalibrationPix.cxx:296
 AliITSUCalibrationPix.cxx:297
 AliITSUCalibrationPix.cxx:298
 AliITSUCalibrationPix.cxx:299
 AliITSUCalibrationPix.cxx:300