3 #ifndef ALIHLTTPCDATACOMPRESSIONMONITORCOMPONENT_H
4 #define ALIHLTTPCDATACOMPRESSIONMONITORCOMPONENT_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 *
9 /// @file AliHLTTPCDataCompressionMonitorComponent.h
10 /// @author Matthias Richter
12 /// @brief TPC component for monitoring of data compression
15 #include "AliHLTProcessor.h"
18 class AliHLTTPCHWCFData;
19 class AliHLTDataInflater;
24 * @class AliHLTTPCDataCompressionMonitorComponent
26 * <h2>General properties:</h2>
28 * Component ID: \b TPCDataCompressorMonitor <br>
29 * Library: \b libAliHLTTPC.so <br>
30 * Input Data Types: <br>
31 * Output Data Types: <br>
33 * <h2>Mandatory arguments:</h2>
34 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
36 * <h2>Optional arguments:</h2>
37 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
39 * <h2>Configuration:</h2>
40 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
42 * <h2>Default CDB entries:</h2>
44 * <h2>Performance:</h2>
46 * <h2>Memory consumption:</h2>
48 * <h2>Output size:</h2>
53 class AliHLTTPCDataCompressionMonitorComponent : public AliHLTProcessor {
55 /// standard constructor
56 AliHLTTPCDataCompressionMonitorComponent();
58 ~AliHLTTPCDataCompressionMonitorComponent();
60 /// inherited from AliHLTComponent: id of the component
61 virtual const char* GetComponentID();
63 /// inherited from AliHLTComponent: list of data types in the vector reference
64 void GetInputDataTypes( AliHLTComponentDataTypeList& );
66 /// inherited from AliHLTComponent: output data type of the component.
67 AliHLTComponentDataType GetOutputDataType();
69 /// inherited from AliHLTComponent: multiple output data types of the component.
70 int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
72 /// inherited from AliHLTComponent: output data size estimator
73 void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
75 /// inherited from AliHLTComponent: spawn function.
76 virtual AliHLTComponent* Spawn();
84 /// inherited from AliHLTProcessor: data processing
85 int DoEvent( const AliHLTComponentEventData& evtData,
86 const AliHLTComponentBlockData* blocks,
87 AliHLTComponentTriggerData& trigData,
88 AliHLTUInt8_t* outputPtr,
90 AliHLTComponentBlockDataList& outputBlocks );
91 using AliHLTProcessor::DoEvent;
93 /// inherited from AliHLTComponent: component initialisation and argument scan.
94 int DoInit( int argc, const char** argv );
96 /// inherited from AliHLTComponent: component cleanup
99 /// inherited from AliHLTComponent: argument scan
100 int ScanConfigurationArgument(int argc, const char** argv);
103 AliHLTTPCDataCompressionMonitorComponent(const AliHLTTPCDataCompressionMonitorComponent&);
104 AliHLTTPCDataCompressionMonitorComponent& operator=(const AliHLTTPCDataCompressionMonitorComponent&);
106 int ReadRemainingClustersCompressed(const AliHLTUInt8_t* pData, int dataSize, AliHLTUInt32_t specification);
107 int ReadRemainingClustersCompressed(AliHLTDataInflater* pInflater, int nofClusters, AliHLTUInt32_t specification);
110 AliHLTTPCHWCFData* fpHWClusterDecoder; //! data decoder for HW clusters
112 TH2* fHistoHWCFDataSize; //! hwcf data size vs. event size
113 TH2* fHistoHWCFReductionFactor; //! reduction factor vs. event size
114 TH2* fHistoNofClusters; //! number of clusters vs. event size
115 TString fHistogramFile; //! file to save histogram
118 int fVerbosity; //! verbosity for debug printout
119 unsigned fFlags; //! flags to indicate various conditions
121 ClassDef(AliHLTTPCDataCompressionMonitorComponent, 0)
124 #endif //ALIHLTTPCDATACOMPRESSIONMONITORCOMPONENT_H