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
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;
63 /** standard constructor */
64 AliHLTCOMPHuffmanData();
67 virtual ~AliHLTCOMPHuffmanData();
69 /** get data from OCDB (currently from ROOT-file) and write into instance of HuffmanData
70 * @param occurrencetable pointer to occurrence table
71 * @param codetable pointer to Huffman code table
73 void InitHuffmanData(AliHLTCOMPHuffmanOccurrenceData::AliHLTCOMPHuffmanDataStruct* occurrencetable, AliHLTCOMPHuffmanCodeData::AliHLTCOMPHuffmanCodeStruct* codetable);
75 /** return occurrence table to be used/written somewhere else (intialisation of Huffman Compressor tables)
76 * @param occurrencetable table pointer to occurrence table
78 AliHLTCOMPHuffmanOccurrenceData::AliHLTCOMPHuffmanDataStruct* GetOccurrenceTable(AliHLTCOMPHuffmanOccurrenceData::AliHLTCOMPHuffmanDataStruct* occurrencetable);
80 /** return code table to be used/ written somewhere else (initialisation of the Huffman Compressor tables)
81 * @param codetable pointer to Huffman code table
83 AliHLTCOMPHuffmanCodeData::AliHLTCOMPHuffmanCodeStruct* GetCodeTable(AliHLTCOMPHuffmanCodeData::AliHLTCOMPHuffmanCodeStruct* codetable);
85 /** set specifications for Huffman data to be recognised again in the Preprocessor before storing the data in the OCDB
86 * @param origin string to detector origin
87 * @param dataspec integer to define data specification
88 * @return 0 upon success
90 Int_t SetOCDBSpecifications(TString origin, Int_t dataspec);
92 /** get detector origin (used in Preprocessor of OCDB)
93 * @return fOrigin (TString)
95 TString GetOrigin() {return fOrigin;}
97 /** get dataspec (i.e. table number from 1 to 6) (used in Preprocessor of OCDB)
98 * @return dataspec (Int_t)
100 Int_t GetDataSpec() {return fDataSpec;}
104 /** copy constructor prohibited */
105 AliHLTCOMPHuffmanData(const AliHLTCOMPHuffmanData&);
107 /** assignment operator prohibited */
108 AliHLTCOMPHuffmanData& operator=(const AliHLTCOMPHuffmanData&);
110 /** array of instances of HuffmanOccurrenceData that contains occurrence table */
111 AliHLTCOMPHuffmanOccurrenceData fOccurrenceTable[TIMEBINS]; // occurrence table for all ADC-values
112 /** array of instances of HuffmanCodeData thtat contains complete Huffman code table */
113 AliHLTCOMPHuffmanCodeData fCodeTable[TIMEBINS]; // Huffman translation table for all ADC-values
115 /** define detector where this data comes from **/
118 /** define dataspecification where this data comes from **/
122 ClassDef(AliHLTCOMPHuffmanData, 1)