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

///////////////////////////////////////////////////////////////////////////////
/// 
/// This is a class for reading raw data files.
///
/// The files of one event are expected to be in one directory. The name 
/// of the directory is "raw" + the event number. Each file contains
/// the raw data (with data header) of one DDL. The convention for the
/// file names is "DET_#DDL.ddl". "DET" is the name of the detector and
/// "#DDL" is the unique equipment ID.
///
/// The constructor of AliRawReaderFile takes the event number or the
/// directory name as argument.
/// 
///////////////////////////////////////////////////////////////////////////////

#include <cstdlib>
#include "AliRawReaderFile.h"
#include "AliDAQ.h"
#include <TSystem.h>
#include <TArrayC.h>


using std::ios;
ClassImp(AliRawReaderFile)


AliRawReaderFile::AliRawReaderFile(Int_t eventNumber) :
  fEventIndex(eventNumber),
  fDirName("."),
  fDirectory(NULL),
  fStream(NULL),
  fEquipmentId(-1),
  fBuffer(NULL),
  fBufferSize(0),
  fEquipmentSize(0),
  fDDLIndex(NULL),
  fDDLCurrent(-1),
  fType(7),
  fRunNb(0),
  fDetectorPattern(0),
  fTimestamp(0)
{
// create an object to read digits from the given event
// in the current directory

  fDirectory = OpenDirectory();
  if (!fDirectory) fIsValid = kFALSE;
  if (!OpenNextFile()) fIsValid = kFALSE;

  fId[0] = fId[1] = 0;
  fTriggerPattern[0] = fTriggerPattern[1] = fTriggerPattern[3] = fTriggerPattern[3] = 0;
}

AliRawReaderFile::AliRawReaderFile(const char* dirName, Int_t eventNumber) :
  fEventIndex(eventNumber),
  fDirName(dirName),
  fDirectory(NULL),
  fStream(NULL),
  fEquipmentId(-1),
  fBuffer(NULL),
  fBufferSize(0),
  fEquipmentSize(0),
  fDDLIndex(NULL),
  fDDLCurrent(-1),
  fType(7),
  fRunNb(0),
  fDetectorPattern(0),
  fTimestamp(0)
{
// create an object to read digits from the given directory

  fDirectory = OpenDirectory();
  if (!fDirectory) fIsValid = kFALSE;
  if (fEventIndex >= 0 && (!OpenNextFile())) fIsValid = kFALSE;

  fId[0] = fId[1] = 0;
  fTriggerPattern[0] = fTriggerPattern[1] = fTriggerPattern[3] = fTriggerPattern[3] = 0;
}

AliRawReaderFile::~AliRawReaderFile()
{
// close the input file

  if (fDirectory) gSystem->FreeDirectory(fDirectory);
  if (fStream) {
#if defined(__HP_aCC) || defined(__DECCXX)
    if (fStream->rdbuf()->is_open()) fStream->close();
#else
    if (fStream->is_open()) fStream->close();
#endif
    delete fStream;
  }
  if (fHeader) delete fHeader;
  if (fHeaderV3) delete fHeaderV3;

  if (fBuffer) delete[] fBuffer;
  if (fDDLIndex) delete fDDLIndex; fDDLIndex=NULL;
}

void AliRawReaderFile::RequireHeader(Bool_t required)
{
  // Reading of raw data in case of missing
  // raw data header is not implemented for
  // this class
  if (!required) {
    Warning("AliRawReaderFile","Reading of raw data without raw data header!");
    if (fHeader) delete fHeader;
    if (fHeaderV3) delete fHeaderV3;
    fHeader = NULL;
    fHeaderV3 = NULL;
  }

  AliRawReader::RequireHeader(required);
}

TString AliRawReaderFile::GetDirName() const
{
// return the current directory name

  TString dirName(fDirName);
  if (fEventIndex >= 0) {
    dirName += "/raw";
    dirName += fEventIndex;
  }
  return dirName;
}

void* AliRawReaderFile::OpenDirectory()
{
// open and return the directory

  TString dirName = GetDirName();
  void* directory = gSystem->OpenDirectory(dirName);
  if (!directory) {
    Error("OpenDirectory", "could not open directory %s", dirName.Data());
  }
  return directory;
}

Bool_t AliRawReaderFile::CreateFileIndex()
{
// scan the files of the directory and create index of all DDL files
// returns kFALSE if no DDL files available
  Bool_t result=kFALSE;
  fDDLCurrent=-1;
  if (fDDLIndex) return fDDLIndex->GetSize()>0;
  if (!fDirectory) return kFALSE;
  fDDLIndex=new TArrayC(0);
  if (!fDDLIndex) return kFALSE;
  TString entry;
  while ((entry = gSystem->GetDirEntry(fDirectory))) {
    const char* filename=entry.Data();
    if (!filename || entry.IsNull()) break;
    if (entry.BeginsWith("run")) {
      entry.ReplaceAll("run","");
      fRunNb = entry.Atoi();
      continue;
    }
    if (!entry.EndsWith(".ddl")) continue;
    result=kTRUE;
    entry.Remove(0, entry.Last('_')+1);
    entry.Remove(entry.Length()-4);
    Int_t equipmentId = atoi(entry.Data());
    Int_t ddlIndex = -1;
    fDetectorPattern |= (1 << AliDAQ::DetectorIDFromDdlID(equipmentId,ddlIndex));
    if (fDDLIndex->GetSize()<=equipmentId) {
      fDDLIndex->Set(equipmentId+1);
    }
    char* array=(char*)fDDLIndex->GetArray();
    array[equipmentId]=1;
  }

  return result;
}

Bool_t AliRawReaderFile::OpenNextFile()
{
// open the next file
// returns kFALSE if the current file is the last one

  if (!fDDLIndex && !CreateFileIndex()) return kFALSE;
  if (fSelectMinEquipmentId>=0 && fSelectMinEquipmentId>fEquipmentId)
    fDDLCurrent=fSelectMinEquipmentId-1;

  if (fStream) {
#if defined(__HP_aCC) || defined(__DECCXX)
    if (fStream->rdbuf()->is_open()) fStream->close();
#else
    if (fStream->is_open()) fStream->close();
#endif
    delete fStream;
    fStream = NULL;
    fEquipmentId = -1;
    fEquipmentSize = 0;
  }

  if (!fDirectory) return kFALSE;
  while (++fDDLCurrent<(fDDLIndex->GetSize()) && 
	 (fDDLCurrent<=fSelectMaxEquipmentId || fSelectMaxEquipmentId<0)) {
    if (fDDLIndex->At(fDDLCurrent)==0) continue;
    Int_t dummy=0;
    TString entry;
    entry.Form("%s_%d.ddl", AliDAQ::DetectorNameFromDdlID(fDDLCurrent, dummy), fDDLCurrent);
    char* fileName = gSystem->ConcatFileName(GetDirName(), entry);
    if (!fileName) continue;
    // read the timestamp
    FileStat_t buf;
    if (gSystem->GetPathInfo(fileName,buf) == 0) {
      fTimestamp = buf.fMtime;
    }
#ifndef __DECCXX 
    fStream = new fstream(fileName, ios::binary|ios::in);
#else
    fStream = new fstream(fileName, ios::in);
#endif
    delete [] fileName;
    break;
  }

  if (!fStream) return kFALSE;
  fEquipmentId = fDDLCurrent;
#if defined(__HP_aCC) || defined(__DECCXX)
  return (fStream->rdbuf()->is_open());
#else
  return (fStream->is_open());
#endif
}


Bool_t AliRawReaderFile::ReadHeader()
{
// read a data header at the current stream position
// returns kFALSE if the mini header could not be read

  if (!fStream && !OpenNextFile()) return kFALSE;
  do {
    UInt_t dataSize=0;
    UInt_t headerSize=0;
    if (fCount > 0) fStream->seekg(Int_t(fStream->tellg()) + fCount);
    UInt_t currentPos = fStream->tellg();
    if (fRequireHeader) {
      if(! fHeader) fHeader = new AliRawDataHeader;
      while (!fStream->read((char*) fHeader, sizeof(AliRawDataHeader))) {
	if (!OpenNextFile()) return kFALSE;
	currentPos = fStream->tellg();
      }
      dataSize=fHeader->fSize;
      headerSize=sizeof(AliRawDataHeader);
      if(fHeader->GetVersion() == 3){
	delete fHeader;
	fHeader = NULL;
	if(! fHeaderV3) fHeaderV3 = new AliRawDataHeaderV3;
	//rewind
	fStream->seekg(currentPos);
	if (!fStream->read((char*) fHeaderV3, sizeof(AliRawDataHeaderV3)))
	  return kFALSE;
	headerSize=sizeof(AliRawDataHeaderV3);
      } else if (fHeaderV3) {
	delete fHeaderV3;
	fHeaderV3 = NULL;
      }
      
    }
    else {
      if (fStream->eof())
	if (!OpenNextFile()) return kFALSE;
    }
    if ( headerSize && dataSize != 0xFFFFFFFF) {
      fCount = dataSize - headerSize;
    } else {
      currentPos = fStream->tellg();
      fStream->seekg(0, ios::end);
      fCount = UInt_t(fStream->tellg()) - currentPos;
      fStream->seekg(currentPos);
    }
    fEquipmentSize = fCount + headerSize;
  } while (!IsSelected());
  return kTRUE;
}

Bool_t AliRawReaderFile::ReadNextData(UChar_t*& data)
{
// reads the next payload at the current stream position
// returns kFALSE if the data could not be read

  while (fCount == 0) {
    if (!ReadHeader()) return kFALSE;
  }
  if (fBufferSize < fCount) {
    if (fBuffer) delete[] fBuffer;
    fBufferSize = Int_t(fCount*1.2);
    fBuffer = new UChar_t[fBufferSize];
  }
  if (!fStream->read((char*) fBuffer, fCount)) {
    Error("ReadNext", "could not read data!");
    return kFALSE;
  }
  fCount = 0;

  data = fBuffer;
  return kTRUE;
}

Bool_t AliRawReaderFile::ReadNext(UChar_t* data, Int_t size)
{
// reads the next block of data at the current stream position
// returns kFALSE if the data could not be read

  if (!fStream->read((char*) data, size)) {
    Error("ReadNext", "could not read data!");
    return kFALSE;
  }
  fCount -= size;
  return kTRUE;
}


Bool_t AliRawReaderFile::Reset()
{
// reset the current stream position to the first DDL file of the curevent

  void* directory = OpenDirectory();
  if (!directory) return kFALSE;

  if (fStream) {
#if defined(__HP_aCC) || defined(__DECCXX)
    if (fStream->rdbuf()->is_open()) fStream->close();
#else
    if (fStream->is_open()) fStream->close();
#endif
    delete fStream;
    fStream = NULL;
  }

  if (fDirectory) gSystem->FreeDirectory(fDirectory);
  fDirectory = directory;

  // Matthias 05.06.2008
  // do not open the next file. That might collide with a subsequent
  // SelectEquipment call as the 'file pointer' is already set.
  // This is important for the indexing of the DDL files.
  // ---------------------------------------------------------
  // All ReadNext functions first require the fCount member to be
  // non zero or call ReadHeader. That allows to postpone the call
  // to OpenNextFile to the next invocation of ReadHeader.
  // ReadHeader has been mofified according to that.
  /*
  OpenNextFile();
  */
  fEquipmentId=-1;
  fDDLCurrent=-1;
  fCount = 0;
  return kTRUE;
}

Bool_t AliRawReaderFile::NextEvent()
{
// go to the next event directory

  if (fDDLIndex) delete fDDLIndex;
  fDDLIndex=NULL;
  fDetectorPattern = 0;
  if (fEventIndex < -1) return kFALSE;

  do {
    TString dirName = fDirName + "/raw";
    dirName += (fEventIndex + 1);
    void* directory = gSystem->OpenDirectory(dirName);
    if (!directory) return kFALSE;
    gSystem->FreeDirectory(directory);

    fEventIndex++;
    Reset();
  } while (!IsEventSelected());

  // Read the header of the first payload
  // in order to fill the 'fake' event header
  if (ReadHeader() && ( fHeader || fHeaderV3) ) {
    UInt_t eid1=0, eid2=0;
    ULong64_t trg1=0, trg2=0;
    if(fHeader){
      eid1=fHeader->GetEventID1();
      eid2=fHeader->GetEventID2();
      trg1=fHeader->GetTriggerClasses();
    } else {
      eid1=fHeaderV3->GetEventID1();
      eid2=fHeaderV3->GetEventID2();
      trg1=fHeaderV3->GetTriggerClasses();
      trg2=fHeaderV3->GetTriggerClassesNext50();
    }

    fId[0] = ((eid2 >> 20) & 0xf);
    fId[1] = (eid1 & 0xfff) | ((eid2 & 0xfffff) << 12);
    fTriggerPattern[0] = (trg1 & 0xffffffff);
    fTriggerPattern[1] = ((trg1 >> 32) & 0x3ffff) | ((trg2 & 0x3fff) << 18);
    fTriggerPattern[2] = ((trg2 >> 14) & 0xffffffff);
    fTriggerPattern[3] = ((trg2 >> 46) & 0xf);
  }
  else {
    Warning("AliRawReaderFile","Can not read CDH header! The event header fields will be empty!");
  }
  Reset();

  fEventNumber++;

  return kTRUE;
}

Bool_t AliRawReaderFile::RewindEvents()
{
// reset the event counter

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