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

/*$Id$*/

/// \ingroup raw
/// \class AliMUONPayloadTracker
/// \brief Class for decoding the payload for tracker raw data 
///
//  Author Christian Finck

#include <TObject.h>
#include <TString.h>


class AliMUONDDLTracker;
class AliMUONBusStruct;
class AliMUONDspHeader;
class AliMUONBlockHeader;
class AliMUONLogger;

class AliMUONPayloadTracker: public TObject {
  public :
    AliMUONPayloadTracker();
    virtual ~AliMUONPayloadTracker();

    /// Return maximum number of block per DDL in DATE file
    Int_t GetMaxBlock() const {return fMaxBlock;}
    /// Return maximum number of Dsp per block in DATE file
    Int_t GetMaxDsp()   const {return fMaxDsp;}
    /// Return maximum number of Buspatch per Dsp in DATE file
    Int_t GetMaxBus()   const {return fMaxBus;}

    // check input before assigment
    void SetMaxBlock(Int_t blk);

    /// \brief Set maximum number of Dsp per block in DATE file
    /// does not check, done via BusPatchManager
    void SetMaxDsp(Int_t dsp) {fMaxDsp = dsp;}
    /// \brief Set maximum number of Buspatch per Dsp in DATE file
    /// does not check, done via BusPatchManager
    void SetMaxBus(Int_t bus) {fMaxBus = bus;}

    void ResetDDL();

    Bool_t Decode(UInt_t* buffer, Int_t datasize);

    /// Return pointer for local structure
    AliMUONBusStruct*       GetBusPatchInfo() const {return fBusStruct;}
    /// Return pointer for buspatch structure
    AliMUONDDLTracker*      GetDDLTracker()   const {return fDDLTracker;}

    /// Get number of parity errors
    Int_t   GetParityErrors() const {return fParityErrors;} // for online
    /// Get number of glitch errors
    Int_t   GetGlitchErrors() const {return fGlitchErrors;}
    /// Get number of padding word errors
    Int_t   GetPaddingErrors() const {return fPaddingErrors;}

    /// Get Error logger
    AliMUONLogger* GetErrorLogger() const {return fLog;}
    
    /// set warnings flag
    void DisableWarnings() {fWarnings = kFALSE;} 
   
  private :
    /// Not implemented
    AliMUONPayloadTracker(const AliMUONPayloadTracker& stream);
    /// Not implemented
    AliMUONPayloadTracker& operator = (const AliMUONPayloadTracker& stream);

    Bool_t CheckDataParity();
    void   AddErrorMessage(const Char_t* msg);

    Int_t  fBusPatchId;   ///< entry of buspatch structure
    Int_t  fDspId;        ///< entry of Dsp header
    Int_t  fBlkId;        ///< entry of Block header

    Int_t fMaxDDL;        ///< maximum number of DDL in DATE file
    Int_t fMaxBlock;      ///< maximum number of block per DDL in DATE file
    Int_t fMaxDsp;        ///< maximum number of Dsp per block in DATE file
    Int_t fMaxBus;        ///< maximum number of Buspatch per Dsp in DATE file

    AliMUONDDLTracker*      fDDLTracker;      //!< pointer for buspatch structure
    AliMUONBusStruct*       fBusStruct;       //!< pointer for local structure
    AliMUONBlockHeader*     fBlockHeader;     //!< pointer for block structure 
    AliMUONDspHeader*       fDspHeader;       //!< pointer for dsp structure 

    AliMUONLogger* fLog;                      //!< Map of errors msg;
    Int_t   fParityErrors;                    //!< number of parity errors;
    Int_t   fGlitchErrors;                    //!< number of glitch errors;
    Int_t   fPaddingErrors;                   //!< number of padding word errors;
    Bool_t  fWarnings;                        //!< flag to enable/disable warnings

    ClassDef(AliMUONPayloadTracker, 4)    // base class for reading MUON raw digits
};

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