]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSRawStreamSDDCompressed.h
SDD drift time stored in the track points (F. Prino)
[u/mrichter/AliRoot.git] / ITS / AliITSRawStreamSDDCompressed.h
1 #ifndef ALIITSRAWSTREAMSDDCOMPRESSED_H
2 #define ALIITSRAWSTREAMSDDCOMPRESSED_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ///////////////////////////////////////////////////////////////////
9 //                                                               //
10 // Class to decode compressed SDD Raw Data format                //
11 // Origin: F.Prino, Torino, prino@to.infn.it                     //
12 //                                                               //
13 ///////////////////////////////////////////////////////////////////
14
15 #include "AliITSRawStream.h"
16 #include "AliITSDDLModuleMapSDD.h"
17
18 class AliRawReader;
19
20
21 class AliITSRawStreamSDDCompressed: public AliITSRawStream {
22   public :
23     AliITSRawStreamSDDCompressed(AliRawReader* rawReader);
24     AliITSRawStreamSDDCompressed(const AliITSRawStreamSDDCompressed& rs);
25     AliITSRawStreamSDDCompressed& operator=(const AliITSRawStreamSDDCompressed& rs);
26     virtual ~AliITSRawStreamSDDCompressed();
27
28     virtual Bool_t   Next();
29
30     virtual Int_t    GetAnode() const {return fCoord1;}
31     virtual Int_t    GetTime() const {return fCoord2;}
32     virtual Int_t    GetChannel() const {return fChannel;}
33     virtual Int_t    ReadJitter() const {return 0;}
34     virtual Int_t    GetCarlosId() const {return fCarlosId;}
35
36     virtual void SetDDLModuleMap(AliITSDDLModuleMapSDD* ddlsdd){
37       if(!fDDLModuleMap) fDDLModuleMap=new AliITSDDLModuleMapSDD();
38       fDDLModuleMap->SetDDLMap(ddlsdd);
39     }
40     virtual void     SetZeroSuppLowThreshold(Int_t iMod, Int_t iSid, Int_t th) 
41       {fLowThresholdArray[iMod][iSid]=th;}
42     Int_t   GetModuleNumber(UInt_t iDDL, UInt_t iModule) const {
43       if(!fDDLModuleMap) return kSPDModules+1; // dummy module number if the DDL map is not set (case of DAs)
44       return fDDLModuleMap->GetModuleNumber(iDDL,iModule);
45     }
46
47     enum {kSDDModules = 260};      // number of SDD modules
48     enum {kSPDModules = 240};      // number of SPD modules (used as offset)
49     enum {kDDLsNumber = 24};       // number of DDLs in SDD
50     enum {kModulesPerDDL = 12};    // number of modules in each DDL 
51     enum {kCarlosWords = 12};      // number of FIFOCARLOS Words
52     enum {kFifoWords =  4};        // number of FIFO Words
53     enum ESDDRawStreamError { 
54       kDataError = 1,
55       kDataFormatErr = 2
56     };
57   protected:
58
59     virtual Int_t    DecompAmbra(Int_t value) const;
60     AliITSDDLModuleMapSDD* fDDLModuleMap; // mapping DDL/module -> module number 
61     UInt_t           fData;         // data read for file
62     Int_t            fCarlosId;     // carlos ID
63     Int_t            fChannel;      // current channel
64     Int_t            fJitter;          // jitter between L0 and pascal stop (x25ns)
65     Int_t            fLowThresholdArray[kSDDModules][2]; // array with low thresholds for all modules
66
67     Int_t            fDDL;        //current ddl number
68
69     ClassDef(AliITSRawStreamSDDCompressed, 1) // class for reading ITS SDD raw digits
70 };
71
72 #endif