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

/*
$Log$
Revision 1.12  2007/02/20 15:57:00  decaro
Raw data update: to read the TOF raw data defined in UNPACKED mode

*/

////////////////////////////////////////////////////////////////////////
//
// AliTOFDigitMap class
//
// digitmap enables fast check if the pad was already digit.

// The index of a AliTOFdigit is saved in the each digitmap "cell"
// (there is an offset +1, because the index can be zero and zero
// means empty cell).
// In TOF, number of strips varies according plate type, the highest
// number is in plate C. For all plates is used this number, so the
// size of the digitmap is a little bit greater than necessary, but it
// simplifies the access algorithm.
// 
//
// Author: F. Pierella based on AliTOFHitMap
//
// Modified by A. De Caro
//
///////////////////////////////////////////////////////////////////////

#include "AliLog.h"

#include "AliTOFDigitMap.h"
#include "AliTOFGeometry.h"

ClassImp(AliTOFDigitMap)

AliTOFDigitMap::AliTOFDigitMap():
  fNSector(AliTOFGeometry::NSectors()),
  fNplate(AliTOFGeometry::NPlates()),
  fNstrip(AliTOFGeometry::NStripC()),
  fNpx(AliTOFGeometry::NpadX()),
  fNpz(AliTOFGeometry::NpadZ()),
  fMaxIndex(-1),
  fDigitMap(0x0)
{
//
// Default ctor
//

  fMaxIndex=fNSector*fNplate*fNstrip*fNpx*fNpz;
  fDigitMap = new Int_t*[fMaxIndex];

  for (Int_t i=0; i<fMaxIndex; i++) fDigitMap[i] = new Int_t[kMaxDigitsPerPad];
  Clear();
}

////////////////////////////////////////////////////////////////////////
AliTOFDigitMap::AliTOFDigitMap(const AliTOFDigitMap & digitMap):
  TObject(digitMap),
  fNSector(digitMap.fNSector),
  fNplate(digitMap.fNplate),
  fNstrip(digitMap.fNstrip),
  fNpx(digitMap.fNpx),
  fNpz(digitMap.fNpz),
  fMaxIndex(-1),
  fDigitMap(0x0)
{
  //
  // Copy constructor
  //
  fMaxIndex=fNSector*fNplate*fNstrip*fNpx*fNpz;
  fDigitMap = new Int_t*[fMaxIndex];
  for (Int_t i=0; i<fMaxIndex; i++) {
    fDigitMap[i] = new Int_t[kMaxDigitsPerPad];
    for (Int_t j=0; j<kMaxDigitsPerPad; j++)
      fDigitMap[i][j]=digitMap.fDigitMap[i][j];
  }
}

////////////////////////////////////////////////////////////////////////
AliTOFDigitMap & AliTOFDigitMap::operator=(const AliTOFDigitMap & digitMap)
{
  //
  // Assignment operator
  //
  
  if (this != &digitMap) {
    TObject::operator=(digitMap);
    fNSector=digitMap.fNSector;
    fNplate=digitMap.fNplate;
    fNstrip=digitMap.fNstrip;
    fNpx=digitMap.fNpx;
    fNpz=digitMap.fNpz;
    fMaxIndex=fNSector*fNplate*fNstrip*fNpx*fNpz;
    for (Int_t i=0; i<fMaxIndex; ++i) delete [] fDigitMap[i];
    delete [] fDigitMap;
    fDigitMap = new Int_t*[fMaxIndex];
    for (Int_t i=0; i<fMaxIndex; i++) {
      fDigitMap[i] = new Int_t[kMaxDigitsPerPad];
      for (Int_t j=0; j<kMaxDigitsPerPad; j++)
	fDigitMap[i][j]=digitMap.fDigitMap[i][j];
    }
  }
  return *this;
}

 
////////////////////////////////////////////////////////////////////////
AliTOFDigitMap::~AliTOFDigitMap()
{
//
// Destructor
//
  if (fDigitMap) {
    for (Int_t i=0; i<fMaxIndex; i++)  delete[] fDigitMap[i];
    delete [] fDigitMap;
  }


}

////////////////////////////////////////////////////////////////////////
void AliTOFDigitMap::Clear(const Option_t*)
{
  //
  // Clear digitmap
  //

  for(Int_t ii=0; ii<fMaxIndex; ii++) {
    for (Int_t jj=0; jj<kMaxDigitsPerPad; jj++) {
      fDigitMap[ii][jj] = 0;
    }
  }
 
}

////////////////////////////////////////////////////////////////////////
Int_t AliTOFDigitMap::CheckedIndex(Int_t * const vol) const
{
  //
  // Return checked index for vol
  //

  Int_t index =
    vol[0]*fNplate*fNstrip*fNpx*fNpz+             // sector
    vol[1]*fNstrip*fNpx*fNpz+                     // plate
    vol[2]*fNpx*fNpz+                             // strip
    vol[3]*fNpz+                                  // padx
    vol[4];                                       // padz

    if (index >= fMaxIndex || index < 0) {
      AliError("CheckedIndex - input outside bounds");
      return -1;
    } else {
      return index;
    }
}

////////////////////////////////////////////////////////////////////////
void AliTOFDigitMap::AddDigit(Int_t *vol, Int_t idigit)
{
  //
  // Assign digit to pad vol
  //
  // 0 means empty pad, we need to shift indeces by 1

  if (fDigitMap[CheckedIndex(vol)][kMaxDigitsPerPad-1]!=0) {
    AliDebug(1,Form("In the volume (Se%i, Pl%i, St%i, PadR%i, Pad%i) there is not more possibility to add other digits.", vol[0], vol[1], vol[2], vol[4], vol[3]));
    AliDebug(1,Form("Then, the digit number %i will be not inserted in the digit map, i.e. it will be lost.", idigit));
    AliDebug(1,Form("Please, check the possibility to increase the digit map size (succently set to %i)", kMaxDigitsPerPad));
    return;
  }

  for (Int_t slot=0; slot<kMaxDigitsPerPad; slot++) {

    if (fDigitMap[CheckedIndex(vol)][slot]==0) {
      fDigitMap[CheckedIndex(vol)][slot]=idigit+1;
      break;
    }
    //else continue;

  }

}

////////////////////////////////////////////////////////////////////////
void AliTOFDigitMap::GetDigitIndex(Int_t *vol, Int_t *digitLabels) const
{
  //
  // Get all contents (digitLabels) of pad volume (vol)
  //

  // 0 means empty pad, we need to shift indeces by 1

  Int_t dummy;
    for (Int_t j=0; j<kMaxDigitsPerPad; j++) {
      dummy = GetDigitIndex(vol,j);
      if (dummy>=0) digitLabels[j] = dummy;
      else break;
    }
}

////////////////////////////////////////////////////////////////////////
Int_t AliTOFDigitMap::GetDigitIndex(Int_t *vol, Int_t label) const
{
  //
  // Get one of the contents (label) of pad volume (vol)
  //

  // 0 means empty pad, we need to shift indeces by 1

  if (!(label<kMaxDigitsPerPad)) {
    AliWarning(Form("label (=%i) >= kMaxDigitsPerPad (=%i)", label, kMaxDigitsPerPad));
    return -1;
  }

  Int_t ci = CheckedIndex(vol);
  if (ci==-1) return -1;
  
  Int_t dummy = fDigitMap[ci][label];
  
  if (dummy>0) return dummy-1;
  else return -1;

}

////////////////////////////////////////////////////////////////////////
FlagType AliTOFDigitMap::TestDigit(Int_t *vol) const
{
//
// Check if hit cell is empty, used or unused
//
  Int_t inf=fDigitMap[CheckedIndex(vol)][0]; // to be modified
    if (inf > 0) {
	return kUsed;
    } else if (inf == 0) {
	return kEmpty;
    } else {
	return kUnused;
    }
}

////////////////////////////////////////////////////////////////////////
Int_t AliTOFDigitMap::GetFilledCellNumber() const
{
  //
  // Returns the number of filled cells of the TOF digit map
  //

  Int_t counter = 0;

  for (Int_t index = 0; index < fMaxIndex; ++index)
  {
    for (Int_t label = 0; label < kMaxDigitsPerPad; ++label)
    {
      if (fDigitMap[index][label] > 0)
      {
	++counter;
	break;
      }
    }
  }

  return counter;
}

////////////////////////////////////////////////////////////////////////
Bool_t AliTOFDigitMap::StripDigitCheck(Int_t iSector, Int_t iPlate, Int_t iStrip) const
{
  //
  // Returns:
  //           kFALSE if the strip doesn't contain digits
  //           kTRUE  if the strip contains at least one digit
  //

  Int_t volume[5] = {iSector, iPlate, iStrip, -1, -1};
  Bool_t counter = kFALSE;

  for (Int_t iPadX=0; iPadX<fNpx; iPadX++)
    for (Int_t iPadZ=0; iPadZ<fNpz; iPadZ++)
      {
	volume[3] = iPadX;
	volume[4] = iPadZ;
	for (Int_t label=0; label<kMaxDigitsPerPad; label++) {
	  if (GetDigitIndex(volume, label)>=0) {
	    counter = kTRUE;
	    break;
	  }
	}
      }

  return counter;

}

////////////////////////////////////////////////////////////////////////
Int_t AliTOFDigitMap::DigitInStrip(Int_t iSector, Int_t iPlate, Int_t iStrip) const
{
  //
  // Returns number of digits in the strip iStrip,
  //         in the plate iPlate of the sector iSector
  //

  Int_t volume[5] = {iSector, iPlate, iStrip, -1, -1};
  Int_t counter = 0;

  for (Int_t iPadX=0; iPadX<fNpx; iPadX++)
    for (Int_t iPadZ=0; iPadZ<fNpz; iPadZ++)
      for (Int_t label=0; label<kMaxDigitsPerPad; label++) {
	volume[3] = iPadX;
	volume[4] = iPadZ;
	if (GetDigitIndex(volume, label)>=0)
	  counter++;
      }

  return counter;

}

////////////////////////////////////////////////////////////////////////
Int_t AliTOFDigitMap::FilledCellsInStrip(Int_t iSector, Int_t iPlate, Int_t iStrip) const
{
  //
  // Returns number of digits in the strip iStrip,
  //         in the plate iPlate of the sector iSector
  //

  Int_t volume[5] = {iSector, iPlate, iStrip, -1, -1};
  Int_t counter = 0;

  for (Int_t iPadX=0; iPadX<fNpx; iPadX++)
    for (Int_t iPadZ=0; iPadZ<fNpz; iPadZ++) {
      volume[3] = iPadX;
      volume[4] = iPadZ;
      if (GetDigitIndex(volume, 0)>=0)
	counter++;
    }

  return counter;

}

////////////////////////////////////////////////////////////////////////
void AliTOFDigitMap::ResetDigitNumber(Int_t *vol, Int_t dig)
{
  //
  // Reset digit into pad vol
  //

  for (Int_t slot=0; slot<kMaxDigitsPerPad; slot++) {
    if (fDigitMap[CheckedIndex(vol)][slot]-1==dig) {
      fDigitMap[CheckedIndex(vol)][slot] = 0;
    }
  }

}

////////////////////////////////////////////////////////////////////////
void AliTOFDigitMap::ResetDigit(Int_t *vol, Int_t dig)
{
  //
  // Reset digit into pad vol
  //
  // 0 means empty pad, we need to shift indeces by 1

  fDigitMap[CheckedIndex(vol)][dig] = 0;

}

////////////////////////////////////////////////////////////////////////
void AliTOFDigitMap::ResetDigit(Int_t *vol)
{
  //
  // Reset digit into pad vol
  //
  // 0 means empty pad, we need to shift indices by 1

  for (Int_t slot=0; slot<kMaxDigitsPerPad; slot++)
    fDigitMap[CheckedIndex(vol)][slot] = 0;

}

////////////////////////////////////////////////////////////////////////
Int_t AliTOFDigitMap::GetNumberOfDigits(Int_t *vol)
{
  //
  // Returns the number of digit
  //   into pad volume vol
  //
  // 0 means empty pad
  //

  Int_t counter = 0;

  for (Int_t slot=0; slot<kMaxDigitsPerPad; slot++)
    if (GetDigitIndex(vol, slot)>=0) counter++;

  return counter;

}
 AliTOFDigitMap.cxx:1
 AliTOFDigitMap.cxx:2
 AliTOFDigitMap.cxx:3
 AliTOFDigitMap.cxx:4
 AliTOFDigitMap.cxx:5
 AliTOFDigitMap.cxx:6
 AliTOFDigitMap.cxx:7
 AliTOFDigitMap.cxx:8
 AliTOFDigitMap.cxx:9
 AliTOFDigitMap.cxx:10
 AliTOFDigitMap.cxx:11
 AliTOFDigitMap.cxx:12
 AliTOFDigitMap.cxx:13
 AliTOFDigitMap.cxx:14
 AliTOFDigitMap.cxx:15
 AliTOFDigitMap.cxx:16
 AliTOFDigitMap.cxx:17
 AliTOFDigitMap.cxx:18
 AliTOFDigitMap.cxx:19
 AliTOFDigitMap.cxx:20
 AliTOFDigitMap.cxx:21
 AliTOFDigitMap.cxx:22
 AliTOFDigitMap.cxx:23
 AliTOFDigitMap.cxx:24
 AliTOFDigitMap.cxx:25
 AliTOFDigitMap.cxx:26
 AliTOFDigitMap.cxx:27
 AliTOFDigitMap.cxx:28
 AliTOFDigitMap.cxx:29
 AliTOFDigitMap.cxx:30
 AliTOFDigitMap.cxx:31
 AliTOFDigitMap.cxx:32
 AliTOFDigitMap.cxx:33
 AliTOFDigitMap.cxx:34
 AliTOFDigitMap.cxx:35
 AliTOFDigitMap.cxx:36
 AliTOFDigitMap.cxx:37
 AliTOFDigitMap.cxx:38
 AliTOFDigitMap.cxx:39
 AliTOFDigitMap.cxx:40
 AliTOFDigitMap.cxx:41
 AliTOFDigitMap.cxx:42
 AliTOFDigitMap.cxx:43
 AliTOFDigitMap.cxx:44
 AliTOFDigitMap.cxx:45
 AliTOFDigitMap.cxx:46
 AliTOFDigitMap.cxx:47
 AliTOFDigitMap.cxx:48
 AliTOFDigitMap.cxx:49
 AliTOFDigitMap.cxx:50
 AliTOFDigitMap.cxx:51
 AliTOFDigitMap.cxx:52
 AliTOFDigitMap.cxx:53
 AliTOFDigitMap.cxx:54
 AliTOFDigitMap.cxx:55
 AliTOFDigitMap.cxx:56
 AliTOFDigitMap.cxx:57
 AliTOFDigitMap.cxx:58
 AliTOFDigitMap.cxx:59
 AliTOFDigitMap.cxx:60
 AliTOFDigitMap.cxx:61
 AliTOFDigitMap.cxx:62
 AliTOFDigitMap.cxx:63
 AliTOFDigitMap.cxx:64
 AliTOFDigitMap.cxx:65
 AliTOFDigitMap.cxx:66
 AliTOFDigitMap.cxx:67
 AliTOFDigitMap.cxx:68
 AliTOFDigitMap.cxx:69
 AliTOFDigitMap.cxx:70
 AliTOFDigitMap.cxx:71
 AliTOFDigitMap.cxx:72
 AliTOFDigitMap.cxx:73
 AliTOFDigitMap.cxx:74
 AliTOFDigitMap.cxx:75
 AliTOFDigitMap.cxx:76
 AliTOFDigitMap.cxx:77
 AliTOFDigitMap.cxx:78
 AliTOFDigitMap.cxx:79
 AliTOFDigitMap.cxx:80
 AliTOFDigitMap.cxx:81
 AliTOFDigitMap.cxx:82
 AliTOFDigitMap.cxx:83
 AliTOFDigitMap.cxx:84
 AliTOFDigitMap.cxx:85
 AliTOFDigitMap.cxx:86
 AliTOFDigitMap.cxx:87
 AliTOFDigitMap.cxx:88
 AliTOFDigitMap.cxx:89
 AliTOFDigitMap.cxx:90
 AliTOFDigitMap.cxx:91
 AliTOFDigitMap.cxx:92
 AliTOFDigitMap.cxx:93
 AliTOFDigitMap.cxx:94
 AliTOFDigitMap.cxx:95
 AliTOFDigitMap.cxx:96
 AliTOFDigitMap.cxx:97
 AliTOFDigitMap.cxx:98
 AliTOFDigitMap.cxx:99
 AliTOFDigitMap.cxx:100
 AliTOFDigitMap.cxx:101
 AliTOFDigitMap.cxx:102
 AliTOFDigitMap.cxx:103
 AliTOFDigitMap.cxx:104
 AliTOFDigitMap.cxx:105
 AliTOFDigitMap.cxx:106
 AliTOFDigitMap.cxx:107
 AliTOFDigitMap.cxx:108
 AliTOFDigitMap.cxx:109
 AliTOFDigitMap.cxx:110
 AliTOFDigitMap.cxx:111
 AliTOFDigitMap.cxx:112
 AliTOFDigitMap.cxx:113
 AliTOFDigitMap.cxx:114
 AliTOFDigitMap.cxx:115
 AliTOFDigitMap.cxx:116
 AliTOFDigitMap.cxx:117
 AliTOFDigitMap.cxx:118
 AliTOFDigitMap.cxx:119
 AliTOFDigitMap.cxx:120
 AliTOFDigitMap.cxx:121
 AliTOFDigitMap.cxx:122
 AliTOFDigitMap.cxx:123
 AliTOFDigitMap.cxx:124
 AliTOFDigitMap.cxx:125
 AliTOFDigitMap.cxx:126
 AliTOFDigitMap.cxx:127
 AliTOFDigitMap.cxx:128
 AliTOFDigitMap.cxx:129
 AliTOFDigitMap.cxx:130
 AliTOFDigitMap.cxx:131
 AliTOFDigitMap.cxx:132
 AliTOFDigitMap.cxx:133
 AliTOFDigitMap.cxx:134
 AliTOFDigitMap.cxx:135
 AliTOFDigitMap.cxx:136
 AliTOFDigitMap.cxx:137
 AliTOFDigitMap.cxx:138
 AliTOFDigitMap.cxx:139
 AliTOFDigitMap.cxx:140
 AliTOFDigitMap.cxx:141
 AliTOFDigitMap.cxx:142
 AliTOFDigitMap.cxx:143
 AliTOFDigitMap.cxx:144
 AliTOFDigitMap.cxx:145
 AliTOFDigitMap.cxx:146
 AliTOFDigitMap.cxx:147
 AliTOFDigitMap.cxx:148
 AliTOFDigitMap.cxx:149
 AliTOFDigitMap.cxx:150
 AliTOFDigitMap.cxx:151
 AliTOFDigitMap.cxx:152
 AliTOFDigitMap.cxx:153
 AliTOFDigitMap.cxx:154
 AliTOFDigitMap.cxx:155
 AliTOFDigitMap.cxx:156
 AliTOFDigitMap.cxx:157
 AliTOFDigitMap.cxx:158
 AliTOFDigitMap.cxx:159
 AliTOFDigitMap.cxx:160
 AliTOFDigitMap.cxx:161
 AliTOFDigitMap.cxx:162
 AliTOFDigitMap.cxx:163
 AliTOFDigitMap.cxx:164
 AliTOFDigitMap.cxx:165
 AliTOFDigitMap.cxx:166
 AliTOFDigitMap.cxx:167
 AliTOFDigitMap.cxx:168
 AliTOFDigitMap.cxx:169
 AliTOFDigitMap.cxx:170
 AliTOFDigitMap.cxx:171
 AliTOFDigitMap.cxx:172
 AliTOFDigitMap.cxx:173
 AliTOFDigitMap.cxx:174
 AliTOFDigitMap.cxx:175
 AliTOFDigitMap.cxx:176
 AliTOFDigitMap.cxx:177
 AliTOFDigitMap.cxx:178
 AliTOFDigitMap.cxx:179
 AliTOFDigitMap.cxx:180
 AliTOFDigitMap.cxx:181
 AliTOFDigitMap.cxx:182
 AliTOFDigitMap.cxx:183
 AliTOFDigitMap.cxx:184
 AliTOFDigitMap.cxx:185
 AliTOFDigitMap.cxx:186
 AliTOFDigitMap.cxx:187
 AliTOFDigitMap.cxx:188
 AliTOFDigitMap.cxx:189
 AliTOFDigitMap.cxx:190
 AliTOFDigitMap.cxx:191
 AliTOFDigitMap.cxx:192
 AliTOFDigitMap.cxx:193
 AliTOFDigitMap.cxx:194
 AliTOFDigitMap.cxx:195
 AliTOFDigitMap.cxx:196
 AliTOFDigitMap.cxx:197
 AliTOFDigitMap.cxx:198
 AliTOFDigitMap.cxx:199
 AliTOFDigitMap.cxx:200
 AliTOFDigitMap.cxx:201
 AliTOFDigitMap.cxx:202
 AliTOFDigitMap.cxx:203
 AliTOFDigitMap.cxx:204
 AliTOFDigitMap.cxx:205
 AliTOFDigitMap.cxx:206
 AliTOFDigitMap.cxx:207
 AliTOFDigitMap.cxx:208
 AliTOFDigitMap.cxx:209
 AliTOFDigitMap.cxx:210
 AliTOFDigitMap.cxx:211
 AliTOFDigitMap.cxx:212
 AliTOFDigitMap.cxx:213
 AliTOFDigitMap.cxx:214
 AliTOFDigitMap.cxx:215
 AliTOFDigitMap.cxx:216
 AliTOFDigitMap.cxx:217
 AliTOFDigitMap.cxx:218
 AliTOFDigitMap.cxx:219
 AliTOFDigitMap.cxx:220
 AliTOFDigitMap.cxx:221
 AliTOFDigitMap.cxx:222
 AliTOFDigitMap.cxx:223
 AliTOFDigitMap.cxx:224
 AliTOFDigitMap.cxx:225
 AliTOFDigitMap.cxx:226
 AliTOFDigitMap.cxx:227
 AliTOFDigitMap.cxx:228
 AliTOFDigitMap.cxx:229
 AliTOFDigitMap.cxx:230
 AliTOFDigitMap.cxx:231
 AliTOFDigitMap.cxx:232
 AliTOFDigitMap.cxx:233
 AliTOFDigitMap.cxx:234
 AliTOFDigitMap.cxx:235
 AliTOFDigitMap.cxx:236
 AliTOFDigitMap.cxx:237
 AliTOFDigitMap.cxx:238
 AliTOFDigitMap.cxx:239
 AliTOFDigitMap.cxx:240
 AliTOFDigitMap.cxx:241
 AliTOFDigitMap.cxx:242
 AliTOFDigitMap.cxx:243
 AliTOFDigitMap.cxx:244
 AliTOFDigitMap.cxx:245
 AliTOFDigitMap.cxx:246
 AliTOFDigitMap.cxx:247
 AliTOFDigitMap.cxx:248
 AliTOFDigitMap.cxx:249
 AliTOFDigitMap.cxx:250
 AliTOFDigitMap.cxx:251
 AliTOFDigitMap.cxx:252
 AliTOFDigitMap.cxx:253
 AliTOFDigitMap.cxx:254
 AliTOFDigitMap.cxx:255
 AliTOFDigitMap.cxx:256
 AliTOFDigitMap.cxx:257
 AliTOFDigitMap.cxx:258
 AliTOFDigitMap.cxx:259
 AliTOFDigitMap.cxx:260
 AliTOFDigitMap.cxx:261
 AliTOFDigitMap.cxx:262
 AliTOFDigitMap.cxx:263
 AliTOFDigitMap.cxx:264
 AliTOFDigitMap.cxx:265
 AliTOFDigitMap.cxx:266
 AliTOFDigitMap.cxx:267
 AliTOFDigitMap.cxx:268
 AliTOFDigitMap.cxx:269
 AliTOFDigitMap.cxx:270
 AliTOFDigitMap.cxx:271
 AliTOFDigitMap.cxx:272
 AliTOFDigitMap.cxx:273
 AliTOFDigitMap.cxx:274
 AliTOFDigitMap.cxx:275
 AliTOFDigitMap.cxx:276
 AliTOFDigitMap.cxx:277
 AliTOFDigitMap.cxx:278
 AliTOFDigitMap.cxx:279
 AliTOFDigitMap.cxx:280
 AliTOFDigitMap.cxx:281
 AliTOFDigitMap.cxx:282
 AliTOFDigitMap.cxx:283
 AliTOFDigitMap.cxx:284
 AliTOFDigitMap.cxx:285
 AliTOFDigitMap.cxx:286
 AliTOFDigitMap.cxx:287
 AliTOFDigitMap.cxx:288
 AliTOFDigitMap.cxx:289
 AliTOFDigitMap.cxx:290
 AliTOFDigitMap.cxx:291
 AliTOFDigitMap.cxx:292
 AliTOFDigitMap.cxx:293
 AliTOFDigitMap.cxx:294
 AliTOFDigitMap.cxx:295
 AliTOFDigitMap.cxx:296
 AliTOFDigitMap.cxx:297
 AliTOFDigitMap.cxx:298
 AliTOFDigitMap.cxx:299
 AliTOFDigitMap.cxx:300
 AliTOFDigitMap.cxx:301
 AliTOFDigitMap.cxx:302
 AliTOFDigitMap.cxx:303
 AliTOFDigitMap.cxx:304
 AliTOFDigitMap.cxx:305
 AliTOFDigitMap.cxx:306
 AliTOFDigitMap.cxx:307
 AliTOFDigitMap.cxx:308
 AliTOFDigitMap.cxx:309
 AliTOFDigitMap.cxx:310
 AliTOFDigitMap.cxx:311
 AliTOFDigitMap.cxx:312
 AliTOFDigitMap.cxx:313
 AliTOFDigitMap.cxx:314
 AliTOFDigitMap.cxx:315
 AliTOFDigitMap.cxx:316
 AliTOFDigitMap.cxx:317
 AliTOFDigitMap.cxx:318
 AliTOFDigitMap.cxx:319
 AliTOFDigitMap.cxx:320
 AliTOFDigitMap.cxx:321
 AliTOFDigitMap.cxx:322
 AliTOFDigitMap.cxx:323
 AliTOFDigitMap.cxx:324
 AliTOFDigitMap.cxx:325
 AliTOFDigitMap.cxx:326
 AliTOFDigitMap.cxx:327
 AliTOFDigitMap.cxx:328
 AliTOFDigitMap.cxx:329
 AliTOFDigitMap.cxx:330
 AliTOFDigitMap.cxx:331
 AliTOFDigitMap.cxx:332
 AliTOFDigitMap.cxx:333
 AliTOFDigitMap.cxx:334
 AliTOFDigitMap.cxx:335
 AliTOFDigitMap.cxx:336
 AliTOFDigitMap.cxx:337
 AliTOFDigitMap.cxx:338
 AliTOFDigitMap.cxx:339
 AliTOFDigitMap.cxx:340
 AliTOFDigitMap.cxx:341
 AliTOFDigitMap.cxx:342
 AliTOFDigitMap.cxx:343
 AliTOFDigitMap.cxx:344
 AliTOFDigitMap.cxx:345
 AliTOFDigitMap.cxx:346
 AliTOFDigitMap.cxx:347
 AliTOFDigitMap.cxx:348
 AliTOFDigitMap.cxx:349
 AliTOFDigitMap.cxx:350
 AliTOFDigitMap.cxx:351
 AliTOFDigitMap.cxx:352
 AliTOFDigitMap.cxx:353
 AliTOFDigitMap.cxx:354
 AliTOFDigitMap.cxx:355
 AliTOFDigitMap.cxx:356
 AliTOFDigitMap.cxx:357
 AliTOFDigitMap.cxx:358
 AliTOFDigitMap.cxx:359
 AliTOFDigitMap.cxx:360
 AliTOFDigitMap.cxx:361
 AliTOFDigitMap.cxx:362
 AliTOFDigitMap.cxx:363
 AliTOFDigitMap.cxx:364
 AliTOFDigitMap.cxx:365
 AliTOFDigitMap.cxx:366
 AliTOFDigitMap.cxx:367
 AliTOFDigitMap.cxx:368
 AliTOFDigitMap.cxx:369
 AliTOFDigitMap.cxx:370
 AliTOFDigitMap.cxx:371
 AliTOFDigitMap.cxx:372
 AliTOFDigitMap.cxx:373
 AliTOFDigitMap.cxx:374
 AliTOFDigitMap.cxx:375
 AliTOFDigitMap.cxx:376
 AliTOFDigitMap.cxx:377
 AliTOFDigitMap.cxx:378
 AliTOFDigitMap.cxx:379
 AliTOFDigitMap.cxx:380
 AliTOFDigitMap.cxx:381
 AliTOFDigitMap.cxx:382
 AliTOFDigitMap.cxx:383
 AliTOFDigitMap.cxx:384
 AliTOFDigitMap.cxx:385
 AliTOFDigitMap.cxx:386
 AliTOFDigitMap.cxx:387
 AliTOFDigitMap.cxx:388
 AliTOFDigitMap.cxx:389
 AliTOFDigitMap.cxx:390
 AliTOFDigitMap.cxx:391
 AliTOFDigitMap.cxx:392
 AliTOFDigitMap.cxx:393
 AliTOFDigitMap.cxx:394
 AliTOFDigitMap.cxx:395
 AliTOFDigitMap.cxx:396
 AliTOFDigitMap.cxx:397
 AliTOFDigitMap.cxx:398
 AliTOFDigitMap.cxx:399
 AliTOFDigitMap.cxx:400
 AliTOFDigitMap.cxx:401
 AliTOFDigitMap.cxx:402
 AliTOFDigitMap.cxx:403
 AliTOFDigitMap.cxx:404
 AliTOFDigitMap.cxx:405
 AliTOFDigitMap.cxx:406
 AliTOFDigitMap.cxx:407
 AliTOFDigitMap.cxx:408
 AliTOFDigitMap.cxx:409
 AliTOFDigitMap.cxx:410
 AliTOFDigitMap.cxx:411
 AliTOFDigitMap.cxx:412
 AliTOFDigitMap.cxx:413
 AliTOFDigitMap.cxx:414