3 #ifndef ALIHLTCOMPHUFFMANDATA_H
4 #define ALIHLTCOMPHUFFMANDATA_H
6 ///**************************************************************************
7 ///* This file is property of and copyright by the ALICE HLT Project *
8 ///* All rights reserved. *
10 ///* Primary Author: Jenny Wagner (jwagner@cern.ch) *
12 ///* Permission to use, copy, modify and distribute this software and its *
13 ///* documentation strictly for non-commercial purposes is hereby granted *
14 ///* without fee, provided that the above copyright notice appears in all *
15 ///* copies and that both the copyright notice and this permission notice *
16 ///* appear in the supporting documentation. The authors make no claims *
17 ///* about the suitability of this software for any purpose. It is *
18 ///* provided "as is" without express or implied warranty. *
19 ///**************************************************************************
21 /// @file AliHLTCOMPHuffmanData.h
22 /// @author Jenny Wagner
24 /// @brief The Huffman Data containing the Huffman code table and the occurrence table of ADV-values
27 #include "AliHLTLogging.h"
28 #include "AliHLTCompDefinitions.h"
29 #include "AliHLTCOMPHuffmanOccurrenceData.h"
30 #include "AliHLTCOMPHuffmanCodeData.h"
34 // type definitions needed for the Huffman compression
35 /** @class AliHLTCOMPHuffmanData
38 @brief The Huffman Data containing the Huffman code table and the occurrence table of ADC-values
39 it uses the classes @ref AliHLTCOMPHuffmanOccurrenceData and @ref AliHLTCOMPHuffmanCodeData
40 to convert all structs into classes (and instances) such that this information can be written
45 class AliHLTCOMPHuffmanData : public TObject, public AliHLTLogging
49 /** typedef for the nodes in the Huffman tree */
50 typedef struct AliHLTCOMPHuffmanTreeDataStruct // struct containing all information for Huffman tree
52 AliHLTCOMPHuffmanOccurrenceData::AliHLTCOMPHuffmanDataStruct fleafcontents; // contains all info about one leaf (node)
53 AliHLTCOMPHuffmanTreeDataStruct* fleft; // pointer to left children
54 AliHLTCOMPHuffmanTreeDataStruct* fright; // pointer to right children
55 AliHLTCOMPHuffmanTreeDataStruct* fparent; // pointer to parent node
57 AliHLTCOMPHuffmanTreeDataStruct* fnext; // pointer to next element in remaining list to build tree from
58 AliHLTCOMPHuffmanTreeDataStruct* fprevious; // pointer to previous element in remaining list to build tree from
60 } AliHLTCOMPHuffmanTreeDataStruct;
62 /** standard constructor */
63 AliHLTCOMPHuffmanData();
66 virtual ~AliHLTCOMPHuffmanData();
68 /** init internal occurrencetable and codetable
69 * @param occurrencetable pointer to occurrence table
70 * @param codetable pointer to Huffman code table
72 int InitHuffmanData(const AliHLTCOMPHuffmanOccurrenceData::AliHLTCOMPHuffmanDataStruct* occurrencetable, const AliHLTCOMPHuffmanCodeData::AliHLTCOMPHuffmanCodeStruct* codetable);
74 /** copy occurrencetable to target
75 * @param occurrencetable table pointer to occurrence table
77 AliHLTCOMPHuffmanOccurrenceData::AliHLTCOMPHuffmanDataStruct* GetOccurrenceTable(AliHLTCOMPHuffmanOccurrenceData::AliHLTCOMPHuffmanDataStruct* occurrencetable) const;
79 /** copy codetable to target
80 * @param codetable pointer to Huffman code table
82 AliHLTCOMPHuffmanCodeData::AliHLTCOMPHuffmanCodeStruct* GetCodeTable(AliHLTCOMPHuffmanCodeData::AliHLTCOMPHuffmanCodeStruct* codetable) const;
84 /** set specifications for Huffman data to be recognised again in the Preprocessor before storing the data in the OCDB
85 * @param origin string to detector origin
86 * @param dataspec integer to define data specification
87 * @return 0 upon success
89 Int_t SetOCDBSpecifications(const TString& origin, Int_t dataspec);
91 /** get detector origin (used in Preprocessor of OCDB)
92 * @return fOrigin (TString)
94 TString GetOrigin() const {return fOrigin;}
96 /** get dataspec (i.e. table number from 1 to 6) (used in Preprocessor of OCDB)
97 * @return dataspec (Int_t)
99 Int_t GetDataSpec() const {return fDataSpec;}
103 /** copy constructor prohibited */
104 AliHLTCOMPHuffmanData(const AliHLTCOMPHuffmanData&);
106 /** assignment operator prohibited */
107 AliHLTCOMPHuffmanData& operator=(const AliHLTCOMPHuffmanData&);
109 /** array of instances of HuffmanOccurrenceData that contains occurrence table */
110 AliHLTCOMPHuffmanOccurrenceData fOccurrenceTable[TIMEBINS]; // occurrence table for all ADC-values
111 /** array of instances of HuffmanCodeData thtat contains complete Huffman code table */
112 AliHLTCOMPHuffmanCodeData fCodeTable[TIMEBINS]; // Huffman translation table for all ADC-values
114 /** define detector where this data comes from **/
117 /** define dataspecification where this data comes from **/
121 ClassDef(AliHLTCOMPHuffmanData, 1)