ROOT logo
#ifndef ALIMUONRAWSTREAMTRACKERHP_H
#define ALIMUONRAWSTREAMTRACKERHP_H
/* This file is property of and copyright by the ALICE HLT Project        *
 * ALICE Experiment at CERN, All rights reserved.                         *
 * See cxx source for full Copyright notice                               */

/* $Id$*/

///
/// \file   AliMUONRawStreamTrackerHP.h
/// \author Artur Szostak <artursz@iafrica.com>
/// \date   29-11-2007
/// \brief  Declaration of the high performance decoder for muon trigger chamber raw streams.
///

#ifndef ROOT_TObject
#  include "TObject.h"
#endif
#include "AliMUONTrackerDDLDecoder.h"

#include <cstring>

class AliMUONDDLTracker;
class AliRawReader;
class AliMUONLogger;

class AliMUONRawStreamTrackerHP : public TObject
{
public:
	class AliDspHeader;
	class AliBusPatch;
	
	/// Values indicating the logging detail level to use for error messages.
	enum EDetailLevel
	{
		kLowErrorDetail,     /// Logs minimal information in the error messages.
		kMediumErrorDetail,  /// Logs a medium level of detail in the error messages.
		kHighErrorDetail     /// Logs maximum information in the error messages.
	};

	/// Default constructor.
	AliMUONRawStreamTrackerHP();
	
	/// Constructor for setting the raw reader.
	AliMUONRawStreamTrackerHP(AliRawReader* rawReader);
	
	/// Default destructor.
	virtual ~AliMUONRawStreamTrackerHP();
	
	/// Get object for reading the raw data
	virtual AliRawReader* GetReader() { return fRawReader; }
	
	/// Set the raw reader
	void SetReader(AliRawReader* reader) { fRawReader = reader; }
	
	/// Initialize iterator
	virtual void First();
	
	/// DDL iterator 
	virtual Bool_t NextDDL();
	
	/// Whether the iteration is finished or not
	virtual Bool_t IsDone() const;

	/// Advance one step in the iteration. Returns false if finished.
	virtual Bool_t Next(Int_t& busPatchId,
			    UShort_t& manuId, UChar_t& manuChannel,
			    UShort_t& adc) { return Next(busPatchId,manuId,manuChannel,adc,kTRUE); }
	
	/// Advance one step in the iteration. Returns false if finished.
	virtual Bool_t Next(Int_t& busPatchId,
                      UShort_t& manuId,
                      UChar_t& manuChannel,
                      UShort_t& adc,
                      Bool_t skipParityErrors);

	/// Construct and return a pointer to the DDL payload object.
	virtual AliMUONDDLTracker* GetDDLTracker() const;
	
	/// Returns the next batch of decoded channel data.
	const AliBusPatch* Next();
	
	/// Return maximum number of blocks per DDL allowed.
	virtual Int_t GetMaxBlock() const { return (Int_t) fDecoder.MaxBlocks(); }
	/// Return maximum number of Dsp per block allowed.
	virtual Int_t GetMaxDsp() const { return (Int_t) fDecoder.MaxDSPs(); }
	/// Return maximum number of Buspatch per Dsp allowed.
	virtual Int_t GetMaxBus() const { return (Int_t) fDecoder.MaxBusPatches(); }
	
	/// Set maximum number of blocks per DDL allowed.
	virtual void SetMaxBlock(Int_t blk);
	/// Set maximum number of Dsp per block allowed.
	virtual void SetMaxDsp(Int_t dsp);
	/// Set maximum number of Buspatch per Dsp allowed.
	virtual void SetMaxBus(Int_t bus);
	
	/// Return number of the current DDL being processed in the range [0..19] or -1 if no DDL set.
	virtual Int_t GetDDL() const { return fDDL - 1; }
	
	/// check error/Warning presence
	virtual Bool_t IsErrorMessage() const { return fHadError; }
	
	/// Get number of parity errors in the DDL last decoded.
	Int_t   GetParityErrors() const
	{
		return (Int_t) fDecoder.GetHandler().ParityErrorCount();
	}

	/// Get number of glitch errors in the DDL last decoded.
	Int_t   GetGlitchErrors() const
	{
		return (Int_t) fDecoder.GetHandler().GlitchErrorCount();
	}

	/// Get number of padding word errors in the DDL last decoded.
	Int_t   GetPaddingErrors() const
	{
		return (Int_t) fDecoder.GetHandler().PaddingErrorCount();
	}

	/// Get number of token lost errors in the DDL last decoded.
	Int_t   GetTokenLostErrors() const
	{
		return (Int_t) fDecoder.GetHandler().TokenLostCount();
	}

	/// Set warnings flag to disable warnings on data errors.
	void DisableWarnings() { fWarnings = kFALSE; }
	/// Set warnings flag to enable warnings on data errors.
	void EnableWarnings() { fWarnings = kTRUE; }
	
        /// Returns the flag indicating if we should generate a warning for errors.
	Bool_t IsWarningsEnabled() const { return fWarnings; }

	/// Returns the "try to recover from errors" flag.
	Bool_t TryRecover() const { return Bool_t(fDecoder.TryRecover()); }
	
	/// Sets the "try to recover from errors" flag.
	/// i.e. should the decoder try to recover from errors found in the
	/// payload headers.
	void TryRecover(Bool_t value) { fDecoder.TryRecover(bool(value)); }
	
	/// Returns the auto-detect trailer words flag.
	Bool_t AutoDetectTrailer() const { return Bool_t(fDecoder.AutoDetectTrailer()); }
	
	/// Sets the auto-detect trailer words flag.
	/// When set to true the decoder will try to detect if the end of DDL
	/// keys are in the trailer words or not. These are generated by the
	/// detector but not the older versions of AliRoot simulations.
	void AutoDetectTrailer(Bool_t value) { fDecoder.AutoDetectTrailer(bool(value)); }

	/// Returns the flag indicating if the data is expected to have the
	/// end of DDL keys in the trailer. This flag is ignored if AutoDetectTrailer()
	/// was set to true.
	Bool_t CheckForTrailer() const { return Bool_t(fDecoder.CheckForTrailer()); }
	
	/// Sets the flag indicating if the trailer words should contain the
	/// end of DDL key.
	void CheckForTrailer(Bool_t value) { fDecoder.CheckForTrailer(bool(value)); }
	
	/// Light weight interface class to the block header data.
	class AliBlockHeader
	{
	public:
		/// Default constructor.
		AliBlockHeader(
				AliDspHeader* dspArray = NULL,
				const AliMUONBlockHeaderStruct* header = NULL
			)
			: fNext(NULL), fDspCount(0), fFirstDsp(dspArray), fHeader(header)
		{
		}
		
		/// Implement shallow copying in the copy constructor.
		AliBlockHeader(const AliBlockHeader& o) :
			fNext(o.fNext), fDspCount(o.fDspCount), fFirstDsp(o.fFirstDsp), fHeader(o.fHeader)
		{
		}
		
		/// Implement shallow copying in the assignment operator.
		AliBlockHeader& operator = (const AliBlockHeader& object)
		{
			memcpy(this, &object, sizeof(AliBlockHeader));
			return *this;
		}
	
		/// Default destructor.
		~AliBlockHeader() {};
	
		/// Return data key word for CRT header
		Int_t   GetDataKey()        const {assert(fHeader != NULL); return fHeader->fDataKey;}
		/// Return total length of block structure (w/o padding word)
		Int_t   GetTotalLength()    const {assert(fHeader != NULL); return fHeader->fTotalLength;}
		/// Return length of raw data
		Int_t   GetLength()         const {assert(fHeader != NULL); return fHeader->fLength;}
		/// Return Dsp id
		Int_t   GetDspId()          const {assert(fHeader != NULL); return fHeader->fDSPId;}
		/// Return L0 trigger word
		Int_t   GetL0Trigger()      const {assert(fHeader != NULL); return fHeader->fL0Trigger;}
		/// Return Bunch Crossing for mini-event id (see TDR chapter 8)
		Int_t   GetMiniEventId()    const {assert(fHeader != NULL); return fHeader->fMiniEventId;}
		/// Return Event Id in bunch crossing
		Int_t   GetEventId1()       const {assert(fHeader != NULL); return fHeader->fEventId1;}
		/// Return Event Id in orbit number
		Int_t   GetEventId2()       const {assert(fHeader != NULL); return fHeader->fEventId2;}
	
		/// Return the header's raw data.
		const AliMUONBlockHeaderStruct* GetHeader() const {return fHeader;}
		
		/// Return the next block header.
		const AliBlockHeader* Next() const { return fNext; }
		
		/// Returns the first AliDspHeader class in this block.
		const AliDspHeader* GetFirstDspHeader() const { return fFirstDsp; }
		
		/// Returns the number of DSPs within this block.
		UInt_t GetDspCount() const { return fDspCount; }
	
		/// Return the i'th DSP in this block.
		const AliDspHeader* GetDspHeader(UInt_t i) const
		{
			return i < fDspCount ? GetFirstDspHeader() + i : NULL;
		}
		
		/// Sets the next block header.
		void SetNext(const AliBlockHeader* next) { fNext = next; }

		/// Increments the DSP count.
		void IncDspCount() { fDspCount++; };
		
		/// Print the contents of the header to screen.
		void Print() const;
	
	private:
	
		const AliBlockHeader* fNext;  ///< Pointer to next block.
		UInt_t fDspCount;    ///< The number of AliDspHeader objects found in the array pointed to by fFirstDsp.
		const AliDspHeader* fFirstDsp;  ///< The first DSP associated with this block.
		const AliMUONBlockHeaderStruct*  fHeader;  ///< Pointer to header in DDL payload.
	};
	
	/// Light weight interface class to the DSP header data.
	class AliDspHeader
	{
	public:
		/// Default constructor.
		AliDspHeader(
				const AliBlockHeader* block = NULL,
				const AliBusPatch* busPatchArray = NULL,
				const AliMUONDSPHeaderStruct* header = NULL
			) :
			fBlock(block), fNext(NULL), fBusPatchCount(0),
			fFirstBusPatch(busPatchArray), fHeader(header)
		{
		}
		
		/// Implement shallow copying in the copy constructor.
		AliDspHeader(const AliDspHeader& o) :
			fBlock(o.fBlock), fNext(o.fNext), fBusPatchCount(o.fBusPatchCount),
			fFirstBusPatch(o.fFirstBusPatch), fHeader(o.fHeader)
		{
		}
		
		/// Implement shallow copying in the assignment operator.
		AliDspHeader& operator = (const AliDspHeader& object)
		{
			memcpy(this, &object, sizeof(AliDspHeader));
			return *this;
		}
	
		/// Default destructor.
		~AliDspHeader() {};
	
		/// Return Data key word for FRT header
		Int_t   GetDataKey()        const {assert(fHeader != NULL); return fHeader->fDataKey;}
		/// Return total length of block structure
		Int_t   GetTotalLength()    const {assert(fHeader != NULL); return fHeader->fTotalLength;}
		/// Return length of raw data
		Int_t   GetLength()         const {assert(fHeader != NULL); return fHeader->fLength;}
		/// Return Dsp id
		Int_t   GetDspId()          const {assert(fHeader != NULL); return fHeader->fDSPId;}
		/// Return L1 accept in Block Structure (CRT)
		Int_t   GetBlkL1ATrigger()  const {assert(fHeader != NULL); return fHeader->fBlkL1ATrigger;}
		/// Return Mini Event Id in bunch crossing
		Int_t   GetMiniEventId()    const {assert(fHeader != NULL); return fHeader->fMiniEventId;}
		/// Return Number of L1 accept in DSP Structure (FRT)
		Int_t   GetL1ATrigger()     const {assert(fHeader != NULL); return fHeader->fL1ATrigger;}
		/// Return Number of L1 reject in DSP Structure (FRT)
		Int_t   GetL1RTrigger()     const {assert(fHeader != NULL); return fHeader->fL1RTrigger;}
		/// Return padding dummy word for 64 bits transfer
		UInt_t  GetPaddingWord()    const {assert(fHeader != NULL); return fHeader->fPaddingWord;}
		/// Return Error word
		Int_t   GetErrorWord()      const {assert(fHeader != NULL); return fHeader->fErrorWord;}
	
		/// Return raw data of header
		const AliMUONDSPHeaderStruct* GetHeader() const { return fHeader; }
		
		/// Return the parent block header.
		const AliBlockHeader* GetBlockHeader() const { return fBlock; }
		
		/// Return the next DSP header.
		const AliDspHeader* Next() const { return fNext; }
		
		/// Returns the first AliBusPatch class in this DSP.
		const AliBusPatch* GetFirstBusPatch() const { return fFirstBusPatch; }
		
		/// Returns the number of bus patches within this DSP.
		UInt_t GetBusPatchCount() const { return fBusPatchCount; }
	
		/// Return the i'th bus patch in this DSP.
		const AliBusPatch* GetBusPatch(UInt_t i) const
		{
			return i < fBusPatchCount ? GetFirstBusPatch() + i : NULL;
		}
	
		/// Sets the next DSP header.
		void SetNext(const AliDspHeader* next) { fNext = next; }

		/// Increments the bus patch count.
		void IncBusPatchCount() { fBusPatchCount++; };
		
		/// Print the contents of the header to screen.
		void Print() const;
	
	private:
	
		const AliBlockHeader* fBlock;  ///< Pointer to parent block structure.
		const AliDspHeader* fNext;  ///< Pointer to next DSP.
		UInt_t fBusPatchCount;    ///< The number of AliDspHeader objects found in the array pointed to by fFirstBusPatch
		const AliBusPatch* fFirstBusPatch;  ///< The first bus patch of this DSP.
		const AliMUONDSPHeaderStruct*  fHeader;  ///< Pointer to header in DDL payload.
	};
	
	/// Light weight interface class to the bus patch data.
	class AliBusPatch
	{
	public:
		/// Default constructor.
		AliBusPatch(
				const AliDspHeader* dsp = NULL,
				const AliMUONBusPatchHeaderStruct* header = NULL,
				const UInt_t* data = NULL,
				const Bool_t* parityOk = NULL
			) :
			fDSP(dsp),
			fNext(NULL),
			fHeader(header),
			fData(data),
			fParityOk(parityOk)
		{
		}
		
		/// Implement shallow copying in the copy constructor.
		AliBusPatch(const AliBusPatch& o) :
			fDSP(o.fDSP),
			fNext(o.fNext),
			fHeader(o.fHeader),
			fData(o.fData),
			fParityOk(o.fParityOk)
		{
		}
		
		/// Implement shallow copying in the assignment operator.
		AliBusPatch& operator = (const AliBusPatch& object)
		{
			memcpy(this, &object, sizeof(AliBusPatch));
			return *this;
		}
	
		/// Default destructor.
		~AliBusPatch() {};
		
		/// Return Data key word for bus patch header.
		Int_t   GetDataKey()     const {assert(fHeader != NULL); return fHeader->fDataKey;}
		/// Return total length of buspatch structure
		Int_t   GetTotalLength() const {assert(fHeader != NULL); return fHeader->fTotalLength;}
		/// Return length of raw data
		Int_t   GetLength()      const {assert(fHeader != NULL); return fHeader->fLength;}
		/// Return bus patch id
		Int_t   GetBusPatchId()  const {assert(fHeader != NULL); return fHeader->fBusPatchId;}

		/// Return raw data of header
		const AliMUONBusPatchHeaderStruct* GetHeader() const {return fHeader;}
		/// Return raw digit data
		const UInt_t* GetData()  const {return fData;}
		/// Returns the number of raw data words within this bus patch.
		UInt_t GetDataCount() const { return (UInt_t)GetLength(); }

		/// Returns the parity bit of the n'th raw data word.
		Char_t GetParity(UInt_t n) const
		{
			assert( fHeader != NULL && n < fHeader->fLength );
			return (Char_t)(fData[n] >> 31) &  0x1;
		}
		
		/// Returns the MANU ID of the n'th raw data word.
		UShort_t GetManuId(UInt_t n) const
		{
			assert( fHeader != NULL && n < fHeader->fLength );
			return (UShort_t)(fData[n] >> 18) &  0x7FF;
		}
		
		/// Returns the channel ID of the n'th raw data word.
		UChar_t GetChannelId(UInt_t n) const
		{
			assert( fHeader != NULL && n < fHeader->fLength );
			return (Char_t)(fData[n] >> 12) & 0x3F;
		}
		
		/// Returns the charge/signal of the n'th raw data word.
		UShort_t GetCharge(UInt_t n) const
		{
			assert( fHeader != NULL && n < fHeader->fLength );
			return (UShort_t)(fData[n] & 0xFFF);
		}
		
		/// Returns the n'th raw data word.
		UInt_t GetData(UInt_t n) const
		{
			assert( fHeader != NULL && n < fHeader->fLength );
			return fData[n];
		}
		
		/// Returns kTRUE if the parity of the n'th raw data word is OK
		/// and kFALSE otherwise.
		Bool_t IsParityOk(UInt_t n) const
		{
			assert( fHeader != NULL && n < fHeader->fLength );
			return fParityOk[n];
		}
		
		/// Unpacks and returns the fields of the n'th raw data word. kTRUE
		/// is returned if the data word's parity was OK and kFALSE otherwise.
		Bool_t GetData(UInt_t n, UShort_t& manuId, UChar_t& channelId, UShort_t& adc) const
		{
			assert( fHeader != NULL && n < fHeader->fLength );
			AliMUONTrackerDDLDecoderEventHandler::UnpackADC(fData[n], manuId, channelId, adc);
			return fParityOk[n];
		}
		
		/// Return the parent block header.
		const AliDspHeader* GetDspHeader() const { return fDSP; }
		
		/// Return the next bus patch header.
		const AliBusPatch* Next() const { return fNext; }
		
		/// Sets the next bus patch.
		void SetNext(const AliBusPatch* next) { fNext = next; }
		
		/// Print the contents of the bus patch to screen.
		void Print(const Option_t* opt = "") const;
	
	private:
	
		const AliDspHeader* fDSP;   ///< The DSP this bus patch belongs to.
		const AliBusPatch* fNext;  ///< Next bus patch object in the DSP.
		const AliMUONBusPatchHeaderStruct*  fHeader;  ///< Pointer to bus patch in DDL payload.
		const UInt_t* fData;  ///< Pointer to the bus patch data.
		const Bool_t* fParityOk;  ///< Array of flags indicating if the parity of the given data word in fData is good or not.		
	};
	
	/// Return the number of blocks in the DDL payload.
	UInt_t GetBlockCount() const
	{
		return fDecoder.GetHandler().BlockCount();
	}
	
	/// Return the first block header.
	const AliBlockHeader* GetFirstBlockHeader() const
	{
		return fDecoder.GetHandler().BlockHeader(0);
	}
	
	/// Return the i'th block header or NULL if not found.
	const AliBlockHeader* GetBlockHeader(UInt_t i) const
	{
		return fDecoder.GetHandler().BlockHeader(i);
	}
	
	/// Returns the number of DSPs for the given block number.
	UInt_t GetDspCount(UInt_t block) const
	{
		const AliBlockHeader* b = GetBlockHeader(block);
		return b != NULL ? b->GetDspCount() : 0;
	}
	
	/// Returns the i'th DSP header for the given block number or NULL if not found.
	const AliDspHeader* GetDspHeader(UInt_t block, UInt_t i) const
	{
		const AliBlockHeader* b = GetBlockHeader(block);
		return b != NULL ? b->GetDspHeader(i) : NULL;
	}
	
	/// Returns the number of bus patches for the given block and dsp number.
	UInt_t GetBusPatchCount(UInt_t block, UInt_t dsp) const
	{
		const AliDspHeader* d = GetDspHeader(block, dsp);
		return d != NULL ? d->GetBusPatchCount() : 0;
	}
	
	/// Returns the i'th bus patch for the given block and dsp.
	const AliBusPatch* GetBusPatch(UInt_t block, UInt_t dsp, UInt_t i) const
	{
		const AliDspHeader* d = GetDspHeader(block, dsp);
		return d != NULL ? d->GetBusPatch(i) : NULL;
	}

	/// Returns the current bus patch being decoded or NULL if none found.
	const AliBusPatch* CurrentBusPatch() const
	{
		return (fkCurrentBusPatch != fDecoder.GetHandler().EndOfBusPatch()) ?
			fkCurrentBusPatch : NULL;
	}

	/// Returns the current DSP being decoded or NULL if none found.
	const AliDspHeader* CurrentDspHeader() const
	{
		const AliBusPatch* busPatch = CurrentBusPatch();
		return (busPatch != NULL) ? busPatch->GetDspHeader() : NULL;
	}

	/// Returns the current block header being decoded or NULL if none found.
	const AliBlockHeader* CurrentBlockHeader() const
	{
		const AliDspHeader* dsp = CurrentDspHeader();
		return (dsp != NULL) ? dsp->GetBlockHeader() : NULL;
	}
	
	/// Enable error logging to the raw reader. \note Kept for backward compatibility.
	virtual void EnabbleErrorLogger() { EnableRawReaderErrorLogger(); }
	
	/// Enable error info logging to AliMUONLogger.
	void EnableMUONErrorLogger() { fEnableMUONErrorLogger = kTRUE; }
	
	/// Disable logging to AliMUONLogger.
	void DisableMUONErrorLogger() { fEnableMUONErrorLogger = kFALSE; }
	
	/// Enable error info logging to raw reader.
	void EnableRawReaderErrorLogger() { fEnableRawReaderErrorLogger = kTRUE; }
	
	/// Disable logging to the raw reader.
	void DisableRawReaderErrorLogger() { fEnableRawReaderErrorLogger = kFALSE; }
	
	/// Check if the AliMUONLogger is enabled for error logging.
	Bool_t IsMUONErrorLoggerEnabled() const { return fEnableMUONErrorLogger; }
	
	/// Check if the AliMUONLogger is enabled for error logging.
	Bool_t IsRawReaderErrorLoggerEnabled() const { return fEnableRawReaderErrorLogger; }
	
	/// Returns the logger object. (constant version)
	const AliMUONLogger* GetMUONErrorLogger() const { return fLogger; }
	
	/// Returns the logger object.
	AliMUONLogger* GetMUONErrorLogger() { return fLogger; }
	
	/// Sets the logger object to use. Ownership of the logger object remains with the caller.
	void SetMUONErrorLogger(AliMUONLogger* logger) { fLogger = logger; }
	
	/// Returns the level of detail used in the error messages.
	EDetailLevel GetLoggingDetailLevel() const { return fDetailLevel; }
	
	/// Sets the level of detail used in the error messages.
	void SetLoggingDetailLevel(EDetailLevel level) { fDetailLevel = level; }
	
	/// Number of glitch errors since First() was called
	UInt_t NumberOfGlitchErrors() const { return fTotalNumberOfGlitchErrors; }
	
	/// Number of padding errors since First() was called
	UInt_t NumberOfPaddingErrors() const { return fTotalNumberOfPaddingErrors; }
	
	/// Number of parity errors since First() was called
	UInt_t NumberOfParityErrors() const { return fTotalNumberOfParityErrors; }
	
	/// Number of token lost errors since First() was called
	UInt_t NumberOfTokenLostErrors() const { return fTotalNumberOfTokenLostErrors; }
	
	/// Whether we got glitch errors or not
	Bool_t HasGlitchError() const { return NumberOfGlitchErrors() > 0; }
	
	/// Whether we got padding errors or not
	Bool_t HasPaddingError() const { return NumberOfPaddingErrors() > 0; }
	
	/// Whether we got parity errors or not
	Bool_t HasParityError() const { return NumberOfParityErrors() > 0; }
	
	/// Whether we got token lost errors or not
	Bool_t HasTokenLostError() const { return NumberOfTokenLostErrors() > 0; }

private:

	// Do not allow copying of this class.
        /// Not implemented
	AliMUONRawStreamTrackerHP(const AliMUONRawStreamTrackerHP& stream);
        /// Not implemented
	AliMUONRawStreamTrackerHP& operator = (const AliMUONRawStreamTrackerHP& stream);
	
	/// Return max number of tracker DDLs
	Int_t GetMaxDDL() const { return fgkMaxDDL; }
	
	/// swap method for Power PC
	virtual void Swap(UInt_t* buffer, Int_t size) const;
	
	/// This is the custom event handler (callback interface) class which
	/// unpacks raw data words and fills an internal buffer with decoded digits
	/// as they are decoded by the high performance decoder.
	class AliDecoderEventHandler : public AliMUONTrackerDDLDecoderEventHandler
	{
	public:
	
		/// Default constructor.
		AliDecoderEventHandler();
		/// Default destructor.
		virtual ~AliDecoderEventHandler();
		
		/// Sets the internal arrays based on the maximum number of structures allowed.
		void SetMaxStructs(UInt_t maxBlocks, UInt_t maxDsps, UInt_t maxBusPatches);
		
		/// Sets the raw stream object which should be the parent of this class.
		void SetRawStream(AliMUONRawStreamTrackerHP* rawStream) { fRawStream = rawStream; }
		
		/// Return the number of blocks found in the payload.
		UInt_t BlockCount() const { return fBlockCount; };
		
		/// Return the i'th block structure.
		const AliBlockHeader* BlockHeader(UInt_t i) const
		{
			return i < fBlockCount ? &fBlocks[i] : NULL;
		}

		/// Return the first bus patch decoded.
		const AliBusPatch* FirstBusPatch() const { return fBusPatches; }

		/// Returns the marker to the end of bus patches. i.e. one position past the last bus patch.
		const AliBusPatch* EndOfBusPatch() const { return fEndOfBusPatches; }

		/// Returns the number of parity errors found in the DDL.
		UInt_t ParityErrorCount() const { return fParityErrors; }
		/// Returns the number of glitch errors found in the DDL.
		UInt_t GlitchErrorCount() const { return fGlitchErrors; }
		/// Returns the number of padding errors found in the DDL.
		UInt_t PaddingErrorCount() const { return fPaddingErrors; }
		/// Returns the number of token lost errors found in the DDL.
		UInt_t TokenLostCount() const { return fTokenLostErrors; }
		
		// The following methods are inherited from AliMUONTrackerDDLDecoderEventHandler:
		
		/// New buffer handler.
		void OnNewBuffer(const void* buffer, UInt_t bufferSize);

		/// End of buffer handler marks the end of bus patches.
		void OnEndOfBuffer(const void* /*buffer*/, UInt_t /*bufferSize*/)
		{
			fEndOfBusPatches = fCurrentBusPatch+1;
		}
		
		/// New block handler is called by the decoder whenever a new block
		/// structure is found. We just mark the new block and increment the
		/// internal counter.
		void OnNewBlock(const AliMUONBlockHeaderStruct* header, const void* /*data*/);
		
		/// New DSP handler is called by the decoder whenever a new DSP
		/// structure is found. We just mark the DSP and increment the
		/// appropriate counters.
		void OnNewDSP(const AliMUONDSPHeaderStruct* header, const void* /*data*/);
		
		/// New bus patch handler.
		/// This is called by the high performance decoder when a new bus patch
		/// is found within the DDL payload.
		void OnNewBusPatch(const AliMUONBusPatchHeaderStruct* header, const void* data);
		
		/// Raw data word handler.
		void OnData(UInt_t /*data*/, bool parityError)
		{
			assert( fCurrentParityOkFlag < fParityOk + fMaxChannels );
			*(++fCurrentParityOkFlag) = Bool_t(not parityError);
		}
		
		/// Error handler.
		void OnError(ErrorCode error, const void* location);
	
	private:
	
		// Do not allow copying of this class.
                /// Not implemented
		AliDecoderEventHandler(const AliDecoderEventHandler& /*obj*/);
                /// Not implemented
		AliDecoderEventHandler& operator = (const AliDecoderEventHandler& /*obj*/);

		AliMUONRawStreamTrackerHP* fRawStream; //!< Pointer to the parent raw stream object.
		const void* fBufferStart;   //!< Pointer to the start of the current DDL payload buffer.
		UInt_t fBlockCount;  //!< Number of blocks filled in fBlocks.
		AliBlockHeader* fBlocks;  //!< Array of blocks. [0..fMaxBlocks-1]
		AliDspHeader* fDSPs;      //!< Array of DSPs. [0..fMaxDsps*fMaxBlocks-1]
		AliBusPatch* fBusPatches; //!< Array of bus patches. [0..fMaxBusPatches*fMaxDsps*fMaxBlocks-1]
		AliBusPatch* fEndOfBusPatches;  //!< Marks the last bus patch.
		UInt_t fMaxChannels;   //!< Maximum number of elements that can be stored in fParityOk.
		Bool_t* fParityOk;     //!< Array of flags for indicating if the parity is good for a raw data word.
		AliBlockHeader* fCurrentBlock;  //!< Current block in fBlocks.
		AliDspHeader* fCurrentDSP;      //!< Current DSP in fDSPs.
		AliBusPatch* fCurrentBusPatch;  //!< Current bus patch in fBusPatches.
		Bool_t* fCurrentParityOkFlag;  //!< Current parity flag to be set in fParityOk.
		UInt_t fParityErrors;   //!< Number of parity errors found in DDL.
		UInt_t fGlitchErrors;   //!< Number of glitch errors found in DDL.
		UInt_t fPaddingErrors;  //!< Number of padding errors found in DDL.
		UInt_t fTokenLostErrors;  //!< Number of token lost errors found in DDL.
		UInt_t fMaxBlocks; //!< max number of blocks
		UInt_t fMaxDsps; //!< max number of dsps per block
		UInt_t fMaxBusPatches; //!< max number of buspatches per dsp
	};

	AliRawReader* fRawReader; //!< Pointer to the raw reader
	AliMUONLogger* fLogger; //!< Logger object to store error messages.
	EDetailLevel fDetailLevel;  //!< The logging detail level used in the error messages generated in OnError.
	Bool_t fEnableMUONErrorLogger; //!< whether or not we log errors to AliMUONLogger
	Bool_t fEnableRawReaderErrorLogger; //!< whether or not we log errors to the raw reader.
	Bool_t fWarnings;       //!< Flag indicating if we should generate a warning for errors.
	AliMUONTrackerDDLDecoder<AliDecoderEventHandler> fDecoder;  //!< The decoder for the DDL payload.
	Int_t fDDL;         //!< The current DDL number being handled.
	Int_t fBufferSize;  //!< This is the buffer size in bytes of fBuffer.
	UChar_t* fBuffer;   //!< This is the buffer in which we store the DDL payload read from AliRawReader.
	const AliBusPatch* fkCurrentBusPatch;  //!< The current bus patch being handled by Next().
	const UInt_t* fkCurrentData;  //!< The current data word to return by Next().
	const UInt_t* fkEndOfData;  //!< The last data word in the current bus patch.
	Bool_t fHadError;   //!< Flag indicating if there was a decoding error or not.
	Bool_t fDone;       //!< Flag indicating if the iteration is done or not.
	mutable AliMUONDDLTracker* fDDLObject; //!< Temporary DDL object used by GetDDLTracker() for caching.
	UInt_t fTotalNumberOfGlitchErrors; //!< number of glitch errors since First() was called
	UInt_t fTotalNumberOfParityErrors; //!< number of parity errors since First() was called
	UInt_t fTotalNumberOfPaddingErrors; //!< number of padding errors since First() was called
	UInt_t fTotalNumberOfTokenLostErrors; //!< number of token lost errors since First() was called
	
	static const Int_t fgkMaxDDL; //!< max number of tracker DDLs

	ClassDef(AliMUONRawStreamTrackerHP, 0) // High performance decoder for reading MUON raw digits from tracking chamber DDL data.
};

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

inline const AliMUONRawStreamTrackerHP::AliBusPatch* AliMUONRawStreamTrackerHP::Next()
{
	/// Returns the next batch of decoded channel data.
	if (fkCurrentBusPatch == NULL) return NULL;
	do {
		if (fkCurrentBusPatch != fDecoder.GetHandler().EndOfBusPatch())
			return fkCurrentBusPatch++;
	} while (NextDDL());
	return NULL;
}

inline void AliMUONRawStreamTrackerHP::AliDecoderEventHandler::OnNewBlock(
		const AliMUONBlockHeaderStruct* header, const void* /*data*/
	)
{
	/// New block handler is called by the decoder whenever a new block
	/// structure is found. We just mark the new block and increment the
	/// internal counter.

	assert( header != NULL );
	assert( fBlockCount < fMaxBlocks );
	// Link the block unless it is the first one.
	if (fBlockCount > 0) fCurrentBlock->SetNext(fCurrentBlock+1);
	*(++fCurrentBlock) = AliBlockHeader(fCurrentDSP+1, header);
	fBlockCount++;
}

inline void AliMUONRawStreamTrackerHP::AliDecoderEventHandler::OnNewDSP(
		const AliMUONDSPHeaderStruct* header, const void* /*data*/
	)
{
	/// New DSP handler is called by the decoder whenever a new DSP
	/// structure is found. We just mark the DSP and increment the
	/// appropriate counters.
	
	assert( header != NULL );
	assert( fCurrentBlock->GetDspCount() < fMaxDsps );
	// Link the DSP unless it is the first one.
	if (fCurrentBlock->GetDspCount() > 0) fCurrentDSP->SetNext(fCurrentDSP+1);
	*(++fCurrentDSP) = AliDspHeader(fCurrentBlock, fCurrentBusPatch+1, header);
	fCurrentBlock->IncDspCount();
}

inline void AliMUONRawStreamTrackerHP::AliDecoderEventHandler::OnNewBusPatch(
		const AliMUONBusPatchHeaderStruct* header, const void* data
	)
{
	/// New bus patch handler.
	/// This is called by the high performance decoder when a new bus patch
	/// is found within the DDL payload.

	assert( header != NULL );
	assert( data != NULL );
	assert( fCurrentDSP->GetBusPatchCount() < fMaxBusPatches );
	// Link the bus patch unless it is the first one. 
	if (fCurrentDSP->GetBusPatchCount() > 0) fCurrentBusPatch->SetNext(fCurrentBusPatch+1);
	*(++fCurrentBusPatch) = AliBusPatch(
			fCurrentDSP,
			header,
			reinterpret_cast<const UInt_t*>(data),
			fCurrentParityOkFlag+1
		);
	fCurrentDSP->IncBusPatchCount();
}

#endif  // ALIMUONRAWSTREAMTRACKERHP_H

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