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 class provides access to Altro digits in raw data.
///
/// It loops over all Altro digits in the raw data given by the AliRawReader.
/// The Next method goes to the next digit. If there are no digits left
/// it returns kFALSE.
/// Several getters provide information about the current digit.
///
///////////////////////////////////////////////////////////////////////////////

#include "AliAltroRawStream.h"
#include "AliRawReader.h"
#include "AliLog.h"
#include "AliRawEventHeaderBase.h"

ClassImp(AliAltroRawStream)


//_____________________________________________________________________________
AliAltroRawStream::AliAltroRawStream(AliRawReader* rawReader) :
  fIsShortDataHeader(kFALSE),
  fDDLNumber(-1),
  fPrevDDLNumber(-1),
  fRCUId(-1),
  fPrevRCUId(-1),
  fHWAddress(-1),
  fPrevHWAddress(-1),
  fTime(-1),
  fPrevTime(-1),
  fSignal(-1),
  fTimeBunch(-1),
  fRawReader(rawReader),
  fData(NULL),
  fPosition(0),
  fCount(0),
  fChannelPayloadSize(-1),
  fBunchLength(0),
  fRCUTrailerData(NULL),
  fRCUTrailerSize(0),
  fFECERRA(0),
  fFECERRB(0),
  fERRREG2(0),
  fERRREG3(0),
  fERRREG4(0),
  fActiveFECsA(0),
  fActiveFECsB(0),
  fAltroCFG1(0),
  fAltroCFG2(0)
{
// create an object to read Altro raw digits
}

//_____________________________________________________________________________
AliAltroRawStream::AliAltroRawStream(const AliAltroRawStream& stream) :
  TObject(stream),
  fIsShortDataHeader(stream.fIsShortDataHeader),
  fDDLNumber(stream.fDDLNumber),
  fPrevDDLNumber(stream.fPrevDDLNumber),
  fRCUId(stream.fRCUId),
  fPrevRCUId(stream.fPrevRCUId),
  fHWAddress(stream.fHWAddress),
  fPrevHWAddress(stream.fPrevHWAddress),
  fTime(stream.fTime),
  fPrevTime(stream.fPrevTime),
  fSignal(stream.fSignal),
  fTimeBunch(stream.fTimeBunch),
  fRawReader(stream.fRawReader),
  fData(stream.fData),
  fPosition(stream.fPosition),
  fCount(stream.fCount),
  fChannelPayloadSize(stream.fChannelPayloadSize),
  fBunchLength(stream.fBunchLength),
  fRCUTrailerData(stream.fRCUTrailerData),
  fRCUTrailerSize(stream.fRCUTrailerSize),
  fFECERRA(stream.fFECERRA),
  fFECERRB(stream.fFECERRB),
  fERRREG2(stream.fERRREG2),
  fERRREG3(stream.fERRREG3),
  fERRREG4(stream.fERRREG4),
  fActiveFECsA(stream.fActiveFECsA),
  fActiveFECsB(stream.fActiveFECsB),
  fAltroCFG1(stream.fAltroCFG1),
  fAltroCFG2(stream.fAltroCFG2)
{
}

//_____________________________________________________________________________
AliAltroRawStream& AliAltroRawStream::operator = (const AliAltroRawStream& stream)
{
  if(&stream == this) return *this;

  fIsShortDataHeader = stream.fIsShortDataHeader;
  fDDLNumber         = stream.fDDLNumber;
  fPrevDDLNumber     = stream.fPrevDDLNumber;
  fRCUId             = stream.fRCUId;
  fPrevRCUId         = stream.fPrevRCUId;
  fHWAddress         = stream.fHWAddress;
  fPrevHWAddress     = stream.fPrevHWAddress;
  fTime              = stream.fTime;
  fPrevTime          = stream.fPrevTime;
  fSignal            = stream.fSignal;
  fTimeBunch         = stream.fTimeBunch;
  fRawReader         = stream.fRawReader;
  fData              = stream.fData;
  fPosition          = stream.fPosition;
  fCount             = stream.fCount;
  fChannelPayloadSize= stream.fChannelPayloadSize;
  fBunchLength       = stream.fBunchLength;
  fRCUTrailerData    = stream.fRCUTrailerData;
  fRCUTrailerSize    = stream.fRCUTrailerSize;
  fFECERRA           = stream.fFECERRA;
  fFECERRB           = stream.fFECERRB;
  fERRREG2           = stream.fERRREG2;
  fERRREG3           = stream.fERRREG3;
  fERRREG4           = stream.fERRREG4;
  fActiveFECsA       = stream.fActiveFECsA;
  fActiveFECsB       = stream.fActiveFECsB;
  fAltroCFG1         = stream.fAltroCFG1;
  fAltroCFG2         = stream.fAltroCFG2;

  return *this;
}

//_____________________________________________________________________________
AliAltroRawStream::~AliAltroRawStream()
{
// clean up

}

//_____________________________________________________________________________
void AliAltroRawStream::Reset()
{
// reset altro raw stream params

  fPosition = fCount = fBunchLength = 0;
  fChannelPayloadSize = -1;

  fRCUTrailerData = NULL;
  fRCUTrailerSize = 0;

  fFECERRA = fFECERRB = fERRREG2 = fERRREG3 = fERRREG4 = fActiveFECsA = fActiveFECsB = fAltroCFG1 = fAltroCFG2 = 0;

  fDDLNumber = fPrevDDLNumber = fRCUId = fPrevRCUId = fHWAddress = fPrevHWAddress = fTime = fPrevTime = fSignal = fTimeBunch = -1;

  if (fRawReader) fRawReader->Reset();
}

//_____________________________________________________________________________
Bool_t AliAltroRawStream::Next()
{
// read the next raw digit
// returns kFALSE if there is no digit left

  fPrevDDLNumber = fDDLNumber;
  fPrevRCUId = fRCUId;
  fPrevHWAddress = fHWAddress;
  fPrevTime = fTime;

  while (fCount == 0) {  // next trailer
    while (fPosition <= 0) {  // next payload
      do {
	if (!fRawReader->ReadNextData(fData)) return kFALSE;
      } while (fRawReader->GetDataSize() == 0);

      fDDLNumber = fRawReader->GetDDLID();

      fPosition = GetPosition();
    }

    ReadTrailer();

    fBunchLength = 0;
  }

  if (fBunchLength == 0) ReadBunch();
  else fTime--;

  ReadAmplitude();

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliAltroRawStream::NextDDL(UChar_t *data)
{
  if (!data) {
    do {
      if (!fRawReader->ReadNextData(fData)) return kFALSE;
    } while (fRawReader->GetDataSize() == 0);
  }
  else {
    fData = data;
  }

  fDDLNumber = fRawReader->GetDDLID();
  fChannelPayloadSize = -1;
  fPosition = GetPosition();

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliAltroRawStream::NextChannel()
{
  if (fPosition <= 0) return kFALSE;

  ReadTrailer();

  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliAltroRawStream::NextBunch(UShort_t *bunchData,
				    Int_t &bunchLength,
				    Int_t &startTimeBin)
{
  if (fCount == 0) return kFALSE;

  ReadBunch();
  bunchLength = fTimeBunch;
  startTimeBin = fTime;

  while (fBunchLength > 0) {
    ReadAmplitude();
    bunchData[bunchLength-fBunchLength-1] = fSignal;
  }

  return kTRUE;
}

//_____________________________________________________________________________
void AliAltroRawStream::SelectRawData(Int_t detId)
{
  // Select the raw data for specific
  // detector id
  AliDebug(1,Form("Selecting raw data for detector %d",detId));
  fRawReader->Select(detId);
}

//_____________________________________________________________________________
void AliAltroRawStream::SelectRawData(const char *detName)
{
  // Select the raw data for specific
  // detector name
  AliDebug(1,Form("Selecting raw data for detector %s",detName));
  fRawReader->Select(detName);
}

//_____________________________________________________________________________
UShort_t AliAltroRawStream::GetNextWord()
{
  // Read the next 10 bit word in backward direction
  // The input stream access is given by fData and fPosition

  fPosition--;

  Int_t iBit = fPosition * 10;
  Int_t iByte = iBit / 8;
  Int_t shift = iBit % 8;

  // the raw data is written as integers where the low bits are filled first
  // -> little endian is assumed here !
  Int_t iByteLow = iByte;
  iByte++;
  Int_t iByteHigh  = iByte;
  return ((fData[iByteHigh] * 256 + fData[iByteLow]) >> shift) & 0x03FF;
}

//_____________________________________________________________________________
Bool_t AliAltroRawStream::ReadTrailer()
{
  //Read a trailer of 40 bits in the backward reading mode
  //First reading filling words
  UShort_t temp;
  Int_t nFillWords = 0;
  while ((temp = GetNextWord()) == 0x2AA) nFillWords++;
  if (nFillWords == 0) {
    fRawReader->AddMajorErrorLog(kAltroTrailerErr,"no 0x2AA");
    //    PrintDebug();
    AliWarning(Form("Incorrect trailer found ! Expected 0x2AA not found (0x%x != 0x2AA) ! Current position %d, DDL=%d",
		    temp,fPosition,fDDLNumber));
    // trying to recover and find the next bunch
    while ((fPosition > 2) && (temp != 0x2AA)) temp = GetNextWord();
    if (temp != 0x2AA) {
      fCount = fPosition = 0;
      return kFALSE;
    }
    temp = GetNextWord();
  }

  //Then read the trailer
  if (fPosition < 2) {
    fRawReader->AddMajorErrorLog(kAltroTrailerErr,Form("size %d < 5",
						       fPosition));
    //    PrintDebug();
    AliWarning(Form("Incorrect raw data size ! Expected at least 5 words but found %d !",fPosition));
    fCount = fPosition = 0;
    return kFALSE;
  }

  fCount = (temp << 4) & 0x3FF;
  if ((temp >> 6) != 0xA) {
    fRawReader->AddMajorErrorLog(kAltroTrailerErr,"no 0xA");
    //    PrintDebug();
    AliWarning(Form("Incorrect trailer found ! Expecting 0xA but found 0x%x !",temp >> 6));
    fCount = 0;
    return kFALSE;
  }

  temp = GetNextWord();
  fHWAddress = (temp & 0x3) << 10;
  if (((temp >> 2) & 0xF) != 0xA) {
    fRawReader->AddMajorErrorLog(kAltroTrailerErr,"no second 0xA");
    //    PrintDebug();
    AliWarning(Form("Incorrect trailer found ! Expecting second 0xA but found 0x%x !",(temp >> 2) & 0xF));
    fCount = 0;
    return kFALSE;
  }
  fCount |= ((temp & 0x3FF) >> 6);
  fChannelPayloadSize = fCount;

  if (fCount >= fPosition) {
    fRawReader->AddMajorErrorLog(kAltroTrailerErr,"invalid size");
    //    PrintDebug();
    AliWarning(Form("Incorrect trailer found ! The altro payload size is invalid (%d >= %d) !",fCount,fPosition));
    fCount = 0;
    return kFALSE;
  }
  temp = GetNextWord();
  fHWAddress |= temp;

  fPosition -= (4 - (fCount % 4)) % 4;  // skip fill words

  return kTRUE;
}

//_____________________________________________________________________________
void AliAltroRawStream::ReadBunch()
{
  // Read altro payload in 
  // backward direction
  if (fCount <= 2) {
    fRawReader->AddMinorErrorLog(kBunchLengthReadErr,"");
    //    PrintDebug();
    AliWarning(Form("Could not read bunch length and time bin ! Only %d 10-bit words are left !",fCount));
    fBunchLength = fTimeBunch = fCount = 0;
    return;
  }

  fBunchLength = GetNextWord() - 2;
  if (fBunchLength > fCount) {
    fRawReader->AddMinorErrorLog(kBunchLengthReadErr,Form("bl=%d",fBunchLength));
    //    PrintDebug();
    AliWarning(Form("Could not read bunch length ! Bunch length = %d (>%d)",fBunchLength,fCount));
    fBunchLength = fTimeBunch = fCount = 0;
    return;
  }
  fTimeBunch = fBunchLength;
  fCount--;

  fTime = GetNextWord();
  fCount--;

  return;
}

//_____________________________________________________________________________
void AliAltroRawStream::ReadAmplitude()
{
  // Read next time bin amplitude
  if (fCount <= 0) {
    fRawReader->AddMinorErrorLog(kAmplitudeReadErr,"");
    //    PrintDebug();
    AliWarning("Could not read sample amplitude !");
    fCount = fSignal = fBunchLength = 0;
    return;
  }

  fSignal = GetNextWord();

  fCount--;
  fBunchLength--;

  return;
}

//_____________________________________________________________________________
Int_t AliAltroRawStream::GetPosition()
{
  // Sets the position in the
  // input stream
  // Read the RCU trailer
  // This includes the trailer size,
  // RCU identifier and raw data payload.
  // The RCU trailer format is described
  // in details in the RCU manual.

  // We use the last word of the payload
  // in order to decide which RCU firmware
  // was used during the data taking.
  // The firmware v2 adds 0xAAAA as 16
  // most significant bits and since the
  // payload size (firmware v1) can not be
  // that big, we use this as a unique
  // label of the firmware version.

  Int_t index = fRawReader->GetDataSize();
  UInt_t word = Get32bitWord(index);
  if (((word >> 16) == 0xaaaa) || (word == 2)) {
    // This is RCU formware v2
    // The statement word==2 is needed only temporary
    // in order to be able to read previously generated
    // aliroot raw data

    Int_t trailerSize = 0;
    if (word == 2) {
      AliInfo("Old simulated raw data is assumed!");
      trailerSize = 2;
      fRCUId = 0;
    }
    else {
      // First read 32-bit word with the
      // trailer size (7 bits), RCU ID (9 bits) and
      // 0xAAA (the rest - 16 bits)
      fRCUId = (Int_t)((word >> 7) & 0x1ff);
      trailerSize = (word & 0x7F);
    }

    // Now read the beginning of the trailer
    // where the payload size is written
    if (trailerSize < 2) {
      fRawReader->AddMajorErrorLog(kRCUTrailerErr,Form("tr=%d bytes",
						       trailerSize*4));
      AliWarning(Form("Invalid trailer size found (%d bytes) !",
		      trailerSize*4));
    }

    Int_t position = ReadRCUTrailer(index,trailerSize);
    if (fRawReader->GetType() != AliRawEventHeaderBase::kStartOfData) {
      // The size is specified in a number of 40bits
      // Therefore we need to transform it to number of bytes
      position *= 5;

      // Check the consistency of the header and trailer
      if (((fRawReader->GetDataSize() - trailerSize*4) < position) ||
	  ((fRawReader->GetDataSize() - trailerSize*4) >= (position + 4))) {
	fRawReader->AddMajorErrorLog(kRCUTrailerSizeErr,Form("h=%d tr=%d rcu=%d bytes",
							     fRawReader->GetDataSize(),
							     trailerSize*4,
							     position));
	AliWarning(Form("Inconsistent raw data size ! Raw data size - %d bytes (from the header), RCU trailer - %d bytes, raw data paylod - %d bytes !",
			fRawReader->GetDataSize(),
			trailerSize*4,
			position));
	position = fRawReader->GetDataSize() - trailerSize*4;
      }

      return position * 8 / 10;
    }
    else {
      // Special RCU payload in case of SOD events
      // The decoding is left to the user code
      // Here we just retrieve the payload size
      return position;
    }
  }
  else {
    // In case of the Old RCU trailer format
    // we have to read just the size of altro payload
    // in units of 40-bit words
    Int_t position = (Int_t)word;

    fRCUId = -1;
    fRCUTrailerSize = 0;
    fRCUTrailerData = NULL;

    // The size is specified in a number of 40bits
    // Therefore we need to transform it to number of bytes
    position *= 5;

    if (!fIsShortDataHeader) {

      // Check the consistency of the header and trailer
      if (((fRawReader->GetDataSize() - 4) < position) ||
          ((fRawReader->GetDataSize() - 4) >= (position + 4))) {
	fRawReader->AddMajorErrorLog(kRCUTrailerSizeErr,Form("h=%d rcu=%d bytes",
							     fRawReader->GetDataSize()-4,
							     position));
	//	PrintDebug();
	AliWarning(Form("Inconsistent raw data size ! Expected %d bytes (from the header), found %d bytes (in the RCU trailer)!",
			fRawReader->GetDataSize()-4,
			position));
	position = fRawReader->GetDataSize()-4;
      }
    }
    else {
      // Check the consistency of the header and trailer
      // In this case the header is shorter by 4 bytes
      if ((fRawReader->GetDataSize() < position) ||
          (fRawReader->GetDataSize() >= (position + 4))) {
	fRawReader->AddMajorErrorLog(kRCUTrailerSizeErr,Form("h=%d rcu=%d bytes",
							     fRawReader->GetDataSize(),
							     position));
	//	PrintDebug();
	AliWarning(Form("Inconsistent raw data size ! Expected %d bytes (from the header), found %d bytes (in the RCU trailer)!",
			fRawReader->GetDataSize(),
			position));
	position = fRawReader->GetDataSize();
      }

      // 7 32-bit words Common Data Header
      // therefore we have to shift back by 4 bytes
      // the pointer to the raw data payload
      fData -= 4;
    }
     
    // Return the position in units of 10-bit words
    return position*8/10;
  }
}

//_____________________________________________________________________________
UInt_t AliAltroRawStream::Get32bitWord(Int_t &index)
{
  // This method returns the 32 bit word at a given
  // position inside the raw data payload.
  // The 'index' points to the beginning of the next word.
  // The method is supposed to be endian (platform)
  // independent.
  if (!fData) {
    PrintDebug();
    AliFatal("Raw data paylod buffer is not yet initialized !");
  }

  if (index < 4) {
    fRawReader->AddFatalErrorLog(k32bitWordReadErr,Form("pos = %d",index));
    //    PrintDebug();
    AliWarning(Form("Invalid raw data payload position (%d) !",index));
  }

  UInt_t word = 0;
  word  = fData[--index] << 24;
  word |= fData[--index] << 16;
  word |= fData[--index] << 8;
  word |= fData[--index];

  return word;
}

//_____________________________________________________________________________
Int_t AliAltroRawStream::ReadRCUTrailer(Int_t &index, Int_t trailerSize)
{
  // The method decodes the RCU trailer data
  // according to the RCU fw ver.2 specs
  
  fRCUTrailerSize = trailerSize*4;

  for (trailerSize -= 2; trailerSize > 0; trailerSize--) {
    Int_t word = Get32bitWord(index);
    Int_t parCode = word >> 26;
    Int_t parData = word & 0x3FFFFFF;
    switch (parCode) {
    case 1:
      // ERR_REG1
      fFECERRA = ((parData >> 13) & 0x1FFF) << 7;
      fFECERRB = ((parData & 0x1FFF)) << 7;
      break;
    case 2:
      // ERR_REG2
      fERRREG2 = parData & 0x1FF;
      break;
    case 3:
      // ERR_REG3
      fERRREG3 = parData & 0xFFF;
      break;
    case 4:
      // ERR_REG4
      fERRREG4 = parData & 0xFFF;
      break;
    case 5:
      // FEC_RO_A
      fActiveFECsA = parData & 0xFFFF;
      break;
    case 6:
      // FEC_RO_B
      fActiveFECsB = parData & 0xFFFF;
      break;
    case 7:
      // RDO_CFG1
      fAltroCFG1 = parData & 0xFFFFF;
      break;
    case 8:
      // RDO_CFG2
      fAltroCFG2 = parData & 0x1FFFFFF;
     break;
    default:
      fRawReader->AddMinorErrorLog(kRCUTrailerErr,"undef word");
      AliWarning(Form("Undefined parameter code %d, ignore it !",
		      parCode));
      break;
    }
  }

  if (index < 4) {
    fRawReader->AddMajorErrorLog(kRCUTrailerErr,Form("tr=%d raw=%d bytes",
						     fRCUTrailerSize,
						     fRawReader->GetDataSize()));
    AliWarning(Form("Invalid trailer size found (%d bytes) ! The size is bigger than the raw data size (%d bytes)!",
		    fRCUTrailerSize,
		    fRawReader->GetDataSize()));
  }
  fRCUTrailerData = fData + index;

  Int_t position = Get32bitWord(index);


  return position;
}

//_____________________________________________________________________________
Double_t AliAltroRawStream::GetTSample() const
{
  // Returns the sampling time
  // in seconds. In case the rcu trailer
  // was note read, return an invalid number (0)

  if (!fRCUTrailerData) return 0.;

  const Double_t kLHCTimeSample = 25.0e-9; // LHC clocks runs at 40 MHz
  UChar_t fq = (fAltroCFG2 >> 5) & 0xF;
  Double_t tSample;
  switch (fq) {
  case 0:
    // 20 MHz
    tSample = 2.0*kLHCTimeSample;
    break;
  case 1:
    // 10 Mhz
    tSample = 4.0*kLHCTimeSample;
    break;
  case 2:
    // 5 MHz
    tSample = 8.0*kLHCTimeSample;
    break;
  default:
    AliWarning(Form("Invalid sampling frequency value %d !",
		      fq));
    tSample = 0.;
    break;
  }

  return tSample;
}

//_____________________________________________________________________________
Double_t AliAltroRawStream::GetL1Phase() const
{
  // Returns the L1 phase w.r.t to the
  // LHC clock
  if (!fRCUTrailerData) return 0.;

  const Double_t kLHCTimeSample = 25.0e-9; // LHC clocks runs at 40 MHz
  Double_t phase = ((Double_t)(fAltroCFG2 & 0x1F))*kLHCTimeSample;

  Double_t tSample = GetTSample();
  if (phase >= tSample) {
    AliWarning(Form("Invalid L1 trigger phase (%f >= %f) !",
		    phase,tSample));
    phase = 0.;
  }

  return phase;
}

//_____________________________________________________________________________
void AliAltroRawStream::PrintRCUTrailer() const
{
  // Prints the contents of
  // the RCU trailer data
  printf("RCU trailer:\n===========\n");
  printf("FECERRA: 0x%x\nFECERRB: 0x%x\n",fFECERRA,fFECERRB);
  printf("ERRREG2: 0x%x\n",fERRREG2);
  printf("#channels skipped due to address mismatch: %d\n",GetNChAddrMismatch());
  printf("#channels skipped due to bad block length: %d\n",GetNChLengthMismatch());
  printf("Active FECs (branch A): 0x%x\nActive FECs (branch B): 0x%x\n",fActiveFECsA,fActiveFECsB);
  printf("Baseline corr: 0x%x\n",GetBaselineCorr());
  printf("Number of presamples: %d\nNumber of postsamples: %d\n",GetNPresamples(),GetNPostsamples());
  printf("Second baseline corr: %d\n",GetSecondBaselineCorr());
  printf("GlitchFilter: %d\n",GetGlitchFilter());
  printf("Number of non-ZS postsamples: %d\nNumber of non-ZS presamples: %d\n",GetNNonZSPostsamples(),GetNNonZSPresamples());
  printf("Number of ALTRO buffers: %d\n",GetNAltroBuffers());
  printf("Number of pretrigger samples: %d\n",GetNPretriggerSamples());
  printf("Number of samples per channel: %d\n",GetNSamplesPerCh());
  printf("Sparse readout: %d\n",GetSparseRO());
  printf("Sampling time: %e s\n",GetTSample());
  printf("L1 Phase: %e s\n",GetL1Phase());
  printf("AltroCFG1: 0x%x\nAltroCFG2: 0x%x\n",GetAltroCFG1(),GetAltroCFG2());
  printf("===========\n");
}

//_____________________________________________________________________________
Bool_t AliAltroRawStream::GetRCUTrailerData(UChar_t*& data) const
{
  // Return a pointer to the RCU trailer
  // data. Should be called always after
  // the RCU trailer was already processed
  // in the GetPosition() method
  if (!fRCUTrailerSize || !fRCUTrailerData) {
    AliError("No valid RCU trailer data is found !");
    data = NULL;
    return kFALSE;
  }

  data = fRCUTrailerData;

  return kTRUE;
}

//_____________________________________________________________________________
void AliAltroRawStream::PrintDebug() const
{
  // The method prints all the available
  // debug information.
  // Its is used in case of decoding errors.

  AliError("Start of debug printout\n--------------------");

  Dump();
  if (fRawReader) fRawReader->Dump();

  AliError("End of debug printout\n--------------------");
}

//_____________________________________________________________________________
Int_t AliAltroRawStream::GetBranch() const
{
  // The method provides the RCU branch index (0 or 1)
  // for the current hardware address.
  // In case the hardware address has not been yet
  // initialized, the method returns -1
  if (fHWAddress == -1) return -1;

  return ((fHWAddress >> 11) & 0x1);
}

//_____________________________________________________________________________
Int_t AliAltroRawStream::GetFEC() const
{
  // The method provides the front-end card index
  // for the current hardware address.
  // In case the hardware address has not been yet
  // initialized, the method returns -1
  if (fHWAddress == -1) return -1;

  return ((fHWAddress >> 7) & 0xF);
}

//_____________________________________________________________________________
Int_t AliAltroRawStream::GetAltro() const
{
  // The method provides the altro chip index
  // for the current hardware address.
  // In case the hardware address has not been yet
  // initialized, the method returns -1
  if (fHWAddress == -1) return -1;

  return ((fHWAddress >> 4) & 0x7);
}

//_____________________________________________________________________________
Int_t AliAltroRawStream::GetChannel() const
{
  // The method provides the channel index
  // for the current hardware address.
  // In case the hardware address has not been yet
  // initialized, the method returns -1
  if (fHWAddress == -1) return -1;

  return (fHWAddress & 0xF);
}

//_____________________________________________________________________________
void AliAltroRawStream::AddMappingErrorLog(const char *message)
{
  // Signal a mapping error
  // The method can be used by the TPC,PHOS,EMCAL,FMD raw stream
  // classes in order to log an error related to bad altro mapping

  if (fRawReader) fRawReader->AddMinorErrorLog(kBadAltroMapping,message);
}

//_____________________________________________________________________________
Int_t AliAltroRawStream::GetRCUPayloadSizeInSOD() const
{
  // Get the size of the RCU data in case
  // of SOD events
  if (fRawReader) {
    if (fRawReader->GetType() == AliRawEventHeaderBase::kStartOfData) {
      return fPosition;
    }
  }
  return -1;
}
 AliAltroRawStream.cxx:1
 AliAltroRawStream.cxx:2
 AliAltroRawStream.cxx:3
 AliAltroRawStream.cxx:4
 AliAltroRawStream.cxx:5
 AliAltroRawStream.cxx:6
 AliAltroRawStream.cxx:7
 AliAltroRawStream.cxx:8
 AliAltroRawStream.cxx:9
 AliAltroRawStream.cxx:10
 AliAltroRawStream.cxx:11
 AliAltroRawStream.cxx:12
 AliAltroRawStream.cxx:13
 AliAltroRawStream.cxx:14
 AliAltroRawStream.cxx:15
 AliAltroRawStream.cxx:16
 AliAltroRawStream.cxx:17
 AliAltroRawStream.cxx:18
 AliAltroRawStream.cxx:19
 AliAltroRawStream.cxx:20
 AliAltroRawStream.cxx:21
 AliAltroRawStream.cxx:22
 AliAltroRawStream.cxx:23
 AliAltroRawStream.cxx:24
 AliAltroRawStream.cxx:25
 AliAltroRawStream.cxx:26
 AliAltroRawStream.cxx:27
 AliAltroRawStream.cxx:28
 AliAltroRawStream.cxx:29
 AliAltroRawStream.cxx:30
 AliAltroRawStream.cxx:31
 AliAltroRawStream.cxx:32
 AliAltroRawStream.cxx:33
 AliAltroRawStream.cxx:34
 AliAltroRawStream.cxx:35
 AliAltroRawStream.cxx:36
 AliAltroRawStream.cxx:37
 AliAltroRawStream.cxx:38
 AliAltroRawStream.cxx:39
 AliAltroRawStream.cxx:40
 AliAltroRawStream.cxx:41
 AliAltroRawStream.cxx:42
 AliAltroRawStream.cxx:43
 AliAltroRawStream.cxx:44
 AliAltroRawStream.cxx:45
 AliAltroRawStream.cxx:46
 AliAltroRawStream.cxx:47
 AliAltroRawStream.cxx:48
 AliAltroRawStream.cxx:49
 AliAltroRawStream.cxx:50
 AliAltroRawStream.cxx:51
 AliAltroRawStream.cxx:52
 AliAltroRawStream.cxx:53
 AliAltroRawStream.cxx:54
 AliAltroRawStream.cxx:55
 AliAltroRawStream.cxx:56
 AliAltroRawStream.cxx:57
 AliAltroRawStream.cxx:58
 AliAltroRawStream.cxx:59
 AliAltroRawStream.cxx:60
 AliAltroRawStream.cxx:61
 AliAltroRawStream.cxx:62
 AliAltroRawStream.cxx:63
 AliAltroRawStream.cxx:64
 AliAltroRawStream.cxx:65
 AliAltroRawStream.cxx:66
 AliAltroRawStream.cxx:67
 AliAltroRawStream.cxx:68
 AliAltroRawStream.cxx:69
 AliAltroRawStream.cxx:70
 AliAltroRawStream.cxx:71
 AliAltroRawStream.cxx:72
 AliAltroRawStream.cxx:73
 AliAltroRawStream.cxx:74
 AliAltroRawStream.cxx:75
 AliAltroRawStream.cxx:76
 AliAltroRawStream.cxx:77
 AliAltroRawStream.cxx:78
 AliAltroRawStream.cxx:79
 AliAltroRawStream.cxx:80
 AliAltroRawStream.cxx:81
 AliAltroRawStream.cxx:82
 AliAltroRawStream.cxx:83
 AliAltroRawStream.cxx:84
 AliAltroRawStream.cxx:85
 AliAltroRawStream.cxx:86
 AliAltroRawStream.cxx:87
 AliAltroRawStream.cxx:88
 AliAltroRawStream.cxx:89
 AliAltroRawStream.cxx:90
 AliAltroRawStream.cxx:91
 AliAltroRawStream.cxx:92
 AliAltroRawStream.cxx:93
 AliAltroRawStream.cxx:94
 AliAltroRawStream.cxx:95
 AliAltroRawStream.cxx:96
 AliAltroRawStream.cxx:97
 AliAltroRawStream.cxx:98
 AliAltroRawStream.cxx:99
 AliAltroRawStream.cxx:100
 AliAltroRawStream.cxx:101
 AliAltroRawStream.cxx:102
 AliAltroRawStream.cxx:103
 AliAltroRawStream.cxx:104
 AliAltroRawStream.cxx:105
 AliAltroRawStream.cxx:106
 AliAltroRawStream.cxx:107
 AliAltroRawStream.cxx:108
 AliAltroRawStream.cxx:109
 AliAltroRawStream.cxx:110
 AliAltroRawStream.cxx:111
 AliAltroRawStream.cxx:112
 AliAltroRawStream.cxx:113
 AliAltroRawStream.cxx:114
 AliAltroRawStream.cxx:115
 AliAltroRawStream.cxx:116
 AliAltroRawStream.cxx:117
 AliAltroRawStream.cxx:118
 AliAltroRawStream.cxx:119
 AliAltroRawStream.cxx:120
 AliAltroRawStream.cxx:121
 AliAltroRawStream.cxx:122
 AliAltroRawStream.cxx:123
 AliAltroRawStream.cxx:124
 AliAltroRawStream.cxx:125
 AliAltroRawStream.cxx:126
 AliAltroRawStream.cxx:127
 AliAltroRawStream.cxx:128
 AliAltroRawStream.cxx:129
 AliAltroRawStream.cxx:130
 AliAltroRawStream.cxx:131
 AliAltroRawStream.cxx:132
 AliAltroRawStream.cxx:133
 AliAltroRawStream.cxx:134
 AliAltroRawStream.cxx:135
 AliAltroRawStream.cxx:136
 AliAltroRawStream.cxx:137
 AliAltroRawStream.cxx:138
 AliAltroRawStream.cxx:139
 AliAltroRawStream.cxx:140
 AliAltroRawStream.cxx:141
 AliAltroRawStream.cxx:142
 AliAltroRawStream.cxx:143
 AliAltroRawStream.cxx:144
 AliAltroRawStream.cxx:145
 AliAltroRawStream.cxx:146
 AliAltroRawStream.cxx:147
 AliAltroRawStream.cxx:148
 AliAltroRawStream.cxx:149
 AliAltroRawStream.cxx:150
 AliAltroRawStream.cxx:151
 AliAltroRawStream.cxx:152
 AliAltroRawStream.cxx:153
 AliAltroRawStream.cxx:154
 AliAltroRawStream.cxx:155
 AliAltroRawStream.cxx:156
 AliAltroRawStream.cxx:157
 AliAltroRawStream.cxx:158
 AliAltroRawStream.cxx:159
 AliAltroRawStream.cxx:160
 AliAltroRawStream.cxx:161
 AliAltroRawStream.cxx:162
 AliAltroRawStream.cxx:163
 AliAltroRawStream.cxx:164
 AliAltroRawStream.cxx:165
 AliAltroRawStream.cxx:166
 AliAltroRawStream.cxx:167
 AliAltroRawStream.cxx:168
 AliAltroRawStream.cxx:169
 AliAltroRawStream.cxx:170
 AliAltroRawStream.cxx:171
 AliAltroRawStream.cxx:172
 AliAltroRawStream.cxx:173
 AliAltroRawStream.cxx:174
 AliAltroRawStream.cxx:175
 AliAltroRawStream.cxx:176
 AliAltroRawStream.cxx:177
 AliAltroRawStream.cxx:178
 AliAltroRawStream.cxx:179
 AliAltroRawStream.cxx:180
 AliAltroRawStream.cxx:181
 AliAltroRawStream.cxx:182
 AliAltroRawStream.cxx:183
 AliAltroRawStream.cxx:184
 AliAltroRawStream.cxx:185
 AliAltroRawStream.cxx:186
 AliAltroRawStream.cxx:187
 AliAltroRawStream.cxx:188
 AliAltroRawStream.cxx:189
 AliAltroRawStream.cxx:190
 AliAltroRawStream.cxx:191
 AliAltroRawStream.cxx:192
 AliAltroRawStream.cxx:193
 AliAltroRawStream.cxx:194
 AliAltroRawStream.cxx:195
 AliAltroRawStream.cxx:196
 AliAltroRawStream.cxx:197
 AliAltroRawStream.cxx:198
 AliAltroRawStream.cxx:199
 AliAltroRawStream.cxx:200
 AliAltroRawStream.cxx:201
 AliAltroRawStream.cxx:202
 AliAltroRawStream.cxx:203
 AliAltroRawStream.cxx:204
 AliAltroRawStream.cxx:205
 AliAltroRawStream.cxx:206
 AliAltroRawStream.cxx:207
 AliAltroRawStream.cxx:208
 AliAltroRawStream.cxx:209
 AliAltroRawStream.cxx:210
 AliAltroRawStream.cxx:211
 AliAltroRawStream.cxx:212
 AliAltroRawStream.cxx:213
 AliAltroRawStream.cxx:214
 AliAltroRawStream.cxx:215
 AliAltroRawStream.cxx:216
 AliAltroRawStream.cxx:217
 AliAltroRawStream.cxx:218
 AliAltroRawStream.cxx:219
 AliAltroRawStream.cxx:220
 AliAltroRawStream.cxx:221
 AliAltroRawStream.cxx:222
 AliAltroRawStream.cxx:223
 AliAltroRawStream.cxx:224
 AliAltroRawStream.cxx:225
 AliAltroRawStream.cxx:226
 AliAltroRawStream.cxx:227
 AliAltroRawStream.cxx:228
 AliAltroRawStream.cxx:229
 AliAltroRawStream.cxx:230
 AliAltroRawStream.cxx:231
 AliAltroRawStream.cxx:232
 AliAltroRawStream.cxx:233
 AliAltroRawStream.cxx:234
 AliAltroRawStream.cxx:235
 AliAltroRawStream.cxx:236
 AliAltroRawStream.cxx:237
 AliAltroRawStream.cxx:238
 AliAltroRawStream.cxx:239
 AliAltroRawStream.cxx:240
 AliAltroRawStream.cxx:241
 AliAltroRawStream.cxx:242
 AliAltroRawStream.cxx:243
 AliAltroRawStream.cxx:244
 AliAltroRawStream.cxx:245
 AliAltroRawStream.cxx:246
 AliAltroRawStream.cxx:247
 AliAltroRawStream.cxx:248
 AliAltroRawStream.cxx:249
 AliAltroRawStream.cxx:250
 AliAltroRawStream.cxx:251
 AliAltroRawStream.cxx:252
 AliAltroRawStream.cxx:253
 AliAltroRawStream.cxx:254
 AliAltroRawStream.cxx:255
 AliAltroRawStream.cxx:256
 AliAltroRawStream.cxx:257
 AliAltroRawStream.cxx:258
 AliAltroRawStream.cxx:259
 AliAltroRawStream.cxx:260
 AliAltroRawStream.cxx:261
 AliAltroRawStream.cxx:262
 AliAltroRawStream.cxx:263
 AliAltroRawStream.cxx:264
 AliAltroRawStream.cxx:265
 AliAltroRawStream.cxx:266
 AliAltroRawStream.cxx:267
 AliAltroRawStream.cxx:268
 AliAltroRawStream.cxx:269
 AliAltroRawStream.cxx:270
 AliAltroRawStream.cxx:271
 AliAltroRawStream.cxx:272
 AliAltroRawStream.cxx:273
 AliAltroRawStream.cxx:274
 AliAltroRawStream.cxx:275
 AliAltroRawStream.cxx:276
 AliAltroRawStream.cxx:277
 AliAltroRawStream.cxx:278
 AliAltroRawStream.cxx:279
 AliAltroRawStream.cxx:280
 AliAltroRawStream.cxx:281
 AliAltroRawStream.cxx:282
 AliAltroRawStream.cxx:283
 AliAltroRawStream.cxx:284
 AliAltroRawStream.cxx:285
 AliAltroRawStream.cxx:286
 AliAltroRawStream.cxx:287
 AliAltroRawStream.cxx:288
 AliAltroRawStream.cxx:289
 AliAltroRawStream.cxx:290
 AliAltroRawStream.cxx:291
 AliAltroRawStream.cxx:292
 AliAltroRawStream.cxx:293
 AliAltroRawStream.cxx:294
 AliAltroRawStream.cxx:295
 AliAltroRawStream.cxx:296
 AliAltroRawStream.cxx:297
 AliAltroRawStream.cxx:298
 AliAltroRawStream.cxx:299
 AliAltroRawStream.cxx:300
 AliAltroRawStream.cxx:301
 AliAltroRawStream.cxx:302
 AliAltroRawStream.cxx:303
 AliAltroRawStream.cxx:304
 AliAltroRawStream.cxx:305
 AliAltroRawStream.cxx:306
 AliAltroRawStream.cxx:307
 AliAltroRawStream.cxx:308
 AliAltroRawStream.cxx:309
 AliAltroRawStream.cxx:310
 AliAltroRawStream.cxx:311
 AliAltroRawStream.cxx:312
 AliAltroRawStream.cxx:313
 AliAltroRawStream.cxx:314
 AliAltroRawStream.cxx:315
 AliAltroRawStream.cxx:316
 AliAltroRawStream.cxx:317
 AliAltroRawStream.cxx:318
 AliAltroRawStream.cxx:319
 AliAltroRawStream.cxx:320
 AliAltroRawStream.cxx:321
 AliAltroRawStream.cxx:322
 AliAltroRawStream.cxx:323
 AliAltroRawStream.cxx:324
 AliAltroRawStream.cxx:325
 AliAltroRawStream.cxx:326
 AliAltroRawStream.cxx:327
 AliAltroRawStream.cxx:328
 AliAltroRawStream.cxx:329
 AliAltroRawStream.cxx:330
 AliAltroRawStream.cxx:331
 AliAltroRawStream.cxx:332
 AliAltroRawStream.cxx:333
 AliAltroRawStream.cxx:334
 AliAltroRawStream.cxx:335
 AliAltroRawStream.cxx:336
 AliAltroRawStream.cxx:337
 AliAltroRawStream.cxx:338
 AliAltroRawStream.cxx:339
 AliAltroRawStream.cxx:340
 AliAltroRawStream.cxx:341
 AliAltroRawStream.cxx:342
 AliAltroRawStream.cxx:343
 AliAltroRawStream.cxx:344
 AliAltroRawStream.cxx:345
 AliAltroRawStream.cxx:346
 AliAltroRawStream.cxx:347
 AliAltroRawStream.cxx:348
 AliAltroRawStream.cxx:349
 AliAltroRawStream.cxx:350
 AliAltroRawStream.cxx:351
 AliAltroRawStream.cxx:352
 AliAltroRawStream.cxx:353
 AliAltroRawStream.cxx:354
 AliAltroRawStream.cxx:355
 AliAltroRawStream.cxx:356
 AliAltroRawStream.cxx:357
 AliAltroRawStream.cxx:358
 AliAltroRawStream.cxx:359
 AliAltroRawStream.cxx:360
 AliAltroRawStream.cxx:361
 AliAltroRawStream.cxx:362
 AliAltroRawStream.cxx:363
 AliAltroRawStream.cxx:364
 AliAltroRawStream.cxx:365
 AliAltroRawStream.cxx:366
 AliAltroRawStream.cxx:367
 AliAltroRawStream.cxx:368
 AliAltroRawStream.cxx:369
 AliAltroRawStream.cxx:370
 AliAltroRawStream.cxx:371
 AliAltroRawStream.cxx:372
 AliAltroRawStream.cxx:373
 AliAltroRawStream.cxx:374
 AliAltroRawStream.cxx:375
 AliAltroRawStream.cxx:376
 AliAltroRawStream.cxx:377
 AliAltroRawStream.cxx:378
 AliAltroRawStream.cxx:379
 AliAltroRawStream.cxx:380
 AliAltroRawStream.cxx:381
 AliAltroRawStream.cxx:382
 AliAltroRawStream.cxx:383
 AliAltroRawStream.cxx:384
 AliAltroRawStream.cxx:385
 AliAltroRawStream.cxx:386
 AliAltroRawStream.cxx:387
 AliAltroRawStream.cxx:388
 AliAltroRawStream.cxx:389
 AliAltroRawStream.cxx:390
 AliAltroRawStream.cxx:391
 AliAltroRawStream.cxx:392
 AliAltroRawStream.cxx:393
 AliAltroRawStream.cxx:394
 AliAltroRawStream.cxx:395
 AliAltroRawStream.cxx:396
 AliAltroRawStream.cxx:397
 AliAltroRawStream.cxx:398
 AliAltroRawStream.cxx:399
 AliAltroRawStream.cxx:400
 AliAltroRawStream.cxx:401
 AliAltroRawStream.cxx:402
 AliAltroRawStream.cxx:403
 AliAltroRawStream.cxx:404
 AliAltroRawStream.cxx:405
 AliAltroRawStream.cxx:406
 AliAltroRawStream.cxx:407
 AliAltroRawStream.cxx:408
 AliAltroRawStream.cxx:409
 AliAltroRawStream.cxx:410
 AliAltroRawStream.cxx:411
 AliAltroRawStream.cxx:412
 AliAltroRawStream.cxx:413
 AliAltroRawStream.cxx:414
 AliAltroRawStream.cxx:415
 AliAltroRawStream.cxx:416
 AliAltroRawStream.cxx:417
 AliAltroRawStream.cxx:418
 AliAltroRawStream.cxx:419
 AliAltroRawStream.cxx:420
 AliAltroRawStream.cxx:421
 AliAltroRawStream.cxx:422
 AliAltroRawStream.cxx:423
 AliAltroRawStream.cxx:424
 AliAltroRawStream.cxx:425
 AliAltroRawStream.cxx:426
 AliAltroRawStream.cxx:427
 AliAltroRawStream.cxx:428
 AliAltroRawStream.cxx:429
 AliAltroRawStream.cxx:430
 AliAltroRawStream.cxx:431
 AliAltroRawStream.cxx:432
 AliAltroRawStream.cxx:433
 AliAltroRawStream.cxx:434
 AliAltroRawStream.cxx:435
 AliAltroRawStream.cxx:436
 AliAltroRawStream.cxx:437
 AliAltroRawStream.cxx:438
 AliAltroRawStream.cxx:439
 AliAltroRawStream.cxx:440
 AliAltroRawStream.cxx:441
 AliAltroRawStream.cxx:442
 AliAltroRawStream.cxx:443
 AliAltroRawStream.cxx:444
 AliAltroRawStream.cxx:445
 AliAltroRawStream.cxx:446
 AliAltroRawStream.cxx:447
 AliAltroRawStream.cxx:448
 AliAltroRawStream.cxx:449
 AliAltroRawStream.cxx:450
 AliAltroRawStream.cxx:451
 AliAltroRawStream.cxx:452
 AliAltroRawStream.cxx:453
 AliAltroRawStream.cxx:454
 AliAltroRawStream.cxx:455
 AliAltroRawStream.cxx:456
 AliAltroRawStream.cxx:457
 AliAltroRawStream.cxx:458
 AliAltroRawStream.cxx:459
 AliAltroRawStream.cxx:460
 AliAltroRawStream.cxx:461
 AliAltroRawStream.cxx:462
 AliAltroRawStream.cxx:463
 AliAltroRawStream.cxx:464
 AliAltroRawStream.cxx:465
 AliAltroRawStream.cxx:466
 AliAltroRawStream.cxx:467
 AliAltroRawStream.cxx:468
 AliAltroRawStream.cxx:469
 AliAltroRawStream.cxx:470
 AliAltroRawStream.cxx:471
 AliAltroRawStream.cxx:472
 AliAltroRawStream.cxx:473
 AliAltroRawStream.cxx:474
 AliAltroRawStream.cxx:475
 AliAltroRawStream.cxx:476
 AliAltroRawStream.cxx:477
 AliAltroRawStream.cxx:478
 AliAltroRawStream.cxx:479
 AliAltroRawStream.cxx:480
 AliAltroRawStream.cxx:481
 AliAltroRawStream.cxx:482
 AliAltroRawStream.cxx:483
 AliAltroRawStream.cxx:484
 AliAltroRawStream.cxx:485
 AliAltroRawStream.cxx:486
 AliAltroRawStream.cxx:487
 AliAltroRawStream.cxx:488
 AliAltroRawStream.cxx:489
 AliAltroRawStream.cxx:490
 AliAltroRawStream.cxx:491
 AliAltroRawStream.cxx:492
 AliAltroRawStream.cxx:493
 AliAltroRawStream.cxx:494
 AliAltroRawStream.cxx:495
 AliAltroRawStream.cxx:496
 AliAltroRawStream.cxx:497
 AliAltroRawStream.cxx:498
 AliAltroRawStream.cxx:499
 AliAltroRawStream.cxx:500
 AliAltroRawStream.cxx:501
 AliAltroRawStream.cxx:502
 AliAltroRawStream.cxx:503
 AliAltroRawStream.cxx:504
 AliAltroRawStream.cxx:505
 AliAltroRawStream.cxx:506
 AliAltroRawStream.cxx:507
 AliAltroRawStream.cxx:508
 AliAltroRawStream.cxx:509
 AliAltroRawStream.cxx:510
 AliAltroRawStream.cxx:511
 AliAltroRawStream.cxx:512
 AliAltroRawStream.cxx:513
 AliAltroRawStream.cxx:514
 AliAltroRawStream.cxx:515
 AliAltroRawStream.cxx:516
 AliAltroRawStream.cxx:517
 AliAltroRawStream.cxx:518
 AliAltroRawStream.cxx:519
 AliAltroRawStream.cxx:520
 AliAltroRawStream.cxx:521
 AliAltroRawStream.cxx:522
 AliAltroRawStream.cxx:523
 AliAltroRawStream.cxx:524
 AliAltroRawStream.cxx:525
 AliAltroRawStream.cxx:526
 AliAltroRawStream.cxx:527
 AliAltroRawStream.cxx:528
 AliAltroRawStream.cxx:529
 AliAltroRawStream.cxx:530
 AliAltroRawStream.cxx:531
 AliAltroRawStream.cxx:532
 AliAltroRawStream.cxx:533
 AliAltroRawStream.cxx:534
 AliAltroRawStream.cxx:535
 AliAltroRawStream.cxx:536
 AliAltroRawStream.cxx:537
 AliAltroRawStream.cxx:538
 AliAltroRawStream.cxx:539
 AliAltroRawStream.cxx:540
 AliAltroRawStream.cxx:541
 AliAltroRawStream.cxx:542
 AliAltroRawStream.cxx:543
 AliAltroRawStream.cxx:544
 AliAltroRawStream.cxx:545
 AliAltroRawStream.cxx:546
 AliAltroRawStream.cxx:547
 AliAltroRawStream.cxx:548
 AliAltroRawStream.cxx:549
 AliAltroRawStream.cxx:550
 AliAltroRawStream.cxx:551
 AliAltroRawStream.cxx:552
 AliAltroRawStream.cxx:553
 AliAltroRawStream.cxx:554
 AliAltroRawStream.cxx:555
 AliAltroRawStream.cxx:556
 AliAltroRawStream.cxx:557
 AliAltroRawStream.cxx:558
 AliAltroRawStream.cxx:559
 AliAltroRawStream.cxx:560
 AliAltroRawStream.cxx:561
 AliAltroRawStream.cxx:562
 AliAltroRawStream.cxx:563
 AliAltroRawStream.cxx:564
 AliAltroRawStream.cxx:565
 AliAltroRawStream.cxx:566
 AliAltroRawStream.cxx:567
 AliAltroRawStream.cxx:568
 AliAltroRawStream.cxx:569
 AliAltroRawStream.cxx:570
 AliAltroRawStream.cxx:571
 AliAltroRawStream.cxx:572
 AliAltroRawStream.cxx:573
 AliAltroRawStream.cxx:574
 AliAltroRawStream.cxx:575
 AliAltroRawStream.cxx:576
 AliAltroRawStream.cxx:577
 AliAltroRawStream.cxx:578
 AliAltroRawStream.cxx:579
 AliAltroRawStream.cxx:580
 AliAltroRawStream.cxx:581
 AliAltroRawStream.cxx:582
 AliAltroRawStream.cxx:583
 AliAltroRawStream.cxx:584
 AliAltroRawStream.cxx:585
 AliAltroRawStream.cxx:586
 AliAltroRawStream.cxx:587
 AliAltroRawStream.cxx:588
 AliAltroRawStream.cxx:589
 AliAltroRawStream.cxx:590
 AliAltroRawStream.cxx:591
 AliAltroRawStream.cxx:592
 AliAltroRawStream.cxx:593
 AliAltroRawStream.cxx:594
 AliAltroRawStream.cxx:595
 AliAltroRawStream.cxx:596
 AliAltroRawStream.cxx:597
 AliAltroRawStream.cxx:598
 AliAltroRawStream.cxx:599
 AliAltroRawStream.cxx:600
 AliAltroRawStream.cxx:601
 AliAltroRawStream.cxx:602
 AliAltroRawStream.cxx:603
 AliAltroRawStream.cxx:604
 AliAltroRawStream.cxx:605
 AliAltroRawStream.cxx:606
 AliAltroRawStream.cxx:607
 AliAltroRawStream.cxx:608
 AliAltroRawStream.cxx:609
 AliAltroRawStream.cxx:610
 AliAltroRawStream.cxx:611
 AliAltroRawStream.cxx:612
 AliAltroRawStream.cxx:613
 AliAltroRawStream.cxx:614
 AliAltroRawStream.cxx:615
 AliAltroRawStream.cxx:616
 AliAltroRawStream.cxx:617
 AliAltroRawStream.cxx:618
 AliAltroRawStream.cxx:619
 AliAltroRawStream.cxx:620
 AliAltroRawStream.cxx:621
 AliAltroRawStream.cxx:622
 AliAltroRawStream.cxx:623
 AliAltroRawStream.cxx:624
 AliAltroRawStream.cxx:625
 AliAltroRawStream.cxx:626
 AliAltroRawStream.cxx:627
 AliAltroRawStream.cxx:628
 AliAltroRawStream.cxx:629
 AliAltroRawStream.cxx:630
 AliAltroRawStream.cxx:631
 AliAltroRawStream.cxx:632
 AliAltroRawStream.cxx:633
 AliAltroRawStream.cxx:634
 AliAltroRawStream.cxx:635
 AliAltroRawStream.cxx:636
 AliAltroRawStream.cxx:637
 AliAltroRawStream.cxx:638
 AliAltroRawStream.cxx:639
 AliAltroRawStream.cxx:640
 AliAltroRawStream.cxx:641
 AliAltroRawStream.cxx:642
 AliAltroRawStream.cxx:643
 AliAltroRawStream.cxx:644
 AliAltroRawStream.cxx:645
 AliAltroRawStream.cxx:646
 AliAltroRawStream.cxx:647
 AliAltroRawStream.cxx:648
 AliAltroRawStream.cxx:649
 AliAltroRawStream.cxx:650
 AliAltroRawStream.cxx:651
 AliAltroRawStream.cxx:652
 AliAltroRawStream.cxx:653
 AliAltroRawStream.cxx:654
 AliAltroRawStream.cxx:655
 AliAltroRawStream.cxx:656
 AliAltroRawStream.cxx:657
 AliAltroRawStream.cxx:658
 AliAltroRawStream.cxx:659
 AliAltroRawStream.cxx:660
 AliAltroRawStream.cxx:661
 AliAltroRawStream.cxx:662
 AliAltroRawStream.cxx:663
 AliAltroRawStream.cxx:664
 AliAltroRawStream.cxx:665
 AliAltroRawStream.cxx:666
 AliAltroRawStream.cxx:667
 AliAltroRawStream.cxx:668
 AliAltroRawStream.cxx:669
 AliAltroRawStream.cxx:670
 AliAltroRawStream.cxx:671
 AliAltroRawStream.cxx:672
 AliAltroRawStream.cxx:673
 AliAltroRawStream.cxx:674
 AliAltroRawStream.cxx:675
 AliAltroRawStream.cxx:676
 AliAltroRawStream.cxx:677
 AliAltroRawStream.cxx:678
 AliAltroRawStream.cxx:679
 AliAltroRawStream.cxx:680
 AliAltroRawStream.cxx:681
 AliAltroRawStream.cxx:682
 AliAltroRawStream.cxx:683
 AliAltroRawStream.cxx:684
 AliAltroRawStream.cxx:685
 AliAltroRawStream.cxx:686
 AliAltroRawStream.cxx:687
 AliAltroRawStream.cxx:688
 AliAltroRawStream.cxx:689
 AliAltroRawStream.cxx:690
 AliAltroRawStream.cxx:691
 AliAltroRawStream.cxx:692
 AliAltroRawStream.cxx:693
 AliAltroRawStream.cxx:694
 AliAltroRawStream.cxx:695
 AliAltroRawStream.cxx:696
 AliAltroRawStream.cxx:697
 AliAltroRawStream.cxx:698
 AliAltroRawStream.cxx:699
 AliAltroRawStream.cxx:700
 AliAltroRawStream.cxx:701
 AliAltroRawStream.cxx:702
 AliAltroRawStream.cxx:703
 AliAltroRawStream.cxx:704
 AliAltroRawStream.cxx:705
 AliAltroRawStream.cxx:706
 AliAltroRawStream.cxx:707
 AliAltroRawStream.cxx:708
 AliAltroRawStream.cxx:709
 AliAltroRawStream.cxx:710
 AliAltroRawStream.cxx:711
 AliAltroRawStream.cxx:712
 AliAltroRawStream.cxx:713
 AliAltroRawStream.cxx:714
 AliAltroRawStream.cxx:715
 AliAltroRawStream.cxx:716
 AliAltroRawStream.cxx:717
 AliAltroRawStream.cxx:718
 AliAltroRawStream.cxx:719
 AliAltroRawStream.cxx:720
 AliAltroRawStream.cxx:721
 AliAltroRawStream.cxx:722
 AliAltroRawStream.cxx:723
 AliAltroRawStream.cxx:724
 AliAltroRawStream.cxx:725
 AliAltroRawStream.cxx:726
 AliAltroRawStream.cxx:727
 AliAltroRawStream.cxx:728
 AliAltroRawStream.cxx:729
 AliAltroRawStream.cxx:730
 AliAltroRawStream.cxx:731
 AliAltroRawStream.cxx:732
 AliAltroRawStream.cxx:733
 AliAltroRawStream.cxx:734
 AliAltroRawStream.cxx:735
 AliAltroRawStream.cxx:736
 AliAltroRawStream.cxx:737
 AliAltroRawStream.cxx:738
 AliAltroRawStream.cxx:739
 AliAltroRawStream.cxx:740
 AliAltroRawStream.cxx:741
 AliAltroRawStream.cxx:742
 AliAltroRawStream.cxx:743
 AliAltroRawStream.cxx:744
 AliAltroRawStream.cxx:745
 AliAltroRawStream.cxx:746
 AliAltroRawStream.cxx:747
 AliAltroRawStream.cxx:748
 AliAltroRawStream.cxx:749
 AliAltroRawStream.cxx:750
 AliAltroRawStream.cxx:751
 AliAltroRawStream.cxx:752
 AliAltroRawStream.cxx:753
 AliAltroRawStream.cxx:754
 AliAltroRawStream.cxx:755
 AliAltroRawStream.cxx:756
 AliAltroRawStream.cxx:757
 AliAltroRawStream.cxx:758
 AliAltroRawStream.cxx:759
 AliAltroRawStream.cxx:760
 AliAltroRawStream.cxx:761
 AliAltroRawStream.cxx:762
 AliAltroRawStream.cxx:763
 AliAltroRawStream.cxx:764
 AliAltroRawStream.cxx:765
 AliAltroRawStream.cxx:766
 AliAltroRawStream.cxx:767
 AliAltroRawStream.cxx:768
 AliAltroRawStream.cxx:769
 AliAltroRawStream.cxx:770
 AliAltroRawStream.cxx:771
 AliAltroRawStream.cxx:772
 AliAltroRawStream.cxx:773
 AliAltroRawStream.cxx:774
 AliAltroRawStream.cxx:775
 AliAltroRawStream.cxx:776
 AliAltroRawStream.cxx:777
 AliAltroRawStream.cxx:778
 AliAltroRawStream.cxx:779
 AliAltroRawStream.cxx:780
 AliAltroRawStream.cxx:781
 AliAltroRawStream.cxx:782
 AliAltroRawStream.cxx:783
 AliAltroRawStream.cxx:784
 AliAltroRawStream.cxx:785
 AliAltroRawStream.cxx:786
 AliAltroRawStream.cxx:787
 AliAltroRawStream.cxx:788
 AliAltroRawStream.cxx:789
 AliAltroRawStream.cxx:790
 AliAltroRawStream.cxx:791
 AliAltroRawStream.cxx:792
 AliAltroRawStream.cxx:793
 AliAltroRawStream.cxx:794
 AliAltroRawStream.cxx:795
 AliAltroRawStream.cxx:796
 AliAltroRawStream.cxx:797
 AliAltroRawStream.cxx:798
 AliAltroRawStream.cxx:799
 AliAltroRawStream.cxx:800
 AliAltroRawStream.cxx:801
 AliAltroRawStream.cxx:802
 AliAltroRawStream.cxx:803
 AliAltroRawStream.cxx:804
 AliAltroRawStream.cxx:805
 AliAltroRawStream.cxx:806
 AliAltroRawStream.cxx:807
 AliAltroRawStream.cxx:808
 AliAltroRawStream.cxx:809
 AliAltroRawStream.cxx:810
 AliAltroRawStream.cxx:811
 AliAltroRawStream.cxx:812
 AliAltroRawStream.cxx:813
 AliAltroRawStream.cxx:814
 AliAltroRawStream.cxx:815
 AliAltroRawStream.cxx:816
 AliAltroRawStream.cxx:817
 AliAltroRawStream.cxx:818
 AliAltroRawStream.cxx:819
 AliAltroRawStream.cxx:820
 AliAltroRawStream.cxx:821
 AliAltroRawStream.cxx:822