ROOT logo
/**************************************************************************
 * This file is property of and copyright by the ALICE HLT Project        *
 * All rights reserved.                                                   *
 *                                                                        *
 * Primary Authors:                                                       *
 *   Artur Szostak <artursz@iafrica.com>                                  *
 *                                                                        *
 * 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$*/

///
/// \file   AliMUONRawStreamTrackerHP.cxx
/// \author Artur Szostak <artursz@iafrica.com>
/// \date   29-11-2007
/// \brief  Implementation of the the high performance decoder AliMUONRawStreamTrackerHP.
///

//-----------------------------------------------------------------------------
/// \ingroup raw
/// \class AliMUONRawStreamTrackerHP
/// \brief A high performance stream decoder for muon tracking DDL streams.
///
/// This is the raw stream class which interfaces between the high performance
/// core decoder and the AliRawReader class.
/// To gain the most out of the decoder, the Next() method which returns batches
/// of decoded digit / channel information should be used. That is:
/// \code
///   const AliBusPatch* Next();
/// \endcode
///
/// This decoder tries to implement as similar an interface as possible to
/// AliMUONRawStreamTracker where possible. However certain constructs which
/// would slow us down too much are avoided.
///
/// \author Artur Szostak <artursz@iafrica.com>
//-----------------------------------------------------------------------------

#include "AliMUONRawStreamTrackerHP.h"
#include "AliMUONTrackerDDLDecoder.h"
#include "AliMUONDspHeader.h"
#include "AliMUONBlockHeader.h"
#include "AliMUONBusStruct.h"
#include "AliMUONDDLTracker.h"
#include "AliMUONLogger.h"
#include "AliRawReader.h"
#include "AliRawDataHeaderV3.h"
#include "AliLog.h"
#include "AliDAQ.h"
#include <cassert>
#include <iostream>
using std::cout;
using std::endl;
using std::hex;
using std::dec;

/// \cond CLASSIMP
ClassImp(AliMUONRawStreamTrackerHP)
/// \endcond

const Int_t AliMUONRawStreamTrackerHP::fgkMaxDDL = 20;

AliMUONRawStreamTrackerHP::AliMUONRawStreamTrackerHP() :
	TObject(),
	fRawReader(NULL),
	fLogger(NULL),
	fDetailLevel(kMediumErrorDetail),
	fEnableMUONErrorLogger(kFALSE),
	fEnableRawReaderErrorLogger(kFALSE),
	fWarnings(kTRUE),
	fDecoder(),
	fDDL(0),
	fBufferSize(8192),
	fBuffer(new UChar_t[8192]),
	fkCurrentBusPatch(NULL),
	fkCurrentData(NULL),
	fkEndOfData(NULL),
	fHadError(kFALSE),
	fDone(kFALSE),
	fDDLObject(NULL),
	fTotalNumberOfGlitchErrors(0),
	fTotalNumberOfParityErrors(0),
	fTotalNumberOfPaddingErrors(0),
	fTotalNumberOfTokenLostErrors(0)
{
	///
	/// Default constructor.
	///
	
	// Must set this flag to get all information about parity errors though
	// the OnData method. OnError gets them either way.
	fDecoder.ExitOnError(false);
	fDecoder.SendDataOnParityError(true);

	fDecoder.GetHandler().SetMaxStructs(
			fDecoder.MaxBlocks(),
			fDecoder.MaxDSPs(),
			fDecoder.MaxBusPatches()
		);
	
	fDecoder.GetHandler().SetRawStream(this);
}


AliMUONRawStreamTrackerHP::AliMUONRawStreamTrackerHP(AliRawReader* rawReader) :
	TObject(),
	fRawReader(rawReader),
	fLogger(NULL),
	fDetailLevel(kMediumErrorDetail),
	fEnableMUONErrorLogger(kFALSE),
	fEnableRawReaderErrorLogger(kFALSE),
	fWarnings(kTRUE),
	fDecoder(),
	fDDL(0),
	fBufferSize(8192),
	fBuffer(new UChar_t[8192]),
	fkCurrentBusPatch(NULL),
	fkCurrentData(NULL),
	fkEndOfData(NULL),
	fHadError(kFALSE),
	fDone(kFALSE),
	fDDLObject(NULL),
	fTotalNumberOfGlitchErrors(0),
	fTotalNumberOfParityErrors(0),
	fTotalNumberOfPaddingErrors(0),
	fTotalNumberOfTokenLostErrors(0)
{
	///
	/// Constructor with AliRawReader as argument.
	///
	
	// Must set this flag to get all information about parity errors though
	// the OnData method. OnError gets them either way.
	fDecoder.ExitOnError(false);
	fDecoder.SendDataOnParityError(true);

	fDecoder.GetHandler().SetMaxStructs(
			fDecoder.MaxBlocks(),
			fDecoder.MaxDSPs(),
			fDecoder.MaxBusPatches()
		);
	
	fDecoder.GetHandler().SetRawStream(this);
}


AliMUONRawStreamTrackerHP::~AliMUONRawStreamTrackerHP()
{
	///
	/// Default destructor.
	///
	
	if (fBuffer != NULL)
	{
		delete [] fBuffer;
	}
	if (fDDLObject != NULL)
	{
		delete fDDLObject;
	}
}


void AliMUONRawStreamTrackerHP::First()
{
	/// Initialise or reset the iterator.
	/// The first DDL will be found and decoded.
	
	assert( GetReader() != NULL );
	
	fDDL = 0;
	fDone = kFALSE;
	NextDDL();
	fTotalNumberOfGlitchErrors = 0;
	fTotalNumberOfPaddingErrors = 0;
	fTotalNumberOfParityErrors = 0;
	fTotalNumberOfTokenLostErrors = 0;
}


Bool_t AliMUONRawStreamTrackerHP::NextDDL()
{
	/// Reading the next tracker DDL and decode the payload with the 
	/// high performance decoder.
	/// \return kTRUE if the next DDL was successfully read and kFALSE otherwise.

	assert( GetReader() != NULL );
	
	// The temporary object if generated in GetDDLTracker, is now stale,
	// so delete it.
	if (fDDLObject != NULL)
	{
		delete fDDLObject;
		fDDLObject = NULL;
	}
	
	// Better to reset these pointers.
	fkCurrentBusPatch = NULL;
	fkCurrentData = NULL;
	fkEndOfData = NULL;
	
	while (fDDL < GetMaxDDL())
	{
		GetReader()->Reset();
		GetReader()->Select("MUONTRK", fDDL, fDDL);  // Select the DDL file to be read.
		if (GetReader()->ReadHeader()) break;
		AliDebug(3, Form("Skipping DDL %d which does not seem to be there", fDDL+1));
		fDDL++;
	}

	// If we reach the end of the DDL list for this event then reset the
	// DDL counter, mark the iteration as done and exit.
	if (fDDL >= GetMaxDDL())
	{
		fDDL = 0;
		fDone = kTRUE;
		return kFALSE;
	}
	else
	{
		fDone = kFALSE;
	}

	AliDebug(3, Form("DDL Number %d\n", fDDL));
	
	Int_t dataSize = GetReader()->GetDataSize(); // in bytes
	// Check if we have enough buffer space already in fBuffer. If we do then
	// just continue reading otherwise we need to resize the buffer.
	if (fBufferSize < dataSize)
	{
		if (fBuffer != NULL)
		{
			delete [] fBuffer;
			fBuffer = NULL;
			fBufferSize = 0;
		}
		try
		{
			fBuffer = new UChar_t[dataSize];
			fBufferSize = dataSize;
		}
		catch (const std::bad_alloc&)
		{
			AliError("Could not allocate more buffer space. Cannot decode DDL.");
			return kFALSE;
		}
	}
	
	if (not GetReader()->ReadNext(fBuffer, dataSize))
	{
		return kFALSE;
	}
	
#ifndef R__BYTESWAP
	Swap(reinterpret_cast<UInt_t*>(fBuffer), dataSize / sizeof(UInt_t)); // Swap needed for mac power pc.
#endif
	
	fDDL++; // Remember to increment index to next DDL before the calls to
	        // fDecoder.Decode since the callback methods of the decoder will
	        // use AliMUONRawStreamTrackerHP::GetDDL()
	
	bool result = false;
	try
	{
		// Since we might allocate memory inside OnNewBuffer in the event
		// handler we need to trap any memory allocation exception to be robust.
		result = fDecoder.Decode(fBuffer, dataSize);
		fHadError = (result == true ? kFALSE : kTRUE);
		fTotalNumberOfGlitchErrors += fDecoder.GetHandler().GlitchErrorCount();
		fTotalNumberOfParityErrors += fDecoder.GetHandler().ParityErrorCount();
		fTotalNumberOfPaddingErrors += fDecoder.GetHandler().PaddingErrorCount();
		fTotalNumberOfTokenLostErrors += fDecoder.GetHandler().TokenLostCount();
	}
	catch (const std::bad_alloc&)
	{
		AliError("Could not allocate more buffer space. Cannot decode DDL.");
		return kFALSE;
	}

	// Update the current bus patch pointers.
	fkCurrentBusPatch = fDecoder.GetHandler().FirstBusPatch();
	if (fkCurrentBusPatch != fDecoder.GetHandler().EndOfBusPatch())
	{
		fkCurrentData = fkCurrentBusPatch->GetData();
		fkEndOfData = fkCurrentData + fkCurrentBusPatch->GetDataCount();
	}
	else
	{
		// If the DDL did not have any bus patches then mark both fCurrentData
		// and fEndOfData as NULL so that in Next() we are forced to find the
		// first non empty DDL.
		fkCurrentData = fkEndOfData = NULL;
	}

	return kTRUE;
}


Bool_t AliMUONRawStreamTrackerHP::IsDone() const
{
	/// Indicates whether the iteration is finished or not.
	/// \return kTRUE if we already read all the digits and kFALSE if not.
	
	return fDone;
}


Bool_t AliMUONRawStreamTrackerHP::Next(Int_t& busPatchId, 
                                       UShort_t& manuId, 
                                       UChar_t& manuChannel,
                                       UShort_t& adc, 
                                       Bool_t skipParityErrors)
{
	/// Advance one step in the iteration. Returns false if finished.
	/// [out] \param busPatchId  This is filled with the bus patch ID of the digit.
	/// [out] \param manuId      This is filled with the MANU ID of the digit.
	/// [out] \param manuChannel This is filled with the MANU channel ID of the digit.
	/// [out] \param adc         This is filled with the ADC signal value of the digit.
	/// [in] \param skipParityErrors If this is kTRUE, we'll skip the buspatches that
	///                              have some parity errors
	/// \return kTRUE if we read another digit and kFALSE if we have read all the
	///    digits already, i.e. at the end of the iteration.
	
	if (fkCurrentData == NULL) return kFALSE;
	
retry:
	// Check if we still have data to be returned for the current bus patch.
	if (fkCurrentData != fkEndOfData)
	{
		busPatchId = fkCurrentBusPatch->GetBusPatchId();
		AliMUONTrackerDDLDecoderEventHandler::UnpackADC(*fkCurrentData, manuId, manuChannel, adc);
		fkCurrentData++;
		return kTRUE;
	}
	else
	{
		// We hit the end of the current bus patch so check if we have any more
		// bus patches to process for the current DDL. If we do, then increment
		// the current bus patch, make sure it is not the last one and then try
		// reading the first element again.
		if (fkCurrentBusPatch != fDecoder.GetHandler().EndOfBusPatch())
		{
			fkCurrentBusPatch++;
			if (fkCurrentBusPatch != fDecoder.GetHandler().EndOfBusPatch())
			{
				fkCurrentData = fkCurrentBusPatch->GetData();
				fkEndOfData = fkCurrentData + fkCurrentBusPatch->GetDataCount();
				if ( skipParityErrors )
				{
					Bool_t ok(kTRUE);
					for ( Int_t i = 0; i < fkCurrentBusPatch->GetLength() && ok; ++ i )
					{
						ok = fkCurrentBusPatch->IsParityOk(i);
					}
					if (!ok) fkCurrentData = fkEndOfData;
				}
				goto retry;
			}
		}

		// This was the last bus patch in the DDL so read in the next one and
		// try reading the first data element again.
		// Note: fCurrentBusPatch is set inside NextDDL().
		if (NextDDL()) goto retry;
	}
	return kFALSE;
}


AliMUONDDLTracker* AliMUONRawStreamTrackerHP::GetDDLTracker() const
{
	/// Construct and return a pointer to the DDL payload object.
	/// \return Pointer to internally constructed AliMUONDDLTracker object.
	///         The object is owned by this class and should not be deleted
	///         by the caller.
	///
	/// \note This method should not be used just to gain access to the DDL
	/// payload, unless there is a good reason to have the AliMUONDDLTracker
	/// object. For example, if you want to modify the data and then save it
	/// to another DDL stream. Otherwise it can be an order of magnitude
	/// faster to access the DDL headers and data with the GetBlockHeader,
	/// GetDspHeader and GetBusPatch methods for example.
	/// Refer to the MUONRawStreamTracker.C macro to see how to use the fast
	/// decoder interface optimally.
	
	if (fDDLObject != NULL) return fDDLObject;
	
	fDDLObject = new AliMUONDDLTracker;
	for (Int_t iBlock = 0; iBlock < (Int_t)GetBlockCount(); iBlock++)
	{
		AliMUONBlockHeader blockHeader;
		AliMUONDspHeader dspHeader;
		AliMUONBusStruct busPatch;
		
		const AliBlockHeader* bh = GetBlockHeader(iBlock);
		// Copy block header and add it to the DDL object.
		memcpy(blockHeader.GetHeader(), bh->GetHeader(), sizeof(AliMUONBlockHeaderStruct));
		fDDLObject->AddBlkHeader(blockHeader);
		
		for (Int_t iDsp = 0; iDsp < (Int_t)bh->GetDspCount(); iDsp++)
		{
			const AliDspHeader* dh = bh->GetDspHeader(iDsp);
			// Copy DSP header and add it to the DDL object.
			memcpy(dspHeader.GetHeader(), dh->GetHeader(), sizeof(AliMUONDSPHeaderStruct));
			fDDLObject->AddDspHeader(dspHeader, iBlock);
			
			const AliBusPatch* bp = dh->GetFirstBusPatch();
			while (bp != NULL)
			{
				// Copy bus patch header, data and add everything into DDL object.
				memcpy(busPatch.GetHeader(), bp->GetHeader(), sizeof(AliMUONBusPatchHeaderStruct));
				busPatch.SetAlloc(bp->GetLength());
				memcpy(busPatch.GetData(), bp->GetData(), bp->GetDataCount()*sizeof(UInt_t));
				busPatch.SetBlockId(iBlock);
				busPatch.SetDspId(iDsp);
				fDDLObject->AddBusPatch(busPatch, iBlock, iDsp);
				bp = bp->Next();
			}
		}
	}
	
	return fDDLObject;
}


void AliMUONRawStreamTrackerHP::SetMaxBlock(Int_t blk)
{
	/// Set maximum number of blocks per DDL allowed.
	fDecoder.MaxBlocks( (UInt_t) blk );
	
	fDecoder.GetHandler().SetMaxStructs(
			fDecoder.MaxBlocks(),
			fDecoder.MaxDSPs(),
			fDecoder.MaxBusPatches()
		);
}


void AliMUONRawStreamTrackerHP::SetMaxDsp(Int_t dsp)
{
	/// Set maximum number of Dsp per block allowed.
	fDecoder.MaxDSPs( (UInt_t) dsp );
	
	fDecoder.GetHandler().SetMaxStructs(
			fDecoder.MaxBlocks(),
			fDecoder.MaxDSPs(),
			fDecoder.MaxBusPatches()
		);
}


void AliMUONRawStreamTrackerHP::SetMaxBus(Int_t bus)
{
	/// Set maximum number of Buspatch per Dsp allowed.
	fDecoder.MaxBusPatches( (UInt_t) bus );
	
	fDecoder.GetHandler().SetMaxStructs(
			fDecoder.MaxBlocks(),
			fDecoder.MaxDSPs(),
			fDecoder.MaxBusPatches()
		);
}

///////////////////////////////////////////////////////////////////////////////

void AliMUONRawStreamTrackerHP::AliBlockHeader::Print() const
{
	/// Print header to screen.
	
	cout << "CRT info"        << endl;
	if (fHeader == NULL)
	{
		cout << "Header is NULL" << endl;
		return;
	}
	cout << "DataKey: 0x"     << hex << fHeader->fDataKey << dec << endl;
	cout << "TotalLength: "   << fHeader->fTotalLength << endl;
	cout << "Length: "        << fHeader->fLength << endl;
	cout << "DspId: "         << fHeader->fDSPId << endl;
	cout << "L0Trigger: "     << fHeader->fL0Trigger << endl;
	cout << "MiniEventId: "   << fHeader->fMiniEventId<< endl; 
	cout << "EventId1: "      << fHeader->fEventId1 << endl;
	cout << "EventId2: "      << fHeader->fEventId2 << endl;
}


void AliMUONRawStreamTrackerHP::AliDspHeader::Print() const
{
	/// Print header to screen.
	
	cout << "FRT info"        << endl;
	if (fHeader == NULL)
	{
		cout << "Header is NULL" << endl;
		return;
	}
	cout << "DataKey: 0x"     << hex << fHeader->fDataKey << dec << endl;
	cout << "TotalLength: "   << fHeader->fTotalLength << endl;
	cout << "Length : "       << fHeader->fLength << endl;
	cout << "DspId: "         << fHeader->fDSPId << endl;
	cout << "BlkL1ATrigger: " << fHeader->fBlkL1ATrigger << endl;
	cout << "MiniEventId: "   << fHeader->fMiniEventId << endl;
	cout << "L1ATrigger: "    << fHeader->fL1ATrigger << endl;
	cout << "L1RTrigger: "    << fHeader->fL1RTrigger << endl;
	cout << "PaddingWord: "   << fHeader->fPaddingWord << endl;
	cout << "ErrorWord: "     << fHeader->fErrorWord << endl;
}


void AliMUONRawStreamTrackerHP::AliBusPatch::Print(const Option_t* opt) const
{
	/// Print header to screen.
	cout << "Bus patch info" << endl;
	if (fHeader == NULL)
	{
		cout << "Header is NULL" << endl;
		return;
	}
	cout << "DataKey: 0x"    << hex << fHeader->fDataKey << dec << endl;
	cout << "fTotalLength: " << fHeader->fTotalLength << endl;
	cout << "fLength: "      << fHeader->fLength << endl;
	cout << "fBusPatchId: "  << fHeader->fBusPatchId << endl;

	if (TString(opt).Contains("all"))
	{
		for (UInt_t i = 0; i < fHeader->fLength; ++i)
			cout << "Data["<< i << "] = " << fData[i] << endl;
	}
}

///////////////////////////////////////////////////////////////////////////////

AliMUONRawStreamTrackerHP::AliDecoderEventHandler::AliDecoderEventHandler() :
	fRawStream(NULL),
	fBufferStart(NULL),
	fBlockCount(0),
	fBlocks(NULL),
	fDSPs(NULL),
	fBusPatches(NULL),
	fEndOfBusPatches(NULL),
	fMaxChannels(8192),
	fParityOk(new Bool_t[8192]),
	fCurrentBlock(NULL),
	fCurrentDSP(NULL),
	fCurrentBusPatch(NULL),
	fCurrentParityOkFlag(NULL),
	fParityErrors(0),
	fGlitchErrors(0),
	fPaddingErrors(0),
	fTokenLostErrors(0),
	fMaxBlocks(),
	fMaxDsps(),
	fMaxBusPatches()
{
	/// Default constructor initialises the internal parity flags buffer to
	/// store 8192 elements. This array will grow dynamically if needed.
}


AliMUONRawStreamTrackerHP::AliDecoderEventHandler::~AliDecoderEventHandler()
{
	/// Default destructor cleans up the allocated memory.
	
	if (fParityOk != NULL) delete [] fParityOk;
	if (fBlocks != NULL) delete [] fBlocks;
	if (fDSPs != NULL) delete [] fDSPs;
	if (fBusPatches != NULL) delete [] fBusPatches;
}


void AliMUONRawStreamTrackerHP::AliDecoderEventHandler::SetMaxStructs(
		UInt_t maxBlocks, UInt_t maxDsps, UInt_t maxBusPatches
	)
{
	/// Sets the maximum number of structures allowed.
	
	// Start by clearing the current arrays.
	if (fBlocks != NULL)
	{
		delete [] fBlocks;
		fBlocks = NULL;
	}
	if (fDSPs != NULL)
	{
		delete [] fDSPs;
		fDSPs = NULL;
	}
	if (fBusPatches != NULL)
	{
		delete [] fBusPatches;
		fBusPatches = NULL;
	}
	fCurrentBlock = NULL;
	fCurrentDSP = NULL;
	fCurrentBusPatch = NULL;
	
	// Allocate new memory.
	fBlocks = new AliBlockHeader[maxBlocks];
	fDSPs = new AliDspHeader[maxBlocks*maxDsps];
	fBusPatches = new AliBusPatch[maxBlocks*maxDsps*maxBusPatches];
	fEndOfBusPatches = fBusPatches;

	fMaxBlocks = maxBlocks;
	fMaxDsps = maxDsps;
	fMaxBusPatches = maxBusPatches;
}


void AliMUONRawStreamTrackerHP::AliDecoderEventHandler::OnNewBuffer(
		const void* buffer, UInt_t bufferSize
	)
{
	/// This is called by the high performance decoder when a new DDL payload
	/// is about to be decoded.
	/// \param buffer  The pointer to the buffer storing the DDL payload.
	/// \param bufferSize  The size of the buffer in bytes.

	// remember the start of the buffer to be used in OnError.
	fBufferStart = buffer;

	// Reset error counters.
	fParityErrors = 0;
	fGlitchErrors = 0;
	fPaddingErrors = 0;
	fTokenLostErrors = 0;

	// Check if we will have enough space in the fParityOk array.
	// If we do not then we need to resize the array.
	// bufferSize / sizeof(UInt_t) will be a safe over estimate of the
	// number of channels that we will find.
	UInt_t maxChannelsPossible = bufferSize / sizeof(UInt_t);
	if (maxChannelsPossible > fMaxChannels)
	{
		if (fParityOk != NULL)
		{
			delete [] fParityOk;
			fParityOk = NULL;
			fMaxChannels = 0;
		}
		fParityOk = new Bool_t[maxChannelsPossible];
		fMaxChannels = maxChannelsPossible;
	}
	
	// Reset the current pointers which will be used to track where we need to
	// fill fBlocks, fDSPs, fBusPatches and the parity flag. We have to subtract
	// one space because we will increment the pointer the first time in the
	// OnNewXZY methods.
	fCurrentBlock = fBlocks-1;
	fCurrentDSP = fDSPs-1;
	fCurrentBusPatch = fBusPatches-1;
	fCurrentParityOkFlag = fParityOk-1;
	fBlockCount = 0;
}


void AliMUONRawStreamTrackerHP::Swap(UInt_t* buffer, Int_t size) const
{
	// swap from little to big endian
	
	typedef struct {
		UInt_t b1:8; ///< first byte word
		UInt_t b2:8; ///< second byte word
		UInt_t b3:8; ///< third byte word
		UInt_t b4:8; ///< fourth byte word
	} RawWord;
	
	RawWord* word, temp;
	word = (RawWord*) buffer;
	
	for (Int_t i = 0; i < size; i++)
	{
		temp = *(((RawWord*)buffer)+i);
		word->b1 = temp.b4;
		word->b2 = temp.b3;
		word->b3 = temp.b2;
		word->b4 = temp.b1;
		word++;
	}
}


void AliMUONRawStreamTrackerHP::AliDecoderEventHandler::OnError(
		ErrorCode error, const void* location
	)
{
	/// This is called by the high performance decoder when a error occurs
	/// when trying to decode the DDL payload. This indicates corruption in
	/// the data. This method converts the error code to a descriptive message
	/// and logs this with the logger object.
	/// \param error  The error code indicating the problem.
	/// \param location  A pointer to the location within the DDL payload buffer
	///              being decoded where the problem with the data was found.
	
	assert(fRawStream != NULL);
	
	const char* message = NULL;
	UInt_t word = 0;
	bool logAsMajorError = true;
	
	// Build the detailed part of the error message if high detail selected.
	const char* detail = "";
	if (fRawStream->GetLoggingDetailLevel() == kHighErrorDetail)
	{
		bool blockPtrOk = fBlockCount > 0;
		bool dspPtrOk = blockPtrOk ? fCurrentBlock->GetDspCount() > 0 : false;
		bool buspatchPtrOk = dspPtrOk ? fCurrentDSP->GetBusPatchCount() > 0 : false;
		// We subtract 1 from the current numbers of blocks, DSPs
		// and bus patches to get the iBlock, iDsp and iBus indices.
		detail = Form(
			"At byte %lu in DDL %d, event %d, iBlock %d, iDsp %d [DSP ID: %d (0x%X)],"
			" iBus %d [bus patch ID: %d (0x%X)].",
			(unsigned long)location - (unsigned long)fBufferStart + sizeof(AliRawDataHeaderV3),
			AliDAQ::DdlID("MUONTRK", fRawStream->GetDDL()),
			fRawStream->GetReader()->GetEventIndex(),
			int(fBlockCount)-1,
			blockPtrOk ? int(fCurrentBlock->GetDspCount())-1 : -1,
			blockPtrOk ? fCurrentBlock->GetDspId() : -1,
			blockPtrOk ? fCurrentBlock->GetDspId() : -1,
			dspPtrOk ? int(fCurrentDSP->GetBusPatchCount())-1 : -1,
			buspatchPtrOk ? fCurrentBusPatch->GetBusPatchId() : -1,
			buspatchPtrOk ? fCurrentBusPatch->GetBusPatchId() : -1
		);
	}
	
	// Build the log message.
	switch (error)
	{
	case kGlitchFound:
		fGlitchErrors++;
		switch (fRawStream->GetLoggingDetailLevel())
		{
		case kLowErrorDetail:
			message = "Glitch error detected.";
			break;
		case kMediumErrorDetail:
			message = Form(
				"Glitch error detected in DSP %d (0x%X), skipping event.",
				fCurrentBlock->GetDspId(), fCurrentBlock->GetDspId()
			);
			break;
		case kHighErrorDetail:
		default:
			message = Form("%s %s", ErrorCodeToMessage(error), detail);
			break;
		}
		logAsMajorError = true;
		break;

	case kBadPaddingWord:
		fPaddingErrors++;
		switch (fRawStream->GetLoggingDetailLevel())
		{
		case kLowErrorDetail:
			message = "Padding word error detected.";
			break;
		case kMediumErrorDetail:
			// We subtract 1 from the current numbers of blocks, DSPs
			// and bus patches to get the indices.
			message = Form(
				"Padding word error for iBlock %d, iDsp %d, iBus %d.",
				fBlockCount-1,
				fCurrentBlock->GetDspCount()-1,
				fCurrentDSP->GetBusPatchCount()-1
			);
			break;
		case kHighErrorDetail:
		default:
			message = Form("%s %s", ErrorCodeToMessage(error), detail);
			break;
		}
		logAsMajorError = false;
		break;

	case kParityError:
		fParityErrors++;
		switch (fRawStream->GetLoggingDetailLevel())
		{
		case kLowErrorDetail:
			message = "Parity error detected.";
			break;
		case kMediumErrorDetail:
			message = Form(
				"Parity error in buspatch %d (0x%X).",
				fCurrentBusPatch->GetBusPatchId(),
				fCurrentBusPatch->GetBusPatchId()
			);
			break;
		case kHighErrorDetail:
		default:
			// location points to the incorrect data word and
			// fCurrentBusPatch->GetData() returns a pointer to the start of
			// bus patches data, so the difference divided by 4 gives the 32
			// bit word number.
			word = (reinterpret_cast<size_t>(location) - reinterpret_cast<size_t>(fCurrentBusPatch->GetData()))
				/ sizeof(UInt_t);
			message = Form(
				"Parity error in word %d for manuId %d and channel %d in buspatch %d. %s",
				word,
				fCurrentBusPatch->GetManuId(word),
				fCurrentBusPatch->GetChannelId(word),
				fCurrentBusPatch->GetBusPatchId(),
				detail
			);
			break;
		}
		logAsMajorError = false;
		break;
		
	case kTokenLost:
		fTokenLostErrors++;
		switch (fRawStream->GetLoggingDetailLevel())
		{
		case kLowErrorDetail:
			message = "Lost token error detected.";
			break;
		case kMediumErrorDetail:
			word = *reinterpret_cast<const UInt_t*>(location);
			message = Form(
				"Lost token error detected with address 0x%X of DDL %d and code %d.",
				((word & 0xFFFF0000)),
				fRawStream->GetDDL(),
				(word & 0xF)
			);
			break;
		case kHighErrorDetail:
		default:
			word = *reinterpret_cast<const UInt_t*>(location);
			message = Form(
				"Lost token error detected with address 0x%X and code %d. %s",
				((word & 0xFFFF0000)),
				(word & 0xF),
				detail
			);
			break;
		}
		logAsMajorError = false;
		break;

	default:
		switch (fRawStream->GetLoggingDetailLevel())
		{
		case kLowErrorDetail:
			message = ErrorCodeToMessage(error);
			break;
		case kMediumErrorDetail:
			message = Form(
				"%s (At byte %lu)",
				ErrorCodeToMessage(error),
				(unsigned long)location - (unsigned long)fBufferStart + sizeof(AliRawDataHeaderV3)
			);
			break;
		case kHighErrorDetail:
		default:
			message = Form(
				"%s Error code: %d (%s). %s",
				ErrorCodeToMessage(error),
				error, ErrorCodeToString(error),
				detail
			);
			break;
		}
		logAsMajorError = true;
		break;
	}
	
	// Now log the error message depending on the logging flags set.
	if (fRawStream->IsRawReaderErrorLoggerEnabled())
	{
		if (logAsMajorError)
			fRawStream->GetReader()->AddMajorErrorLog(Int_t(error), message);
		else
			fRawStream->GetReader()->AddMinorErrorLog(Int_t(error), message);
	}
	if (fRawStream->IsMUONErrorLoggerEnabled())
	{
		AliMUONLogger* logger = fRawStream->GetMUONErrorLogger();
		if (logger != NULL)
		{
			logger->Log(message);
		}
		else
		{
			AliErrorGeneral(
				"AliMUONRawStreamTrackerHP::AliDecoderEventHandler",
				"Enabled logging to AliMUONLogger, but the logger object"
				" was not set with SetMUONErrorLogger()."
			);
		}
	}
	if (fRawStream->IsWarningsEnabled())
	{
		AliWarningGeneral(
				"AliMUONRawStreamTrackerHP::AliDecoderEventHandler",
				message
			);
	}
}

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