outfile->WriteBuffer((char*)(&header),sizeof(header));
- //first 9 "dummy" words to be skipped
- for(Int_t iw=0;iw<9;iw++){
- if(iw==0 || iw==8) retcode = AliBitPacking::PackWord(0xFFFFFFFF,skippedword,0,31);
- else retcode = AliBitPacking::PackWord(2,skippedword,0,31);
- outfile->WriteBuffer((char*)(&skippedword),sizeof(skippedword));
- }
+ //first 1 "dummy" word to be skipped
+ retcode = AliBitPacking::PackWord(0xFFFFFFFF,skippedword,0,31);
+ outfile->WriteBuffer((char*)(&skippedword),sizeof(skippedword));
+
//Loops over Modules of a particular DDL
for (Int_t mod=0; mod<AliITSRawStreamSDD::kModulesPerDDL; mod++){
Int_t moduleNumber = AliITSRawStreamSDD::GetModuleNumber(i, mod);
}
}
AliDebug(1,"entering MakeRaws\n");
- rawReader->RequireHeader(kFALSE);
rawReader->SelectEvents(7);
rawReader->SelectEquipment(17,fgkeqOffset+1,fgkeqOffset + fgkDDLidRange);
rawReader->Reset();
if(entries != 0)
AliDebug(1,Form("histo %d, name %s , entries %d ",i,GetRawsData(i)->GetName(),entries));
}
- rawReader->RequireHeader(kTRUE);
}
}
if(!kSkip) return kSkip;
}
- if ((fChannel < 0) || (fLastBit[fCarlosId][fChannel] < fReadBits[fCarlosId][fChannel])) {
-
+ if ((fChannel < 0) || (fCarlosId < 0) || (fChannel >= 2) || (fCarlosId >= kModulesPerDDL) || (fLastBit[fCarlosId][fChannel] < fReadBits[fCarlosId][fChannel]) ) {
if (!fRawReader->ReadNextInt(fData)) return kFALSE; // read next word
-
ddln = fRawReader->GetDDLID();
if(ddln!=fDDL) {
Reset();
if(ddln < 0 || ddln > (kDDLsNumber-1)) ddln = 0;
fChannel = -1;
- if((fData >> 16) == 0x7F00){ // jitter word for data since october 2007
+ if((fData >> 16) == 0x7F00 ||(fData >> 4) == 0xFF00000){ // modif!!!!!
for(Int_t i=0;i<kDDLsNumber;i++){fSkip[i]=0;}
fResetSkip=0;
fEndWords=0;
if(fEndWords==12) continue; // out of event
fCarlosId = fNfifo[fData-fIFifoWord[0]];
} else if(fData==0x3FFFFFFF){ // Carlos footer
- fICountFoot[fCarlosId]++; // stop before the last word (last word=jitter)
- if(fICountFoot[fCarlosId]==3){
- fCompletedModule=kTRUE;
- return kTRUE;
+ if(fCarlosId>=0 && fCarlosId<kModulesPerDDL){
+ fICountFoot[fCarlosId]++; // stop before the last word (last word=jitter)
+ if(fICountFoot[fCarlosId]==3){
+ fCompletedModule=kTRUE;
+ // printf("Completed module %d DDL %d\n",fCarlosId,ddln);
+ return kTRUE;
+ }
}
} else if(fData==0x3F1F1F1F){ // CarlosRX footer
fEndWords++;
}
} else if (nData30 == 0x02 || nData30 == 0x03) {
fChannel = nData30-2;
- fChannelData[fCarlosId][fChannel] +=
- (ULong64_t(fData & 0x3FFFFFFF) << fLastBit[fCarlosId][fChannel]);
- fLastBit[fCarlosId][fChannel] += 30;
+ if(fCarlosId>=0 && fChannel>=0 && fCarlosId <kModulesPerDDL && fChannel<2){
+ fChannelData[fCarlosId][fChannel] +=
+ (ULong64_t(fData & 0x3FFFFFFF) << fLastBit[fCarlosId][fChannel]);
+ fLastBit[fCarlosId][fChannel] += 30;
+ }
} else { // unknown data format
fRawReader->AddMajorErrorLog(kDataFormatErr,Form("Invalid data %8.8x",fData));
AliWarning(Form("invalid data: %8.8x\n", fData));
}
if (fNCarlos == 8 && fCarlosId >= 8) continue; // old data, fNCarlos = 8;
-
- fModuleID = fgkDDLModuleMap[fRawReader->GetDDLID()][fCarlosId];
-
+ if(fCarlosId>=0 && fCarlosId <kModulesPerDDL){
+ fModuleID = fgkDDLModuleMap[ddln][fCarlosId];
+ }
} else { // decode data
if (fReadCode[fCarlosId][fChannel]) {// read the next code word
fChannelCode[fCarlosId][fChannel] = ReadBits();
}
Bool_t AliITSRawStreamSDD::ResetSkip(Int_t ddln){
- // skip the 9 DDL header words
+ // skip the 1 DDL header word = 0xffffffff
Bool_t startCount=kFALSE;
- while (fSkip[ddln] < 9) {
+ while (fSkip[ddln] < 1) {
if (!fRawReader->ReadNextInt(fData)) {
return kFALSE;
}