3 #ifndef ALIHLTDATADEFLATERHUFFMAN_H
4 #define ALIHLTDATADEFLATERHUFFMAN_H
5 //* This file is property of and copyright by the ALICE HLT Project *
6 //* ALICE Experiment at CERN, All rights reserved. *
7 //* See cxx source for full Copyright notice *
9 /// @file AliHLTDataDeflaterHuffman.h
10 /// @author Thorsten Kollegger, Matthias Richter
12 /// @brief Data deflater class using huffman coding
14 #include "AliHLTDataDeflater.h"
15 #include "AliHLTHuffman.h"
21 * @class AliHLTDataDeflaterHuffman
22 * Deflater implementation using standard huffman code.
24 * @ingroup alihlt_base
26 class AliHLTDataDeflaterHuffman : public AliHLTDataDeflater
29 /// standard constructor
30 AliHLTDataDeflaterHuffman(bool bTrainingMode=false);
32 ~AliHLTDataDeflaterHuffman();
34 /// add a parameter definition to the configuration, return reference id
35 int AddParameterDefinition(const char* name, unsigned bitLength, unsigned refLength=0);
37 /// init list of decoders
38 int InitDecoders(TList* decoderlist);
40 /// inherited from AliHLTDataDeflater: write bit pattern according to configuration
41 virtual bool OutputParameterBits( int parameterId, AliHLTUInt64_t const & value );
43 /// add a parameter definition for huffman training
44 int AddTrainingParameter(const char* name, unsigned bitLength);
46 /// add a training value for the specified parameter
47 bool AddTrainingValue( int memberId, AliHLTUInt64_t const & value );
49 /// generate huffman trees for all parameters and return list
50 const TList* GenerateHuffmanTree();
52 const TList* GetList() const {return fHuffmanCoderList;}
54 /// clear the object and reset pointer references
55 virtual void Clear(Option_t * /*option*/ ="");
58 virtual void Print(Option_t *option="") const;
61 virtual void Print(ostream& out, Option_t *option="") const;
63 /// find object: 'DeflaterConfiguration'
64 virtual TObject *FindObject(const char *name) const;
66 /// save data according to option
67 virtual void SaveAs(const char *filename="",Option_t *option="") const;
69 /// DataDeflaterHuffman version (ID) is 2
70 virtual int GetDeflaterVersion() const {return 2;}
72 /// check if in training mode
73 bool IsTrainingMode() const {return fTrainingMode;}
77 /// copy constructor prohibited
78 AliHLTDataDeflaterHuffman(const AliHLTDataDeflaterHuffman&);
79 /// assigment operator prohibited
80 AliHLTDataDeflaterHuffman& operator=(const AliHLTDataDeflaterHuffman&);
82 /// parameter length reference for calculation of ratio
83 vector<unsigned> fReferenceLength;
84 /// index of the decoders in the decoder list
85 vector<AliHLTHuffman*> fHuffmanCoders; //! index of decoders
87 /// list of huffman coders identified by parameter name
88 TList* fHuffmanCoderList; //! list of huffman coders
90 bool fTrainingMode; //! indicate training mode
92 ClassDef(AliHLTDataDeflaterHuffman, 0)
95 ostream& operator<<(ostream &out, const AliHLTDataDeflaterHuffman& me);