]>
Commit | Line | Data |
---|---|---|
3ea47630 | 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 read-write the ALTRO data format // | |
6 | ///////////////////////////////////////////////////// | |
7 | ||
8 | /*This class is an interface between the altro format file and the | |
9 | user, and can be used in write or read mode | |
10 | In the write mode a new altro file is created and filled using the method FillBuffer(). | |
11 | The name of the file is specified as parameter in the constructor as well as the type mode. | |
12 | In the Read mode the specified file is open and the values can be read using the | |
13 | methods GetNext() and GetNextBackWord(). | |
14 | The first method is used to read the file forward while the second is used to read backward | |
15 | */ | |
16 | ||
17 | #ifndef AliALTROBUFFER_H | |
18 | #define AliALTROBUFFER_H | |
19 | ||
20 | #include <TObject.h> | |
4c846604 | 21 | |
22 | class AliFstream; | |
3ea47630 | 23 | |
5802cf2d | 24 | class AliAltroMapping; |
3ea47630 | 25 | |
26 | class AliAltroBuffer: public TObject { | |
27 | public: | |
573322da | 28 | AliAltroBuffer(const char* fileName, AliAltroMapping *mapping = NULL); |
3ea47630 | 29 | virtual ~AliAltroBuffer(); |
30 | ||
94b2b783 | 31 | virtual void FillBuffer(Int_t val); |
3ea47630 | 32 | //this method stores a word into the buffer |
3ea47630 | 33 | |
34 | void WriteTrailer(Int_t wordsNumber, Int_t padNumber, | |
35 | Int_t rowNumber, Int_t secNumber); | |
36 | //this method is used to write the trailer | |
94b2b783 | 37 | virtual void WriteTrailer(Int_t wordsNumber, Short_t hwAddress); |
20daa34d | 38 | //this method is used to write the trailer |
3ea47630 | 39 | |
5ca4e0a0 | 40 | void WriteChannel(Int_t padNumber, Int_t rowNumber, Int_t secNumber, |
3ea47630 | 41 | Int_t nTimeBins, const Int_t* adcValues, |
42 | Int_t threshold = 0); | |
43 | //this method is used to write all ADC values and the trailer of a channel | |
5ca4e0a0 | 44 | void WriteChannel(Short_t hwAddress, |
cc934096 | 45 | Int_t nTimeBins, const Int_t* adcValues, |
46 | Int_t threshold = 0); | |
47 | //this method is used to write all ADC values and the trailer of a channel | |
5ca4e0a0 | 48 | Int_t WriteBunch(Int_t nTimeBins, const Int_t* adcValues, |
cc934096 | 49 | Int_t threshold = 0); |
50 | //this method is used to write all ADC values | |
3ea47630 | 51 | |
5ca4e0a0 | 52 | void WriteDataHeader(Bool_t dummy, Bool_t compressed); |
3ea47630 | 53 | //this method is used to write the data header |
5e6235b5 | 54 | |
b73dbf18 | 55 | virtual UChar_t WriteRCUTrailer(Int_t rcuId); |
5e6235b5 | 56 | //this method is used to write the RCU trailer |
57 | ||
3ea47630 | 58 | void SetVerbose(Int_t val) {fVerbose = val;} |
59 | //this method is used to set the verbose level | |
60 | //level 0 no output messages | |
61 | //level !=0 some messages are displayed during the run | |
5ca4e0a0 | 62 | void Flush(); |
3ea47630 | 63 | //this method is used to fill the buffer with 2AA hexadecimal value and save it into the output file |
3ea47630 | 64 | |
16e29964 | 65 | void SetMapping(AliAltroMapping *mapping) { fMapping = mapping; } |
66 | ||
20daa34d | 67 | protected: |
3ea47630 | 68 | AliAltroBuffer(const AliAltroBuffer& source); |
69 | AliAltroBuffer& operator = (const AliAltroBuffer& source); | |
70 | ||
71 | UInt_t fBuffer[5]; //Buffer dimension is 32*5=160 bits and it contains 16 values | |
72 | //A value is never splitted in two Buffer | |
73 | ||
74 | ||
75 | Int_t fShift; //This variable contains the number of free bits in the current cell of | |
76 | //the Buffer after that the value Val is been inserted. | |
77 | //size of Int_t is 32 bit that is the same size of a cell of Buffer so | |
78 | //the shift operation are performed only on value Val. | |
79 | Int_t fCurrentCell; //This variable contains the cell number of the cell currently used | |
80 | Int_t fFreeCellBuffer;//number of free cells of the buffer | |
3ea47630 | 81 | Int_t fVerbose; //verbose level |
4c846604 | 82 | AliFstream* fFile; //logical name of the I/O file |
3ea47630 | 83 | UInt_t fDataHeaderPos;//Data header position |
3ea47630 | 84 | |
5802cf2d | 85 | // Now the parameters for the mapping |
573322da | 86 | AliAltroMapping* fMapping; // Pointer to the mapping handler |
5802cf2d | 87 | |
3ea47630 | 88 | ClassDef(AliAltroBuffer,0) // Interface to the Altro format |
89 | }; | |
90 | ||
91 | #endif |