ALIROOT-5420 ALIROOT-5683 Fixes in CheckData to take into account the possibility...
authorhristov <Peter.Hristov@cern.ch>
Thu, 11 Dec 2014 10:19:22 +0000 (11:19 +0100)
committerhristov <Peter.Hristov@cern.ch>
Thu, 11 Dec 2014 10:21:53 +0000 (11:21 +0100)
RAW/AliRawReaderDate.cxx
RAW/AliRawReaderRoot.cxx

index effd34a..a45fa76 100644 (file)
@@ -537,16 +537,32 @@ Int_t AliRawReaderDate::CheckData() const
        continue;
       }
 
+      // Here we have to check if we have header v2 or v3
       // check consistency of data size in the data header and in the sub event
       AliRawDataHeader* header = (AliRawDataHeader*) position;
-      if ((position + header->fSize) != end) {
-       if (header->fSize != 0xFFFFFFFF)
-         Warning("ReadHeader",
-                 "raw data size found in the header is wrong (%d != %ld)! Using the equipment size instead !",
-                 header->fSize, end - position);
-       header->fSize = end - position;
-       result |= kErrSize;
+      UChar_t version = header->GetVersion();
+      if (version==2) {
+       if ((position + header->fSize) != end) {
+         if (header->fSize != 0xFFFFFFFF)
+           Warning("CheckData",
+                   "raw data size found in the header V2 is wrong (%d != %ld)! Using the equipment size instead !",
+                   header->fSize, end - position);
+         header->fSize = end - position;
+         result |= kErrSize;
+       }
       }
+      else if (version==3) {
+       AliRawDataHeaderV3 * headerV3 =  (AliRawDataHeaderV3*) position;
+       if ((position + headerV3->fSize) != end) {
+         if (headerV3->fSize != 0xFFFFFFFF)
+           Warning("CheckData",
+                   "raw data size found in the header V3 is wrong (%d != %ld)! Using the equipment size instead !",
+                   headerV3->fSize, end - position);
+         headerV3->fSize = end - position;
+         result |= kErrSize;
+       }
+      }
+
     }
     position = end;
   };
index c849d7c..a969ce8 100644 (file)
@@ -684,7 +684,7 @@ Int_t AliRawReaderRoot::CheckData() const
       subEvent = fEvent->GetSubEvent(subEventIndex++);
 
       // check the magic word of the sub event
-      if (!fSubEvent->GetHeader()->IsValid()) {
+      if (fSubEvent && !fSubEvent->GetHeader()->IsValid()) {
        result |= kErrMagic;
        return result;
       }
@@ -714,16 +714,33 @@ Int_t AliRawReaderRoot::CheckData() const
        continue;
       }
 
+      // Here we have to check if we have header v2 or v3
       // check consistency of data size in the header and in the equipment
       AliRawDataHeader* header = (AliRawDataHeader*) position;
-      if ((position + header->fSize) != end) {
-       if (header->fSize != 0xFFFFFFFF)
-         Warning("ReadHeader",
-                 "Equipment %d : raw data size found in the header is wrong (%d != %ld)! Using the equipment size instead !",
-                 equipment->GetEquipmentHeader()->GetId(),header->fSize, end - position);
-       header->fSize = end - position;
-       result |= kErrSize;
+      UChar_t version = header->GetVersion();
+      if (version==2) {
+       if ((position + header->fSize) != end) {
+         if (header->fSize != 0xFFFFFFFF)
+           Warning("CheckData",
+                   "Equipment %d : raw data size found in the header V2 is wrong (%d != %ld)! Using the equipment size instead !",
+                   equipment->GetEquipmentHeader()->GetId(),header->fSize, end - position);
+         header->fSize = end - position;
+         result |= kErrSize;
+       }
+      }
+      else if (version==3) {
+
+       AliRawDataHeaderV3 * headerV3 =  (AliRawDataHeaderV3*) position;
+       if ((position + headerV3->fSize) != end) {
+         if (headerV3->fSize != 0xFFFFFFFF)
+           Warning("CheckData",
+                   "Equipment %d : raw data size found in the header V3 is wrong (%d != %ld)! Using the equipment size instead !",
+                   equipment->GetEquipmentHeader()->GetId(),headerV3->fSize, end - position);
+         headerV3->fSize = end - position;
+         result |= kErrSize;
+       }
       }
+      
     }
     position = end;
   };