adding component for object re-compression
[u/mrichter/AliRoot.git] / HLT / BASE / util / AliHLTObjectCompressionComponent.h
1 // -*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTOBJECTCOMPRESSIONCOMPONENT_H
5 #define ALIHLTOBJECTCOMPRESSIONCOMPONENT_H
6 //* This file is property of and copyright by the ALICE HLT Project        * 
7 //* ALICE Experiment at CERN, All rights reserved.                         *
8 //* See cxx source for full Copyright notice                               *
9
10 /// @file   AliHLTObjectCompressionComponent.h
11 /// @author Matthias Richter
12 /// @date   2010-11-09
13 /// @brief  
14 ///
15
16 #include "AliHLTProcessor.h"
17
18 /**
19  * @class AliHLTObjectCompressionComponent
20  * Component for compression of TObjects with a different compression level.
21  * The level is adjusted by the common AliHLTComponent @ref alihlt_component_arguments.
22  *
23  * <h2>General properties:</h2>
24  *
25  * Component ID: \b TObjectCompressor                                       <br>
26  * Library: \b libAliHLTUtil.so                                             <br>
27  * Input Data Types: kAliHLTAnyDataType                                     <br>
28  * Output Data Types: according to input blocks                             <br>
29  *
30  * <h2>Mandatory arguments:</h2>
31  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
32  *      
33  * <h2>Optional arguments:</h2>
34  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
35  * \li -object-compression=level                                             <br>
36  *      
37  *
38  * <h2>Configuration:</h2>
39  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
40  * Configuration by component arguments.
41  *
42  * <h2>Default CDB entries:</h2>
43  * The component loads no CDB entries.
44  *
45  * <h2>Performance:</h2>
46  * Low profile: input objects are unpacked and binary copied, no streaming
47  * of obejcts.
48  *
49  * <h2>Memory consnumption:</h2>
50  * The component allocates memory of the maximum size for every input
51  * object.
52  *
53  * <h2>Output size:</h2>
54  * 
55  * @ingroup alihlt_util_components
56  */
57 class AliHLTObjectCompressionComponent : public AliHLTProcessor
58 {
59  public:
60   /// standard constructor
61   AliHLTObjectCompressionComponent();
62   /// destructor
63   virtual ~AliHLTObjectCompressionComponent();
64
65   /// inherited from AliHLTComponent, get component id
66   virtual const char* GetComponentID() {return "TObjectCompressor";};
67
68   /// inherited from AliHLTComponent, get the input data type
69   void GetInputDataTypes( AliHLTComponentDataTypeList& );
70
71   /// inherited from AliHLTComponent, get the output data type
72   AliHLTComponentDataType GetOutputDataType();
73
74   /// inherited from AliHLTComponent, get the output data size estimator
75   void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
76
77   /// inherited from AliHLTComponent, create a component
78   virtual AliHLTComponent* Spawn() {return new AliHLTObjectCompressionComponent;}
79
80  protected:
81
82   /// inherited from AliHLTProcessor, data processing
83   int DoEvent( const AliHLTComponentEventData& evtData,
84                AliHLTComponentTriggerData& trigData );
85   
86   using AliHLTProcessor::DoEvent;
87
88   /// inherited from AliHLTComponent, component initialisation
89   int DoInit( int argc, const char** argv );
90
91   /// inherited from AliHLTComponent, scan argument
92   int ScanConfigurationArgument(int argc, const char** argv);
93
94   /// inherited from AliHLTComponent, component cleanup.
95   int DoDeinit();
96
97  private:
98   /// copy constructor prohibited
99   AliHLTObjectCompressionComponent(const AliHLTObjectCompressionComponent&);
100   /// assignment operator prohibited
101   AliHLTObjectCompressionComponent& operator=(const AliHLTObjectCompressionComponent&);
102
103   ClassDef(AliHLTObjectCompressionComponent, 0)
104 };
105 #endif