ROOT logo
/**************************************************************************
 * Copyright(c) 2007-2009, 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$*/

///////////////////////////////////////////////////////////////////////////////
///
/// This class provides access to ITS SDD digits in raw data.
///
///////////////////////////////////////////////////////////////////////////////

#include "AliITSRawStreamSDD.h"
#include "AliITSRawStreamSDDCompressed.h"
#include "AliRawReader.h"
#include "AliLog.h"

ClassImp(AliITSRawStreamSDD)
  
const UInt_t AliITSRawStreamSDD::fgkCodeLength[8] =  {8, 18, 2, 3, 4, 5, 6, 7};

//______________________________________________________________________
AliITSRawStreamSDD::AliITSRawStreamSDD(AliRawReader* rawReader) :
  AliITSRawStream(rawReader),
fDDLModuleMap(0),
fData(0),
fResetSkip(kTRUE),
fEventId(0),
fCarlosId(-1),
fChannel(0),
fJitter(0),
fEightBitSignal(0),
fDecompressAmbra(kTRUE)
{
// create an object to read ITS SDD raw digits
  Reset();
  for(Int_t im=0;im<kSDDModules;im++){
    fLowThresholdArray[im][0]=0;
    fLowThresholdArray[im][1]=0;
  }
  for(Int_t i=0;i<kFifoWords;i++) fNfifo[i]=0;
  fRawReader->Reset();
  fRawReader->Select("ITSSDD");

  for(Short_t i=0; i<kCarlosWords; i++) fICarlosWord[i]=0x30000000 + i; // 805306368+i;
  for(Short_t i=0; i<kFifoWords; i++) fIFifoWord[i]=0x30000010 + i;  // 805306384+i;
}

//______________________________________________________________________
AliITSRawStreamSDD::AliITSRawStreamSDD(const AliITSRawStreamSDD& rs) :
AliITSRawStream(rs.fRawReader),
fDDLModuleMap(rs.fDDLModuleMap),
fData(0),
fResetSkip(kTRUE),
fEventId(0),
fCarlosId(-1),
fChannel(0),
fJitter(0),
fEightBitSignal(0),
fDecompressAmbra(kTRUE)
{
  // copy constructor
  AliError("Copy constructor should not be used.");
}
//__________________________________________________________________________
AliITSRawStreamSDD& AliITSRawStreamSDD::operator=(const AliITSRawStreamSDD& rs) {
  // assignment operator
  if (this!=&rs) {}
  AliError("Assignment opertator should not be used.");
  return *this;
}

//______________________________________________________________________
AliITSRawStreamSDD::~AliITSRawStreamSDD(){
  if(fDDLModuleMap) delete fDDLModuleMap;
}
//______________________________________________________________________
UChar_t AliITSRawStreamSDD::ReadBlockAttributes(AliRawReader* rawReader){
  // reads block attribuited from CDH
  UChar_t *data;
  rawReader->Reset();
  rawReader->Select("ITSSDD");
  do{
    if(!rawReader->ReadNextData(data)) return 0x0;
  }while(rawReader->GetDataSize()==0);
  UChar_t attr=rawReader->GetBlockAttributes();
  return attr;
}
//______________________________________________________________________
AliITSRawStream* AliITSRawStreamSDD::CreateRawStreamSDD(AliRawReader* rawReader, UChar_t attributes){
  // instantiates the proper raw stream from block attributes value

  Int_t rawFormat=(attributes&0xE0)>>5;  
  rawReader->Reset();
  AliITSRawStream* inputSDD;
  if(rawFormat==0){
    inputSDD=new AliITSRawStreamSDDCompressed(rawReader);
    inputSDD->SetADCEncoded(kTRUE);
  }else{
    inputSDD=new AliITSRawStreamSDD(rawReader);
  }
  return inputSDD;
}
//______________________________________________________________________
AliITSRawStream* AliITSRawStreamSDD::CreateRawStreamSDD(AliRawReader* rawReader){
  // reads the data format from CDH and instantiates the proper raw stream
  UChar_t attr=ReadBlockAttributes(rawReader);
  return CreateRawStreamSDD(rawReader,attr);
}
//______________________________________________________________________
UInt_t AliITSRawStreamSDD::ReadBits()
{
// read bits from the given channel
  UInt_t result = (fChannelData[fCarlosId][fChannel] & ((1<<fReadBits[fCarlosId][fChannel]) - 1));
  fChannelData[fCarlosId][fChannel] >>= fReadBits[fCarlosId][fChannel]; 
  fLastBit[fCarlosId][fChannel] -= fReadBits[fCarlosId][fChannel];
  return result;
}

//______________________________________________________________________
Int_t AliITSRawStreamSDD::DecompAmbra(Int_t value) const
{
  // AMBRA decompression (from 8 to 10 bit)
  
  if ((value & 0x80) == 0) {
    return value & 0x7f;
  } else if ((value & 0x40) == 0) {
    if(value&1) return 0x080 + ((value & 0x3f) << 1);
    return 0x081 + ((value & 0x3f) << 1);
  } else if ((value & 0x20) == 0) {
    if(value&1) return 0x103 + ((value & 0x1f) << 3);
    return 0x104 + ((value & 0x1f) << 3);
  } else {
    if(value&1) return 0x207 + ((value & 0x1f) << 4);
    return 0x208 + ((value & 0x1f) << 4);
  }
  
}

//______________________________________________________________________
Bool_t AliITSRawStreamSDD::Next()
{
// read the next raw digit
// returns kFALSE if there is no digit left
// returns kTRUE and fCompletedModule=kFALSE and fCompletedDDL=kFALSE when a digit is found
// returns kTRUE and fCompletedModule=kTRUE  and fCompletedDDL=kFALSE when a module is completed (=3x3FFFFFFF footer words)
// returns kTRUE and fCompletedModule=kFALSE and fCompletedDDL=kTRUE  when a DDL is completed (=jitter word)

  fPrevModuleID = fModuleID;
  fCompletedModule=kFALSE;

  while (kTRUE) {
    if(fResetSkip){
      Reset();
      Bool_t kSkip = SkipHeaderWord();
      if(!kSkip) return kSkip;	
      fResetSkip=kFALSE;
    }
    if ((fChannel < 0) || (fCarlosId < 0) || (fChannel >= 2) || (fCarlosId >= kModulesPerDDL) || (fLastBit[fCarlosId][fChannel] < fReadBits[fCarlosId][fChannel]) ) {
      if (!fRawReader->ReadNextInt(fData)) return kFALSE;  // read next word


      if((fData >> 16) == 0x7F00){ // jitter word
	fJitter = fData&0x000000ff;
	fResetSkip=kTRUE;
	fCompletedModule=kFALSE;
	fCompletedDDL=kTRUE;
	return kTRUE;
       }

      UInt_t nData28= fData >> 28;
      UInt_t nData30= fData >> 30;


      if (nData28== 0x02) {           // header
	fEventId = (fData >> 3) & 0x07FF; 
      } else if (nData28== 0x03) {    // Carlos and FIFO words or Footers
	if(fData>=fICarlosWord[0]&&fData<=fICarlosWord[11]) { // Carlos Word
	  fCarlosId = fData-fICarlosWord[0];
	  Int_t iFifoIdx = fCarlosId/3;
	  fNfifo[iFifoIdx] = fCarlosId;
	} else if (fData>=fIFifoWord[0]&&fData<=fIFifoWord[3]){ // FIFO word
	  fCarlosId = fNfifo[fData-fIFifoWord[0]];	    
	} else if(fData==0x3FFFFFFF && fCarlosId>=0 && fCarlosId<kModulesPerDDL){ // Carlos footer
	  fICountFoot[fCarlosId]++; // stop before the last word (last word=jitter)
	  if(fICountFoot[fCarlosId]==3){
	    fCompletedModule=kTRUE;
	    fCompletedDDL=kFALSE;
	    return kTRUE;
	  }
	} else if(fData==0x3F1F1F1F){ // CarlosRX footer
	  // CARLOSRX footer -- do nothing
	}else{
	  fRawReader->AddMajorErrorLog(kDataError,"Bad footer");
	  AliWarning(Form("Invalid data: bad footer %08X\n", fData));
	  return kFALSE;	    
	}
      } else if (nData30 == 0x02 || nData30 == 0x03) {
	fChannel = nData30-2;
	if(fCarlosId>=0 && fCarlosId<kModulesPerDDL){
	  fChannelData[fCarlosId][fChannel] += 
	    (ULong64_t(fData & 0x3FFFFFFF) << fLastBit[fCarlosId][fChannel]);
	  fLastBit[fCarlosId][fChannel] += 30;
	}
      } else if (nData28== 0x04) {
	// JTAG word -- do nothing
      } else {                               // unknown data format
	fRawReader->AddMajorErrorLog(kDataFormatErr,Form("Invalid data %8.8x",fData));
	AliWarning(Form("Invalid data: %08X\n", fData));
	return kFALSE;
      }
      
      if(fCarlosId>=0 && fCarlosId <kModulesPerDDL){
	Int_t nDDL=fRawReader->GetDDLID();
	if(nDDL>=0){
	  fModuleID = GetModuleNumber(nDDL,fCarlosId);
	}
      }
    } else {  // decode data
      if (fReadCode[fCarlosId][fChannel]) {// read the next code word
	fChannelCode[fCarlosId][fChannel] = ReadBits();
	fReadCode[fCarlosId][fChannel] = kFALSE;
	fReadBits[fCarlosId][fChannel] = fgkCodeLength[fChannelCode[fCarlosId][fChannel]];
      } else {                      // read the next data word
	UInt_t data = ReadBits();
	fReadCode[fCarlosId][fChannel] = kTRUE;
	fReadBits[fCarlosId][fChannel] = 3;
	if (fChannelCode[fCarlosId][fChannel] == 0) {         // set the time bin	  
	  fTimeBin[fCarlosId][fChannel] = data;
	} else if (fChannelCode[fCarlosId][fChannel] == 1) {  // next anode
	  fTimeBin[fCarlosId][fChannel] = 0;
	  fAnode[fCarlosId][fChannel]++;
	} else {                                   // ADC signal data
	  fEightBitSignal=data + (1 << fChannelCode[fCarlosId][fChannel]);
	  if(fDecompressAmbra) fSignal = DecompAmbra(fEightBitSignal + fLowThresholdArray[fModuleID-kSPDModules][fChannel]);
	  fCoord1 = fAnode[fCarlosId][fChannel];
	  fCoord2 = fTimeBin[fCarlosId][fChannel];
	  fTimeBin[fCarlosId][fChannel]++;
	  fCompletedModule=kFALSE;
	  fCompletedDDL=kFALSE;
	  return kTRUE;
	}
      }
    }
  }
  return kFALSE;
}

//______________________________________________________________________
void AliITSRawStreamSDD::Reset(){

  //reset data member for a new ddl
  for(Int_t i=0;i<2;i++){
    for(Int_t ic=0;ic<kModulesPerDDL;ic++){
      fChannelData[ic][i]=0;
      fLastBit[ic][i]=0;
      fChannelCode[ic][i]=0;
      fReadCode[ic][i]=kTRUE;
      fReadBits[ic][i]=3;
      fTimeBin[ic][i]=0;
      fAnode[ic][i]=0;     
      fICountFoot[ic]=0;
    }
  }
}

//______________________________________________________________________
Bool_t AliITSRawStreamSDD::SkipHeaderWord(){
  // skip the 1 DDL header word = 0xffffffff
  while (kTRUE) {
    if (!fRawReader->ReadNextInt(fData)) return kFALSE;    
    if ((fData >> 30) == 0x01) continue;  // JTAG word
    if(fData==0xFFFFFFFF) return kTRUE;
  }
}

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