Fixing bug in generating error messages, where the wrong DDL was being indicated.
authorlaphecet <laphecet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 16 Feb 2010 09:01:47 +0000 (09:01 +0000)
committerlaphecet <laphecet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 16 Feb 2010 09:01:47 +0000 (09:01 +0000)
(Artur)

MUON/AliMUONRawStreamTrackerHP.cxx
MUON/AliMUONRawStreamTrackerHP.h
MUON/AliMUONRawStreamTriggerHP.cxx
MUON/AliMUONRawStreamTriggerHP.h

index 16862c2..6aafeba 100644 (file)
@@ -261,6 +261,10 @@ Bool_t AliMUONRawStreamTrackerHP::NextDDL()
        Swap(reinterpret_cast<UInt_t*>(fBuffer), dataSize / sizeof(UInt_t)); // Swap needed for mac power pc.
 #endif
        
+       fDDL++; // Remember to increment index to next DDL before the calls to
+               // fDecoder.Decode since the callback methods of the decoder will
+               // use AliMUONRawStreamTrackerHP::GetDDL()
+       
        bool result = false;
        try
        {
@@ -294,7 +298,6 @@ Bool_t AliMUONRawStreamTrackerHP::NextDDL()
                fkCurrentData = fkEndOfData = NULL;
        }
 
-       fDDL++; // Remember to increment index to next DDL.
        return kTRUE;
 }
 
@@ -820,8 +823,8 @@ void AliMUONRawStreamTrackerHP::AliDecoderEventHandler::OnError(
                        word = *reinterpret_cast<const UInt_t*>(location);
                        message = Form(
                                "Lost token error detected in DSP 0x%X of DDL %d and code %d.",
-        ((word & 0xFFFF0000) >> 16),
-        fRawStream->GetDDL(),
+                               ((word & 0xFFFF0000) >> 16),
+                               fRawStream->GetDDL(),
                                (word & 0xF)
                        );
                        break;
index 4bab93e..9f9be0d 100644 (file)
@@ -94,7 +94,7 @@ public:
        /// Set maximum number of Buspatch per Dsp allowed.
        virtual void SetMaxBus(Int_t bus);
        
-       /// Return number of the current DDL.
+       /// Return number of the current DDL being processed in the range [0..19] or -1 if no DDL set.
        virtual Int_t GetDDL() const { return fDDL - 1; }
        
        /// check error/Warning presence
index 36787db..45cfbad 100644 (file)
@@ -237,6 +237,10 @@ Bool_t AliMUONRawStreamTriggerHP::NextDDL()
        Swap(reinterpret_cast<UInt_t*>(fBuffer), dataSize / sizeof(UInt_t)); // Swap needed for mac power pc.
 #endif
        
+       fDDL++; // Remember to increment index to next DDL before the calls to
+               // fDecoder.Decode since the callback methods of the decoder might
+               // use AliMUONRawStreamTriggerHP::GetDDL()
+       
        // Check if this is a scalar event.
        bool scalerEvent = (GetReader()->GetDataHeader()->GetL1TriggerMessage() & 0x1) == 0x1;
        
@@ -261,7 +265,6 @@ Bool_t AliMUONRawStreamTriggerHP::NextDDL()
        // Update the current local structure pointer.
        fkCurrentLocalStruct = fDecoder.GetHandler().FirstLocalStruct();
 
-       fDDL++; // Remember to increment index to next DDL.
        return kTRUE;
 }
 
index 5ba9a40..3185755 100644 (file)
@@ -71,7 +71,7 @@ public:
        /// Sets the maximum number of local cards in the DDL.
        virtual void SetMaxLoc(Int_t loc);
        
-       /// Return number of the current DDL being handled.
+       /// Return number of the current DDL being handled in the range [0..1] and -1 if no DDL set.
        virtual Int_t GetDDL() const { return fDDL - 1; }
        
        /// check error/Warning presence