ROOT logo
#ifndef ALIMUONRAWSTREAM_H
#define ALIMUONRAWSTREAM_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup raw
/// \class AliMUONRawStream
/// \brief Base class for reading MUON raw digits
///
//  Author: Christian Finck

#include <TObject.h>

class AliRawReader;

class AliMUONRawStream: public TObject {
  public :
    AliMUONRawStream();
    AliMUONRawStream(AliRawReader* rawReader);
    virtual ~AliMUONRawStream();

    /// Initialize iterator
    virtual void First() {return;} // not yet virtual pure, waiting for trigger
    
    /// DDL iterator 
    virtual Bool_t NextDDL() = 0;

    /// Whether the iteration is finished or not
    virtual Bool_t IsDone() const {return kTRUE;} // not yet virtual pure, waiting for trigger

    /// add error message into error logger
    virtual void AddErrorMessage() = 0;

    /// Set object for reading the raw data
    virtual void SetReader(AliRawReader* rawReader) {fRawReader = rawReader;}

    /// Get object for reading the raw data
    virtual AliRawReader* GetReader() {return fRawReader;}

    /// Enable error info logger
    virtual void EnabbleErrorLogger() {fEnableErrorLogger = kTRUE;}

    /// Check if error info logger enable
    virtual Bool_t IsErrorLogger() const {return fEnableErrorLogger;}

    /// swap method for Power PC
    virtual void Swap(UInt_t *buffer, Int_t size) const;


  private :
    /// Not implemented
    AliMUONRawStream(const AliMUONRawStream& stream);
    /// Not implemented
    AliMUONRawStream& operator = (const AliMUONRawStream& stream);

    typedef struct {
     UInt_t fB1:8; ///< first byte word
     UInt_t fB2:8; ///< second byte word
     UInt_t fB3:8; ///< third byte word
     UInt_t fB4:8; ///< fourth byte word
    } RawWord;

    AliRawReader* fRawReader;    //!< object for reading the raw data  
    Bool_t fEnableErrorLogger;   //!< flag to enable the error info logger
    
    ClassDef(AliMUONRawStream, 1)    // base class for reading MUON raw digits
};

#endif
 AliMUONRawStream.h:1
 AliMUONRawStream.h:2
 AliMUONRawStream.h:3
 AliMUONRawStream.h:4
 AliMUONRawStream.h:5
 AliMUONRawStream.h:6
 AliMUONRawStream.h:7
 AliMUONRawStream.h:8
 AliMUONRawStream.h:9
 AliMUONRawStream.h:10
 AliMUONRawStream.h:11
 AliMUONRawStream.h:12
 AliMUONRawStream.h:13
 AliMUONRawStream.h:14
 AliMUONRawStream.h:15
 AliMUONRawStream.h:16
 AliMUONRawStream.h:17
 AliMUONRawStream.h:18
 AliMUONRawStream.h:19
 AliMUONRawStream.h:20
 AliMUONRawStream.h:21
 AliMUONRawStream.h:22
 AliMUONRawStream.h:23
 AliMUONRawStream.h:24
 AliMUONRawStream.h:25
 AliMUONRawStream.h:26
 AliMUONRawStream.h:27
 AliMUONRawStream.h:28
 AliMUONRawStream.h:29
 AliMUONRawStream.h:30
 AliMUONRawStream.h:31
 AliMUONRawStream.h:32
 AliMUONRawStream.h:33
 AliMUONRawStream.h:34
 AliMUONRawStream.h:35
 AliMUONRawStream.h:36
 AliMUONRawStream.h:37
 AliMUONRawStream.h:38
 AliMUONRawStream.h:39
 AliMUONRawStream.h:40
 AliMUONRawStream.h:41
 AliMUONRawStream.h:42
 AliMUONRawStream.h:43
 AliMUONRawStream.h:44
 AliMUONRawStream.h:45
 AliMUONRawStream.h:46
 AliMUONRawStream.h:47
 AliMUONRawStream.h:48
 AliMUONRawStream.h:49
 AliMUONRawStream.h:50
 AliMUONRawStream.h:51
 AliMUONRawStream.h:52
 AliMUONRawStream.h:53
 AliMUONRawStream.h:54
 AliMUONRawStream.h:55
 AliMUONRawStream.h:56
 AliMUONRawStream.h:57
 AliMUONRawStream.h:58
 AliMUONRawStream.h:59
 AliMUONRawStream.h:60
 AliMUONRawStream.h:61
 AliMUONRawStream.h:62
 AliMUONRawStream.h:63
 AliMUONRawStream.h:64
 AliMUONRawStream.h:65
 AliMUONRawStream.h:66
 AliMUONRawStream.h:67
 AliMUONRawStream.h:68
 AliMUONRawStream.h:69
 AliMUONRawStream.h:70
 AliMUONRawStream.h:71