+ /// reading tracker DDL
+ /// store local info into Array
+ /// store only non-empty structures
+
+ // reset TClones
+ fPayload->ResetDDL();
+
+
+ // loop over the two ddl's
+
+ while ( fDDL < fgkMaxDDL ) {
+ GetReader()->Reset();
+ GetReader()->Select("MUONTRG", fDDL, fDDL); //Select the DDL file to be read
+ if (GetReader()->ReadHeader()) break;
+ AliDebug(3,Form("Skipping DDL %d which does not seem to be there",fDDL));
+ ++fDDL;
+ }
+
+ if (fDDL >= fgkMaxDDL) {
+ fDDL = 0;
+ if (IsErrorLogger()) AddErrorMessage();
+ return kFALSE;
+ }
+
+ AliDebug(3, Form("DDL Number %d\n", fDDL ));
+
+ Int_t totalDataWord = GetReader()->GetDataSize(); // in bytes
+
+ Bool_t scalerEvent = GetReader()->GetDataHeader() && GetReader()->GetDataHeader()->GetL1TriggerMessage() & 0x1;
+
+
+ UInt_t *buffer = new UInt_t[totalDataWord/4];
+
+ // check not necessary yet, but for future developments
+ if (!GetReader()->ReadNext((UChar_t*)buffer, totalDataWord)) return kFALSE;
+
+#ifndef R__BYTESWAP
+ Swap(buffer, totalDataWord / sizeof(UInt_t)); // swap needed for mac power pc
+#endif
+
+ fPayload->Decode(buffer, scalerEvent);
+
+
+ fDDL++;
+
+ delete [] buffer;
+
+
+ return kTRUE;