]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSHuffman.h
Release version of ITS code
[u/mrichter/AliRoot.git] / ITS / AliITSHuffman.h
CommitLineData
b0f5e3fc 1#ifndef AliITSHUFFMAN_H
2#define AliITSHUFFMAN_H
3
4///////////////////////////////////////////////////
5// Huffman Table associated classes for set:ITS //
6///////////////////////////////////////////////////
7
8//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
9// Attention! Two classes in this file.
10// They have to stay in the same file.
11//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
13#include <TObject.h>
14#include <TObjArray.h>
15
16class AliITSInStream;
17
18class AliITSHNode: public TObject {
19
b0f5e3fc 20 public:
21 AliITSHNode();
22 AliITSHNode(UChar_t symbol, ULong_t freq);
23 virtual ~AliITSHNode() {
24 // destructor
25 }
26 AliITSHNode(const AliITSHNode &source); // copy constructor
27 AliITSHNode& operator=(const AliITSHNode &source); // ass. op.
28
29 Bool_t IsSortable() const {
30 // is sortable
31 return kTRUE;
32 }
33 Int_t Compare(TObject *obj);
34
35 ClassDef(AliITSHNode,1) //HuffT node object for set:ITS
e8189707 36
37 public:
38
39 UChar_t fSymbol; // comment to be written
40 ULong_t fFrequency; // comment to be written
41 AliITSHNode *fLeft; // comment to be written
42 AliITSHNode *fRight; // comment to be written
43 AliITSHNode *fFather; // not used
44};
b0f5e3fc 45
46//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
47// Attention! Next class has kept deliberaty in
48// the same file as the previous one
49//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
50//___________________________________________
51class AliITSHTable: public TObject{
52
53public:
54 AliITSHTable();
55 AliITSHTable(Int_t size);
56 virtual ~AliITSHTable();
57 AliITSHTable(const AliITSHTable &source); // copy constructor
58 AliITSHTable& operator=(const AliITSHTable &source); // ass. op.
59
60 Int_t Size() {
61 // size
62 return fSize;
63 }
64 UChar_t *CodeLen() {
65 // code len
66 return fCodeLen;
67 }
68 ULong_t *Code() {
69 // code
70 return fCode;
71 }
72 TObjArray *HNodes() {
73 // HNodes
74 return fHNodes;
75 }
76
77
78 void GetFrequencies(Int_t len, UChar_t *stream);
79 void BuildHTable();
80 Bool_t SpanTree(AliITSHNode*start, ULong_t code, UChar_t len);
81 void ResetHNodes();
e8189707 82 void ClearTable();
b0f5e3fc 83
84 protected:
85
86 Int_t fSize; // size of the arrays
e8189707 87 UChar_t *fCodeLen; //![fSize] number of bits array
88 ULong_t *fCode; //![fSize] coded symbols array
b0f5e3fc 89
e8189707 90 Short_t *fSym; //![fSize] array of input symbols
b0f5e3fc 91 TObjArray *fHNodes; // array of nodes
92 Int_t fNnodes; // number of nodes
93
94 ClassDef(AliITSHTable,1) //Huffman Table object for set:ITS
95 };
96
97#endif