]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSRawStreamSPD.cxx
clusterizer,reconstructor + many fixes (Magnus,Stefan)
[u/mrichter/AliRoot.git] / ITS / AliITSRawStreamSPD.cxx
index 2c3300b3eab2d3625f772f7fb0a6829819f9605b..6c0a72d06e8b0009b9dfb7152976be902dc250c7 100644 (file)
@@ -176,6 +176,10 @@ Int_t AliITSRawStreamSPD::ReadCalibHeader() {
   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;
@@ -199,10 +203,10 @@ Int_t AliITSRawStreamSPD::ReadCalibHeader() {
     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), 
@@ -279,10 +283,12 @@ Bool_t AliITSRawStreamSPD::Next() {
       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());
@@ -297,12 +303,12 @@ Bool_t AliITSRawStreamSPD::Next() {
       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());
@@ -311,7 +317,7 @@ Bool_t AliITSRawStreamSPD::Next() {
       }
       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());
@@ -319,7 +325,7 @@ Bool_t AliITSRawStreamSPD::Next() {
       }
       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());
@@ -333,7 +339,7 @@ Bool_t AliITSRawStreamSPD::Next() {
 
     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());
@@ -341,7 +347,7 @@ Bool_t AliITSRawStreamSPD::Next() {
        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());
@@ -350,14 +356,14 @@ Bool_t AliITSRawStreamSPD::Next() {
       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());
@@ -368,7 +374,7 @@ Bool_t AliITSRawStreamSPD::Next() {
 
     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());
@@ -386,13 +392,13 @@ Bool_t AliITSRawStreamSPD::Next() {
 
     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());
@@ -461,7 +467,7 @@ const Char_t* AliITSRawStreamSPD::GetErrorName(UInt_t errorCode) {
   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 "";
 }
 //__________________________________________________________________________