X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONRawStreamTrigger.h;h=27174a1a4d9ba5c592724e3c87eb3a7b37ee032b;hb=dca193e62097e0fc043da9f51e4b5aa81ce01202;hp=7f2792015aa45653f752513a12a1ad38b1a76c00;hpb=241560c2fc1a54248e662cbf5123bc418bbdf6db;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONRawStreamTrigger.h b/MUON/AliMUONRawStreamTrigger.h index 7f2792015aa..27174a1a4d9 100644 --- a/MUON/AliMUONRawStreamTrigger.h +++ b/MUON/AliMUONRawStreamTrigger.h @@ -5,64 +5,120 @@ /*$Id$*/ -/// \ingroup base +/// \ingroup raw /// \class AliMUONRawStreamTrigger /// \brief Class for reading MUON raw digits /// -/// \author Christian Finck -/// -/////////////////////////////////////////////////////////////////////////////// -/// -/// This class provides access to MUON digits in raw data. -/// -/////////////////////////////////////////////////////////////////////////////// +// Author: Christian Finck #include -#include #include "AliMUONPayloadTrigger.h" +#include "AliMUONVRawStreamTrigger.h" +class TArrayS; class AliRawReader; class AliMUONDDLTrigger; +class AliMUONDarcHeader; +class AliMUONRegkHeader; +class AliMUONLocalStruct; - -class AliMUONRawStreamTrigger: public TObject { +class AliMUONRawStreamTrigger: public AliMUONVRawStreamTrigger { public : AliMUONRawStreamTrigger(); AliMUONRawStreamTrigger(AliRawReader* rawReader); virtual ~AliMUONRawStreamTrigger(); - virtual Bool_t Next(); + /// Initialize iterator + void First(); + + /// Returns current DDL object during iteration + AliMUONDDLTrigger* CurrentDDL() const { return fCurrentDDL; } + + /// Returns current DarcHeader object during iteration + AliMUONDarcHeader* CurrentDarcHeader() const { return fCurrentDarcHeader; } + + /// Returns current RegHeader object during iteration + AliMUONRegHeader* CurrentRegHeader() const { return fCurrentRegHeader; } + + /// Returns current LocalStruct object during iteration + AliMUONLocalStruct* CurrentLocalStruct() const { return fCurrentLocalStruct; } + + /// Advance one step in the iteration. Returns false if finished. + virtual Bool_t Next(UChar_t& id, UChar_t& dec, Bool_t& trigY, + UChar_t& yPos, UChar_t& sXDev, UChar_t& xDev, + UChar_t& xPos, Bool_t& triggerY, Bool_t& triggerX, + TArrayS& xPattern, TArrayS& yPattern); + + virtual Bool_t NextDDL(); - Int_t GetMaxDDL() const {return fMaxDDL;} + /// Return maximum number of DDLs + Int_t GetMaxDDL() const {return fgkMaxDDL;} + /// Return maximum number of regional cards in DATE file Int_t GetMaxReg() const {return fPayload->GetMaxReg();} + /// Return maximum number of local cards in DATE file Int_t GetMaxLoc() const {return fPayload->GetMaxLoc();} - - void SetMaxDDL(Int_t ddl); - void SetMaxReg(Int_t reg); + //void SetMaxReg(Int_t reg); void SetMaxLoc(Int_t loc); + /// Return pointer for DDL structure + AliMUONDDLTrigger* GetDDLTrigger() const {return fPayload->GetDDLTrigger();} - void SetReader(AliRawReader* rawReader) {fRawReader = rawReader;} + /// Return number of DDL + Int_t GetDDL() const {return fDDL - 1;} - AliMUONDDLTrigger* GetDDLTrigger() const {return fPayload->GetDDLTrigger();} - Int_t GetDDL() const {return fDDL - 1;} + /// Return pointer for payload + AliMUONPayloadTrigger* GetPayLoad() const {return fPayload;} + + /// Whether the iteration is finished or not + Bool_t IsDone() const; + + /// add error message into error logger + void AddErrorMessage(); + + /// Disable Warnings + void DisableWarnings() {fPayload->DisableWarnings();} + + /// error numbers + enum rawStreamTriggerError { + kDarcEoWErr = 6, ///< end of Darc word error + kGlobalEoWErr = 7, ///< end of Global word error + kRegEoWErr = 8, ///< end of Regional word error + kLocalEoWErr = 9 ///< end of local word error + + }; private : + /// Not implemented + AliMUONRawStreamTrigger(const AliMUONRawStreamTrigger& stream); + /// Not implemented + AliMUONRawStreamTrigger& operator = (const AliMUONRawStreamTrigger& stream); + + Bool_t GetNextDDL(); + Bool_t GetNextRegHeader(); + Bool_t GetNextLocalStruct(); + + private: - AliRawReader* fRawReader; ///< object for reading the raw data AliMUONPayloadTrigger* fPayload; ///< pointer to payload decoder + AliMUONDDLTrigger* fCurrentDDL; //!< for iterator: current ddl ptr + Int_t fCurrentDDLIndex; //!< for iterator: current ddl index + AliMUONDarcHeader* fCurrentDarcHeader; //!< for iterator: current darc ptr + AliMUONRegHeader* fCurrentRegHeader; //!< for iterator: current reg ptr + Int_t fCurrentRegHeaderIndex; //!< for iterator: current reg index + AliMUONLocalStruct* fCurrentLocalStruct; //!< for iterator: current local ptr + Int_t fCurrentLocalStructIndex; //!< for iterator: current local index + Bool_t fLocalStructRead; //!< flag for read out local structure + Int_t fDDL; //!< number of DDL + - Int_t fDDL; ///< number of DDL - Int_t fSubEntries; ///< entries of buspatch structure Bool_t fNextDDL; ///< flag for next DDL to be read - Int_t fMaxDDL; ///< maximum number of DDL in DATE file + Bool_t fEnableErrorLogger; //!< flag to enable the error info logger - AliMUONRawStreamTrigger(const AliMUONRawStreamTrigger& stream); - AliMUONRawStreamTrigger& operator = (const AliMUONRawStreamTrigger& stream); + static const Int_t fgkMaxDDL; ///< maximum number of DDLs - ClassDef(AliMUONRawStreamTrigger, 3) // base class for reading MUON trigger rawdata + ClassDef(AliMUONRawStreamTrigger, 4) // base class for reading MUON trigger rawdata }; #endif