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

///////////////////////////////////////////////////////////////////////////////
///
/// This is a class for reading the VZERO DDL raw data
/// The format of the raw data corresponds to the one
/// implemented in AliVZEROBuffer class. 
///
///////////////////////////////////////////////////////////////////////////////

#include "AliVZERORawStream.h"
#include "AliRawReader.h"
#include "AliLog.h"
#include "AliDAQ.h"
#include "AliVZEROCalibData.h"
#include "AliVZEROTriggerData.h"
ClassImp(AliVZERORawStream)

//_____________________________________________________________________________
AliVZERORawStream::AliVZERORawStream(AliRawReader* rawReader) :
  fTrigger(0),
  fTriggerMask(0),
  fPosition(-1),
  fRawReader(rawReader),
  fData(NULL)
{
  // create an object to read VZERO raw data
  //
  // select the raw data corresponding to
  // the VZERO detector id
  fRawReader->Reset();
  AliDebug(1,Form("Selecting raw data for detector %d",AliDAQ::DetectorID("VZERO")));
  fRawReader->Select("VZERO");

  // Initalize the containers
  for(Int_t i = 0; i < kNChannels; i++) {
    fTime[i] = fWidth[i] = 0;
    for(Int_t j = 0; j < kNEvOfInt; j++) {
      fADC[i][j] = 0;
      fIsInt[i][j] = fIsBB[i][j] = fIsBG[i][j] = kFALSE;
    }
    fBBScalers[i] = fBGScalers[i] = 0;
    for(Int_t j = 0; j < kNBunches; j++) {
      fChargeMB[i][j] = 0;
      fIsIntMB[i][j] = fIsBBMB[i][j] = fIsBGMB[i][j] = kFALSE;
    }
  }
  for(Int_t i = 0; i < kNScalers; i++) fScalers[i] = 0;
  for(Int_t i = 0; i < kNBunches; i++) fBunchNumbers[i] = 0;
}

//_____________________________________________________________________________
AliVZERORawStream::~AliVZERORawStream()
{
  // destructor
}

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

  // Reinitalize the containers
  for(Int_t i = 0; i < kNChannels; i++) {
    fTime[i] = fWidth[i] = 0;
    for(Int_t j = 0; j < kNEvOfInt; j++) {
      fADC[i][j] = 0;
      fIsInt[i][j] = fIsBB[i][j] = fIsBG[i][j] = kFALSE;
    }
    fBBScalers[i] = fBGScalers[i] = 0;
    for(Int_t j = 0; j < kNBunches; j++) {
      fChargeMB[i][j] = 0;
      fIsIntMB[i][j] = fIsBBMB[i][j] = fIsBGMB[i][j] = kFALSE;
    }
  }
  for(Int_t i = 0; i < kNScalers; i++) fScalers[i] = 0;
  for(Int_t i = 0; i < kNBunches; i++) fBunchNumbers[i] = 0;

  fTrigger = fTriggerMask = 0;
  fPosition = -1;
  fData = NULL;

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

//_____________________________________________________________________________
Bool_t AliVZERORawStream::Next()
{
  // read next digit from the VZERO raw data stream
  // return kFALSE in case of error or no digits left

  if (fPosition >= 0) return kFALSE;

  if (!fRawReader->ReadNextData(fData)) return kFALSE;
  if (fRawReader->GetDataSize() == 0) return kFALSE;
     
  if (fRawReader->GetDataSize() != 5936) {
     fRawReader->AddFatalErrorLog(kRawDataSizeErr,Form("size %d != 5936",fRawReader->GetDataSize()));
     AliWarning(Form("Wrong VZERO raw data size: %d, expected 5936 bytes!",fRawReader->GetDataSize()));
     return kFALSE;
  }

  fPosition = 0;

  fTrigger = GetNextWord() & 0xffff;
  fTriggerMask = GetNextWord() & 0xffff;

  for(Int_t iScaler = 0; iScaler < kNScalers; iScaler++)
     fScalers[iScaler] = GetNextWord();

  for(Int_t iBunch = 0; iBunch < kNBunches; iBunch++)
     fBunchNumbers[iBunch] = GetNextWord();
 
  for (Int_t  iCIU = 0; iCIU < 8; iCIU++) { 
 
  // decoding of one Channel Interface Unit numbered iCIU - there are 8 channels per CIU (and 8 CIUs) :
  
    for (Int_t iChannel_Offset = iCIU*8; iChannel_Offset < (iCIU*8)+8; iChannel_Offset=iChannel_Offset+4) { 
      for(Int_t iChannel = iChannel_Offset; iChannel < iChannel_Offset+4; iChannel++) {
        for(Int_t iEvOfInt = 0; iEvOfInt < kNEvOfInt; iEvOfInt++) {
          UShort_t data = GetNextShort();
          fADC[iChannel][iEvOfInt] = data & 0x3ff;
          fIsInt[iChannel][iEvOfInt] = (data >> 10) & 0x1;
        }
      }
      for(Int_t iEvOfInt = 0; iEvOfInt < kNEvOfInt; iEvOfInt=iEvOfInt+2) {
        UShort_t data = GetNextShort();
        for(Int_t iChannel = iChannel_Offset; iChannel < iChannel_Offset+4; iChannel++) {          
          fIsBB[iChannel][iEvOfInt] = (data >>  2*(iChannel-iChannel_Offset)) & 0x1;
          fIsBG[iChannel][iEvOfInt] = (data >> (2*(iChannel-iChannel_Offset)+1)) & 0x1; 
	  if(iEvOfInt < (kNEvOfInt - 1)) {      
             fIsBB[iChannel][iEvOfInt+1] = (data >> (8+ 2*(iChannel-iChannel_Offset))) & 0x1;
             fIsBG[iChannel][iEvOfInt+1] = (data >> (8+ 2*(iChannel-iChannel_Offset)+1)) & 0x1;
	  }
        }
      }

      GetNextShort();

      for(Int_t iChannel = iChannel_Offset; iChannel < iChannel_Offset+4; iChannel++) {
        for(Int_t iBunch = 0; iBunch < kNBunches; iBunch++) {
          UShort_t data = GetNextShort();
          fChargeMB[iChannel][iBunch] = data & 0x3ff;
          fIsIntMB[iChannel][iBunch] = (data >> 10) & 0x1;
        } 
      }
   
      for(Int_t iBunch = 0; iBunch < kNBunches; iBunch=iBunch+2) {
        UShort_t data = GetNextShort();
        for(Int_t iChannel = iChannel_Offset; iChannel < iChannel_Offset+4; iChannel++) {  
          fIsBBMB[iChannel][iBunch] = (data >>  2*iBunch) & 0x1;
          fIsBGMB[iChannel][iBunch] = (data >> (2*iBunch+1)) & 0x1;
	  if(iBunch < (kNBunches - 1)) {
             fIsBBMB[iChannel][iBunch+1] = (data >> (8+2*iBunch)) & 0x1;
             fIsBGMB[iChannel][iBunch+1] = (data >> (8+2*iBunch+1)) & 0x1;
	  }	  
        }
      }
  
      GetNextShort();
   
      for(Int_t iChannel = iChannel_Offset; iChannel < iChannel_Offset+4; iChannel++) {
        fBBScalers[iChannel] = ((ULong64_t)GetNextWord()) << 32;
        fBBScalers[iChannel] |= GetNextWord();
        fBGScalers[iChannel] = ((ULong64_t)GetNextWord()) << 32;
        fBGScalers[iChannel] |= GetNextWord();
      }

    } 

    for(Int_t iChannel = (iCIU*8) + 7; iChannel >= iCIU*8; iChannel--) { 
      UInt_t time = GetNextWord();
      fTime[iChannel]  = time & 0xfff;
      fWidth[iChannel] = ((time >> 12) & 0x7f); // HPTDC used in pairing mode
    }
    
    // End of decoding of one CIU card
    // printf("Number of bytes used at end of reading CIU card number %d %d \n\n", iCIU+1, fPosition); 
    
  } // end of decoding the eight CIUs
    
  return kTRUE;
}

//_____________________________________________________________________________
UInt_t AliVZERORawStream::GetNextWord()
{
  // This method returns the next 32 bit word
  // inside the raw data payload.
  // The method is supposed to be endian (platform)
  // independent.
  if (!fData || fPosition < 0) AliFatal("Raw data payload buffer is not yet initialized !");

  UInt_t word = 0;
  word |= fData[fPosition++];
  word |= fData[fPosition++] << 8;
  word |= fData[fPosition++] << 16;
  word |= fData[fPosition++] << 24;

  return word;
}

//_____________________________________________________________________________
UShort_t AliVZERORawStream::GetNextShort()
{
  // This method returns the next 16 bit word
  // inside the raw data payload.
  // The method is supposed to be endian (platform)
  // independent.
  if (!fData || fPosition < 0) AliFatal("Raw data payload buffer is not yet initialized !");

  UShort_t word = 0;
  word |= fData[fPosition++];
  word |= fData[fPosition++] << 8;

  return word;
}

//_____________________________________________________________________________
void AliVZERORawStream::CalculateChargeForCentrTriggers(AliVZEROTriggerData *triggerData,
							UShort_t &chargeA, UShort_t &chargeC) const
{
  // Use the raw-data payload
  // in order to calculate the total
  // charge (which is used in the
  // centrality triggers) on each side of V0
  if (!triggerData) {
    AliFatal("Trigger configuration data is not provided. Exiting...");
    return;
  }
  chargeA = chargeC = 0;
  for(Int_t iChannel=0; iChannel<64; iChannel++) {
    Int_t offlineCh = GetOfflineChannel(iChannel);
    Int_t board = AliVZEROCalibData::GetBoardNumber(offlineCh);
    Int_t feeChannel = AliVZEROCalibData::GetFEEChannelNumber(offlineCh);
    if (triggerData->GetEnableCharge(board,feeChannel)) {
      Bool_t integ10 = GetIntegratorFlag(iChannel,10);
      UShort_t ch10 = (UShort_t)GetPedestal(iChannel,10);
      UShort_t trPed = (integ10 == kFALSE) ? triggerData->GetPedestal(0,board,feeChannel) : triggerData->GetPedestal(1,board,feeChannel);
      UShort_t trPedCut = (integ10 == kFALSE) ? triggerData->GetPedestalCut(0,board,feeChannel) : triggerData->GetPedestalCut(1,board,feeChannel);
      if (!triggerData->GetPedestalSubtraction(board)) trPed = trPedCut = 0;
      if (ch10 > trPedCut) {
	if (offlineCh < 32) {
	  chargeC += (ch10 - trPed);
	}
	else {
	  chargeA += (ch10 - trPed);
	}
      }
    }
  }
}

//_____________________________________________________________________________
void AliVZERORawStream::CalculateBBandBGFlags(AliVZEROTriggerData *triggerData,
					      UChar_t &nBBA, UChar_t &nBBC,
					      UChar_t &nBGA, UChar_t &nBGC) const
{
  // Use the raw-data payload
  // in order to calculate the total
  // number of beam-beam and beam-gas flags
  // (which is used in the centrality and
  // multiplicity triggers) on each side of V0
  if (!triggerData) {
    AliFatal("Trigger configuration data is not provided. Exiting...");
    return;
  }
  nBBA = nBBC = nBGA = nBGC = 0;
  for(Int_t iChannel=0; iChannel<64; iChannel++) {
    Int_t offlineCh = GetOfflineChannel(iChannel);
    Int_t board = AliVZEROCalibData::GetBoardNumber(offlineCh);
    Int_t feeChannel = AliVZEROCalibData::GetFEEChannelNumber(offlineCh);
    if (triggerData->GetEnableTiming(board,feeChannel)) {
      if (offlineCh < 32) {
	if (GetBBFlag(iChannel,10)) nBBC++;
	if (GetBGFlag(iChannel,10)) nBGC++;
      }
      else {
	if (GetBBFlag(iChannel,10)) nBBA++;
	if (GetBGFlag(iChannel,10)) nBGA++;
      }
    }
  }
}

//_____________________________________________________________________________
void AliVZERORawStream::FillTriggerBits(AliVZEROTriggerData *triggerData)
{
  // Calculate the charge sums and
  // number of trigger flags and then
  // fill the V0 trigger bits word
  // following the trigger logic implemented
  // in the firmware
  UShort_t chargeA,chargeC;
  CalculateChargeForCentrTriggers(triggerData,chargeA,chargeC);
  UChar_t nBBA,nBBC,nBGA,nBGC;
  CalculateBBandBGFlags(triggerData,
			nBBA,nBBC,
			nBGA,nBGC);

  fTrigger = 0;
  //BBA and BBC
  if((nBBC >= triggerData->GetBBCThreshold()) && (nBBA >= triggerData->GetBBAThreshold())) fTrigger |= 1;
  //BBA or BBC
  if((nBBC >= triggerData->GetBBCThreshold()) || (nBBA >= triggerData->GetBBAThreshold())) fTrigger |= (1<<1);
  //BGA and BBC
  if((nBBC >= triggerData->GetBBCForBGThreshold()) && (nBGA >= triggerData->GetBGAThreshold())) fTrigger |= (1<<2);
  //BGA 
  if((nBGA >= triggerData->GetBGAThreshold())) fTrigger |= (1<<3);
  //BGC and BBA
  if((nBGC >= triggerData->GetBGCThreshold()) && (nBBA >= triggerData->GetBBAForBGThreshold())) fTrigger |= (1<<4);
  //BGC 
  if((nBGC >= triggerData->GetBGCThreshold())) fTrigger |= (1<<5);
  //CTA1 and CTC1
  if((chargeC >= triggerData->GetCentralityV0CThrLow()) && (chargeA >= triggerData->GetCentralityV0AThrLow())) fTrigger |= (1<<6);
  //CTA1 or CTC1
  if((chargeC >= triggerData->GetCentralityV0CThrLow()) || (chargeA >= triggerData->GetCentralityV0AThrLow())) fTrigger |= (1<<7);
  //CTA2 and CTC2
  if((chargeC >= triggerData->GetCentralityV0CThrHigh()) && (chargeA >= triggerData->GetCentralityV0AThrHigh())) fTrigger |= (1<<8);
  //CTA2 or CTC2
  if((chargeC >= triggerData->GetCentralityV0CThrHigh()) || (chargeA >= triggerData->GetCentralityV0AThrHigh())) fTrigger |= (1<<9);
  //MTA and MTC
  if(((nBBC >= triggerData->GetMultV0CThrLow()) && (nBBC <= triggerData->GetMultV0CThrHigh())) &&
     ((nBBA >= triggerData->GetMultV0AThrLow()) && (nBBA <= triggerData->GetMultV0AThrHigh()))) 
    fTrigger |= (1<<10);
  //MTA or MTC
  if(((nBBC >= triggerData->GetMultV0CThrLow()) && (nBBC <= triggerData->GetMultV0CThrHigh())) ||
     ((nBBA >= triggerData->GetMultV0AThrLow()) && (nBBA <= triggerData->GetMultV0AThrHigh()))) 
    fTrigger |= (1<<11);
  //BBA 
  if((nBBA >= triggerData->GetBBAThreshold())) fTrigger |= (1<<12);
  //BBC
  if((nBBC >= triggerData->GetBBCThreshold())) fTrigger |= (1<<13);
  //BGA or BGC 
  if((nBGC >= triggerData->GetBGCThreshold()) || (nBGA >= triggerData->GetBGAThreshold())) fTrigger |= (1<<14);
  //(BGA and BBC) or (BGC and BBA) 
  if(((nBBC >= triggerData->GetBBCForBGThreshold()) && (nBGA >= triggerData->GetBGAThreshold())) ||
     ((nBGC >= triggerData->GetBGCThreshold()) && (nBBA >= triggerData->GetBBAForBGThreshold()))) fTrigger |= (1<<15);

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