]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSRawStreamSDD.h
AliMUONGeometryStore replaced with AliMpExMap (used as the type
[u/mrichter/AliRoot.git] / ITS / AliITSRawStreamSDD.h
1 #ifndef ALIITSRAWSTREAMSDD_H
2 #define ALIITSRAWSTREAMSDD_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 /// This class provides access to ITS SDD digits in raw data 
11 /// (default=simulated data).
12 ///
13 ///////////////////////////////////////////////////////////////////////////////
14
15 #include "AliITSRawStream.h"
16
17 class AliRawReader;
18
19
20 class AliITSRawStreamSDD: public AliITSRawStream {
21   public :
22     AliITSRawStreamSDD(AliRawReader* rawReader);
23     virtual ~AliITSRawStreamSDD() {};
24
25     virtual Bool_t   Next();
26
27     virtual Int_t    GetAnode() const {return fCoord1;}
28     virtual Int_t    GetTime() const {return fCoord2;}
29     virtual Int_t    GetChannel() const {return fChannel;}
30     virtual Int_t    ReadJitter() {return 0;}
31
32     virtual void     SetLowCarlosThreshold(Int_t th, Int_t i) {fLowThreshold[i]=th;}
33
34     static  Int_t    GetModuleNumber(UInt_t iDDL, UInt_t iModule)
35                      {return fgkDDLModuleMap[iDDL][iModule];}
36
37     enum {kDDLsNumber = 12};      // number of DDLs in SDD
38     enum {kModulesPerDDL = 22};   // number of modules in each DDL 
39
40  
41   protected:
42     static const Int_t fgkDDLModuleMap[kDDLsNumber][kModulesPerDDL]; //  mapping DDL/module -> module number
43
44     virtual UInt_t   ReadBits();
45     virtual Int_t    DecompAmbra(Int_t value) const;
46
47     static const UInt_t fgkCodeLength[8]; //code length
48
49     UInt_t           fData;         // data read for file
50     Int_t            fSkip;         // number of skipped words
51     Int_t            fEventId;      // event ID from the header
52     Int_t            fCarlosId;     // carlos ID from the header
53     Int_t            fChannel;      // current channel
54     Int_t            fJitter;          // jitter between L0 and pascal stop (x25ns)
55     ULong64_t        fChannelData[2];  // packed data for the 2 channels
56     UInt_t           fLastBit[2];      // last filled bit in fChannelData
57     UInt_t           fChannelCode[2];  // current channel code
58     Bool_t           fReadCode[2];     // next bits are code or data
59     UInt_t           fReadBits[2];     // number of bits to read
60     Int_t            fTimeBin[2];      // current time bin
61     Int_t            fAnode[2];        // current anode number
62     Int_t            fLowThreshold[2]; // low Carlos threshold
63     
64
65     ClassDef(AliITSRawStreamSDD, 1) // class for reading ITS SDD raw digits
66 };
67
68 #endif