]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Increase the speed of SDD raw data decoding (F.Prino)
authorprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 5 Sep 2008 23:51:52 +0000 (23:51 +0000)
committerprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 5 Sep 2008 23:51:52 +0000 (23:51 +0000)
ITS/AliITSRawStreamSDD.cxx
ITS/AliITSRawStreamSDD.h

index 6cca48d4525382c3cb4695159685b86c73a227f9..c0ad643ef65fdde1e35198bf1a69bd7378ae3db7 100644 (file)
@@ -38,7 +38,6 @@ fEventId(0),
 fCarlosId(-1),
 fChannel(0),
 fJitter(0),
-fResetSkip(0),
 fEightBitSignal(0),
 fDecompressAmbra(kTRUE)
 {
@@ -68,7 +67,6 @@ fEventId(0),
 fCarlosId(-1),
 fChannel(0),
 fJitter(0),
-fResetSkip(0),
 fEightBitSignal(0),
 fDecompressAmbra(kTRUE)
 {
@@ -126,20 +124,15 @@ Bool_t AliITSRawStreamSDD::Next()
   fCompletedModule=kFALSE;
 
   while (kTRUE) {
-    if(fResetSkip==0){
-      Bool_t kSkip = SkipHeaderWord();
-      fResetSkip=1;
-      if(!kSkip) return kSkip;
-    }
   
     if ((fChannel < 0) || (fCarlosId < 0) || (fChannel >= 2) || (fCarlosId >= kModulesPerDDL) || (fLastBit[fCarlosId][fChannel] < fReadBits[fCarlosId][fChannel]) ) {
       if (!fRawReader->ReadNextInt(fData)) return kFALSE;  // read next word
 
 
-      fChannel = -1;
       if((fData >> 16) == 0x7F00){ // jitter word
-       fResetSkip=0;
        Reset();
+       Bool_t kSkip = SkipHeaderWord();
+       if(!kSkip) return kSkip;        
        continue;
       }
 
@@ -178,13 +171,13 @@ Bool_t AliITSRawStreamSDD::Next()
        // JTAG word -- do nothing
       } else {                               // unknown data format
        fRawReader->AddMajorErrorLog(kDataFormatErr,Form("Invalid data %8.8x",fData));
-       AliWarning(Form("Invalid data: %8.8x\n", fData));
+       AliWarning(Form("Invalid data: %08X\n", fData));
        return kFALSE;
       }
       
       if(fCarlosId>=0 && fCarlosId <kModulesPerDDL){
        Int_t nDDL=fRawReader->GetDDLID();
-        fModuleID = GetModuleNumber(nDDL,fCarlosId);
+       fModuleID = GetModuleNumber(nDDL,fCarlosId);
       }
     } else {  // decode data
       if (fReadCode[fCarlosId][fChannel]) {// read the next code word
@@ -228,9 +221,9 @@ void AliITSRawStreamSDD::Reset(){
       fReadBits[ic][i]=3;
       fTimeBin[ic][i]=0;
       fAnode[ic][i]=0;     
+      fICountFoot[ic]=0;
     }
   }
-  for(Int_t i=0;i<kModulesPerDDL;i++) fICountFoot[i]=0;
 }
 
 //______________________________________________________________________
index 7ef3a0b9d4f4ff61a663b0da8762a8454d5fe07c..a17bc97519ddb929ec79dacc5f8a48003c4fa63a 100644 (file)
@@ -84,11 +84,10 @@ class AliITSRawStreamSDD: public AliITSRawStream {
     UInt_t           fICarlosWord[kCarlosWords]; // Carlos words
     UInt_t           fIFifoWord[kFifoWords];     // FIFO words
     Int_t            fICountFoot[kModulesPerDDL]; // counter for carlos footer words
-    Int_t            fResetSkip;     //if it is 0, the ResetSkip Funcion is called
     Int_t            fEightBitSignal;    // signal at 8 bit
     Bool_t           fDecompressAmbra; //flag to switch off decompression
 
-    ClassDef(AliITSRawStreamSDD, 12) // class for reading ITS SDD raw digits
+    ClassDef(AliITSRawStreamSDD, 13) // class for reading ITS SDD raw digits
 };
 
 #endif