New classes and macros for raw data compression and ADC (D.Favretto)
[u/mrichter/AliRoot.git] / ITS / AliITSDDLRawData.h
1 /* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 /////////////////////////////////////////////////////////////////////////////////////////
5 // Class used for generating the files containung data, required by the Data Challenge //
6 /////////////////////////////////////////////////////////////////////////////////////////
7
8 #ifndef AliITSDDLRAWDATA_H
9 #define AliITSDDLRAWDATA_H
10
11 class AliITS;
12 class TTree;
13
14 class AliITSDDLRawData:public TObject{
15  public:
16   AliITSDDLRawData();//default constructor
17   virtual ~AliITSDDLRawData(){;}//destructor
18   AliITSDDLRawData(const AliITSDDLRawData &source); // copy constructor
19   AliITSDDLRawData& operator=(const AliITSDDLRawData &source); // ass. op.
20   // This method generates the files with the Silicon pixel detector data
21   Int_t RawDataSPD(AliITS *ITS,TTree *TD ,Int_t LDCsNumber=2);
22   // This method generates the files with the Silicon drift detector data
23   Int_t RawDataSDD(AliITS *ITS,TTree *TD ,Int_t LDCsNumber=4);
24   // This method generates the files with the Silicon pixel detector data
25   Int_t RawDataSSD(AliITS *ITS,TTree *TD ,Int_t LDCsNumber=2);
26   //A debugging method used to test the files generated for the SPD.
27   void  TestFormat();
28  private: 
29   //This method formats and stores in buf all the digits of a SPD module
30   void  GetDigitsSPD(TClonesArray *ITSdigits, Int_t mod, ULong_t *buf);
31   //This method formats and stores in buf all the digits of a SDD module
32   void  GetDigitsSDD(TClonesArray *ITSdigits, Int_t mod, ULong_t *buf);
33   //This method formats and stores in buf all the digits of a SSD module
34   void  GetDigitsSSD(TClonesArray *ITSdigits, Int_t mod, ULong_t *buf);
35   //This method stores the value of the variable Word of StopBit-StartBit+1 bits 
36   //in BaseWord, starting from the bit StartBit
37   void  PackWord(ULong_t &BaseWord, ULong_t Word, Int_t StartBit, Int_t StopBit);
38   //This method extracts a group of adiacents bits, specified by StartBit and StopBit, 
39   //from the word PackedWord. The resulting word is saved in the Word variable
40   void  UnpackWord(ULong_t PackedWord, Int_t StartBit, Int_t StopBit, ULong_t &Word);
41   //The following three methods are used to store the data according to the 
42   //Silicon pixel detector data format
43   void  WriteChipHeader(Int_t ChipAddr,Int_t EventCnt,ULong_t &BaseWord);
44   void  WriteChipTrailer(ULong_t *buf,Int_t ChipHitCount,ULong_t &BaseWord);
45   void  WriteHit(ULong_t *buf,Int_t RowAddr,Int_t HitAddr,ULong_t &BaseWord);
46   //Methods used for reading and dubugging SPD data files
47   void  ReadChipHeader(Int_t &ChipAddr,Int_t &EventCnt,ULong_t BaseWord);
48   void  ReadChipTrailer(Int_t &ChipHitCount,ULong_t BaseWord);
49   void  DecodeWord(ULong_t Code,ULong_t BaseWord,Int_t FirstHalf,ULong_t &Decoded1,ULong_t &Decoded2);
50   Int_t fIndex;
51   Int_t fHalfStaveModule;
52   ClassDef(AliITSDDLRawData,1)
53 };
54     
55 #endif