]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/comp/AliHLTCOMPHuffmanData.h
TPC NoiseMapComponent & calibration (Kelly)
[u/mrichter/AliRoot.git] / HLT / comp / AliHLTCOMPHuffmanData.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTCOMPHUFFMANDATA_H
4 #define ALIHLTCOMPHUFFMANDATA_H
5
6 /**************************************************************************
7  * This file is property of and copyright by the ALICE HLT Project        * 
8  * All rights reserved.                                                   *
9  *                                                                        *
10  * Primary Author: Jenny Wagner  (jwagner@cern.ch)                        *
11  *                                                                        *
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  **************************************************************************/
20
21 /** @file   AliHLTCOMPHuffmanData.h
22     @author Jenny Wagner
23     @date   29-08-2007
24     @brief  The Huffman Data containing the Huffman code table and the occurrence table of ADV-values
25 */
26
27 #include "AliHLTLogging.h"
28 #include "AliHLTCompDefinitions.h"
29 #include "AliHLTCOMPHuffmanOccurrenceData.h"
30 #include "AliHLTCOMPHuffmanCodeData.h"
31
32 #define TIMEBINS 1024
33
34 // type definitions needed for the Huffman compression
35 /** @class   AliHLTCOMPHuffmanData
36     @author Jenny Wagner
37     @date   29-08-2007
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
41             to a ROOT file
42 */
43
44
45 class AliHLTCOMPHuffmanData : public TObject, public AliHLTLogging
46 {
47 public:
48
49   /** typedef for the nodes in the Huffman tree */
50   typedef struct AliHLTCOMPHuffmanTreeDataStruct  // struct containing all information for Huffman tree
51   {
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
56     
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
59    
60   } AliHLTCOMPHuffmanTreeDataStruct;
61   
62   
63   /** standard constructor */
64   AliHLTCOMPHuffmanData();
65
66   /** destructor */
67   virtual ~AliHLTCOMPHuffmanData();
68
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
72    */
73   void InitHuffmanData(AliHLTCOMPHuffmanOccurrenceData::AliHLTCOMPHuffmanDataStruct* occurrencetable, AliHLTCOMPHuffmanCodeData::AliHLTCOMPHuffmanCodeStruct* codetable);
74
75   /** return occurrence table to be used/written somewhere else (intialisation of Huffman Compressor tables)
76    * @param occurrencetable table  pointer to occurrence table
77    */
78   AliHLTCOMPHuffmanOccurrenceData::AliHLTCOMPHuffmanDataStruct* GetOccurrenceTable(AliHLTCOMPHuffmanOccurrenceData::AliHLTCOMPHuffmanDataStruct* occurrencetable);
79   
80   /** return code table to be used/ written somewhere else (initialisation of the Huffman Compressor tables)
81    * @param codetable   pointer to Huffman code table
82   */
83   AliHLTCOMPHuffmanCodeData::AliHLTCOMPHuffmanCodeStruct* GetCodeTable(AliHLTCOMPHuffmanCodeData::AliHLTCOMPHuffmanCodeStruct* codetable);
84
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
89    **/
90   Int_t SetOCDBSpecifications(TString origin, Int_t dataspec);
91
92   /** get detector origin (used in Preprocessor of OCDB)
93    * @return fOrigin (TString)
94    **/
95   TString GetOrigin() {return fOrigin;}
96
97   /** get dataspec (i.e. table number from 1 to 6) (used in Preprocessor of OCDB)
98    * @return dataspec (Int_t)
99    **/
100   Int_t GetDataSpec() {return fDataSpec;}
101
102 private:
103
104   /** copy constructor prohibited */
105   AliHLTCOMPHuffmanData(const AliHLTCOMPHuffmanData&);
106
107   /** assignment operator prohibited */
108   AliHLTCOMPHuffmanData& operator=(const AliHLTCOMPHuffmanData&);
109   
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
114
115  /** define detector where this data comes from **/
116   TString fOrigin;
117
118   /** define dataspecification where this data comes from **/
119   Int_t fDataSpec;
120     
121     
122   ClassDef(AliHLTCOMPHuffmanData, 1)
123     
124     };
125 #endif
126