if (ddlID==-1) { // we may need to read one word to get the blockAttr
if (!ReadNextShort()) return -1;
ddlID = fRawReader->GetDDLID();
+ if(ddlID<0){
+ AliError("fRawReader->GetDDLID() returns a negative value");
+ ddlID=0;
+ }
}
// reset flags and counters
fEqPLBytesRead = 2;
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kTSMtriggerErr,ddlID,-1,-1,errMess.Data());
}
if (fRawReader->TestBlockAttribute(7)) { // bunch crossing difference error bit
- TString errMess = "BC Difference Error Bit Set";
+ TString errMess = "High Multiplicity Event Flag Set";
AliError(errMess.Data());
- fRawReader->AddMajorErrorLog(kBCdiffErr,errMess.Data());
- if (fAdvancedErrorLog) fAdvLogger->ProcessError(kBCdiffErr,ddlID,-1,-1,errMess.Data());
+ fRawReader->AddMajorErrorLog(kHighMultiplicityFlag,errMess.Data());
+ if (fAdvancedErrorLog) fAdvLogger->ProcessError(kHighMultiplicityFlag,ddlID,-1,-1,errMess.Data());
}
// set eq active and the participating half-staves (for access from outside this class),
if (fAdvancedErrorLog) fAdvLogger->AddMessage(errMess.Data());
fDDLID=19;
}
-
+
+ Short_t hs = ((fData & 0x3800)>>11) ; Short_t chip=(fData & 0x000F); // -> for printouts
+
if ((fData & 0xC000) == 0x4000) { // header
if (fHeaderOrTrailerReadLast) {
- TString errMess = "Chip trailer missing";
+ TString errMess = Form("Chip trailer missing - (eq,hs,chip) = (%d,%d,%d)",fDDLID,hs,chip);
AliError(errMess.Data());
fRawReader->AddMajorErrorLog(kTrailerMissingErr,errMess.Data());
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kTrailerMissingErr,fLastDDLID,fEqPLBytesRead,fEqPLChipHeadersRead,errMess.Data());
else if (eventCounter != fEventCounter) {
TString errMess;
if (fEqPLChipHeadersRead==1) {
- errMess = Form("Mismatching event counters between this equipment and the previous: %d != %d",
- eventCounter,fEventCounter);
+ errMess = Form("Mismatching event counters between this equipment and the previous: %d != %d - (eq,hs,chip) = (%d,%d,%d)",
+ eventCounter,fEventCounter,fDDLID,hs,chip);
}
else {
- errMess = Form("Mismatching event counters between this chip header and the previous: %d != %d",
- eventCounter,fEventCounter);
+ errMess = Form("Mismatching event counters between this chip header and the previous: %d != %d - (eq,hs,chip) = (%d,%d,%d)",
+ eventCounter,fEventCounter,fDDLID,hs,chip);
}
fEventCounter = eventCounter;
AliError(errMess.Data());
}
fChipAddr = fData & 0x000F;
if (fChipAddr>9) {
- TString errMess = Form("Overflow chip address %d - set to 0",fChipAddr);
+ TString errMess = Form("Overflow chip address %d - set to 0 (eq,hs) = (%d,%d)",fChipAddr,fDDLID,hs);
AliError(errMess.Data());
fRawReader->AddMajorErrorLog(kChipAddrErr,errMess.Data());
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kChipAddrErr,fDDLID,fEqPLBytesRead,fEqPLChipHeadersRead,errMess.Data());
}
fHalfStaveNr = (fData & 0x3800)>>11;
if (fHalfStaveNr>5 || fRawReader->TestBlockAttribute(fHalfStaveNr)) {
- TString errMess = Form("Half stave number error: %d - set to 0",fHalfStaveNr);
+ TString errMess = Form("Half stave number error: %d - set to 0 - eq %d",fHalfStaveNr,fDDLID);
AliError(errMess.Data());
fRawReader->AddMajorErrorLog(kHSNumberErr,errMess.Data());
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kHSNumberErr,fDDLID,fEqPLBytesRead,fEqPLChipHeadersRead,errMess.Data());
else if ((fData & 0xC000) == 0x0000) { // trailer
if ( (fEqPLBytesRead+fFillOutOfSynch*2)%4 != 0 ) {
- TString errMess = "Fill word is missing";
+ TString errMess = Form("Fill word is missing - (eq,hs,chip) = (%d,%d,%d)",fDDLID,fHalfStaveNr,fChipAddr);
AliError(errMess.Data());
fRawReader->AddMajorErrorLog(kFillMissingErr,errMess.Data());
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kFillMissingErr,fDDLID,fEqPLBytesRead,fEqPLChipHeadersRead,errMess.Data());
else fFillOutOfSynch = kTRUE;
}
if (!fHeaderOrTrailerReadLast) {
- TString errMess = "Trailer without previous header";
+ TString errMess = Form("Trailer without previous header - (eq,hs,chip) = (%d,%d,%d)",fDDLID,fHalfStaveNr,fChipAddr);
AliError(errMess.Data());
fRawReader->AddMajorErrorLog(kTrailerWithoutHeaderErr,errMess.Data());
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kTrailerWithoutHeaderErr,fLastDDLID,fEqPLBytesRead,fEqPLChipHeadersRead,errMess.Data());
fEqPLChipTrailersRead++;
UShort_t hitCount = fData & 0x0FFF;
if (hitCount != fHitCount){
- TString errMess = Form("Number of hits %d, while %d expected",fHitCount,hitCount);
+ TString errMess = Form("Number of hits %d, while %d expected - (eq,hs,chip) = (%d,%d,%d)",fHitCount,hitCount,fDDLID,fHalfStaveNr,fChipAddr);
AliError(errMess.Data());
fRawReader->AddMajorErrorLog(kNumberHitsErr,errMess.Data());
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kNumberHitsErr,fDDLID,fEqPLBytesRead,fEqPLChipHeadersRead,errMess.Data());
}
Bool_t errorBit = fData & 0x1000;
if (errorBit) {
- TString errMess = Form("Trailer error bit set for chip %d,%d,%d",fDDLID,fHalfStaveNr,fChipAddr);
+ TString errMess = Form("Trailer error bit set for chip (eq,hs,chip) = (%d,%d,%d)",fDDLID,fHalfStaveNr,fChipAddr);
AliError(errMess.Data());
fRawReader->AddMajorErrorLog(kTrailerErrorBitErr,errMess.Data());
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kTrailerErrorBitErr,fDDLID,fEqPLBytesRead,fEqPLChipHeadersRead,errMess.Data());
else if ((fData & 0xC000) == 0x8000) { // pixel hit
if (!fHeaderOrTrailerReadLast) {
- TString errMess = "Chip header missing";
+ TString errMess = Form("Chip header missing - (eq,hs,chip) = (%d,%d,%d)",fDDLID,fHalfStaveNr,fChipAddr);
AliError(errMess.Data());
fRawReader->AddMajorErrorLog(kHeaderMissingErr,errMess.Data());
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kHeaderMissingErr,fDDLID,fEqPLBytesRead,fEqPLChipHeadersRead,errMess.Data());
else { // fill word
if ((fData & 0xC000) != 0xC000) {
- TString errMess = "Wrong fill word!";
+ TString errMess = Form("Wrong fill word! - (eq,hs,chip) = (%d,%d,%d)",fDDLID,fHalfStaveNr,fChipAddr);
AliError(errMess.Data());
fRawReader->AddMajorErrorLog(kWrongFillWordErr,errMess.Data());
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kWrongFillWordErr,fDDLID,fEqPLBytesRead,fEqPLChipHeadersRead,errMess.Data());
}
if ( (fEqPLBytesRead+fFillOutOfSynch*2)%4 != 2 ) {
- TString errMess = "Fill word is unexpected";
+ TString errMess = Form("Fill word is unexpected - (eq,hs,chip) = (%d,%d,%d)",fDDLID,fHalfStaveNr,fChipAddr);
AliError(errMess.Data());
fRawReader->AddMajorErrorLog(kFillUnexpectErr,errMess.Data());
if (fAdvancedErrorLog) fAdvLogger->ProcessError(kFillUnexpectErr,fDDLID,fEqPLBytesRead,fEqPLChipHeadersRead,errMess.Data());
else if (errorCode==kTrailerErrorBitErr) return "Trailer Error Bit Set";
else if (errorCode==kLinkRxDetectorFatalErr) return "LinkRx/Detector Fatal Error Bit Set";
else if (errorCode==kTSMtriggerErr) return "TSM Trigger Error Bit Set";
- else if (errorCode==kBCdiffErr) return "BC Difference Error Bit Set";
+ else if (errorCode==kHighMultiplicityFlag) return "High Multiplicity Event Flag Set";
else return "";
}
//__________________________________________________________________________