ROOT logo
#ifndef ALIITSRAWSTREAMSDDCOMPRESSED_H
#define ALIITSRAWSTREAMSDDCOMPRESSED_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

///////////////////////////////////////////////////////////////////
//                                                               //
// Class to decode compressed SDD Raw Data format                //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

#include "AliITSRawStream.h"
#include "AliITSDDLModuleMapSDD.h"

class AliRawReader;


class AliITSRawStreamSDDCompressed: public AliITSRawStream {
  public :
    AliITSRawStreamSDDCompressed(AliRawReader* rawReader);
    AliITSRawStreamSDDCompressed(const AliITSRawStreamSDDCompressed& rs);
    AliITSRawStreamSDDCompressed& operator=(const AliITSRawStreamSDDCompressed& rs);
    virtual ~AliITSRawStreamSDDCompressed();

    virtual Bool_t   Next();

    virtual Int_t    GetAnode() const {return fCoord1;}
    virtual Int_t    GetTime() const {return fCoord2;}
    virtual Int_t    GetChannel() const {return fChannel;}
    virtual Int_t    GetJitter() const {return fJitter;}
    virtual Int_t    GetCarlosId() const {return fCarlosId;}
    virtual UInt_t   GetDataWord() const {return fData;}

    virtual void SetADCEncoded(Bool_t fl=kTRUE){
      fADCEncoded=fl;
    }
    virtual void SetDDLModuleMap(AliITSDDLModuleMapSDD* ddlsdd){
      if(!fDDLModuleMap) fDDLModuleMap=new AliITSDDLModuleMapSDD();
      fDDLModuleMap->SetDDLMap(ddlsdd);
    }
    virtual void     SetZeroSuppLowThreshold(Int_t iMod, Int_t iSid, Int_t th) 
      {fLowThresholdArray[iMod][iSid]=th;}
    Int_t   GetModuleNumber(UInt_t iDDL, UInt_t iModule) const {
      if(!fDDLModuleMap) return kSPDModules+1; // dummy module number if the DDL map is not set (case of DAs)
      return fDDLModuleMap->GetModuleNumber(iDDL,iModule);
    }

    enum {kSDDModules = 260};      // number of SDD modules
    enum {kSPDModules = 240};      // number of SPD modules (used as offset)
    enum {kDDLsNumber = 24};       // number of DDLs in SDD
    enum {kModulesPerDDL = 12};    // number of modules in each DDL 
    enum {kCarlosWords = 12};      // number of FIFOCARLOS Words
    enum {kFifoWords =  4};        // number of FIFO Words
    enum ESDDRawStreamError { 
      kDataError = 1,
      kDataFormatErr = 2
    };
  protected:

    virtual Int_t    DecompAmbra(Int_t value) const;
    AliITSDDLModuleMapSDD* fDDLModuleMap; // mapping DDL/module -> module number 
    UInt_t           fData;         // data read for file
    Int_t            fCarlosId;     // carlos ID
    Int_t            fChannel;      // current channel
    Int_t            fJitter;          // jitter between L0 and pascal stop (x25ns)
    Int_t            fLowThresholdArray[kSDDModules][2]; // array with low thresholds for all modules

    Int_t            fDDL;        // current ddl number
    Bool_t           fADCEncoded;  // flag for data format
                                  // kTRUE -> ADC encoded in 5+3 bits
                                  // kFALSE -> ADC decoded (8 bits)

    ClassDef(AliITSRawStreamSDDCompressed, 2) // class for reading ITS SDD raw digits
};

#endif
 AliITSRawStreamSDDCompressed.h:1
 AliITSRawStreamSDDCompressed.h:2
 AliITSRawStreamSDDCompressed.h:3
 AliITSRawStreamSDDCompressed.h:4
 AliITSRawStreamSDDCompressed.h:5
 AliITSRawStreamSDDCompressed.h:6
 AliITSRawStreamSDDCompressed.h:7
 AliITSRawStreamSDDCompressed.h:8
 AliITSRawStreamSDDCompressed.h:9
 AliITSRawStreamSDDCompressed.h:10
 AliITSRawStreamSDDCompressed.h:11
 AliITSRawStreamSDDCompressed.h:12
 AliITSRawStreamSDDCompressed.h:13
 AliITSRawStreamSDDCompressed.h:14
 AliITSRawStreamSDDCompressed.h:15
 AliITSRawStreamSDDCompressed.h:16
 AliITSRawStreamSDDCompressed.h:17
 AliITSRawStreamSDDCompressed.h:18
 AliITSRawStreamSDDCompressed.h:19
 AliITSRawStreamSDDCompressed.h:20
 AliITSRawStreamSDDCompressed.h:21
 AliITSRawStreamSDDCompressed.h:22
 AliITSRawStreamSDDCompressed.h:23
 AliITSRawStreamSDDCompressed.h:24
 AliITSRawStreamSDDCompressed.h:25
 AliITSRawStreamSDDCompressed.h:26
 AliITSRawStreamSDDCompressed.h:27
 AliITSRawStreamSDDCompressed.h:28
 AliITSRawStreamSDDCompressed.h:29
 AliITSRawStreamSDDCompressed.h:30
 AliITSRawStreamSDDCompressed.h:31
 AliITSRawStreamSDDCompressed.h:32
 AliITSRawStreamSDDCompressed.h:33
 AliITSRawStreamSDDCompressed.h:34
 AliITSRawStreamSDDCompressed.h:35
 AliITSRawStreamSDDCompressed.h:36
 AliITSRawStreamSDDCompressed.h:37
 AliITSRawStreamSDDCompressed.h:38
 AliITSRawStreamSDDCompressed.h:39
 AliITSRawStreamSDDCompressed.h:40
 AliITSRawStreamSDDCompressed.h:41
 AliITSRawStreamSDDCompressed.h:42
 AliITSRawStreamSDDCompressed.h:43
 AliITSRawStreamSDDCompressed.h:44
 AliITSRawStreamSDDCompressed.h:45
 AliITSRawStreamSDDCompressed.h:46
 AliITSRawStreamSDDCompressed.h:47
 AliITSRawStreamSDDCompressed.h:48
 AliITSRawStreamSDDCompressed.h:49
 AliITSRawStreamSDDCompressed.h:50
 AliITSRawStreamSDDCompressed.h:51
 AliITSRawStreamSDDCompressed.h:52
 AliITSRawStreamSDDCompressed.h:53
 AliITSRawStreamSDDCompressed.h:54
 AliITSRawStreamSDDCompressed.h:55
 AliITSRawStreamSDDCompressed.h:56
 AliITSRawStreamSDDCompressed.h:57
 AliITSRawStreamSDDCompressed.h:58
 AliITSRawStreamSDDCompressed.h:59
 AliITSRawStreamSDDCompressed.h:60
 AliITSRawStreamSDDCompressed.h:61
 AliITSRawStreamSDDCompressed.h:62
 AliITSRawStreamSDDCompressed.h:63
 AliITSRawStreamSDDCompressed.h:64
 AliITSRawStreamSDDCompressed.h:65
 AliITSRawStreamSDDCompressed.h:66
 AliITSRawStreamSDDCompressed.h:67
 AliITSRawStreamSDDCompressed.h:68
 AliITSRawStreamSDDCompressed.h:69
 AliITSRawStreamSDDCompressed.h:70
 AliITSRawStreamSDDCompressed.h:71
 AliITSRawStreamSDDCompressed.h:72
 AliITSRawStreamSDDCompressed.h:73
 AliITSRawStreamSDDCompressed.h:74
 AliITSRawStreamSDDCompressed.h:75
 AliITSRawStreamSDDCompressed.h:76
 AliITSRawStreamSDDCompressed.h:77
 AliITSRawStreamSDDCompressed.h:78
 AliITSRawStreamSDDCompressed.h:79