a0205dc9a0f49871b1613614f81388a2c56d92eb
[u/mrichter/AliRoot.git] / HLT / misc / AliL3AltroMemHandler.h
1 #ifndef ALIL3ALTROMEMHANDLER_H
2 #define ALIL3ALTROMEMHANDLER_H
3
4 #include "AliL3RootTypes.h"
5 #include "AliL3Logging.h"
6
7 //Maximum size of Altro packet equals 1000 bit
8 #define ALTRO_PACKET_SIZE 125
9
10 //Maximum 10 bit data to be stored in one packet
11 #define MAX_VALS 94
12
13 //Maximum size of array to store whole pad
14 #define ALTRO_SIZE (100*ALTRO_PACKET_SIZE)
15
16 class AliL3AltroMemHandler {
17
18   public: 
19
20    AliL3AltroMemHandler();
21    void Write(UShort_t row, UChar_t pad, UShort_t time, UShort_t charge);
22    Bool_t Read(UShort_t &row, UChar_t &pad, UShort_t &time, UShort_t &charge);
23    Bool_t ReadSequence(UShort_t &row, UChar_t &pad, UShort_t &time, UChar_t &n, UShort_t **charges);
24    void WriteFinal();
25
26    Bool_t SetASCIIOutput(FILE *file);
27    Bool_t SetBinaryOutput(FILE *file);
28    Bool_t SetASCIIInput(FILE *file);
29    Bool_t SetBinaryInput(FILE *file);
30
31   private:
32
33    UShort_t altromem[ALTRO_SIZE];
34    UShort_t times_per_pad[1024];
35    UShort_t charges_per_pad[1024];
36
37    FILE *fInBinary;  //!
38    FILE *fOutBinary; //!
39    UShort_t lrow;
40    UChar_t lpad;
41    UShort_t rrow;  //read row
42    UChar_t rpad;   //read pad
43    UShort_t rtime; //read time
44    UShort_t counter;  //total counter
45    UShort_t tcounter; //time counter
46    UShort_t pcounter; //packet counter
47    UShort_t rcounter; //read counter
48    UShort_t scounter; //sequence counter
49    Bool_t flag; //Binary File?
50
51    void Clear();
52    void ClearRead();
53    void Add(UShort_t charge, UShort_t time);
54    void MakeAltroPackets();
55    void AddTrailer();
56    void Write();
57
58    ClassDef(AliL3AltroMemHandler,1)
59 };
60
61 #endif
62
63
64
65
66
67