ROOT logo
#ifndef ALIMUONVRAWSTREAMTRACKER_H
#define ALIMUONVRAWSTREAMTRACKER_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   AliMUONVRawStreamTracker.h
/// \author Artur Szostak <artursz@iafrica.com>
/// \date   28-11-2007
/// \brief  Declaration of the abstract base class for muon trigger chamber raw stream decoders.
///

#include "AliMUONRawStream.h"

class AliMUONDDLTracker;

class AliMUONVRawStreamTracker : public AliMUONRawStream
{
public:

	/// Default constructor.
	AliMUONVRawStreamTracker();
	
	/// Constructor setting the raw reader.
	AliMUONVRawStreamTracker(AliRawReader* rawReader);
	
	/// Default destructor.
	virtual ~AliMUONVRawStreamTracker();
	
	/// 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) = 0;
	
	/// Return pointer to DDL payload object.
	virtual AliMUONDDLTracker* GetDDLTracker() const = 0;
	
	/// Return maximum number of DDLs
	static Int_t GetMaxDDL() { return fgkMaxDDL; };
	
	/// Return maximum number of blocks per DDL allowed.
	virtual Int_t GetMaxBlock() const = 0;
	/// Return maximum number of Dsp per block allowed.
	virtual Int_t GetMaxDsp()   const = 0;
	/// Return maximum number of Buspatch per Dsp allowed.
	virtual Int_t GetMaxBus()   const = 0;
	
	/// Set maximum number of blocks per DDL allowed.
	virtual void SetMaxBlock(Int_t blk) = 0;
	/// Set maximum number of Dsp per block allowed.
	virtual void SetMaxDsp(Int_t dsp) = 0;
	/// Set maximum number of Buspatch per Dsp allowed.
	virtual void SetMaxBus(Int_t bus) = 0;
	
	/// Return number of the current DDL.
	virtual Int_t GetDDL() const = 0;
	
	/// check error/Warning presence
	virtual Bool_t IsErrorMessage() const = 0;
	
	/// error numbers
	enum rawStreamTrackerError
	{
		kGlitchErr      = 1, ///< glitch error
		kPaddingWordErr = 2, ///< padding word error
		kParityErr      = 3  ///< parity error
	};

protected:	

	static const Int_t fgkMaxDDL;   //!< maximum number of DDLs

private:

	// Do not allow copying of this class.
        /// Not implemented
	AliMUONVRawStreamTracker(const AliMUONVRawStreamTracker& stream);
        /// Not implemented
	AliMUONVRawStreamTracker& operator = (const AliMUONVRawStreamTracker& stream);

	ClassDef(AliMUONVRawStreamTracker, 0) // Base class for reading MUON raw digits from tracking chambers.
};

#endif  // ALIMUONVRAWSTREAMTRACKER_H
 AliMUONVRawStreamTracker.h:1
 AliMUONVRawStreamTracker.h:2
 AliMUONVRawStreamTracker.h:3
 AliMUONVRawStreamTracker.h:4
 AliMUONVRawStreamTracker.h:5
 AliMUONVRawStreamTracker.h:6
 AliMUONVRawStreamTracker.h:7
 AliMUONVRawStreamTracker.h:8
 AliMUONVRawStreamTracker.h:9
 AliMUONVRawStreamTracker.h:10
 AliMUONVRawStreamTracker.h:11
 AliMUONVRawStreamTracker.h:12
 AliMUONVRawStreamTracker.h:13
 AliMUONVRawStreamTracker.h:14
 AliMUONVRawStreamTracker.h:15
 AliMUONVRawStreamTracker.h:16
 AliMUONVRawStreamTracker.h:17
 AliMUONVRawStreamTracker.h:18
 AliMUONVRawStreamTracker.h:19
 AliMUONVRawStreamTracker.h:20
 AliMUONVRawStreamTracker.h:21
 AliMUONVRawStreamTracker.h:22
 AliMUONVRawStreamTracker.h:23
 AliMUONVRawStreamTracker.h:24
 AliMUONVRawStreamTracker.h:25
 AliMUONVRawStreamTracker.h:26
 AliMUONVRawStreamTracker.h:27
 AliMUONVRawStreamTracker.h:28
 AliMUONVRawStreamTracker.h:29
 AliMUONVRawStreamTracker.h:30
 AliMUONVRawStreamTracker.h:31
 AliMUONVRawStreamTracker.h:32
 AliMUONVRawStreamTracker.h:33
 AliMUONVRawStreamTracker.h:34
 AliMUONVRawStreamTracker.h:35
 AliMUONVRawStreamTracker.h:36
 AliMUONVRawStreamTracker.h:37
 AliMUONVRawStreamTracker.h:38
 AliMUONVRawStreamTracker.h:39
 AliMUONVRawStreamTracker.h:40
 AliMUONVRawStreamTracker.h:41
 AliMUONVRawStreamTracker.h:42
 AliMUONVRawStreamTracker.h:43
 AliMUONVRawStreamTracker.h:44
 AliMUONVRawStreamTracker.h:45
 AliMUONVRawStreamTracker.h:46
 AliMUONVRawStreamTracker.h:47
 AliMUONVRawStreamTracker.h:48
 AliMUONVRawStreamTracker.h:49
 AliMUONVRawStreamTracker.h:50
 AliMUONVRawStreamTracker.h:51
 AliMUONVRawStreamTracker.h:52
 AliMUONVRawStreamTracker.h:53
 AliMUONVRawStreamTracker.h:54
 AliMUONVRawStreamTracker.h:55
 AliMUONVRawStreamTracker.h:56
 AliMUONVRawStreamTracker.h:57
 AliMUONVRawStreamTracker.h:58
 AliMUONVRawStreamTracker.h:59
 AliMUONVRawStreamTracker.h:60
 AliMUONVRawStreamTracker.h:61
 AliMUONVRawStreamTracker.h:62
 AliMUONVRawStreamTracker.h:63
 AliMUONVRawStreamTracker.h:64
 AliMUONVRawStreamTracker.h:65
 AliMUONVRawStreamTracker.h:66
 AliMUONVRawStreamTracker.h:67
 AliMUONVRawStreamTracker.h:68
 AliMUONVRawStreamTracker.h:69
 AliMUONVRawStreamTracker.h:70
 AliMUONVRawStreamTracker.h:71
 AliMUONVRawStreamTracker.h:72
 AliMUONVRawStreamTracker.h:73
 AliMUONVRawStreamTracker.h:74
 AliMUONVRawStreamTracker.h:75
 AliMUONVRawStreamTracker.h:76
 AliMUONVRawStreamTracker.h:77
 AliMUONVRawStreamTracker.h:78
 AliMUONVRawStreamTracker.h:79
 AliMUONVRawStreamTracker.h:80
 AliMUONVRawStreamTracker.h:81
 AliMUONVRawStreamTracker.h:82
 AliMUONVRawStreamTracker.h:83
 AliMUONVRawStreamTracker.h:84
 AliMUONVRawStreamTracker.h:85
 AliMUONVRawStreamTracker.h:86
 AliMUONVRawStreamTracker.h:87