]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/comp/AliHLTTPCDataCompressionMonitorComponent.h
correcting the drift time transformation; optional output of cluster id array in...
[u/mrichter/AliRoot.git] / HLT / TPCLib / comp / AliHLTTPCDataCompressionMonitorComponent.h
1 //-*- Mode: C++ -*-
2 // $Id$
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                               *
8
9 /// @file   AliHLTTPCDataCompressionMonitorComponent.h
10 /// @author Matthias Richter
11 /// @date   2011-09-12
12 /// @brief  TPC component for monitoring of data compression
13 ///
14
15 #include "AliHLTProcessor.h"
16 #include "TString.h"
17
18 class AliHLTTPCHWCFData;
19 class TH1;
20 class TH2;
21
22 /**
23  * @class AliHLTTPCDataCompressionMonitorComponent
24  *
25  * <h2>General properties:</h2>
26  *
27  * Component ID: \b TPCDataCompressorMonitor      <br>
28  * Library: \b libAliHLTTPC.so     <br>
29  * Input Data Types:  <br>
30  * Output Data Types: <br>
31  *
32  * <h2>Mandatory arguments:</h2>
33  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
34  *
35  * <h2>Optional arguments:</h2>
36  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
37
38  * <h2>Configuration:</h2>
39  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
40  *
41  * <h2>Default CDB entries:</h2>
42  *
43  * <h2>Performance:</h2>
44  *
45  * <h2>Memory consumption:</h2>
46  *
47  * <h2>Output size:</h2>
48  *
49  *
50  * @ingroup alihlt_tpc
51  */
52 class AliHLTTPCDataCompressionMonitorComponent : public AliHLTProcessor {
53 public:
54   /// standard constructor
55   AliHLTTPCDataCompressionMonitorComponent();
56   /// destructor
57   ~AliHLTTPCDataCompressionMonitorComponent();
58
59   /// inherited from AliHLTComponent: id of the component
60   virtual const char* GetComponentID();
61
62   /// inherited from AliHLTComponent: list of data types in the vector reference
63   void GetInputDataTypes( AliHLTComponentDataTypeList& );
64
65   /// inherited from AliHLTComponent: output data type of the component.
66   AliHLTComponentDataType GetOutputDataType();
67
68   /// inherited from AliHLTComponent: multiple output data types of the component.
69   int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
70
71   /// inherited from AliHLTComponent: output data size estimator
72   void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
73
74   /// inherited from AliHLTComponent: spawn function.
75   virtual AliHLTComponent* Spawn();
76
77   enum {
78     kHaveRawData = 0x1,
79     kHaveHWClusters = 0x2
80   };
81
82 protected:
83   /// inherited from AliHLTProcessor: data processing
84   int DoEvent( const AliHLTComponentEventData& evtData, 
85                const AliHLTComponentBlockData* blocks, 
86                AliHLTComponentTriggerData& trigData,
87                AliHLTUInt8_t* outputPtr, 
88                AliHLTUInt32_t& size,
89                AliHLTComponentBlockDataList& outputBlocks );
90   using AliHLTProcessor::DoEvent;
91
92   /// inherited from AliHLTComponent: component initialisation and argument scan.
93   int DoInit( int argc, const char** argv );
94
95   /// inherited from AliHLTComponent: component cleanup
96   int DoDeinit();
97
98   /// inherited from AliHLTComponent: argument scan
99   int ScanConfigurationArgument(int argc, const char** argv);
100
101 private:
102   AliHLTTPCDataCompressionMonitorComponent(const AliHLTTPCDataCompressionMonitorComponent&);
103   AliHLTTPCDataCompressionMonitorComponent& operator=(const AliHLTTPCDataCompressionMonitorComponent&);
104
105   AliHLTTPCHWCFData* fpHWClusterDecoder; //! data decoder for HW clusters
106
107   TH2* fHistoHWCFDataSize;         //! hwcf data size vs. event size
108   TH2* fHistoHWCFReductionFactor;  //! reduction factor vs. event size
109   TH2* fHistoNofClusters; //! number of clusters vs. event size
110   TString fHistogramFile; //! file to save histogram
111
112   /// verbosity
113   int fVerbosity;  //! verbosity for debug printout
114   unsigned fFlags; //! flags to indicate various conditions
115
116   ClassDef(AliHLTTPCDataCompressionMonitorComponent, 0)
117 };
118
119 #endif //ALIHLTTPCDATACOMPRESSIONMONITORCOMPONENT_H