]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSRawStreamSDD.h
New detector numbering scheme (common for DAQ/HLT/Offline). All the subdetectors...
[u/mrichter/AliRoot.git] / ITS / AliITSRawStreamSDD.h
index 29308c7a08acd64b7f7f8cd5d9be61f6d67bf96a..341b2db619c6853a47eac6c577df6286345af552 100644 (file)
@@ -7,7 +7,8 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 ///
-/// This class provides access to ITS SDD digits in raw data.
+/// This class provides access to ITS SDD digits in raw data 
+/// (default=simulated data).
 ///
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -23,22 +24,45 @@ class AliITSRawStreamSDD: public AliITSRawStream {
 
     virtual Bool_t   Next();
 
-    Int_t            GetAnode() const {return fCoord1;};
-    Int_t            GetTime() const {return fCoord2;};
+    virtual Int_t    GetAnode() const {return fCoord1;}
+    virtual Int_t    GetTime() const {return fCoord2;}
+    virtual Int_t    GetChannel() const {return fChannel;}
+    virtual Int_t    ReadJitter() {return 0;}
+
+    virtual void     SetLowCarlosThreshold(Int_t th, Int_t i) {fLowThreshold[i]=th;}
+
+    static  Int_t    GetModuleNumber(UInt_t iDDL, UInt_t iModule)
+                     {return fgkDDLModuleMap[iDDL][iModule];}
 
-    enum {kDDLOffset = 0x200};    // offset for DDL numbers
     enum {kDDLsNumber = 12};      // number of DDLs in SDD
     enum {kModulesPerDDL = 22};   // number of modules in each DDL 
 
-    static Int_t     GetModuleNumber(UInt_t iDDL, UInt_t iModule)
-      {return fgkDDLModuleMap[iDDL][iModule];}
+  protected:
+    static const Int_t fgkDDLModuleMap[kDDLsNumber][kModulesPerDDL]; //  mapping DDL/module -> module number
+
+    virtual UInt_t   ReadBits();
+    virtual Int_t    DecompAmbra(Int_t value) const;
 
-  private :
-    static const Int_t fgkDDLModuleMap[kDDLsNumber][kModulesPerDDL];  // mapping DDL/module -> module number
+    static const UInt_t fgkCodeLength[8]; //code length
 
     UInt_t           fData;         // data read for file
+    Int_t            fSkip;         // number of skipped words
+    Int_t            fEventId;      // event ID from the header
+    Int_t            fCarlosId;     // carlos ID from the header
+    Int_t            fChannel;      // current channel
+    Int_t            fJitter;          // jitter between L0 and pascal stop (x25ns)
+    ULong64_t        fChannelData[2];  // packed data for the 2 channels
+    UInt_t           fLastBit[2];      // last filled bit in fChannelData
+    UInt_t           fChannelCode[2];  // current channel code
+    Bool_t           fReadCode[2];     // next bits are code or data
+    UInt_t           fReadBits[2];     // number of bits to read
+    Int_t            fTimeBin[2];      // current time bin
+    Int_t            fAnode[2];        // current anode number
+    Int_t            fLowThreshold[2]; // low Carlos threshold
+    
 
-    ClassDef(AliITSRawStreamSDD, 0) // class for reading ITS SDD raw digits
+    ClassDef(AliITSRawStreamSDD, 1) // class for reading ITS SDD raw digits
 };
 
 #endif