Trigger scalers added to ESD header.
[u/mrichter/AliRoot.git] / PMD / AliPMDRawStream.h
1 #ifndef ALIPMDRAWSTREAM_H
2 #define ALIPMDRAWSTREAM_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 PMD digits in raw data.
11 ///
12 ///////////////////////////////////////////////////////////////////////////////
13
14 #include <TObject.h>
15
16 class AliRawReader;
17
18
19 class AliPMDRawStream: public TObject {
20   public :
21     AliPMDRawStream(AliRawReader* rawReader);
22     virtual ~AliPMDRawStream();
23
24     Int_t DdlData(TObjArray *pmdddlcont);
25
26     enum {kDDLOffset = 0xC00};      // offset for DDL numbers
27
28     enum EPMDRawStreamError {
29       kDDLIndexMismatch = 1,
30       kNoMappingFile = 2,
31       kParityError = 3
32     };
33
34   private :
35     AliPMDRawStream(const AliPMDRawStream& stream);
36     AliPMDRawStream& operator = (const AliPMDRawStream& stream);
37
38     void             GetRowCol(Int_t imodule, Int_t pbusid, 
39                                UInt_t mcmno, UInt_t chno,
40                                Int_t startRowBus[], Int_t endRowBus[],
41                                Int_t startColBus[], Int_t endColBus[],
42                                Int_t &row, Int_t &col) const;
43     void             ConvertDDL2SMN(Int_t iddl, Int_t imodule,
44                                     Int_t &smn, Int_t &detector) const;
45     void             TransformH2S(Int_t smn, Int_t &row, Int_t &col) const;
46     Int_t            ComputeParity(UInt_t data1);
47     UInt_t           GetNextWord();
48     void             Ddl0Mapping(Int_t modulePerDDL,
49                                  Int_t moduleNo[],    Int_t mcmperBus[],
50                                  Int_t startRowBus[], Int_t endRowBus[],
51                                  Int_t startColBus[], Int_t endColBus[]);
52     void             Ddl1Mapping(Int_t modulePerDDL,
53                                  Int_t moduleNo[],    Int_t mcmperBus[],
54                                  Int_t startRowBus[], Int_t endRowBus[],
55                                  Int_t startColBus[], Int_t endColBus[]);
56     void             Ddl2Mapping(Int_t modulePerDDL,
57                                  Int_t moduleNo[],    Int_t mcmperBus[],
58                                  Int_t startRowBus[], Int_t endRowBus[],
59                                  Int_t startColBus[], Int_t endColBus[]);
60     void             Ddl3Mapping(Int_t modulePerDDL,
61                                  Int_t moduleNo[],    Int_t mcmperBus[],
62                                  Int_t startRowBus[], Int_t endRowBus[],
63                                  Int_t startColBus[], Int_t endColBus[]);
64     void             Ddl4Mapping(Int_t modulePerDDL,
65                                  Int_t moduleNo[],    Int_t mcmperBus[],
66                                  Int_t startRowBus[], Int_t endRowBus[],
67                                  Int_t startColBus[], Int_t endColBus[]);
68     void             Ddl5Mapping(Int_t modulePerDDL,
69                                  Int_t moduleNo[],    Int_t mcmperBus[],
70                                  Int_t startRowBus[], Int_t endRowBus[],
71                                  Int_t startColBus[], Int_t endColBus[]);
72
73     AliRawReader*    fRawReader;    // object for reading the raw data
74     UChar_t*         fData;         // pointer to the data
75     Int_t            fPosition;
76
77     ClassDef(AliPMDRawStream, 7)    // class for reading PMD raw digits
78 };
79
80 #endif