]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ZDC/AliZDCRawStream.h
Updates
[u/mrichter/AliRoot.git] / ZDC / AliZDCRawStream.h
index 9887d51f9966729187e29e17e985e7694b8edba7..ba8a73e00a14e9368cbe507066509e6060274c24 100644 (file)
@@ -13,6 +13,9 @@
 //////////////////////////////////////////////////
 
 #include <TObject.h>
+#include "AliCDBManager.h"
+#include "AliCDBStorage.h"
+#include "AliZDCChMap.h"
 
 class AliRawReader;
 class AliRawDataHeader;
@@ -27,7 +30,7 @@ class AliZDCRawStream: public TObject {
     virtual void ReadChMap();
 
     virtual void ReadCDHHeader();
-    virtual void DecodeScaler() {;}
+    virtual void DecodeScaler();
 
     UInt_t GetRawBuffer()      const {return fBuffer;}
     
@@ -42,33 +45,55 @@ class AliZDCRawStream: public TObject {
     Int_t  GetADCChannel()    const {return fADCChannel;}
     Int_t  GetADCValue()      const {return fADCValue;}
     Int_t  GetADCGain()       const {return fADCGain;}
-
-    Int_t  GetCabledSignal()  const {return fCabledSignal;}
+    
+    // Map from OCDB
+    AliCDBStorage *SetStorage(const char* uri);
+    AliZDCChMap   *GetChMap() const;
+    
+    Int_t  GetNChannelsOn()           const {return fNChannelsOn;}
+    Int_t  GetCabledSignal()           const {return fCabledSignal;}
     Int_t  GetADCModFromMap(Int_t i)   const {return fMapADC[i][0];}
     Int_t  GetADCChFromMap(Int_t i)    const {return fMapADC[i][1];}
     Int_t  GetADCSignFromMap(Int_t i)  const {return fMapADC[i][2];}
     Int_t  GetDetectorFromMap(Int_t i) const {return fMapADC[i][3];}
     Int_t  GetTowerFromMap(Int_t i)    const {return fMapADC[i][4];}
-
+    
+    Bool_t IsCalibration() const {return fIsCalib;}
     Bool_t IsDARCHeader()  const {return fIsDARCHeader;}
     Bool_t IsChMapping()   const {return fIsChMapping;}
     Bool_t IsADCDataWord() const {return fIsADCDataWord;}
     Bool_t IsADCHeader()   const {return fIsADCHeader;}
     Bool_t IsADCEOB()     const {return fIsADCEOB;}
-
+    Bool_t IsUnderflow()   const {return fIsUnderflow;}
+    Bool_t IsOverflow()    const {return fIsOverflow;}
+    
+    UInt_t GetScNWords() const {return fScNWords;}         
+    UInt_t GetScGeo() const {return fScGeo;}       
+    UInt_t GetScTS() const {return fScTS;}         
+    UInt_t GetTriggerNumber() const {return fScTriggerNumber;}
+    
+    void SetNChannelsOn(Int_t val) {fNChannelsOn = val;}
     void SetSector(Int_t i, Int_t val) {fSector[i] = val;}
     void SetMapADCMod(Int_t iraw, Int_t imod) {fMapADC[iraw][0]=imod;}
-    void SetMapADCCh(Int_t iraw, Int_t ich) {fMapADC[iraw][1]=ich;}
+    void SetMapADCCh(Int_t iraw, Int_t ich)   {fMapADC[iraw][1]=ich;}
     void SetMapADCSig(Int_t iraw, Int_t isig) {fMapADC[iraw][2]=isig;}
-    void SetMapDet(Int_t iraw, Int_t idet) {fMapADC[iraw][3]=idet;}
-    void SetMapTow(Int_t iraw, Int_t itow) {fMapADC[iraw][4]=itow;}
+    void SetMapDet(Int_t iraw, Int_t idet)    {fMapADC[iraw][3]=idet;}
+    void SetMapTow(Int_t iraw, Int_t itow)    {fMapADC[iraw][4]=itow;}
+    
+    void SetSODReading(Bool_t iset) {fSODReading = iset;}
     
+    // Error codes in raw data streaming
     enum EZDCRawStreamError{
        kCDHError = 1,
        kDARCError = 2,
        kZDCDataError = 3,
-       kInvalidADCModule = 4};
-
+       kInvalidADCModule = 4,
+       kInvalidSector = 5};
+    
+    // Signal codes for ZDC 
+    // Same codes used in DAQ configuration file
+    // To be changed ONLY IF this file is changed!!! 
+    // **** DO NOT CHANGE THE FOLLOWING LINES!!! ****
     enum ZDCSignal{kNotConnected=0, kVoid=1,
         kZNAC=2, kZNA1=3, kZNA2=4, kZNA3=5, kZNA4=6,
         kZPAC=7, kZPA1=8, kZPA2=9, kZPA3=10, kZPA4=11,
@@ -88,17 +113,21 @@ class AliZDCRawStream: public TObject {
     AliZDCRawStream& operator = (const AliZDCRawStream& stream);
 
     AliRawReader* fRawReader;    // object for reading the raw data
-
+    
+    // Data for buffer decoding
     UInt_t fBuffer;          // DARC header + ADC buffer
     UInt_t fEvType;          // Event type
     Int_t  fPosition;        // bit position in buffer data word
     
+    // Boolean variables indicating data type
     Bool_t fIsCalib;         // True when calibration run
     Bool_t fIsDARCHeader;     // True when DARC header
     Bool_t fIsChMapping;      // True when reading ch. mapping
     Bool_t fIsADCDataWord;    // True when data word
     Bool_t fIsADCHeader;      // True when ADC header
     Bool_t fIsADCEOB;        // True when EOB
+    Bool_t fSODReading;              // True when reading SOD (DA)
+    Bool_t fIsMapRead;               // True if map is already read
     
     // From CDH
     UInt_t fDARCEvBlockLenght;  // DARC block length
@@ -116,13 +145,23 @@ class AliZDCRawStream: public TObject {
     Int_t  fADCChannel;   // ADC channel
     Int_t  fADCValue;    // ADC channel
     Int_t  fADCGain;     // ADC gain (0=high range; 1=low range)
+    Bool_t fIsUnderflow;  // ADC underflow
+    Bool_t fIsOverflow;   // ADC overflow
+    
+    // Scaler
+    UInt_t fScNWords;        // no. of words in scaler event
+    UInt_t fScGeo;           // scaler GEO address
+    UInt_t fScTS;           // ?!?
+    UInt_t fScTriggerNumber; // no. of triggers
+    Bool_t fIsScEventGood;   // true if scaler event is good
     
     // Channel mapping 
+    Int_t  fNChannelsOn;   // No. of signals/ADC ch. used
     Int_t  fNConnCh;       // current mapped ch.
     Int_t  fCabledSignal;  // physics signal (from enum)
     Int_t  fMapADC[48][5]; // ADC map for the current run
         
-    ClassDef(AliZDCRawStream, 5)    // class for reading ZDC raw digits
+    ClassDef(AliZDCRawStream, 9)    // class for reading ZDC raw digits
 };
 
 #endif