Line data Source code
1 : //-*- Mode: C++ -*-
2 : // $Id$
3 : #ifndef ALIHLTTPCDATACOMPRESSIONFILTERCOMPONENT_H
4 : #define ALIHLTTPCDATACOMPRESSIONFILTERCOMPONENT_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 *
8 :
9 : /// @file AliHLTTPCDataCompressionFilterComponent.h
10 : /// @author Matthias Richter
11 : /// @date 2011-11-18
12 : /// @brief TPC component to filter compressed cluster data blocks from
13 : /// HLTOUT and in the chain.
14 :
15 : #include "AliHLTProcessor.h"
16 : #include <map>
17 :
18 : /**
19 : * @class AliHLTTPCDataCompressionFilterComponent
20 : * This component can filter data compressed cluster data blocks from two
21 : * sources:
22 : * - HLTOUT
23 : * - parent in the chain
24 : *
25 : * It is used in an emulation chain which produces all compressed cluster
26 : * blocks which are missing in HLTOUT. If TPC reconstruction requires HLT
27 : * clusters, the emulator is automatically executed and the compressed
28 : * data produced if raw data is available.
29 : *
30 : * <h2>General properties:</h2>
31 : *
32 : * Component ID: \b TPCDataCompressorFilter <br>
33 : * Library: \b libAliHLTTPC.so <br>
34 : * Input Data Types: <br>
35 : * Output Data Types: <br>
36 : *
37 : * <h2>Mandatory arguments:</h2>
38 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
39 : *
40 : * <h2>Optional arguments:</h2>
41 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
42 :
43 : * <h2>Configuration:</h2>
44 : * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
45 : *
46 : * <h2>Default CDB entries:</h2>
47 : *
48 : * <h2>Performance:</h2>
49 : *
50 : * <h2>Memory consumption:</h2>
51 : *
52 : * <h2>Output size:</h2>
53 : *
54 : *
55 : * @ingroup alihlt_tpc
56 : */
57 : class AliHLTTPCDataCompressionFilterComponent : public AliHLTProcessor {
58 : public:
59 : /// standard constructor
60 : AliHLTTPCDataCompressionFilterComponent();
61 : /// destructor
62 : ~AliHLTTPCDataCompressionFilterComponent();
63 :
64 : /// inherited from AliHLTComponent: id of the component
65 : virtual const char* GetComponentID();
66 :
67 : /// inherited from AliHLTComponent: list of data types in the vector reference
68 : void GetInputDataTypes( AliHLTComponentDataTypeList& );
69 :
70 : /// inherited from AliHLTComponent: output data type of the component.
71 : AliHLTComponentDataType GetOutputDataType();
72 :
73 : /// inherited from AliHLTComponent: multiple output data types of the component.
74 : int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
75 :
76 : /// inherited from AliHLTComponent: output data size estimator
77 : void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
78 :
79 : /// inherited from AliHLTComponent: spawn function.
80 : virtual AliHLTComponent* Spawn();
81 :
82 : protected:
83 : /// inherited from AliHLTProcessor: data processing
84 : int DoEvent( const AliHLTComponentEventData& evtData,
85 : AliHLTComponentTriggerData& trigData);
86 : using AliHLTProcessor::DoEvent;
87 :
88 : /// inherited from AliHLTComponent: component initialisation and argument scan.
89 : int DoInit( int argc, const char** argv );
90 :
91 : /// inherited from AliHLTComponent: component cleanup
92 : int DoDeinit();
93 :
94 : /// inherited from AliHLTComponent: argument scan
95 : int ScanConfigurationArgument(int argc, const char** argv);
96 :
97 : /// check the HLTOUT for availability of compressed data blocks
98 : int InitMapFromHLTOUT(std::map<AliHLTUInt32_t, bool>& hltoutmap);
99 :
100 : private:
101 : AliHLTTPCDataCompressionFilterComponent(const AliHLTTPCDataCompressionFilterComponent&);
102 : AliHLTTPCDataCompressionFilterComponent& operator=(const AliHLTTPCDataCompressionFilterComponent&);
103 :
104 6 : ClassDef(AliHLTTPCDataCompressionFilterComponent, 0)
105 : };
106 :
107 : #endif //ALIHLTTPCDATACOMPRESSIONFILTERCOMPONENT_H
|