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 */
8 ///////////////////////////////////////////////////////////////////
10 // Class to decode compressed SDD Raw Data format //
11 // Origin: F.Prino, Torino, prino@to.infn.it //
13 ///////////////////////////////////////////////////////////////////
15 #include "AliITSRawStream.h"
16 #include "AliITSDDLModuleMapSDD.h"
21 class AliITSRawStreamSDDCompressed: public AliITSRawStream {
23 AliITSRawStreamSDDCompressed(AliRawReader* rawReader);
24 AliITSRawStreamSDDCompressed(const AliITSRawStreamSDDCompressed& rs);
25 AliITSRawStreamSDDCompressed& operator=(const AliITSRawStreamSDDCompressed& rs);
26 virtual ~AliITSRawStreamSDDCompressed();
28 virtual Bool_t Next();
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 GetJitter() const {return fJitter;}
34 virtual Int_t GetCarlosId() const {return fCarlosId;}
35 virtual UInt_t GetDataWord() const {return fData;}
37 virtual void SetDDLModuleMap(AliITSDDLModuleMapSDD* ddlsdd){
38 if(!fDDLModuleMap) fDDLModuleMap=new AliITSDDLModuleMapSDD();
39 fDDLModuleMap->SetDDLMap(ddlsdd);
41 virtual void SetZeroSuppLowThreshold(Int_t iMod, Int_t iSid, Int_t th)
42 {fLowThresholdArray[iMod][iSid]=th;}
43 Int_t GetModuleNumber(UInt_t iDDL, UInt_t iModule) const {
44 if(!fDDLModuleMap) return kSPDModules+1; // dummy module number if the DDL map is not set (case of DAs)
45 return fDDLModuleMap->GetModuleNumber(iDDL,iModule);
48 enum {kSDDModules = 260}; // number of SDD modules
49 enum {kSPDModules = 240}; // number of SPD modules (used as offset)
50 enum {kDDLsNumber = 24}; // number of DDLs in SDD
51 enum {kModulesPerDDL = 12}; // number of modules in each DDL
52 enum {kCarlosWords = 12}; // number of FIFOCARLOS Words
53 enum {kFifoWords = 4}; // number of FIFO Words
54 enum ESDDRawStreamError {
60 virtual Int_t DecompAmbra(Int_t value) const;
61 AliITSDDLModuleMapSDD* fDDLModuleMap; // mapping DDL/module -> module number
62 UInt_t fData; // data read for file
63 Int_t fCarlosId; // carlos ID
64 Int_t fChannel; // current channel
65 Int_t fJitter; // jitter between L0 and pascal stop (x25ns)
66 Int_t fLowThresholdArray[kSDDModules][2]; // array with low thresholds for all modules
68 Int_t fDDL; //current ddl number
70 ClassDef(AliITSRawStreamSDDCompressed, 1) // class for reading ITS SDD raw digits