Changes to allow ADD raw data streaming
authorcoppedis <coppedis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 1 Feb 2010 19:18:19 +0000 (19:18 +0000)
committercoppedis <coppedis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 1 Feb 2010 19:18:19 +0000 (19:18 +0000)
ZDC/AliZDCRawStream.cxx
ZDC/AliZDCRawStream.h

index d72f26b..a8c7ebe 100644 (file)
@@ -352,7 +352,8 @@ Bool_t AliZDCRawStream::Next()
 
   if(!fRawReader->ReadNextInt((UInt_t&) fBuffer)) return kFALSE;
   const int kNch = 48;
-  Int_t kFirstADCGeo=0, kLastADCGeo=3, kScalerGeo=8, kPUGeo=29, kTrigScales=30, kTrigHistory=31;
+  Int_t kFirstADCGeo=0, kLastADCGeo=3, kAddADCGeo=4;
+  Int_t kScalerGeo=8, kPUGeo=29, kTrigScales=30, kTrigHistory=31;
   fIsHeaderMapping = kFALSE; fIsChMapping = kFALSE; 
   fIsADCHeader = kFALSE; fIsADCDataWord = kFALSE; fIsADCEOB = kFALSE;
   fIsUnderflow = kFALSE; fIsOverflow = kFALSE; fIsScalerWord = kFALSE;
@@ -740,6 +741,25 @@ Bool_t AliZDCRawStream::Next()
        //printf("  AliZDCRawStream -> EOB --------------------------\n");
       }
     }//ADC module
+    // ********************************* ADD ADC *********************************
+    else if(fADCModule == kAddADCGeo){
+      // *** ADC header
+      if((fBuffer & 0x07000000) == 0x02000000){
+        fIsADCHeader = kTRUE;
+       fADCNChannels = ((fBuffer & 0x00003f00)>>8);
+       //printf("  AliZDCRawStream -> ADC HEADER: mod.%d has %d ch. \n",fADCModule,fADCNChannels);
+      }
+      // *** ADC data word
+      else if((fBuffer & 0x07000000) == 0x00000000){
+        fIsADCDataWord = kTRUE;
+        fADCChannel = ((fBuffer & 0x1e0000) >> 17);
+        fADCGain = ((fBuffer & 0x10000) >> 16);       
+        fADCValue = (fBuffer & 0xfff);  
+       //
+       //printf("  ADD ADC DATUM -> mod. %d ch. %d gain %d value %d\n",
+       //  fADCModule,fADCChannel,fADCGain,fADCValue);
+      }
+    }
     // ********************************* VME SCALER HEADER *********************************
     else if(fADCModule == kScalerGeo){
       if(fBuffer & 0x04000000 && fIsScHeaderRead==kFALSE){ // *** Scaler header
index a14edb2..e2cd09c 100644 (file)
@@ -77,6 +77,8 @@ class AliZDCRawStream: public TObject {
     virtual void ReadChMap();
 
     virtual void ReadCDHHeader();
+    
+    Bool_t IsAddChannel() const {return fIsADDChannel;}
 
     UInt_t GetRawBuffer()      const {return fBuffer;}
     Int_t  GetReadOutCard()    const {return fReadOutCard;}
@@ -248,10 +250,13 @@ class AliZDCRawStream: public TObject {
     
     // Checks over raw data event quality
     Bool_t fIsADCEventGood; // true if not valid datum not corrupted
-    Bool_t fIsL0BitSet;    // true if L0 bit in history words = 1 
-    Bool_t fIsPileUpEvent; // true if pile up bits in history words = 0
+    Bool_t fIsL0BitSet;     // true if L0 bit in history words = 1 
+    Bool_t fIsPileUpEvent;  // true if pile up bits in history words = 0
+    
+    // ADD part
+    Bool_t fIsADDChannel;   // true if datum is an ADD ADC channel
     
-    ClassDef(AliZDCRawStream, 16)    // class for reading ZDC raw data
+    ClassDef(AliZDCRawStream, 17)    // class for reading ZDC raw data
 };
 
 #endif