Line data Source code
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 0 : virtual Int_t GetAnode() const {return fCoord1;}
31 0 : virtual Int_t GetTime() const {return fCoord2;}
32 0 : virtual Int_t GetChannel() const {return fChannel;}
33 0 : virtual Int_t GetJitter() const {return fJitter;}
34 0 : virtual Int_t GetCarlosId() const {return fCarlosId;}
35 0 : virtual UInt_t GetDataWord() const {return fData;}
36 :
37 : virtual void SetADCEncoded(Bool_t fl=kTRUE){
38 0 : fADCEncoded=fl;
39 0 : }
40 : virtual void SetDDLModuleMap(AliITSDDLModuleMapSDD* ddlsdd){
41 0 : if(!fDDLModuleMap) fDDLModuleMap=new AliITSDDLModuleMapSDD();
42 0 : fDDLModuleMap->SetDDLMap(ddlsdd);
43 0 : }
44 : virtual void SetZeroSuppLowThreshold(Int_t iMod, Int_t iSid, Int_t th)
45 0 : {fLowThresholdArray[iMod][iSid]=th;}
46 : Int_t GetModuleNumber(UInt_t iDDL, UInt_t iModule) const {
47 0 : if(!fDDLModuleMap) return kSPDModules+1; // dummy module number if the DDL map is not set (case of DAs)
48 0 : return fDDLModuleMap->GetModuleNumber(iDDL,iModule);
49 0 : }
50 :
51 : enum {kSDDModules = 260}; // number of SDD modules
52 : enum {kSPDModules = 240}; // number of SPD modules (used as offset)
53 : enum {kDDLsNumber = 24}; // number of DDLs in SDD
54 : enum {kModulesPerDDL = 12}; // number of modules in each DDL
55 : enum {kCarlosWords = 12}; // number of FIFOCARLOS Words
56 : enum {kFifoWords = 4}; // number of FIFO Words
57 : enum ESDDRawStreamError {
58 : kDataError = 1,
59 : kDataFormatErr = 2
60 : };
61 : protected:
62 :
63 : virtual Int_t DecompAmbra(Int_t value) const;
64 : AliITSDDLModuleMapSDD* fDDLModuleMap; // mapping DDL/module -> module number
65 : UInt_t fData; // data read for file
66 : Int_t fCarlosId; // carlos ID
67 : Int_t fChannel; // current channel
68 : Int_t fJitter; // jitter between L0 and pascal stop (x25ns)
69 : Int_t fLowThresholdArray[kSDDModules][2]; // array with low thresholds for all modules
70 :
71 : Int_t fDDL; // current ddl number
72 : Bool_t fADCEncoded; // flag for data format
73 : // kTRUE -> ADC encoded in 5+3 bits
74 : // kFALSE -> ADC decoded (8 bits)
75 :
76 118 : ClassDef(AliITSRawStreamSDDCompressed, 2) // class for reading ITS SDD raw digits
77 : };
78 :
79 : #endif
|