Update the RCU trailer reading accordingto the RCU frimware V2 user's manual. Thanks...
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 May 2009 09:53:38 +0000 (09:53 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 May 2009 09:53:38 +0000 (09:53 +0000)
RAW/AliAltroRawStreamV3.cxx
RAW/AliAltroRawStreamV3.h

index ff46c56..71f125a 100644 (file)
@@ -55,7 +55,6 @@ AliAltroRawStreamV3::AliAltroRawStreamV3(AliRawReader* rawReader) :
   fFECERRB(0),
   fERRREG2(0),
   fERRREG3(0),
-  fERRREG4(0),
   fActiveFECsA(0),
   fActiveFECsB(0),
   fAltroCFG1(0),
@@ -97,7 +96,6 @@ AliAltroRawStreamV3::AliAltroRawStreamV3(const AliAltroRawStreamV3& stream) :
   fFECERRB(stream.fFECERRB),
   fERRREG2(stream.fERRREG2),
   fERRREG3(stream.fERRREG3),
-  fERRREG4(stream.fERRREG4),
   fActiveFECsA(stream.fActiveFECsA),
   fActiveFECsB(stream.fActiveFECsB),
   fAltroCFG1(stream.fAltroCFG1),
@@ -135,7 +133,6 @@ AliAltroRawStreamV3& AliAltroRawStreamV3::operator = (const AliAltroRawStreamV3&
   fFECERRB           = stream.fFECERRB;
   fERRREG2           = stream.fERRREG2;
   fERRREG3           = stream.fERRREG3;
-  fERRREG4           = stream.fERRREG4;
   fActiveFECsA       = stream.fActiveFECsA;
   fActiveFECsB       = stream.fActiveFECsB;
   fAltroCFG1         = stream.fAltroCFG1;
@@ -163,7 +160,7 @@ void AliAltroRawStreamV3::Reset()
   fRCUTrailerData = NULL;
   fRCUTrailerSize = 0;
 
-  fFECERRA = fFECERRB = fERRREG2 = fERRREG3 = fERRREG4 = fActiveFECsA = fActiveFECsB = fAltroCFG1 = fAltroCFG2 = 0;
+  fFECERRA = fFECERRB = fERRREG2 = fERRREG3 = fActiveFECsA = fActiveFECsB = fAltroCFG1 = fAltroCFG2 = 0;
 
   if (fRawReader) fRawReader->Reset();
 
@@ -371,25 +368,21 @@ Bool_t AliAltroRawStreamV3::ReadRCUTrailer(UChar_t rcuVer)
       break;
     case 3:
       // ERR_REG3
-      fERRREG3 = parData & 0xFFF;
+      fERRREG3 = parData & 0x1FFFFFF;
       break;
     case 4:
-      // ERR_REG4
-      fERRREG4 = parData & 0xFFF;
-      break;
-    case 5:
       // FEC_RO_A
       fActiveFECsA = parData & 0xFFFF;
       break;
-    case 6:
+    case 5:
       // FEC_RO_B
       fActiveFECsB = parData & 0xFFFF;
       break;
-    case 7:
+    case 6:
       // RDO_CFG1
       fAltroCFG1 = parData & 0xFFFFF;
       break;
-    case 8:
+    case 7:
       // RDO_CFG2
       fAltroCFG2 = parData & 0x1FFFFFF;
      break;
index 1f8633c..f7790a1 100644 (file)
@@ -60,8 +60,8 @@ class AliAltroRawStreamV3: public TObject {
     UInt_t  GetFECERRA() const { return fFECERRA; }
     UInt_t  GetFECERRB() const { return fFECERRB; }
     UShort_t GetERRREG2() const { return fERRREG2; }
-    UShort_t GetNChAddrMismatch() const { return fERRREG3; }
-    UShort_t GetNChLengthMismatch() const { return fERRREG4; }
+    UShort_t GetNChAddrMismatch() const { return (fERRREG3 & 0xFFF); }
+    UShort_t GetNChLengthMismatch() const { return ((fERRREG3 >> 12) & 0x1FFF); }
 
     UShort_t GetActiveFECsA() const { return fActiveFECsA; }
     UShort_t GetActiveFECsB() const { return fActiveFECsB; }
@@ -138,8 +138,7 @@ class AliAltroRawStreamV3: public TObject {
     UInt_t           fFECERRA;      // contains errors related to ALTROBUS transactions
     UInt_t           fFECERRB;      // contains errors related to ALTROBUS transactions
     UShort_t         fERRREG2;      // contains errors related to ALTROBUS transactions or trailer of ALTRO channel block
-    UShort_t         fERRREG3;      // contains number of altro channels skipped due to an address mismatch 
-    UShort_t         fERRREG4;      // contains number of altro channels skipped due to a block length mismatch 
+    UInt_t           fERRREG3;      // contains number of altro channels skipped due to an address mismatch 
     UShort_t         fActiveFECsA;  // bit pattern of active FECs in branch A
     UShort_t         fActiveFECsB;  // bit pattern of active FECs in branch B
     UInt_t           fAltroCFG1;    // ALTROCFG1 register