First implementation of the raw data error logger
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Jun 2007 14:28:45 +0000 (14:28 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Jun 2007 14:28:45 +0000 (14:28 +0000)
(Christian)

MUON/AliMUONPayloadTracker.cxx
MUON/AliMUONPayloadTracker.h
MUON/AliMUONPayloadTrigger.cxx
MUON/AliMUONPayloadTrigger.h
MUON/AliMUONRawStreamTracker.cxx
MUON/AliMUONRawStreamTracker.h
MUON/AliMUONRawStreamTrigger.cxx
MUON/AliMUONRawStreamTrigger.h

index c0b17a5..8ad6519 100644 (file)
@@ -194,9 +194,10 @@ Bool_t AliMUONPayloadTracker::Decode(UInt_t* buffer, Int_t totalDDLSize)
       if (fDspHeader->GetPaddingWord() == 1) {
        if (buffer[index++] != fDspHeader->GetDefaultPaddingWord())
 
-           AliError(Form("Error in padding word for iBlock %d, iDsp %d, iBus %d\n", 
+           AliWarning(Form("Error in padding word for iBlock %d, iDsp %d, iBus %d\n", 
                          iBlock, iDsp, iBusPatch));
 
+       fPaddingErrors++;
       }
 
       index = indexDsp + totalDspSize;
@@ -226,6 +227,7 @@ void AliMUONPayloadTracker::ResetDDL()
   ///
   fDDLTracker->GetBlkHeaderArray()->Delete();
   fGlitchErrors = 0;
+  fPaddingErrors = 0;
   fParityErrBus.Reset();
 
 }
index bebfef7..89da83a 100644 (file)
@@ -56,6 +56,8 @@ class AliMUONPayloadTracker: public TObject {
     TArrayI GetParityErrBus() const {return fParityErrBus;} // for MOOD
     /// Get number of glitch errors
     Int_t   GetGlitchErrors() const {return fGlitchErrors;}
+    /// Get number of padding word errors
+    Int_t   GetPaddingErrors() const {return fPaddingErrors;}
 
   private :
     /// Not implemented
@@ -82,8 +84,9 @@ class AliMUONPayloadTracker: public TObject {
 
     TArrayI fParityErrBus;                    //!< list of buspatch with at least one parity errors;
     Int_t   fGlitchErrors;                    //!< number of glitch errors;
+    Int_t   fPaddingErrors;                   //!< number of padding word errors;
 
-    ClassDef(AliMUONPayloadTracker, 2)    // base class for reading MUON raw digits
+    ClassDef(AliMUONPayloadTracker, 3)    // base class for reading MUON raw digits
 };
 
 #endif
index 5511f46..9d59a98 100644 (file)
@@ -97,7 +97,7 @@ Bool_t AliMUONPayloadTrigger::Decode(UInt_t *buffer)
 
   if (buffer[index++] != darcHeader->GetEndOfDarc())
 
-      AliError(Form("Wrong end of Darc word %x instead of %x\n",
+      AliWarning(Form("Wrong end of Darc word %x instead of %x\n",
                    buffer[index-1], darcHeader->GetEndOfDarc()));
 
 
@@ -113,7 +113,7 @@ Bool_t AliMUONPayloadTrigger::Decode(UInt_t *buffer)
 
   if (buffer[index++] != darcHeader->GetEndOfGlobal())
 
-  AliError(Form("Wrong end of Global word %x instead of %x\n",
+  AliWarning(Form("Wrong end of Global word %x instead of %x\n",
                buffer[index-1], darcHeader->GetEndOfGlobal()));
 
  
@@ -132,7 +132,7 @@ Bool_t AliMUONPayloadTrigger::Decode(UInt_t *buffer)
 
     if (buffer[index++] != fRegHeader->GetEndOfReg())
 
-      AliError(Form("Wrong end of Reg word %x instead of %x\n",
+      AliWarning(Form("Wrong end of Reg word %x instead of %x\n",
                    buffer[index-1], fRegHeader->GetEndOfReg()));
 
 
@@ -153,7 +153,7 @@ Bool_t AliMUONPayloadTrigger::Decode(UInt_t *buffer)
 
       if (buffer[index++] != fLocalStruct->GetEndOfLocal())
 
-      AliError(Form("Wrong end of local word %x instead of %x\n",
+      AliWarning(Form("Wrong end of local word %x instead of %x\n",
                    buffer[index-1], fLocalStruct->GetEndOfLocal()));
 
       // fill only if card notified
index a194f45..c1dfa11 100644 (file)
@@ -41,6 +41,16 @@ class AliMUONPayloadTrigger: public TObject {
     /// Return pointer for DDL structure
     AliMUONDDLTrigger*      GetDDLTrigger() const {return fDDLTrigger;}
 
+    /// Get number of end of DARC word errors
+    Int_t   GetDarcEoWErrors() const {return fDarcEoWErrors;}
+    /// Get number of end of Global word errors
+    Int_t   GetGlobalEoWErrors() const {return fGlobalEoWErrors;}
+    /// Get number of end of regional word errors
+    Int_t   GetRegEoWErrors() const {return fRegEoWErrors;}
+    /// Get number of end of local word errors
+    Int_t   GetLocalEoWErrors() const {return fLocalEoWErrors;}
+
+
   private :
     /// Not implemented
     AliMUONPayloadTrigger(const AliMUONPayloadTrigger& stream);
@@ -54,7 +64,12 @@ class AliMUONPayloadTrigger: public TObject {
     AliMUONRegHeader*        fRegHeader;    //!< pointer for regional structure
     AliMUONLocalStruct*      fLocalStruct;  //!< pointer to local structure
 
-    ClassDef(AliMUONPayloadTrigger, 1)    // base class for reading MUON trigger rawdata
+    Int_t   fDarcEoWErrors;                 //!< number of end of DARC word errors;
+    Int_t   fGlobalEoWErrors;               //!< number of end of global word errors;
+    Int_t   fRegEoWErrors;                  //!< number of end of regional word errors;
+    Int_t   fLocalEoWErrors;                //!< number of end of local word errors;
+
+    ClassDef(AliMUONPayloadTrigger, 2)    // base class for reading MUON trigger rawdata
 };
 
 #endif
index af2b9d9..e15c27f 100644 (file)
@@ -209,6 +209,8 @@ AliMUONRawStreamTracker::GetNextDDL()
   
   Bool_t ok = fPayload->Decode(buffer, totalDataWord/4);
   
+  AddErrorMessage();
+
   delete[] buffer;
   
   fCurrentDDL = fPayload->GetDDLTracker();
@@ -356,12 +358,14 @@ Bool_t AliMUONRawStreamTracker::NextDDL()
   
   if(!fRawReader->ReadNext((UChar_t*)buffer, totalDataWord))
   {
-    AliError("a memory leak is here");
+    delete[] buffer;
     return kFALSE;
   }
   
   Bool_t ok = fPayload->Decode(buffer, totalDataWord/4);
-  
+
+  AddErrorMessage();
+
   delete[] buffer;
   
   fDDL++;
@@ -383,3 +387,20 @@ void AliMUONRawStreamTracker::SetMaxBlock(Int_t blk)
   /// set regional card number
   fPayload->SetMaxBlock(blk);
 }
+
+//______________________________________________________
+void AliMUONRawStreamTracker::AddErrorMessage()
+{
+/// add message into logger of AliRawReader per event
+
+    for (Int_t i = 0; i < fPayload->GetParityErrors(); ++i)
+       fRawReader->AddMinorErrorLog(kParityErr, Form("Parity error for buspatch %s",  
+                                                     fPayload->GetParityErrBus()[i]));
+
+    for (Int_t i = 0; i < fPayload->GetGlitchErrors(); ++i)
+       fRawReader->AddMajorErrorLog(kGlitchErr, "Glitch error occurs skip event");
+
+    for (Int_t i = 0; i < fPayload->GetPaddingErrors(); ++i)
+       fRawReader->AddMinorErrorLog(kPaddingWordErr, "Padding word error");
+
+}
index c7a54f2..23f1973 100644 (file)
@@ -94,6 +94,17 @@ class AliMUONRawStreamTracker: public TObject {
     Bool_t GetNextDspHeader();
     Bool_t GetNextBusStruct();
 
+    /// add error message into error logger
+    void AddErrorMessage();
+
+    /// error numbers
+    enum rawStreamTrackerError {
+      kGlitchErr      = 1, ///< glitch error 
+      kPaddingWordErr = 2, ///< padding word error
+      kParityErr      = 3  ///< parity error
+    };
+
+
  private:
     AliRawReader*    fRawReader;    ///< object for reading the raw data  
     Int_t  fDDL;          ///< number of DDL    
index 86be359..09bc37a 100644 (file)
@@ -141,11 +141,13 @@ Bool_t AliMUONRawStreamTrigger::NextDDL()
   if (!fRawReader->ReadNext((UChar_t*)buffer, totalDataWord)) return kFALSE; 
   
   fPayload->Decode(buffer);
+  AddErrorMessage();
 
   fDDL++;
 
   delete [] buffer;
 
+
   return kTRUE;
 }
 
@@ -171,3 +173,22 @@ void AliMUONRawStreamTrigger::SetMaxLoc(Int_t loc)
   /// set local card number
   fPayload->SetMaxLoc(loc);
 }
+
+//______________________________________________________
+void AliMUONRawStreamTrigger::AddErrorMessage()
+{
+/// add message into logger of AliRawReader per event
+
+    for (Int_t i = 0; i < fPayload->GetDarcEoWErrors(); ++i)
+       fRawReader->AddMajorErrorLog(kDarcEoWErr, "Wrong end of Darc word structure");
+
+   for (Int_t i = 0; i < fPayload->GetGlobalEoWErrors(); ++i)
+       fRawReader->AddMajorErrorLog(kGlobalEoWErr, "Wrong end of Global word structure");
+
+   for (Int_t i = 0; i < fPayload->GetRegEoWErrors(); ++i)
+       fRawReader->AddMajorErrorLog(kRegEoWErr, "Wrong end of Regional word structure");
+
+   for (Int_t i = 0; i < fPayload->GetLocalEoWErrors(); ++i)
+       fRawReader->AddMajorErrorLog(kLocalEoWErr, "Wrong end of Local word structure");
+
+}
index 34adbc9..9d54b08 100644 (file)
@@ -47,6 +47,18 @@ class AliMUONRawStreamTrigger: public TObject {
     /// Return number of DDL
     Int_t              GetDDL()        const {return fDDL - 1;}
 
+    /// add error message into error logger
+    void AddErrorMessage();
+
+    /// 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);