]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONRawStreamTrigger.h
minor coverity defect: added protection for self-assignment
[u/mrichter/AliRoot.git] / MUON / AliMUONRawStreamTrigger.h
index 34adbc91151a6e4749975e8c329aaefc2f8eb960..07bb52284731502fbfcdc0fcf3b022a6d1829023 100644 (file)
 
 #include <TObject.h>
 #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();
 
-    /// Return maximum number of DDL in DATE file
-    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);
 
-    /// Set object for reading the raw data
-    void SetReader(AliRawReader* rawReader) {fRawReader = rawReader;}
-
     /// Return pointer for DDL structure
     AliMUONDDLTrigger* GetDDLTrigger() const {return fPayload->GetDDLTrigger();}
+
     /// Return number of DDL
-    Int_t              GetDDL()        const {return fDDL - 1;}
+    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
@@ -53,15 +95,29 @@ class AliMUONRawStreamTrigger: public TObject {
     /// Not implemented
     AliMUONRawStreamTrigger& operator = (const AliMUONRawStreamTrigger& stream);
 
-    AliRawReader*    fRawReader;     ///< object for reading the raw data
+    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    
+
 
-    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
 
-    ClassDef(AliMUONRawStreamTrigger, 3)    // base class for reading MUON trigger rawdata
+    static const Int_t  fgkMaxDDL;       ///< maximum number of DDLs
+
+    ClassDef(AliMUONRawStreamTrigger, 4)    // base class for reading MUON trigger rawdata
 };
 
 #endif