ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
***************************************************************************/

/*
$Log$
Revision 1.5  2007/11/24 14:58:34  zampolli
New Method implemented (#DDL <-> TOF channels)

Revision 1.4  2007/05/18 13:08:57  decaro
Coding convention: RS1 violation -> suppression

Revision 1.3  2007/05/08 11:56:05  arcelli
improved verbosity in verbose mode (R.Preghenella)

Revision 1.2  2007/05/03 11:34:43  decaro
Coding convention: RS1 violation -> suppression

Revision 1.1  2007/04/27 11:00:32  arcelli
TOF Raw Data decoder

  author: Roberto Preghenella (R+), preghenella@bo.infn.it
*/


//////////////////////////////////////////////////////////////////////
//                                                                  //
//                                                                  //
//   Class for raw data decoding                                    //
//                                                                  //
//                                                                  //
//////////////////////////////////////////////////////////////////////
                               


#include "AliLog.h"
#include "AliTOFHitData.h"
#include "AliTOFHitDataBuffer.h"
#include "AliTOFDecoder.h"
#include "AliTOFGeometry.h"
#include "AliRawDataHeader.h"
#include "AliRawDataHeaderV3.h"
#include "AliTOFRawDataFormat.h"

ClassImp(AliTOFDecoder)

//_________________________________________________________________

AliTOFDecoder::AliTOFDecoder() :
  TObject(),
  fVerbose(0),
  fV2718Patch(kFALSE),
  fDataBuffer(0x0),
  fPackedDataBuffer(0x0),
  //fTRMGlobalHeader(0x0),
  //fTRMGlobalTrailer(0x0),
  //fTRMChainHeader(0x0),
  //fTRMChainTrailer(0x0),
  //fTDCPackedHit(0x0),
  //fTDCUnpackedHit(0x0),
  //fTRMTDCError(0x0),
  //fTRMDiagnosticErrorWord1(0x0),
  //fTRMDiagnosticErrorWord2(0x0),
  fSpiderCurrentSlotID(-1),
  fSpiderCurrentChain(-1),
  fSpiderCurrentTDC(-1)
{
  //default constructor

  for (Int_t chan=0;chan<N_CHANNEL;chan++)
    fSpiderLeadingFlag[chan] = kFALSE;

}

//_________________________________________________________________

AliTOFDecoder::AliTOFDecoder(AliTOFHitDataBuffer *DataBuffer, AliTOFHitDataBuffer *PackedDataBuffer) :
  TObject(),
  fVerbose(0),
  fV2718Patch(kFALSE),
  fDataBuffer(DataBuffer),
  fPackedDataBuffer(PackedDataBuffer),
  //fTRMGlobalHeader(0x0),
  //fTRMGlobalTrailer(0x0),
  //fTRMChainHeader(0x0),
  //fTRMChainTrailer(0x0),
  //fTDCPackedHit(0x0),
  //fTDCUnpackedHit(0x0),
  //fTRMTDCError(0x0),
  //fTRMDiagnosticErrorWord1(0x0),
  //fTRMDiagnosticErrorWord2(0x0),
  fSpiderCurrentSlotID(-1),
  fSpiderCurrentChain(-1),
  fSpiderCurrentTDC(-1)
{
  //another constructor

  for (Int_t chan=0;chan<N_CHANNEL;chan++)
    fSpiderLeadingFlag[chan] = kFALSE;

}

//_________________________________________________________________

AliTOFDecoder::AliTOFDecoder(const AliTOFDecoder &source) : 
  TObject(source),
  fVerbose(source.fVerbose),
  fV2718Patch(source.fV2718Patch),
  fDataBuffer(source.fDataBuffer),
  fPackedDataBuffer(source.fPackedDataBuffer),
  //fTRMGlobalHeader(source.fTRMGlobalHeader),
  //fTRMGlobalTrailer(source.fTRMGlobalTrailer),
  //fTRMChainHeader(source.fTRMChainHeader),
  //fTRMChainTrailer(source.fTRMChainTrailer),
  //fTDCPackedHit(source.fTDCPackedHit),
  //fTDCUnpackedHit(source.fTDCUnpackedHit),
  //fTRMTDCError(source.fTRMTDCError),
  //fTRMDiagnosticErrorWord1(source.fTRMDiagnosticErrorWord1),
  //fTRMDiagnosticErrorWord2(source.fTRMDiagnosticErrorWord2),
  fSpiderCurrentSlotID(source.fSpiderCurrentSlotID),
  fSpiderCurrentChain(source.fSpiderCurrentChain),
  fSpiderCurrentTDC(source.fSpiderCurrentTDC)
{
  //copy constructor

  for (Int_t chan=0;chan<N_CHANNEL;chan++)
    fSpiderLeadingFlag[chan] = source.fSpiderLeadingFlag[chan];
  
}

//_________________________________________________________________

AliTOFDecoder &
AliTOFDecoder::operator = (const AliTOFDecoder &source)
{
  //operator =

  if (this == &source)
    return *this;

  TObject::operator=(source);
  fVerbose = source.fVerbose;
  fV2718Patch = source.fV2718Patch;
  fDataBuffer = source.fDataBuffer;
  fPackedDataBuffer = source.fPackedDataBuffer;
  //fTRMGlobalHeader = source.fTRMGlobalHeader;
  //fTRMGlobalTrailer = source.fTRMGlobalTrailer;
  //fTRMChainHeader = source.fTRMChainHeader;
  //fTRMChainTrailer = source.fTRMChainTrailer;
  //fTDCPackedHit = source.fTDCPackedHit;
  //fTDCUnpackedHit = source.fTDCUnpackedHit;
  //fTRMTDCError = source.fTRMTDCError;
  //fTRMDiagnosticErrorWord1 = source.fTRMDiagnosticErrorWord1;
  //fTRMDiagnosticErrorWord2 = source.fTRMDiagnosticErrorWord2;
  fSpiderCurrentSlotID = source.fSpiderCurrentSlotID;
  fSpiderCurrentChain = source.fSpiderCurrentChain;
  fSpiderCurrentTDC = source.fSpiderCurrentTDC;
  for (Int_t chan=0;chan<N_CHANNEL;chan++)
    fSpiderLeadingFlag[chan] = source.fSpiderLeadingFlag[chan];
  
  return *this;
}

AliTOFDecoder::~AliTOFDecoder()
{}

//_________________________________________________________________

Bool_t
AliTOFDecoder::Decode(const UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh, const AliRawDataHeaderV3 *cdhV3)
{
  /* main decoding routine.
   * it loops over nWords 32-bit words 
   * starting at *rawData and decodes them.
   * it also fills some buffers in order to
   * have the decoded data available for other
   * classes.
   */

  AliTOFDRMStatusHeader3 *lDRMStatusHeader3;
  AliTOFTRMGlobalHeader          *lTRMGlobalHeader; //TRM global header
  AliTOFTRMGlobalTrailer         *lTRMGlobalTrailer; //TRM global trailer
  AliTOFTRMChainHeader           *lTRMChainHeader; //TRM chain header
  //AliTOFTRMChainTrailer          *lTRMChainTrailer; //TRM chain trailer
  AliTOFTDCPackedHit             *lTDCPackedHit; //TDC packed hit
  AliTOFTDCUnpackedHit           *lTDCUnpackedHit; //TDC unpacked hit
  //AliTOFTRMTDCError              *lTRMTDCError; //TRM TDC error
  //AliTOFTRMDiagnosticErrorWord1  *lTRMDiagnosticErrorWord1; //TRM diagnostic error word 1
  //AliTOFTRMDiagnosticErrorWord2  *lTRMDiagnosticErrorWord2; //TRM diagnostica error word 2


  AliTOFHitData hitData;
  
  //useful variables
  Int_t   status;
  Short_t tempPS;
  Float_t tempTOT; //ns
  Int_t   tempTOTBin; //TOT_BIN_WIDTH

  //decoder variables
  UShort_t decodeStatus = 0x0;
  Short_t  currentDDL = -1;
  Short_t  currentSlotID = -1;
  Short_t  currentACQ = -1;
  Short_t  currentChain = -1;
  Short_t  currentBunchID = -1;
  Short_t  currentL0BCID = -1;
  Short_t  currentMiniEventID = cdh ? cdh->GetMiniEventID() : (Short_t)(-1);
  currentMiniEventID = cdhV3 ? cdhV3->GetMiniEventID() : currentMiniEventID;
  Short_t  currentEventID1 = cdh ? cdh->GetEventID1() : (Short_t)(-1);
  currentEventID1 = cdhV3 ? cdhV3->GetEventID1() : currentEventID1;
  if (!cdh && !cdhV3)
    AliWarning("CDH not valid: deltaBunchID not reliable ");
  else
    AliDebug(1, Form("EvID1 = %d, EvID2 = %d, currentMiniEventID = %d", currentEventID1, cdh? cdh->GetEventID2() : cdhV3->GetEventID2(), currentMiniEventID));

  /*** V2718 patch ***/
  if (fV2718Patch){
    decodeStatus = decodeStatus | DRM_BIT;
    if (fVerbose)
      AliInfo("DRM not present: - V2718 patch decoding -");
  }
  /*** V2718 patch ***/

  if (fVerbose==2)
    AliInfo("Initialize SPIDER function");
  status = InitializeSpider();
  
  if (fVerbose)
    AliInfo("Start decoding");
  
  if (fVerbose)
    AliInfo("Loop over the data and decode");
  
  if (fVerbose)
    AliInfo("  St    Hex Word \t   Decoded Word");
  
  //loop over raw data
  for (Int_t iWord = 0; iWord < nWords; iWord++, rawData++){
    
    //switch word type
    switch (*rawData & WORD_TYPE_MASK){
      
    case GLOBAL_HEADER:
      
      //switch slot ID
      switch (*rawData & SLOT_ID_MASK){
	
	//DRM global header (slotID=1)
      case 1:
	//check decode status
	if ( decodeStatus != DRM_HEADER_STATUS ){
	  AliError(Form("  %02x - 0x%08x [ERROR] Unexpected DRM global header",decodeStatus,*rawData));
	  return kTRUE;
	}
	//decode status ok
	if (fVerbose)
	  AliInfo(Form("  %02x - 0x%08x \t  DRM global header",decodeStatus,*rawData));
	//change decode status
	decodeStatus = decodeStatus | DRM_BIT;
	
	//skip DRM data
	for (Int_t i = 0; i < DRM_DATA_WORDS; i++, iWord++){
	  rawData++;
	  if (fVerbose)
	      AliInfo(Form("  %02x - 0x%08x \t  DRM data",decodeStatus,*rawData));
	  switch (i) {
	  case 2:
	    lDRMStatusHeader3 = (AliTOFDRMStatusHeader3*)rawData;
	    currentL0BCID = lDRMStatusHeader3->GetL0BCID();
	    break;
	  default:
	    break;
	  }
	}
	break;
	
	//LTM global header (slotID=2)
      case 2:
	//check decode status
	if ( decodeStatus != LTM_HEADER_STATUS ){
	  AliError(Form("  %02x - 0x%08x [ERROR] Unexpected LTM global header",decodeStatus,*rawData));
	  return kTRUE;
	}
	//decode status ok
	if (fVerbose)
	  AliInfo(Form("  %02x - 0x%08x \t  LTM global header",decodeStatus,*rawData));
	//change decode status
	decodeStatus = decodeStatus | LTM_BIT;
	
	//skip LTM data
	for (Int_t i = 0; i < LTM_DATA_WORDS; i++, iWord++){
	  rawData++;
	  if (fVerbose)
	    AliInfo(Form("  %02x - 0x%08x \t  LTM data",decodeStatus,*rawData));
	}
	break;
	
	//TRM global header (slotID=3-12)
      case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12:
	//check decode status
	if ( decodeStatus != TRM_HEADER_STATUS ){
	  AliError(Form("  %02x - 0x%08x [ERROR] Unexpected TRM global header",decodeStatus,*rawData));
	  return kTRUE;
	}
	//decode status ok
	//set TRM global header
	lTRMGlobalHeader = (AliTOFTRMGlobalHeader*)rawData;	
	//set current TRM
	currentSlotID = lTRMGlobalHeader->GetSlotID();
	currentACQ = lTRMGlobalHeader->GetACQBits();
	if (fVerbose)
	  AliInfo(Form("  %02x - 0x%08x \t  TRM global header \t slotID=%02d ACQ=%01d L=%01d",decodeStatus,*rawData,lTRMGlobalHeader->GetSlotID(),lTRMGlobalHeader->GetACQBits(),lTRMGlobalHeader->GetLBit()));
	//change decode status
	decodeStatus = decodeStatus | TRM_BIT;
	break;
	
      default:
	AliError(Form("  %02x - 0x%08x [ERROR] Not valid slotID in global header",decodeStatus,*rawData));
	return kTRUE;
	break;
	
      }
      //end switch slotID
      break;
      
    case GLOBAL_TRAILER:
      
      //switch slot ID
      switch (*rawData & SLOT_ID_MASK){
	
	//DRM global trailer (slotID=1)
      case 1:
	//check decode status
	if ( decodeStatus != DRM_TRAILER_STATUS ){
	  AliError(Form("  %02x - 0x%08x [ERROR] Unexpected DRM global trailer",decodeStatus,*rawData));
	  return kTRUE;
	}
	//decode status ok
	if (fVerbose)
	  AliInfo(Form("  %02x - 0x%08x \t  DRM global trailer",decodeStatus,*rawData));
	//change decode status
	decodeStatus = decodeStatus & ~DRM_BIT;
	break;
	
	//LTM global trailer (slotID=2)
      case 2:
	//check decode status
	if ( decodeStatus != LTM_TRAILER_STATUS ){
	  AliError(Form("  %02x - 0x%08x [ERROR] Unexpected LTM global trailer",decodeStatus,*rawData));
	  return kTRUE;
	}
	//decode status ok
	if (fVerbose)
	  AliInfo(Form("  %02x - 0x%08x \t  LTM global trailer",decodeStatus,*rawData));
	//change decode status
	decodeStatus = decodeStatus & ~LTM_BIT;
	break;
	
	//TRM global trailer (slotID=15)
      case 15:
	//check decode status
	if ( decodeStatus != TRM_TRAILER_STATUS ){
	  AliError(Form("  %02x - 0x%08x [ERROR] Unexpected TRM global trailer",decodeStatus,*rawData));
	  return kTRUE;
	}
	//decode status ok
	//set TRM global trailer
	lTRMGlobalTrailer = (AliTOFTRMGlobalTrailer *)rawData;	
	if (fVerbose)
	  AliInfo(Form("  %02x - 0x%08x \t  TRM global trailer \t CRC=%04d eventCounter=%04d",decodeStatus,*rawData,lTRMGlobalTrailer->GetEventCRC(),lTRMGlobalTrailer->GetEventCounter()));
	//change decode status
	decodeStatus = decodeStatus & ~TRM_BIT;
	break; 
	
      default:
	AliError(Form("  %02x - 0x%08x [ERROR] Not valid slotID/pattern in global trailer",decodeStatus,*rawData));
	return kTRUE;
	break;
      }
      break;
      
    case CHAIN_A_HEADER:
      //check decode status
      if ( (decodeStatus != CHAIN_A_HEADER_STATUS) ){
	AliError(Form("  %02x - 0x%08x [ERROR] Unexpected TRM chain A header",decodeStatus,*rawData));
	return kTRUE;
      }
      //decode status ok
      lTRMChainHeader = (AliTOFTRMChainHeader *)rawData;
      currentChain = 0;
      currentBunchID = lTRMChainHeader->GetBunchID();
      if (fVerbose)
	AliInfo(Form("  %02x - 0x%08x \t  TRM chain A header \t chain=%01d bunchID=%04d",decodeStatus,*rawData,currentChain,currentBunchID));
      //change decode status
      decodeStatus = decodeStatus | CHAIN_A_BIT;
      break;
      
    case CHAIN_A_TRAILER:
      //check decode status
      if ( decodeStatus != CHAIN_A_TRAILER_STATUS ){
	AliError(Form("  %02x - 0x%08x [ERROR] Unexpected TRM chain A trailer",decodeStatus,*rawData));
	return kTRUE;
      }
      //decode status ok
      if (fVerbose)
	AliInfo(Form("  %02x - 0x%08x \t  TRM chain A trailer",decodeStatus,*rawData));
      //change decode status
      decodeStatus = decodeStatus & ~CHAIN_A_BIT;
      break;
      
    case CHAIN_B_HEADER:
      //check decode status
      if ( decodeStatus != CHAIN_B_HEADER_STATUS ){
	AliError(Form("  %02x - 0x%08x [ERROR] Unexpected TRM chain B header",decodeStatus,*rawData));
	return kTRUE;
      }
      //decode status ok
      lTRMChainHeader = (AliTOFTRMChainHeader *)rawData;
      currentChain = 1;
      currentBunchID = lTRMChainHeader->GetBunchID();
      if (fVerbose)
	AliInfo(Form("  %02x - 0x%08x \t  TRM chain B header \t chain=%01d bunchID=%04d",decodeStatus,*rawData,currentChain,currentBunchID));
      //change decode status
      decodeStatus = decodeStatus | CHAIN_B_BIT;
      break;
      
    case CHAIN_B_TRAILER:
      //check decode status
      if ( decodeStatus != CHAIN_B_TRAILER_STATUS ){
	AliError(Form("  %02x - 0x%08x [ERROR] Unexpected TRM chain B trailer",decodeStatus,*rawData));
	return kTRUE;
      }
      //decode status ok
      if (fVerbose)
	AliInfo(Form("  %02x - 0x%08x \t  TRM chain B trailer",decodeStatus,*rawData));
      //change decode status
      decodeStatus = decodeStatus & ~CHAIN_B_BIT;
      break;
      
    case ERROR:
      if (fVerbose)
	AliInfo(Form("  %02x - 0x%08x \t  TDC error",decodeStatus,*rawData));
      break;
      
    case FILLER:
      if (fVerbose)
	AliInfo(Form("  %02x - 0x%08x \t  Filler",decodeStatus,*rawData));
      break;
      
    default:
      //check decode status
      if ( decodeStatus != CHAIN_A_TDC_HIT_STATUS &&
	   decodeStatus != CHAIN_B_TDC_HIT_STATUS ){
	AliError(Form("  %02x - 0x%08x [ERROR] Unexpected or unknown word",decodeStatus,*rawData));
	return kTRUE;
      }
      //decode status ok
      
      //switch TRM ACQ
      switch (currentACQ){
	
      case PACKING_ENABLED_ACQ:
	//decode TDC packed hit
	lTDCPackedHit = (AliTOFTDCPackedHit *)rawData;
	lTDCUnpackedHit = (AliTOFTDCUnpackedHit *)rawData;
	//set hit in the equipment data
	hitData.SetDDLID(currentDDL);
	hitData.SetSlotID(currentSlotID);
	hitData.SetACQ(currentACQ);
	hitData.SetChain(currentChain);
	hitData.SetPS(lTDCPackedHit->GetPSBits());
	hitData.SetTDC(lTDCPackedHit->GetTDCID());
	hitData.SetChan(lTDCPackedHit->GetChan());
	hitData.SetTime((float)lTDCPackedHit->GetHitTime() * TIME_BIN_WIDTH);
	hitData.SetTimeBin(lTDCPackedHit->GetHitTime());
	hitData.SetTOT((float)lTDCPackedHit->GetTOTWidth() * TOT_BIN_WIDTH);
	hitData.SetTOTBin(lTDCPackedHit->GetTOTWidth());
	hitData.SetDeltaBunchID(currentBunchID - currentEventID1);
	hitData.SetL0L1Latency(currentMiniEventID - currentL0BCID);
	//orphane leading hit
	if (hitData.GetPS()==LEADING_HIT_PS){
	  hitData.SetTime((float)lTDCUnpackedHit->GetHitTime() * TIME_BIN_WIDTH);
	  hitData.SetTimeBin(lTDCUnpackedHit->GetHitTime());
	  //set TOT to zero
	  hitData.SetTOT(0);
	  hitData.SetTOTBin(0);
	  //push hit data in packed data buffer
	  if (fPackedDataBuffer != 0x0)
	    fPackedDataBuffer->Add(hitData);
	  //set TOT to not measured
	  hitData.SetTOT(-1);
	  hitData.SetTOTBin(-1);
	  //push hit data in packed data buffer
	  if (fDataBuffer != 0x0)
	    fDataBuffer->Add(hitData);
	}
	//orphane trailing hit
	else if (hitData.GetPS()==TRAILING_HIT_PS){
	  hitData.SetTime((float)lTDCUnpackedHit->GetHitTime() * TIME_BIN_WIDTH);
	  hitData.SetTimeBin(lTDCUnpackedHit->GetHitTime());
	  //set TOT to not measured
	  hitData.SetTOT(-1);
	  hitData.SetTOTBin(-1);
	  //push hit data in data buffer
	  if (fDataBuffer != 0x0)
	    fDataBuffer->Add(hitData);
	}
	//packed hit and OVF
	else{
	  //push hit data in packed data buffer
	  if (fPackedDataBuffer != 0x0)
	    fPackedDataBuffer->Add(hitData);
	  //save PS temporary
	  tempPS = hitData.GetPS();
	  //save TOT temporary
	  tempTOT = hitData.GetTOT();
	  tempTOTBin = hitData.GetTOTBin();
	  //unpack the hit: leading hit
	  hitData.SetPS(LEADING_HIT_PS);
	  //set TOT to not measured
	  hitData.SetTOT(-1);
	  hitData.SetTOTBin(-1);
	  //push leading hit data in data buffer
	  if (fDataBuffer != 0x0)
	    fDataBuffer->Add(hitData);
	  //unpack the hit: trailing hit
	  hitData.SetPS(TRAILING_HIT_PS);
	  hitData.SetTime(hitData.GetTime() + tempTOT);
	  hitData.SetTimeBin(hitData.GetTimeBin() + (Int_t)(tempTOTBin * TOT_TO_TIME_BIN_WIDTH));
	  //push trailing hit data in data buffer
	  if (fDataBuffer != 0x0)
	    fDataBuffer->Add(hitData);
	  //restore packed hit
	  hitData.SetPS(tempPS);
	  hitData.SetTime(hitData.GetTime() - tempTOT);
	  hitData.SetTimeBin(hitData.GetTimeBin() - (Int_t)(tempTOTBin * TOT_TO_TIME_BIN_WIDTH));
	  hitData.SetTOT(tempTOT);
	  hitData.SetTOTBin(tempTOTBin);
	}
	
	if (fVerbose)
	  switch (hitData.GetPS()){
	  case PACKED_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [packed] \t PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTOT(),hitData.GetTOTBin(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  case LEADING_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [orp.lead] \t PS=%01d TDC=%01d chan=%01d time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  case TRAILING_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [orp.trai] \t PS=%01d TDC=%01d chan=%01d time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  case TOT_OVF_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [TOT ovfl] \t PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTOT(),hitData.GetTOTBin(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  }
	break;
	
      case LEADING_ONLY_ACQ: case TRAILING_ONLY_ACQ:
	//decode TDC unpacked hit
	lTDCUnpackedHit = (AliTOFTDCUnpackedHit *)rawData;
	//set hit in the equipment data
	hitData.SetDDLID(currentDDL);
	hitData.SetSlotID(currentSlotID);
	hitData.SetACQ(currentACQ);
	hitData.SetChain(currentChain);
	hitData.SetPS(lTDCUnpackedHit->GetPSBits());
	hitData.SetTDC(lTDCUnpackedHit->GetTDCID());
	hitData.SetChan(lTDCUnpackedHit->GetChan());
	hitData.SetTime((float)lTDCUnpackedHit->GetHitTime() * TIME_BIN_WIDTH);
	hitData.SetTimeBin(lTDCUnpackedHit->GetHitTime());
	hitData.SetTOT(-1.);
	hitData.SetTOTBin(-1);
	hitData.SetDeltaBunchID(currentBunchID - currentEventID1);
	hitData.SetL0L1Latency(currentMiniEventID - currentL0BCID);
	//push hit data in data buffer
	  if (fDataBuffer != 0x0)
	    fDataBuffer->Add(hitData);
	
	if (fVerbose)
	  switch (hitData.GetPS()){
	  case PACKED_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [packed] \t PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTOT(),hitData.GetTOTBin(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  case LEADING_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [leading] \t PS=%01d TDC=%01d chan=%01d time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  case TRAILING_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [trailing] \t PS=%01d TDC=%01d chan=%01d time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  case TOT_OVF_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [TOT ovfl] \t PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTOT(),hitData.GetTOTBin(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  }
	break;
	
      case PACKING_DISABLED_ACQ:
	//decode TDC unpacked hit
	lTDCUnpackedHit = (AliTOFTDCUnpackedHit *)rawData;
	//set hit in the equipment data
	hitData.SetDDLID(currentDDL);
	hitData.SetSlotID(currentSlotID);
	hitData.SetACQ(currentACQ);
	hitData.SetChain(currentChain);
	hitData.SetPS(lTDCUnpackedHit->GetPSBits());
	hitData.SetTDC(lTDCUnpackedHit->GetTDCID());
	hitData.SetChan(lTDCUnpackedHit->GetChan());
	hitData.SetTime((float)lTDCUnpackedHit->GetHitTime() * TIME_BIN_WIDTH);
	hitData.SetTimeBin(lTDCUnpackedHit->GetHitTime());
	hitData.SetTOT(-1.);
	hitData.SetTOTBin(-1);
	hitData.SetDeltaBunchID(currentBunchID - currentEventID1);
	hitData.SetL0L1Latency(currentMiniEventID - currentL0BCID);
	//push hit data in data buffer
	  if (fDataBuffer != 0x0)
	    fDataBuffer->Add(hitData);
	
	if (fVerbose)
	  switch (hitData.GetPS()){
	  case PACKED_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [packed] \t PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTOT(),hitData.GetTOTBin(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  case LEADING_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [leading] \t PS=%01d TDC=%01d chan=%01d time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  case TRAILING_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [trailing] \t PS=%01d TDC=%01d chan=%01d time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  case TOT_OVF_HIT_PS:
	    AliInfo(Form("  %02x - 0x%08x \t  TDC hit [TOT ovfl] \t PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",decodeStatus,*rawData,hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTOT(),hitData.GetTOTBin(),hitData.GetTime(),hitData.GetTimeBin()));
	    break;
	  }
	//call spider function
	if (fVerbose==2)
	  AliInfo("Calling SPIDER function");
	Spider(hitData);
	break;
      }
      //end switch TRM ACQ
      
      
    }
    //end switch word type
    
  }
  //end equipment data loop
  
  if (fVerbose)
    AliInfo("End of data loop");
  
  if (fVerbose==2)
    AliInfo("Reset SPIDER function");
  status = ResetSpider();
  
  if (fVerbose)
    AliInfo("Decoder is exiting succesfully.");

  return kFALSE;  
}

//_________________________________________________________________

Bool_t 
AliTOFDecoder::InitializeSpider(){

  /* SPIDER initialization routine.
     it initializes SPIDER variables in order
     to have SPIDER ready to pack tof data 
     in packed data objects
  */
  
  if (fVerbose==2)
    AliInfo("Initializing SPIDER");
  
  fSpiderCurrentSlotID=-1;
  fSpiderCurrentChain=-1;
  fSpiderCurrentTDC=-1;
  
  for (Int_t chan=0;chan<N_CHANNEL;chan++)
    fSpiderLeadingFlag[chan] = kFALSE;
  
  return kFALSE;
}

//_________________________________________________________________

Bool_t 
AliTOFDecoder::ResetSpider(){

  /* SPIDER reset routine.
     it resets SPIDER buffers and 
     variables in order to empty full 
     buffers a set up SIPDER for new
     HPTDC data
  */

  if (fVerbose==2)
    AliInfo("Resetting SPIDER buffers");

  for (Int_t chan=0;chan<N_CHANNEL;chan++){
    if (fSpiderLeadingFlag[chan]){
      if (fVerbose==2)
	AliInfo("Buffer non empty: put leading hit into buffer as orphane");
      //set TOT to zero
      fSpiderLeadingHit[chan].SetACQ(4);
      fSpiderLeadingHit[chan].SetPS(1);
      fSpiderLeadingHit[chan].SetTOT(0);
      fSpiderLeadingHit[chan].SetTOTBin(0);
      //push hit into packed buffer
      if (fPackedDataBuffer != 0x0)
	fPackedDataBuffer->Add(fSpiderLeadingHit[chan]);
      if (fVerbose==2)
	AliInfo(Form("Packed hit: slotID=%d chain=%d PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",fSpiderLeadingHit[chan].GetSlotID(),fSpiderLeadingHit[chan].GetChain(),fSpiderLeadingHit[chan].GetPS(),fSpiderLeadingHit[chan].GetTDC(),fSpiderLeadingHit[chan].GetChan(),fSpiderLeadingHit[chan].GetTOT(),fSpiderLeadingHit[chan].GetTOTBin(),fSpiderLeadingHit[chan].GetTime(),fSpiderLeadingHit[chan].GetTimeBin()));
      
    }
    fSpiderLeadingFlag[chan]=kFALSE;
  }
  
  return kFALSE;
}

//_________________________________________________________________

Bool_t 
AliTOFDecoder::Spider(AliTOFHitData &hitData){

  /* main SPIDER routine.
     it receives, reads, stores and packs
     unpacked HPTDC data in packed data
     object. it also fills buffers.
  */
 
  Int_t status;

  if (fVerbose==2)
    AliInfo("Hit data received");

  //check if TDC is changed (slotID,chain,TDC triplet)
  if (fSpiderCurrentSlotID!=hitData.GetSlotID() ||
      fSpiderCurrentChain!=hitData.GetChain() ||
      fSpiderCurrentTDC!=hitData.GetTDC() ){
    if (fVerbose==2)
      AliInfo("Data coming from a new TDC: reset buffers");
    //reset spider
    status = ResetSpider();
    //set current TDC 
    fSpiderCurrentSlotID=hitData.GetSlotID();
    fSpiderCurrentChain=hitData.GetChain();
    fSpiderCurrentTDC=hitData.GetTDC();
  }
  
  //switch PS bits
  switch (hitData.GetPS()){

  case LEADING_HIT_PS:
    if (fVerbose==2)
      AliInfo(Form("Leading hit: slotID=%d chain=%d PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",hitData.GetSlotID(),hitData.GetChain(),hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTOT(),hitData.GetTOTBin(),hitData.GetTime(),hitData.GetTimeBin()));
    //check spider leading flag
    if (fSpiderLeadingFlag[hitData.GetChan()]){
      if (fVerbose==2)
	AliInfo("Leading hit: buffer full, put previous in buffers as orphane and keep current");
      //set TOT at zero for previous hit
      fSpiderLeadingHit[hitData.GetChan()].SetACQ(4);
      fSpiderLeadingHit[hitData.GetChan()].SetPS(1);
      fSpiderLeadingHit[hitData.GetChan()].SetTOT(0);
      fSpiderLeadingHit[hitData.GetChan()].SetTOTBin(0);
      //push previous hit into packed buffer
      if (fPackedDataBuffer != 0x0)
	fPackedDataBuffer->Add(fSpiderLeadingHit[hitData.GetChan()]);
      //set current hit
      fSpiderLeadingHit[hitData.GetChan()]=hitData;
      if (fVerbose==2)
	AliInfo(Form("Packed hit: slotID=%d chain=%d PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",fSpiderLeadingHit[hitData.GetChan()].GetSlotID(),fSpiderLeadingHit[hitData.GetChan()].GetChain(),fSpiderLeadingHit[hitData.GetChan()].GetPS(),fSpiderLeadingHit[hitData.GetChan()].GetTDC(),fSpiderLeadingHit[hitData.GetChan()].GetChan(),fSpiderLeadingHit[hitData.GetChan()].GetTOT(),fSpiderLeadingHit[hitData.GetChan()].GetTOTBin(),fSpiderLeadingHit[hitData.GetChan()].GetTime(),fSpiderLeadingHit[hitData.GetChan()].GetTimeBin()));
    }
    else{
      if (fVerbose==2)
	AliInfo("Leading hit: buffer empty, keep current hit and set flag");
      fSpiderLeadingHit[hitData.GetChan()]=hitData;
      //set spider leading flag
      fSpiderLeadingFlag[hitData.GetChan()]=kTRUE;
    }
    break;

  case TRAILING_HIT_PS:
    if (fVerbose==2)
      AliInfo(Form("Trailing hit: slotID=%d chain=%d PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",hitData.GetSlotID(),hitData.GetChain(),hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTOT(),hitData.GetTOTBin(),hitData.GetTime(),hitData.GetTimeBin()));
    //check spider leading flag
    if (fSpiderLeadingFlag[hitData.GetChan()]){
      if (fVerbose==2)
	AliInfo("Trailing hit: buffer full, pack leading and trailing");
      hitData.SetACQ(4);
      hitData.SetPS(0);
      hitData.SetTOT(hitData.GetTime()-fSpiderLeadingHit[hitData.GetChan()].GetTime());
      hitData.SetTOTBin((Int_t)((hitData.GetTimeBin()-fSpiderLeadingHit[hitData.GetChan()].GetTimeBin())*TIME_TO_TOT_BIN_WIDTH));
      hitData.SetTime(fSpiderLeadingHit[hitData.GetChan()].GetTime());
      hitData.SetTimeBin(fSpiderLeadingHit[hitData.GetChan()].GetTimeBin());
      //check TOT and set TOT overflow if TOT < 0
      if (hitData.GetTOT() < 0){
	hitData.SetPS(3);
	hitData.SetTOT(0);
	hitData.SetTOTBin(0);
      }
      if (fPackedDataBuffer != 0x0)
	fPackedDataBuffer->Add(hitData);      
      if (fVerbose==2)
	AliInfo(Form("Packed hit: slotID=%d chain=%d PS=%01d TDC=%01d chan=%01d TOT=%3.1fns (%d) time=%4.1fns (%d)",hitData.GetSlotID(),hitData.GetChain(),hitData.GetPS(),hitData.GetTDC(),hitData.GetChan(),hitData.GetTOT(),hitData.GetTOTBin(),hitData.GetTime(),hitData.GetTimeBin()));
      //unset spider leading flag
      fSpiderLeadingFlag[hitData.GetChan()]=kFALSE;
    }
    else{
      if (fVerbose==2)
	AliInfo("Trailing hit: buffer empty, throw hit away");
    }
    break;
  }
  //end switch PS bits

  return kFALSE;
}
//_____________________________________________________________________________
void AliTOFDecoder::GetArrayDDL(Int_t* array, Int_t ddl){

  // method that fills array with the
  // TOF channels indexes corresponding
  // to DDL iDDL

  AliTOFGeometry *geom = new AliTOFGeometry();
  Int_t indexDDL = ddl%4;
  Int_t iSector = Int_t(ddl/4);
  if (fVerbose)
    AliInfo(Form(" Sector = %i, DDL within sector = %i",iSector, indexDDL));

  Int_t volume[5];
  volume[0]=iSector;
  Int_t minPlate=0, maxPlate=0, minStrip2=0, maxStrip2=0, minPadz=0, maxPadz=0, minPadx=0, maxPadx=0;

  if (indexDDL==0){
    minPlate=kMinPlate0;
    maxPlate=kMaxPlate0;
    minStrip2=kMinStrip0;
    maxStrip2=kMaxStrip0;
    minPadz=kMinPadz0;
    maxPadz=kMaxPadz0;
    minPadx=kMinPadx0;
    maxPadx=kMaxPadx0;
  }

  else if (indexDDL==1){
    minPlate=kMinPlate1;
    maxPlate=kMaxPlate1;
    minStrip2=kMinStrip1;
    maxStrip2=kMaxStrip1;
    minPadz=kMinPadz1;
    maxPadz=kMaxPadz1;
    minPadx=kMinPadx1;
    maxPadx=kMaxPadx1;
  }

  else if (indexDDL==2){
    minPlate=kMinPlate2;
    maxPlate=kMaxPlate2;
    minStrip2=kMinStrip2;
    maxStrip2=kMaxStrip2;
    minPadz=kMinPadz2;
    maxPadz=kMaxPadz2;
    minPadx=kMinPadx2;
    maxPadx=kMaxPadx2;
  }

  else if (indexDDL==3){
    minPlate=kMinPlate3;
    maxPlate=kMaxPlate3;
    minStrip2=kMinStrip3;
    maxStrip2=kMaxStrip3;
    minPadz=kMinPadz3;
    maxPadz=kMaxPadz3;
    minPadx=kMinPadx3;
    maxPadx=kMaxPadx3;
  }

  Int_t ichTOF=0;

  Int_t minStrip=0;
  Int_t maxStrip=18;  
  for (Int_t iPlate=minPlate;iPlate<=maxPlate;iPlate++){
    if (iPlate==2) {
      maxStrip = maxStrip2;
      minStrip = minStrip2;
    }
    else {
      maxStrip = 18;
      minStrip = 0;
    }
    for (Int_t iStrip=minStrip;iStrip<=maxStrip;iStrip++){
      for (Int_t iPadz=minPadz;iPadz<=maxPadz;iPadz++){
	for (Int_t iPadx=minPadx;iPadx<=maxPadx;iPadx++){
	  volume[1]=iPlate;
	  volume[2]=iStrip;
	  volume[3]=iPadz;
	  volume[4]=iPadx;
	  if (fVerbose)
	    AliInfo(Form(" volume[0] = %i, volume[1] = %i, volume[2] = %i, volume[3] = %i, volume[4] = %i",volume[0],volume[1],volume[2],volume[3],volume[4]));

	  if (indexDDL==0 || indexDDL==2){
	    array[ichTOF]=geom->GetIndex(volume);
	    if (fVerbose)
	      AliInfo(Form(" ichTOF = %i, TOFChannel = %i",ichTOF,array[ichTOF]));

	  }
	  else {
	    array[ichTOF]=geom->GetIndex(volume);
	    if (fVerbose)
	      AliInfo(Form(" ichTOF = %i, TOFChannel = %i",ichTOF,array[ichTOF]));

	  }
	  ichTOF++;
	}
      }
    }
  }
  //AliInfo(Form("ichTOF = %i",ichTOF));
  if ((indexDDL%2==0 && ichTOF!=2160) ||
      (indexDDL%2==1 && ichTOF!=2208)) {
    AliWarning(Form("Something strange occurred, number of entries in array different from expected! Please, check! ichTOF = %i",ichTOF));
  }
  return;
}

//------------------------------------------------------------
void AliTOFDecoder::PrintStack(const UInt_t *rawData, Int_t nWords, const AliRawDataHeader *cdh, const AliRawDataHeaderV3 *cdhV3)
{
  /* It loops over nWords 32-bit words 
   * starting at *rawData and prints them in 0x format.
   * It does not decode them!
   */

 Short_t  currentMiniEventID = cdh ? cdh->GetMiniEventID() : (Short_t)(-1);
 currentMiniEventID = cdhV3 ? cdhV3->GetMiniEventID() : currentMiniEventID;
 Short_t  currentEventID1 = cdh ? cdh->GetEventID1() : (Short_t)(-1);
 currentEventID1 = cdhV3 ? cdhV3->GetEventID1() : currentEventID1;
 if (!cdh && !cdhV3)
   AliWarning("CDH not valid: deltaBunchID not reliable ");
 else
   AliDebug(1, Form("EvID1 = %d, EvID2 = %d, currentMiniEventID = %d", currentEventID1, cdh ? cdh->GetEventID2() : cdhV3->GetEventID2(), currentMiniEventID));

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