]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONRawStreamTrigger.h
Fix histo name
[u/mrichter/AliRoot.git] / MUON / AliMUONRawStreamTrigger.h
index 30c307f00f1fd9d4506b8c9c7cd596c38f56aef5..27174a1a4d9ba5c592724e3c87eb3a7b37ee032b 100644 (file)
 /// \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 <TObject.h>
-#include <TClonesArray.h>
+#include "AliMUONPayloadTrigger.h"
+#include "AliMUONVRawStreamTrigger.h"
+class TArrayS;
 
 class AliRawReader;
 class AliMUONDDLTrigger;
+class AliMUONDarcHeader;
+class AliMUONRegkHeader;
 class AliMUONLocalStruct;
-class AliMUONRegHeader;
 
-class AliMUONRawStreamTrigger: public TObject {
+class AliMUONRawStreamTrigger: public AliMUONVRawStreamTrigger {
   public :
     AliMUONRawStreamTrigger();
     AliMUONRawStreamTrigger(AliRawReader* rawReader);
-    AliMUONRawStreamTrigger(const AliMUONRawStreamTrigger& stream);
-    AliMUONRawStreamTrigger& operator = (const AliMUONRawStreamTrigger& stream);
     virtual ~AliMUONRawStreamTrigger();
 
-    virtual Bool_t   Next();
-    virtual Bool_t   NextDDL();
-    virtual void     ResetDDL();
+    /// 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);
+
 
-    Int_t GetMaxDDL() const {return fMaxDDL;}
-    Int_t GetMaxReg() const {return fMaxReg;}
-    Int_t GetMaxLoc() const {return fMaxLoc;}
+    virtual Bool_t   NextDDL();
 
+    /// 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;}
 
-    AliMUONLocalStruct*     GetLocalInfo()  const {return fLocalStruct;}
-    AliMUONDDLTrigger*      GetDDLTrigger() const {return fDDLTrigger;}
-    Int_t                   GetDDL()        const {return fDDL - 1;}
+    /// Return pointer for payload
+    AliMUONPayloadTrigger*  GetPayLoad()    const {return fPayload;}
 
-  protected :
+    /// Whether the iteration is finished or not
+    Bool_t IsDone() const;
 
-    AliRawReader*    fRawReader;    ///< object for reading the raw data
-    Int_t  fDDL;          ///< number of DDL
-    Int_t  fSubEntries;   ///< entries of buspatch structure
-    Bool_t fNextDDL;      ///< flag for next DDL to be read
+    /// 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
 
-    Int_t fMaxDDL;        ///< maximum number of DDL in DATE file
-    Int_t fMaxReg;        ///< maximum number of regional cards in DATE file
-    Int_t fMaxLoc;        ///< maximum number of local cards in DATE file
+    };
+
+  private :
+    /// Not implemented
+    AliMUONRawStreamTrigger(const AliMUONRawStreamTrigger& stream);
+    /// Not implemented
+    AliMUONRawStreamTrigger& operator = (const AliMUONRawStreamTrigger& stream);
+
+    Bool_t GetNextDDL();
+    Bool_t GetNextRegHeader();
+    Bool_t GetNextLocalStruct();
+
+ private:
+
+    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    
+
+
+    Bool_t fNextDDL;      ///< flag for next DDL to be read
+    Bool_t fEnableErrorLogger; //!< flag to enable the error info logger
 
-    AliMUONDDLTrigger*       fDDLTrigger;   //!< pointer for DDL structure
-    AliMUONRegHeader*        fRegHeader;    //!< pointer for regional structure
-    AliMUONLocalStruct*      fLocalStruct;  //!< pointer to local structure
+    static const Int_t  fgkMaxDDL;       ///< maximum number of DDLs
 
-    ClassDef(AliMUONRawStreamTrigger, 2)    // base class for reading MUON trigger rawdata
+    ClassDef(AliMUONRawStreamTrigger, 4)    // base class for reading MUON trigger rawdata
 };
 
 #endif